@mkbabb/glass-ui 4.0.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 (394) hide show
  1. package/README.md +3 -1
  2. package/dist/CardAction-CW7a0m8M.js +253 -0
  3. package/dist/{CommandShortcut-DdtWXxOK.js → CommandShortcut-DvZNQ_HF.js} +4 -4
  4. package/dist/ConfiguratorRow-BR4l-ixA.js +143 -0
  5. package/dist/{ContextMenuContent-ON3x7cuk.js → ContextMenuContent-uWnVxDab.js} +1 -1
  6. package/dist/{ContextMenuSubContent-B0Vs6atR.js → ContextMenuSubContent-xol4sD2q.js} +32 -37
  7. package/dist/{DataTable-C464Zbqd.js → DataTable-CuKwF7wr.js} +4 -4
  8. package/dist/{DialogContent-DDE6pQBU.js → DialogContent-DcKK8k9i.js} +5 -5
  9. package/dist/{DialogFooter-8eZbdmPc.js → DialogFooter-BZNX5aVr.js} +3 -3
  10. package/dist/{FadingScroll-DwNnvKMs.js → FadingScroll-DI6hQhT9.js} +1 -1
  11. package/dist/{HoverCardContent-DkMaQzH5.js → HoverCardContent-b2uaAMRR.js} +1 -1
  12. package/dist/{HoverPopover-Dpzwvc4t.js → HoverPopover-CbqbNwgU.js} +2 -2
  13. package/dist/{IconChip-BDw1j5mu.js → IconChip-BTD-nay5.js} +3 -2
  14. package/dist/{IconTooltip-DSjasZIt.js → IconTooltip-Bl8gFZ8d.js} +1 -1
  15. package/dist/{Input-DVG_J0ne.js → Input-h9v5LeXf.js} +1 -1
  16. package/dist/{MetricBadge-BpC0R_Ec.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-BTorlp--.js → PopoverContent-DL7E6vJP.js} +4 -4
  20. package/dist/{Progress-hAT4gqGH.js → Progress-DctG61iZ.js} +4 -4
  21. package/dist/{ScrollingText-CUVFTWk2.js → ScrollingText-yOpBzFYq.js} +2 -2
  22. package/dist/{SelectScrollDownButton-C1jb3b3K.js → SelectScrollDownButton-CrA8F0iV.js} +18 -19
  23. package/dist/Toaster-Bw4xR8xV.js +274 -0
  24. package/dist/{ToggleGroupItem-Dzk9hWsF.js → ToggleGroupItem-pEM9vIhs.js} +50 -37
  25. package/dist/{TooltipProvider-B3MkB_8P.js → TooltipProvider-rzvnXz60.js} +1 -1
  26. package/dist/animated-digit.js +2 -2
  27. package/dist/api/index.d.ts +8 -3
  28. package/dist/api/types-extra.d.ts +6 -0
  29. package/dist/aurora.js +885 -242
  30. package/dist/badge.js +1 -1
  31. package/dist/border-progress.d.ts +1 -0
  32. package/dist/border-progress.js +106 -0
  33. package/dist/{button-BNDWhAZb.js → button-DYCUa-tH.js} +71 -26
  34. package/dist/button.js +1 -1
  35. package/dist/canvas.js +2 -2
  36. package/dist/card.js +2 -2
  37. package/dist/carousel.js +93 -110
  38. package/dist/collapsible.js +1 -1
  39. package/dist/command.js +1 -1
  40. package/dist/compile-CQEFRTmx.js +19 -0
  41. package/dist/components/custom/aurora/composables/atoms-fields.d.ts +39 -0
  42. package/dist/components/custom/aurora/composables/auroraFallbackGround.d.ts +108 -0
  43. package/dist/components/custom/aurora/composables/runtime.d.ts +19 -0
  44. package/dist/components/custom/aurora/composables/uniformBridge.d.ts +5 -1
  45. package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +51 -0
  46. package/dist/components/custom/aurora/composables/wgpuSetup.d.ts +29 -0
  47. package/dist/components/custom/aurora/constants/budget.d.ts +21 -0
  48. package/dist/components/custom/aurora/constants/presets.d.ts +2 -2
  49. package/dist/components/custom/aurora/constants/renderMode.d.ts +63 -12
  50. package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -0
  51. package/dist/components/custom/aurora/constants/shaders/oil-modes.glsl.d.ts +1 -0
  52. package/dist/components/custom/aurora/constants/shaders/procedural-color.wgsl.d.ts +4 -0
  53. package/dist/components/custom/aurora/index.d.ts +2 -1
  54. package/dist/components/custom/border-progress/BorderProgress.vue.d.ts +46 -0
  55. package/dist/components/custom/border-progress/composables/useBorderSpectrum.d.ts +22 -0
  56. package/dist/components/custom/border-progress/constants.d.ts +59 -0
  57. package/dist/components/custom/border-progress/index.d.ts +4 -0
  58. package/dist/components/custom/concentric/Concentric.vue.d.ts +39 -0
  59. package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +11 -0
  60. package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +13 -0
  61. package/dist/components/custom/concentric/composables/ringField.d.ts +44 -0
  62. package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +13 -0
  63. package/dist/components/custom/concentric/composables/useConcentric.d.ts +35 -0
  64. package/dist/components/custom/concentric/constants.d.ts +43 -0
  65. package/dist/components/custom/concentric/index.d.ts +5 -0
  66. package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +4 -0
  67. package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +1 -0
  68. package/dist/components/custom/dock/DockIconButton.vue.d.ts +13 -4
  69. package/dist/components/custom/dock/DockLayerGroup.vue.d.ts +10 -2
  70. package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +75 -0
  71. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +13 -0
  72. package/dist/components/custom/dot-flow-field/DotFlowField.vue.d.ts +38 -0
  73. package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +41 -0
  74. package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +24 -0
  75. package/dist/components/custom/dot-flow-field/composables/useDotFlowField.d.ts +34 -0
  76. package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +18 -0
  77. package/dist/components/custom/dot-flow-field/constants.d.ts +48 -0
  78. package/dist/components/custom/dot-flow-field/index.d.ts +5 -0
  79. package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +1 -0
  80. package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +20 -0
  81. package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +1 -0
  82. package/dist/components/custom/easing/EasingConfigurator.vue.d.ts +33 -0
  83. package/dist/components/custom/easing/EasingPicker.vue.d.ts +49 -0
  84. package/dist/components/custom/easing/composables/useEasingPicker.d.ts +75 -0
  85. package/dist/components/custom/easing/constants.d.ts +28 -0
  86. package/dist/components/custom/easing/index.d.ts +3 -0
  87. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +12 -2
  88. package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +39 -0
  89. package/dist/components/custom/fourier-field/constants.d.ts +7 -0
  90. package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +1 -1
  91. package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +4 -2
  92. package/dist/components/custom/goo-blob/composables/uniformBridgeWGPU.d.ts +24 -0
  93. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +18 -11
  94. package/dist/components/custom/goo-blob/composables/wgpuSetup.d.ts +23 -0
  95. package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -0
  96. package/dist/components/custom/handmark/HandMark.vue.d.ts +1 -1
  97. package/dist/components/custom/icon-chip/types.d.ts +11 -1
  98. package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +3 -1
  99. package/dist/components/custom/metric-stack/MetricStack.vue.d.ts +1 -1
  100. package/dist/components/custom/spa-view/SpaView.vue.d.ts +50 -0
  101. package/dist/components/custom/spa-view/index.d.ts +2 -0
  102. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +10 -0
  103. package/dist/components/custom/tabs/composables/useTabDragMorph.d.ts +42 -0
  104. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +1 -1
  105. package/dist/components/ui/_shared/menuItemVariants.d.ts +1 -1
  106. package/dist/components/ui/badge/index.d.ts +1 -1
  107. package/dist/components/ui/button/Button.vue.d.ts +5 -2
  108. package/dist/components/ui/button/index.d.ts +2 -2
  109. package/dist/components/ui/card/Card.vue.d.ts +34 -4
  110. package/dist/components/ui/card/CardHeader.vue.d.ts +42 -16
  111. package/dist/components/ui/card/ScrollCard.vue.d.ts +33 -0
  112. package/dist/components/ui/card/ScrollCardHeader.vue.d.ts +17 -0
  113. package/dist/components/ui/card/index.d.ts +2 -0
  114. package/dist/components/ui/carousel/CarouselNext.vue.d.ts +2 -2
  115. package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +2 -2
  116. package/dist/components/ui/carousel/GlassCarouselPager.vue.d.ts +2 -2
  117. package/dist/components/ui/command/Command.vue.d.ts +1 -1
  118. package/dist/components/ui/drawer/Drawer.vue.d.ts +46 -33
  119. package/dist/components/ui/drawer/DrawerContent.vue.d.ts +7 -8
  120. package/dist/components/ui/drawer/DrawerDescription.vue.d.ts +2 -2
  121. package/dist/components/ui/drawer/DrawerOverlay.vue.d.ts +1 -1
  122. package/dist/components/ui/drawer/DrawerTitle.vue.d.ts +2 -2
  123. package/dist/components/ui/drawer/composables/drawerSnapContext.d.ts +26 -0
  124. package/dist/components/ui/drawer/composables/useDrawerSnap.d.ts +17 -0
  125. package/dist/components/ui/drawer/constants.d.ts +45 -0
  126. package/dist/components/ui/drawer/index.d.ts +23 -15
  127. package/dist/components/ui/focus-scope/FocusScope.vue.d.ts +20 -0
  128. package/dist/components/ui/focus-scope/index.d.ts +2 -0
  129. package/dist/components/ui/index.d.ts +1 -0
  130. package/dist/components/ui/progress/ProgressDefault.vue.d.ts +3 -2
  131. package/dist/components/ui/select/SelectContent.vue.d.ts +1 -1
  132. package/dist/components/ui/sheet/index.d.ts +1 -1
  133. package/dist/components/ui/tags-input/TagsInput.vue.d.ts +2 -2
  134. package/dist/components/ui/toast/Toast.vue.d.ts +5 -2
  135. package/dist/components/ui/toast/use-toast.d.ts +14 -0
  136. package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
  137. package/dist/composables/glass/canvas2d/useCanvas2D.d.ts +13 -6
  138. package/dist/composables/glass/index.d.ts +5 -2
  139. package/dist/composables/glass/useSpecularPointer.d.ts +33 -0
  140. package/dist/composables/glass/useSpecularTracking.d.ts +20 -0
  141. package/dist/composables/glass/vSpecular.d.ts +2 -0
  142. package/dist/composables/glass/webgl/shaders/flow.glsl.d.ts +1 -0
  143. package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +16 -0
  144. package/dist/composables/glass/webgpu/index.d.ts +2 -0
  145. package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +54 -0
  146. package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +84 -0
  147. package/dist/composables/motion/core/index.d.ts +1 -0
  148. package/dist/composables/motion/index.d.ts +4 -0
  149. package/dist/composables/motion/useDockCtaReceive.d.ts +59 -0
  150. package/dist/composables/motion/useDragMorph.d.ts +77 -0
  151. package/dist/composables/motion/useLiquidFlex.d.ts +11 -0
  152. package/dist/composables/motion/useLiquidPress.d.ts +71 -0
  153. package/dist/composables/motion/useLiquidReveal.d.ts +51 -0
  154. package/dist/composables/motion/useNumericTransition.d.ts +3 -3
  155. package/dist/composables/motion/usePointerVelocityField.d.ts +98 -0
  156. package/dist/concentric.d.ts +1 -0
  157. package/dist/concentric.js +562 -0
  158. package/dist/configurator.js +3 -2
  159. package/dist/confirm-dialog.js +22 -24
  160. package/dist/constellation.js +11 -11
  161. package/dist/context-menu.js +3 -3
  162. package/dist/controls.js +1 -1
  163. package/dist/createCanvasLifecycle-CHD5XrDW.js +82 -0
  164. package/dist/data-table.js +1 -1
  165. package/dist/dialog.js +2 -2
  166. package/dist/dock.js +564 -457
  167. package/dist/{dockContext-Bu1Avy-a.js → dockContext-BNfyPLe9.js} +1 -1
  168. package/dist/dom.js +5 -5
  169. package/dist/dot-flow-field.d.ts +1 -0
  170. package/dist/dot-flow-field.js +604 -0
  171. package/dist/drawer.d.ts +1 -0
  172. package/dist/drawer.js +380 -0
  173. package/dist/{dropdown-menu-BJ7E9js_.js → dropdown-menu-CofSZuk8.js} +14 -15
  174. package/dist/dropdown-menu.js +1 -1
  175. package/dist/easing.d.ts +1 -0
  176. package/dist/easing.js +463 -0
  177. package/dist/expandable-container.js +7 -4
  178. package/dist/fading-scroll.js +1 -1
  179. package/dist/focus-scope.d.ts +1 -0
  180. package/dist/focus-scope.js +23 -0
  181. package/dist/forms.js +7 -7
  182. package/dist/fourier-field.js +128 -116
  183. package/dist/fourier-math.js +1 -1
  184. package/dist/glass-panel.js +2 -2
  185. package/dist/glass-ui.css +1 -1
  186. package/dist/glass-ui.js +149 -341
  187. package/dist/goo-blob.js +830 -224
  188. package/dist/handmark.js +2 -2
  189. package/dist/header-ribbon.js +1 -1
  190. package/dist/hover-card.js +1 -1
  191. package/dist/hover-popover.js +1 -1
  192. package/dist/icon-chip.js +1 -1
  193. package/dist/icon-tooltip.js +1 -1
  194. package/dist/index.d.ts +1 -1
  195. package/dist/instrument-chassis.js +1 -1
  196. package/dist/label.js +1 -1
  197. package/dist/labeled-field.js +6 -6
  198. package/dist/metric-badge.js +1 -1
  199. package/dist/metric-cell.js +1 -1
  200. package/dist/metric-stack.js +4 -8
  201. package/dist/motion-core.js +36 -36
  202. package/dist/motion-curves.js +1 -1
  203. package/dist/motion.js +157 -55
  204. package/dist/notification.js +1 -1
  205. package/dist/number-field.js +1 -1
  206. package/dist/pager-dots.js +1 -1
  207. package/dist/paper-backdrop.js +1 -1
  208. package/dist/popover.js +1 -1
  209. package/dist/{compile-EXXzEr1q.js → procedural-color.glsl-CIFsJhwI.js} +1 -155
  210. package/dist/procedural-color.wgsl-CToRHugY.js +224 -0
  211. package/dist/progress.js +1 -1
  212. package/dist/pulse.js +1 -1
  213. package/dist/reactive.js +2 -2
  214. package/dist/scrolling-text.js +1 -1
  215. package/dist/search.js +9 -11
  216. package/dist/select.js +3 -3
  217. package/dist/separator.js +1 -1
  218. package/dist/{sheet-CquRYOAw.js → sheet-tZMg0E0w.js} +5 -5
  219. package/dist/sheet.js +1 -1
  220. package/dist/{slider-DQ95MET2.js → slider-DVb4HXU-.js} +3 -3
  221. package/dist/slider.js +1 -1
  222. package/dist/sortable-list.js +3 -3
  223. package/dist/spa-view.d.ts +1 -0
  224. package/dist/spa-view.js +46 -0
  225. package/dist/styles/animations.css +33 -9
  226. package/dist/styles/border-progress.css +109 -0
  227. package/dist/styles/cards.css +76 -0
  228. package/dist/styles/components.css +1 -1
  229. package/dist/styles/critical-partition.mjs +140 -0
  230. package/dist/styles/critical.css +12 -0
  231. package/dist/styles/deferred.css +31 -0
  232. package/dist/styles/dock/density.css +45 -0
  233. package/dist/styles/dock/layers.css +54 -30
  234. package/dist/styles/dock/morph.css +124 -7
  235. package/dist/styles/dock/overflow.css +16 -2
  236. package/dist/styles/dock/shell.css +54 -16
  237. package/dist/styles/dock.css +32 -0
  238. package/dist/styles/drawer.css +81 -35
  239. package/dist/styles/glass/deep.css +44 -0
  240. package/dist/styles/glass/ladder.css +87 -31
  241. package/dist/styles/glass/material.css +78 -15
  242. package/dist/styles/glass/reveal.css +136 -0
  243. package/dist/styles/glass/rim.css +100 -0
  244. package/dist/styles/glass/surfaces.css +101 -3
  245. package/dist/styles/glass-refract.css +96 -44
  246. package/dist/styles/glass-specular-track.css +7 -0
  247. package/dist/styles/glass.css +3 -0
  248. package/dist/styles/hover-popover.css +7 -6
  249. package/dist/styles/icon-chip.css +77 -15
  250. package/dist/styles/index.css +21 -9
  251. package/dist/styles/instrument-chassis.css +66 -3
  252. package/dist/styles/scroll-choreography.css +300 -0
  253. package/dist/styles/segmented-tabs.css +31 -0
  254. package/dist/styles/theme/bridges.css +11 -0
  255. package/dist/styles/theme/literals.css +11 -2
  256. package/dist/styles/theme/radius.css +6 -1
  257. package/dist/styles/tokens/dark-arm.css +98 -26
  258. package/dist/styles/tokens/glass-deep.css +75 -0
  259. package/dist/styles/tokens/glass-fx.css +333 -0
  260. package/dist/styles/tokens/glass.css +39 -319
  261. package/dist/styles/tokens/light-dark.css +15 -2
  262. package/dist/styles/tokens/offsets.css +116 -0
  263. package/dist/styles/tokens/on-glass-fg.css +39 -0
  264. package/dist/styles/tokens/property-regs.css +127 -0
  265. package/dist/styles/tokens/scale-paper.css +117 -89
  266. package/dist/styles/tokens/scheme-motion.css +70 -32
  267. package/dist/styles/tokens/scroll-tokens.css +123 -0
  268. package/dist/styles/tokens/{offsets-sizing.css → sizing.css} +37 -100
  269. package/dist/styles/tokens.css +9 -3
  270. package/dist/styles/typography/semantic.css +8 -8
  271. package/dist/styles/typography/utilities.css +22 -7
  272. package/dist/styles/utilities/animate.css +27 -24
  273. package/dist/styles/utilities/base-misc.css +255 -0
  274. package/dist/styles/utilities/base.css +47 -261
  275. package/dist/styles/utilities/btn.css +3 -1
  276. package/dist/styles/utilities/metal.css +189 -0
  277. package/dist/styles/utilities.css +14 -7
  278. package/dist/switch.js +1 -1
  279. package/dist/tabs.js +220 -107
  280. package/dist/timeline.js +2 -2
  281. package/dist/toast.js +1 -1
  282. package/dist/toggle-group.js +1 -1
  283. package/dist/tooltip.js +1 -1
  284. package/dist/typewriter.js +1 -1
  285. package/dist/useCanvas2D-B8w_E3Rr.js +83 -0
  286. package/dist/useConfiguratorState-DNlOh6c8.js +161 -0
  287. package/dist/useDragMorph-DgxnsVJz.js +102 -0
  288. package/dist/useLiquidPress-kfb4KX79.js +39 -0
  289. package/dist/usePointerVelocityField-JbRd5CrM.js +137 -0
  290. package/dist/useSpring-C0jyvEJB.js +40 -0
  291. package/dist/useSpringMount-q1amq1SJ.js +71 -0
  292. package/dist/useSpringPress-BsqPr7FJ.js +34 -0
  293. package/dist/{useTouchGate-28Tk2-t2.js → useTouchGate-CBZTD4SD.js} +1 -1
  294. package/dist/vSpecular-CQFmLNzA.js +68 -0
  295. package/dist/vendor-CKmzio-i.js +226 -0
  296. package/dist/watercolor-dot.js +2 -2
  297. package/package.json +126 -22
  298. package/src/styles/animations.css +33 -9
  299. package/src/styles/border-progress.css +109 -0
  300. package/src/styles/cards.css +76 -0
  301. package/src/styles/critical-partition.mjs +140 -0
  302. package/src/styles/dock/density.css +45 -0
  303. package/src/styles/dock/layers.css +54 -30
  304. package/src/styles/dock/morph.css +124 -7
  305. package/src/styles/dock/overflow.css +16 -2
  306. package/src/styles/dock/shell.css +54 -16
  307. package/src/styles/dock.css +32 -0
  308. package/src/styles/drawer.css +81 -35
  309. package/src/styles/glass/deep.css +44 -0
  310. package/src/styles/glass/ladder.css +87 -31
  311. package/src/styles/glass/material.css +78 -15
  312. package/src/styles/glass/reveal.css +136 -0
  313. package/src/styles/glass/rim.css +100 -0
  314. package/src/styles/glass/surfaces.css +101 -3
  315. package/src/styles/glass-refract.css +96 -44
  316. package/src/styles/glass-specular-track.css +7 -0
  317. package/src/styles/glass.css +3 -0
  318. package/src/styles/hover-popover.css +7 -6
  319. package/src/styles/icon-chip.css +77 -15
  320. package/src/styles/index.css +12 -0
  321. package/src/styles/instrument-chassis.css +66 -3
  322. package/src/styles/scroll-choreography.css +300 -0
  323. package/src/styles/segmented-tabs.css +31 -0
  324. package/src/styles/theme/bridges.css +11 -0
  325. package/src/styles/theme/literals.css +11 -2
  326. package/src/styles/theme/radius.css +6 -1
  327. package/src/styles/tokens/dark-arm.css +98 -26
  328. package/src/styles/tokens/glass-deep.css +75 -0
  329. package/src/styles/tokens/glass-fx.css +333 -0
  330. package/src/styles/tokens/glass.css +39 -319
  331. package/src/styles/tokens/light-dark.css +15 -2
  332. package/src/styles/tokens/offsets.css +116 -0
  333. package/src/styles/tokens/on-glass-fg.css +39 -0
  334. package/src/styles/tokens/property-regs.css +127 -0
  335. package/src/styles/tokens/scale-paper.css +117 -89
  336. package/src/styles/tokens/scheme-motion.css +70 -32
  337. package/src/styles/tokens/scroll-tokens.css +123 -0
  338. package/src/styles/tokens/{offsets-sizing.css → sizing.css} +37 -100
  339. package/src/styles/tokens.css +9 -3
  340. package/src/styles/typography/semantic.css +8 -8
  341. package/src/styles/typography/utilities.css +22 -7
  342. package/src/styles/utilities/animate.css +27 -24
  343. package/src/styles/utilities/base-misc.css +255 -0
  344. package/src/styles/utilities/base.css +47 -261
  345. package/src/styles/utilities/btn.css +3 -1
  346. package/src/styles/utilities/metal.css +189 -0
  347. package/src/styles/utilities.css +14 -7
  348. package/dist/CardAction-XH4YBVEK.js +0 -158
  349. package/dist/Notification-DKjKsQq8.js +0 -100
  350. package/dist/NumberFieldContent-1VtwDSgf.js +0 -145
  351. package/dist/Toaster-Bm_HQSpc.js +0 -263
  352. package/dist/check-njhk-vfu.js +0 -7
  353. package/dist/chevron-down-DKkxb4VV.js +0 -7
  354. package/dist/chevron-right-CPXbqQQz.js +0 -7
  355. package/dist/chevron-up-n_24SqI-.js +0 -7
  356. package/dist/createLucideIcon-DydS2qgk.js +0 -43
  357. package/dist/minimize-2-BV31Ob_h.js +0 -38
  358. package/dist/search-BSGrf2Sk.js +0 -12
  359. package/dist/useCanvas2D-ClrQuZtp.js +0 -96
  360. package/dist/useConfiguratorState-kiIlun8I.js +0 -303
  361. package/dist/useSpecularTracking-Bo5su68i.js +0 -32
  362. package/dist/useSpringMount-CvopqiFr.js +0 -108
  363. package/dist/useViewTransition-COsPjQVZ.js +0 -47
  364. package/dist/x-BUwTKe50.js +0 -10
  365. /package/dist/{CollapsibleContent-C_s6fG7r.js → CollapsibleContent-68dEXIAl.js} +0 -0
  366. /package/dist/{InstrumentChassis-UUJX0-mW.js → InstrumentChassis-Bx0F_q5g.js} +0 -0
  367. /package/dist/{Label-Ck9SWEKM.js → Label-C2ejNWeC.js} +0 -0
  368. /package/dist/{ModalOverlay-CkPRRgl_.js → ModalOverlay-D1VrWyoi.js} +0 -0
  369. /package/dist/{PaperBackdrop-nBKe0vkB.js → PaperBackdrop-Vf3tlpvd.js} +0 -0
  370. /package/dist/{SelectGroup-Dcczq44n.js → SelectGroup-DwwjicPY.js} +0 -0
  371. /package/dist/{SelectSeparator-DK2y1Bun.js → SelectSeparator-DXswVdRz.js} +0 -0
  372. /package/dist/{Separator-BArl4OaB.js → Separator-pKF0oA4M.js} +0 -0
  373. /package/dist/{Switch-Dr--uLGH.js → Switch-CwYNf8bo.js} +0 -0
  374. /package/dist/{_plugin-vue_export-helper-CBt_VvXa.js → _plugin-vue_export-helper-C1je1s0u.js} +0 -0
  375. /package/dist/{badge-UILT_3pZ.js → badge-D9XWW4GT.js} +0 -0
  376. /package/dist/{createContext-B2RaZ-b8.js → createContext-CpBNTRMI.js} +0 -0
  377. /package/dist/{math-DeuJwLFx.js → math-BINYmg5z.js} +0 -0
  378. /package/dist/{menuItemVariants-DWRQXBxJ.js → menuItemVariants-D8VNHq22.js} +0 -0
  379. /package/dist/{prng-Cg22zv8g.js → prng-Za0Rmgag.js} +0 -0
  380. /package/dist/{resolveCanvasColor-BBiYfp8g.js → resolveCanvasColor-CUyHr5Uu.js} +0 -0
  381. /package/dist/{springPresets-WXaLbu8u.js → springPresets-CFQGQfdl.js} +0 -0
  382. /package/dist/{useAnimatedNumber-C_3wZLx4.js → useAnimatedNumber-BfUq2bUM.js} +0 -0
  383. /package/dist/{useInterval-CNdua40W.js → useInterval-CvK1mL92.js} +0 -0
  384. /package/dist/{useLiquidFlex-C12hXwOZ.js → useLiquidFlex-mZPMiNXh.js} +0 -0
  385. /package/dist/{useRAFLoop-CdwJ7284.js → useRAFLoop-UYa4zoiN.js} +0 -0
  386. /package/dist/{useResizeObserver-V6nq5gJb.js → useResizeObserver-Bpoi7tRE.js} +0 -0
  387. /package/dist/{useResolveTokenColor-NUG2zYAW.js → useResolveTokenColor-vAylyR0x.js} +0 -0
  388. /package/dist/{useSortable-BVqlJRBR.js → useSortable-DHjtZSEd.js} +0 -0
  389. /package/dist/{useSurfaceAxis-CMnF2zHb.js → useSurfaceAxis-g0NloYEF.js} +0 -0
  390. /package/dist/{useTextHighlight-NmBM5V_4.js → useTextHighlight-CWEi25hf.js} +0 -0
  391. /package/dist/{useTimer-B_PAasDL.js → useTimer-BHJOKr35.js} +0 -0
  392. /package/dist/{useUserInvalidAria-CDfJuakL.js → useUserInvalidAria-y5namzeE.js} +0 -0
  393. /package/dist/{useViewportReady-CvBcCYDf.js → useViewportReady-anbac3m6.js} +0 -0
  394. /package/dist/{vReveal-D9k0jADx.js → vReveal-Czsb7zQC.js} +0 -0
@@ -0,0 +1,333 @@
1
+ /* tokens/glass-fx.css
2
+ §8 glass EFFECT knobs — the grain/specular/edge-light + the adaptive tint-source
3
+ + backdrop-luma bucket + the decorative fringe/curvature/chart-palette + the
4
+ per-tier shadow/spine/under-shadow/overlay-scrim recipes.
5
+ Carved from tokens/glass.css at BB.W-CARVE4 to hold the no-god-module bound (the
6
+ §8 opacity/blur/saturate LADDER + composed bg/border + the control-REST register
7
+ stay in glass.css; this is the contiguous decorative/fx tail). @import-ed by
8
+ tokens.css in cascade order IMMEDIATELY AFTER glass.css — the carve splits the ONE
9
+ §8 :root block into two adjacent same-selector :root{} blocks at the same cascade
10
+ slot (the AY.W-CSS1 isomorphism precedent), dist byte-identical. */
11
+ :root {
12
+ /* Shared decorative. Light grain dropped 0.035 → 0.025 in P.W1.B —
13
+ at the chassis scale the original alpha read as crawl over the new
14
+ lower-alpha chassis bg; the grain's role is texture, not reading,
15
+ so it sits at the perceptual floor. Dark companion drops 0.06 →
16
+ 0.045 below to keep the soft-light blend alive without stippling. */
17
+ --glass-grain-opacity: 0.025;
18
+ /* BB.W-LIQUIDHOVER — the grain ENGAGE clock: a hover/active grain lift cross-fades
19
+ the grain `::after` OPACITY on this thin ~120ms linear write while the
20
+ `background-image` stays ALWAYS PRESENT (never a none→image swap — the one-frame
21
+ decode-and-pop, the T8-F6 disco-grain pop); collapses to 0ms under PRM. */
22
+ --glass-grain-engage-duration: 120ms;
23
+ /* BA.W-GLASS-CAL — `--glass-grain-opacity-disco` (0.08) DELETED with the disco
24
+ recipe retirement (H2a): no surviving consumer once `btn-audacious` + the
25
+ dock-tab primary phase-grain collapse onto the calm glass register. */
26
+ --glass-highlight: inset 0 0.5px 0 0 hsl(0 0% 100% / 0.25);
27
+
28
+ /* Hairline-accent — 0.5px catch-light + under-shadow pair.
29
+ Single token composes the canonical 2-stop hairline used by dock,
30
+ instrument-chassis. The `.hairline-accent` utility
31
+ (utilities.css §hairline) adopts these via `box-shadow:`. */
32
+ --hairline-catch-light: inset 0 0.5px 0 0 rgb(255 255 255 / 0.06);
33
+ --hairline-under-shadow: 0 0.5px 0 0 rgb(0 0 0 / 0.04);
34
+ --border-hairline: var(--hairline-catch-light), var(--hairline-under-shadow);
35
+
36
+ /* Specular catch-light — 1.5px-tall top-edge highlight that swaps in for
37
+ --glass-highlight on interactive moments (e.g. primary-action hover).
38
+ Reads as a real catch-light on a curved surface. The `-dark` companion
39
+ is overridden inside `.dark`; the named token here is the explicit
40
+ handle consumers can reference to compose dark-aware layers. */
41
+ --glass-specular: inset 0 1.5px 0 0 hsl(0 0% 100% / 0.45);
42
+ --glass-specular-dark: inset 0 1.5px 0 0 hsl(0 0% 100% / 0.30);
43
+
44
+ /* AV.W15 M3 — Full-perimeter rim light (the "rim that defines the
45
+ silhouette", WWDC25 sess. 219). Distinct from the top-only
46
+ `--glass-highlight` (a 0.5px top-edge catch-light): this is a 0.75px
47
+ inset ring around the WHOLE silhouette, four edges, reading as the
48
+ catch-light that wraps the glass plate the way iOS-26 Liquid Glass
49
+ carries a rim, not just a top highlight. Composed as a SECOND inset
50
+ box-shadow layer alongside `--glass-highlight` on the floating/dock
51
+ tiers (glass.css wires it). The alpha is deliberately low (0.18 light
52
+ / 0.10 dark) — the rim is decoration and must not eat AA legibility
53
+ over a busy backdrop; it sits below the perceptual reading threshold
54
+ on text. The `-dark` companion is overridden inside `.dark` mirroring
55
+ the `--glass-specular-dark` precedent. */
56
+ --glass-edge-light: inset 0 0 0 0.75px hsl(0 0% 100% / 0.18);
57
+ /* BA.W-DARK-MATERIAL scope 2 — the dark edge/rim is the PRIMARY silhouette device in
58
+ dark. The light register's fill+shadow carry the plate; in dark the fill barely
59
+ separates (the deep page is near-black), so the EDGE + the transmitted glow carry the
60
+ silhouette — two registers, one design language. HEAD α 0.10 sits below the reading
61
+ threshold over the deep canvas; lifted to 0.22 so the rim DEFINES the plate (the
62
+ WWDC25 "rim that defines the silhouette" device, dialed up for the dark substrate). */
63
+ --glass-edge-light-dark: inset 0 0 0 0.75px hsl(0 0% 100% / 0.22);
64
+
65
+ /* AW.W23 — content-aware adaptive tint (the Baseline-2025 "tint informed by
66
+ surrounding content" axis, WWDC25 sess. 219). A surface can tint toward a
67
+ consumer-provided dominant backdrop color via a `color-mix(in oklab, …)`
68
+ recipe (oklab is the mwg-preferred space for THIS tint generation; NEVER a
69
+ lightness-shift in `oklch(from …)` in the glass-tint mix). BB.W-DARK-INK-WARM landed `oklch(from var(--foreground) …)` live on the dark `--surface-tint-*` arm.
70
+
71
+ DEFAULT is zero delta: `--glass-tint-source` is the warm-white card itself
72
+ and `--glass-tint-strength` is 0%, so the rung background mixes 0% toward
73
+ the source = byte-identical to today. A consumer sets `--glass-tint-source`
74
+ to a sampled aurora hue + a strength ≤30% to bias the surface. Alpha-safe:
75
+ the mix is bounded ≤30% and never re-points the card's own alpha.
76
+
77
+ AX.W55 — the DEFAULTS stay `var(--card)`/`0%` (the zero-delta rest state).
78
+ The backdrop-luminance probe (`--glass-backdrop`, below) is what OVERRIDES
79
+ them under a bright backdrop; the `:root` defaults are NEVER touched — the
80
+ bucket blocks (glass.css / dock.css `@container style(--glass-backdrop:
81
+ light)`) do the lift, so a surface over today's rich/dark background reads
82
+ byte-identical. */
83
+ --glass-tint-source: var(--card);
84
+ --glass-tint-strength: 0%;
85
+
86
+ /* AX.W55 — adaptive glass legibility (the iOS-26/27 "locally darken the glass
87
+ over light content" move; G2). There is NO web API that reads the pixels
88
+ painted BEHIND a `backdrop-filter` element, so the backdrop-luminance signal
89
+ is a DECLARATIVE BUCKET a consumer sets where it KNOWS the backdrop is bright
90
+ (a near-white card surface, a pale aurora bleed, a bright data grid). It is
91
+ read by the `@container style(--glass-backdrop: light)` blocks on every glass
92
+ family (the shipped density-cascade mechanism — utilities.css §density) which
93
+ lift `--glass-tint-strength` toward the AA floor + re-point `--glass-tint-
94
+ source` to the warm-ink below, mixing the rung TOWARD ink via the EXISTING
95
+ `color-mix(in oklab)` seam — ZERO new compositing seam.
96
+
97
+ --glass-backdrop: the bucket. `dark` (or unset) = today's zero-delta;
98
+ `light` engages the bright-bucket darken. An
99
+ INHERITING ident set on any ancestor reaches every
100
+ descendant glass surface (the @container read).
101
+ --glass-backdrop-luma: the numeric escape hatch — a sampled backdrop
102
+ relative-luminance (0..1) a heavier JS observer sets
103
+ when the declarative bucket is too coarse. The TOKEN
104
+ is minted (the cascade reads it if set); the OBSERVER
105
+ that sets it stays demo-private until a 2nd consumer
106
+ arrives (the no-overfitting bar — the DEFAULT path is
107
+ the declarative bucket, not a speculative sampler).
108
+ --glass-tint-ink: the LOW-LUMINANCE warm-ink the bright bucket re-points
109
+ `--glass-tint-source` to — the warm dark `--foreground`
110
+ family (NOT white; a lightener over light content is
111
+ exactly the W52-fixed wrong direction). It auto-flips
112
+ with `--foreground` (dark-mode it resolves the light
113
+ warm ink — but the bright-backdrop case is a light-mode
114
+ concern). Overridable like every magnitude here.
115
+
116
+ The bright-bucket `--glass-tint-strength` is clamped to a BOUNDED AA-clearing
117
+ floor — `--glass-tint-strength-aa` (≤24%, the iOS clamp; the lowest value that
118
+ clears 4.5:1 over synthetic white, capped LOW so the surface STAYS translucent,
119
+ "let as much content through as possible"). Recorded here as the ceiling the
120
+ bucket blocks drive to; the live 4.5:1 readback (proof:adaptive-glass π arm)
121
+ ratifies the exact value. */
122
+ --glass-backdrop: dark;
123
+ --glass-backdrop-luma: ;
124
+ --glass-tint-ink: var(--foreground);
125
+ /* AZ.W-ADAPTIVE-AUTO Arm 1 — recalibrated 18% → 20%. The bump strengthens the
126
+ G2 surface-SILHOUETTE darken (ΔL ≈ 0.40 over synthetic white, the plate is
127
+ distinguishable from a bright page behind) while staying bounded ≤ 24% (the
128
+ iOS clamp — the surface STAYS translucent, "let content through"). The body
129
+ register over the engaged plate is the full warm-ink `--foreground` (~10.6:1
130
+ over white at 20%) — the muted L40 tier is lifted to the full ink by the
131
+ self-engage rules (it cannot clear 4.5:1 on a translucent darkened plate;
132
+ darkening moves the plate toward muted's own luminance). The shipped overlay-
133
+ band engaged appearance re-ratifies at the new floor: `--foreground` reads
134
+ ~10.6–10.9:1 (within the ~11:1 ratified register — the bump is a silhouette
135
+ strengthening, not a silent re-tint below AA). The live π readback ratifies. */
136
+ --glass-tint-strength-aa: 20%;
137
+
138
+ /* BA.W-DARK-MATERIAL scope 7 — the calm-light recalibration (R9-1; the slides gray-slab
139
+ fix). The AZ unconditional content-tier self-engage applied the full 20% AA darken to
140
+ EVERY .glass-card/.glass-resting/.glass-quiet/.glass-wash mode- and backdrop-agnostically
141
+ — over a plain LIGHT page (not a bright/busy backdrop) the 20% warm-ink darken + the
142
+ muted→ink lift composited the translucent cream card into a flat gray slab (the slides
143
+ presenter card: 20% → oklab(0.785) gray). The recalibration: the FULL AA darken is now
144
+ gated on the declared/sampled bright signal (the @container --glass-backdrop:light bucket /
145
+ the observer); the UNCONDITIONAL content-tier floor drops to this sub-perceptual SILHOUETTE
146
+ tint — just enough edge over a busy backdrop without graying a calm-light card (the
147
+ calm-light plate stays warm, L ≈ 0.94 at the slides-equivalent fixture). The overlay band
148
+ (.glass-floating/.glass-overlay) keeps the FULL unconditional darken (floating over an
149
+ UNKNOWN consumer surface, darkening is the correct default). A consumer opts out on a
150
+ light-page ancestor via --glass-tint-strength: 0%. Bounded > 0%, ≤ 10%. The DARK arm
151
+ re-tunes --glass-tint-strength-aa directly (dark-arm.css scope 3) — the luminous-dark lift
152
+ is the desired default there, NOT a sub-perceptual floor, so the floor is a light-mode knob. */
153
+ --glass-tint-strength-floor: 4%;
154
+
155
+ /* The on-glass FOREGROUND register (BB.W-ON-GLASS-FG) lives in tokens/on-glass-fg.css. */
156
+ /* R5-7 — the VEIL text-plate feather. The `veil-surface` decoration
157
+ (cards.css) paints a borderless/rimless translucent glass plate as a LOCAL
158
+ text-legibility surface over a busy backdrop; its `--veil-feather` axis is
159
+ an OPTIONAL `mask-image` that fades the plate edges into the page (the
160
+ soft-edged "bleed" the slides deck text plates use). The default is `none`
161
+ (a clean rectangle); a consumer opts into the feather by pointing
162
+ `--veil-feather` at this ready-made radial, or any `mask-image` value.
163
+ The 70%→100% falloff feathers the outer ~30% of the plate; override the
164
+ token to retune the fade radius library-wide. */
165
+ --veil-feather-radial: radial-gradient(
166
+ ellipse 100% 100% at 50% 50%,
167
+ black 0%,
168
+ black 70%,
169
+ transparent 100%
170
+ );
171
+
172
+ /* AW.W23 — chromatic edge dispersion (the "polished glass" rim fringe Apple
173
+ shows). A warm fringe on one edge + a cool fringe on the other, low-alpha,
174
+ biased warm-cream/NCSU-red (NOT iOS-blue). Composed OVER the W22 uniform
175
+ rim under `prefers-reduced-transparency: no-preference`; dropped under
176
+ `reduce` (it is a transparency garnish). The two directional inset rings
177
+ read as light refracting through the glass edge. */
178
+ --glass-fringe-warm: oklch(0.92 0.06 40 / 0.22);
179
+ --glass-fringe-cool: oklch(0.90 0.05 230 / 0.16);
180
+ --glass-edge-dispersion:
181
+ inset 0.75px 0 0 0 var(--glass-fringe-warm),
182
+ inset -0.75px 0 0 0 var(--glass-fringe-cool);
183
+
184
+ /* AX.W52 D19 — the moving-specular gleam radius (glass.css `.glass-material::
185
+ before`). The ONE knob that BOUNDS the gleam geometry as a percentage of the
186
+ plate so it can NEVER again become a whole-surface disc (the prior implicit
187
+ `circle at …` ran its stops to 55–75% of the half-diagonal — a wash on a
188
+ small tile). 36% reads as a tracked edge glint. Override on `:root` to retune
189
+ library-wide; a per-surface override clips the gleam tighter/wider. */
190
+ --glass-specular-size: 36%;
191
+
192
+ /* Chassis curvature illusion — a subtle radial gradient at the chassis
193
+ top centre that lifts the surface without committing to literal 3D.
194
+ Composed into <InstrumentChassis>'s background stack. AX.W52 D19 — the
195
+ prior pure-white `hsl(0 0% 100% / 0.06)` reaching `transparent 60%` was a
196
+ broad top-centre WASH (the #1 fixed-anchor rest-bloom culprit). Re-derived
197
+ onto the warm-cream house identity (`hsl(40 30% 96%)`, L < 100% so the warm
198
+ hue survives — mirroring the moving gleam), the alpha routed through the
199
+ SINGLE overridable `--glass-curvature-intensity` knob (0.02 default, a third
200
+ of the old 0.06), and the ellipse tightened to `transparent 38%` so it reads
201
+ as a thin top-edge sheen, not a central wash. */
202
+ --glass-curvature-intensity: 0.02;
203
+ --glass-curvature-overlay: radial-gradient(
204
+ ellipse at 50% -20%,
205
+ hsl(40 30% 96% / var(--glass-curvature-intensity)),
206
+ transparent 38%
207
+ );
208
+ /* The light-arm dark alias kept on the same warm-cream + token recipe so a
209
+ non-`.dark` consumer reading `…-overlay-dark` still resolves a softened
210
+ sheen; the `.dark` block below lowers `--glass-curvature-intensity` so the
211
+ deep-canvas arm is genuinely softer (the prior byte-identical dark arm read
212
+ HARDER over the dark canvas). */
213
+ --glass-curvature-overlay-dark: var(--glass-curvature-overlay);
214
+
215
+ /* Chart palette aliases — speedtest et al. read these for phase tinting.
216
+ Defaults map to viz-basis hues; consumers can override per app. */
217
+ --chart-ping: var(--viz-chebyshev);
218
+ --chart-download: var(--viz-fourier);
219
+ --chart-upload: var(--viz-amber);
220
+ --chart-jitter: var(--viz-legendre);
221
+
222
+ /* O.W6 Lane D — WCAG companion `--chart-{phase}-label` tokens
223
+ (speedtest AC.W6c.T2 — F1.V-04 closure).
224
+
225
+ The canvas-side hues above preserve their saturated brand register
226
+ (correct against the meter dial); the COMPANION tokens darken to
227
+ L≈0.40 so phase-label text on `--background` clears the WCAG 2.1
228
+ AA-body 4.5:1 contrast floor. Mirrors the two-token discipline
229
+ already established by `--meter-{background-color,track-stroke}`:
230
+ one token feeds the canvas/visual, the second feeds the label
231
+ text.
232
+
233
+ Light-mode L≈0.40 in OKLCH preserves the hue rotation while
234
+ dropping luminance enough for body contrast; dark-mode flips to
235
+ L≈0.85 against the dark canvas. Consumers reach these via
236
+ `color: var(--chart-ping-label)` (etc.) on label elements ONLY —
237
+ chart strokes/fills continue to read `--chart-ping`. */
238
+ --chart-ping-label: oklch(0.40 0.18 230);
239
+ --chart-download-label: oklch(0.40 0.20 22);
240
+ --chart-upload-label: oklch(0.40 0.16 55);
241
+ --chart-jitter-label: oklch(0.40 0.20 305);
242
+
243
+ /* O.W6 Lane D — Meter track stroke (speedtest AC.W6c.T3 — F1.V-02
244
+ closure). Promoted from speedtest's consumer-side declaration so
245
+ glass-ui owns the canonical light + dark values. The light-mode
246
+ value reads opaque foreground (composes through canvas
247
+ `globalAlpha` in consumer renderers; e.g., speedtest's `rings.ts`
248
+ `globalAlpha = 0.22` lands the phantom-track at the perceptual
249
+ sweet-spot). The dark-mode companion lives under `.dark` below
250
+ and ALSO reads `var(--foreground)` — the prior speedtest value
251
+ `var(--background)` rendered bg-on-bg invisible at dark mode. */
252
+ --meter-track-stroke: var(--foreground);
253
+
254
+ /* Shadow per tier — complete box-shadow lists for glass surface classes */
255
+ --glass-shadow-wash: var(--shadow-sm), var(--glass-highlight);
256
+ --glass-shadow-quiet: var(--shadow-md), var(--glass-highlight);
257
+ --glass-shadow-resting: var(--shadow-lg), var(--glass-highlight);
258
+ --glass-shadow-floating: var(--shadow-xl),
259
+ 0 0 0 0.5px color-mix(in srgb, var(--shadow-color) 5%, transparent),
260
+ var(--glass-highlight);
261
+ --glass-shadow-overlay: var(--shadow-2xl),
262
+ 0 0 0 0.5px color-mix(in srgb, var(--shadow-color) 8%, transparent),
263
+ var(--glass-highlight);
264
+ --glass-shadow: var(--glass-shadow-quiet);
265
+
266
+ /* ─────────────────────────────────────────────────────────────
267
+ AL-W1-α augmented — SPINE 8th tier (HOUSING register)
268
+
269
+ Closes the AK W2 chassis-spine architectural underclaim per
270
+ AL-X5 §4.1. The spine register is a polished SLEEVE, not glass:
271
+ NO backdrop-filter, NO plate opacity, hairline outer stroke,
272
+ interior radial vignette that subtly carries the phase-color
273
+ cascade. Consumed exclusively by `<InstrumentChassis variant="spine">`
274
+ at App-level mount paths (quiet-content routes).
275
+
276
+ The 4 tokens here cover the minimum viable substrate the SLIM
277
+ Y4/Y6/Y7 retention set ratified. The 35 rejected axes (saturate
278
+ band, edge-light per tier, depth-shadow per tier, tier-up macro)
279
+ stay rejected per the conservative-creation mandate. (BB.W-DEAD-SWEEP KEEP:
280
+ --glass-spine-opacity/-blur — no var() consumer, pinned by InstrumentChassis.spine-variant.test.ts; Batch-6 re-anchor.)
281
+ ───────────────────────────────────────────────────────────── */
282
+ --glass-spine-opacity: 0;
283
+ --glass-spine-blur: 0px;
284
+ --glass-spine-border: var(--surface-tint-8);
285
+ --glass-spine-vignette: radial-gradient(
286
+ ellipse at 50% 0%,
287
+ color-mix(in oklab, var(--phase-color, var(--surface-tint-8)) 8%, transparent),
288
+ transparent 60%
289
+ );
290
+
291
+ /* ─────────────────────────────────────────────────────────────
292
+ AL-W10 SLIM — UNDER-SHADOW recipe rungs
293
+
294
+ Per AL-X5 §4 + Y7 §3. iOS Liquid Glass surfaces carry a 0.5px
295
+ dark hairline along the bottom edge (reads as under-shadow /
296
+ glass thickness). The substrate `--hairline-under-shadow`
297
+ already publishes one quiet rung; the four-rung ladder here
298
+ names the SLIM retention set (Y4 §3.2 / Y6 §4.3) — `quiet`,
299
+ `default`, `vivid`, `spine` cover the consumer landings without
300
+ multiplying tokens per tier. The 3 hand-rolled literals at
301
+ `instrument-chassis.css:52`, `dock.css:279`, `dock.css:952`
302
+ retire to these.
303
+
304
+ Composes as a NON-INSET box-shadow layer alongside the existing
305
+ `--glass-shadow-*` recipe (the inset under-shadow stays at the
306
+ hand-rolled literal where it's load-bearing on chassis-internal
307
+ surfaces).
308
+ ───────────────────────────────────────────────────────────── */
309
+ --glass-under-shadow-quiet: 0 2px 8px -1px oklch(0 0 0 / 0.04);
310
+ --glass-under-shadow-default: 0 4px 16px -2px oklch(0 0 0 / 0.08);
311
+ --glass-under-shadow-vivid: 0 8px 32px -4px oklch(0 0 0 / 0.12);
312
+ --glass-under-shadow-spine: 0 1px 0 0 oklch(0 0 0 / 0.06);
313
+
314
+ /* Overlay scrim rungs — substrate-aware modal/dialog backdrop tints.
315
+ Three weights cover the deployed range: dialog-scroll (subtle),
316
+ canonical modal (default), drawer/full-cover (strong).
317
+
318
+ AY.W-PRIM-POLISH D3 — the scrim is its OWN identity token, NOT derived
319
+ from `--shadow-color`. A scrim's role is to RECEDE: it must pin to INK in
320
+ BOTH modes. The cartoon-shadow family rides `--shadow-color: var(--foreground)`
321
+ (correct — a shadow re-tints under `.dark` by construction), but a scrim
322
+ that does the same FLOODS the dark room with a cream fog (the old dark
323
+ overlay painted `srgb(0.91… / 0.5)`, a near-white wash that BRIGHTENED the
324
+ page at the modal moment). `--overlay-scrim-ink` is a fixed warm near-black
325
+ (the light-mode `--foreground` value), re-resolved verbatim in `.dark` so
326
+ the scrim recedes in both modes. Clean break, no alias (no-backwards-compat).
327
+ The `--shadow-color` / `--shadow-cartoon-*` family is UNTOUCHED. */
328
+ --overlay-scrim-ink: hsl(24 10% 10%);
329
+ --overlay-scrim: color-mix(in srgb, var(--overlay-scrim-ink) 50%, transparent);
330
+ --overlay-scrim-strong: color-mix(in srgb, var(--overlay-scrim-ink) 80%, transparent);
331
+ --overlay-scrim-subtle: color-mix(in srgb, var(--overlay-scrim-ink) 40%, transparent);
332
+
333
+ }