@mkbabb/glass-ui 3.8.0 → 3.10.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 (228) hide show
  1. package/README.md +1 -6
  2. package/dist/{CardAction-q2qHCJFG.js → CardAction-DuArVky-.js} +4 -4
  3. package/dist/{CommandShortcut-SzWRhROC.js → CommandShortcut-CefCj5mt.js} +7 -7
  4. package/dist/{ContextMenuSubContent-Do977Cbf.js → ContextMenuSubContent-Bhg4f5jX.js} +3 -3
  5. package/dist/{DataTable-CvlWXz65.js → DataTable-CUHMukiQ.js} +1 -1
  6. package/dist/{DialogContent-DjZWT3lK.js → DialogContent-BRkT1cjP.js} +1 -1
  7. package/dist/{MetricBadge-lTc002u2.js → MetricBadge-BZVWIxNy.js} +6 -4
  8. package/dist/{Notification-BxK8LZMw.js → Notification-DLMhblXR.js} +2 -2
  9. package/dist/{NumberFieldContent-CLNVR1iY.js → NumberFieldContent-BbLOh8RU.js} +2 -2
  10. package/dist/{SelectScrollDownButton-C7TRe-ep.js → SelectScrollDownButton-T32cVFeM.js} +3 -3
  11. package/dist/{SelectSeparator-L8pPEn4L.js → SelectSeparator-C4Ql0gzV.js} +1 -1
  12. package/dist/{Switch-LDKLmmgx.js → Switch-Ch-k3Rv-.js} +1 -1
  13. package/dist/{TabsList-qyHZ2lKY.js → TabsList-B8CVOQPC.js} +2 -2
  14. package/dist/{Toaster-CabYEEF_.js → Toaster-1rYWrmAm.js} +1 -1
  15. package/dist/{ToggleGroupItem-CkXUcBlt.js → ToggleGroupItem-Cev4pOVK.js} +4 -4
  16. package/dist/animated-digit.js +1 -1
  17. package/dist/api/index.d.ts +2 -1
  18. package/dist/api.js +1 -1
  19. package/dist/aurora.js +236 -545
  20. package/dist/{badge-DHQrc_GQ.js → badge-CaoFJzRb.js} +5 -5
  21. package/dist/badge.js +1 -1
  22. package/dist/{button-CAywcrhO.js → button-DN39cGqL.js} +13 -12
  23. package/dist/button.js +1 -1
  24. package/dist/card.js +1 -1
  25. package/dist/carousel.js +1 -1
  26. package/dist/color.js +1 -1
  27. package/dist/command.js +1 -1
  28. package/dist/{compile-BBTRjvQS.js → compile-BOXjLUxu.js} +24 -24
  29. package/dist/components/custom/aurora/composables/atoms.d.ts +21 -4
  30. package/dist/components/custom/aurora/composables/runtime.d.ts +0 -9
  31. package/dist/components/custom/aurora/composables/uniformBridge.d.ts +0 -11
  32. package/dist/components/custom/aurora/constants/renderMode.d.ts +0 -32
  33. package/dist/components/custom/aurora/constants/shaders/brush.glsl.d.ts +1 -1
  34. package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +2 -2
  35. package/dist/components/custom/aurora/constants/shaders/tonemap.glsl.d.ts +1 -1
  36. package/dist/components/custom/aurora/index.d.ts +1 -1
  37. package/dist/components/custom/configurator/ConfiguratorLayer.vue.d.ts +1 -1
  38. package/dist/components/custom/constellation/Constellation.vue.d.ts +73 -1
  39. package/dist/components/custom/constellation/constellationField.d.ts +255 -3
  40. package/dist/components/custom/constellation/index.d.ts +2 -2
  41. package/dist/components/custom/dock/DockSeparator.vue.d.ts +3 -0
  42. package/dist/components/custom/dock/DockTabButton.vue.d.ts +4 -3
  43. package/dist/components/custom/dock/GlassDock.vue.d.ts +45 -63
  44. package/dist/components/custom/dock/composables/dockContext.d.ts +7 -0
  45. package/dist/components/custom/dock/index.d.ts +2 -1
  46. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +29 -0
  47. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +6 -0
  48. package/dist/components/custom/fourier-field/index.d.ts +25 -1
  49. package/dist/components/custom/fourier-field/math.d.ts +3 -8
  50. package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +8 -10
  51. package/dist/components/custom/goo-blob/composables/useBlobMood.d.ts +19 -5
  52. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +6 -14
  53. package/dist/components/custom/goo-blob/index.d.ts +1 -1
  54. package/dist/components/custom/goo-blob/types.d.ts +59 -25
  55. package/dist/components/custom/handmark/HandMark.vue.d.ts +29 -0
  56. package/dist/components/custom/handmark/brush.d.ts +219 -0
  57. package/dist/components/custom/handmark/freehand.d.ts +69 -0
  58. package/dist/components/custom/handmark/geometry.d.ts +32 -0
  59. package/dist/components/custom/handmark/index.d.ts +21 -0
  60. package/dist/components/custom/handmark/ink.d.ts +11 -0
  61. package/dist/components/custom/handmark/texture.d.ts +39 -0
  62. package/dist/components/custom/handmark/types.d.ts +53 -0
  63. package/dist/components/custom/handmark/useHandMark.d.ts +66 -0
  64. package/dist/components/custom/metric-badge/MetricBadge.vue.d.ts +8 -0
  65. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +92 -0
  66. package/dist/components/custom/tabs/composables/useTabIndicator.d.ts +49 -0
  67. package/dist/components/custom/tabs/index.d.ts +2 -5
  68. package/dist/components/ui/button/index.d.ts +1 -1
  69. package/dist/components/ui/card/Card.vue.d.ts +5 -3
  70. package/dist/components/ui/carousel/CarouselNext.vue.d.ts +1 -1
  71. package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +1 -1
  72. package/dist/components/ui/carousel/GlassCarouselPager.vue.d.ts +3 -4
  73. package/dist/components/ui/slider/index.d.ts +22 -11
  74. package/dist/components/ui/tabs/TabsList.vue.d.ts +1 -1
  75. package/dist/composables/color/index.d.ts +12 -7
  76. package/dist/composables/context/createContext.d.ts +1 -1
  77. package/dist/composables/glass/webgl/shaders/procedural-color.glsl.d.ts +1 -6
  78. package/dist/composables/motion/core/index.d.ts +1 -0
  79. package/dist/composables/motion/useRouteTransition.d.ts +42 -0
  80. package/dist/configurator.js +1 -1
  81. package/dist/confirm-dialog.js +1 -1
  82. package/dist/constellation.js +212 -72
  83. package/dist/context-menu.js +1 -1
  84. package/dist/controls.js +1 -1
  85. package/dist/dark.js +1 -1
  86. package/dist/data-table.js +1 -1
  87. package/dist/deck-progress.js +1 -1
  88. package/dist/dialog.js +1 -1
  89. package/dist/dock.js +257 -243
  90. package/dist/{dropdown-menu-B_4bWyyG.js → dropdown-menu-D77jX6Df.js} +3 -3
  91. package/dist/dropdown-menu.js +1 -1
  92. package/dist/expandable-container.js +61 -38
  93. package/dist/forms.js +5 -5
  94. package/dist/fourier-field.js +89 -97
  95. package/dist/fourier-math.d.ts +1 -0
  96. package/dist/fourier-math.js +2 -0
  97. package/dist/glass-panel.js +1 -1
  98. package/dist/glass-ui.css +1 -1
  99. package/dist/glass-ui.js +107 -109
  100. package/dist/goo-blob.js +316 -297
  101. package/dist/handmark.d.ts +1 -0
  102. package/dist/handmark.js +609 -0
  103. package/dist/hover-popover.js +1 -1
  104. package/dist/icon-tooltip.js +1 -1
  105. package/dist/index.d.ts +1 -2
  106. package/dist/keyboard.js +1 -1
  107. package/dist/labeled-field.js +5 -5
  108. package/dist/math-DTpRVC0e.js +27 -0
  109. package/dist/{menuItemVariants-DKM85SNE.js → menuItemVariants-CCoBNkU5.js} +1 -1
  110. package/dist/metric-badge.js +1 -1
  111. package/dist/metric-stack.js +1 -1
  112. package/dist/motion-core.js +70 -69
  113. package/dist/motion.js +2 -2
  114. package/dist/notification.js +1 -1
  115. package/dist/number-field.js +1 -1
  116. package/dist/pulse.js +1 -1
  117. package/dist/reactive.js +1 -1
  118. package/dist/scrolling-text.js +1 -1
  119. package/dist/search.js +4 -4
  120. package/dist/select.js +2 -2
  121. package/dist/{slider-D9puf-Ko.js → slider-CyzcxBoh.js} +6 -6
  122. package/dist/slider.js +1 -1
  123. package/dist/sortable-list.js +1 -1
  124. package/dist/status-dot.js +17 -16
  125. package/dist/styles/animations.css +80 -20
  126. package/dist/styles/cards.css +2 -2
  127. package/dist/styles/components.css +1 -1
  128. package/dist/styles/dock/density.css +230 -0
  129. package/dist/styles/dock/layer-group.css +275 -0
  130. package/dist/styles/dock/layers.css +355 -0
  131. package/dist/styles/dock/morph.css +244 -0
  132. package/dist/styles/dock/overflow.css +201 -0
  133. package/dist/styles/dock/shell.css +457 -0
  134. package/dist/styles/dock-controls.css +205 -55
  135. package/dist/styles/dock.css +42 -1349
  136. package/dist/styles/drawer.css +12 -4
  137. package/dist/styles/glass.css +535 -78
  138. package/dist/styles/index.css +12 -11
  139. package/dist/styles/paper.css +68 -2
  140. package/dist/styles/theme.css +58 -0
  141. package/dist/styles/tokens.css +601 -69
  142. package/dist/styles/transitions.css +20 -2
  143. package/dist/styles/utilities.css +218 -78
  144. package/dist/styles/view-transition.css +51 -0
  145. package/dist/switch.js +1 -1
  146. package/dist/tabs.js +182 -151
  147. package/dist/timeline.js +1 -1
  148. package/dist/toast.js +1 -1
  149. package/dist/toggle-group.js +1 -1
  150. package/dist/{useAnimatedNumber-C_3wZLx4.js → useAnimatedNumber-Bcpy5Etf.js} +1 -1
  151. package/dist/{useConfiguratorState-CMff4GzH.js → useConfiguratorState-DxAqksK6.js} +21 -10
  152. package/dist/{useGlassRenderer-5I0YkI4t.js → useGlassRenderer-D7YGOYiM.js} +1 -1
  153. package/dist/useViewTransition-DaN5Zrox.js +21 -0
  154. package/dist/vReveal-zUIQk-rJ.js +53 -0
  155. package/dist/watercolor-dot.js +1 -1
  156. package/package.json +80 -39
  157. package/src/styles/animations.css +80 -20
  158. package/src/styles/cards.css +2 -2
  159. package/src/styles/dock/density.css +230 -0
  160. package/src/styles/dock/layer-group.css +275 -0
  161. package/src/styles/dock/layers.css +355 -0
  162. package/src/styles/dock/morph.css +244 -0
  163. package/src/styles/dock/overflow.css +201 -0
  164. package/src/styles/dock/shell.css +457 -0
  165. package/src/styles/dock-controls.css +205 -55
  166. package/src/styles/dock.css +42 -1349
  167. package/src/styles/drawer.css +12 -4
  168. package/src/styles/glass.css +535 -78
  169. package/src/styles/index.css +12 -11
  170. package/src/styles/paper.css +68 -2
  171. package/src/styles/theme.css +58 -0
  172. package/src/styles/tokens.css +601 -69
  173. package/src/styles/transitions.css +20 -2
  174. package/src/styles/utilities.css +218 -78
  175. package/src/styles/view-transition.css +51 -0
  176. package/dist/DiscoGlyph-CG0F410s.js +0 -132
  177. package/dist/GlyphFace-DRjDkB0s.js +0 -51
  178. package/dist/UnderlineTabs-Uxn-R3MT.js +0 -39
  179. package/dist/components/custom/aurora/composables/gpuRuntime.d.ts +0 -16
  180. package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +0 -7
  181. package/dist/components/custom/aurora/constants/shaders/painterly.wgsl.d.ts +0 -7
  182. package/dist/components/custom/aurora/constants/shaders/wake.wgsl.d.ts +0 -4
  183. package/dist/components/custom/disco-glyph/DiscoGlyph.vue.d.ts +0 -58
  184. package/dist/components/custom/disco-glyph/index.d.ts +0 -1
  185. package/dist/components/custom/glass-carousel/GlassCarousel.vue.d.ts +0 -36
  186. package/dist/components/custom/glass-carousel/GlassCarouselItem.vue.d.ts +0 -28
  187. package/dist/components/custom/glass-carousel/index.d.ts +0 -4
  188. package/dist/components/custom/glass-carousel/useGlassCarousel.d.ts +0 -30
  189. package/dist/components/custom/glyph-face/GlyphFace.vue.d.ts +0 -64
  190. package/dist/components/custom/glyph-face/index.d.ts +0 -2
  191. package/dist/components/custom/glyph-face/keys.d.ts +0 -9
  192. package/dist/components/custom/responsive-tabs/ResponsiveTabs.vue.d.ts +0 -73
  193. package/dist/components/custom/responsive-tabs/index.d.ts +0 -2
  194. package/dist/components/custom/tabs/BouncyTabs.vue.d.ts +0 -27
  195. package/dist/components/custom/tabs/BouncyToggle.vue.d.ts +0 -60
  196. package/dist/components/custom/tabs/UnderlineTabs.vue.d.ts +0 -20
  197. package/dist/components/custom/tabs/composables/useBouncySlider.d.ts +0 -39
  198. package/dist/composables/glass/createGPUCanvas.d.ts +0 -40
  199. package/dist/disco-glyph.d.ts +0 -1
  200. package/dist/disco-glyph.js +0 -2
  201. package/dist/glass-carousel.d.ts +0 -1
  202. package/dist/glass-carousel.js +0 -219
  203. package/dist/glyph-face.d.ts +0 -1
  204. package/dist/glyph-face.js +0 -3
  205. package/dist/keys-BsYjEFOW.js +0 -9
  206. package/dist/responsive-tabs.d.ts +0 -1
  207. package/dist/responsive-tabs.js +0 -95
  208. package/dist/styles/disco-glyph.css +0 -26
  209. package/dist/styles/glyph-face.css +0 -92
  210. package/dist/vReveal-CqaCz_mC.js +0 -44
  211. package/src/styles/disco-glyph.css +0 -26
  212. package/src/styles/glyph-face.css +0 -92
  213. /package/dist/{DeckProgress-AVgbIULY.js → DeckProgress-Dmk4_AKN.js} +0 -0
  214. /package/dist/{HoverPopover-D56O6Ylp.js → HoverPopover-2LOIW34a.js} +0 -0
  215. /package/dist/{IconTooltip-D2T5nYOM.js → IconTooltip-Cus0fvK0.js} +0 -0
  216. /package/dist/{Input-DVG_J0ne.js → Input-xuDwALQR.js} +0 -0
  217. /package/dist/{ScrollingText-CVyqxvfv.js → ScrollingText-BPP84wKo.js} +0 -0
  218. /package/dist/{color-DMLTunJK.js → color-C5ls_QF7.js} +0 -0
  219. /package/dist/{constants-BPOqYJAm.js → constants-yKeKnE84.js} +0 -0
  220. /package/dist/{presets-D1XPuTj-.js → presets-Dkdv55Gt.js} +0 -0
  221. /package/dist/{prng-COGhh02-.js → prng-D27-B3tK.js} +0 -0
  222. /package/dist/{useGlobalDark-D3EBWzXK.js → useGlobalDark-d6waty-X.js} +0 -0
  223. /package/dist/{useIntersectionPause-Bj4sPkMh.js → useIntersectionPause-Cck5Uxk8.js} +0 -0
  224. /package/dist/{useInterval-CcLfq2WU.js → useInterval-Dsmqwi03.js} +0 -0
  225. /package/dist/{useKeyboardShortcuts-BXWXOZ-9.js → useKeyboardShortcuts-CyIYrndH.js} +0 -0
  226. /package/dist/{useScrollProgress-C9ysDic5.js → useScrollProgress-CffFGLa5.js} +0 -0
  227. /package/dist/{useSortable-MGAbCGVJ.js → useSortable-C8ReQ50P.js} +0 -0
  228. /package/dist/{useTextHighlight-9nMW23Qb.js → useTextHighlight-CWEi25hf.js} +0 -0
@@ -60,10 +60,15 @@
60
60
  * over the glass tiers.
61
61
  * 5. paper.css — paper underpaint + grain overlay utilities.
62
62
  * Pairs with (4) for paper-on-glass compositions.
63
- * 6. dock.css — dock shell / density / grain / layer-crossfade
64
- * contract + the shared cross-control four-state
65
- * comma-groups. Component utility layer; consumes
66
- * (1) + (3).
63
+ * 6. dock.css — the dock CORE: the `@property --dock-morph-t`
64
+ * registration, the shared cross-control four-state
65
+ * comma-groups, and the `@import`s of the cohesive
66
+ * `dock/*.css` partials (shell · morph · density ·
67
+ * layers · layer-group · overflow — AX.W06 carved
68
+ * the 1762-line god-module into single-axis partials,
69
+ * each < 500 lines, all in the SAME @layer components
70
+ * so the cascade is isomorphic). Component utility
71
+ * layer; consumes (1) + (3).
67
72
  * 6b. dock-controls.css — the five dock CONTROL families carved out of
68
73
  * dock.css (AU.W8b.3): .dock-icon-button,
69
74
  * .dark-mode-toggle-button, .dock-tab-button + tiers,
@@ -99,13 +104,11 @@
99
104
  * binding + bezel hairlines + sibling divider
100
105
  * rule). Composes alongside instrument-chassis;
101
106
  * shares the bezel-line twin-pixel idiom.
102
- * 14. glyph-face.css — P-tranche component CSS (cap + backplate).
103
- * 15. disco-glyph.css — P-tranche component CSS (layered fills).
104
- * 16. hover-popover.css — V.W3 popover-animation grammar.
105
- * 17. drawer.css — AN.W3 detented bottom-sheet grammar (glass
107
+ * 14. hover-popover.css — V.W3 popover-animation grammar.
108
+ * 15. drawer.css — AN.W3 detented bottom-sheet grammar (glass
106
109
  * sheet surface + peek handle + snap-stop rules).
107
110
  *
108
- * Per-package component CSS lives at (12)-(17) (loaded after utilities so
111
+ * Per-package component CSS lives at (12)-(15) (loaded after utilities so
109
112
  * component-local recipes can override). New per-package CSS files append
110
113
  * to that tail.
111
114
  */
@@ -127,8 +130,6 @@
127
130
  @import "./utilities.css";
128
131
  @import "./instrument-chassis.css";
129
132
  @import "./instrument-rail.css";
130
- @import "./glyph-face.css";
131
- @import "./disco-glyph.css";
132
133
  @import "./hover-popover.css";
133
134
  @import "./drawer.css";
134
135
 
@@ -7,8 +7,54 @@
7
7
  *
8
8
  * Texture: feTurbulence baseFrequency 0.65, 4 octaves, desaturated via
9
9
  * feColorMatrix, blended multiply (light) / soft-light (dark). Tiles ~60px.
10
+ *
11
+ * ── THE GRAIN RUNGS (D6.c M5 — the printed-paper tooth, FELT not seen) ─────────
12
+ * The warm-paper grain must be FELT at rest — a premium editorial stock has a
13
+ * felt depth, and the measured finding (ds2-medium M5 / fd-usf-gallery §F) is
14
+ * that the shipped `--glass-grain-opacity: 0.025` floor reads as NOTHING. This
15
+ * file lifts the grain off that floor and mints a SECOND rung for chart plates:
16
+ *
17
+ * --glass-grain-opacity — the PAGE grain. Lifted here to a perceptible-
18
+ * but-deft 0.038 default (the local floor below).
19
+ * Numeric justification: the kitsch line is
20
+ * ~0.05 (above it the grain reads as screen-noise
21
+ * / a dirty monitor, ds2-medium M5); 0.025 is
22
+ * sub-perceptual ("felt as nothing"). 0.038 is
23
+ * the calibrated MIDPOINT — ~1.5× the dead floor,
24
+ * ~0.76× the kitsch ceiling — felt at rest, never
25
+ * seen AS grain. (The canonical token still lives
26
+ * in tokens.css; this utility reads it with the
27
+ * lifted fallback so a no-override mount is felt.)
28
+ * --glass-grain-opacity-plate — the PLATE grain (NEW rung). A chart plate is
29
+ * the FIGURE's "paper", so it wants slightly more
30
+ * tooth than the page (M5): 0.045 — still below
31
+ * the 0.05 kitsch ceiling, distinctly felt so the
32
+ * plate reads as PRINTED on the same stock as the
33
+ * page, not pasted onto it.
34
+ *
35
+ * THE DATA-REGION MASK CONTRACT (M5, non-negotiable). Grain on the FRAME, never
36
+ * under the FIGURE — a fleck over a choropleth reads as a data artifact; on the
37
+ * plate margin it reads as paper. `paper-grain-overlay` exposes a custom-property
38
+ * MASK SLOT (`--paper-grain-mask`) so a consumer can carve the data viewport out
39
+ * of the grain ::after: set it to a gradient/`url()` that is transparent over the
40
+ * data region and opaque over the frame, and the grain is masked off the figure.
41
+ * Default `none` (the whole surface is grained — the page/card case, no data to
42
+ * fence). The plate rung is opt-in via `[data-grain="plate"]`.
10
43
  */
11
44
 
45
+ /* The grain rung DEFAULTS — lifted off the tokens.css floor (D6.c M5). These are
46
+ plain custom-property fallbacks the utilities read; a consumer/tokens.css value
47
+ still wins (`var(--glass-grain-opacity, <floor>)`), so this only sets the floor
48
+ a no-override mount inherits. The plate rung is minted here (no canonical
49
+ tokens.css home is touched in this lane — D6.b owns tokens.css). */
50
+ @layer components {
51
+ :root {
52
+ /* The PLATE grain rung — distinct from the page rung; the figure's paper
53
+ wants more tooth. Minted in this lane; a consumer overrides at :root. */
54
+ --glass-grain-opacity-plate: 0.045;
55
+ }
56
+ }
57
+
12
58
  @utility paper-underpaint {
13
59
  position: fixed;
14
60
  inset: 0;
@@ -17,7 +63,8 @@
17
63
  background-image: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' 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%3CfeBlend mode='multiply' in2='SourceGraphic'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E");
18
64
  background-repeat: repeat;
19
65
  background-size: 60px 60px;
20
- opacity: var(--glass-grain-opacity);
66
+ /* Lifted floor — the page grain is FELT at rest (0.038), not the dead 0.025. */
67
+ opacity: var(--glass-grain-opacity, 0.038);
21
68
  mix-blend-mode: multiply;
22
69
  }
23
70
 
@@ -39,8 +86,27 @@
39
86
  background-image: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' 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%3CfeBlend mode='multiply' in2='SourceGraphic'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E");
40
87
  background-repeat: repeat;
41
88
  background-size: 60px 60px;
42
- opacity: var(--glass-grain-opacity);
89
+ /* Lifted floor — felt on the frame at rest (0.038). */
90
+ opacity: var(--glass-grain-opacity, 0.038);
43
91
  mix-blend-mode: overlay;
92
+ /* THE DATA-REGION MASK SLOT (M5). Default `none` = the whole surface is
93
+ grained (page/card — no data to fence). A consumer that grains a chart
94
+ plate sets `--paper-grain-mask` to a gradient/url() transparent over the
95
+ data viewport + opaque over the frame, carving the figure out of the
96
+ grain so no fleck lands on a tier fill. `mask` is Baseline; a
97
+ non-supporting engine ignores it and keeps the full-surface grain (the
98
+ page case is unaffected — the mask only matters when a consumer fences
99
+ the data region). */
100
+ mask: var(--paper-grain-mask, none);
101
+ -webkit-mask: var(--paper-grain-mask, none);
102
+ }
103
+
104
+ /* The PLATE rung — a chart plate opts in via `[data-grain="plate"]` to the
105
+ higher-tooth `--glass-grain-opacity-plate` (the figure's paper reads as the
106
+ same stock as the page, with a touch more tooth). Pair with the mask slot to
107
+ fence the data viewport. */
108
+ &[data-grain="plate"]::after {
109
+ opacity: var(--glass-grain-opacity-plate, 0.045);
44
110
  }
45
111
  }
46
112
 
@@ -62,6 +62,50 @@
62
62
  The density-scaled --dock-card-radius (dock.css) resolves through this. */
63
63
  --radius-dock-card: var(--radius-3xl);
64
64
  --radius-tooltip: var(--radius-lg);
65
+
66
+ /* ── AX.W56 — the corner-SHAPE axis (parallel to the corner-RADIUS ladder above).
67
+ `corner-shape` only changes the CURVE within the `border-radius` box; the
68
+ region is still the `--radius-*` token. These are plain @theme (the radius
69
+ siblings' rationale applies — each alias is its own override point, and the
70
+ semantic shapes are value-identical keywords that must not collapse under
71
+ inline). Chrome 139+ only (~65% global May 2026); the un-gated `border-radius`
72
+ round stays the cross-engine CONTRACT and the `@supports (corner-shape:
73
+ superellipse(2))` gate (glass.css/dock.css) is the PE tier. NEVER make
74
+ corner-shape the contract — Safari/Firefox have no positive signal through 2026.
75
+
76
+ Superellipse exponent (MDN authoritative): `superellipse(K)` paints
77
+ |x|^(2K) + |y|^(2K) = 1, so the curve exponent n = 2K. The CSS `squircle`
78
+ keyword == `superellipse(2)` == n=4 — the iOS-idiomatic web squircle. The
79
+ k-PRIMITIVE band (a consumer dials 1.7–2.4 to taste; W42's dock-morph calc()s
80
+ its animated k against this ONE vocabulary — do not re-define a second k). */
81
+ --corner-k-squircle: 2; /* the squircle — superellipse(2), n=4 */
82
+ --corner-k-soft: 1.7; /* gentler, between round and squircle — n≈3.4 */
83
+ --corner-k-sharp: 2.4; /* crisper square-bias for large surfaces — n≈4.8 */
84
+
85
+ /* Semantic per-surface SHAPE aliases — the rounded-vs-squircle POLICY.
86
+ Cards, pills/buttons, small docks, and panels stay ROUND (the superellipse is
87
+ imperceptible at a 16px card radius or a stadium pill — dropping it there is
88
+ visually free). The big-dock card shell (the large --radius-dock-card / 24px
89
+ surface) is the one site where the squircle READS — the iOS-26 idiom the dock
90
+ wants. A consumer opts an additional large-radius surface in by re-pointing its
91
+ `--corner-shape-<surface>` at `superellipse(var(--corner-k-squircle))`. */
92
+ --corner-shape-card: round;
93
+ --corner-shape-pill: round;
94
+ --corner-shape-panel: round;
95
+ --corner-shape-bigdock: superellipse(var(--corner-k-squircle));
96
+ /* AX.W56(R1) — the overlay-band glass surfaces W54 makes glass-default
97
+ (Dialog + Sheet content) ride the squircle alongside the big-dock. They
98
+ sit at the large `--radius-dialog` (16px) modal radius where the
99
+ superellipse READS — the same iOS-26 idiom. @supports-gated in glass.css
100
+ over the `border-radius` round CONTRACT; a consumer dials either back to
101
+ round by re-pointing the alias. */
102
+ --corner-shape-dialog: superellipse(var(--corner-k-squircle));
103
+ --corner-shape-sheet: superellipse(var(--corner-k-squircle));
104
+ /* AX.W59 — the spectrum slider's track-height thumb reads as a SQUIRCLE
105
+ (the iOS color-picker idiom). It rides the same --corner-k-squircle
106
+ vocabulary; @supports-gated in Slider.vue over a --radius-* round
107
+ fallback. A consumer dials it to round (a circular knob) or to soft. */
108
+ --corner-shape-thumb: superellipse(var(--corner-k-squircle));
65
109
  }
66
110
 
67
111
  @theme inline {
@@ -77,6 +121,13 @@
77
121
  --text-subheading: var(--type-subheading);
78
122
  --text-heading: var(--type-heading);
79
123
  --text-title: var(--type-title);
124
+ /* AX.W50 D17 — the picker-family type-scale → `text-dropdown` /
125
+ `text-dropdown-secondary` utilities, bridging the `--dropdown-text` token pair
126
+ (tokens.css §10, a specialization of W51's `--control-text` comfort register)
127
+ so a Tailwind `text-dropdown` utility resolves the family scale. Mirrors the
128
+ `--text-small: var(--type-small)` ladder-bridge idiom above. */
129
+ --text-dropdown: var(--dropdown-text);
130
+ --text-dropdown-secondary: var(--dropdown-text-secondary);
80
131
  --text-display: var(--type-display-1);
81
132
  --text-display-1: var(--type-display-1);
82
133
  --text-display-2: var(--type-display-2);
@@ -257,6 +308,13 @@
257
308
  --color-gold: var(--gold);
258
309
  --color-gold-light: var(--gold-light);
259
310
  --color-gold-dark: var(--gold-dark);
311
+ --color-gold-deep: var(--gold-deep);
312
+ /* D6.b — the gilt family: the rim (gilt edge) + the legible gold ink. The
313
+ `@theme` bridge surfaces `text-gold-ink` / `border-gold-rim` utilities
314
+ beside the existing gold quad. `--gold-ink` clears cream-law ② on `--card`
315
+ in both arms (proof:gold-ink-contrast). */
316
+ --color-gold-rim: var(--gold-rim);
317
+ --color-gold-ink: var(--gold-ink);
260
318
 
261
319
  --color-rainbow-red: var(--rainbow-red);
262
320
  --color-rainbow-orange: var(--rainbow-orange);