@mkbabb/glass-ui 4.1.0 → 4.2.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 (430) hide show
  1. package/dist/{CardAction-8whJrLWt.js → CardAction-DlVP2evz.js} +58 -54
  2. package/dist/{CommandShortcut-D3yxgHNn.js → CommandShortcut-By-VQcLO.js} +3 -3
  3. package/dist/{ConfiguratorRow-CaP7U3ZA.js → ConfiguratorRow-YMXdINHx.js} +3 -3
  4. package/dist/{ContextMenuContent-B3ZsheLV.js → ContextMenuContent-CMWn6huB.js} +1 -1
  5. package/dist/{ContextMenuSubContent-DDRID3qC.js → ContextMenuSubContent-DvwWCUc0.js} +1 -1
  6. package/dist/{DataTable-Bc9kUtu_.js → DataTable-C4tG3eIJ.js} +4 -4
  7. package/dist/DialogContent-D8U9ZfWS.js +121 -0
  8. package/dist/{DialogScrollContent-TTuovQst.js → DialogScrollContent-BMekN7gq.js} +1 -1
  9. package/dist/{FadingScroll-DLRbH5Xr.js → FadingScroll-P8B30rAD.js} +1 -1
  10. package/dist/{HoverCardContent-Bel1gdLZ.js → HoverCardContent-DAmGYglo.js} +1 -1
  11. package/dist/{HoverPopover-BcIxvyqZ.js → HoverPopover-DYpBOzzF.js} +1 -1
  12. package/dist/{IconChip-DhbdGdFQ.js → IconChip-CQa7XZYc.js} +7 -5
  13. package/dist/{IconTooltip-B0zimd2H.js → IconTooltip-_df8M3xm.js} +1 -1
  14. package/dist/{Input-Cg9DF62r.js → Input-CyU4_hIC.js} +2 -2
  15. package/dist/{MetricBadge-RHdBP72w.js → MetricBadge-DQt_dGah.js} +1 -1
  16. package/dist/{Notification-CphK7AAm.js → Notification-BlSPJhtZ.js} +1 -1
  17. package/dist/{NumberFieldContent-D8cXeyO4.js → NumberFieldContent-Z3VxGu_6.js} +3 -3
  18. package/dist/PagerDots-CYlqVFd4.js +196 -0
  19. package/dist/PaperBackdrop-DYWgrnh8.js +42 -0
  20. package/dist/{PopoverContent-DL7E6vJP.js → PopoverContent-BuKyHZSz.js} +2 -2
  21. package/dist/{Progress-CnqB7gLm.js → Progress-C9SsdwIZ.js} +1 -1
  22. package/dist/{ScrollingText-CTZbA_cG.js → ScrollingText-DY3W1Jfh.js} +2 -2
  23. package/dist/{SelectScrollDownButton-DAKCBEdW.js → SelectScrollDownButton-3mFHX_R-.js} +15 -12
  24. package/dist/{Switch-B8RscmRu.js → Switch-uf-UKPA2.js} +1 -1
  25. package/dist/{Toaster-D9qIHjBI.js → Toaster-ozrsR4mP.js} +1 -1
  26. package/dist/{ToggleGroupItem-BLtr3TJq.js → ToggleGroupItem-BpzaVzNm.js} +4 -4
  27. package/dist/{TooltipProvider-BJ_Y5EGX.js → TooltipProvider-QQVM_80r.js} +1 -1
  28. package/dist/animated-digit.js +2 -2
  29. package/dist/api/index.d.ts +1 -0
  30. package/dist/api/types-extra.d.ts +3 -1
  31. package/dist/api.js +2 -2
  32. package/dist/aurora.js +163 -131
  33. package/dist/badge-Bt14yURi.js +72 -0
  34. package/dist/badge.js +1 -1
  35. package/dist/border-progress.js +1 -1
  36. package/dist/button-D1W9PrzI.js +130 -0
  37. package/dist/button.js +1 -1
  38. package/dist/canvas.js +1 -1
  39. package/dist/card.js +1 -1
  40. package/dist/carousel.js +227 -98
  41. package/dist/chipVariants-BJQ0I2kB.js +18 -0
  42. package/dist/collapsible.js +1 -1
  43. package/dist/color.js +1 -1
  44. package/dist/command.js +1 -1
  45. package/dist/components/custom/aurora/composables/glSetup.d.ts +1 -1
  46. package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +1 -1
  47. package/dist/components/custom/aurora/constants/presets.d.ts +29 -0
  48. package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -1
  49. package/dist/components/custom/aurora/index.d.ts +1 -1
  50. package/dist/components/custom/concentric/Concentric.vue.d.ts +15 -12
  51. package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +8 -3
  52. package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +8 -4
  53. package/dist/components/custom/concentric/composables/levelField.d.ts +50 -0
  54. package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +7 -4
  55. package/dist/components/custom/concentric/composables/useConcentric.d.ts +3 -3
  56. package/dist/components/custom/concentric/constants.d.ts +62 -41
  57. package/dist/components/custom/concentric/index.d.ts +2 -2
  58. package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +2 -2
  59. package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +1 -1
  60. package/dist/components/custom/configurator/Configurator.vue.d.ts +23 -2
  61. package/dist/components/custom/configurator/index.d.ts +1 -1
  62. package/dist/components/custom/dock/DockDropdownTrigger.vue.d.ts +4 -3
  63. package/dist/components/custom/dock/DockIconButton.vue.d.ts +10 -0
  64. package/dist/components/custom/dock/DockPopoverTrigger.vue.d.ts +19 -0
  65. package/dist/components/custom/dock/DockStack.vue.d.ts +35 -22
  66. package/dist/components/custom/dock/GlassDock.vue.d.ts +19 -3
  67. package/dist/components/custom/dock/composables/dockMorphContext.d.ts +18 -32
  68. package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +76 -145
  69. package/dist/components/custom/dock/composables/index.d.ts +1 -0
  70. package/dist/components/custom/dock/composables/railProjection.d.ts +45 -0
  71. package/dist/components/custom/dock/composables/useDockContextSilhouette.d.ts +192 -0
  72. package/dist/components/custom/dock/composables/useDockFission.d.ts +158 -0
  73. package/dist/components/custom/dock/composables/useDockItemDrag.d.ts +18 -0
  74. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +38 -0
  75. package/dist/components/custom/dock/constants.d.ts +14 -3
  76. package/dist/components/custom/dock/index.d.ts +3 -0
  77. package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +21 -0
  78. package/dist/components/custom/dot-flow-field/composables/flowGLProgram.d.ts +8 -0
  79. package/dist/components/custom/dot-flow-field/composables/flowSetupGL.d.ts +9 -0
  80. package/dist/components/custom/dot-flow-field/composables/flowSetupGLFlow.d.ts +12 -0
  81. package/dist/components/custom/dot-flow-field/composables/flowSetupWGPU.d.ts +7 -0
  82. package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +28 -2
  83. package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +18 -17
  84. package/dist/components/custom/dot-flow-field/constants.d.ts +51 -0
  85. package/dist/components/custom/dot-flow-field/index.d.ts +1 -1
  86. package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +1 -1
  87. package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +29 -0
  88. package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +2 -1
  89. package/dist/components/custom/dot-matrix/composables/uniformBridgeWGPU.d.ts +10 -1
  90. package/dist/components/custom/dot-matrix/composables/useDotSphere.d.ts +7 -0
  91. package/dist/components/custom/dot-matrix/constants.d.ts +14 -0
  92. package/dist/components/custom/dot-matrix/index.d.ts +1 -1
  93. package/dist/components/custom/dot-matrix/shaders/dot-matrix.glsl.d.ts +2 -2
  94. package/dist/components/custom/dot-matrix/shaders/dot-matrix.wgsl.d.ts +1 -1
  95. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +4 -0
  96. package/dist/components/custom/fourier-field/composables/fourierFieldGLSetup.d.ts +9 -0
  97. package/dist/components/custom/fourier-field/composables/fourierFieldWGPUSetup.d.ts +11 -0
  98. package/dist/components/custom/fourier-field/composables/uniformBridgeWGPU.d.ts +16 -1
  99. package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +22 -1
  100. package/dist/components/custom/fourier-field/constants.d.ts +53 -0
  101. package/dist/components/custom/fourier-field/shaders/fourier-field.glsl.d.ts +1 -1
  102. package/dist/components/custom/fourier-field/shaders/fourier-field.render.wgsl.d.ts +1 -1
  103. package/dist/components/custom/goo-blob/composables/easing.d.ts +1 -0
  104. package/dist/components/custom/goo-blob/composables/useBlobSatellites.d.ts +1 -0
  105. package/dist/components/custom/goo-blob/constants.d.ts +26 -1
  106. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -1
  107. package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -1
  108. package/dist/components/custom/goo-blob/types.d.ts +50 -1
  109. package/dist/components/custom/goo-dot-matrix/composables/gooDotSetup.d.ts +32 -3
  110. package/dist/components/custom/goo-dot-matrix/composables/uniformBridgeWGPU.d.ts +14 -4
  111. package/dist/components/custom/goo-dot-matrix/constants.d.ts +55 -16
  112. package/dist/components/custom/goo-dot-matrix/index.d.ts +1 -1
  113. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.frag.d.ts +2 -0
  114. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.wgsl.d.ts +1 -0
  115. package/dist/components/custom/goo-filter/GooFilter.vue.d.ts +22 -0
  116. package/dist/components/custom/goo-filter/index.d.ts +1 -0
  117. package/dist/components/custom/handmark/brush.d.ts +17 -17
  118. package/dist/components/custom/handmark/constants.d.ts +28 -8
  119. package/dist/components/custom/handmark/geometry.d.ts +34 -1
  120. package/dist/components/custom/handmark/index.d.ts +1 -1
  121. package/dist/components/custom/icon-chip/types.d.ts +10 -0
  122. package/dist/components/custom/paper-backdrop/PaperBackdrop.vue.d.ts +18 -0
  123. package/dist/components/custom/paper-grid/composables/paperGrid.d.ts +44 -29
  124. package/dist/components/custom/paper-grid/composables/paperGridGLSetup.d.ts +2 -0
  125. package/dist/components/custom/paper-grid/composables/paperGridWGPUSetup.d.ts +3 -1
  126. package/dist/components/custom/paper-grid/composables/uniformBridgeWGPU.d.ts +2 -2
  127. package/dist/components/custom/paper-grid/constants.d.ts +44 -6
  128. package/dist/components/custom/paper-grid/index.d.ts +2 -2
  129. package/dist/components/custom/paper-grid/shaders/paper-grid.glsl.d.ts +1 -1
  130. package/dist/components/custom/paper-grid/shaders/paper-grid.wgsl.d.ts +1 -1
  131. package/dist/components/custom/selectable-chip/chipVariants.d.ts +39 -0
  132. package/dist/components/custom/selectable-chip/selectableChipVariants.d.ts +12 -20
  133. package/dist/components/custom/tabs/constants.d.ts +16 -8
  134. package/dist/components/custom/timeline/ScrubberTimeline.vue.d.ts +16 -0
  135. package/dist/components/custom/timeline/geometry.d.ts +0 -8
  136. package/dist/components/custom/toggle-chip/index.d.ts +15 -4
  137. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +12 -10
  138. package/dist/components/ui/_shared/useSurfaceAxis.d.ts +17 -3
  139. package/dist/components/ui/badge/Badge.vue.d.ts +14 -0
  140. package/dist/components/ui/badge/index.d.ts +1 -0
  141. package/dist/components/ui/button/Button.vue.d.ts +1 -0
  142. package/dist/components/ui/card/Card.vue.d.ts +1 -1
  143. package/dist/components/ui/card/ScrollCard.vue.d.ts +1 -1
  144. package/dist/components/ui/carousel/CarouselContent.vue.d.ts +2 -4
  145. package/dist/components/ui/dialog/DialogContent.vue.d.ts +9 -0
  146. package/dist/components/ui/drawer/Drawer.vue.d.ts +33 -14
  147. package/dist/components/ui/drawer/constants.d.ts +8 -6
  148. package/dist/components/ui/drawer/index.d.ts +12 -2
  149. package/dist/components/ui/select/SelectContent.vue.d.ts +9 -0
  150. package/dist/components/ui/slider/Slider.vue.d.ts +9 -0
  151. package/dist/composables/dom/index.d.ts +1 -0
  152. package/dist/composables/dom/useDragVelocity.d.ts +46 -0
  153. package/dist/composables/glass/wave/index.d.ts +4 -0
  154. package/dist/composables/glass/wave/waveField.d.ts +115 -0
  155. package/dist/composables/glass/wave/waveField.glsl.d.ts +1 -0
  156. package/dist/composables/glass/wave/waveField.wgsl.d.ts +1 -0
  157. package/dist/composables/glass/webgl/createCanvasLifecycle.d.ts +95 -2
  158. package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +40 -2
  159. package/dist/composables/glass/webgpu/index.d.ts +1 -0
  160. package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +37 -0
  161. package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +49 -2
  162. package/dist/composables/glass/webgpu/webgpuDevice.d.ts +1 -1
  163. package/dist/composables/motion/core/index.d.ts +4 -0
  164. package/dist/composables/motion/core/useHaptic.d.ts +48 -0
  165. package/dist/composables/motion/core/writeVelocityWeight.d.ts +31 -0
  166. package/dist/composables/motion/index.d.ts +2 -0
  167. package/dist/composables/motion/springPresets.d.ts +16 -17
  168. package/dist/composables/motion/suite.d.ts +2 -2
  169. package/dist/composables/motion/useBloomUp.d.ts +97 -0
  170. package/dist/composables/motion/useCelebrationBurst.d.ts +50 -0
  171. package/dist/composables/motion/useDockCtaReceive.d.ts +10 -28
  172. package/dist/composables/motion/useGooMorph.d.ts +72 -0
  173. package/dist/composables/motion/useLiquidFlex.d.ts +18 -0
  174. package/dist/composables/motion/useLiquidMorph.d.ts +108 -0
  175. package/dist/composables/motion/useLiquidPress.d.ts +12 -0
  176. package/dist/composables/motion/useLiquidReveal.d.ts +7 -4
  177. package/dist/composables/motion/useMorphField.d.ts +157 -0
  178. package/dist/composables/motion/useScrollPin.d.ts +49 -0
  179. package/dist/composables/motion/useScrollScene.d.ts +67 -0
  180. package/dist/concentric.js +532 -563
  181. package/dist/configurator.js +2 -2
  182. package/dist/confirm-dialog.js +3 -3
  183. package/dist/constellation.js +4 -4
  184. package/dist/context-menu.js +2 -2
  185. package/dist/controls.js +2 -2
  186. package/dist/createCanvasLifecycle-CuCrGRfq.js +173 -0
  187. package/dist/dark.js +1 -1
  188. package/dist/data-table.js +1 -1
  189. package/dist/deck.js +1 -1
  190. package/dist/dialog.js +3 -3
  191. package/dist/dock.js +1163 -618
  192. package/dist/dockContext-gFVS2gMg.js +18 -0
  193. package/dist/dom.js +7 -6
  194. package/dist/dot-flow-field.js +1114 -523
  195. package/dist/dot-matrix.js +348 -204
  196. package/dist/drawer.js +106 -96
  197. package/dist/{dropdown-menu-aJmV5SqE.js → dropdown-menu-CCfcCQ68.js} +3 -3
  198. package/dist/dropdown-menu.js +1 -1
  199. package/dist/easing.js +3 -3
  200. package/dist/expandable-container.js +2 -2
  201. package/dist/fading-scroll.js +1 -1
  202. package/dist/forms.js +6 -6
  203. package/dist/fourier-field.js +441 -197
  204. package/dist/fourier-math.js +1 -1
  205. package/dist/glass-panel.js +2 -2
  206. package/dist/glass-ui.css +1 -1
  207. package/dist/glass-ui.js +139 -135
  208. package/dist/goo-blob.js +11 -9
  209. package/dist/goo-dot-matrix.js +418 -198
  210. package/dist/handmark.js +137 -94
  211. package/dist/header-ribbon.js +1 -1
  212. package/dist/hover-card.js +1 -1
  213. package/dist/hover-popover.js +1 -1
  214. package/dist/icon-chip.js +1 -1
  215. package/dist/icon-tooltip.js +1 -1
  216. package/dist/index.d.ts +3 -0
  217. package/dist/instrument-chassis.js +1 -1
  218. package/dist/keyboard.js +1 -1
  219. package/dist/label.js +1 -1
  220. package/dist/labeled-field.js +7 -7
  221. package/dist/metric-badge.js +1 -1
  222. package/dist/metric-cell.js +1 -1
  223. package/dist/metric-stack.js +1 -1
  224. package/dist/motion-core.js +42 -39
  225. package/dist/motion-curves.js +20 -14
  226. package/dist/motion.js +226 -26
  227. package/dist/notification.js +1 -1
  228. package/dist/number-field.js +1 -1
  229. package/dist/pager-dots.js +1 -1
  230. package/dist/paper-backdrop.js +1 -1
  231. package/dist/paper-grid.js +315 -342
  232. package/dist/paperGrid-CXCSMbZ1.js +191 -0
  233. package/dist/popover.js +1 -1
  234. package/dist/{presets-CvOUqtdY.js → presets-QvYgnFIZ.js} +13 -12
  235. package/dist/progress.js +1 -1
  236. package/dist/pulse.js +1 -1
  237. package/dist/reactive.js +2 -2
  238. package/dist/{resolveCanvasColor-yPyIpJt9.js → resolveCanvasColor-DsSJk06I.js} +5 -5
  239. package/dist/scrolling-text.js +1 -1
  240. package/dist/search.js +7 -7
  241. package/dist/select.js +3 -3
  242. package/dist/selectable-chip.js +18 -35
  243. package/dist/separator.js +1 -1
  244. package/dist/{sheet-B2flBfLH.js → sheet-DUCIoOe0.js} +3 -3
  245. package/dist/sheet.js +1 -1
  246. package/dist/sidebar.js +1 -1
  247. package/dist/slider-CcICPe3u.js +149 -0
  248. package/dist/slider.js +1 -1
  249. package/dist/sortable-list.js +3 -3
  250. package/dist/{spectrum-walk-BVzA7Biz.js → spectrum-walk-cBNSx_zm.js} +1 -1
  251. package/dist/springPresets-DfoQ6XRY.js +64 -0
  252. package/dist/stacked-icons.js +54 -39
  253. package/dist/styles/cards.css +202 -2
  254. package/dist/styles/components.css +1 -3
  255. package/dist/styles/configurator.css +172 -7
  256. package/dist/styles/critical-partition.mjs +35 -2
  257. package/dist/styles/deferred.css +2 -0
  258. package/dist/styles/dock/adaptive-legibility.css +119 -0
  259. package/dist/styles/dock/density.css +18 -10
  260. package/dist/styles/dock/fission-bridge.css +552 -0
  261. package/dist/styles/dock/layers.css +88 -124
  262. package/dist/styles/dock/morph-bridge.css +15 -2
  263. package/dist/styles/dock/morph.css +45 -114
  264. package/dist/styles/dock/shape.css +137 -11
  265. package/dist/styles/dock/shell.css +1 -3
  266. package/dist/styles/dock/stack-rail.css +95 -7
  267. package/dist/styles/dock-controls/icon-button.css +34 -2
  268. package/dist/styles/dock-controls/triggers.css +23 -1
  269. package/dist/styles/dock-controls.css +18 -0
  270. package/dist/styles/dock.css +16 -1
  271. package/dist/styles/drawer.css +166 -0
  272. package/dist/styles/glass/glass-atom.css +244 -0
  273. package/dist/styles/glass/glass-capsule.css +143 -0
  274. package/dist/styles/glass/glass-chip.css +215 -0
  275. package/dist/styles/glass/liquid-enter.css +252 -0
  276. package/dist/styles/glass/liquid-morph.css +850 -0
  277. package/dist/styles/glass/material.css +70 -1
  278. package/dist/styles/glass/reveal.css +22 -2
  279. package/dist/styles/glass/rim.css +13 -1
  280. package/dist/styles/glass/surfaces.css +18 -8
  281. package/dist/styles/glass.css +11 -0
  282. package/dist/styles/icon-chip.css +45 -0
  283. package/dist/styles/index.css +11 -0
  284. package/dist/styles/jubilance.css +65 -0
  285. package/dist/styles/motion/morph-field.css +229 -0
  286. package/dist/styles/paper.css +230 -14
  287. package/dist/styles/scroll-choreography.css +135 -78
  288. package/dist/styles/segmented-tabs.css +85 -51
  289. package/dist/styles/select.css +151 -0
  290. package/dist/styles/tokens/color-radius.css +1 -1
  291. package/dist/styles/tokens/dark-arm.css +57 -8
  292. package/dist/styles/tokens/glass-deep.css +8 -4
  293. package/dist/styles/tokens/glass-fx.css +80 -2
  294. package/dist/styles/tokens/glass.css +140 -8
  295. package/dist/styles/tokens/light-dark.css +2 -2
  296. package/dist/styles/tokens/property-regs.css +144 -0
  297. package/dist/styles/tokens/scale-paper.css +20 -8
  298. package/dist/styles/tokens/scheme-motion.css +92 -157
  299. package/dist/styles/tokens/scheme-spring.css +239 -0
  300. package/dist/styles/tokens/scroll-tokens.css +15 -15
  301. package/dist/styles/tokens/shadow.css +73 -13
  302. package/dist/styles/tokens.css +9 -2
  303. package/dist/styles/utilities/btn.css +70 -0
  304. package/dist/switch.js +1 -1
  305. package/dist/tabs.js +198 -181
  306. package/dist/timeline.js +241 -206
  307. package/dist/toast.js +1 -1
  308. package/dist/toggle-chip.js +14 -41
  309. package/dist/toggle-group.js +1 -1
  310. package/dist/tooltip.js +1 -1
  311. package/dist/typewriter.js +1 -1
  312. package/dist/{uniformBridgeWGPU-CtAKl45L.js → uniformBridgeWGPU-BCse1SHU.js} +191 -127
  313. package/dist/{useAnimatedNumber-CLrxicG9.js → useAnimatedNumber-BntskVdQ.js} +1 -1
  314. package/dist/{useConfiguratorState-4xblKfwd.js → useConfiguratorState-22BcULzF.js} +37 -35
  315. package/dist/useDockCtaReceive-DX7RDb6_.js +88 -0
  316. package/dist/{useDragMorph-BUgAC-zK.js → useDragMorph-DGLSewwB.js} +2 -2
  317. package/dist/useDragVelocity-CjcfX3dA.js +57 -0
  318. package/dist/useGooMorph-Cs13NgYL.js +104 -0
  319. package/dist/useGpuSubstrate-Ceet70xq.js +347 -0
  320. package/dist/{useViewTransition-CUI1nAgn.js → useHaptic-CPz5BT9I.js} +40 -1
  321. package/dist/{useLiquidFlex-UmA6LMZu.js → useLiquidFlex-Cc6PjVJD.js} +8 -3
  322. package/dist/useLiquidPress-CtOQ8Z0_.js +43 -0
  323. package/dist/useMorphField-ogBM7ubT.js +141 -0
  324. package/dist/{useScrollChrome-D66AVP7C.js → useScrollChrome-JuImi1DM.js} +2 -2
  325. package/dist/{useSpringMount-BWDnKIwh.js → useSpringMount-DFxtzmkR.js} +1 -1
  326. package/dist/{useSpringPress-B1-Czp-V.js → useSpringPress-VM9RgVq3.js} +1 -1
  327. package/dist/{useSurfaceAxis-g0NloYEF.js → useSurfaceAxis-Ci7Dnaw2.js} +1 -1
  328. package/dist/{useTouchGate-CBZTD4SD.js → useTouchGate-B1Lf9XqN.js} +1 -1
  329. package/dist/virtual.js +1 -1
  330. package/dist/watercolor-dot.js +16 -26
  331. package/dist/writeVelocityWeight-Bh83xZfs.js +19 -0
  332. package/package.json +14 -3
  333. package/src/styles/cards.css +202 -2
  334. package/src/styles/configurator.css +172 -7
  335. package/src/styles/critical-partition.mjs +35 -2
  336. package/src/styles/dock/adaptive-legibility.css +119 -0
  337. package/src/styles/dock/density.css +18 -10
  338. package/src/styles/dock/fission-bridge.css +552 -0
  339. package/src/styles/dock/layers.css +88 -124
  340. package/src/styles/dock/morph-bridge.css +15 -2
  341. package/src/styles/dock/morph.css +45 -114
  342. package/src/styles/dock/shape.css +137 -11
  343. package/src/styles/dock/shell.css +1 -3
  344. package/src/styles/dock/stack-rail.css +95 -7
  345. package/src/styles/dock-controls/icon-button.css +34 -2
  346. package/src/styles/dock-controls/triggers.css +23 -1
  347. package/src/styles/dock-controls.css +18 -0
  348. package/src/styles/dock.css +16 -1
  349. package/src/styles/drawer.css +164 -0
  350. package/src/styles/glass/glass-atom.css +244 -0
  351. package/src/styles/glass/glass-capsule.css +143 -0
  352. package/src/styles/glass/glass-chip.css +215 -0
  353. package/src/styles/glass/liquid-enter.css +252 -0
  354. package/src/styles/glass/liquid-morph.css +850 -0
  355. package/src/styles/glass/material.css +70 -1
  356. package/src/styles/glass/reveal.css +22 -2
  357. package/src/styles/glass/rim.css +13 -1
  358. package/src/styles/glass/surfaces.css +18 -8
  359. package/src/styles/glass.css +11 -0
  360. package/src/styles/icon-chip.css +45 -0
  361. package/src/styles/index.css +11 -0
  362. package/src/styles/jubilance.css +65 -0
  363. package/src/styles/motion/morph-field.css +229 -0
  364. package/src/styles/paper.css +230 -14
  365. package/src/styles/scroll-choreography.css +135 -78
  366. package/src/styles/segmented-tabs.css +85 -47
  367. package/src/styles/select.css +151 -0
  368. package/src/styles/tokens/color-radius.css +1 -1
  369. package/src/styles/tokens/dark-arm.css +57 -8
  370. package/src/styles/tokens/glass-deep.css +8 -4
  371. package/src/styles/tokens/glass-fx.css +80 -2
  372. package/src/styles/tokens/glass.css +140 -8
  373. package/src/styles/tokens/light-dark.css +2 -2
  374. package/src/styles/tokens/property-regs.css +144 -0
  375. package/src/styles/tokens/scale-paper.css +20 -8
  376. package/src/styles/tokens/scheme-motion.css +92 -157
  377. package/src/styles/tokens/scheme-spring.css +239 -0
  378. package/src/styles/tokens/scroll-tokens.css +15 -15
  379. package/src/styles/tokens/shadow.css +73 -13
  380. package/src/styles/tokens.css +9 -2
  381. package/src/styles/utilities/btn.css +70 -0
  382. package/dist/DialogContent-6JtTB5x2.js +0 -106
  383. package/dist/PagerDots-Cjx96la-.js +0 -98
  384. package/dist/PaperBackdrop-CqwjnfLv.js +0 -31
  385. package/dist/badge-D9XWW4GT.js +0 -53
  386. package/dist/button-5dY1Dvhd.js +0 -125
  387. package/dist/components/custom/concentric/composables/ringField.d.ts +0 -85
  388. package/dist/createCanvasLifecycle-Gh45Ce-p.js +0 -93
  389. package/dist/dockContext-BNfyPLe9.js +0 -17
  390. package/dist/slider-2A0rPn79.js +0 -142
  391. package/dist/springPresets-Ce7OYCm9.js +0 -46
  392. package/dist/useDockCtaReceive-DfFkmgL1.js +0 -82
  393. package/dist/useGpuSubstrate-4pTcp6mX.js +0 -294
  394. package/dist/useLiquidPress-BooG97RY.js +0 -39
  395. /package/dist/{CollapsibleContent-68dEXIAl.js → CollapsibleContent-D7UNsXQr.js} +0 -0
  396. /package/dist/{DialogFooter-9phqcRIS.js → DialogFooter-DoLy0ewI.js} +0 -0
  397. /package/dist/{InstrumentChassis-CxsHSyMj.js → InstrumentChassis-UUJX0-mW.js} +0 -0
  398. /package/dist/{Label-C2ejNWeC.js → Label-B_HPqi_q.js} +0 -0
  399. /package/dist/{ModalOverlay-D1VrWyoi.js → ModalOverlay-DfAf7o15.js} +0 -0
  400. /package/dist/{SelectGroup-BFiod7X2.js → SelectGroup-Dcczq44n.js} +0 -0
  401. /package/dist/{SelectSeparator-C2UGOkXF.js → SelectSeparator-CNRGG7Ew.js} +0 -0
  402. /package/dist/{Separator-DQcwC2TR.js → Separator-Cf9-JFgi.js} +0 -0
  403. /package/dist/{_plugin-vue_export-helper-C1je1s0u.js → _plugin-vue_export-helper-gLzyemvl.js} +0 -0
  404. /package/dist/{color-Cs0-oxYL.js → color-B9jZdhJX.js} +0 -0
  405. /package/dist/{compile-nZ1xVYTp.js → compile-INR_tPk_.js} +0 -0
  406. /package/dist/{constants--C2DkLW8.js → constants-BWj7DkMn.js} +0 -0
  407. /package/dist/{createContext-CpBNTRMI.js → createContext-Cd23P9j0.js} +0 -0
  408. /package/dist/{dotMatrixField-D_x9_1qq.js → dotMatrixField-CRO0ZFk4.js} +0 -0
  409. /package/dist/{flow.glsl-B2P7e0MT.js → flow.glsl-DqEGRpl4.js} +0 -0
  410. /package/dist/{math-Eb0w3LqU.js → math-5RcIgCB4.js} +0 -0
  411. /package/dist/{menuItemVariants-D8VNHq22.js → menuItemVariants-DAXquKja.js} +0 -0
  412. /package/dist/{prng-B-d9eYX8.js → prng-B5tIXTtj.js} +0 -0
  413. /package/dist/{procedural-color.wgsl-m7Zgv35j.js → procedural-color.wgsl-C1Y5PkM6.js} +0 -0
  414. /package/dist/{scrollReader-DI1NWxUw.js → scrollReader-rc3Ns_NM.js} +0 -0
  415. /package/dist/{useControlSize-SH1UmJCi.js → useControlSize-DAZ062x7.js} +0 -0
  416. /package/dist/{useFuzzySearch-DIhcYtcw.js → useFuzzySearch-0fTYOhS4.js} +0 -0
  417. /package/dist/{useGlobalDark-CmjB9E32.js → useGlobalDark-B4HO9LXG.js} +0 -0
  418. /package/dist/{useIntersectionPause-Dbozzjgm.js → useIntersectionPause-DO8Vl4gs.js} +0 -0
  419. /package/dist/{useInterval-CNdua40W.js → useInterval-BVUI-sez.js} +0 -0
  420. /package/dist/{useKeyboardShortcuts-BPRp33Im.js → useKeyboardShortcuts-BEut54Tk.js} +0 -0
  421. /package/dist/{usePointerVelocityField-QLsy3_kv.js → usePointerVelocityField-BrkqZFhj.js} +0 -0
  422. /package/dist/{useResizeObserver-Bpoi7tRE.js → useResizeObserver-DdEn3v2f.js} +0 -0
  423. /package/dist/{useResolveTokenColor-vAylyR0x.js → useResolveTokenColor-ChOnCckA.js} +0 -0
  424. /package/dist/{useScrollProgress-c3yxmH6a.js → useScrollProgress-A0M6qRl7.js} +0 -0
  425. /package/dist/{useSortable-BVqlJRBR.js → useSortable-DQV_UNDw.js} +0 -0
  426. /package/dist/{useTextHighlight-NmBM5V_4.js → useTextHighlight-Bma3UlKA.js} +0 -0
  427. /package/dist/{useTimer-BHJOKr35.js → useTimer-BBLGPXR8.js} +0 -0
  428. /package/dist/{useUserInvalidAria-y5namzeE.js → useUserInvalidAria-EmmwWPOl.js} +0 -0
  429. /package/dist/{useViewportReady-anbac3m6.js → useViewportReady-C9pYnn7K.js} +0 -0
  430. /package/dist/{vReveal-D9k0jADx.js → vReveal-CT1KtwZA.js} +0 -0
@@ -0,0 +1,64 @@
1
+ //#region src/composables/motion/springPresets.ts
2
+ var e = [
3
+ {
4
+ name: "smooth",
5
+ response: .58,
6
+ dampingFraction: .8,
7
+ comment: "SETTLE register — the inertial settle (entrances/fades/scale-ins): weighty, a whisper of life (+1.5%), never a dead stop. BD.W-ANIM-IOS27-TUNE"
8
+ },
9
+ {
10
+ name: "snappy",
11
+ response: .48,
12
+ dampingFraction: .74,
13
+ comment: "CONTROL register — the quick-but-WEIGHTY position morph (tab indicator, progress fill, .glass-reveal SPATIAL bloom, page-build); arrives at half-clock (audacious) with a small gooey overshoot (+3.2%). BD.W-ANIM-IOS27-TUNE"
14
+ },
15
+ {
16
+ name: "bouncy",
17
+ response: .6,
18
+ dampingFraction: .6,
19
+ comment: "PLAYFUL register — the emphatic one-shot (dialog/success entrance, VT default, completion-seal): FLOWING not flicking — overshoot softened 12.6%→9.5%, slower for inertia. BD.W-ANIM-IOS27-TUNE"
20
+ },
21
+ {
22
+ name: "gentle",
23
+ response: .82,
24
+ dampingFraction: 1,
25
+ comment: "GENTLE register — the patient critically-damped settle (--ease-convergence alias); slow inertial arrival, ζ=1.0 (NO overshoot by definition — the convergence-reveal depends on it). BD.W-ANIM-IOS27-TUNE"
26
+ },
27
+ {
28
+ name: "dock",
29
+ response: .68,
30
+ dampingFraction: .64,
31
+ comment: "DOCK register — THE WEIGHTY GOOEY MORPH (collapse/expand + V↔H + fission + in-situ shell): slow inertial mass, the settle a graceful +7.3% (un-pointed liquid), the 'MORPH MORE on move' reference. BD.W-ANIM-IOS27-TUNE"
32
+ },
33
+ {
34
+ name: "press",
35
+ response: .2,
36
+ dampingFraction: .8,
37
+ comment: "PRESS register — the iOS interactive tap (useSpringPress + --glass-btn-press-t): a hair of inertial carry (sub-200ms iOS window) + a tiny alive rebound (+1.5%); the interruptible re-seat keeps the gesture continuous. BD.W-ANIM-IOS27-TUNE"
38
+ },
39
+ {
40
+ name: "timeline-head",
41
+ response: .34,
42
+ dampingFraction: .74,
43
+ comment: "TIMELINE-HEAD register — the ScrubberTimeline warm-glass lozenge travel (LEG-2): the head LAGS the pointer a hair then settles with a whisper of fling-overshoot (+3.2%). The fast head clock the fill trails. BD.W-TIMELINE-RAIL-UNIFY"
44
+ },
45
+ {
46
+ name: "timeline-fill",
47
+ response: .46,
48
+ dampingFraction: .82,
49
+ comment: "TIMELINE-FILL register — the ScrubberTimeline lane fill (LEG-2): a slower clock than the head so the fill TRAILS the bead (the lane reads as liquid trailing), settling with a hint of carry (+1.1%). BD.W-TIMELINE-RAIL-UNIFY"
50
+ },
51
+ {
52
+ name: "timeline-press",
53
+ response: .22,
54
+ dampingFraction: .7,
55
+ comment: "TIMELINE-PRESS register — the ScrubberTimeline grab-anticipation (LEG-2): the head's pointerdown squash on the cartoon-punch clock, a crisp short-response press settle (+4.6%) feeding the --scale-press dip. BD.W-TIMELINE-RAIL-UNIFY"
56
+ }
57
+ ];
58
+ function t(t) {
59
+ let n = e.find((e) => e.name === t);
60
+ if (!n) throw Error(`Unknown spring preset: ${t}`);
61
+ return n;
62
+ }
63
+ //#endregion
64
+ export { t as n, e as t };
@@ -1,9 +1,9 @@
1
- import { Fragment as e, computed as t, createBlock as n, createCommentVNode as r, createElementBlock as i, createTextVNode as a, defineComponent as o, normalizeClass as s, normalizeStyle as c, openBlock as l, renderList as u, renderSlot as d, resolveDynamicComponent as f, toDisplayString as p, withCtx as m } from "vue";
1
+ import { Fragment as e, computed as t, createBlock as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, createTextVNode as o, defineComponent as s, normalizeClass as c, normalizeStyle as l, openBlock as u, renderList as d, renderSlot as f, resolveDynamicComponent as p, toDisplayString as m, withCtx as h } from "vue";
2
2
  //#region src/components/custom/stacked-icons/StackedIconGroup.vue?vue&type=script&setup=true&lang.ts
3
- var h = {
3
+ var g = {
4
4
  key: 1,
5
5
  style: { zIndex: 0 }
6
- }, g = /* @__PURE__ */ o({
6
+ }, _ = /* @__PURE__ */ s({
7
7
  __name: "StackedIconGroup",
8
8
  props: {
9
9
  items: {},
@@ -21,63 +21,78 @@ var h = {
21
21
  as: { default: "div" },
22
22
  keyFn: {}
23
23
  },
24
- setup(o) {
25
- let g = o, _ = t(() => {
26
- switch (g.size) {
24
+ setup(s) {
25
+ let _ = s, v = t(() => {
26
+ switch (_.size) {
27
27
  case "sm": return "h-6 w-6";
28
28
  case "md": return "h-8 w-8";
29
29
  case "lg": return "h-10 w-10";
30
30
  }
31
- }), v = t(() => {
32
- if (g.direction === "vertical") switch (g.size) {
31
+ }), y = t(() => {
32
+ if (_.direction === "vertical") switch (_.size) {
33
33
  case "sm": return "-mt-(--stack-overlap-sm)";
34
34
  case "md": return "-mt-(--stack-overlap-md)";
35
35
  case "lg": return "-mt-(--stack-overlap-lg)";
36
36
  }
37
- switch (g.size) {
37
+ switch (_.size) {
38
38
  case "sm": return "-ml-(--stack-overlap-sm)";
39
39
  case "md": return "-ml-(--stack-overlap-md)";
40
40
  case "lg": return "-ml-(--stack-overlap-lg)";
41
41
  }
42
- }), y = t(() => g.items.slice(0, g.maxVisible)), b = t(() => Math.max(0, g.items.length - g.maxVisible));
43
- return (t, g) => (l(), n(f(o.as), { class: s([
44
- "group/stack relative isolate flex",
45
- o.direction === "vertical" ? "flex-col" : "items-center",
46
- o.reversed ? o.direction === "vertical" ? "flex-col-reverse" : "flex-row-reverse" : ""
47
- ]) }, {
48
- default: m(() => [
49
- (l(!0), i(e, null, u(y.value, (e, n) => (l(), i("div", {
50
- key: o.keyFn?.(e, n) ?? n,
51
- class: s([
52
- _.value,
53
- "relative flex items-center justify-center rounded-pill transform-gpu",
54
- "transition-[transform,box-shadow,opacity] duration-fast ease-spring-snappy",
55
- n > 0 ? v.value : "",
56
- o.expandOnHover && n > 0 ? o.direction === "vertical" ? "group-hover/stack:translate-y-1.5 group-hover/stack:scale-105" : "group-hover/stack:translate-x-1.5 group-hover/stack:scale-105" : ""
42
+ }), b = t(() => _.items.slice(0, _.maxVisible)), x = t(() => Math.max(0, _.items.length - _.maxVisible)), S = t(() => {
43
+ let e = b.value.length + +(x.value > 0);
44
+ return Math.max(1, e - 1);
45
+ });
46
+ return (t, _) => (u(), n(p(s.as), {
47
+ class: c(["stacked-icon-group group/stack relative isolate flex", [s.direction === "vertical" ? "flex-col" : "items-center", s.reversed ? s.direction === "vertical" ? "flex-col-reverse" : "flex-row-reverse" : ""]]),
48
+ "data-direction": s.direction,
49
+ style: l({ "--n": S.value })
50
+ }, {
51
+ default: h(() => [
52
+ (u(!0), i(e, null, d(b.value, (e, n) => (u(), i("div", {
53
+ key: s.keyFn?.(e, n) ?? n,
54
+ class: c([
55
+ v.value,
56
+ "stacked-icon-puck relative flex items-center justify-center rounded-pill transform-gpu",
57
+ n > 0 ? y.value : "",
58
+ s.expandOnHover && n > 0 ? "stacked-icon-puck--fan" : ""
57
59
  ]),
58
- style: c({ zIndex: y.value.length + 1 - n })
59
- }, [d(t.$slots, "icon", {
60
+ style: l({
61
+ zIndex: b.value.length + 1 - n,
62
+ "--i": n
63
+ })
64
+ }, [f(t.$slots, "icon", {
60
65
  item: e,
61
66
  index: n
62
67
  })], 6))), 128)),
63
- b.value > 0 ? (l(), i("div", {
68
+ x.value > 0 ? (u(), i("div", {
64
69
  key: 0,
65
- class: s([
66
- _.value,
67
- "relative flex items-center justify-center rounded-pill",
68
- "border-2 border-background bg-[color-mix(in_srgb,var(--background)_96%,transparent)] text-xs font-semibold text-muted-foreground/60 shadow-cartoon-sm",
69
- "transform-gpu transition-[background-color,color,transform,box-shadow] duration-fast ease-spring-snappy",
70
- "hover:bg-background hover:text-muted-foreground hover:shadow-cartoon-md",
70
+ class: c([
71
71
  v.value,
72
- o.expandOnHover ? o.direction === "vertical" ? "group-hover/stack:translate-y-1.5 group-hover/stack:scale-105" : "group-hover/stack:translate-x-1.5 group-hover/stack:scale-105" : ""
72
+ "stacked-icon-puck stacked-icon-overflow glass-capsule glass-atom",
73
+ "relative flex items-center justify-center rounded-pill text-xs font-semibold text-muted-foreground",
74
+ "transform-gpu",
75
+ y.value,
76
+ s.expandOnHover ? "stacked-icon-puck--fan" : ""
73
77
  ]),
74
- style: { zIndex: 1 }
75
- }, [d(t.$slots, "overflow", { count: b.value }, () => [a(" +" + p(b.value), 1)])], 2)) : r("", !0),
76
- b.value === 0 && t.$slots.info ? (l(), i("div", h, [d(t.$slots, "info")])) : r("", !0)
78
+ style: l({
79
+ zIndex: 1,
80
+ "--i": b.value.length
81
+ }),
82
+ "data-cast": ""
83
+ }, [_[0] ||= a("span", {
84
+ class: "cartoon-cast",
85
+ "aria-hidden": "true"
86
+ }, null, -1), f(t.$slots, "overflow", { count: x.value }, () => [o(" +" + m(x.value), 1)])], 6)) : r("", !0),
87
+ x.value === 0 && t.$slots.info ? (u(), i("div", g, [f(t.$slots, "info")])) : r("", !0)
77
88
  ]),
78
89
  _: 3
79
- }, 8, ["class"]));
90
+ }, 8, [
91
+ "class",
92
+ "data-direction",
93
+ "style"
94
+ ]));
80
95
  }
81
96
  });
82
97
  //#endregion
83
- export { g as StackedIconGroup };
98
+ export { _ as StackedIconGroup };
@@ -6,6 +6,122 @@
6
6
  * only the 5-rung glass ladder. */
7
7
 
8
8
  @layer components {
9
+ /* ── BD.W-CARD-MATERIAL-FLOOR — the card-surface warm tint-seam enrollment ──
10
+ The §4 leg-(a) material floor, reconciled to the SHIPPED `--glass-tint-*`
11
+ seam (NOT a fork, NOT a global re-tint). The card's glass/cartoon surfaces
12
+ ride the `.glass-${tier}` ladder rung, whose fill is already
13
+ `color-mix(in oklab, --glass-bg-${tier}, --glass-tint-source --glass-tint-
14
+ strength)` (ladder.css) — so the card reaches the warm floor by setting a
15
+ CARD-LOCAL non-zero `--glass-tint-strength` (the global default at
16
+ surface-axis.css:83 stays `0%`, so the 6 other seam-readers — drawer / menu /
17
+ veil / jubilance / .btn-glass / .segmented-indicator — are byte-unchanged:
18
+ the blast-radius bite). `--glass-tint-source` defaults to `var(--card)` (a
19
+ warm cream, glass-fx.css:158), so the floor is warm by construction in BOTH
20
+ modes. The card clears the warm-chroma floor (C ≥ 0.02 warm) in the MATERIAL
21
+ itself — before the field even lands, and on a dead ground (print / reduced-
22
+ transparency), the "far too gray" verdict closes at the material layer.
23
+
24
+ SCOPE — `[data-surface]` is `glass` or `cartoon` (NOT `veil`: veil owns its
25
+ own `--veil-bg` tint seam below; NOT `opaque`: the solid `--card` plate is
26
+ already warm-cream). The strength is set on the host so it inherits into the
27
+ rung's `color-mix`. This is a card-local re-point of the SHIPPED seam — DRY,
28
+ no second compositing axis, the ladder rung does the mix. */
29
+ [data-slot="card"]:where(
30
+ [data-surface="glass"],
31
+ [data-surface="cartoon"]
32
+ ) {
33
+ --glass-tint-strength: 8%;
34
+ /* BD.W-CARD-CEL-MOTION (§3.1) — the defined-edge border-ink floor. The
35
+ ladder rung's `--glass-border-resting`/`-quiet` ink is 4% warm
36
+ (glass.css:331-332) — it vanishes cream-on-cream (K3 RED). Floor the
37
+ card's own border-ink UP to ≥8% warm-ink so the cel reads as a defined
38
+ SHAPE (WCAG 1.4.11 non-text). `--glass-border-rung` is the per-rung ink
39
+ the accent-composed `--glass-border-accent` reads (ladder.css /
40
+ surfaces.css); re-pointing it card-locally floors the border WITHOUT
41
+ forking the rim (the keyed two-stop rim from `--glass-material-rim` is
42
+ CONSUMED unchanged — the card does NOT re-mint a rim). Warm (the
43
+ `--foreground` mix is warm-cream in both modes); the `.dark` ink lifts
44
+ off the near-black field through the same `--foreground` flip. */
45
+ --glass-border-rung: color-mix(in srgb, var(--foreground) 9%, transparent);
46
+ }
47
+
48
+ /* BD.W-CARD-CEL-MOTION (§3.2) — the inner catch-light over the field. A faint
49
+ `screen`-blended warm catch sits where the upper-right `--glass-key` sun
50
+ hits, lifting the cel off the field (the §3 layer-4 catch, coherent with the
51
+ rim + cast — ONE key). It rides the host `background-image` stack ALONGSIDE
52
+ the field underlayer (both are static gradients in the same longhand; the
53
+ catch is the FIRST layer so it sits over the warm underlayer), so it adds NO
54
+ pseudo (`::before` = moving specular, `::after` = grain — both occupied).
55
+ `screen` lifts only where there is light, never darkening — and it is below
56
+ content + clipped to the host radius, so it never washes the text column
57
+ (the K-AA carve). Under `prefers-contrast: more` the screen blend is dropped
58
+ (the catch is decoration, the edge is the legibility asset). */
59
+ [data-slot="card"][data-surface="glass"]:not(.paper-grid) {
60
+ background-blend-mode: screen, normal;
61
+ }
62
+ @media (prefers-contrast: more) {
63
+ [data-slot="card"][data-surface="glass"]:not(.paper-grid) {
64
+ background-blend-mode: normal;
65
+ }
66
+ }
67
+
68
+ /* ── BD.W-CARD-FIELD-FLOOR — the orphan-card static warm field underlayer ──
69
+ The §2 leg-(b) structural contract, card-local fallback. The COMMON case is
70
+ ancestor-supplied: the page mounts ONE global `[data-paper-field]` plane
71
+ (AppShell) behind every route, and the card composites over it. The ORPHAN
72
+ case is a card in an OCCLUDING context an ancestor field cannot reach (a
73
+ dialog / drawer / portal that paints its own opaque ground over the page
74
+ field) — there the card mounts its OWN cheap static warm underlayer so it is
75
+ NEVER gray-over-nothing wherever it is dropped.
76
+
77
+ MECHANISM — ONE static `radial-gradient` on the host `background-image`
78
+ longhand (the proven `.paper-grid` coexistence seam: a later
79
+ `background-image` COEXISTS with the glass tier's `background:` shorthand
80
+ fill — paints OVER the translucent color, UNDER content + UNDER both
81
+ pseudos, clipped to the host `border-radius` by construction). Zero JS, one
82
+ compositor-cached paint, PRM-static. The warm 0-alpha stops are explicit
83
+ `oklch(L C H / 0)` (NEVER bare `transparent` — the WebKit black-premultiply
84
+ hole, build-trap-(d)).
85
+
86
+ THE NO-DOUBLE-PAINT GATE (the presence-BEHIND check, NOT `closest()`): the
87
+ fallback paints ONLY when NO `[data-paper-field]` ancestor is present — `:where(
88
+ [data-paper-field]) &` switches it OFF under the global field, so a card over
89
+ the page field reads the page field (no local underlayer), and a 50-card grid
90
+ under ONE ancestor field is ONE field paint, not N. A `cartoon`/`opaque`
91
+ card already carries a defined edge + warm fill, so the orphan field is the
92
+ glass-surface case; `surface="glass"` only (the orphan glass card is the one
93
+ that reads gray-over-nothing). The `.paper-grid` document register is EXCLUDED
94
+ by selector (it sets its own grid `background-image` underlayer — a grid card
95
+ opts out of the warm-field fallback, not a `background-image: none` race). */
96
+ [data-slot="card"][data-surface="glass"]:not(.paper-grid) {
97
+ /* TWO static layers in ONE longhand (blended by the `background-blend-mode`
98
+ above — `screen, normal`): (1) the upper-right KEYED catch-light (warm,
99
+ `screen`-blended so it only LIFTS — the §3 catch), then (2) the warm cel
100
+ UNDERLAYER (one radial, amber-key toward the upper-right `--glass-key`,
101
+ the field fallback). Both fade to a warm 0-alpha — NEVER bare
102
+ `transparent` (the WebKit black-premultiply hole, build-trap-(d)). */
103
+ background-image:
104
+ radial-gradient(
105
+ 60% 55% at 80% 16%,
106
+ oklch(0.96 0.04 78 / 0.5),
107
+ oklch(0.96 0.04 78 / 0) 72%
108
+ ),
109
+ radial-gradient(
110
+ 120% 110% at 78% 22%,
111
+ oklch(0.9 0.075 72 / 0.5),
112
+ oklch(0.9 0.075 72 / 0) 70%
113
+ );
114
+ }
115
+
116
+ /* The presence-behind gate — under an ancestor field, the card reads the REAL
117
+ field (the page plane transmits through the translucent fill), so the local
118
+ fallback is switched OFF (no double paint). A 50-card grid under ONE ancestor
119
+ field is ONE field paint, not N local underlayers. */
120
+ :where([data-paper-field])
121
+ [data-slot="card"][data-surface="glass"]:not(.paper-grid) {
122
+ background-image: none;
123
+ }
124
+
9
125
  /* Paper texture overlay */
10
126
  .paper-texture {
11
127
  background-image: var(--paper-clean-texture);
@@ -182,13 +298,97 @@
182
298
  a card surface that often hosts portaled content; `translate: 0` at rest
183
299
  mints the stacking context once. Longhand maps `translate(x, y)` 1:1. */
184
300
  translate: 0;
301
+ position: relative;
302
+ /* BD.W-CARTOON-CASTER — the LOUD register carries `--motion-weight: 1` in the
303
+ SAME recipe (the loud-register coupling: so the punch is never accidentally
304
+ muted to ~+13.6% by inheriting the rest 0.618 — the BD.W-CARTOON-PUNCH
305
+ loud-register guard's concrete pass-subject). The press ramp ALIASES the
306
+ existing `--card-press-t` (the host's `useLiquidPress` already drives it for
307
+ every `pressable` card) — NO second press var, NO Card press-driver rewrite. */
308
+ --motion-weight: 1;
309
+ --cartoon-press-t: var(--card-press-t, 0);
185
310
  transition:
186
- translate var(--duration-normal) var(--spring-smooth),
311
+ translate var(--duration-normal) var(--ease-cartoon-punch),
312
+ scale var(--duration-normal) var(--ease-cartoon-punch),
187
313
  box-shadow var(--duration-normal) var(--ease-standard);
188
314
 
189
- &:hover:not(:disabled) {
315
+ /* BD.W-CARTOON-CASTER — the hover RE-POINTS the existing rule onto the punch
316
+ curve (was --spring-smooth) and guards `:not(:active)` so the press squash wins;
317
+ the object lifts a hair UP-RIGHT (toward the upper-right `--glass-key`) and the
318
+ cast deepens to the lg rung (the gap opens). ONE hover rule, no double-declare. */
319
+ &:hover:not(:active):not(:disabled) {
190
320
  translate: var(--lift-sm) var(--lift-sm);
321
+ /* BD.W-CARD-CEL-MOTION (§5) — the cel lifts toward the light with a
322
+ sub-perceptual VOL-PRESERVING scale (X·Y ≈ 1: 1.015 × 0.985 ≈ 1.0): the
323
+ cel rising toward its sun reads as PEELING off the field, not a flat
324
+ sticker slide. Composes the existing `scale` transition (declared above)
325
+ on the punch curve. The press squash (`scale: 1.04 0.94`) wins via
326
+ `:not(:active)`. */
327
+ scale: 1.015 0.985;
191
328
  box-shadow: var(--shadow-cartoon-lg);
329
+ & .cartoon-cast {
330
+ box-shadow: var(--shadow-cartoon-lg);
331
+ }
332
+ }
333
+
334
+ /* BD.W-CARTOON-CASTER — the press is a NON-uniform SQUASH (H5): widen X, compress
335
+ Y — real squash & stretch, NOT a uniform shrink. The CSS `:active` is the no-JS
336
+ floor; `useLiquidPress` drives `--card-press-t` 0→1 for the continuous
337
+ interruptible press the inert caster rides. */
338
+ &:active:not(:disabled) {
339
+ scale: 1.04 0.94;
340
+ }
341
+ }
342
+
343
+ /* ── BD.W-CARTOON-CASTER — the inert-child moving cel cast ───────────────────────
344
+ The cast rides an INERT `<span class="cartoon-cast" aria-hidden>` child the Card
345
+ emits when `surface="cartoon"` — NOT a `::before`/`::after` pseudo (both are
346
+ OCCUPIED on the real glass carrier: `::before` is the moving-specular catch-light,
347
+ `::after` is the grain overlay; the H2 hardening). The child is a self-contained
348
+ ink-plate the body floats above: it carries the SAME shipped `--shadow-cartoon-md`
349
+ box-shadow (set ONCE per state-flip — NEVER animated, the §L7 paint-fence) and
350
+ MOVES on the compositor via `translate`/`scale` only.
351
+
352
+ The cast travels DOWN-LEFT (opposite the upper-right `--glass-key`, coherent with
353
+ the shadow.css cel-ink geometry) as the body lifts, and SPREADS as the gap opens.
354
+ ONE scalar drive: `--cartoon-press-t × --motion-weight` (the `:root` PRM carve
355
+ zeroes `--motion-weight` → travel/spread collapse to rest). It LAGS the body
356
+ (~1.15× slower transition) → the ink recoils LATE on release (follow-through /
357
+ overlapping action). The `--cartoon-cast-dx/dy` drag-track deltas are 0 at rest
358
+ (the opt-in `useCartoonCast` DOM bridge is future — labeled honestly). */
359
+ .cartoon-cast {
360
+ position: absolute;
361
+ inset: 0;
362
+ z-index: -1; /* behind the cel face, in front of the page */
363
+ border-radius: inherit;
364
+ pointer-events: none;
365
+ box-shadow: var(--shadow-cartoon-md);
366
+ /* the derived offset + spread — read `--motion-weight × --cartoon-press-t`. The
367
+ sign is DOWN-LEFT (negative X, positive Y) to match the upper-right key. */
368
+ --cast-travel: calc(6px * var(--motion-weight) * var(--cartoon-press-t));
369
+ --cast-spread: calc(1 + 0.18 * var(--motion-weight) * var(--cartoon-press-t));
370
+ translate:
371
+ calc(-1 * var(--cast-travel) + var(--cartoon-cast-dx))
372
+ calc(var(--cast-travel) + var(--cartoon-cast-dy));
373
+ scale: var(--cast-spread);
374
+ /* the caster LAGS the body (~1.15×) → the late ink recoil on release. */
375
+ transition:
376
+ translate calc(var(--duration-normal) * 1.15) var(--ease-cartoon-punch),
377
+ scale calc(var(--duration-normal) * 1.15) var(--ease-cartoon-punch),
378
+ --cartoon-cast-dx var(--duration-normal) var(--ease-cartoon-punch),
379
+ --cartoon-cast-dy var(--duration-normal) var(--ease-cartoon-punch);
380
+ will-change: translate, scale;
381
+ }
382
+
383
+ /* BD.W-CARTOON-CASTER — PRM/PRT carve. Under reduced-motion `--motion-weight: 0`
384
+ zeroes travel/spread/squash/lag in ONE assignment (every `calc(… * --motion-weight)`
385
+ collapses to rest); the transition is killed. The static bold cel STAMP persists
386
+ (identity/legibility — only the TRAVEL/PUNCH is removed). */
387
+ @media (prefers-reduced-motion: reduce) {
388
+ .cartoon-surface,
389
+ .cartoon-cast {
390
+ --motion-weight: 0;
391
+ transition: none;
192
392
  }
193
393
  }
194
394