@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,140 @@
1
+ /*
2
+ * critical-partition.mjs — the CRITICAL_PARTITION boundary manifest
3
+ * (BB.W-CSS-CRITICAL — the render-blocking `/styles` split).
4
+ *
5
+ * The SINGLE source of the critical/deferred partition of the resolved
6
+ * `@mkbabb/glass-ui/styles` draw. The build (vite.style-assets.ts
7
+ * publishStyleAssets) reads it to emit `dist/styles/critical.css` +
8
+ * `dist/styles/deferred.css`; the gate (scripts/proof-css-critical.mjs) reads
9
+ * it to assert the partition is byte-complete + manifest-driven. There is NO
10
+ * second hand-extracted critical block (W4 — the manifest is the sole source).
11
+ *
12
+ * The partition is drawn at the EXISTING thin-root-over-partials cascade
13
+ * boundary (AY.W-CSS1) — whole `src/styles/index.css` @import partials are
14
+ * bucketed, never a partial-content re-author (the partial CONTENTS are
15
+ * untouched; a cross-partial rule move is a triumvirate trigger, see the wave
16
+ * spec §Triumvirate). The two emitted files each @import their bucket's
17
+ * partials in the SAME cascade order the monolith index.css declares (load
18
+ * order is load-bearing), and CRITICAL loads BEFORE DEFERRED in the consumer
19
+ * so the deferred component recipes still cascade-correctly over the critical
20
+ * glass ladder.
21
+ *
22
+ * CRITICAL (./styles/critical) — the above-the-fold paint surface a consumer's
23
+ * FIRST PAINT requires: the whole token cascade (every visual axis is a custom
24
+ * property the chrome reads), the √φ typography scale + semantic type classes,
25
+ * the @theme aliases + the `.dark` variant selector, and the 5-rung glass
26
+ * ladder + specular/refract. Small (the token + ladder + type surface, not the
27
+ * component recipes) — under the recorded gzip ceiling (W3).
28
+ *
29
+ * DEFERRED (./styles/deferred) — the below-the-fold + late-mount tail: every
30
+ * component recipe + the transitions/animations/scroll-driven/view-transition
31
+ * grammar + utilities + the menu/configurator/instrument-chassis/hover-popover/
32
+ * drawer/segmented-tabs/select/icon-chip component partials, PLUS the folded SFC
33
+ * `<style scoped>` payload (`../glass-ui.css`) and the emitted Tailwind
34
+ * component-utility surface (`components.css`). These decorate components that
35
+ * mount after first paint or sit below the fold; their late arrival shifts no
36
+ * above-the-fold pixel (the FOUC-safe floor, W5).
37
+ *
38
+ * The `paper.css` partial is bucketed DEFERRED — the paper underpaint/grain
39
+ * utilities pair with glass for paper-on-glass compositions that mount with the
40
+ * content surfaces (below-the-fold), not the chrome's first paint.
41
+ */
42
+
43
+ /**
44
+ * The two non-fold buckets — each entry is a `src/styles/*.css` partial that the
45
+ * monolith `src/styles/index.css` @imports at the top level (lines 149-182).
46
+ * The order within each list mirrors the monolith's declared cascade order.
47
+ */
48
+ export const CRITICAL_PARTIALS = Object.freeze([
49
+ "tokens.css",
50
+ "typography.css",
51
+ "theme.css",
52
+ "glass.css",
53
+ "glass-specular-track.css",
54
+ "glass-refract.css",
55
+ ]);
56
+
57
+ export const DEFERRED_PARTIALS = Object.freeze([
58
+ "paper.css",
59
+ "dock.css",
60
+ "dock-controls.css",
61
+ "cards.css",
62
+ "feedback-tone.css",
63
+ "floating-panel.css",
64
+ "transitions.css",
65
+ "animations.css",
66
+ "scroll-driven.css",
67
+ "scroll-choreography.css",
68
+ "view-transition.css",
69
+ "utilities.css",
70
+ "menu.css",
71
+ "configurator.css",
72
+ "instrument-chassis.css",
73
+ "hover-popover.css",
74
+ "drawer.css",
75
+ "segmented-tabs.css",
76
+ "select.css",
77
+ "icon-chip.css",
78
+ "border-progress.css",
79
+ ]);
80
+
81
+ /**
82
+ * The build-time folds that land in DEFERRED (NOT a `src/styles/*.css` partial;
83
+ * the publishStyleAssets folds appended to the dist copy of index.css). The SFC
84
+ * scoped payload (`../glass-ui.css`) + the Tailwind component-utility surface
85
+ * (`./components.css`) are below-the-fold component decoration — they MUST NOT
86
+ * leak into critical (the W2 byte-complete-in-one-bucket + W3 ceiling bite).
87
+ * Relative to `dist/styles/` (where critical.css/deferred.css are emitted).
88
+ */
89
+ export const DEFERRED_FOLDS = Object.freeze([
90
+ "../glass-ui.css",
91
+ "./components.css",
92
+ ]);
93
+
94
+ /**
95
+ * The `@source` build-scan backstop directive (the consumer-JIT content-scan
96
+ * reach for glass-ui's own component utilities — a backstop for the
97
+ * components.css self-emit). It backstops the DEFERRED component utilities, so
98
+ * it rides DEFERRED. The value is the exact directive the monolith index.css
99
+ * carries (re-grounded at HEAD: `@source "../*.js";`).
100
+ */
101
+ export const DEFERRED_SOURCE_DIRECTIVE = '@source "../*.js";';
102
+
103
+ /**
104
+ * The recorded critical-subset gzip ceiling (bytes), measured on the FULLY
105
+ * RESOLVED consumer draw (the critical partials' @import roots resolved
106
+ * RECURSIVELY through their nested tokens/* + glass/* sub-partials — the real
107
+ * first-paint byte a consumer's bundler emits, NOT the one-level approximation
108
+ * profile-bundle uses for the monolith budget). The committed, reviewed
109
+ * baseline (the profile-bundle read-baseline discipline): a regression that
110
+ * folds a component recipe back into critical climbs the emitted critical.css
111
+ * resolved gzip over this → RED (W3). Re-base via the gate's `--rebaseline`
112
+ * flag with a recorded rationale, never silently.
113
+ *
114
+ * Measured at this authoring (HEAD bdbcd479, post-build): the critical subset
115
+ * resolved to raw 347266 / gzip 105460 — the token cascade (tokens.css gzip
116
+ * ~62KiB) + the 5-rung glass ladder (glass.css gzip ~27KiB) + typography +
117
+ * theme + specular/refract. It is roughly half the monolith's fully-resolved
118
+ * gzip (~230KiB), so the deferred tail (component recipes + SFC scoped payload
119
+ * + components.css utility surface, ~125KiB gzip) loads NON-blocking after
120
+ * first paint — the render-block win. The ceiling carries ~4% headroom over
121
+ * the measured baseline (the profile-bundle re-base convention). If the
122
+ * re-measured render-block under W-LIGHTHOUSE shows this critical subset is
123
+ * STILL over the mobile-ms floor, the inline-critical-head-block path routes to
124
+ * the named BB.W-CSS-CRITICAL-INLINE successor (a triumvirate trigger, NOT a
125
+ * token-value edit here).
126
+ *
127
+ * RE-BASE (BB liquid-glass band): the critical subset grew to raw 427015 / gzip
128
+ * 131469 — NOT a component-recipe leak (the critical bucket is still the 6
129
+ * documented token+glass+type partials; w2 partials-disjoint + w4 hold), but the
130
+ * legitimate GROWTH of the critical token cascade + glass ladder by the BB
131
+ * liquid-glass band: the deep-glass token family (tokens/glass-deep.css), the
132
+ * --glass-accent rim axis, the W-LENSING refract evolution, the W-DARK-MATERIAL
133
+ * dark-arm + the on-glass-fg / surface-axis registers — all of which live in the
134
+ * critical tokens/* + glass/* sub-partials by construction. Ceiling lifted
135
+ * 110000 → 137000 (~4.2% headroom over the measured 131469, the profile-bundle
136
+ * re-base convention) to carry the BB glass-band critical surface. The
137
+ * render-block FLOOR stays W-LIGHTHOUSE's W3-arm-1 mobile-ms gate (the binding
138
+ * perf truth); this ceiling guards against a recipe revert-toward-monolith.
139
+ */
140
+ export const CRITICAL_GZIP_CEILING = 137000;
@@ -0,0 +1,12 @@
1
+ /* BB.W-CSS-CRITICAL — the CRITICAL /styles subset (off
2
+ src/styles/critical-partition.mjs CRITICAL_PARTITION; do not
3
+ hand-edit — the manifest is the SOLE partition source). Each
4
+ @import is a whole cascade partial in the monolith's declared
5
+ load order; critical ∪ deferred is byte-complete. */
6
+
7
+ @import "./tokens.css";
8
+ @import "./typography.css";
9
+ @import "./theme.css";
10
+ @import "./glass.css";
11
+ @import "./glass-specular-track.css";
12
+ @import "./glass-refract.css";
@@ -0,0 +1,31 @@
1
+ /* BB.W-CSS-CRITICAL — the DEFERRED /styles subset (off
2
+ src/styles/critical-partition.mjs CRITICAL_PARTITION; do not
3
+ hand-edit — the manifest is the SOLE partition source). Each
4
+ @import is a whole cascade partial in the monolith's declared
5
+ load order; critical ∪ deferred is byte-complete. */
6
+
7
+ @import "./paper.css";
8
+ @import "./dock.css";
9
+ @import "./dock-controls.css";
10
+ @import "./cards.css";
11
+ @import "./feedback-tone.css";
12
+ @import "./floating-panel.css";
13
+ @import "./transitions.css";
14
+ @import "./animations.css";
15
+ @import "./scroll-driven.css";
16
+ @import "./scroll-choreography.css";
17
+ @import "./view-transition.css";
18
+ @import "./utilities.css";
19
+ @import "./menu.css";
20
+ @import "./configurator.css";
21
+ @import "./instrument-chassis.css";
22
+ @import "./hover-popover.css";
23
+ @import "./drawer.css";
24
+ @import "./segmented-tabs.css";
25
+ @import "./select.css";
26
+ @import "./icon-chip.css";
27
+ @import "./border-progress.css";
28
+ @import "../glass-ui.css";
29
+ @import "./components.css";
30
+
31
+ @source "../*.js";
@@ -11,6 +11,30 @@
11
11
  * @import-ed by dock.css in cascade order, in the SAME `@layer components` — the
12
12
  * carve is isomorphic (same layer, same source order → ZERO visual delta). */
13
13
 
14
+ /* ── BB.W-HIERARCHY2 — the CONTENT-side anti-collision gutter ───────────────────
15
+ `--dock-content-safe-inset` is the structural CONTENT-side counterpart to the
16
+ dock-collision SEAT fix (W-CHIP-GRAZE + W-DOCK-RAIL-SEAT-FINAL own the chip-fan
17
+ SEAT — the chips fan off-canvas into the rail's dead gutter, chipOverMain:false on
18
+ EVERY route by topology). This token reserves a guaranteed safe-inset gutter on the
19
+ CONTENT column so the page-title band is structurally clear of any chip reach even
20
+ on a route added WITHOUT a per-route audit (the anti-gameability the gestalt gate
21
+ wants). It is keyed to the dock reach (`--dock-rail-extend-length`, the rail's
22
+ beyond-edge overrun) so the content gutter tracks the dock geometry in lockstep,
23
+ and it rides `--dock-scale` transitively through that reach token.
24
+
25
+ THE DE-OVERLOAD IS BINDING (distinct geometry concerns, distinct tokens):
26
+ `--dock-control-safe-inset` (per-density, below) is the dock CONTROL plate-clearance
27
+ inset (the painted plate floors a notch below its track cell — BA.W-DOCK-GEOMETRY,
28
+ owned by proof:dock-plate-clearance); `--dock-content-safe-inset` is the CONTENT-band
29
+ gutter (the content column reserves dead inline space the chips can never share).
30
+ The two close the collision from BOTH sides — the chip seat (the SEAT waves) AND the
31
+ content gutter (this token) — coordinated on the SAME dead inline gutter: the content
32
+ gutter is the RESERVE, the gutter-fan lands the chips in it (ONE gutter, two
33
+ consumers). NEVER re-point this AT --dock-control-safe-inset (the de-overload). */
34
+ :root {
35
+ --dock-content-safe-inset: var(--dock-rail-extend-length, 2.5rem);
36
+ }
37
+
14
38
  @layer components {
15
39
  /* AX.W45 — the density cascade is threaded by the ONE `--dock-scale`
16
40
  multiplier (default 1, lifted to `--dock-mobile-scale` on coarse pointers).
@@ -39,6 +63,19 @@
39
63
  calc(var(--dock-density-compact-layer-height, 2rem) * var(--dock-scale)),
40
64
  var(--dock-control-floor, 0px)
41
65
  );
66
+ /* BA.W-DOCK-GEOMETRY — the control-plate clearance inset (DC-2). The
67
+ painted control plate floors a notch BELOW its track cell so the maximal
68
+ hover (×--scale-hover-dock 1.1) / active silhouette stays inside the
69
+ cross-axis clip box with ≥1px margin (the lozenge dies at the plate
70
+ diameter, not at the clip edge). The inset is a per-SIDE fraction of the
71
+ control size (0.1 → an 80%-of-cell painted plate, the iOS-26 inset
72
+ register), so it scales with EVERY density rung in lockstep AND rides the
73
+ `--dock-scale` coarse multiplier transitively through --dock-control-size.
74
+ The control families route it through `padding` + `background-clip:
75
+ content-box`, so the HIT BOX stays the full --dock-control-size (the WCAG
76
+ 2.5.5 44px floor stays on the CELL, never the inset plate) while the
77
+ PAINTED plate insets within it. */
78
+ --dock-control-safe-inset: calc(var(--dock-control-size) * 0.1);
42
79
  --dock-layer-gap: calc(
43
80
  var(--dock-density-compact-gap, 0.25rem) * var(--dock-scale)
44
81
  );
@@ -87,6 +124,8 @@
87
124
  ),
88
125
  var(--dock-control-floor, 0px)
89
126
  );
127
+ /* BA.W-DOCK-GEOMETRY — see the compact rung. */
128
+ --dock-control-safe-inset: calc(var(--dock-control-size) * 0.1);
90
129
  --dock-layer-gap: calc(
91
130
  var(--dock-density-comfortable-gap, 0.375rem) * var(--dock-scale)
92
131
  );
@@ -131,6 +170,8 @@
131
170
  ),
132
171
  var(--dock-control-floor, 0px)
133
172
  );
173
+ /* BA.W-DOCK-GEOMETRY — see the compact rung. */
174
+ --dock-control-safe-inset: calc(var(--dock-control-size) * 0.1);
134
175
  --dock-layer-gap: calc(
135
176
  var(--dock-density-spacious-gap, 0.5rem) * var(--dock-scale)
136
177
  );
@@ -174,6 +215,8 @@
174
215
  calc(var(--dock-density-audacious-layer-height, 4rem) * var(--dock-scale)),
175
216
  var(--dock-control-floor, 0px)
176
217
  );
218
+ /* BA.W-DOCK-GEOMETRY — see the compact rung. */
219
+ --dock-control-safe-inset: calc(var(--dock-control-size) * 0.1);
177
220
  --dock-layer-gap: calc(
178
221
  var(--dock-density-audacious-gap, 0.875rem) * var(--dock-scale)
179
222
  );
@@ -203,6 +246,27 @@
203
246
  );
204
247
  }
205
248
 
249
+ /* BB.W-PERF-PRODUCER A′-6 — RE-RESOLVE the glyph token inside the density-painted
250
+ scope. `--dock-icon-glyph` (offsets-sizing.css) is a RATIO of
251
+ `--dock-layer-height`, but density.css paints `--dock-layer-height` ONLY on
252
+ `.glass-dock[data-density]` — the `:root` `--dock-icon-glyph` definition reads
253
+ `--dock-layer-height` at `:root` (the inline fallback ladder), so it would
254
+ FREEZE at the fallback rather than track the per-rung painted height (the SAME
255
+ substitution-vs-inheritance trap the R5-1 sweep fixed for
256
+ `--dock-collapsed-summary-min-size` in overflow.css). Re-resolving it HERE, on
257
+ the element that paints `--dock-layer-height`, lets the per-density height flow
258
+ into the glyph so a `spacious` dock's glyph grows in lockstep with the shelf
259
+ (the value.js D5-1 defect). The formula is IDENTICAL to the `:root` definition;
260
+ only the resolution element moves. The WCAG floor + the `--dock-icon-glyph-ratio`
261
+ knob ride through unchanged; the `.dark-mode-toggle-button > svg` mirror reads
262
+ the same re-resolved token so both glyphs track the density axis. */
263
+ .glass-dock[data-density] {
264
+ --dock-icon-glyph: max(
265
+ calc(var(--dock-layer-height, calc(2.5rem * var(--dock-scale))) * var(--dock-icon-glyph-ratio)),
266
+ var(--dock-icon-glyph-floor)
267
+ );
268
+ }
269
+
206
270
  /* Density-audacious narrow-box carve (AV.W16 TW3) — when the dock's OWN
207
271
  box is narrow the audacious-dock label glyphs compress so the chrome
208
272
  doesn't overflow its host (≤14px below 30rem, 15px 30–45rem). Keyed off
@@ -3,7 +3,9 @@
3
3
  *
4
4
  * Carved from the dock.css god-module (slice 25). This partial owns the dock's
5
5
  * layer model: the `.dock-layers` grid container + the FLIP-driven box-size morph
6
- * (the `--dock-morph-size` calc off the ONE `--dock-morph-t` scalar), the unified
6
+ * (BB.W-DOCK-MORPH-FAMILY — a `transform: scale()` over a reserved settled `to`
7
+ * footprint, the live `--dock-morph-scale` derived off the ONE `--dock-morph-t`
8
+ * scalar; NO per-frame layout-axis lerp), the unified
7
9
  * `.is-active` / `.is-leaving` 3-state crossfade + hit-test contract (the
8
10
  * a11y-006 anchor), the per-child reveal stagger (the `--dock-stagger-*` ramp),
9
11
  * and the `layout="grid"` 2D tile-grid arrangement. The `.dock-layer-group` /
@@ -37,46 +39,66 @@
37
39
  }
38
40
 
39
41
 
40
- /* AX.W01 — the box size morph reads the SAME `--dock-morph-t` scalar as the
41
- root chrome (ONE clock, co-temporal by construction). `useLayerTransition`
42
- measures the from→to size ONCE per swap (the allowed one-time FLIP
43
- measurement) and writes `--dock-morph-from`/`--dock-morph-to` px on the
44
- morphing element; the live scalar interpolates between them. The size lands
45
- on the morph AXIS — `inline-size` for a horizontal `.dock-layers` (always
46
- inline) + a horizontal inner stack, `block-size` for a vertical inner stack.
47
- Gated on the root `[data-morphing]`, so at REST the intrinsic / `width:100%`
48
- rules below hold (the morph vars are cleared on settle). Replaces the prior
49
- `transition: width var(--dock-motion-resize)` inline-FLIP — there is NO CSS
50
- transition on the size axis; the spring writes the scalar, CSS reads it. The
51
- active pane is REVEALED through the clip aperture as the box grows (the W2
52
- clip-reveal contract). */
42
+ /* BB.W-DOCK-MORPH-FAMILY (a)/(b) — the box morph is now a COMPOSITOR TRANSFORM
43
+ over a RESERVED SETTLED footprint, NOT a per-frame `inline-size` lerp (the C3
44
+ "too slow and laggy" relayout-every-frame defect). `useLayerTransition` /
45
+ the orchestrator still measure the from→to size ONCE per swap (the allowed
46
+ one-time FLIP measurement) and write `--dock-morph-from`/`--dock-morph-to` px
47
+ on the morphing element — but the layout axis is set to the SETTLED `to`
48
+ value (ONE layout solve, the box reserves its end footprint from frame 0), and
49
+ the live `--dock-morph-t` scalar drives a `transform: scale()` between the
50
+ from/to RATIO and 1. The content lays out COMPLETE at `to` behind the
51
+ `overflow: clip` aperture (shell.css), and the scaled-down box reads as the
52
+ smaller in-flight footprint (the clip uncovers the scaled box, never a
53
+ half-painted growing layout — the reveal-seat (b) fix). `--dock-morph-ratio`
54
+ is `from/to` (guarded: `to:0` → ratio 0); `--dock-morph-scale` runs
55
+ `ratio → 1` as `t: 0 → 1`. `transform-origin` anchors the pinned edge
56
+ (inline-start for the horizontal aperture) so the box grows from the correct
57
+ side. NO `inline-size`/`block-size` reads the live scalar — the CDP Layout
58
+ track stays FLAT through the morph (the F1 compositor-bound floor). */
53
59
  .glass-dock[data-morphing] .dock-layers,
54
60
  .glass-dock[data-morphing] .dock-layer-stack {
55
- --dock-morph-size: calc(
56
- var(--dock-morph-from, 0px) +
57
- (var(--dock-morph-to, 0px) - var(--dock-morph-from, 0px)) *
58
- var(--dock-morph-t, 0)
61
+ --dock-morph-ratio: calc(
62
+ var(--dock-morph-from, 0px) / max(var(--dock-morph-to, 1px), 1px)
59
63
  );
60
- inline-size: var(--dock-morph-size);
64
+ --dock-morph-scale: calc(
65
+ var(--dock-morph-ratio) +
66
+ (1 - var(--dock-morph-ratio)) * var(--dock-morph-t, 0)
67
+ );
68
+ /* The box RESERVES its settled `to` footprint — a single layout solve, NOT
69
+ the live scalar calc. The transform composites over it. */
70
+ inline-size: var(--dock-morph-to);
71
+ transform: scaleX(var(--dock-morph-scale));
72
+ transform-origin: left center;
73
+ will-change: transform;
61
74
  }
62
75
 
63
76
  /* AZ.W-DOCK-TAXONOMY (move 2) — a VERTICAL dock's outer `.dock-layers` morphs the
64
77
  BLOCK axis (its collapse↔expand shrinks `height`, not `width`). The orchestrator
65
78
  measures/writes the same `--dock-morph-from/to` span on the block axis
66
79
  (`outerLayerAxis` is now the resolved orientation; `morphAxisProp` maps
67
- vertical→`block-size`), so the CSS lands the scalar on `block-size` and lets the
68
- inline axis stay intrinsic. This is the wiring that gives a collapsible vertical
69
- dock the height-morph the mandate names. */
80
+ vertical→`block-size`).
81
+ BB.W-DOCK-MORPH-FAMILY (a)/(b) — the vertical box reserves its settled `to`
82
+ BLOCK footprint + composites a `scaleY()` over it on the SAME `--dock-morph-t`
83
+ scalar (the inverse axis of the horizontal `scaleX`), `transform-origin` at the
84
+ block-start pinned edge. NO live-scalar `block-size` calc → no per-frame
85
+ relayout on the vertical axis either. */
70
86
  .glass-dock.vertical[data-morphing] .dock-layers {
71
87
  inline-size: auto;
72
- block-size: var(--dock-morph-size);
88
+ block-size: var(--dock-morph-to);
89
+ transform: scaleY(var(--dock-morph-scale));
90
+ transform-origin: center top;
91
+ will-change: transform;
73
92
  }
74
93
 
75
- /* A vertical inner group morphs the BLOCK axis — the same span lands on
76
- block-size, and the inline axis stays intrinsic. */
94
+ /* A vertical inner group morphs the BLOCK axis — the same settled-footprint
95
+ reserve + `scaleY()` composite over it. */
77
96
  .glass-dock[data-morphing] .dock-layer-group.vertical .dock-layer-stack {
78
97
  inline-size: auto;
79
- block-size: var(--dock-morph-size);
98
+ block-size: var(--dock-morph-to);
99
+ transform: scaleY(var(--dock-morph-scale));
100
+ transform-origin: center top;
101
+ will-change: transform;
80
102
  }
81
103
 
82
104
  /* The inner DockLayerGroup stack has no collapsed/expanded class, so its
@@ -311,10 +333,12 @@
311
333
  from these state rules; they keep only their non-overflow concerns.
312
334
 
313
335
  AX.W01 — `:not([data-morphing])` gate: at REST expanded the layers fill the
314
- box (`width:100%`), but DURING the morph the FLIP from→to px (the
315
- `--dock-morph-size` calc above) is the SOLE size authority — a `width:100%`
316
- here would win on specificity and snap the box past the spring. The gate
317
- hands the size to the scalar for the morph and back to 100% on settle. */
336
+ box (`width:100%`), but DURING the morph the reserved `to`-footprint +
337
+ `transform: scale()` (BB.W-DOCK-MORPH-FAMILY, above) is the SOLE size
338
+ authority — a `width:100%` here would win on specificity and fight the
339
+ reserved footprint. The gate hands the box to the transform for the morph and
340
+ back to 100% on settle (the transform/reserve vanish when `[data-morphing]`
341
+ clears). */
318
342
  .glass-dock.expanded:not(.fit-content):not([data-morphing]) .dock-layers {
319
343
  width: 100%;
320
344
  }
@@ -34,24 +34,55 @@
34
34
  during the morph, so the read resolves the correct in-flight blend (collapse
35
35
  1→0 via `1 - t`; expand 0→1 via `t`); on settle `[data-morphing]` clears and
36
36
  expand-t snaps to the exact class endpoint. */
37
- .glass-dock:not(.vertical).expanded,
38
- .glass-dock:not(.vertical).always-expanded {
37
+ /* BB.W-DOCK-MORPH-FAMILY (f) — the `--dock-expand-t` directional derivation is
38
+ ORIENTATION-AGNOSTIC. The derivation reads the per-swap morph scalar + the
39
+ synchronously-set `.expanded`/`.collapsed` class — there is NO axis in this
40
+ blend (a `t`-vs-`1-t` directional read), so the `:not(.vertical)` qualifier is
41
+ DROPPED here. A collapsing VERTICAL dock now derives the same in-flight
42
+ expand-t (the box-size arm `layers.css` already morphs `block-size` on
43
+ `--dock-morph-t`; this gives the chrome the matching directional scalar). The
44
+ earlier "a vertical rail is ALWAYS-EXPANDED" assumption is retired since
45
+ vertical-collapse shipped — `alwaysExpanded` defaults false (GlassDock.vue),
46
+ so a genuinely-collapsing vertical dock gets its chrome on the ONE clock. */
47
+ .glass-dock.expanded,
48
+ .glass-dock.always-expanded {
39
49
  --dock-expand-t: 1;
40
50
  }
41
51
 
42
- .glass-dock:not(.vertical).collapsed {
52
+ .glass-dock.collapsed {
43
53
  --dock-expand-t: 0;
44
54
  }
45
55
 
46
- .glass-dock:not(.vertical).expanded[data-morphing],
47
- .glass-dock:not(.vertical).always-expanded[data-morphing] {
56
+ .glass-dock.expanded[data-morphing],
57
+ .glass-dock.always-expanded[data-morphing] {
48
58
  --dock-expand-t: var(--dock-morph-t);
49
59
  }
50
60
 
51
- .glass-dock:not(.vertical).collapsed[data-morphing] {
61
+ .glass-dock.collapsed[data-morphing] {
52
62
  --dock-expand-t: calc(1 - var(--dock-morph-t));
53
63
  }
54
64
 
65
+ /* BB.W-LIQUID-REVEAL — the dock-expand LIQUID-OPEN bloom beat (DOCK-EXPAND-CONSUMER).
66
+ The dock pill BLOOMS open from its collapsed circle: a coupled `filter` blur-
67
+ settle decongest reading the SAME `--dock-expand-t` directional scalar the chrome
68
+ interp rides (the W-DOCK-MORPH-FAMILY morph mechanism is UNTOUCHED — this is a
69
+ SURFACE arm, NOT a morph-axis layout edit). Collapsed (`--dock-expand-t` 0) the
70
+ dock content reads a faint `blur(--dock-reveal-blur)` decongest; as it expands
71
+ (`--dock-expand-t` → 1) the blur SETTLES to 0 so the chrome clarifies AS the pill
72
+ blooms — the iOS "light-bending modulation" arrival on the dock's own pixels
73
+ (`filter`, NOT `backdrop-filter`, so the resting glass-tier plate blur the dock
74
+ carries is never clobbered). Compositor-safe (a `filter` radius interp, never a
75
+ layout property — the proof:no-layout-animation floor). The beat rides the ONE
76
+ `--dock-expand-t` scalar, so it tracks the `DOCK_SPRING` clock with NO second
77
+ clock + NO re-added CSS transition (the morph already animates `--dock-morph-t`).
78
+ PRM: the `--dock-reveal-blur` knob is zeroed under reduce (the carve below). */
79
+ .glass-dock {
80
+ --dock-reveal-blur: 3px;
81
+ filter: blur(
82
+ calc(var(--dock-reveal-blur) * (1 - var(--dock-expand-t, 1)))
83
+ );
84
+ }
85
+
55
86
  /* The morphing root chrome — background / border-color interpolate between the
56
87
  collapsed and expanded endpoints on the ONE `--dock-expand-t` scalar. Scoped
57
88
  to the horizontal dock (`:not(.vertical)`) — the inline-axis aperture morph;
@@ -98,6 +129,43 @@
98
129
  );
99
130
  }
100
131
 
132
+ /* BB.W-DOCK-MORPH-FAMILY (f) — the VERTICAL chrome-interp un-gate (BB-1). The
133
+ bg/border interp is AXIS-INVARIANT (a color mix reads the scalar with no
134
+ axis), so the vertical dock interpolates its plate between the SAME
135
+ collapsed↔expanded endpoints on the SAME `--dock-expand-t` scalar the
136
+ horizontal block reads — the ONE `DOCK_SPRING` clock, no second clock, no
137
+ re-added CSS transition. This PARALLEL `.vertical` block (specificity 0,2,0,
138
+ source-order AFTER the shell.css static `.glass-dock.vertical` plate so it
139
+ wins at equal specificity) is the inverse-axis twin of the horizontal block
140
+ above — the box-size morph already rides `block-size` on `layers.css`'s
141
+ `--dock-morph-t`; this gives the plate chrome the matching directional blend
142
+ so the vertical collapse↔expand no longer SNAPS its bg/border discretely. At
143
+ the rest endpoints `--dock-expand-t` resolves to the class value (0 collapsed
144
+ / 1 expanded), so the resting look is exact — byte-equivalent to the shell.css
145
+ static plate it supersedes during the morph. */
146
+ .glass-dock.vertical {
147
+ background: color-mix(
148
+ in srgb,
149
+ color-mix(
150
+ in oklab,
151
+ var(--glass-bg-dock, var(--glass-bg-wash)),
152
+ var(--glass-tint-source) var(--glass-tint-strength)
153
+ )
154
+ calc(var(--dock-expand-t, 1) * 100%),
155
+ color-mix(
156
+ in oklab,
157
+ var(--glass-bg-wash),
158
+ var(--glass-tint-source) var(--glass-tint-strength)
159
+ )
160
+ );
161
+ border-color: color-mix(
162
+ in srgb,
163
+ var(--glass-border-dock, var(--glass-border-wash))
164
+ calc(var(--dock-expand-t, 1) * 100%),
165
+ var(--glass-border-floating)
166
+ );
167
+ }
168
+
101
169
  /* The padding morph is split out + scoped `:not(.dock-overflow-wrap)` so the
102
170
  wrap variant's own padding rules (W04 territory — `.dock-overflow-wrap` +
103
171
  its `@media` snap-back) are NOT clobbered by this higher-specificity longhand.
@@ -142,6 +210,35 @@
142
210
  );
143
211
  }
144
212
 
213
+ /* BB.W-DOCK-MORPH-FAMILY (f) — the VERTICAL padding interp is the AXIS-INVERSE
214
+ of the horizontal layout-isolation contract above. The vertical collapse↔
215
+ expand is a BLOCK-HEIGHT aperture (the box-size arm morphs `block-size`,
216
+ layers.css), so the CROSS (inline) axis MUST be invariant across the morph —
217
+ else the dock's outer WIDTH changes on collapse and reflows its horizontal
218
+ siblings (the §1 contract, mirrored onto the vertical axis). So `padding-
219
+ inline` is PINNED at the expanded inline value in BOTH states, and ONLY
220
+ `padding-block` morphs to tighten the collapsed pill on the morph axis. The
221
+ collapsed block-pad endpoint is the EXPANDED inline pad (max'd with the
222
+ consumer `--dock-collapsed-padding` handle) so the height-pinned-cross collapsed
223
+ pill is SYMMETRIC. Specificity 0,2,0 source-order after shell.css's static
224
+ `.glass-dock.vertical` padding so this wins at equal specificity; at the rest
225
+ endpoints `--dock-expand-t` is the class value so the look is exact. Scoped to
226
+ the NON-scroll/non-wrap vertical dock. */
227
+ .glass-dock.vertical:not(.dock-overflow-wrap) {
228
+ --dock-pad-collapsed: max(
229
+ var(--dock-padding-inline, 0.5rem),
230
+ var(--dock-collapsed-padding, 0px)
231
+ );
232
+ /* inline padding is INVARIANT — the cross axis, pinned both states so the
233
+ outer inline-size never changes → 0px horizontal sibling reflow. */
234
+ padding-inline: var(--dock-padding-inline, 0.5rem);
235
+ padding-block: calc(
236
+ var(--dock-pad-collapsed) +
237
+ (var(--dock-padding-block, 0.375rem) - var(--dock-pad-collapsed)) *
238
+ var(--dock-expand-t, 1)
239
+ );
240
+ }
241
+
145
242
  /* AX.W01 — the collapsed padding / background / border-color are RETIRED here
146
243
  (the `--dock-expand-t` morph block above is the single authority for those
147
244
  three axes — they interpolate, never snap). `.collapsed` keeps only its
@@ -330,7 +427,15 @@
330
427
  ink, which clears ~10:1). */
331
428
  :where(.glass-dock) {
332
429
  --glass-tint-source: var(--glass-tint-ink);
333
- --glass-tint-strength: var(--glass-tint-strength-aa);
430
+ /* BC.W-AUDIT — the scope-7 completion: the dock JOINS the content-tier
431
+ sub-perceptual FLOOR by default (translucent warm liquid glass, NOT a grey
432
+ slab), and the FULL AA darken engages ONLY under the genuine bright signal —
433
+ the `@container --glass-backdrop: light` bucket below, written by the dock's
434
+ own sampled-luminance observer over a bright backdrop (aurora/DockStage) OR a
435
+ consumer's explicit bucket. The prior unconditional AA (20% ink-ward) darkened
436
+ the dock to grey over EVERY calm light page — the iOS-27 dynamic model done
437
+ wrong (darken-always vs darken-when-bright). The full glass rebuild is BC. */
438
+ --glass-tint-strength: var(--glass-tint-strength-floor);
334
439
  --dock-fg-on-aurora: var(--glass-tint-ink);
335
440
  --muted-foreground: var(--foreground);
336
441
  }
@@ -372,3 +477,15 @@
372
477
  }
373
478
  }
374
479
  }
480
+
481
+ /* BB.W-LIQUID-REVEAL — the dock-expand bloom beat's blur-settle is OFF under
482
+ `prefers-reduced-motion: reduce` (the vestibular floor). The morph itself snaps
483
+ instantly under PRM (the `DOCK_SPRING` `respectReducedMotion` in
484
+ dockMorphContext.ts), and zeroing `--dock-reveal-blur` here removes the resting
485
+ collapsed-pill decongest blur too — a reduced-motion dock reads crisp at every
486
+ state, no in-between blur frames. */
487
+ @media (prefers-reduced-motion: reduce) {
488
+ .glass-dock {
489
+ --dock-reveal-blur: 0px;
490
+ }
491
+ }
@@ -33,6 +33,15 @@
33
33
  .glass-dock.dock-scroll-x .dock-layer--full {
34
34
  min-width: 0;
35
35
  overflow-x: auto;
36
+ /* BA.W-DOCK-GEOMETRY (DC-1) — PIN the CROSS (block) axis explicitly
37
+ `visible`. A single-axis `overflow-x: auto` makes the OTHER axis compute
38
+ from `visible` to `auto` (the MDN single-axis-clip-degrades caveat), so
39
+ the 40px-tall block axis would clip the 1.1× hover / full active control
40
+ circle top+bottom — the lozenge. Pinning `overflow-y: visible` keeps the
41
+ block axis genuinely un-clipped so a control's inset plate paints past the
42
+ track; the inline scroll port (the real over-cap content axis) is
43
+ untouched. */
44
+ overflow-y: visible;
36
45
  scrollbar-width: none;
37
46
  /* Trap the inline-scroll momentum at the dock's own boundary so a
38
47
  wheel/trackpad gesture that bottoms out the pill does NOT chain into
@@ -52,6 +61,12 @@
52
61
  source order. */
53
62
  .glass-dock.vertical.dock-scroll-y {
54
63
  overflow-y: auto;
64
+ /* BA.W-DOCK-GEOMETRY (DC-1) — PIN the CROSS (inline) axis explicitly
65
+ `visible` (the vertical-dock twin of the horizontal pin above). A
66
+ single-axis `overflow-y: auto` would compute the inline axis from
67
+ `visible` to `auto`, clipping a vertical control's inset plate left+right.
68
+ The block scroll port (the real over-cap axis) is untouched. */
69
+ overflow-x: visible;
55
70
  scrollbar-width: none;
56
71
  /* Same momentum-trap as the inline port — a rail that bottoms out must
57
72
  not chain its remaining wheel delta into the page scroller behind it. */
@@ -231,8 +246,22 @@
231
246
  --dock-collapsed-padding / --dock-layer-tab-size paint at the global 1.5×
232
247
  while the density box paints at 1.17× — a desync the R5-2 register would
233
248
  introduce). The formulas are IDENTICAL to their :root definitions; only
234
- the resolution element moves so the lifted --dock-scale flows in. */
235
- --dock-icon-glyph: calc(1.25rem * var(--dock-scale));
249
+ the resolution element moves so the lifted --dock-scale flows in.
250
+ BB.W-PERF-PRODUCER A′-6 — --dock-icon-glyph is now a RATIO of the
251
+ density-painted --dock-layer-height (offsets-sizing.css + the density.css
252
+ [data-density] re-resolve). This coarse block @imports AFTER density.css
253
+ in the SAME @layer at the SAME specificity, so its --dock-icon-glyph
254
+ source-order-WINS on coarse pointers — it MUST carry the density-aware
255
+ formula too (the flat `1.25rem * --dock-scale` here would re-freeze the
256
+ glyph at the flat rem on touch, re-introducing the D5-1 defect the wave
257
+ fixes). --dock-layer-height re-resolves transitively at the lifted
258
+ --dock-scale (re-declared above), so the glyph tracks both the density
259
+ box AND the coarse register. Formula identical to the :root + density
260
+ re-resolve; only the resolution element moves. */
261
+ --dock-icon-glyph: max(
262
+ calc(var(--dock-layer-height, calc(2.5rem * var(--dock-scale))) * var(--dock-icon-glyph-ratio)),
263
+ var(--dock-icon-glyph-floor)
264
+ );
236
265
  --dock-collapsed-padding: calc(0.25rem * var(--dock-scale));
237
266
  --dock-layer-tab-size: calc(1.75rem * var(--dock-scale));
238
267
  /* --dock-collapsed-summary-min-size derives from --dock-layer-height (the