@mkbabb/glass-ui 3.9.0 → 3.10.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 (265) hide show
  1. package/dist/{CardAction-DuArVky-.js → CardAction-DrAcAV4d.js} +2 -2
  2. package/dist/{CommandShortcut-CefCj5mt.js → CommandShortcut-mV2e1aG6.js} +2 -2
  3. package/dist/{DataTable-CUHMukiQ.js → DataTable-C3E6jZ5B.js} +2 -2
  4. package/dist/{DialogContent-BRkT1cjP.js → DialogContent-BxaaafFi.js} +1 -1
  5. package/dist/{HoverPopover-2LOIW34a.js → HoverPopover-CDA_SaCe.js} +1 -1
  6. package/dist/{MetricBadge-lTc002u2.js → MetricBadge-idgrkqoP.js} +1 -1
  7. package/dist/{Notification-BxK8LZMw.js → Notification-Cu0nN17_.js} +3 -3
  8. package/dist/{NumberFieldContent-BbLOh8RU.js → NumberFieldContent-CHEWghnY.js} +2 -2
  9. package/dist/{PopoverContent-BId6ggf_.js → PopoverContent-DpUvdYY-.js} +1 -1
  10. package/dist/{Progress-iEuD9pxG.js → Progress-BW-StFw2.js} +1 -1
  11. package/dist/{ScrollingText-BPP84wKo.js → ScrollingText-DruYCni_.js} +1 -1
  12. package/dist/{SelectScrollDownButton-T32cVFeM.js → SelectScrollDownButton-pirzjm--.js} +3 -3
  13. package/dist/{Switch-LDKLmmgx.js → Switch-DeAqg6pi.js} +1 -1
  14. package/dist/{TabsList-B8CVOQPC.js → TabsList-BAVzOZpg.js} +2 -2
  15. package/dist/{Toaster-1rYWrmAm.js → Toaster-CvuuW_y9.js} +49 -46
  16. package/dist/{ToggleGroupItem-Cev4pOVK.js → ToggleGroupItem-DtD37b4G.js} +4 -4
  17. package/dist/animated-digit.js +2 -2
  18. package/dist/api/index.d.ts +4 -4
  19. package/dist/api.js +1 -1
  20. package/dist/aurora.js +238 -547
  21. package/dist/{badge-BvwvT50i.js → badge-NdCQMvvB.js} +2 -2
  22. package/dist/badge.js +1 -1
  23. package/dist/{button-DN39cGqL.js → button-DyiWFAOE.js} +12 -12
  24. package/dist/button.js +1 -1
  25. package/dist/canvas.js +2 -2
  26. package/dist/card.js +1 -1
  27. package/dist/carousel.js +5 -5
  28. package/dist/collapsible.js +1 -1
  29. package/dist/{color-8jBjWiJ6.js → color-B65wWyQz.js} +9 -7
  30. package/dist/color.js +1 -1
  31. package/dist/command.js +1 -1
  32. package/dist/{compile-DAjIoEy2.js → compile-Ce_V55zi.js} +23 -23
  33. package/dist/components/custom/aurora/composables/atoms.d.ts +21 -4
  34. package/dist/components/custom/aurora/composables/runtime.d.ts +0 -9
  35. package/dist/components/custom/aurora/composables/uniformBridge.d.ts +0 -11
  36. package/dist/components/custom/aurora/constants/renderMode.d.ts +0 -32
  37. package/dist/components/custom/aurora/constants/shaders/brush.glsl.d.ts +1 -1
  38. package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +2 -2
  39. package/dist/components/custom/aurora/constants/shaders/tonemap.glsl.d.ts +1 -1
  40. package/dist/components/custom/aurora/constants/shaders/vangogh-medium.glsl.d.ts +1 -0
  41. package/dist/components/custom/aurora/index.d.ts +1 -1
  42. package/dist/components/custom/constellation/Constellation.vue.d.ts +85 -1
  43. package/dist/components/custom/constellation/composables/createConstellationField.d.ts +35 -0
  44. package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +35 -0
  45. package/dist/components/custom/constellation/constants.d.ts +36 -0
  46. package/dist/components/custom/constellation/constellationDraw.d.ts +18 -0
  47. package/dist/components/custom/constellation/constellationField.d.ts +174 -63
  48. package/dist/components/custom/constellation/constellationInteraction.d.ts +102 -0
  49. package/dist/components/custom/constellation/index.d.ts +4 -2
  50. package/dist/components/custom/controls/DarkModeToggle.vue.d.ts +11 -0
  51. package/dist/components/custom/dock/GlassDock.vue.d.ts +2 -110
  52. package/dist/components/custom/dock/composables/dockMorphContext.d.ts +36 -0
  53. package/dist/components/custom/dock/composables/useDockMorphWindow.d.ts +15 -0
  54. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +131 -0
  55. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +44 -0
  56. package/dist/components/custom/dock/constants.d.ts +23 -0
  57. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +6 -0
  58. package/dist/components/custom/fourier-field/index.d.ts +25 -1
  59. package/dist/components/custom/fourier-field/math.d.ts +20 -8
  60. package/dist/components/custom/fourier-field/presets.d.ts +54 -0
  61. package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +8 -10
  62. package/dist/components/custom/goo-blob/composables/buildMetaballProgram.d.ts +18 -0
  63. package/dist/components/custom/goo-blob/composables/uploadBlobUniforms.d.ts +41 -0
  64. package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +4 -3
  65. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +16 -21
  66. package/dist/components/custom/goo-blob/constants.d.ts +52 -0
  67. package/dist/components/custom/goo-blob/index.d.ts +1 -1
  68. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -0
  69. package/dist/components/custom/goo-blob/types.d.ts +59 -25
  70. package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +2 -2
  71. package/dist/components/custom/tabs/constants.d.ts +12 -0
  72. package/dist/components/custom/underline/GlassUnderline.vue.d.ts +84 -0
  73. package/dist/components/custom/underline/index.d.ts +2 -0
  74. package/dist/components/custom/underline/types.d.ts +56 -0
  75. package/dist/components/ui/drawer/Drawer.vue.d.ts +1 -0
  76. package/dist/components/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +2 -2
  77. package/dist/components/ui/slider/index.d.ts +25 -18
  78. package/dist/components/ui/toast/use-toast.d.ts +2 -2
  79. package/dist/composables/color/index.d.ts +24 -7
  80. package/dist/composables/glass/useSpecularTracking.d.ts +12 -3
  81. package/dist/composables/glass/webgl/shaders/procedural-color.glsl.d.ts +1 -6
  82. package/dist/composables/motion/curves.d.ts +48 -0
  83. package/dist/composables/motion/index.d.ts +2 -0
  84. package/dist/composables/motion/springPresets.d.ts +33 -0
  85. package/dist/composables/motion/suite.d.ts +2 -0
  86. package/dist/composables/motion/useSpringMount.d.ts +1 -1
  87. package/dist/configurator.js +1 -1
  88. package/dist/confirm-dialog.js +2 -2
  89. package/dist/constellation.js +322 -147
  90. package/dist/controls.js +48 -14
  91. package/dist/dark.js +1 -1
  92. package/dist/data-table.js +1 -1
  93. package/dist/dialog.js +2 -2
  94. package/dist/dock.js +340 -327
  95. package/dist/dockContext-bho8B1A4.js +17 -0
  96. package/dist/{dropdown-menu-D77jX6Df.js → dropdown-menu-DVnQcA0E.js} +7 -4
  97. package/dist/dropdown-menu.js +1 -1
  98. package/dist/expandable-container.js +1 -1
  99. package/dist/forms.js +2 -2
  100. package/dist/fourier-field.js +147 -120
  101. package/dist/fourier-math.d.ts +1 -0
  102. package/dist/fourier-math.js +2 -0
  103. package/dist/glass-ui.css +1 -1
  104. package/dist/glass-ui.js +286 -207
  105. package/dist/goo-blob.js +368 -322
  106. package/dist/hover-popover.js +1 -1
  107. package/dist/icon-tooltip.js +1 -1
  108. package/dist/index.d.ts +0 -2
  109. package/dist/keyboard.js +1 -1
  110. package/dist/labeled-field.js +5 -5
  111. package/dist/math-BUU9hHID.js +43 -0
  112. package/dist/metric-badge.js +1 -1
  113. package/dist/metric-stack.js +2 -2
  114. package/dist/motion-core.js +4 -4
  115. package/dist/motion-curves.d.ts +1 -0
  116. package/dist/motion-curves.js +130 -0
  117. package/dist/motion.js +38 -37
  118. package/dist/notification.js +1 -1
  119. package/dist/number-field.js +1 -1
  120. package/dist/popover.js +1 -1
  121. package/dist/progress.js +1 -1
  122. package/dist/pulse.js +1 -1
  123. package/dist/reactive.js +1 -1
  124. package/dist/scrolling-text.js +1 -1
  125. package/dist/search.js +6 -6
  126. package/dist/select.js +1 -1
  127. package/dist/{sheet-VZEtNFvO.js → sheet-ChSXcJpU.js} +1 -1
  128. package/dist/sheet.js +1 -1
  129. package/dist/{slider-DC2mwuoe.js → slider-sfl8gFDD.js} +8 -8
  130. package/dist/slider.js +1 -1
  131. package/dist/sortable-list.js +2 -2
  132. package/dist/springPresets-aRSm-4_k.js +40 -0
  133. package/dist/stacked-icons.js +6 -6
  134. package/dist/styles/cards.css +2 -2
  135. package/dist/styles/components.css +1 -1
  136. package/dist/styles/dock/layer-group.css +38 -4
  137. package/dist/styles/dock/layers.css +11 -1
  138. package/dist/styles/dock/morph.css +95 -19
  139. package/dist/styles/dock/shell.css +12 -0
  140. package/dist/styles/dock-controls.css +25 -12
  141. package/dist/styles/drawer.css +14 -4
  142. package/dist/styles/floating-panel.css +2 -0
  143. package/dist/styles/glass/a11y-fallback.css +245 -0
  144. package/dist/styles/glass/ladder.css +304 -0
  145. package/dist/styles/glass/material.css +238 -0
  146. package/dist/styles/glass/progress-rail.css +78 -0
  147. package/dist/styles/glass/squircle.css +66 -0
  148. package/dist/styles/glass/surfaces.css +306 -0
  149. package/dist/styles/glass-refract.css +2 -0
  150. package/dist/styles/glass.css +31 -1052
  151. package/dist/styles/hover-popover.css +2 -0
  152. package/dist/styles/index.css +24 -6
  153. package/dist/styles/instrument-chassis.css +4 -0
  154. package/dist/styles/theme.css +14 -14
  155. package/dist/styles/tokens/color-radius.css +250 -0
  156. package/dist/styles/tokens/dark-arm.css +194 -0
  157. package/dist/styles/tokens/glass.css +413 -0
  158. package/dist/styles/tokens/light-dark.css +158 -0
  159. package/dist/styles/tokens/offsets-sizing.css +406 -0
  160. package/dist/styles/tokens/property-regs.css +169 -0
  161. package/dist/styles/tokens/scale-paper.css +361 -0
  162. package/dist/styles/tokens/scheme-motion.css +334 -0
  163. package/dist/styles/tokens/shadow.css +132 -0
  164. package/dist/styles/tokens.css +22 -2269
  165. package/dist/styles/transitions.css +20 -2
  166. package/dist/styles/typography.css +18 -6
  167. package/dist/styles/utilities/a11y-overrides.css +140 -0
  168. package/dist/styles/utilities/animate.css +26 -0
  169. package/dist/styles/utilities/base.css +365 -0
  170. package/dist/styles/utilities/btn.css +399 -0
  171. package/dist/styles/utilities/components.css +317 -0
  172. package/dist/styles/utilities.css +19 -1170
  173. package/dist/switch.js +1 -1
  174. package/dist/tabs.js +98 -98
  175. package/dist/timeline.js +2 -2
  176. package/dist/toast.js +1 -1
  177. package/dist/toggle-group.js +1 -1
  178. package/dist/typewriter.js +1 -1
  179. package/dist/underline.d.ts +1 -0
  180. package/dist/underline.js +85 -0
  181. package/dist/{useAnimatedNumber-C5I3wWd8.js → useAnimatedNumber-DfVgP4te.js} +1 -1
  182. package/dist/{useConfiguratorState-DxAqksK6.js → useConfiguratorState-BdQXh9ie.js} +1 -1
  183. package/dist/useSpecularTracking-DFK_fhpG.js +32 -0
  184. package/dist/useSpringMount-DXUzxBjV.js +108 -0
  185. package/dist/watercolor-dot.js +2 -2
  186. package/package.json +62 -38
  187. package/src/styles/cards.css +2 -2
  188. package/src/styles/dock/layer-group.css +38 -4
  189. package/src/styles/dock/layers.css +11 -1
  190. package/src/styles/dock/morph.css +95 -19
  191. package/src/styles/dock/shell.css +12 -0
  192. package/src/styles/dock-controls.css +25 -12
  193. package/src/styles/drawer.css +12 -4
  194. package/src/styles/glass/a11y-fallback.css +245 -0
  195. package/src/styles/glass/ladder.css +304 -0
  196. package/src/styles/glass/material.css +238 -0
  197. package/src/styles/glass/progress-rail.css +78 -0
  198. package/src/styles/glass/squircle.css +66 -0
  199. package/src/styles/glass/surfaces.css +306 -0
  200. package/src/styles/glass.css +31 -1052
  201. package/src/styles/index.css +24 -6
  202. package/src/styles/theme.css +14 -14
  203. package/src/styles/tokens/color-radius.css +250 -0
  204. package/src/styles/tokens/dark-arm.css +194 -0
  205. package/src/styles/tokens/glass.css +413 -0
  206. package/src/styles/tokens/light-dark.css +158 -0
  207. package/src/styles/tokens/offsets-sizing.css +406 -0
  208. package/src/styles/tokens/property-regs.css +169 -0
  209. package/src/styles/tokens/scale-paper.css +361 -0
  210. package/src/styles/tokens/scheme-motion.css +334 -0
  211. package/src/styles/tokens/shadow.css +132 -0
  212. package/src/styles/tokens.css +22 -2269
  213. package/src/styles/transitions.css +20 -2
  214. package/src/styles/typography.css +18 -6
  215. package/src/styles/utilities/a11y-overrides.css +140 -0
  216. package/src/styles/utilities/animate.css +26 -0
  217. package/src/styles/utilities/base.css +365 -0
  218. package/src/styles/utilities/btn.css +399 -0
  219. package/src/styles/utilities/components.css +317 -0
  220. package/src/styles/utilities.css +19 -1170
  221. package/dist/DeckProgress-Dmk4_AKN.js +0 -23
  222. package/dist/InstrumentRail-CUJ05YVG.js +0 -44
  223. package/dist/components/custom/aurora/composables/gpuRuntime.d.ts +0 -16
  224. package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +0 -7
  225. package/dist/components/custom/deck-progress/DeckProgress.vue.d.ts +0 -27
  226. package/dist/components/custom/deck-progress/index.d.ts +0 -2
  227. package/dist/components/custom/dialog-native/GlassDialogNative.vue.d.ts +0 -57
  228. package/dist/components/custom/dialog-native/index.d.ts +0 -1
  229. package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +0 -41
  230. package/dist/components/custom/glass-panel/index.d.ts +0 -2
  231. package/dist/components/custom/header-ribbon/HeaderRibbon.vue.d.ts +0 -31
  232. package/dist/components/custom/header-ribbon/index.d.ts +0 -2
  233. package/dist/components/custom/header-ribbon/types.d.ts +0 -7
  234. package/dist/components/custom/instrument-rail/InstrumentRail.vue.d.ts +0 -91
  235. package/dist/components/custom/instrument-rail/index.d.ts +0 -2
  236. package/dist/composables/glass/createGPUCanvas.d.ts +0 -40
  237. package/dist/deck-progress.d.ts +0 -1
  238. package/dist/deck-progress.js +0 -2
  239. package/dist/dockContext-BKeIMmNk.js +0 -9
  240. package/dist/glass-panel.d.ts +0 -1
  241. package/dist/glass-panel.js +0 -44
  242. package/dist/header-ribbon.d.ts +0 -1
  243. package/dist/header-ribbon.js +0 -63
  244. package/dist/instrument-rail.d.ts +0 -1
  245. package/dist/instrument-rail.js +0 -2
  246. package/dist/useGlassRenderer-5I0YkI4t.js +0 -69
  247. package/dist/useSpecularTracking-BVRZsRHA.js +0 -26
  248. package/dist/useSpringMount-BJSHcLl3.js +0 -113
  249. /package/dist/{CollapsibleContent-CP9qF1v4.js → CollapsibleContent-Drow5WkV.js} +0 -0
  250. /package/dist/{DialogFooter-Gprw8H_A.js → DialogFooter-DufLHi0y.js} +0 -0
  251. /package/dist/{IconTooltip-yefK7cJc.js → IconTooltip-BrQ5p181.js} +0 -0
  252. /package/dist/{Input-DWQQIOC4.js → Input-B-F818RU.js} +0 -0
  253. /package/dist/{_plugin-vue_export-helper-ok8pgSl5.js → _plugin-vue_export-helper-DWghtRt7.js} +0 -0
  254. /package/dist/{constants-CS75AWHG.js → constants-C8NMonuo.js} +0 -0
  255. /package/dist/{presets-BKVyQfbt.js → presets-1OhFpaIC.js} +0 -0
  256. /package/dist/{prng-wHuHlNHE.js → prng-CjVgzjQT.js} +0 -0
  257. /package/dist/{resolveCanvasColor-BBiYfp8g.js → resolveCanvasColor-CRvVzOvP.js} +0 -0
  258. /package/dist/{useCanvas2D-ClrQuZtp.js → useCanvas2D-CSeH8h16.js} +0 -0
  259. /package/dist/{useGlobalDark-yhL4Wp-s.js → useGlobalDark-D7R9OypB.js} +0 -0
  260. /package/dist/{useIntersectionPause-Cc-H9ees.js → useIntersectionPause-DAdVPVp4.js} +0 -0
  261. /package/dist/{useInterval-Dsmqwi03.js → useInterval-D3USn0yc.js} +0 -0
  262. /package/dist/{useKeyboardShortcuts-Be3w_Rwk.js → useKeyboardShortcuts-i8tHd5WO.js} +0 -0
  263. /package/dist/{useScrollProgress-CAH8Ofwt.js → useScrollProgress-CcgmgMQt.js} +0 -0
  264. /package/dist/{useSortable-C8ReQ50P.js → useSortable-DnyGXKKY.js} +0 -0
  265. /package/dist/{useTextHighlight-DON84L8w.js → useTextHighlight-B3b10W6r.js} +0 -0
@@ -0,0 +1,361 @@
1
+ /* tokens/scale-paper.css
2
+ §11 interactive scales & focus · §12 paper textures · §13 gold · §14 rainbow · §16 timeline · §17 metric · §19 table density · §20 platform motion.
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
+ §11 INTERACTIVE SCALES & FOCUS
8
+ ═══════════════════════════════════════════════ */
9
+ --scale-hover: 1.08;
10
+ /* AX.W52 — the restrained BUTTON hover lift. `--scale-hover` (1.08) is an
11
+ 8% jump — emphatic for a marquee CTA, jarring as the general hover. The
12
+ button family (the audacious CTAs + `btn-interactive`) lifts on the
13
+ smaller `--scale-hover-btn` routed through `--spring-smooth` (the
14
+ sub-perceptual settle, not the snappy bounce), so the hover reads as ONE
15
+ coherent glide with the surface-leg cross-fade rather than a mechanical
16
+ pop. The dock keeps its proportionally-larger `--scale-hover-dock` (small
17
+ icon, bigger lift reads smaller).
18
+ AX.W54 Q3 — lifted 1.035 → 1.05: the 1.035 overshot DOWN (W52 tamed the
19
+ 1.08 snap so hard the lift read as nothing), so the glass hover now reads
20
+ as THREE legs together on hover — the specular gleam waking, a perceptible
21
+ scale, and the bg/border cross-fade — distinguishable from rest BEFORE the
22
+ click. Still sub-perceptual-bounce on `--spring-smooth`; the magnitude
23
+ moved, the easing register did not. */
24
+ --scale-hover-btn: 1.05;
25
+ --scale-hover-dock: 1.1;
26
+ --scale-press: 0.96;
27
+
28
+ /* Press-scale rungs. `--scale-press` (0.96) is the canonical iOS Liquid
29
+ Glass press value every primitive reaches for unless it has a documented
30
+ reason (DESIGN.md §L3); `--scale-press-btn` aliases the slightly-softer
31
+ `--scale-press-sm` (0.97) the button + slider recipes consume.
32
+
33
+ AT.W7-dock-b — press canon. `--scale-press-dock` previously hard-coded a
34
+ deeper 0.92 (a second magic press value with no documented rationale),
35
+ so a dock control pressed visibly harder than every other primitive. It
36
+ now references the canonical `--scale-press` (0.96) — ONE source for the
37
+ press scale across the system. A consumer wanting the dock's old deeper
38
+ press overrides `--scale-press-dock` on the dock instance. */
39
+ --scale-press-dock: var(--scale-press);
40
+ --scale-press-sm: 0.97;
41
+ --scale-press-btn: var(--scale-press-sm);
42
+
43
+ /* AX.W53 — the SegmentedTabs travel-squish cap. The active indicator
44
+ (segmented/pill slider OR the underline rule) STRETCHES along its travel
45
+ axis as it glides between tabs, then settles to fit — the Material 3
46
+ ELASTIC / Apple Liquid-Glass "controls insist on animating themselves"
47
+ register, kept RESTRAINED. The deform is volume-preserving (stretch X,
48
+ compress Y in lockstep: `scale: var(--stretch) calc(1 / var(--stretch))`)
49
+ so it reads as an elastic warp, never a size pump. The cap holds the peak
50
+ LOW (1.08 ≈ +8%) — iOS 26.2 dialed motion DOWN; a high-frequency control
51
+ wants a whisper of squish, not a bounce. A consumer dials the elasticity
52
+ (or to 1 for none) without touching source. */
53
+ --tab-indicator-max-stretch: 1.08;
54
+ --opacity-disabled: 0.5;
55
+ --opacity-icon-muted: 0.8;
56
+
57
+ --focus-ring-width: 2px;
58
+ --focus-ring-shadow: 0 0 0 var(--focus-ring-width) color-mix(in srgb, var(--ring) 30%, transparent),
59
+ 0 0 8px color-mix(in srgb, var(--ring) 15%, transparent);
60
+ --focus-ring: var(--focus-ring-shadow);
61
+
62
+ /* ═══════════════════════════════════════════════
63
+ §12 PAPER TEXTURES
64
+ ═══════════════════════════════════════════════ */
65
+ /* Canonical subtle paper-texture opacity — restored from fourier-original
66
+ (`4df1a06:web/src/style.css:53-54`) after A.W3.5.ab confirmed the
67
+ heretofore `opacity='1'` URI rendered as an overt grain field in every
68
+ downstream consumer of `.paper-texture`. The SVG `opacity` attribute is
69
+ baked at parse-time and cannot read a CSS var, so the subtle value must
70
+ be inlined; if a consumer needs a heavier overlay, they should layer
71
+ a wrapper element with its own `opacity:`/`mix-blend-mode:` atop. */
72
+ --paper-clean-texture: url("data:image/svg+xml,%3Csvg width='200' height='200' viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");
73
+ --paper-aged-texture: url("data:image/svg+xml,%3Csvg width='200' height='200' viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.5' numOctaves='5' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.06'/%3E%3C/svg%3E");
74
+
75
+ /* ═══════════════════════════════════════════════
76
+ §13 GOLD (accent family kept for consumers using it)
77
+ ═══════════════════════════════════════════════ */
78
+ --gold: oklch(0.751 0.147 84.2);
79
+ --gold-light: oklch(0.890 0.183 96.1);
80
+ --gold-dark: oklch(0.599 0.132 64.2);
81
+ /* AY.W-PRIM-POLISH D1 — the saturated CTA plate the AW.W13 gold-CTA contract
82
+ names. A FIXED deep gold (mode-INVARIANT — the gold-CTA hover backplate must
83
+ be dark in BOTH modes so the white label clears ≥4.5:1; deepening toward the
84
+ mode-flipping `--foreground` brightened the dark plate to a cream-gold and
85
+ broke dark). ~`--gold-dark` deepened toward warm-ink → ~rgb(120,87,45),
86
+ 6.5:1 white in light / 5.5:1 in dark. The opaque base of `btn-audacious-gold`
87
+ :hover. */
88
+ --gold-deep: oklch(0.487 0.103 63.0);
89
+
90
+ --color-gold: var(--gold);
91
+ --color-gold-light: var(--gold-light);
92
+ --color-gold-dark: var(--gold-dark);
93
+ --color-gold-deep: var(--gold-deep);
94
+
95
+ /* ═══════════════════════════════════════════════
96
+ §14 RAINBOW PALETTE — oklch (AV.W16 TW2; mode-independent, no .dark
97
+ mirror; hue preserved from the prior hsl() cadence)
98
+ ═══════════════════════════════════════════════ */
99
+ --rainbow-red: oklch(0.636 0.210 25.5);
100
+ --rainbow-orange: oklch(0.737 0.163 58.9);
101
+ --rainbow-yellow: oklch(0.900 0.183 103.7);
102
+ --rainbow-green: oklch(0.772 0.233 144.8);
103
+ --rainbow-blue: oklch(0.633 0.162 252.1);
104
+ --rainbow-indigo: oklch(0.566 0.206 294.1);
105
+ --rainbow-violet: oklch(0.684 0.250 327.9);
106
+
107
+ --rainbow-pastel-red: oklch(0.793 0.066 18.7);
108
+ --rainbow-pastel-orange: oklch(0.823 0.059 57.3);
109
+ --rainbow-pastel-yellow: oklch(0.889 0.068 98.1);
110
+ --rainbow-pastel-green: oklch(0.826 0.072 149.5);
111
+ --rainbow-pastel-blue: oklch(0.783 0.056 264.2);
112
+ --rainbow-pastel-indigo: oklch(0.772 0.062 300.2);
113
+ --rainbow-pastel-violet: oklch(0.799 0.070 314.4);
114
+
115
+ /* ═══════════════════════════════════════════════
116
+ §16 TIMELINE
117
+ Timeline primitive tokens. All three variants (scrubber +
118
+ segmented + continuous) compose these. Both segmented + continuous
119
+ arrays carry the same `TimelineSegment[]` data shape; only the
120
+ rendering geometry differs. See DESIGN.md `## Timeline Primitive`.
121
+ ═══════════════════════════════════════════════ */
122
+
123
+ /* Heights — per-variant rail thickness */
124
+ --timeline-scrubber-height: 0.5rem; /* 8px — single-track scrubber */
125
+ --timeline-segmented-height: 0.625rem; /* 10px — N adjacent bands */
126
+ --timeline-continuous-height: 0.75rem; /* 12px — ONE pill, N regions */
127
+
128
+ /* Geometry — shared across all variants */
129
+ --timeline-dot-size: 0.875rem; /* 14px — boundary dot diameter (pointer: fine) */
130
+ --timeline-dot-size-touch: 1.25rem; /* 20px — boundary dot diameter (pointer: coarse) */
131
+ --timeline-touch-target: 44px; /* AC.W6d F2.I-04 — WCAG 2.5.5 target-size floor.
132
+ The `::before` halo around each dot extends to
133
+ this dimension so finger-precision users meet
134
+ the (target-size: 44×44 minimum) clause without
135
+ the visible dot growing to that footprint at
136
+ pointer: fine. */
137
+ --timeline-segment-flex: 1 1 0; /* per-cell flex distribution (segmented) */
138
+
139
+ /* Boundary-dot glass knobs (Q.W4 Lane B — promoted from
140
+ ContinuousTimeline.vue SFC fallbacks; `3cb70db` minted these as a
141
+ private dialect). The continuous-variant dot is a GLASS primitive:
142
+ a translucent tinted fill over a backdrop blur with a hairline
143
+ ring. These knobs let consumers retune the resting glass + the
144
+ per-state tints without a `:deep()` reach.
145
+ fill — resting translucent fill
146
+ blur — backdrop blur tier behind the dot
147
+ ring — hairline glass ring (border-color)
148
+ tint-current — wash colour for the active-phase dot
149
+ tint-completed — wash colour for the completed-phase dot
150
+ check-color — completion-tick stroke (defaults to the
151
+ completed tint) */
152
+ --timeline-dot-fill: var(--surface-tint-12);
153
+ --timeline-dot-blur: var(--glass-blur-quiet);
154
+ --timeline-dot-ring: var(--glass-border-floating);
155
+ --timeline-dot-tint-current: var(--accent, var(--foreground));
156
+ --timeline-dot-tint-completed: var(--success, var(--foreground));
157
+ --timeline-dot-check-color: var(--timeline-dot-tint-completed);
158
+
159
+ /* Continuous-variant specific — seam dividers between regions.
160
+ Set `--timeline-continuous-seam-opacity: 0` to suppress the
161
+ inter-region 1px dividers entirely. Default `0.25` reads as a
162
+ subtle hairline; the `--timeline-continuous-seam-color` knob lets
163
+ consumers override the seam tint independently of opacity. */
164
+ --timeline-continuous-seam-opacity: 0.25;
165
+ --timeline-continuous-seam-color: color-mix(
166
+ in srgb,
167
+ var(--foreground) calc(var(--timeline-continuous-seam-opacity) * 100%),
168
+ transparent
169
+ );
170
+
171
+ /* Per-segment default gradient fallback — applied when a segment
172
+ omits its `gradient` field. Consumers can override per-phase via
173
+ the `--timeline-segment-gradient-{key}` knobs below. */
174
+ --timeline-segment-default-gradient: linear-gradient(
175
+ 90deg,
176
+ var(--surface-tint-15),
177
+ var(--surface-tint-25)
178
+ );
179
+
180
+ /* Per-phase gradient defaults — paint the canonical chart palette
181
+ at the gradient leading edge, fading to a 60%-opacity tail. The
182
+ speedtest consumer wires these via `gradient: "var(--timeline-segment-gradient-ping)"`
183
+ per segment; the same names work for any consumer who follows the
184
+ ping/download/upload/jitter taxonomy. */
185
+ --timeline-segment-gradient-ping: linear-gradient(
186
+ 90deg,
187
+ var(--chart-ping),
188
+ color-mix(in srgb, var(--chart-ping) 60%, transparent)
189
+ );
190
+ --timeline-segment-gradient-download: linear-gradient(
191
+ 90deg,
192
+ var(--chart-download),
193
+ color-mix(in srgb, var(--chart-download) 60%, transparent)
194
+ );
195
+ --timeline-segment-gradient-upload: linear-gradient(
196
+ 90deg,
197
+ var(--chart-upload),
198
+ color-mix(in srgb, var(--chart-upload) 60%, transparent)
199
+ );
200
+ --timeline-segment-gradient-jitter: linear-gradient(
201
+ 90deg,
202
+ var(--chart-jitter),
203
+ color-mix(in srgb, var(--chart-jitter) 60%, transparent)
204
+ );
205
+
206
+ /* ═══════════════════════════════════════════════
207
+ §17 METRIC
208
+
209
+ MetricRow / MetricStack value-clamp dialect. The declared values are the
210
+ `audacious` poster register — the hero-scale clamp for a single giant
211
+ number; MetricStack's `[data-register="result"]` selector overrides it
212
+ locally for the compact multi-row ledger. Three clamp arms each: `min`
213
+ (floor), `cqi` (the binding container-query middle term), `max`
214
+ (ceiling); unit carries min/max only (its cqi is a fixed 6cqi).
215
+ ═══════════════════════════════════════════════ */
216
+
217
+ /* Value register — audacious-poster hero clamp */
218
+ --metric-row-value-clamp-min: 4.5rem;
219
+ --metric-row-value-clamp-cqi: 34cqi;
220
+ --metric-row-value-clamp-max: var(--type-display-hero);
221
+
222
+ /* Unit register — one tier below the value it qualifies */
223
+ --metric-row-unit-clamp-min: 1.5rem;
224
+ --metric-row-unit-clamp-max: 3.25rem;
225
+
226
+ /* Label register — uppercase, the binding row-height term in the
227
+ compact `result` register */
228
+ --metric-row-label-clamp-min: 1.125rem;
229
+ --metric-row-label-clamp-cqi: 5cqi;
230
+ --metric-row-label-clamp-max: 2.75rem;
231
+
232
+ /* ═══════════════════════════════════════════════
233
+ §2.D INSTRUMENT-CLUSTER COMPOSITION RHYTHM
234
+
235
+ The instrument-chassis family owns the under-meter / progress-cluster
236
+ grammar.
237
+
238
+ • `--meter-progress-inset` — the negative-margin inset that pulls the
239
+ under-meter bar INTO the unpainted ring lane around the dial canvas
240
+ (~4% of meter-size). Consumed at `.phase-progress` via
241
+ `margin-block-start: calc(-1 * var(--meter-progress-inset))`. The
242
+ `--meter-size` reference resolves against the consumer's own
243
+ declaration; the 200px fallback keeps the calc well-defined.
244
+ • `--progress-stack-gap` — vertical rhythm between any two stacked
245
+ progress rails inside one cluster.
246
+ ═══════════════════════════════════════════════ */
247
+ --meter-progress-inset: calc(var(--meter-size, 200px) * 0.04);
248
+ --progress-stack-gap: clamp(0.1875rem, 0.4cqi, 0.375rem);
249
+
250
+ /* ═══════════════════════════════════════════════
251
+ §2.E CELEBRATION-TIER REGISTER
252
+
253
+ Shared peak for any "completion" / "thank-you" surface.
254
+
255
+ • `--celebration-row-rhythm` — gap between the cluster's rows (cqi-axis).
256
+ • `--text-celebration-headline-size` — the single designed peak both
257
+ celebration surfaces clamp toward (cqi-axis).
258
+ • `--complete-headline-size` — the per-consumer font-size hook a consumer
259
+ assigns the canon clamp to so its headline pegs at the shared peak;
260
+ the default falls back to a smaller hero-rung clamp.
261
+ ═══════════════════════════════════════════════ */
262
+ --celebration-row-rhythm: clamp(0.5rem, 1.6cqi, 1rem);
263
+ --text-celebration-headline-size: clamp(2.5rem, 12cqi, 9rem);
264
+ --complete-headline-size: clamp(2.25rem, 11cqi, 4rem);
265
+
266
+ /* ═══════════════════════════════════════════════
267
+ §19 TABLE DENSITY
268
+
269
+ A single unitless knob `--table-density` scales the cell padding +
270
+ header row height of the Table / DataTable primitive. Default `1`
271
+ resolves to 1rem cell padding + 3rem header height; 0.75 is a compact
272
+ admin table, 1.25 is comfortable/touch-friendly. The derived tokens are
273
+ read by the `table-cell` / `table-head` utilities; changing the knob
274
+ cascades instantly via CSS inheritance — no JS prop needed.
275
+ ═══════════════════════════════════════════════ */
276
+ --table-density: 1;
277
+ --table-cell-px: calc(1rem * var(--table-density));
278
+ --table-cell-py: calc(1rem * var(--table-density));
279
+ --table-head-h: calc(3rem * var(--table-density));
280
+ --table-head-px: calc(1rem * var(--table-density));
281
+
282
+ /* ═══════════════════════════════════════════════
283
+ §20 PLATFORM MOTION (AQ.W5)
284
+
285
+ The native-platform motion substrate axes. Three families, each read
286
+ by a `@supports`-gated CSS recipe in `scroll-driven.css`,
287
+ `animations.css` (§TOP-LAYER), and `view-transition.css` — every visual
288
+ knob a token so a consumer retunes without editing library source.
289
+
290
+ SCROLL-DRIVEN (scroll-driven.css). Values mirror the JS-fallback
291
+ composable defaults (`useScrollProgress` / `useStaggerReveal`) so the
292
+ native CSS path and the fallback path read identically — no visual seam
293
+ at the `@supports` boundary.
294
+
295
+ TOP-LAYER (animations.css §TOP-LAYER). The `@starting-style` entry/exit
296
+ grammar for native `<dialog>` / `[popover]` glass surfaces. Backdrop dim
297
+ uses the `hsl(var(--background) / α)` channel form — the legitimate
298
+ single-token alpha case (AQ.W2's color-mix migration is orthogonal).
299
+
300
+ VIEW-TRANSITION (view-transition.css). The shared `.gl-list-item` group
301
+ recipe + the `--vt-*` axes the `useViewTransition` substrate consumers
302
+ (dock layer swap, muster J's verdict re-rank) tune their swap against.
303
+ ═══════════════════════════════════════════════ */
304
+ --scroll-progress-scroller: root;
305
+ --scroll-reveal-rise: 6px;
306
+ --scroll-reveal-range-end: 60%;
307
+
308
+ --top-layer-enter-scale: 0.96;
309
+ --top-layer-backdrop-blur: 8px;
310
+ --top-layer-backdrop-dim: 0.5;
311
+
312
+ --vt-duration: var(--duration-normal);
313
+ /* AX.W05 — ONE iOS-spring vocabulary: every spring-flavored transition reads
314
+ a governed `--spring-*` register. The legacy apple-spring cubic-bezier
315
+ (+27.5% overshoot) was a SECOND authority beside the regen `--spring-*`
316
+ cohort; it is EXCISED. Its emphatic-overshoot register maps to the playful
317
+ `--spring-bouncy` (the closest `linear()` overshoot stop-set), so the VT
318
+ default + the cards/top-layer transitions share one spring primitive
319
+ (CPU + GPU sample the same curve). No cubic-bezier fallback seed survives —
320
+ the `linear()` spring degrades to `ease` where `linear()` is unsupported. */
321
+ --vt-ease: var(--spring-bouncy);
322
+ --vt-rise: 8px;
323
+
324
+ /* AT.W6-dock-c / AU.W8 — the dock layer-swap morph timing, minted ONCE so
325
+ both engine paths are timing-IDENTICAL: the FLIP fallback (via
326
+ `--dock-motion-resize`), the native View-Transition group (its
327
+ `animation-timing-function`), AND the runtime SpringProgress driver
328
+ (AU.W8.3) consume this same `(0.32, 0.7)` source curve. Retires the AQ.W6
329
+ fork where the VT path ran `--vt-ease` (apple-spring, +27.5% overshoot)
330
+ while the FLIP ran the snappy spring. `--vt-ease` still defaults the
331
+ other VT recipes (`.gl-list-item`).
332
+
333
+ AU.W8 — RETARGET snappy → dock. `--spring-snappy` (ζ=0.65, +6.8%) read as
334
+ mechanical: a stiff plateau at ~48% with too little overshoot to feel
335
+ alive ("not iOS-smooth"). AW.W2 then retuned the dock spring to the
336
+ iOS-control register: `--spring-dock` ((0.32, 0.7), ~+4.6%) settles snappy
337
+ with a restrained overshoot — the felt iOS dock morph, off the prior
338
+ playful +18.5% register. The runtime driver's DOCK_SPRING const MIRRORS the
339
+ (0.32, 0.7) PRESETS row, so the CSS token and the JS-driven morph are
340
+ bit-identical. */
341
+ --dock-resize-spring: var(--spring-dock);
342
+
343
+ /* AT.W7-dock-b — dock-control press micro-feedback spring. A TRANSFORM-ONLY
344
+ spring (`scale`/`rotate`) the dock controls apply to their hover/press
345
+ activation so the squish reads with a touch of spring-back rather than a
346
+ flat ease. STRICTLY transform-scoped: it must never touch the surface-tier
347
+ `[data-held]` fades (background/border/box-shadow), which stay on
348
+ `--duration-fast var(--ease-standard)`. The duration pairs with
349
+ `--duration-fast`; consumers retune the whole feel via this one token.
350
+
351
+ AY.W-DOCK2 (D6) — the register is `--spring-smooth`, the §6 easing-doctrine
352
+ transform-press register (tokens.css §2: transform hover/press/active →
353
+ `--spring-smooth`/`--spring-snappy`, NEVER `--spring-bouncy`; a press must
354
+ settle, never overshoot into a visible bounce). The prior `--spring-bouncy`
355
+ ROOT default was off-doctrine, shadowed for the four named controls by a
356
+ per-surface re-point in dock-controls.css — the exact per-surface fork the
357
+ doctrine kills. The re-point is now a DEAD byte-identical redeclaration and is
358
+ DELETED; the ROOT token IS the doctrine register, so any other consumer of
359
+ `--dock-press-spring` inherits the correct smooth register. */
360
+ --dock-press-spring: var(--duration-fast) var(--spring-smooth);
361
+ }