@mkbabb/glass-ui 3.12.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (436) hide show
  1. package/dist/CardAction-XH4YBVEK.js +158 -0
  2. package/dist/{CommandShortcut-CefCj5mt.js → CommandShortcut-DdtWXxOK.js} +58 -53
  3. package/dist/{ContextMenuSubContent-Bhg4f5jX.js → ContextMenuSubContent-B0Vs6atR.js} +4 -4
  4. package/dist/{DataTable-CUHMukiQ.js → DataTable-C464Zbqd.js} +99 -97
  5. package/dist/DialogContent-DDE6pQBU.js +103 -0
  6. package/dist/{DialogFooter-Gprw8H_A.js → DialogFooter-8eZbdmPc.js} +2 -2
  7. package/dist/FadingScroll-DwNnvKMs.js +76 -0
  8. package/dist/{HoverPopover-2LOIW34a.js → HoverPopover-Dpzwvc4t.js} +1 -1
  9. package/dist/IconChip-BDw1j5mu.js +54 -0
  10. package/dist/{IconTooltip-Cus0fvK0.js → IconTooltip-DSjasZIt.js} +1 -1
  11. package/dist/MetricBadge-BpC0R_Ec.js +79 -0
  12. package/dist/{Notification-DLMhblXR.js → Notification-DKjKsQq8.js} +10 -10
  13. package/dist/{NumberFieldContent-BbLOh8RU.js → NumberFieldContent-1VtwDSgf.js} +3 -3
  14. package/dist/PopoverContent-BTorlp--.js +127 -0
  15. package/dist/{Progress-iEuD9pxG.js → Progress-hAT4gqGH.js} +97 -77
  16. package/dist/{ScrollingText-BPP84wKo.js → ScrollingText-CUVFTWk2.js} +2 -2
  17. package/dist/{SelectScrollDownButton-T32cVFeM.js → SelectScrollDownButton-C1jb3b3K.js} +24 -8
  18. package/dist/{Switch-Ch-k3Rv-.js → Switch-Dr--uLGH.js} +2 -2
  19. package/dist/{Toaster-1rYWrmAm.js → Toaster-Bm_HQSpc.js} +55 -52
  20. package/dist/{ToggleGroupItem-COu_4IW4.js → ToggleGroupItem-Dzk9hWsF.js} +18 -22
  21. package/dist/animated-digit.js +3 -3
  22. package/dist/api/index.d.ts +10 -4
  23. package/dist/api.js +1 -1
  24. package/dist/aurora.js +113 -98
  25. package/dist/{badge-CaoFJzRb.js → badge-UILT_3pZ.js} +1 -1
  26. package/dist/badge.js +1 -1
  27. package/dist/{button-DN39cGqL.js → button-BNDWhAZb.js} +12 -12
  28. package/dist/button.js +1 -1
  29. package/dist/card.js +1 -1
  30. package/dist/carousel.d.ts +1 -1
  31. package/dist/carousel.js +101 -145
  32. package/dist/{check-BBKKKSTf.js → check-njhk-vfu.js} +1 -1
  33. package/dist/{chevron-down-BSkTP2aL.js → chevron-down-DKkxb4VV.js} +1 -1
  34. package/dist/{chevron-right-sDM0Yvrf.js → chevron-right-CPXbqQQz.js} +1 -1
  35. package/dist/{chevron-up-CCOD_FTz.js → chevron-up-n_24SqI-.js} +1 -1
  36. package/dist/coalesceMetric-5qIeZnTx.js +13 -0
  37. package/dist/collapsible.js +1 -1
  38. package/dist/{color-C5ls_QF7.js → color-DweYl7pE.js} +9 -7
  39. package/dist/color-swatch.d.ts +1 -0
  40. package/dist/color-swatch.js +47 -0
  41. package/dist/color.js +1 -1
  42. package/dist/command.js +1 -1
  43. package/dist/components/custom/animated-digit/AnimatedDigit.vue.d.ts +8 -0
  44. package/dist/components/custom/aurora/constants/presets.d.ts +16 -45
  45. package/dist/components/custom/aurora/constants/renderMode.d.ts +2 -0
  46. package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +1 -1
  47. package/dist/components/custom/aurora/constants/shaders/vangogh-medium.glsl.d.ts +1 -0
  48. package/dist/components/custom/color-swatch/ColorSwatch.vue.d.ts +22 -0
  49. package/dist/components/custom/color-swatch/index.d.ts +1 -0
  50. package/dist/components/custom/configurator/Configurator.vue.d.ts +19 -8
  51. package/dist/components/custom/configurator/ConfiguratorRow.vue.d.ts +16 -0
  52. package/dist/components/custom/constellation/Constellation.vue.d.ts +23 -143
  53. package/dist/components/custom/constellation/composables/createConstellationField.d.ts +41 -0
  54. package/dist/components/custom/constellation/composables/useConstellation.d.ts +26 -0
  55. package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +35 -0
  56. package/dist/components/custom/constellation/constants.d.ts +61 -0
  57. package/dist/components/custom/constellation/constellationDraw.d.ts +30 -0
  58. package/dist/components/custom/constellation/constellationField.d.ts +3 -403
  59. package/dist/components/custom/constellation/constellationInteraction.d.ts +132 -0
  60. package/dist/components/custom/constellation/constellationTypes.d.ts +369 -0
  61. package/dist/components/custom/constellation/index.d.ts +5 -2
  62. package/dist/components/custom/controls/DarkModeToggle.vue.d.ts +11 -0
  63. package/dist/components/custom/dock/DockRail.vue.d.ts +89 -0
  64. package/dist/components/custom/dock/DockSection.vue.d.ts +69 -0
  65. package/dist/components/custom/dock/DockSeparator.vue.d.ts +49 -1
  66. package/dist/components/custom/dock/DockTabButton.vue.d.ts +5 -6
  67. package/dist/components/custom/dock/GlassDock.vue.d.ts +5 -118
  68. package/dist/components/custom/dock/composables/dockMorphContext.d.ts +36 -0
  69. package/dist/components/custom/dock/composables/index.d.ts +1 -0
  70. package/dist/components/custom/dock/composables/useDockClickIntegrity.d.ts +23 -0
  71. package/dist/components/custom/dock/composables/useDockMorphWindow.d.ts +15 -0
  72. package/dist/components/custom/dock/composables/useDockOrientationMorph.d.ts +44 -0
  73. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +165 -0
  74. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +44 -0
  75. package/dist/components/custom/dock/constants.d.ts +83 -0
  76. package/dist/components/custom/dock/index.d.ts +5 -0
  77. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +15 -37
  78. package/dist/components/custom/fading-scroll/FadingScroll.vue.d.ts +25 -0
  79. package/dist/components/custom/fading-scroll/composables/useFadingScroll.d.ts +31 -0
  80. package/dist/components/custom/fading-scroll/constants.d.ts +19 -0
  81. package/dist/components/custom/fading-scroll/index.d.ts +2 -0
  82. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +7 -0
  83. package/dist/components/custom/fourier-field/index.d.ts +1 -1
  84. package/dist/components/custom/fourier-field/math.d.ts +34 -0
  85. package/dist/components/custom/fourier-field/presets.d.ts +54 -0
  86. package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +8 -0
  87. package/dist/components/custom/goo-blob/composables/buildMetaballProgram.d.ts +18 -0
  88. package/dist/components/custom/goo-blob/composables/uploadBlobUniforms.d.ts +41 -0
  89. package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +4 -3
  90. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +21 -8
  91. package/dist/components/custom/goo-blob/constants.d.ts +57 -0
  92. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -0
  93. package/dist/components/custom/handmark/brush.d.ts +33 -6
  94. package/dist/components/custom/handmark/{useHandMark.d.ts → composables/useHandMark.d.ts} +6 -4
  95. package/dist/components/custom/handmark/constants.d.ts +39 -0
  96. package/dist/components/custom/handmark/geometry.d.ts +14 -12
  97. package/dist/components/custom/handmark/index.d.ts +8 -2
  98. package/dist/components/custom/handmark/types.d.ts +9 -0
  99. package/dist/components/custom/icon-chip/IconChip.vue.d.ts +4 -0
  100. package/dist/components/custom/icon-chip/index.d.ts +2 -0
  101. package/dist/components/custom/icon-chip/types.d.ts +72 -0
  102. package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +17 -4
  103. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +37 -0
  104. package/dist/components/custom/labeled-field/LabeledSelect.vue.d.ts +6 -0
  105. package/dist/components/custom/labeled-field/LabeledSlider.vue.d.ts +6 -0
  106. package/dist/components/custom/labeled-field/LabeledSwitch.vue.d.ts +6 -0
  107. package/dist/components/custom/metric-badge/MetricBadge.vue.d.ts +11 -18
  108. package/dist/components/custom/metric-badge/index.d.ts +1 -0
  109. package/dist/components/custom/metric-cell/MetricCell.vue.d.ts +15 -4
  110. package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +6 -4
  111. package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +39 -0
  112. package/dist/components/custom/pager-dots/index.d.ts +2 -0
  113. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +20 -25
  114. package/dist/components/custom/tabs/composables/useTabIndicator.d.ts +30 -21
  115. package/dist/components/custom/tabs/constants.d.ts +18 -0
  116. package/dist/components/custom/tabs/index.d.ts +1 -1
  117. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +14 -0
  118. package/dist/components/ui/_shared/index.d.ts +2 -0
  119. package/dist/components/ui/_shared/menuItemVariants.d.ts +19 -0
  120. package/dist/components/ui/_shared/useSurfaceAxis.d.ts +41 -0
  121. package/dist/components/ui/card/Card.vue.d.ts +16 -4
  122. package/dist/components/ui/carousel/index.d.ts +0 -1
  123. package/dist/components/ui/command/Command.vue.d.ts +3 -0
  124. package/dist/components/ui/dialog/DialogContent.vue.d.ts +8 -3
  125. package/dist/components/ui/drawer/Drawer.vue.d.ts +1 -0
  126. package/dist/components/ui/drawer/DrawerContent.vue.d.ts +5 -0
  127. package/dist/components/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +2 -2
  128. package/dist/components/ui/index.d.ts +0 -1
  129. package/dist/components/ui/metric-pill/MetricPill.vue.d.ts +6 -3
  130. package/dist/components/ui/popover/PopoverContent.vue.d.ts +3 -0
  131. package/dist/components/ui/progress/ProgressSectioned.vue.d.ts +14 -3
  132. package/dist/components/ui/select/SelectTrigger.vue.d.ts +27 -4
  133. package/dist/components/ui/sheet/SheetContent.vue.d.ts +6 -0
  134. package/dist/components/ui/skeleton/Skeleton.vue.d.ts +3 -0
  135. package/dist/components/ui/slider/index.d.ts +22 -19
  136. package/dist/components/ui/tabs/TabsIndicator.vue.d.ts +4 -1
  137. package/dist/components/ui/toast/use-toast.d.ts +2 -2
  138. package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
  139. package/dist/components/ui/toggle/index.d.ts +1 -1
  140. package/dist/components/ui/toggle-group/ToggleGroup.vue.d.ts +1 -7
  141. package/dist/components/ui/toggle-group/ToggleGroupItem.vue.d.ts +1 -3
  142. package/dist/components/ui/toggle-group/toggleGroupContext.d.ts +0 -13
  143. package/dist/composables/color/index.d.ts +12 -0
  144. package/dist/composables/dark/useGlobalDark.d.ts +14 -12
  145. package/dist/composables/glass/index.d.ts +0 -1
  146. package/dist/composables/glass/useGlassBackdropLuminance.d.ts +59 -0
  147. package/dist/composables/glass/useSpecularTracking.d.ts +12 -3
  148. package/dist/composables/motion/core/index.d.ts +1 -1
  149. package/dist/composables/motion/curves.d.ts +48 -0
  150. package/dist/composables/motion/index.d.ts +2 -0
  151. package/dist/composables/motion/springPresets.d.ts +33 -0
  152. package/dist/composables/motion/suite.d.ts +2 -0
  153. package/dist/composables/motion/useLiquidFlex.d.ts +85 -0
  154. package/dist/composables/motion/useSpringMount.d.ts +1 -1
  155. package/dist/composables/motion/useViewTransition.d.ts +36 -1
  156. package/dist/configurator.js +1 -1
  157. package/dist/confirm-dialog.js +3 -3
  158. package/dist/constellation.js +373 -261
  159. package/dist/context-menu.js +2 -2
  160. package/dist/controls.js +48 -14
  161. package/dist/dark.js +1 -1
  162. package/dist/data-table.js +1 -1
  163. package/dist/dialog.js +2 -2
  164. package/dist/dock.js +901 -372
  165. package/dist/dockContext-Bu1Avy-a.js +17 -0
  166. package/dist/dom.js +5 -5
  167. package/dist/{dropdown-menu-D77jX6Df.js → dropdown-menu-BJ7E9js_.js} +11 -8
  168. package/dist/dropdown-menu.js +1 -1
  169. package/dist/expandable-container.js +44 -81
  170. package/dist/fading-scroll.d.ts +1 -0
  171. package/dist/fading-scroll.js +2 -0
  172. package/dist/forms.js +5 -5
  173. package/dist/fourier-field.js +140 -104
  174. package/dist/fourier-math.js +2 -2
  175. package/dist/glass-panel.js +90 -21
  176. package/dist/glass-ui.css +1 -1
  177. package/dist/glass-ui.js +230 -236
  178. package/dist/goo-blob.js +264 -228
  179. package/dist/handmark.js +203 -159
  180. package/dist/header-ribbon.js +1 -1
  181. package/dist/hover-card.js +1 -1
  182. package/dist/hover-popover.js +1 -1
  183. package/dist/icon-chip.d.ts +1 -0
  184. package/dist/icon-chip.js +2 -0
  185. package/dist/icon-tooltip.js +1 -1
  186. package/dist/index.d.ts +3 -5
  187. package/dist/instrument-chassis.js +1 -1
  188. package/dist/keyboard.js +1 -1
  189. package/dist/label.js +1 -1
  190. package/dist/labeled-field.js +28 -18
  191. package/dist/{math-DTpRVC0e.js → math-DeuJwLFx.js} +26 -2
  192. package/dist/{menuItemVariants-CCoBNkU5.js → menuItemVariants-DWRQXBxJ.js} +10 -4
  193. package/dist/metric-badge.js +1 -1
  194. package/dist/metric-cell.js +29 -22
  195. package/dist/metric-stack.js +35 -34
  196. package/dist/{minimize-2-lcXOuc6V.js → minimize-2-BV31Ob_h.js} +1 -1
  197. package/dist/motion-core.js +32 -136
  198. package/dist/motion-curves.d.ts +1 -0
  199. package/dist/motion-curves.js +130 -0
  200. package/dist/motion.js +38 -37
  201. package/dist/notification.js +1 -1
  202. package/dist/number-field.js +1 -1
  203. package/dist/pager-dots.d.ts +1 -0
  204. package/dist/pager-dots.js +91 -0
  205. package/dist/paper-backdrop.js +1 -1
  206. package/dist/popover.js +1 -1
  207. package/dist/progress.js +1 -1
  208. package/dist/pulse.js +1 -1
  209. package/dist/reactive.js +2 -2
  210. package/dist/scrolling-text.js +1 -1
  211. package/dist/{search-nbkvr2dC.js → search-BSGrf2Sk.js} +1 -1
  212. package/dist/search.js +10 -10
  213. package/dist/select.js +3 -3
  214. package/dist/separator.js +1 -1
  215. package/dist/sheet-CquRYOAw.js +218 -0
  216. package/dist/sheet.js +1 -1
  217. package/dist/{slider-ClgpP7EB.js → slider-DQ95MET2.js} +8 -8
  218. package/dist/slider.js +1 -1
  219. package/dist/sortable-list.js +3 -3
  220. package/dist/springPresets-WXaLbu8u.js +40 -0
  221. package/dist/stacked-icons.js +6 -6
  222. package/dist/styles/animations.css +25 -125
  223. package/dist/styles/cards.css +55 -0
  224. package/dist/styles/components.css +4 -1
  225. package/dist/styles/configurator.css +77 -0
  226. package/dist/styles/dock/density.css +19 -0
  227. package/dist/styles/dock/layer-group.css +83 -25
  228. package/dist/styles/dock/layers.css +23 -1
  229. package/dist/styles/dock/morph-bridge.css +123 -0
  230. package/dist/styles/dock/morph.css +175 -45
  231. package/dist/styles/dock/overflow.css +66 -1
  232. package/dist/styles/dock/rail-extend.css +397 -0
  233. package/dist/styles/dock/section.css +59 -0
  234. package/dist/styles/dock/shell.css +97 -110
  235. package/dist/styles/dock-controls/dark-mode-toggle.css +109 -0
  236. package/dist/styles/dock-controls/icon-button.css +143 -0
  237. package/dist/styles/dock-controls/tab-button.css +143 -0
  238. package/dist/styles/dock-controls/touch-floor.css +94 -0
  239. package/dist/styles/dock-controls/triggers.css +135 -0
  240. package/dist/styles/dock-controls.css +30 -595
  241. package/dist/styles/dock.css +8 -3
  242. package/dist/styles/drawer.css +48 -0
  243. package/dist/styles/feedback-tone.css +104 -0
  244. package/dist/styles/floating-panel.css +17 -0
  245. package/dist/styles/glass/a11y-fallback.css +245 -0
  246. package/dist/styles/glass/ladder.css +383 -0
  247. package/dist/styles/glass/material.css +238 -0
  248. package/dist/styles/glass/progress-rail.css +78 -0
  249. package/dist/styles/glass/squircle.css +66 -0
  250. package/dist/styles/glass/surface-axis.css +113 -0
  251. package/dist/styles/glass/surfaces.css +382 -0
  252. package/dist/styles/glass-refract.css +2 -0
  253. package/dist/styles/glass.css +34 -1188
  254. package/dist/styles/hover-popover.css +2 -0
  255. package/dist/styles/icon-chip.css +149 -0
  256. package/dist/styles/index.css +94 -18
  257. package/dist/styles/instrument-chassis.css +46 -0
  258. package/dist/styles/menu.css +127 -0
  259. package/dist/styles/paper.css +2 -68
  260. package/dist/styles/segmented-tabs.css +346 -0
  261. package/dist/styles/select.css +50 -0
  262. package/dist/styles/theme/bridges.css +347 -0
  263. package/dist/styles/theme/dark.css +7 -0
  264. package/dist/styles/theme/literals.css +94 -0
  265. package/dist/styles/theme/radius.css +95 -0
  266. package/dist/styles/theme.css +26 -529
  267. package/dist/styles/tokens/color-radius.css +287 -0
  268. package/dist/styles/tokens/dark-arm.css +308 -0
  269. package/dist/styles/tokens/glass.css +500 -0
  270. package/dist/styles/tokens/light-dark.css +187 -0
  271. package/dist/styles/tokens/offsets-sizing.css +562 -0
  272. package/dist/styles/tokens/property-regs.css +162 -0
  273. package/dist/styles/tokens/scale-paper.css +409 -0
  274. package/dist/styles/tokens/scheme-motion.css +352 -0
  275. package/dist/styles/tokens/shadow.css +166 -0
  276. package/dist/styles/tokens.css +22 -2360
  277. package/dist/styles/transitions.css +7 -7
  278. package/dist/styles/typography/scale.css +153 -0
  279. package/dist/styles/typography/semantic.css +220 -0
  280. package/dist/styles/typography/utilities.css +159 -0
  281. package/dist/styles/typography.css +23 -453
  282. package/dist/styles/utilities/a11y-overrides.css +169 -0
  283. package/dist/styles/utilities/animate.css +26 -0
  284. package/dist/styles/utilities/base.css +541 -0
  285. package/dist/styles/utilities/btn.css +218 -0
  286. package/dist/styles/utilities/components.css +317 -0
  287. package/dist/styles/utilities.css +19 -1318
  288. package/dist/styles/view-transition.css +4 -52
  289. package/dist/switch.js +1 -1
  290. package/dist/tabs.js +161 -181
  291. package/dist/timeline.js +2 -2
  292. package/dist/toast.js +1 -1
  293. package/dist/toggle-chip.js +3 -1
  294. package/dist/toggle-group.js +1 -1
  295. package/dist/tooltip.js +1 -1
  296. package/dist/typewriter.js +1 -1
  297. package/dist/{useAnimatedNumber-Bcpy5Etf.js → useAnimatedNumber-C_3wZLx4.js} +1 -1
  298. package/dist/useConfiguratorState-kiIlun8I.js +303 -0
  299. package/dist/useLiquidFlex-C12hXwOZ.js +30 -0
  300. package/dist/useRAFLoop-CdwJ7284.js +109 -0
  301. package/dist/{useScrollProgress-CffFGLa5.js → useScrollProgress-D7bYU2RK.js} +1 -1
  302. package/dist/useSpecularTracking-Bo5su68i.js +32 -0
  303. package/dist/useSpringMount-CvopqiFr.js +108 -0
  304. package/dist/useSurfaceAxis-CMnF2zHb.js +7 -0
  305. package/dist/{useTouchGate-WFyJYsth.js → useTouchGate-28Tk2-t2.js} +1 -1
  306. package/dist/useViewTransition-COsPjQVZ.js +47 -0
  307. package/dist/utils/coalesceMetric.d.ts +29 -0
  308. package/dist/utils/index.d.ts +1 -0
  309. package/dist/vReveal-D9k0jADx.js +10 -0
  310. package/dist/watercolor-dot.js +22 -13
  311. package/dist/{x-Dfsegz9Y.js → x-BUwTKe50.js} +1 -1
  312. package/package.json +134 -50
  313. package/src/styles/animations.css +25 -125
  314. package/src/styles/cards.css +53 -0
  315. package/src/styles/configurator.css +77 -0
  316. package/src/styles/dock/density.css +19 -0
  317. package/src/styles/dock/layer-group.css +83 -25
  318. package/src/styles/dock/layers.css +23 -1
  319. package/src/styles/dock/morph-bridge.css +123 -0
  320. package/src/styles/dock/morph.css +175 -45
  321. package/src/styles/dock/overflow.css +66 -1
  322. package/src/styles/dock/rail-extend.css +397 -0
  323. package/src/styles/dock/section.css +59 -0
  324. package/src/styles/dock/shell.css +97 -110
  325. package/src/styles/dock-controls/dark-mode-toggle.css +109 -0
  326. package/src/styles/dock-controls/icon-button.css +143 -0
  327. package/src/styles/dock-controls/tab-button.css +143 -0
  328. package/src/styles/dock-controls/touch-floor.css +94 -0
  329. package/src/styles/dock-controls/triggers.css +135 -0
  330. package/src/styles/dock-controls.css +30 -595
  331. package/src/styles/dock.css +8 -3
  332. package/src/styles/drawer.css +42 -0
  333. package/src/styles/feedback-tone.css +104 -0
  334. package/src/styles/floating-panel.css +15 -0
  335. package/src/styles/glass/a11y-fallback.css +245 -0
  336. package/src/styles/glass/ladder.css +383 -0
  337. package/src/styles/glass/material.css +238 -0
  338. package/src/styles/glass/progress-rail.css +78 -0
  339. package/src/styles/glass/squircle.css +66 -0
  340. package/src/styles/glass/surface-axis.css +113 -0
  341. package/src/styles/glass/surfaces.css +382 -0
  342. package/src/styles/glass.css +34 -1188
  343. package/src/styles/icon-chip.css +149 -0
  344. package/src/styles/index.css +93 -17
  345. package/src/styles/instrument-chassis.css +42 -0
  346. package/src/styles/menu.css +127 -0
  347. package/src/styles/paper.css +2 -68
  348. package/src/styles/segmented-tabs.css +340 -0
  349. package/src/styles/select.css +50 -0
  350. package/src/styles/theme/bridges.css +347 -0
  351. package/src/styles/theme/dark.css +7 -0
  352. package/src/styles/theme/literals.css +94 -0
  353. package/src/styles/theme/radius.css +95 -0
  354. package/src/styles/theme.css +26 -529
  355. package/src/styles/tokens/color-radius.css +287 -0
  356. package/src/styles/tokens/dark-arm.css +308 -0
  357. package/src/styles/tokens/glass.css +500 -0
  358. package/src/styles/tokens/light-dark.css +187 -0
  359. package/src/styles/tokens/offsets-sizing.css +562 -0
  360. package/src/styles/tokens/property-regs.css +162 -0
  361. package/src/styles/tokens/scale-paper.css +409 -0
  362. package/src/styles/tokens/scheme-motion.css +352 -0
  363. package/src/styles/tokens/shadow.css +166 -0
  364. package/src/styles/tokens.css +22 -2360
  365. package/src/styles/transitions.css +7 -7
  366. package/src/styles/typography/scale.css +153 -0
  367. package/src/styles/typography/semantic.css +220 -0
  368. package/src/styles/typography/utilities.css +159 -0
  369. package/src/styles/typography.css +23 -453
  370. package/src/styles/utilities/a11y-overrides.css +169 -0
  371. package/src/styles/utilities/animate.css +26 -0
  372. package/src/styles/utilities/base.css +541 -0
  373. package/src/styles/utilities/btn.css +218 -0
  374. package/src/styles/utilities/components.css +317 -0
  375. package/src/styles/utilities.css +19 -1318
  376. package/src/styles/view-transition.css +4 -52
  377. package/dist/CardAction-DuArVky-.js +0 -157
  378. package/dist/DeckProgress-Dmk4_AKN.js +0 -23
  379. package/dist/DialogContent-BRkT1cjP.js +0 -100
  380. package/dist/InstrumentRail-CUJ05YVG.js +0 -44
  381. package/dist/MetricBadge-BZVWIxNy.js +0 -80
  382. package/dist/PopoverContent-BId6ggf_.js +0 -121
  383. package/dist/TabsList-B8CVOQPC.js +0 -101
  384. package/dist/components/custom/deck-progress/DeckProgress.vue.d.ts +0 -27
  385. package/dist/components/custom/deck-progress/index.d.ts +0 -2
  386. package/dist/components/custom/dialog-native/GlassDialogNative.vue.d.ts +0 -57
  387. package/dist/components/custom/dialog-native/index.d.ts +0 -1
  388. package/dist/components/custom/instrument-rail/InstrumentRail.vue.d.ts +0 -91
  389. package/dist/components/custom/instrument-rail/index.d.ts +0 -2
  390. package/dist/components/ui/carousel/CarouselDots.vue.d.ts +0 -4
  391. package/dist/composables/motion/useRouteTransition.d.ts +0 -42
  392. package/dist/deck-progress.d.ts +0 -1
  393. package/dist/deck-progress.js +0 -2
  394. package/dist/dockContext-BKeIMmNk.js +0 -9
  395. package/dist/instrument-rail.d.ts +0 -1
  396. package/dist/instrument-rail.js +0 -2
  397. package/dist/sheet-VZEtNFvO.js +0 -214
  398. package/dist/styles/instrument-rail.css +0 -127
  399. package/dist/useConfiguratorState-DxAqksK6.js +0 -287
  400. package/dist/useGlassRenderer-D7YGOYiM.js +0 -69
  401. package/dist/useSpecularTracking-BVRZsRHA.js +0 -26
  402. package/dist/useSpringMount-BJSHcLl3.js +0 -113
  403. package/dist/useViewTransition-DaN5Zrox.js +0 -21
  404. package/dist/vReveal-zUIQk-rJ.js +0 -53
  405. package/src/styles/instrument-rail.css +0 -127
  406. /package/dist/{CollapsibleContent-CP9qF1v4.js → CollapsibleContent-C_s6fG7r.js} +0 -0
  407. /package/dist/{ContextMenuContent-DDa0v27s.js → ContextMenuContent-ON3x7cuk.js} +0 -0
  408. /package/dist/{HoverCardContent-B6CcQ8He.js → HoverCardContent-DkMaQzH5.js} +0 -0
  409. /package/dist/{Input-xuDwALQR.js → Input-DVG_J0ne.js} +0 -0
  410. /package/dist/{InstrumentChassis-C2f6cBaQ.js → InstrumentChassis-UUJX0-mW.js} +0 -0
  411. /package/dist/{Label-zRfbQdCn.js → Label-Ck9SWEKM.js} +0 -0
  412. /package/dist/{ModalOverlay-B1GkAjNb.js → ModalOverlay-CkPRRgl_.js} +0 -0
  413. /package/dist/{PaperBackdrop-CqwjnfLv.js → PaperBackdrop-nBKe0vkB.js} +0 -0
  414. /package/dist/{SelectGroup-BFiod7X2.js → SelectGroup-Dcczq44n.js} +0 -0
  415. /package/dist/{SelectSeparator-C4Ql0gzV.js → SelectSeparator-DK2y1Bun.js} +0 -0
  416. /package/dist/{Separator-D7sD7RKj.js → Separator-BArl4OaB.js} +0 -0
  417. /package/dist/{TooltipProvider-CmZzCuaG.js → TooltipProvider-B3MkB_8P.js} +0 -0
  418. /package/dist/{_plugin-vue_export-helper-ok8pgSl5.js → _plugin-vue_export-helper-CBt_VvXa.js} +0 -0
  419. /package/dist/{compile-BOXjLUxu.js → compile-EXXzEr1q.js} +0 -0
  420. /package/dist/{constants-yKeKnE84.js → constants-BPOqYJAm.js} +0 -0
  421. /package/dist/{createContext-B44Sah_H.js → createContext-B2RaZ-b8.js} +0 -0
  422. /package/dist/{createLucideIcon-B6uNAU9G.js → createLucideIcon-DydS2qgk.js} +0 -0
  423. /package/dist/{presets-BP_ALM0m.js → presets-BW2b-fr1.js} +0 -0
  424. /package/dist/{prng-D27-B3tK.js → prng-Cg22zv8g.js} +0 -0
  425. /package/dist/{supportsCssTimeline-C5oe0lnD.js → supportsCssTimeline-BWenxvHU.js} +0 -0
  426. /package/dist/{useGlobalDark-CAhOXNLO.js → useGlobalDark-C28t0VWJ.js} +0 -0
  427. /package/dist/{useIntersectionPause-Cck5Uxk8.js → useIntersectionPause-Bj4sPkMh.js} +0 -0
  428. /package/dist/{useInterval-Dsmqwi03.js → useInterval-CNdua40W.js} +0 -0
  429. /package/dist/{useKeyboardShortcuts-CyIYrndH.js → useKeyboardShortcuts-BXWXOZ-9.js} +0 -0
  430. /package/dist/{useResizeObserver-CWCbk5Px.js → useResizeObserver-V6nq5gJb.js} +0 -0
  431. /package/dist/{useResolveTokenColor-r9pnNjqK.js → useResolveTokenColor-NUG2zYAW.js} +0 -0
  432. /package/dist/{useSortable-C8ReQ50P.js → useSortable-BVqlJRBR.js} +0 -0
  433. /package/dist/{useTextHighlight-CWEi25hf.js → useTextHighlight-NmBM5V_4.js} +0 -0
  434. /package/dist/{useTimer-3xqf_54b.js → useTimer-B_PAasDL.js} +0 -0
  435. /package/dist/{useUserInvalidAria-DoJKMZ3s.js → useUserInvalidAria-CDfJuakL.js} +0 -0
  436. /package/dist/{useViewportReady-RIr5Wgkh.js → useViewportReady-CvBcCYDf.js} +0 -0
@@ -0,0 +1,500 @@
1
+ /* tokens/glass.css
2
+ §8 glassmorphism — the five-tier surface ladder (bg/blur/border/shadow rungs + the glass-level + tint axes).
3
+ Carved from the tokens.css cascade root; @import-ed by tokens.css in
4
+ cascade order. Same :root cascade context as its siblings. */
5
+ :root {
6
+ /* ═══════════════════════════════════════════════
7
+ §8 GLASSMORPHISM — Five-tier surface ladder (v0.8.0)
8
+
9
+ Tier semantics, alpha-monotonic:
10
+ wash ~0.30α + light blur (was `subtle`)
11
+ quiet ~0.50α + medium blur (the formerly missing rung)
12
+ resting ~0.65α + canonical blur (was `default`; the speedtest plate)
13
+ floating ~0.80α + heavier blur (was `elevated`)
14
+ overlay ~0.95α + heaviest blur (NEW; modal-over-modal)
15
+
16
+ v0.8.0 retires the four-tier `subtle | default | medium | elevated`
17
+ ladder outright. No legacy aliases. Consumers migrate at the same
18
+ breaking change. R3-spec §A.
19
+ ═══════════════════════════════════════════════ */
20
+
21
+ /* Opacity primitives */
22
+ --glass-opacity-wash: 0.30;
23
+ --glass-opacity-quiet: 0.50;
24
+ --glass-opacity-resting: 0.65;
25
+ --glass-opacity-floating: 0.80;
26
+ --glass-opacity-overlay: 0.95;
27
+
28
+ /* Blur primitives. The radii here feather the dock + meter card to a
29
+ barely-perceptible diffusion that lets the substrate behind it bleed
30
+ through cleanly while keeping hero typography crisp at meter scale.
31
+ The resting blur sits at 10px so a glass plate reads as a diffusion
32
+ without consumer-side override.
33
+
34
+ BA.W-GLASS-CAL Unit 1 — the ladder dialed back ~15-20% UNIFORMLY (the
35
+ user's "a hair too much" over-diffusion): quiet 10→8, resting 12→10,
36
+ floating 16→13, overlay 15→13, dock 11→9; wash stays 1px (sub-perceptual).
37
+ The pull is proportional (it preserves tier separation) and keeps every
38
+ rung in the AV.W7-F2 8-15px band — the backdrop's structure reads a hair
39
+ more through the plate while the glass still reads unmistakably as glass.
40
+ The radius axis ONLY: `--glass-level` + every `saturate()`/`brightness()`
41
+ companion below are UNTOUCHED (the W-DARK-MATERIAL dark-recipe saturate/
42
+ brightness companions preserved — radius-only, the gate's B3 assert). */
43
+ --glass-blur-wash-radius: 1px;
44
+ --glass-blur-quiet-radius: 8px;
45
+ --glass-blur-resting-radius: 10px;
46
+ --glass-blur-floating-radius: 13px;
47
+ /* AV.W7 F2 — clamped from 24px into the 8–15px budget band. A blur radius
48
+ past ~20px is exponentially costlier (`backdrop-filter` is glass-ui's most
49
+ expensive idiom — the radius is the dominant cost). 15px is the band
50
+ ceiling; BA.W-GLASS-CAL dialed the overlay rung to 13px (off 15) so the
51
+ whole ladder pulls back in proportion. A high-resolution display restores
52
+ a richer wash via the @media arm in light-dark.css — the cost is amortised
53
+ by the extra device pixels. */
54
+ --glass-blur-overlay-radius: 13px;
55
+ /* Dock blur radius — 9px (BA.W-GLASS-CAL, off 11), paired with the 0.42
56
+ opacity below: a crisp glass pill (the iOS Control Center register), not a
57
+ feathered wash. The dock composes `blur()` only (no saturate); the
58
+ `prefers-reduced-transparency` bracket at glass.css maps it to the
59
+ opacity-only register. */
60
+ --glass-blur-dock-radius: 9px;
61
+
62
+ /* AX.W54 — each blur radius is scaled by the ONE `--glass-level` scalar (in
63
+ lockstep with the opacity seam above): level=1 byte-identical; level=0 →
64
+ blur(0) (the clean solid floor with the opacity); level>1 → more diffusion.
65
+ The per-rung `saturate()`/`brightness()` companions are UNTOUCHED (the level
66
+ scales the RADIUS, not the saturation — W52's calm light-concentration). */
67
+ --glass-blur-wash: blur(calc(var(--glass-blur-wash-radius) * var(--glass-level))) saturate(1.05);
68
+ /* AV.W15 M1 — the `quiet` rung gained `saturate(1.05) brightness(1.02)`
69
+ so the lower ladder reads with the same saturation life as `resting`+
70
+ (Apple: Liquid Glass concentrates light, it does not desaturate). The
71
+ `brightness(1.02)` is the small lift the spec names — it lands `quiet`
72
+ between bare `wash` and `resting` without over-brightening the rung.
73
+ The `prefers-reduced-transparency: reduce` bracket at glass.css maps
74
+ `--glass-blur-quiet: none`, so this whole chain drops with the blur. */
75
+ --glass-blur-quiet: blur(calc(var(--glass-blur-quiet-radius) * var(--glass-level))) saturate(1.05) brightness(1.02);
76
+ --glass-blur-resting: blur(calc(var(--glass-blur-resting-radius) * var(--glass-level))) saturate(1.05);
77
+ /* AX.W52 D19 — the floating/overlay backdrop saturate tamed from 1.4/1.5 to a
78
+ gentle ~1.18/1.2 (real liquid glass concentrates light ~1.1–1.2×; the prior
79
+ 1.4–1.5× over-juiced the bleed-through into a garish smear over a colored
80
+ substrate). wash/quiet/resting already sit at 1.05 — untouched. */
81
+ --glass-blur-floating: blur(calc(var(--glass-blur-floating-radius) * var(--glass-level))) saturate(1.18);
82
+ --glass-blur-overlay: blur(calc(var(--glass-blur-overlay-radius) * var(--glass-level))) saturate(1.2);
83
+ /* Dock blur composes blur() only — no saturate. */
84
+ --glass-blur-dock: blur(calc(var(--glass-blur-dock-radius) * var(--glass-level)));
85
+
86
+ /* AX.W52 — the GLASS BUTTON blur. The `glass`/`glass-wash` button variants
87
+ compose the `.glass-wash` tier (`--glass-blur-wash` = blur(1px)) — a
88
+ sub-perceptual diffusion authored for a small detail TILE, not a button
89
+ the user reads as "glass." A button is a hero control: it wants a real
90
+ glass blur. `--glass-blur-btn` lifts the variant onto the `quiet`-tier
91
+ radius (10px — a genuine liquid-glass diffusion) with the same gentle
92
+ `saturate(1.05) brightness(1.02)` light-concentration the quiet rung
93
+ carries (NOT a colour-juice). The wash TILE tier (MetricCell et al.) keeps
94
+ its 1px — only the glass BUTTON variants reach for this. */
95
+ --glass-blur-btn: blur(calc(var(--glass-blur-quiet-radius) * var(--glass-level))) saturate(1.05) brightness(1.02);
96
+
97
+ /* Dock-specific opacity (0.42) — lighter than `resting` (0.65) so the dock
98
+ reads as a translucent overlay rather than a panel, backdrop bleed
99
+ visible through it. Consumed by `.glass-dock` via `--glass-bg-dock`. The
100
+ value holds the surface register against the tightened 11px blur so the
101
+ dock reads as painted chrome, not a frosted ghost. */
102
+ --glass-opacity-dock: 0.42;
103
+
104
+ /* Dock foreground over an animated backdrop. A dock floating over an
105
+ aurora/animated surface (`value.js` dock-over-aurora, a slides routed
106
+ control, bbnf) sits on a mid-luminance, shifting field where the muted
107
+ default fg can drop below contrast. This token is the dock control's
108
+ foreground base — a complete `hsl()` color consumed via `var()`; for the
109
+ muted icon weight the control mixes it down with `--opacity-icon-muted`.
110
+ Defaults to `var(--foreground)` so the dock paints byte-identically to
111
+ today; a consumer overrides it per-backdrop (e.g. a near-white over a
112
+ dark aurora) without touching library source.
113
+
114
+ AX.W55 — this is the FOREGROUND half of the adaptive story, now reconciled
115
+ INTO the `--glass-backdrop` probe (not a third fork): under the bright bucket
116
+ (`@container style(--glass-backdrop: light)` in dock.css) it re-points toward
117
+ the contrast-clearing ink, and an `@supports (color: contrast-color(…))`
118
+ block flips it natively on supporting engines. The `var(--foreground)`
119
+ default keeps the zero-delta rest state. */
120
+ --dock-fg-on-aurora: var(--foreground);
121
+
122
+ /* Chassis-specific opacity. Looser than `default` (0.50) so the
123
+ <InstrumentChassis> surface reads as glass-over-aurora at its
124
+ 64rem-wide footprint; the default tier stays calibrated for cards.
125
+ Mirrors the dock-tier pattern (own opacity primitive + composed bg).
126
+ Light 0.28 sits in the gap between dock (0.32) and a hypothetical
127
+ wash tier; dark 0.36 mirrors the +0.08 step the dock takes from
128
+ `glass-bg-medium` (0.65) down to its own 0.32. */
129
+ --glass-opacity-chassis: 0.28;
130
+
131
+ /* Composed backgrounds — AX.W54: the opacity is threaded through the ONE
132
+ `--glass-level` clarity scalar. Each rung's effective alpha is
133
+ `1 - (1 - <rung-opacity>) * --glass-level`: at level=1 it collapses to the
134
+ hand-tuned `<rung-opacity>` (byte-identical); at level=0 it resolves `1`
135
+ (solid `--card` — the opaque escape); at level>1 it goes clearer. ONE
136
+ expression, the same seven rungs. */
137
+ --glass-bg-wash: color-mix(in srgb, var(--card) calc((1 - (1 - var(--glass-opacity-wash)) * var(--glass-level)) * 100%), transparent);
138
+ --glass-bg-quiet: color-mix(in srgb, var(--card) calc((1 - (1 - var(--glass-opacity-quiet)) * var(--glass-level)) * 100%), transparent);
139
+ --glass-bg-resting: color-mix(in srgb, var(--card) calc((1 - (1 - var(--glass-opacity-resting)) * var(--glass-level)) * 100%), transparent);
140
+ --glass-bg-floating: color-mix(in srgb, var(--card) calc((1 - (1 - var(--glass-opacity-floating)) * var(--glass-level)) * 100%), transparent);
141
+ --glass-bg-overlay: color-mix(in srgb, var(--card) calc((1 - (1 - var(--glass-opacity-overlay)) * var(--glass-level)) * 100%), transparent);
142
+ /* The dock bg ALSO rides the oklab tint seam (AX.W54 amendment): the same
143
+ `color-mix(in oklab, …, --glass-tint-source --glass-tint-strength)` wrapper
144
+ the rungs reach for, ZERO-delta at `--glass-tint-strength: 0%` — so W55's
145
+ adaptive darken can reach the dock (the G2 over-light surface) without a
146
+ second hand-rolled recipe. */
147
+ --glass-bg-dock: color-mix(in oklab, color-mix(in srgb, var(--card) calc((1 - (1 - var(--glass-opacity-dock)) * var(--glass-level)) * 100%), transparent), var(--glass-tint-source) var(--glass-tint-strength));
148
+ --glass-bg-chassis: color-mix(in srgb, var(--card) calc((1 - (1 - var(--glass-opacity-chassis)) * var(--glass-level)) * 100%), transparent);
149
+
150
+ /* Composed borders — foreground-tinted. BA.W-NO-GRAY L3 — the warm RIM
151
+ re-anchor (G9). The rim IS warm (it rides --foreground, hsl-24 warm ink),
152
+ but at 8-12% α over a near-white plate it was a near-invisible hairline —
153
+ the plate had no carved silhouette, reading as a borderless gray rectangle
154
+ (the user's "no gray ... for cards"). The α lifts a few points per rung so
155
+ the warm hairline CARVES the silhouette (the WWDC25 "rim that defines the
156
+ silhouette" device, on the warm-ink register). Still bounded low — the rim
157
+ is a whisper that defines the edge, never a hard rule. The source stays
158
+ --foreground (the warm-ink tint, NOT a new color); only the presence lifts. */
159
+ --glass-border-wash: color-mix(in srgb, var(--foreground) 11%, transparent);
160
+ --glass-border-quiet: color-mix(in srgb, var(--foreground) 13%, transparent);
161
+ --glass-border-resting: color-mix(in srgb, var(--foreground) 16%, transparent);
162
+ --glass-border-floating: color-mix(in srgb, var(--foreground) 19%, transparent);
163
+ --glass-border-overlay: color-mix(in srgb, var(--foreground) 22%, transparent);
164
+ --glass-border-dock: color-mix(in srgb, var(--foreground) 14%, transparent);
165
+ --glass-border: var(--glass-border-quiet);
166
+ --glass-border-strong: var(--glass-border-floating);
167
+
168
+ /* ── The control REST register (BA.W-SURFACE-AXIS scope 7) ────────────────
169
+ ONE shared resting surface for the FORM family — Input/Textarea/Select/
170
+ Combobox/NumberField/TagsInput — so the whole control band is ONE material
171
+ at rest, not a per-control fork. Input rode the warm near-white `quiet`
172
+ glass register while Select rode the lighter `glass-wash` gray (live-probed
173
+ at R10 SM-3/NF-4: input `oklab(0.986)` near-white vs select `oklab(0.636)`
174
+ gray — the "no gray" bar at a control-family seam). The unified register
175
+ adopts the WARMER input rung (the no-gray choice); the per-control recipes
176
+ re-point to read these tokens, no per-control fork. The W-NO-GRAY warm floor
177
+ lands underneath in Batch 1b (it warms the VALUES); this register unifies
178
+ the TIER. The hover lift mixes the rest fill one step toward the resting
179
+ rung so a control brightens on hover in lockstep. */
180
+ --control-surface-bg: var(--glass-bg-quiet);
181
+ --control-surface-border: var(--glass-border-floating);
182
+ --control-surface-blur: var(--glass-blur-quiet);
183
+ --control-surface-bg-hover: color-mix(in oklab, var(--glass-bg-quiet), var(--glass-bg-resting) 35%);
184
+
185
+ /* Shared decorative. Light grain dropped 0.035 → 0.025 in P.W1.B —
186
+ at the chassis scale the original alpha read as crawl over the new
187
+ lower-alpha chassis bg; the grain's role is texture, not reading,
188
+ so it sits at the perceptual floor. Dark companion drops 0.06 →
189
+ 0.045 below to keep the soft-light blend alive without stippling. */
190
+ --glass-grain-opacity: 0.025;
191
+ /* BA.W-GLASS-CAL — `--glass-grain-opacity-disco` (0.08) DELETED with the disco
192
+ recipe retirement (H2a): no surviving consumer once `btn-audacious` + the
193
+ dock-tab primary phase-grain collapse onto the calm glass register. */
194
+ --glass-highlight: inset 0 0.5px 0 0 hsl(0 0% 100% / 0.25);
195
+
196
+ /* Hairline-accent — 0.5px catch-light + under-shadow pair.
197
+ Single token composes the canonical 2-stop hairline used by dock,
198
+ instrument-chassis. The `.hairline-accent` utility
199
+ (utilities.css §hairline) adopts these via `box-shadow:`. */
200
+ --hairline-catch-light: inset 0 0.5px 0 0 rgb(255 255 255 / 0.06);
201
+ --hairline-under-shadow: 0 0.5px 0 0 rgb(0 0 0 / 0.04);
202
+ --border-hairline: var(--hairline-catch-light), var(--hairline-under-shadow);
203
+
204
+ /* Specular catch-light — 1.5px-tall top-edge highlight that swaps in for
205
+ --glass-highlight on interactive moments (e.g. primary-action hover).
206
+ Reads as a real catch-light on a curved surface. The `-dark` companion
207
+ is overridden inside `.dark`; the named token here is the explicit
208
+ handle consumers can reference to compose dark-aware layers. */
209
+ --glass-specular: inset 0 1.5px 0 0 hsl(0 0% 100% / 0.45);
210
+ --glass-specular-dark: inset 0 1.5px 0 0 hsl(0 0% 100% / 0.30);
211
+
212
+ /* AV.W15 M3 — Full-perimeter rim light (the "rim that defines the
213
+ silhouette", WWDC25 sess. 219). Distinct from the top-only
214
+ `--glass-highlight` (a 0.5px top-edge catch-light): this is a 0.75px
215
+ inset ring around the WHOLE silhouette, four edges, reading as the
216
+ catch-light that wraps the glass plate the way iOS-26 Liquid Glass
217
+ carries a rim, not just a top highlight. Composed as a SECOND inset
218
+ box-shadow layer alongside `--glass-highlight` on the floating/dock
219
+ tiers (glass.css wires it). The alpha is deliberately low (0.18 light
220
+ / 0.10 dark) — the rim is decoration and must not eat AA legibility
221
+ over a busy backdrop; it sits below the perceptual reading threshold
222
+ on text. The `-dark` companion is overridden inside `.dark` mirroring
223
+ the `--glass-specular-dark` precedent. */
224
+ --glass-edge-light: inset 0 0 0 0.75px hsl(0 0% 100% / 0.18);
225
+ /* BA.W-DARK-MATERIAL scope 2 — the dark edge/rim is the PRIMARY silhouette device in
226
+ dark. The light register's fill+shadow carry the plate; in dark the fill barely
227
+ separates (the deep page is near-black), so the EDGE + the transmitted glow carry the
228
+ silhouette — two registers, one design language. HEAD α 0.10 sits below the reading
229
+ threshold over the deep canvas; lifted to 0.22 so the rim DEFINES the plate (the
230
+ WWDC25 "rim that defines the silhouette" device, dialed up for the dark substrate). */
231
+ --glass-edge-light-dark: inset 0 0 0 0.75px hsl(0 0% 100% / 0.22);
232
+
233
+ /* AW.W23 — content-aware adaptive tint (the Baseline-2025 "tint informed by
234
+ surrounding content" axis, WWDC25 sess. 219). A surface can tint toward a
235
+ consumer-provided dominant backdrop color via a `color-mix(in oklab, …)`
236
+ recipe (oklab is the mwg-preferred space for tint generation; NEVER a
237
+ lightness-shift in `oklch(from …)` — browsers don't gamut-map yet).
238
+
239
+ DEFAULT is zero delta: `--glass-tint-source` is the warm-white card itself
240
+ and `--glass-tint-strength` is 0%, so the rung background mixes 0% toward
241
+ the source = byte-identical to today. A consumer sets `--glass-tint-source`
242
+ to a sampled aurora hue + a strength ≤30% to bias the surface. Alpha-safe:
243
+ the mix is bounded ≤30% and never re-points the card's own alpha.
244
+
245
+ AX.W55 — the DEFAULTS stay `var(--card)`/`0%` (the zero-delta rest state).
246
+ The backdrop-luminance probe (`--glass-backdrop`, below) is what OVERRIDES
247
+ them under a bright backdrop; the `:root` defaults are NEVER touched — the
248
+ bucket blocks (glass.css / dock.css `@container style(--glass-backdrop:
249
+ light)`) do the lift, so a surface over today's rich/dark background reads
250
+ byte-identical. */
251
+ --glass-tint-source: var(--card);
252
+ --glass-tint-strength: 0%;
253
+
254
+ /* AX.W55 — adaptive glass legibility (the iOS-26/27 "locally darken the glass
255
+ over light content" move; G2). There is NO web API that reads the pixels
256
+ painted BEHIND a `backdrop-filter` element, so the backdrop-luminance signal
257
+ is a DECLARATIVE BUCKET a consumer sets where it KNOWS the backdrop is bright
258
+ (a near-white card surface, a pale aurora bleed, a bright data grid). It is
259
+ read by the `@container style(--glass-backdrop: light)` blocks on every glass
260
+ family (the shipped density-cascade mechanism — utilities.css §density) which
261
+ lift `--glass-tint-strength` toward the AA floor + re-point `--glass-tint-
262
+ source` to the warm-ink below, mixing the rung TOWARD ink via the EXISTING
263
+ `color-mix(in oklab)` seam — ZERO new compositing seam.
264
+
265
+ --glass-backdrop: the bucket. `dark` (or unset) = today's zero-delta;
266
+ `light` engages the bright-bucket darken. An
267
+ INHERITING ident set on any ancestor reaches every
268
+ descendant glass surface (the @container read).
269
+ --glass-backdrop-luma: the numeric escape hatch — a sampled backdrop
270
+ relative-luminance (0..1) a heavier JS observer sets
271
+ when the declarative bucket is too coarse. The TOKEN
272
+ is minted (the cascade reads it if set); the OBSERVER
273
+ that sets it stays demo-private until a 2nd consumer
274
+ arrives (the no-overfitting bar — the DEFAULT path is
275
+ the declarative bucket, not a speculative sampler).
276
+ --glass-tint-ink: the LOW-LUMINANCE warm-ink the bright bucket re-points
277
+ `--glass-tint-source` to — the warm dark `--foreground`
278
+ family (NOT white; a lightener over light content is
279
+ exactly the W52-fixed wrong direction). It auto-flips
280
+ with `--foreground` (dark-mode it resolves the light
281
+ warm ink — but the bright-backdrop case is a light-mode
282
+ concern). Overridable like every magnitude here.
283
+
284
+ The bright-bucket `--glass-tint-strength` is clamped to a BOUNDED AA-clearing
285
+ floor — `--glass-tint-strength-aa` (≤24%, the iOS clamp; the lowest value that
286
+ clears 4.5:1 over synthetic white, capped LOW so the surface STAYS translucent,
287
+ "let as much content through as possible"). Recorded here as the ceiling the
288
+ bucket blocks drive to; the live 4.5:1 readback (proof:adaptive-glass π arm)
289
+ ratifies the exact value. */
290
+ --glass-backdrop: dark;
291
+ --glass-backdrop-luma: ;
292
+ --glass-tint-ink: var(--foreground);
293
+ /* AZ.W-ADAPTIVE-AUTO Arm 1 — recalibrated 18% → 20%. The bump strengthens the
294
+ G2 surface-SILHOUETTE darken (ΔL ≈ 0.40 over synthetic white, the plate is
295
+ distinguishable from a bright page behind) while staying bounded ≤ 24% (the
296
+ iOS clamp — the surface STAYS translucent, "let content through"). The body
297
+ register over the engaged plate is the full warm-ink `--foreground` (~10.6:1
298
+ over white at 20%) — the muted L40 tier is lifted to the full ink by the
299
+ self-engage rules (it cannot clear 4.5:1 on a translucent darkened plate;
300
+ darkening moves the plate toward muted's own luminance). The shipped overlay-
301
+ band engaged appearance re-ratifies at the new floor: `--foreground` reads
302
+ ~10.6–10.9:1 (within the ~11:1 ratified register — the bump is a silhouette
303
+ strengthening, not a silent re-tint below AA). The live π readback ratifies. */
304
+ --glass-tint-strength-aa: 20%;
305
+
306
+ /* BA.W-DARK-MATERIAL scope 7 — the calm-light recalibration (R9-1; the slides gray-slab
307
+ fix). The AZ unconditional content-tier self-engage applied the full 20% AA darken to
308
+ EVERY .glass-card/.glass-resting/.glass-quiet/.glass-wash mode- and backdrop-agnostically
309
+ — over a plain LIGHT page (not a bright/busy backdrop) the 20% warm-ink darken + the
310
+ muted→ink lift composited the translucent cream card into a flat gray slab (the slides
311
+ presenter card: 20% → oklab(0.785) gray). The recalibration: the FULL AA darken is now
312
+ gated on the declared/sampled bright signal (the @container --glass-backdrop:light bucket /
313
+ the observer); the UNCONDITIONAL content-tier floor drops to this sub-perceptual SILHOUETTE
314
+ tint — just enough edge over a busy backdrop without graying a calm-light card (the
315
+ calm-light plate stays warm, L ≈ 0.94 at the slides-equivalent fixture). The overlay band
316
+ (.glass-floating/.glass-overlay) keeps the FULL unconditional darken (floating over an
317
+ UNKNOWN consumer surface, darkening is the correct default). A consumer opts out on a
318
+ light-page ancestor via --glass-tint-strength: 0%. Bounded > 0%, ≤ 10%. The DARK arm
319
+ re-tunes --glass-tint-strength-aa directly (dark-arm.css scope 3) — the luminous-dark lift
320
+ is the desired default there, NOT a sub-perceptual floor, so the floor is a light-mode knob. */
321
+ --glass-tint-strength-floor: 4%;
322
+
323
+ /* R5-7 — the VEIL text-plate feather. The `veil-surface` decoration
324
+ (cards.css) paints a borderless/rimless translucent glass plate as a LOCAL
325
+ text-legibility surface over a busy backdrop; its `--veil-feather` axis is
326
+ an OPTIONAL `mask-image` that fades the plate edges into the page (the
327
+ soft-edged "bleed" the slides deck text plates use). The default is `none`
328
+ (a clean rectangle); a consumer opts into the feather by pointing
329
+ `--veil-feather` at this ready-made radial, or any `mask-image` value.
330
+ The 70%→100% falloff feathers the outer ~30% of the plate; override the
331
+ token to retune the fade radius library-wide. */
332
+ --veil-feather-radial: radial-gradient(
333
+ ellipse 100% 100% at 50% 50%,
334
+ black 0%,
335
+ black 70%,
336
+ transparent 100%
337
+ );
338
+
339
+ /* AW.W23 — chromatic edge dispersion (the "polished glass" rim fringe Apple
340
+ shows). A warm fringe on one edge + a cool fringe on the other, low-alpha,
341
+ biased warm-cream/NCSU-red (NOT iOS-blue). Composed OVER the W22 uniform
342
+ rim under `prefers-reduced-transparency: no-preference`; dropped under
343
+ `reduce` (it is a transparency garnish). The two directional inset rings
344
+ read as light refracting through the glass edge. */
345
+ --glass-fringe-warm: oklch(0.92 0.06 40 / 0.22);
346
+ --glass-fringe-cool: oklch(0.90 0.05 230 / 0.16);
347
+ --glass-edge-dispersion:
348
+ inset 0.75px 0 0 0 var(--glass-fringe-warm),
349
+ inset -0.75px 0 0 0 var(--glass-fringe-cool);
350
+
351
+ /* AX.W52 D19 — the moving-specular gleam radius (glass.css `.glass-material::
352
+ before`). The ONE knob that BOUNDS the gleam geometry as a percentage of the
353
+ plate so it can NEVER again become a whole-surface disc (the prior implicit
354
+ `circle at …` ran its stops to 55–75% of the half-diagonal — a wash on a
355
+ small tile). 36% reads as a tracked edge glint. Override on `:root` to retune
356
+ library-wide; a per-surface override clips the gleam tighter/wider. */
357
+ --glass-specular-size: 36%;
358
+
359
+ /* Chassis curvature illusion — a subtle radial gradient at the chassis
360
+ top centre that lifts the surface without committing to literal 3D.
361
+ Composed into <InstrumentChassis>'s background stack. AX.W52 D19 — the
362
+ prior pure-white `hsl(0 0% 100% / 0.06)` reaching `transparent 60%` was a
363
+ broad top-centre WASH (the #1 fixed-anchor rest-bloom culprit). Re-derived
364
+ onto the warm-cream house identity (`hsl(40 30% 96%)`, L < 100% so the warm
365
+ hue survives — mirroring the moving gleam), the alpha routed through the
366
+ SINGLE overridable `--glass-curvature-intensity` knob (0.02 default, a third
367
+ of the old 0.06), and the ellipse tightened to `transparent 38%` so it reads
368
+ as a thin top-edge sheen, not a central wash. */
369
+ --glass-curvature-intensity: 0.02;
370
+ --glass-curvature-overlay: radial-gradient(
371
+ ellipse at 50% -20%,
372
+ hsl(40 30% 96% / var(--glass-curvature-intensity)),
373
+ transparent 38%
374
+ );
375
+ /* The light-arm dark alias kept on the same warm-cream + token recipe so a
376
+ non-`.dark` consumer reading `…-overlay-dark` still resolves a softened
377
+ sheen; the `.dark` block below lowers `--glass-curvature-intensity` so the
378
+ deep-canvas arm is genuinely softer (the prior byte-identical dark arm read
379
+ HARDER over the dark canvas). */
380
+ --glass-curvature-overlay-dark: var(--glass-curvature-overlay);
381
+
382
+ /* Chart palette aliases — speedtest et al. read these for phase tinting.
383
+ Defaults map to viz-basis hues; consumers can override per app. */
384
+ --chart-ping: var(--viz-chebyshev);
385
+ --chart-download: var(--viz-fourier);
386
+ --chart-upload: var(--viz-amber);
387
+ --chart-jitter: var(--viz-legendre);
388
+
389
+ /* O.W6 Lane D — WCAG companion `--chart-{phase}-label` tokens
390
+ (speedtest AC.W6c.T2 — F1.V-04 closure).
391
+
392
+ The canvas-side hues above preserve their saturated brand register
393
+ (correct against the meter dial); the COMPANION tokens darken to
394
+ L≈0.40 so phase-label text on `--background` clears the WCAG 2.1
395
+ AA-body 4.5:1 contrast floor. Mirrors the two-token discipline
396
+ already established by `--meter-{background-color,track-stroke}`:
397
+ one token feeds the canvas/visual, the second feeds the label
398
+ text.
399
+
400
+ Light-mode L≈0.40 in OKLCH preserves the hue rotation while
401
+ dropping luminance enough for body contrast; dark-mode flips to
402
+ L≈0.85 against the dark canvas. Consumers reach these via
403
+ `color: var(--chart-ping-label)` (etc.) on label elements ONLY —
404
+ chart strokes/fills continue to read `--chart-ping`. */
405
+ --chart-ping-label: oklch(0.40 0.18 230);
406
+ --chart-download-label: oklch(0.40 0.20 22);
407
+ --chart-upload-label: oklch(0.40 0.16 55);
408
+ --chart-jitter-label: oklch(0.40 0.20 305);
409
+
410
+ /* O.W6 Lane D — Meter track stroke (speedtest AC.W6c.T3 — F1.V-02
411
+ closure). Promoted from speedtest's consumer-side declaration so
412
+ glass-ui owns the canonical light + dark values. The light-mode
413
+ value reads opaque foreground (composes through canvas
414
+ `globalAlpha` in consumer renderers; e.g., speedtest's `rings.ts`
415
+ `globalAlpha = 0.22` lands the phantom-track at the perceptual
416
+ sweet-spot). The dark-mode companion lives under `.dark` below
417
+ and ALSO reads `var(--foreground)` — the prior speedtest value
418
+ `var(--background)` rendered bg-on-bg invisible at dark mode. */
419
+ --meter-track-stroke: var(--foreground);
420
+
421
+ /* Shadow per tier — complete box-shadow lists for glass surface classes */
422
+ --glass-shadow-wash: var(--shadow-sm), var(--glass-highlight);
423
+ --glass-shadow-quiet: var(--shadow-md), var(--glass-highlight);
424
+ --glass-shadow-resting: var(--shadow-lg), var(--glass-highlight);
425
+ --glass-shadow-floating: var(--shadow-xl),
426
+ 0 0 0 0.5px color-mix(in srgb, var(--shadow-color) 5%, transparent),
427
+ var(--glass-highlight);
428
+ --glass-shadow-overlay: var(--shadow-2xl),
429
+ 0 0 0 0.5px color-mix(in srgb, var(--shadow-color) 8%, transparent),
430
+ var(--glass-highlight);
431
+ --glass-shadow: var(--glass-shadow-quiet);
432
+ --glass-shadow-lg: var(--glass-shadow-floating);
433
+
434
+ /* ─────────────────────────────────────────────────────────────
435
+ AL-W1-α augmented — SPINE 8th tier (HOUSING register)
436
+
437
+ Closes the AK W2 chassis-spine architectural underclaim per
438
+ AL-X5 §4.1. The spine register is a polished SLEEVE, not glass:
439
+ NO backdrop-filter, NO plate opacity, hairline outer stroke,
440
+ interior radial vignette that subtly carries the phase-color
441
+ cascade. Consumed exclusively by `<InstrumentChassis variant="spine">`
442
+ at App-level mount paths (quiet-content routes).
443
+
444
+ The 4 tokens here cover the minimum viable substrate the SLIM
445
+ Y4/Y6/Y7 retention set ratified. The 35 rejected axes (saturate
446
+ band, edge-light per tier, depth-shadow per tier, tier-up macro)
447
+ stay rejected per the conservative-creation mandate.
448
+ ───────────────────────────────────────────────────────────── */
449
+ --glass-spine-opacity: 0;
450
+ --glass-spine-blur: 0px;
451
+ --glass-spine-border: var(--surface-tint-8);
452
+ --glass-spine-vignette: radial-gradient(
453
+ ellipse at 50% 0%,
454
+ color-mix(in oklab, var(--phase-color, var(--surface-tint-8)) 8%, transparent),
455
+ transparent 60%
456
+ );
457
+
458
+ /* ─────────────────────────────────────────────────────────────
459
+ AL-W10 SLIM — UNDER-SHADOW recipe rungs
460
+
461
+ Per AL-X5 §4 + Y7 §3. iOS Liquid Glass surfaces carry a 0.5px
462
+ dark hairline along the bottom edge (reads as under-shadow /
463
+ glass thickness). The substrate `--hairline-under-shadow`
464
+ already publishes one quiet rung; the four-rung ladder here
465
+ names the SLIM retention set (Y4 §3.2 / Y6 §4.3) — `quiet`,
466
+ `default`, `vivid`, `spine` cover the consumer landings without
467
+ multiplying tokens per tier. The 3 hand-rolled literals at
468
+ `instrument-chassis.css:52`, `dock.css:279`, `dock.css:952`
469
+ retire to these.
470
+
471
+ Composes as a NON-INSET box-shadow layer alongside the existing
472
+ `--glass-shadow-*` recipe (the inset under-shadow stays at the
473
+ hand-rolled literal where it's load-bearing on chassis-internal
474
+ surfaces).
475
+ ───────────────────────────────────────────────────────────── */
476
+ --glass-under-shadow-quiet: 0 2px 8px -1px oklch(0 0 0 / 0.04);
477
+ --glass-under-shadow-default: 0 4px 16px -2px oklch(0 0 0 / 0.08);
478
+ --glass-under-shadow-vivid: 0 8px 32px -4px oklch(0 0 0 / 0.12);
479
+ --glass-under-shadow-spine: 0 1px 0 0 oklch(0 0 0 / 0.06);
480
+
481
+ /* Overlay scrim rungs — substrate-aware modal/dialog backdrop tints.
482
+ Three weights cover the deployed range: dialog-scroll (subtle),
483
+ canonical modal (default), drawer/full-cover (strong).
484
+
485
+ AY.W-PRIM-POLISH D3 — the scrim is its OWN identity token, NOT derived
486
+ from `--shadow-color`. A scrim's role is to RECEDE: it must pin to INK in
487
+ BOTH modes. The cartoon-shadow family rides `--shadow-color: var(--foreground)`
488
+ (correct — a shadow re-tints under `.dark` by construction), but a scrim
489
+ that does the same FLOODS the dark room with a cream fog (the old dark
490
+ overlay painted `srgb(0.91… / 0.5)`, a near-white wash that BRIGHTENED the
491
+ page at the modal moment). `--overlay-scrim-ink` is a fixed warm near-black
492
+ (the light-mode `--foreground` value), re-resolved verbatim in `.dark` so
493
+ the scrim recedes in both modes. Clean break, no alias (no-backwards-compat).
494
+ The `--shadow-color` / `--shadow-cartoon-*` family is UNTOUCHED. */
495
+ --overlay-scrim-ink: hsl(24 10% 10%);
496
+ --overlay-scrim: color-mix(in srgb, var(--overlay-scrim-ink) 50%, transparent);
497
+ --overlay-scrim-strong: color-mix(in srgb, var(--overlay-scrim-ink) 80%, transparent);
498
+ --overlay-scrim-subtle: color-mix(in srgb, var(--overlay-scrim-ink) 40%, transparent);
499
+
500
+ }