@mkbabb/glass-ui 3.12.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (436) hide show
  1. package/dist/CardAction-XH4YBVEK.js +158 -0
  2. package/dist/{CommandShortcut-CefCj5mt.js → CommandShortcut-DdtWXxOK.js} +58 -53
  3. package/dist/{ContextMenuSubContent-Bhg4f5jX.js → ContextMenuSubContent-B0Vs6atR.js} +4 -4
  4. package/dist/{DataTable-CUHMukiQ.js → DataTable-C464Zbqd.js} +99 -97
  5. package/dist/DialogContent-DDE6pQBU.js +103 -0
  6. package/dist/{DialogFooter-Gprw8H_A.js → DialogFooter-8eZbdmPc.js} +2 -2
  7. package/dist/FadingScroll-DwNnvKMs.js +76 -0
  8. package/dist/{HoverPopover-2LOIW34a.js → HoverPopover-Dpzwvc4t.js} +1 -1
  9. package/dist/IconChip-BDw1j5mu.js +54 -0
  10. package/dist/{IconTooltip-Cus0fvK0.js → IconTooltip-DSjasZIt.js} +1 -1
  11. package/dist/MetricBadge-BpC0R_Ec.js +79 -0
  12. package/dist/{Notification-DLMhblXR.js → Notification-DKjKsQq8.js} +10 -10
  13. package/dist/{NumberFieldContent-BbLOh8RU.js → NumberFieldContent-1VtwDSgf.js} +3 -3
  14. package/dist/PopoverContent-BTorlp--.js +127 -0
  15. package/dist/{Progress-iEuD9pxG.js → Progress-hAT4gqGH.js} +97 -77
  16. package/dist/{ScrollingText-BPP84wKo.js → ScrollingText-CUVFTWk2.js} +2 -2
  17. package/dist/{SelectScrollDownButton-T32cVFeM.js → SelectScrollDownButton-C1jb3b3K.js} +24 -8
  18. package/dist/{Switch-Ch-k3Rv-.js → Switch-Dr--uLGH.js} +2 -2
  19. package/dist/{Toaster-1rYWrmAm.js → Toaster-Bm_HQSpc.js} +55 -52
  20. package/dist/{ToggleGroupItem-COu_4IW4.js → ToggleGroupItem-Dzk9hWsF.js} +18 -22
  21. package/dist/animated-digit.js +3 -3
  22. package/dist/api/index.d.ts +10 -4
  23. package/dist/api.js +1 -1
  24. package/dist/aurora.js +113 -98
  25. package/dist/{badge-CaoFJzRb.js → badge-UILT_3pZ.js} +1 -1
  26. package/dist/badge.js +1 -1
  27. package/dist/{button-DN39cGqL.js → button-BNDWhAZb.js} +12 -12
  28. package/dist/button.js +1 -1
  29. package/dist/card.js +1 -1
  30. package/dist/carousel.d.ts +1 -1
  31. package/dist/carousel.js +101 -145
  32. package/dist/{check-BBKKKSTf.js → check-njhk-vfu.js} +1 -1
  33. package/dist/{chevron-down-BSkTP2aL.js → chevron-down-DKkxb4VV.js} +1 -1
  34. package/dist/{chevron-right-sDM0Yvrf.js → chevron-right-CPXbqQQz.js} +1 -1
  35. package/dist/{chevron-up-CCOD_FTz.js → chevron-up-n_24SqI-.js} +1 -1
  36. package/dist/coalesceMetric-5qIeZnTx.js +13 -0
  37. package/dist/collapsible.js +1 -1
  38. package/dist/{color-C5ls_QF7.js → color-DweYl7pE.js} +9 -7
  39. package/dist/color-swatch.d.ts +1 -0
  40. package/dist/color-swatch.js +47 -0
  41. package/dist/color.js +1 -1
  42. package/dist/command.js +1 -1
  43. package/dist/components/custom/animated-digit/AnimatedDigit.vue.d.ts +8 -0
  44. package/dist/components/custom/aurora/constants/presets.d.ts +16 -45
  45. package/dist/components/custom/aurora/constants/renderMode.d.ts +2 -0
  46. package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +1 -1
  47. package/dist/components/custom/aurora/constants/shaders/vangogh-medium.glsl.d.ts +1 -0
  48. package/dist/components/custom/color-swatch/ColorSwatch.vue.d.ts +22 -0
  49. package/dist/components/custom/color-swatch/index.d.ts +1 -0
  50. package/dist/components/custom/configurator/Configurator.vue.d.ts +19 -8
  51. package/dist/components/custom/configurator/ConfiguratorRow.vue.d.ts +16 -0
  52. package/dist/components/custom/constellation/Constellation.vue.d.ts +23 -143
  53. package/dist/components/custom/constellation/composables/createConstellationField.d.ts +41 -0
  54. package/dist/components/custom/constellation/composables/useConstellation.d.ts +26 -0
  55. package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +35 -0
  56. package/dist/components/custom/constellation/constants.d.ts +61 -0
  57. package/dist/components/custom/constellation/constellationDraw.d.ts +30 -0
  58. package/dist/components/custom/constellation/constellationField.d.ts +3 -403
  59. package/dist/components/custom/constellation/constellationInteraction.d.ts +132 -0
  60. package/dist/components/custom/constellation/constellationTypes.d.ts +369 -0
  61. package/dist/components/custom/constellation/index.d.ts +5 -2
  62. package/dist/components/custom/controls/DarkModeToggle.vue.d.ts +11 -0
  63. package/dist/components/custom/dock/DockRail.vue.d.ts +89 -0
  64. package/dist/components/custom/dock/DockSection.vue.d.ts +69 -0
  65. package/dist/components/custom/dock/DockSeparator.vue.d.ts +49 -1
  66. package/dist/components/custom/dock/DockTabButton.vue.d.ts +5 -6
  67. package/dist/components/custom/dock/GlassDock.vue.d.ts +5 -118
  68. package/dist/components/custom/dock/composables/dockMorphContext.d.ts +36 -0
  69. package/dist/components/custom/dock/composables/index.d.ts +1 -0
  70. package/dist/components/custom/dock/composables/useDockClickIntegrity.d.ts +23 -0
  71. package/dist/components/custom/dock/composables/useDockMorphWindow.d.ts +15 -0
  72. package/dist/components/custom/dock/composables/useDockOrientationMorph.d.ts +44 -0
  73. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +165 -0
  74. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +44 -0
  75. package/dist/components/custom/dock/constants.d.ts +83 -0
  76. package/dist/components/custom/dock/index.d.ts +5 -0
  77. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +15 -37
  78. package/dist/components/custom/fading-scroll/FadingScroll.vue.d.ts +25 -0
  79. package/dist/components/custom/fading-scroll/composables/useFadingScroll.d.ts +31 -0
  80. package/dist/components/custom/fading-scroll/constants.d.ts +19 -0
  81. package/dist/components/custom/fading-scroll/index.d.ts +2 -0
  82. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +7 -0
  83. package/dist/components/custom/fourier-field/index.d.ts +1 -1
  84. package/dist/components/custom/fourier-field/math.d.ts +34 -0
  85. package/dist/components/custom/fourier-field/presets.d.ts +54 -0
  86. package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +8 -0
  87. package/dist/components/custom/goo-blob/composables/buildMetaballProgram.d.ts +18 -0
  88. package/dist/components/custom/goo-blob/composables/uploadBlobUniforms.d.ts +41 -0
  89. package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +4 -3
  90. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +21 -8
  91. package/dist/components/custom/goo-blob/constants.d.ts +57 -0
  92. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -0
  93. package/dist/components/custom/handmark/brush.d.ts +33 -6
  94. package/dist/components/custom/handmark/{useHandMark.d.ts → composables/useHandMark.d.ts} +6 -4
  95. package/dist/components/custom/handmark/constants.d.ts +39 -0
  96. package/dist/components/custom/handmark/geometry.d.ts +14 -12
  97. package/dist/components/custom/handmark/index.d.ts +8 -2
  98. package/dist/components/custom/handmark/types.d.ts +9 -0
  99. package/dist/components/custom/icon-chip/IconChip.vue.d.ts +4 -0
  100. package/dist/components/custom/icon-chip/index.d.ts +2 -0
  101. package/dist/components/custom/icon-chip/types.d.ts +72 -0
  102. package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +17 -4
  103. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +37 -0
  104. package/dist/components/custom/labeled-field/LabeledSelect.vue.d.ts +6 -0
  105. package/dist/components/custom/labeled-field/LabeledSlider.vue.d.ts +6 -0
  106. package/dist/components/custom/labeled-field/LabeledSwitch.vue.d.ts +6 -0
  107. package/dist/components/custom/metric-badge/MetricBadge.vue.d.ts +11 -18
  108. package/dist/components/custom/metric-badge/index.d.ts +1 -0
  109. package/dist/components/custom/metric-cell/MetricCell.vue.d.ts +15 -4
  110. package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +6 -4
  111. package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +39 -0
  112. package/dist/components/custom/pager-dots/index.d.ts +2 -0
  113. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +20 -25
  114. package/dist/components/custom/tabs/composables/useTabIndicator.d.ts +30 -21
  115. package/dist/components/custom/tabs/constants.d.ts +18 -0
  116. package/dist/components/custom/tabs/index.d.ts +1 -1
  117. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +14 -0
  118. package/dist/components/ui/_shared/index.d.ts +2 -0
  119. package/dist/components/ui/_shared/menuItemVariants.d.ts +19 -0
  120. package/dist/components/ui/_shared/useSurfaceAxis.d.ts +41 -0
  121. package/dist/components/ui/card/Card.vue.d.ts +16 -4
  122. package/dist/components/ui/carousel/index.d.ts +0 -1
  123. package/dist/components/ui/command/Command.vue.d.ts +3 -0
  124. package/dist/components/ui/dialog/DialogContent.vue.d.ts +8 -3
  125. package/dist/components/ui/drawer/Drawer.vue.d.ts +1 -0
  126. package/dist/components/ui/drawer/DrawerContent.vue.d.ts +5 -0
  127. package/dist/components/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +2 -2
  128. package/dist/components/ui/index.d.ts +0 -1
  129. package/dist/components/ui/metric-pill/MetricPill.vue.d.ts +6 -3
  130. package/dist/components/ui/popover/PopoverContent.vue.d.ts +3 -0
  131. package/dist/components/ui/progress/ProgressSectioned.vue.d.ts +14 -3
  132. package/dist/components/ui/select/SelectTrigger.vue.d.ts +27 -4
  133. package/dist/components/ui/sheet/SheetContent.vue.d.ts +6 -0
  134. package/dist/components/ui/skeleton/Skeleton.vue.d.ts +3 -0
  135. package/dist/components/ui/slider/index.d.ts +22 -19
  136. package/dist/components/ui/tabs/TabsIndicator.vue.d.ts +4 -1
  137. package/dist/components/ui/toast/use-toast.d.ts +2 -2
  138. package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
  139. package/dist/components/ui/toggle/index.d.ts +1 -1
  140. package/dist/components/ui/toggle-group/ToggleGroup.vue.d.ts +1 -7
  141. package/dist/components/ui/toggle-group/ToggleGroupItem.vue.d.ts +1 -3
  142. package/dist/components/ui/toggle-group/toggleGroupContext.d.ts +0 -13
  143. package/dist/composables/color/index.d.ts +12 -0
  144. package/dist/composables/dark/useGlobalDark.d.ts +14 -12
  145. package/dist/composables/glass/index.d.ts +0 -1
  146. package/dist/composables/glass/useGlassBackdropLuminance.d.ts +59 -0
  147. package/dist/composables/glass/useSpecularTracking.d.ts +12 -3
  148. package/dist/composables/motion/core/index.d.ts +1 -1
  149. package/dist/composables/motion/curves.d.ts +48 -0
  150. package/dist/composables/motion/index.d.ts +2 -0
  151. package/dist/composables/motion/springPresets.d.ts +33 -0
  152. package/dist/composables/motion/suite.d.ts +2 -0
  153. package/dist/composables/motion/useLiquidFlex.d.ts +85 -0
  154. package/dist/composables/motion/useSpringMount.d.ts +1 -1
  155. package/dist/composables/motion/useViewTransition.d.ts +36 -1
  156. package/dist/configurator.js +1 -1
  157. package/dist/confirm-dialog.js +3 -3
  158. package/dist/constellation.js +373 -261
  159. package/dist/context-menu.js +2 -2
  160. package/dist/controls.js +48 -14
  161. package/dist/dark.js +1 -1
  162. package/dist/data-table.js +1 -1
  163. package/dist/dialog.js +2 -2
  164. package/dist/dock.js +901 -372
  165. package/dist/dockContext-Bu1Avy-a.js +17 -0
  166. package/dist/dom.js +5 -5
  167. package/dist/{dropdown-menu-D77jX6Df.js → dropdown-menu-BJ7E9js_.js} +11 -8
  168. package/dist/dropdown-menu.js +1 -1
  169. package/dist/expandable-container.js +44 -81
  170. package/dist/fading-scroll.d.ts +1 -0
  171. package/dist/fading-scroll.js +2 -0
  172. package/dist/forms.js +5 -5
  173. package/dist/fourier-field.js +140 -104
  174. package/dist/fourier-math.js +2 -2
  175. package/dist/glass-panel.js +90 -21
  176. package/dist/glass-ui.css +1 -1
  177. package/dist/glass-ui.js +230 -236
  178. package/dist/goo-blob.js +264 -228
  179. package/dist/handmark.js +203 -159
  180. package/dist/header-ribbon.js +1 -1
  181. package/dist/hover-card.js +1 -1
  182. package/dist/hover-popover.js +1 -1
  183. package/dist/icon-chip.d.ts +1 -0
  184. package/dist/icon-chip.js +2 -0
  185. package/dist/icon-tooltip.js +1 -1
  186. package/dist/index.d.ts +3 -5
  187. package/dist/instrument-chassis.js +1 -1
  188. package/dist/keyboard.js +1 -1
  189. package/dist/label.js +1 -1
  190. package/dist/labeled-field.js +28 -18
  191. package/dist/{math-DTpRVC0e.js → math-DeuJwLFx.js} +26 -2
  192. package/dist/{menuItemVariants-CCoBNkU5.js → menuItemVariants-DWRQXBxJ.js} +10 -4
  193. package/dist/metric-badge.js +1 -1
  194. package/dist/metric-cell.js +29 -22
  195. package/dist/metric-stack.js +35 -34
  196. package/dist/{minimize-2-lcXOuc6V.js → minimize-2-BV31Ob_h.js} +1 -1
  197. package/dist/motion-core.js +32 -136
  198. package/dist/motion-curves.d.ts +1 -0
  199. package/dist/motion-curves.js +130 -0
  200. package/dist/motion.js +38 -37
  201. package/dist/notification.js +1 -1
  202. package/dist/number-field.js +1 -1
  203. package/dist/pager-dots.d.ts +1 -0
  204. package/dist/pager-dots.js +91 -0
  205. package/dist/paper-backdrop.js +1 -1
  206. package/dist/popover.js +1 -1
  207. package/dist/progress.js +1 -1
  208. package/dist/pulse.js +1 -1
  209. package/dist/reactive.js +2 -2
  210. package/dist/scrolling-text.js +1 -1
  211. package/dist/{search-nbkvr2dC.js → search-BSGrf2Sk.js} +1 -1
  212. package/dist/search.js +10 -10
  213. package/dist/select.js +3 -3
  214. package/dist/separator.js +1 -1
  215. package/dist/sheet-CquRYOAw.js +218 -0
  216. package/dist/sheet.js +1 -1
  217. package/dist/{slider-ClgpP7EB.js → slider-DQ95MET2.js} +8 -8
  218. package/dist/slider.js +1 -1
  219. package/dist/sortable-list.js +3 -3
  220. package/dist/springPresets-WXaLbu8u.js +40 -0
  221. package/dist/stacked-icons.js +6 -6
  222. package/dist/styles/animations.css +25 -125
  223. package/dist/styles/cards.css +55 -0
  224. package/dist/styles/components.css +4 -1
  225. package/dist/styles/configurator.css +77 -0
  226. package/dist/styles/dock/density.css +19 -0
  227. package/dist/styles/dock/layer-group.css +83 -25
  228. package/dist/styles/dock/layers.css +23 -1
  229. package/dist/styles/dock/morph-bridge.css +123 -0
  230. package/dist/styles/dock/morph.css +175 -45
  231. package/dist/styles/dock/overflow.css +66 -1
  232. package/dist/styles/dock/rail-extend.css +397 -0
  233. package/dist/styles/dock/section.css +59 -0
  234. package/dist/styles/dock/shell.css +97 -110
  235. package/dist/styles/dock-controls/dark-mode-toggle.css +109 -0
  236. package/dist/styles/dock-controls/icon-button.css +143 -0
  237. package/dist/styles/dock-controls/tab-button.css +143 -0
  238. package/dist/styles/dock-controls/touch-floor.css +94 -0
  239. package/dist/styles/dock-controls/triggers.css +135 -0
  240. package/dist/styles/dock-controls.css +30 -595
  241. package/dist/styles/dock.css +8 -3
  242. package/dist/styles/drawer.css +48 -0
  243. package/dist/styles/feedback-tone.css +104 -0
  244. package/dist/styles/floating-panel.css +17 -0
  245. package/dist/styles/glass/a11y-fallback.css +245 -0
  246. package/dist/styles/glass/ladder.css +383 -0
  247. package/dist/styles/glass/material.css +238 -0
  248. package/dist/styles/glass/progress-rail.css +78 -0
  249. package/dist/styles/glass/squircle.css +66 -0
  250. package/dist/styles/glass/surface-axis.css +113 -0
  251. package/dist/styles/glass/surfaces.css +382 -0
  252. package/dist/styles/glass-refract.css +2 -0
  253. package/dist/styles/glass.css +34 -1188
  254. package/dist/styles/hover-popover.css +2 -0
  255. package/dist/styles/icon-chip.css +149 -0
  256. package/dist/styles/index.css +94 -18
  257. package/dist/styles/instrument-chassis.css +46 -0
  258. package/dist/styles/menu.css +127 -0
  259. package/dist/styles/paper.css +2 -68
  260. package/dist/styles/segmented-tabs.css +346 -0
  261. package/dist/styles/select.css +50 -0
  262. package/dist/styles/theme/bridges.css +347 -0
  263. package/dist/styles/theme/dark.css +7 -0
  264. package/dist/styles/theme/literals.css +94 -0
  265. package/dist/styles/theme/radius.css +95 -0
  266. package/dist/styles/theme.css +26 -529
  267. package/dist/styles/tokens/color-radius.css +287 -0
  268. package/dist/styles/tokens/dark-arm.css +308 -0
  269. package/dist/styles/tokens/glass.css +500 -0
  270. package/dist/styles/tokens/light-dark.css +187 -0
  271. package/dist/styles/tokens/offsets-sizing.css +562 -0
  272. package/dist/styles/tokens/property-regs.css +162 -0
  273. package/dist/styles/tokens/scale-paper.css +409 -0
  274. package/dist/styles/tokens/scheme-motion.css +352 -0
  275. package/dist/styles/tokens/shadow.css +166 -0
  276. package/dist/styles/tokens.css +22 -2360
  277. package/dist/styles/transitions.css +7 -7
  278. package/dist/styles/typography/scale.css +153 -0
  279. package/dist/styles/typography/semantic.css +220 -0
  280. package/dist/styles/typography/utilities.css +159 -0
  281. package/dist/styles/typography.css +23 -453
  282. package/dist/styles/utilities/a11y-overrides.css +169 -0
  283. package/dist/styles/utilities/animate.css +26 -0
  284. package/dist/styles/utilities/base.css +541 -0
  285. package/dist/styles/utilities/btn.css +218 -0
  286. package/dist/styles/utilities/components.css +317 -0
  287. package/dist/styles/utilities.css +19 -1318
  288. package/dist/styles/view-transition.css +4 -52
  289. package/dist/switch.js +1 -1
  290. package/dist/tabs.js +161 -181
  291. package/dist/timeline.js +2 -2
  292. package/dist/toast.js +1 -1
  293. package/dist/toggle-chip.js +3 -1
  294. package/dist/toggle-group.js +1 -1
  295. package/dist/tooltip.js +1 -1
  296. package/dist/typewriter.js +1 -1
  297. package/dist/{useAnimatedNumber-Bcpy5Etf.js → useAnimatedNumber-C_3wZLx4.js} +1 -1
  298. package/dist/useConfiguratorState-kiIlun8I.js +303 -0
  299. package/dist/useLiquidFlex-C12hXwOZ.js +30 -0
  300. package/dist/useRAFLoop-CdwJ7284.js +109 -0
  301. package/dist/{useScrollProgress-CffFGLa5.js → useScrollProgress-D7bYU2RK.js} +1 -1
  302. package/dist/useSpecularTracking-Bo5su68i.js +32 -0
  303. package/dist/useSpringMount-CvopqiFr.js +108 -0
  304. package/dist/useSurfaceAxis-CMnF2zHb.js +7 -0
  305. package/dist/{useTouchGate-WFyJYsth.js → useTouchGate-28Tk2-t2.js} +1 -1
  306. package/dist/useViewTransition-COsPjQVZ.js +47 -0
  307. package/dist/utils/coalesceMetric.d.ts +29 -0
  308. package/dist/utils/index.d.ts +1 -0
  309. package/dist/vReveal-D9k0jADx.js +10 -0
  310. package/dist/watercolor-dot.js +22 -13
  311. package/dist/{x-Dfsegz9Y.js → x-BUwTKe50.js} +1 -1
  312. package/package.json +134 -50
  313. package/src/styles/animations.css +25 -125
  314. package/src/styles/cards.css +53 -0
  315. package/src/styles/configurator.css +77 -0
  316. package/src/styles/dock/density.css +19 -0
  317. package/src/styles/dock/layer-group.css +83 -25
  318. package/src/styles/dock/layers.css +23 -1
  319. package/src/styles/dock/morph-bridge.css +123 -0
  320. package/src/styles/dock/morph.css +175 -45
  321. package/src/styles/dock/overflow.css +66 -1
  322. package/src/styles/dock/rail-extend.css +397 -0
  323. package/src/styles/dock/section.css +59 -0
  324. package/src/styles/dock/shell.css +97 -110
  325. package/src/styles/dock-controls/dark-mode-toggle.css +109 -0
  326. package/src/styles/dock-controls/icon-button.css +143 -0
  327. package/src/styles/dock-controls/tab-button.css +143 -0
  328. package/src/styles/dock-controls/touch-floor.css +94 -0
  329. package/src/styles/dock-controls/triggers.css +135 -0
  330. package/src/styles/dock-controls.css +30 -595
  331. package/src/styles/dock.css +8 -3
  332. package/src/styles/drawer.css +42 -0
  333. package/src/styles/feedback-tone.css +104 -0
  334. package/src/styles/floating-panel.css +15 -0
  335. package/src/styles/glass/a11y-fallback.css +245 -0
  336. package/src/styles/glass/ladder.css +383 -0
  337. package/src/styles/glass/material.css +238 -0
  338. package/src/styles/glass/progress-rail.css +78 -0
  339. package/src/styles/glass/squircle.css +66 -0
  340. package/src/styles/glass/surface-axis.css +113 -0
  341. package/src/styles/glass/surfaces.css +382 -0
  342. package/src/styles/glass.css +34 -1188
  343. package/src/styles/icon-chip.css +149 -0
  344. package/src/styles/index.css +93 -17
  345. package/src/styles/instrument-chassis.css +42 -0
  346. package/src/styles/menu.css +127 -0
  347. package/src/styles/paper.css +2 -68
  348. package/src/styles/segmented-tabs.css +340 -0
  349. package/src/styles/select.css +50 -0
  350. package/src/styles/theme/bridges.css +347 -0
  351. package/src/styles/theme/dark.css +7 -0
  352. package/src/styles/theme/literals.css +94 -0
  353. package/src/styles/theme/radius.css +95 -0
  354. package/src/styles/theme.css +26 -529
  355. package/src/styles/tokens/color-radius.css +287 -0
  356. package/src/styles/tokens/dark-arm.css +308 -0
  357. package/src/styles/tokens/glass.css +500 -0
  358. package/src/styles/tokens/light-dark.css +187 -0
  359. package/src/styles/tokens/offsets-sizing.css +562 -0
  360. package/src/styles/tokens/property-regs.css +162 -0
  361. package/src/styles/tokens/scale-paper.css +409 -0
  362. package/src/styles/tokens/scheme-motion.css +352 -0
  363. package/src/styles/tokens/shadow.css +166 -0
  364. package/src/styles/tokens.css +22 -2360
  365. package/src/styles/transitions.css +7 -7
  366. package/src/styles/typography/scale.css +153 -0
  367. package/src/styles/typography/semantic.css +220 -0
  368. package/src/styles/typography/utilities.css +159 -0
  369. package/src/styles/typography.css +23 -453
  370. package/src/styles/utilities/a11y-overrides.css +169 -0
  371. package/src/styles/utilities/animate.css +26 -0
  372. package/src/styles/utilities/base.css +541 -0
  373. package/src/styles/utilities/btn.css +218 -0
  374. package/src/styles/utilities/components.css +317 -0
  375. package/src/styles/utilities.css +19 -1318
  376. package/src/styles/view-transition.css +4 -52
  377. package/dist/CardAction-DuArVky-.js +0 -157
  378. package/dist/DeckProgress-Dmk4_AKN.js +0 -23
  379. package/dist/DialogContent-BRkT1cjP.js +0 -100
  380. package/dist/InstrumentRail-CUJ05YVG.js +0 -44
  381. package/dist/MetricBadge-BZVWIxNy.js +0 -80
  382. package/dist/PopoverContent-BId6ggf_.js +0 -121
  383. package/dist/TabsList-B8CVOQPC.js +0 -101
  384. package/dist/components/custom/deck-progress/DeckProgress.vue.d.ts +0 -27
  385. package/dist/components/custom/deck-progress/index.d.ts +0 -2
  386. package/dist/components/custom/dialog-native/GlassDialogNative.vue.d.ts +0 -57
  387. package/dist/components/custom/dialog-native/index.d.ts +0 -1
  388. package/dist/components/custom/instrument-rail/InstrumentRail.vue.d.ts +0 -91
  389. package/dist/components/custom/instrument-rail/index.d.ts +0 -2
  390. package/dist/components/ui/carousel/CarouselDots.vue.d.ts +0 -4
  391. package/dist/composables/motion/useRouteTransition.d.ts +0 -42
  392. package/dist/deck-progress.d.ts +0 -1
  393. package/dist/deck-progress.js +0 -2
  394. package/dist/dockContext-BKeIMmNk.js +0 -9
  395. package/dist/instrument-rail.d.ts +0 -1
  396. package/dist/instrument-rail.js +0 -2
  397. package/dist/sheet-VZEtNFvO.js +0 -214
  398. package/dist/styles/instrument-rail.css +0 -127
  399. package/dist/useConfiguratorState-DxAqksK6.js +0 -287
  400. package/dist/useGlassRenderer-D7YGOYiM.js +0 -69
  401. package/dist/useSpecularTracking-BVRZsRHA.js +0 -26
  402. package/dist/useSpringMount-BJSHcLl3.js +0 -113
  403. package/dist/useViewTransition-DaN5Zrox.js +0 -21
  404. package/dist/vReveal-zUIQk-rJ.js +0 -53
  405. package/src/styles/instrument-rail.css +0 -127
  406. /package/dist/{CollapsibleContent-CP9qF1v4.js → CollapsibleContent-C_s6fG7r.js} +0 -0
  407. /package/dist/{ContextMenuContent-DDa0v27s.js → ContextMenuContent-ON3x7cuk.js} +0 -0
  408. /package/dist/{HoverCardContent-B6CcQ8He.js → HoverCardContent-DkMaQzH5.js} +0 -0
  409. /package/dist/{Input-xuDwALQR.js → Input-DVG_J0ne.js} +0 -0
  410. /package/dist/{InstrumentChassis-C2f6cBaQ.js → InstrumentChassis-UUJX0-mW.js} +0 -0
  411. /package/dist/{Label-zRfbQdCn.js → Label-Ck9SWEKM.js} +0 -0
  412. /package/dist/{ModalOverlay-B1GkAjNb.js → ModalOverlay-CkPRRgl_.js} +0 -0
  413. /package/dist/{PaperBackdrop-CqwjnfLv.js → PaperBackdrop-nBKe0vkB.js} +0 -0
  414. /package/dist/{SelectGroup-BFiod7X2.js → SelectGroup-Dcczq44n.js} +0 -0
  415. /package/dist/{SelectSeparator-C4Ql0gzV.js → SelectSeparator-DK2y1Bun.js} +0 -0
  416. /package/dist/{Separator-D7sD7RKj.js → Separator-BArl4OaB.js} +0 -0
  417. /package/dist/{TooltipProvider-CmZzCuaG.js → TooltipProvider-B3MkB_8P.js} +0 -0
  418. /package/dist/{_plugin-vue_export-helper-ok8pgSl5.js → _plugin-vue_export-helper-CBt_VvXa.js} +0 -0
  419. /package/dist/{compile-BOXjLUxu.js → compile-EXXzEr1q.js} +0 -0
  420. /package/dist/{constants-yKeKnE84.js → constants-BPOqYJAm.js} +0 -0
  421. /package/dist/{createContext-B44Sah_H.js → createContext-B2RaZ-b8.js} +0 -0
  422. /package/dist/{createLucideIcon-B6uNAU9G.js → createLucideIcon-DydS2qgk.js} +0 -0
  423. /package/dist/{presets-BP_ALM0m.js → presets-BW2b-fr1.js} +0 -0
  424. /package/dist/{prng-D27-B3tK.js → prng-Cg22zv8g.js} +0 -0
  425. /package/dist/{supportsCssTimeline-C5oe0lnD.js → supportsCssTimeline-BWenxvHU.js} +0 -0
  426. /package/dist/{useGlobalDark-CAhOXNLO.js → useGlobalDark-C28t0VWJ.js} +0 -0
  427. /package/dist/{useIntersectionPause-Cck5Uxk8.js → useIntersectionPause-Bj4sPkMh.js} +0 -0
  428. /package/dist/{useInterval-Dsmqwi03.js → useInterval-CNdua40W.js} +0 -0
  429. /package/dist/{useKeyboardShortcuts-CyIYrndH.js → useKeyboardShortcuts-BXWXOZ-9.js} +0 -0
  430. /package/dist/{useResizeObserver-CWCbk5Px.js → useResizeObserver-V6nq5gJb.js} +0 -0
  431. /package/dist/{useResolveTokenColor-r9pnNjqK.js → useResolveTokenColor-NUG2zYAW.js} +0 -0
  432. /package/dist/{useSortable-C8ReQ50P.js → useSortable-BVqlJRBR.js} +0 -0
  433. /package/dist/{useTextHighlight-CWEi25hf.js → useTextHighlight-NmBM5V_4.js} +0 -0
  434. /package/dist/{useTimer-3xqf_54b.js → useTimer-B_PAasDL.js} +0 -0
  435. /package/dist/{useUserInvalidAria-DoJKMZ3s.js → useUserInvalidAria-CDfJuakL.js} +0 -0
  436. /package/dist/{useViewportReady-RIr5Wgkh.js → useViewportReady-CvBcCYDf.js} +0 -0
@@ -0,0 +1,287 @@
1
+ /* tokens/color-radius.css
2
+ §4 radius reference · §5 warm-cream/muted-black palette · §5c constellation · §6 section palette · §6b viz basis.
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
+ /* §4 BORDER RADIUS — authored ONCE in theme.css's leading plain @theme
7
+ block (AV.W16 TW1). A plain @theme mints each `--radius-*` as a global
8
+ :root var, so the `var(--radius-card)` recipe reads across this file
9
+ resolve from that source. The prior §4 twin here doubled the override
10
+ surface (the anti-pattern the @theme-inline migration kills) — excised;
11
+ retune the scale at theme.css. */
12
+
13
+ /* ═══════════════════════════════════════════════
14
+ §5 COLOR PALETTE — Warm cream / muted black
15
+
16
+ Neutral scale: perceptually-uniform L* steps at hue 48 (warm paper).
17
+ Each pair visibly distinct at 20px viewing distance.
18
+ 0 → 1 : 3 L (page → soft field)
19
+ 1 → 2 : 5 L (soft field → chip / tab-inactive)
20
+ 2 → 3 : 8 L (chip → hover / highlight)
21
+ 3 → 4 : 12 L (highlight → subtle border)
22
+ 4 → 5 : 25 L (border → muted text, contrast jump)
23
+ 5 → 6 : 10 L (muted text → strong-muted text, secondary register)
24
+
25
+ Semantic aliases re-point into the scale — no back-compat shims.
26
+
27
+ BA.W-NO-GRAY — THE WARM-CHROMA FLOOR (R10-5 "No gray."). The ladder was
28
+ SPECIFIED warm (hue 48) but RESOLVED achromatic — at 6-10% sat across
29
+ L40-95 the painted OKLab chroma landed C 0.0055-0.0155 (below the ~0.020
30
+ perceptual gray floor) AND at hsl-48 the OKLab hue mapped to ~95° (a
31
+ yellow-green), NOT the warm-amber the --foreground ink carries (hsl-24 →
32
+ OKLab H≈56°). The fix is CHROMA-ONLY at constant L: warm the hue toward
33
+ the foreground register (hsl 28-34 → OKLab H 62-72°, warm MATERIAL not a
34
+ cast) AND lift the saturation off the gray floor. The L is unchanged (the
35
+ contrast contract — AA re-ratified, ±0.01 of HEAD). The mid/low-L rungs
36
+ clear the strong floor C≥0.020; the L90 chip is gamut-bound (it cannot
37
+ carry 0.020 at L90 without a visible cast — the triumvirate "tinted not
38
+ warm" trigger), so it lifts to a materially-warm C≈0.013 (~2.4× HEAD).
39
+ Machine-locked by proof:no-gray + tests-visual/no-gray.spec.ts. */
40
+ --neutral-0: hsl(40 30% 98%); /* L 98 — page surface (warm-cream, KEEP-NEUTRAL surface) */
41
+ --neutral-1: hsl(38 26% 95%); /* L 95 — soft field bg */
42
+ --neutral-2: hsl(34 28% 90%); /* L 90 — chip / tab-inactive bg (warm, gamut-bound C≈0.013) */
43
+ --neutral-3: hsl(33 30% 82%); /* L 82 — hover / highlight bg (warm, C≈0.025) */
44
+ --neutral-4: hsl(32 26% 70%); /* L 70 — subtle border (warm, C≈0.036) */
45
+ --neutral-5: hsl(30 22% 40%); /* L 40 — muted text (warm, C≈0.043; WCAG AA: 5.21:1 vs page / 4.90:1 vs muted) */
46
+ /* W7-α' (AK-FD1) — strong-muted text rung. One principled ladder step
47
+ (10 L darker, the 5→6 cadence above) past muted text toward
48
+ --foreground (L10). Sits at the 1/3 point of the L40→L10 muted→primary
49
+ gap: legible secondary text that reads less-faint than muted but not as
50
+ assertive as primary. By-COLOUR per the canon (a neutral step, not an
51
+ alpha mute). BA.W-NO-GRAY — re-saturated onto the warm identity in
52
+ lockstep with the ladder (hsl 28 24% — OKLab H 62°, C≈0.038, the warm
53
+ register; L held at 30). WCAG AA: 7.88:1 vs L98 page / 7.43:1 vs L95
54
+ muted (cf. neutral-5's 5.21:1) — comfortably above the 4.5:1 body floor. */
55
+ --neutral-6: hsl(28 24% 30%); /* L 30 — strong-muted text (secondary register, warm) */
56
+
57
+ --background: var(--neutral-0);
58
+ --foreground: hsl(24 10% 10%);
59
+ /* BA.W-NO-GRAY L1 — the warm-bias glass PLATE. --card was `var(--neutral-0)`
60
+ (the near-achromatic L98 page, OKLab C 0.0017) — so every glass plate
61
+ (Card/Button/Toast/Popover/Dialog/Sheet, all --card-derived) composited a
62
+ flat gray slab over a flat backdrop (the G1/G8 defect, the user's "no gray
63
+ ... for cards, buttons"). Glass is TRANSMISSIVE — over a flat page there
64
+ is nothing behind to modulate, so the plate is its own near-neutral cream.
65
+ --card DECOUPLES from the page to a warm-cream value carrying a real OKLab
66
+ chroma (hsl 36 48% 97% → OKLab C 0.0062 at warm H 75°, L kept ~98 so the
67
+ page-card SURFACE read is byte-stable), so the plate reads WARM over ANY
68
+ backdrop — the plate floor (composited C ≥ 0.0035, ~2× HEAD) the gamut
69
+ allows a near-white translucent surface. The DARK --card is W-DARK-MATERIAL's
70
+ lifted hsl(24 8% 16%) (NOT re-warmed here — the dark register is its work).
71
+ Bounded: the cream family, never a tinted cast (the triumvirate bar). */
72
+ --card: hsl(36 48% 97%);
73
+ --card-foreground: var(--foreground);
74
+ --popover: var(--card);
75
+ --popover-foreground: var(--foreground);
76
+
77
+ /* R0G-5 (AO.W4) — warm-neutral public-data panel surface. One warmth step
78
+ off --card (hue 44 vs 48, +4 sat, −2 L) so a consumer's aurora-OFF
79
+ /dashboard/* surfaces read with the admin canon's warm-neutral chrome
80
+ instead of the colder bare card. Opaque surface (the --card family), not
81
+ a --surface-tint-* overlay. Consumer applies on /dashboard/* only. */
82
+ --surface-public-data-panel: hsl(44 16% 96%);
83
+
84
+ --muted: var(--neutral-1);
85
+ --muted-foreground: var(--neutral-5);
86
+ /* W7-α' (AK-FD1) — one rung less-faint than --muted-foreground for
87
+ secondary text that reads too-faint at the muted rung over resting
88
+ glass (CardDescription). By-colour neutral step, not alpha. */
89
+ --muted-foreground-strong: var(--neutral-6);
90
+ --secondary: var(--neutral-2);
91
+ --secondary-foreground: var(--foreground);
92
+ --accent: var(--neutral-3);
93
+ --accent-foreground: var(--foreground);
94
+
95
+ --border: var(--neutral-4);
96
+ --input: var(--neutral-4);
97
+
98
+ --primary: hsl(24 10% 10%);
99
+ --primary-foreground: var(--neutral-0);
100
+ --destructive: hsl(0 72% 50%);
101
+ --destructive-foreground: var(--neutral-0);
102
+ --ring: hsl(24 10% 10%);
103
+ --shadow: hsl(24 10% 10%);
104
+ --shadow-color: var(--foreground);
105
+
106
+ /* AQ.W2 §4 — native-control accent. `accent-color` is an inherited
107
+ built-in <color>, so per the §2b resolve-late discipline it reads a
108
+ dedicated UNREGISTERED token set per-mode (NOT light-dark()) and is
109
+ re-specified inside `.dark` — otherwise the accent freezes to the
110
+ light shade at the cascade root. Light: muted-black checkmarks /
111
+ sliders on warm cream. Dark arm (`.dark`) reads `--ring` (mid-tone),
112
+ not the near-white dark `--primary`, so a checkbox's white checkmark
113
+ keeps contrast headroom (accent-color.md §5). */
114
+ --accent-color: var(--primary);
115
+
116
+ /* Border hairline at whisper alpha — the canonical rung for
117
+ section-spine / panel-edge hairlines a consumer wants to read as an
118
+ iOS-26 whisper rather than a hard rule. Consumers compose this named
119
+ rung instead of hand-mixing `color-mix(... var(--border) ...)`
120
+ per-site (token-first). 45% is the canonical whisper. Auto-dark via
121
+ `--border` (which is `var(--neutral-4)`, light-dark()-resolved). */
122
+ --border-soft: color-mix(in srgb, var(--border) 45%, transparent);
123
+
124
+ /* AQ.W3 §W3.4 — tokenized scrollbar thumb + track. Minted in the color
125
+ block so the `scrollbar-color` / `::-webkit-scrollbar-thumb` rungs read a
126
+ single source. Auto-dark via `--muted-foreground` (light-dark()-resolved,
127
+ AQ.W2) — the OS scrollbar chrome also honors `color-scheme: dark`, so the
128
+ custom thumb tracks the dark surface without an explicit dark mirror. The
129
+ thumb α (25%) matches the prior inline `.scrollbar-thin` value byte-for-
130
+ byte; `transparent` track keeps the scroll-pane glass reading through. */
131
+ --scrollbar-thumb: color-mix(in srgb, var(--muted-foreground) 25%, transparent);
132
+ --scrollbar-track: transparent;
133
+
134
+ /* Foreground-tint rungs — canonical handles for the 36+ raw
135
+ `color-mix(in srgb, var(--foreground) N%, transparent)` sites surveyed
136
+ in R5 axis-1. Each rung's α is named in its key (4 → 4%, 22 → 22%).
137
+ Auto-dark via --foreground; no explicit dark mirrors needed. R5
138
+ vocab.γ gap row 1. Consumers land in W2.B + W3.C. */
139
+ --surface-tint-4: color-mix(in srgb, var(--foreground) 4%, transparent);
140
+ --surface-tint-6: color-mix(in srgb, var(--foreground) 6%, transparent);
141
+ --surface-tint-8: color-mix(in srgb, var(--foreground) 8%, transparent);
142
+ --surface-tint-10: color-mix(in srgb, var(--foreground) 10%, transparent);
143
+ --surface-tint-12: color-mix(in srgb, var(--foreground) 12%, transparent);
144
+ --surface-tint-15: color-mix(in srgb, var(--foreground) 15%, transparent);
145
+ --surface-tint-18: color-mix(in srgb, var(--foreground) 18%, transparent);
146
+ --surface-tint-22: color-mix(in srgb, var(--foreground) 22%, transparent);
147
+ --surface-tint-25: color-mix(in srgb, var(--foreground) 25%, transparent);
148
+ /* Higher-α rungs added at L.W5 (absorbs K R4 — 4 P1 sites whose
149
+ literal `color-mix(in srgb, var(--foreground) {35,40,70}%, transparent)`
150
+ expressions bypassed the canonical token family). See `docs/tranches/L/
151
+ audit/W5-A-doc-cohort-proof.md`. */
152
+ --surface-tint-35: color-mix(in srgb, var(--foreground) 35%, transparent);
153
+ --surface-tint-40: color-mix(in srgb, var(--foreground) 40%, transparent);
154
+ --surface-tint-70: color-mix(in srgb, var(--foreground) 70%, transparent);
155
+
156
+ /* Muted-tinted surface rungs — canonical handles for the 9 raw
157
+ `color-mix(in srgb, var(--muted) N%, transparent)` sites in
158
+ FuzzySearch / SegmentedTabs / Slider scoped CSS. (AI.W5-δ — the
159
+ ProgressiveSidebar consumer retired at the wave; the canonical token
160
+ rung lives on for the remaining consumers.) Auto-dark via --muted.
161
+ R5 vocab.γ axis-1 row. */
162
+ --muted-soft: color-mix(in srgb, var(--muted) 30%, transparent);
163
+ --muted-medium: color-mix(in srgb, var(--muted) 50%, transparent);
164
+
165
+ /* ═══════════════════════════════════════════════
166
+ §5c CONSTELLATION — Canvas2D proximity-graph lattice (AX.W17)
167
+
168
+ The H.W4 legibility intelligence promoted from the slides deck to
169
+ LIBRARY identity: the node tones, the edge hairline color, the per-mode
170
+ edge-alpha multipliers, and the field-yields-to-type translucency knob.
171
+ Only `--constellation-accent` (the anomaly tint) stays a CONSUMER preset
172
+ (slides aliases it to `--ncsu-red`); the library ships a neutral default.
173
+
174
+ PLAIN-hsl LITERALS, per arm — NEVER `light-dark()` and NEVER a
175
+ `var(--neutral-*)`/`var(--foreground)`/`var(--border)`/`var(--card)`
176
+ alias. Canvas2D silently REJECTS a `light-dark()` value into
177
+ `strokeStyle`/`fillStyle` (the W30 86.3%-red-splatter cardinal defect),
178
+ and the rejection is identical whether the value is a literal
179
+ `light-dark(…)` OR a `var()` that RESOLVES to one — so the constellation
180
+ tokens are plain-hsl LEAVES, the `:root` vs `.dark` cascade carrying two
181
+ literals. `proof:constellation-tokens` clause (c) machine-locks this
182
+ (the no-`light-dark(`-substring NOR transitive-`var()` static assertion).
183
+ ═══════════════════════════════════════════════ */
184
+ /* Node tones — readable on the warm-cream ground. The two-tone split (the
185
+ `dim` half rides `-node-dim`). Warm-grey ink, NOT a neutral-ladder alias. */
186
+ --constellation-node: hsl(36 8% 46%);
187
+ --constellation-node-dim: hsl(36 8% 60%);
188
+ /* Edge hairline stroke — warm near-black on cream (the plain-hsl complement
189
+ the slides deck reads to fix the `--foreground` light-dark() leak). */
190
+ --constellation-line: hsl(24 14% 14%);
191
+ /* Anomaly tint — NEUTRAL library default (a desaturated warm accent). The
192
+ consumer overrides this (slides → `--ncsu-red`); the library does NOT
193
+ bake a brand hue. This is the single consumer-preset boundary. */
194
+ --constellation-accent: hsl(18 58% 46%);
195
+ /* Edge-alpha multipliers — replace the magic `0.17` hairline / pointer-web
196
+ literals. The cream ground lifts the node tones, so the field can recede;
197
+ the focus-proximity edge reads a touch stronger. */
198
+ --constellation-edge-alpha: 0.22;
199
+ --constellation-edge-focus-alpha: 0.34;
200
+ /* §7 field-yields-to-type translucency knob — the legible-but-RECESSIVE
201
+ MIDPOINT, NOT max-legibility. On cream the node tones already read, so the
202
+ field recedes further: BELOW the slides 0.92 max-legibility reference. */
203
+ --constellation-alpha: 0.80;
204
+ /* ACCENT-edge skin weights (AZ.W-CON-GEN G3) — the flagged-node EDGE legibility
205
+ set the optional `drawEdges(…, accentIndex)` pass reads. `--constellation-accent`
206
+ (above) is the edge TINT; `-edge-floor` is the neutral-edge alpha MINIMUM so a
207
+ distance-faded hairline clears the perceptual floor on a bright ground (default
208
+ 0 → byte-identical, the consumer lifts it on a very-light backdrop);
209
+ `-edge-accent-alpha` is the accent-incident edge multiplier (the flagged-node
210
+ tether reads a touch louder than the neutral lattice). Mode-arm where they
211
+ differ — the dark arm carries its own (dark-arm.css §5c). */
212
+ --constellation-edge-floor: 0;
213
+ --constellation-edge-accent-alpha: 0.30;
214
+
215
+ /* §interaction — the warp spring + the gravity-well tunings (NUMERIC, NOT
216
+ colors — read ONCE on mount via parseFloat, never reach a Canvas2D
217
+ fillStyle, so immune to the W30 light-dark()/Canvas2D leak; AY.W-CON2).
218
+ Mode-INVARIANT, declared ONCE in :root (the .dark arm needs no numeric
219
+ re-declare — a per-mode value SPLIT is what proof:constellation-tokens
220
+ clause (c) flags, and these tunings are identical in both modes).
221
+ `--constellation-warp-response` is the keyframes.js ANGULAR PERIOD (the
222
+ SwiftUI .spring(response:) axis), NOT a settle-duration — at ζ=1 the 2%
223
+ settle lands at t₂ ≈ 5.83/ω₀ ≈ 0.93·response (the engine keeps the
224
+ keyframes.js ω₀ = 2π/response convention, mints no second ω). */
225
+ --constellation-warp-response: 0.55; /* s — keyframes.js angular period (NOT a settle) */
226
+ --constellation-warp-zeta: 1.0; /* critically damped — a focal mark must NOT ring */
227
+ --constellation-well-gain: 14000; /* inverse-square force scale (the held-pull gain) */
228
+ --constellation-well-reach: 340; /* base-width px — the well's reach (k-scaled at step) */
229
+ --constellation-well-ramp: 4.0; /* 1/s — the ARM rate (≈0.25s bloom; release is the fixed brisk WELL_RELEASE_RAMP — the field-cools invariant, not consumer-tunable) */
230
+ --constellation-well-max-speed: 4.0; /* base-width px/frame cap — the no-slingshot clamp */
231
+ --constellation-well-hold-ms: 140; /* ms hold before the well arms */
232
+ --constellation-wander-idle: 8000; /* ms — min idle between auto re-targets (the W-CON1 drift cadence) */
233
+ --constellation-wander-jitter: 8000; /* ms — random extra idle per cadence (so the rhythm is not metronomic) */
234
+
235
+ /* ═══════════════════════════════════════════════
236
+ §6 SECTION PALETTE — 13-stop jewel tones (light)
237
+ ═══════════════════════════════════════════════ */
238
+ /* AV.W16 TW2 — oklch ramp (perceptually-even L; hue preserved from the
239
+ prior hsl() cadence). Categorical jewel tones — distinct hues, not a
240
+ monotone scale. Authored as oklch pairs with the .dark mirror. */
241
+ --section-color-0: oklch(0.552 0.192 359.8); /* rose */
242
+ --section-color-1: oklch(0.502 0.165 305.9); /* purple */
243
+ --section-color-2: oklch(0.484 0.163 265.5); /* indigo */
244
+ --section-color-3: oklch(0.542 0.089 222.8); /* teal-cyan */
245
+ --section-color-4: oklch(0.551 0.088 171.1); /* forest */
246
+ --section-color-5: oklch(0.623 0.124 69.6); /* amber */
247
+ --section-color-6: oklch(0.579 0.201 30.4); /* tomato-red */
248
+ --section-color-7: oklch(0.532 0.180 317.5); /* violet */
249
+ --section-color-8: oklch(0.520 0.176 8.4); /* ruby */
250
+ --section-color-9: oklch(0.492 0.038 239.6); /* slate-blue */
251
+ --section-color-10: oklch(0.556 0.103 128.8); /* olive */
252
+ --section-color-11: oklch(0.601 0.092 208.0); /* ocean */
253
+ --section-color-12: oklch(0.513 0.163 291.9); /* periwinkle */
254
+
255
+ /* Accent colors */
256
+ --accent-pink: oklch(0.613 0.197 353.8);
257
+ --section-heading: oklch(0.545 0.189 352.8);
258
+ --accent-red: oklch(0.574 0.216 27.5);
259
+
260
+ /* ═══════════════════════════════════════════════
261
+ §6b VIZ BASIS — core brand hues
262
+ ═══════════════════════════════════════════════ */
263
+ --viz-fourier: oklch(0.579 0.201 30.4);
264
+ --viz-chebyshev: oklch(0.484 0.163 265.5);
265
+ --viz-legendre: oklch(0.532 0.180 317.5);
266
+ --viz-amber: var(--section-color-5);
267
+ --viz-green: var(--section-color-4);
268
+
269
+ /* Semantic UI accents */
270
+ --tier-featured: oklch(0.841 0.173 84.2);
271
+ --tier-saved: oklch(0.676 0.176 252.3);
272
+ --like: oklch(0.633 0.200 24.9);
273
+ --success: oklch(0.720 0.192 149.5);
274
+ --warning: oklch(0.770 0.165 70.6);
275
+ --info: oklch(0.626 0.186 259.6);
276
+ --delete: oklch(0.597 0.198 25.5);
277
+
278
+ /* Semantic foregrounds — text/glyph atop --success/--warning/--info plates.
279
+ Notification.vue currently hardcodes `text-white`/`text-foreground`
280
+ inline; W2 migrates consumers to read these tokens. Warning carries a
281
+ dark glyph because the amber plate is too luminous for white. R5
282
+ vocab.γ gap row 4. */
283
+ --success-foreground: var(--neutral-0);
284
+ --warning-foreground: hsl(24 10% 10%);
285
+ --info-foreground: var(--neutral-0);
286
+
287
+ }
@@ -0,0 +1,308 @@
1
+ /* tokens/dark-arm.css
2
+ The .dark {} dark-mode re-resolution (foreground / shadow-color / section-palette / constellation dark arm). After light-dark.css (the non-light-dark() fallback floor).
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
+
6
+ /* ═══════════════════════════════════════════════
7
+ DARK MODE — warm dark, section palette brightened ~20% L
8
+
9
+ FALLBACK FLOOR (AQ.W2 §2c): this class block is the SOLE non-light-dark()
10
+ dark path. On a `light-dark()`-supporting engine with `.dark` present,
11
+ `.dark { color-scheme: dark }` (§1) makes every §-1b token resolve to its
12
+ dark arm and these explicit dark values agree with it (kept as the floor
13
+ for non-supporting engines). The pure `var()`-alias re-declarations
14
+ (`--muted`/`--secondary`/`--accent`/`--border`/`--input`/… and the
15
+ `--background`/`*-foreground` aliases) are DELETED — they auto-track the
16
+ `--neutral-*` ladder + `--foreground` resolved above; only EXPLICIT-color
17
+ dark values (and the non-color overrides §2d) stay.
18
+ ═══════════════════════════════════════════════ */
19
+ .dark {
20
+ /* §1 — hard-pin native chrome to dark regardless of OS preference. §4 —
21
+ re-specify the inherited `accent-color` so it re-resolves to the dark
22
+ arm (§2b: an inherited built-in <color> set at `:root` would freeze to
23
+ the light shade without this re-specification). */
24
+ color-scheme: dark;
25
+ accent-color: var(--accent-color);
26
+
27
+ /* Neutral scale mirrors light-mode pattern: step UP from the background's
28
+ low L toward foreground. Same perceptual deltas as light. FALLBACK
29
+ FLOOR — kept verbatim for non-light-dark() engines (§2c); on a
30
+ supporting engine `color-scheme: dark` (above) drives the §-1b
31
+ light-dark() arms and these agree. */
32
+ /* BA.W-DARK-MATERIAL scope 1 — the luminous-dark elevation widen. The page floor
33
+ deepens (L6→L4, +1 warmth-sat) and the --card plate LIFTS (L10→L16, below) so the
34
+ page↔card gap goes from the HEAD 4-L collapse (card/page relL ≈ 2.0×, a 0.003-luma
35
+ band) to a real iOS/Material dark elevation step (card/page relL ≈ 5×, the five glass
36
+ rungs composite into a perceptible ladder). LOCKSTEP with light-dark.css:70/80.
37
+ BA.W-NO-GRAY — the WARM-CHROMA FLOOR dark arm, in LOCKSTEP with light-dark.css. The
38
+ dark neutrals warm off the achromatic hsl-24/48 onto the warm identity (hsl 28-36,
39
+ OKLab C off the gray floor on the NEW dark base — chip→border C 0.0138-0.0286, muted-fg
40
+ C 0.0255). The --neutral-0 page (hsl 24 9% 4%) is W-DARK-MATERIAL's luminance floor —
41
+ KEEP (chroma-only on the rungs above it). L held — the dark AA contract preserved. */
42
+ --neutral-0: hsl(24 9% 4%); /* L 4 — page surface (dark, deepened — W-DARK-MATERIAL) */
43
+ --neutral-1: hsl(28 12% 11%); /* L 11 — soft field (warm) */
44
+ --neutral-2: hsl(28 14% 16%); /* L 16 — chip / tab-inactive (warm, C≈0.014) */
45
+ --neutral-3: hsl(30 18% 22%); /* L 22 — hover / highlight (warm, C≈0.022) */
46
+ --neutral-4: hsl(30 16% 34%); /* L 34 — subtle border (warm, C≈0.029) */
47
+ --neutral-5: hsl(34 14% 62%); /* L 62 — muted text (warm, C≈0.026; WCAG AA: 7.64:1 vs page) */
48
+ /* W7-α' (AK-FD1) — strong-muted text. Same principled ladder step as
49
+ light, mirrored: 10 L LIGHTER than muted (62→72) toward --foreground
50
+ (L90), the 1/3 point of the L62→L90 muted→primary gap. By-colour.
51
+ BA.W-NO-GRAY — re-saturated onto the warm identity (hsl 36 14% — OKLab
52
+ C≈0.019, warm). WCAG AA: 10.29:1 vs L4 page (cf. neutral-5's 7.64:1). */
53
+ --neutral-6: hsl(36 14% 72%); /* L 72 — strong-muted text (secondary register, warm) */
54
+
55
+ /* --background / --card-foreground / --popover-foreground / --muted /
56
+ --muted-foreground{,-strong} / --secondary{,-foreground} /
57
+ --accent{,-foreground} / --border / --input are pure var()-aliases —
58
+ DELETED here (AQ.W2 §2a): they auto-track the --neutral-* ladder +
59
+ --foreground above. Re-declaring them would be redundant. */
60
+ --foreground: hsl(48 10% 90%);
61
+ /* BA.W-DARK-MATERIAL scope 1 — the --card plate LIFTS L10→L16 (a warm-dark elevated
62
+ surface, macOS-window territory) so it sits ~5× the deepened L4 page relL — a
63
+ clearly distinct surface the five glass rungs ladder up from. LOCKSTEP light-dark.css:80. */
64
+ --card: hsl(24 8% 16%);
65
+ --popover: hsl(24 8% 16%);
66
+
67
+ /* R0G-5 (AO.W4) — dark mirror of the warm-neutral public-data panel.
68
+ --card's dark hsl(24 8% 16%) nudged one warmth step toward amber
69
+ (24→36) + +1 sat + +2 L so the dark dashboard panel lifts off the page.
70
+ BA.W-DARK-MATERIAL — re-anchored L12→L18 to stay ABOVE the lifted L16 card
71
+ (LOCKSTEP light-dark.css:82). */
72
+ --surface-public-data-panel: hsl(36 9% 18%);
73
+
74
+ /* BA.W-DARK-MATERIAL scope 4 — the chromatic dark --primary. HEAD was an achromatic
75
+ cream hsl(48 10% 90%) (oklab chroma ≈ 0.005 — every filled/active/selected control
76
+ painted a flat pale-grey slab). Re-anchored onto the legendre-violet house identity
77
+ hue (--section-color-7 / --viz-legendre's oklch register — a LIBRARY-identity chroma,
78
+ NOT a borrowed demo preset), oklab chroma 0.134. The dark ink --primary-foreground
79
+ stays hsl(24 10% 10%): 7.15:1 over the violet (clears the 4.5 text + 3.0 graphic
80
+ floors). Critical now the disco/audacious texture retires (R8-18) — the accent's
81
+ COLOR carries the identity. LOCKSTEP light-dark.css:84. */
82
+ --primary: oklch(0.739 0.134 318.1);
83
+ --primary-foreground: hsl(24 10% 10%);
84
+ /* AX.W44 — the `.dark` class fallback floor, in LOCKSTEP with the light-dark()
85
+ enhancement arm above (§2c). Same lifted `hsl(0 80% 60%)` so a
86
+ @supports-split engine and a class-toggle engine paint the SAME dark red
87
+ (4.60:1 as ink over --card / 5.03:1 as a plate vs page). */
88
+ --destructive: hsl(0 80% 60%);
89
+ --destructive-foreground: hsl(48 10% 90%);
90
+ --ring: hsl(48 10% 70%);
91
+ --shadow: hsl(0 0% 5%);
92
+
93
+ /* Section palette — brightened for dark backgrounds (oklch; AV.W16 TW2 —
94
+ mirrors the light-dark() dark halves above; hue preserved) */
95
+ --section-color-0: oklch(0.721 0.145 354.0);
96
+ --section-color-1: oklch(0.733 0.113 308.2);
97
+ --section-color-2: oklch(0.718 0.107 268.4);
98
+ --section-color-3: oklch(0.767 0.091 219.9);
99
+ --section-color-4: oklch(0.776 0.105 172.6);
100
+ --section-color-5: oklch(0.813 0.109 78.2);
101
+ --section-color-6: oklch(0.693 0.151 28.1);
102
+ --section-color-7: oklch(0.739 0.134 318.1);
103
+ --section-color-8: oklch(0.709 0.142 2.3);
104
+ --section-color-9: oklch(0.763 0.032 239.0);
105
+ --section-color-10: oklch(0.794 0.116 127.9);
106
+ --section-color-11: oklch(0.805 0.095 206.7);
107
+ --section-color-12: oklch(0.719 0.115 295.6);
108
+
109
+ --accent-pink: oklch(0.683 0.131 354.7);
110
+ --section-heading: oklch(0.711 0.123 349.3);
111
+ --accent-red: oklch(0.644 0.165 22.9);
112
+
113
+ --viz-fourier: oklch(0.693 0.151 28.1);
114
+ --viz-chebyshev: oklch(0.718 0.107 268.4);
115
+ --viz-legendre: oklch(0.739 0.134 318.1);
116
+
117
+ /* BA.W-CONFIG-CHASSIS.1 (CFG-4) — the `.dark` class fallback floor for the
118
+ configurator divider register, in LOCKSTEP with the `light-dark()`
119
+ enhancement arm minted in offsets-sizing.css (the dark halves). A
120
+ @supports-split engine (no `light-dark()`) and a class-toggle engine paint
121
+ the SAME lifted divider: off the L34 `--border` (too close to the L16
122
+ glass plate) toward the L90 `--foreground` warm-ink so a visible luminance
123
+ step survives the dark glass-floating surface. The SECTION divider runs
124
+ heavier than the inter-row hairline; the faint section tonal step is the
125
+ 3% foreground wash. */
126
+ --configurator-divider: color-mix(in srgb, var(--foreground) 22%, transparent);
127
+ --configurator-divider-section: color-mix(in srgb, var(--foreground) 30%, transparent);
128
+ --configurator-section-tint: color-mix(in srgb, var(--foreground) 3%, transparent);
129
+ /* --viz-amber / --viz-green / --meter-track-stroke are pure var()-aliases
130
+ (→ --section-color-5/-4 / --foreground) — DELETED (§2a); they auto-track
131
+ their sources, which convert via §-1b. */
132
+
133
+ /* O.W6 Lane D — WCAG companion labels lift to L≈0.85 against the
134
+ deep dark canvas; same two-token discipline as light mode (canvas
135
+ hue preserved at `--chart-*`; only the label register shifts). */
136
+ --chart-ping-label: oklch(0.85 0.12 230);
137
+ --chart-download-label: oklch(0.85 0.14 22);
138
+ --chart-upload-label: oklch(0.85 0.12 55);
139
+ --chart-jitter-label: oklch(0.85 0.14 305);
140
+
141
+ --tier-featured: oklch(0.867 0.165 88.7);
142
+ --tier-saved: oklch(0.748 0.135 250.1);
143
+ --like: oklch(0.690 0.162 22.2);
144
+ --success: oklch(0.805 0.186 151.6);
145
+ --warning: oklch(0.809 0.150 76.6);
146
+ --info: oklch(0.713 0.138 259.5);
147
+ --delete: oklch(0.644 0.170 23.1);
148
+
149
+ /* Semantic foregrounds — off-white over dark plates. Mirrors the
150
+ `--destructive-foreground` dark pattern (hsl 48 10% 90%). The warning
151
+ glyph stays dark-on-amber; the dark amber rung is luminous enough that
152
+ a darker glyph still reads (matches light-mode behaviour). */
153
+ --success-foreground: hsl(48 10% 96%);
154
+ --warning-foreground: hsl(24 10% 10%);
155
+ --info-foreground: hsl(48 10% 96%);
156
+
157
+ --shadow-cartoon: 3px 3px 0px 0px color-mix(in srgb, var(--foreground) 6%, transparent);
158
+ --shadow-cartoon-hover: 4px 4px 0px 0px color-mix(in srgb, var(--foreground) 8%, transparent);
159
+ --shadow-soft: 0 4px 12px rgba(0, 0, 0, 0.3);
160
+ --shadow-elevated: 0 8px 24px rgba(0, 0, 0, 0.35);
161
+ --shadow-modal:
162
+ 4px 4px 0px 0px color-mix(in srgb, var(--foreground) 6%, transparent),
163
+ 0 24px 64px color-mix(in srgb, var(--foreground) 18%, transparent);
164
+
165
+ --shadow-cartoon-color: rgb(255 255 255 / 0.07);
166
+ --shadow-cartoon-color-soft: rgb(255 255 255 / 0.03);
167
+
168
+ /* §5c CONSTELLATION — dark arm (AX.W17). The H.W4 dark-mode lift: the node
169
+ tones step UP off the ink ground (the light arm's mid-grey would vanish on
170
+ L6 black), the hairline goes warm off-white, the field carries a touch more
171
+ presence to read at all. PLAIN-hsl literals, NEVER light-dark()/var(). */
172
+ --constellation-node: hsl(42 9% 72%);
173
+ --constellation-node-dim: hsl(42 8% 56%);
174
+ --constellation-line: hsl(45 12% 86%);
175
+ /* Anomaly — brightened for the deep canvas (same neutral-default register;
176
+ the consumer still overrides to its brand). */
177
+ --constellation-accent: hsl(20 70% 60%);
178
+ /* The dark hairlines lift harder over the ink ground, so the edge multipliers
179
+ run a touch lower than light to keep the field recessive. */
180
+ --constellation-edge-alpha: 0.20;
181
+ --constellation-edge-focus-alpha: 0.32;
182
+ /* §7 — the ink ground needs MORE field presence than cream to read at all, so
183
+ the dark alpha is modestly HIGHER than the light arm — but still BELOW the
184
+ slides 1.0 max-legibility reference (the recessive midpoint, not 1.0). */
185
+ --constellation-alpha: 0.88;
186
+ /* ACCENT-edge skin — dark arm (AZ.W-CON-GEN G3). The floor stays 0 (the dark
187
+ ground already lifts the hairlines, so no perceptual-floor lift is needed); the
188
+ accent-incident multiplier runs a touch louder on the deeper ground so the
189
+ flagged-node tether reads (the 0.34 dark reference). */
190
+ --constellation-edge-floor: 0;
191
+ --constellation-edge-accent-alpha: 0.34;
192
+
193
+ /* Glass opacity + grain for dark — five-tier ladder, alpha-monotonic.
194
+ Each rung lifts ~0.08 from its light counterpart so the dark surfaces
195
+ carry comparable read-weight against the deeper canvas. */
196
+ --glass-opacity-wash: 0.38;
197
+ --glass-opacity-quiet: 0.58;
198
+ --glass-opacity-resting: 0.72;
199
+ --glass-opacity-floating: 0.88;
200
+ --glass-opacity-overlay: 0.96;
201
+ --glass-opacity-chassis: 0.36;
202
+ --glass-grain-opacity: 0.045;
203
+ --glass-highlight: inset 0 0.5px 0 0 hsl(0 0% 100% / 0.08);
204
+
205
+ /* BA.W-DARK-MATERIAL scope 2 — dark glass is TRANSMISSIVE. The dark rung
206
+ backdrop-filter carries a saturate/brightness LUMINOSITY LIFT (the iOS-dark
207
+ "dark glass glows where light passes" model) so a backdrop GLOWS through the
208
+ plate instead of dying behind it. The light arm sits at saturate(1.05) — over a
209
+ near-black canvas that reads as no transmission; the dark arm lifts it so the
210
+ aurora/page behind reads with chroma + a glow. The blur() RADIUS is the
211
+ light-arm primitive UNTOUCHED (W-GLASS-CAL owns the radius dial-back) — only the
212
+ saturate/brightness COMPANIONS lift here. The lower rungs lift more (they're
213
+ thinner, the backdrop carries the read); the heavy overlay lifts least. */
214
+ --glass-blur-wash: blur(calc(var(--glass-blur-wash-radius) * var(--glass-level))) saturate(1.35) brightness(1.18);
215
+ --glass-blur-quiet: blur(calc(var(--glass-blur-quiet-radius) * var(--glass-level))) saturate(1.35) brightness(1.16);
216
+ --glass-blur-resting: blur(calc(var(--glass-blur-resting-radius) * var(--glass-level))) saturate(1.30) brightness(1.14);
217
+ --glass-blur-floating: blur(calc(var(--glass-blur-floating-radius) * var(--glass-level))) saturate(1.28) brightness(1.10);
218
+ --glass-blur-overlay: blur(calc(var(--glass-blur-overlay-radius) * var(--glass-level))) saturate(1.22) brightness(1.06);
219
+ --glass-blur-dock: blur(calc(var(--glass-blur-dock-radius) * var(--glass-level))) saturate(1.30) brightness(1.12);
220
+
221
+ /* BA.W-DARK-MATERIAL scope 3 — the dark arm of the adaptive --glass-tint-* seam (the
222
+ SAME seam, NO third fork). The W55 self-engage block (glass/ladder.css) re-points
223
+ --glass-tint-source → --glass-tint-ink at --glass-tint-strength-aa. In LIGHT that is
224
+ a darken-over-bright; in DARK --glass-tint-ink resolves the light-cream --foreground,
225
+ so the SAME re-point becomes a gentle LIFT toward a luminous translucent dark (the
226
+ MIRROR of the light darken — the plate lifts OFF the deep page rather than dying into
227
+ it). HEAD applied the light 20% strength in dark too (the wrong-direction over-wash —
228
+ it flattened the silhouette toward cream). The dark arm re-declares the BOUNDED
229
+ strength to a gentle luminous-dark lift (12%) — over-light's 20% is a light-mode
230
+ concern (the bright bucket never engages in dark — there is no white backdrop). The
231
+ --glass-tint-ink token stays var(--foreground) (the light cream is the correct LIFT
232
+ ink in dark); only the STRENGTH re-tunes. The unconditional content-tier floor
233
+ (--glass-tint-strength-floor, light-mode-calm) is NOT re-declared here — in dark the
234
+ self-engage uses the AA arm directly (the luminous-dark lift is the desired default,
235
+ not a sub-perceptual silhouette). */
236
+ --glass-tint-strength-aa: 12%;
237
+ /* The unconditional content-tier self-engage (glass/ladder.css) reads
238
+ --glass-tint-strength-floor. In LIGHT that is the 4% sub-perceptual silhouette (the
239
+ calm-light card stays warm); in DARK the content tiers WANT the full luminous-dark
240
+ lift as the default (the plate lifts off the deep page — the desired register, not a
241
+ sub-perceptual edge), so the floor re-resolves to the AA lift here. ONE token, two
242
+ mode arms — the content-tier self-engage needs no mode branch. */
243
+ --glass-tint-strength-floor: 12%;
244
+
245
+ /* BA.W-DARK-MATERIAL scope 5 — the --surface-tint-* dark arm. The light family is
246
+ color-mix(in srgb, var(--foreground) N%, transparent) — over a near-black dark card
247
+ a LIGHT-ink (dark --foreground IS light cream) tint composites to near-black: the
248
+ 9-rung chip/hairline/divider scale is INVISIBLE in dark. The dark arm KEEPS the
249
+ in-srgb space (the AW.W26 fence — NEVER oklab) but re-anchors the mix ink to a
250
+ BRIGHTER warm off-white so a chip/hairline LIFTS off the deep card (the inverse
251
+ intent of light's dark-ink tint). This re-resolves every --surface-tint-* consumer
252
+ (chip backplates, the dock-rail divider, the spine, the timeline dot) in lockstep,
253
+ zero per-site edit. The brighter ink is a near-white warm (hsl(48 12% 96%)) so the
254
+ higher rungs read as genuine hairlines on the L16 card. */
255
+ --surface-tint-4: color-mix(in srgb, hsl(48 12% 96%) 4%, transparent);
256
+ --surface-tint-6: color-mix(in srgb, hsl(48 12% 96%) 6%, transparent);
257
+ --surface-tint-8: color-mix(in srgb, hsl(48 12% 96%) 8%, transparent);
258
+ --surface-tint-10: color-mix(in srgb, hsl(48 12% 96%) 10%, transparent);
259
+ --surface-tint-12: color-mix(in srgb, hsl(48 12% 96%) 12%, transparent);
260
+ --surface-tint-15: color-mix(in srgb, hsl(48 12% 96%) 15%, transparent);
261
+ --surface-tint-18: color-mix(in srgb, hsl(48 12% 96%) 18%, transparent);
262
+ --surface-tint-22: color-mix(in srgb, hsl(48 12% 96%) 22%, transparent);
263
+ --surface-tint-25: color-mix(in srgb, hsl(48 12% 96%) 25%, transparent);
264
+ --surface-tint-35: color-mix(in srgb, hsl(48 12% 96%) 35%, transparent);
265
+ --surface-tint-40: color-mix(in srgb, hsl(48 12% 96%) 40%, transparent);
266
+ --surface-tint-70: color-mix(in srgb, hsl(48 12% 96%) 70%, transparent);
267
+
268
+ /* Hairline-accent dark mirror — see light counterpart at line ~404. */
269
+ --hairline-catch-light: inset 0 0.5px 0 0 rgb(255 255 255 / 0.05);
270
+ --hairline-under-shadow: 0 0.5px 0 0 rgb(0 0 0 / 0.06);
271
+
272
+ /* Specular + curvature — softened for dark backdrops. Disco-grain stays
273
+ at the same opacity ceiling; the dark grain blend already lifts it. */
274
+ --glass-specular: inset 0 1.5px 0 0 hsl(0 0% 100% / 0.30);
275
+ /* AV.W15 M3 — the full-perimeter rim remaps to its dark weight inside
276
+ `.dark` (mirroring the `--glass-specular` remap above). The lit token
277
+ resolves to the `-dark` alpha on the deeper canvas. */
278
+ --glass-edge-light: var(--glass-edge-light-dark);
279
+
280
+ /* AW.W23 — the chromatic-fringe + adaptive-tint dark arm. The fringe drops
281
+ to a lower-luminance warm/cool pair on the deep canvas; `--glass-tint-
282
+ source` auto-flips with `--card` (no override needed — the default already
283
+ resolves the dark card). */
284
+ --glass-fringe-warm: oklch(0.78 0.07 40 / 0.18);
285
+ --glass-fringe-cool: oklch(0.74 0.06 230 / 0.14);
286
+ /* AX.W52 D19 — the curvature sheen is genuinely SOFTER on the deep canvas (the
287
+ prior dark arm re-declared the overlay BYTE-IDENTICAL to light, so it read
288
+ HARDER over the dark substrate — an unsoftened-dark defect). The `:root`
289
+ `--glass-curvature-overlay` already reads `var(--glass-curvature-intensity)`,
290
+ so lowering just the intensity here re-resolves the SAME warm-cream recipe at
291
+ a softer alpha — no byte-identical re-declaration. */
292
+ --glass-curvature-intensity: 0.012;
293
+
294
+ /* Gold — boosted for dark (oklch; AV.W16 TW2) */
295
+ --gold: oklch(0.784 0.143 86.0);
296
+ --gold-light: oklch(0.898 0.182 97.4);
297
+ --gold-dark: oklch(0.678 0.150 63.8);
298
+
299
+ /* Silver — lifted for dark (BA.W-ATLAS-RECONCILE C-3; mirrors gold's dark
300
+ arm: the polished metal lifts ~+0.03 L so the structure register reads on
301
+ the deep canvas. `--silver-deep` is mode-invariant — NOT re-declared here,
302
+ exactly as `--gold-deep` is omitted from this dark block). The cool hue
303
+ holds; the chroma stays near-achromatic. */
304
+ --silver: oklch(0.792 0.012 255);
305
+ --silver-light: oklch(0.912 0.010 255);
306
+ --silver-dark: oklch(0.648 0.014 255);
307
+ }
308
+