@mkbabb/glass-ui 3.10.0 → 3.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{CardAction-DuArVky-.js → CardAction-DrAcAV4d.js} +2 -2
- package/dist/{CommandShortcut-CefCj5mt.js → CommandShortcut-mV2e1aG6.js} +2 -2
- package/dist/{DataTable-CUHMukiQ.js → DataTable-C3E6jZ5B.js} +2 -2
- package/dist/{DialogContent-BRkT1cjP.js → DialogContent-BxaaafFi.js} +1 -1
- package/dist/{HoverPopover-2LOIW34a.js → HoverPopover-CDA_SaCe.js} +1 -1
- package/dist/{MetricBadge-BZVWIxNy.js → MetricBadge-idgrkqoP.js} +5 -7
- package/dist/{Notification-DLMhblXR.js → Notification-Cu0nN17_.js} +1 -1
- package/dist/{NumberFieldContent-BbLOh8RU.js → NumberFieldContent-CHEWghnY.js} +2 -2
- package/dist/{PopoverContent-BId6ggf_.js → PopoverContent-DpUvdYY-.js} +1 -1
- package/dist/{Progress-iEuD9pxG.js → Progress-BW-StFw2.js} +1 -1
- package/dist/{ScrollingText-BPP84wKo.js → ScrollingText-DruYCni_.js} +1 -1
- package/dist/{SelectScrollDownButton-T32cVFeM.js → SelectScrollDownButton-pirzjm--.js} +3 -3
- package/dist/{Switch-Ch-k3Rv-.js → Switch-DeAqg6pi.js} +1 -1
- package/dist/{TabsList-B8CVOQPC.js → TabsList-BAVzOZpg.js} +2 -2
- package/dist/{Toaster-1rYWrmAm.js → Toaster-CvuuW_y9.js} +49 -46
- package/dist/{ToggleGroupItem-Cev4pOVK.js → ToggleGroupItem-DtD37b4G.js} +4 -4
- package/dist/animated-digit.js +2 -2
- package/dist/api/index.d.ts +3 -4
- package/dist/api.js +1 -1
- package/dist/aurora.js +66 -66
- package/dist/{badge-CaoFJzRb.js → badge-NdCQMvvB.js} +1 -1
- package/dist/badge.js +1 -1
- package/dist/{button-DN39cGqL.js → button-DyiWFAOE.js} +12 -12
- package/dist/button.js +1 -1
- package/dist/canvas.js +2 -2
- package/dist/card.js +1 -1
- package/dist/carousel.js +5 -5
- package/dist/collapsible.js +1 -1
- package/dist/{color-C5ls_QF7.js → color-B65wWyQz.js} +9 -7
- package/dist/color.js +1 -1
- package/dist/command.js +1 -1
- package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +1 -1
- package/dist/components/custom/aurora/constants/shaders/vangogh-medium.glsl.d.ts +1 -0
- package/dist/components/custom/constellation/Constellation.vue.d.ts +12 -0
- package/dist/components/custom/constellation/composables/createConstellationField.d.ts +35 -0
- package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +35 -0
- package/dist/components/custom/constellation/constants.d.ts +36 -0
- package/dist/components/custom/constellation/constellationDraw.d.ts +18 -0
- package/dist/components/custom/constellation/constellationField.d.ts +10 -151
- package/dist/components/custom/constellation/constellationInteraction.d.ts +102 -0
- package/dist/components/custom/constellation/index.d.ts +3 -1
- package/dist/components/custom/controls/DarkModeToggle.vue.d.ts +11 -0
- package/dist/components/custom/dock/DockTabButton.vue.d.ts +3 -4
- package/dist/components/custom/dock/GlassDock.vue.d.ts +2 -110
- package/dist/components/custom/dock/composables/dockMorphContext.d.ts +36 -0
- package/dist/components/custom/dock/composables/useDockMorphWindow.d.ts +15 -0
- package/dist/components/custom/dock/composables/useDockShellProps.d.ts +131 -0
- package/dist/components/custom/dock/composables/useLayerTransition.d.ts +44 -0
- package/dist/components/custom/dock/constants.d.ts +23 -0
- package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +0 -29
- package/dist/components/custom/fourier-field/index.d.ts +1 -1
- package/dist/components/custom/fourier-field/math.d.ts +17 -0
- package/dist/components/custom/fourier-field/presets.d.ts +54 -0
- package/dist/components/custom/goo-blob/composables/buildMetaballProgram.d.ts +18 -0
- package/dist/components/custom/goo-blob/composables/uploadBlobUniforms.d.ts +41 -0
- package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +4 -3
- package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +11 -8
- package/dist/components/custom/goo-blob/constants.d.ts +52 -0
- package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -0
- package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +2 -2
- package/dist/components/custom/metric-badge/MetricBadge.vue.d.ts +0 -8
- package/dist/components/custom/tabs/constants.d.ts +12 -0
- package/dist/components/custom/underline/GlassUnderline.vue.d.ts +84 -0
- package/dist/components/custom/underline/index.d.ts +2 -0
- package/dist/components/custom/underline/types.d.ts +56 -0
- package/dist/components/ui/drawer/Drawer.vue.d.ts +1 -0
- package/dist/components/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +2 -2
- package/dist/components/ui/slider/index.d.ts +22 -19
- package/dist/components/ui/toast/use-toast.d.ts +2 -2
- package/dist/composables/color/index.d.ts +12 -0
- package/dist/composables/glass/useSpecularTracking.d.ts +12 -3
- package/dist/composables/motion/core/index.d.ts +0 -1
- package/dist/composables/motion/curves.d.ts +48 -0
- package/dist/composables/motion/index.d.ts +2 -0
- package/dist/composables/motion/springPresets.d.ts +33 -0
- package/dist/composables/motion/suite.d.ts +2 -0
- package/dist/composables/motion/useSpringMount.d.ts +1 -1
- package/dist/configurator.js +1 -1
- package/dist/confirm-dialog.js +2 -2
- package/dist/constellation.js +260 -225
- package/dist/controls.js +48 -14
- package/dist/dark.js +1 -1
- package/dist/data-table.js +1 -1
- package/dist/dialog.js +2 -2
- package/dist/dock.js +339 -327
- package/dist/dockContext-bho8B1A4.js +17 -0
- package/dist/{dropdown-menu-D77jX6Df.js → dropdown-menu-DVnQcA0E.js} +7 -4
- package/dist/dropdown-menu.js +1 -1
- package/dist/expandable-container.js +38 -61
- package/dist/forms.js +2 -2
- package/dist/fourier-field.js +137 -102
- package/dist/fourier-math.js +2 -2
- package/dist/glass-ui.css +1 -1
- package/dist/glass-ui.js +287 -209
- package/dist/goo-blob.js +243 -212
- package/dist/hover-popover.js +1 -1
- package/dist/icon-tooltip.js +1 -1
- package/dist/index.d.ts +0 -3
- package/dist/keyboard.js +1 -1
- package/dist/labeled-field.js +5 -5
- package/dist/{math-DTpRVC0e.js → math-BUU9hHID.js} +18 -2
- package/dist/metric-badge.js +1 -1
- package/dist/metric-stack.js +1 -1
- package/dist/motion-core.js +69 -70
- package/dist/motion-curves.d.ts +1 -0
- package/dist/motion-curves.js +130 -0
- package/dist/motion.js +38 -37
- package/dist/notification.js +1 -1
- package/dist/number-field.js +1 -1
- package/dist/popover.js +1 -1
- package/dist/progress.js +1 -1
- package/dist/pulse.js +1 -1
- package/dist/reactive.js +1 -1
- package/dist/scrolling-text.js +1 -1
- package/dist/search.js +6 -6
- package/dist/select.js +1 -1
- package/dist/{sheet-VZEtNFvO.js → sheet-ChSXcJpU.js} +1 -1
- package/dist/sheet.js +1 -1
- package/dist/{slider-CyzcxBoh.js → slider-sfl8gFDD.js} +4 -4
- package/dist/slider.js +1 -1
- package/dist/sortable-list.js +2 -2
- package/dist/springPresets-aRSm-4_k.js +40 -0
- package/dist/stacked-icons.js +6 -6
- package/dist/styles/animations.css +18 -74
- package/dist/styles/components.css +1 -1
- package/dist/styles/dock/layer-group.css +22 -0
- package/dist/styles/dock/layers.css +11 -1
- package/dist/styles/dock/morph.css +95 -19
- package/dist/styles/dock/shell.css +12 -0
- package/dist/styles/dock-controls.css +28 -31
- package/dist/styles/drawer.css +2 -0
- package/dist/styles/floating-panel.css +2 -0
- package/dist/styles/glass/a11y-fallback.css +245 -0
- package/dist/styles/glass/ladder.css +304 -0
- package/dist/styles/glass/material.css +238 -0
- package/dist/styles/glass/progress-rail.css +78 -0
- package/dist/styles/glass/squircle.css +66 -0
- package/dist/styles/glass/surfaces.css +306 -0
- package/dist/styles/glass-refract.css +2 -0
- package/dist/styles/glass.css +31 -1188
- package/dist/styles/hover-popover.css +2 -0
- package/dist/styles/index.css +24 -6
- package/dist/styles/instrument-chassis.css +4 -0
- package/dist/styles/paper.css +2 -68
- package/dist/styles/theme.css +13 -20
- package/dist/styles/tokens/color-radius.css +250 -0
- package/dist/styles/tokens/dark-arm.css +194 -0
- package/dist/styles/tokens/glass.css +413 -0
- package/dist/styles/tokens/light-dark.css +158 -0
- package/dist/styles/tokens/offsets-sizing.css +406 -0
- package/dist/styles/tokens/property-regs.css +169 -0
- package/dist/styles/tokens/scale-paper.css +361 -0
- package/dist/styles/tokens/scheme-motion.css +334 -0
- package/dist/styles/tokens/shadow.css +132 -0
- package/dist/styles/tokens.css +22 -2355
- package/dist/styles/typography.css +18 -6
- package/dist/styles/utilities/a11y-overrides.css +140 -0
- package/dist/styles/utilities/animate.css +26 -0
- package/dist/styles/utilities/base.css +365 -0
- package/dist/styles/utilities/btn.css +399 -0
- package/dist/styles/utilities/components.css +317 -0
- package/dist/styles/utilities.css +19 -1260
- package/dist/styles/view-transition.css +0 -51
- package/dist/switch.js +1 -1
- package/dist/tabs.js +98 -98
- package/dist/timeline.js +2 -2
- package/dist/toast.js +1 -1
- package/dist/toggle-group.js +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/underline.d.ts +1 -0
- package/dist/underline.js +85 -0
- package/dist/{useAnimatedNumber-Bcpy5Etf.js → useAnimatedNumber-DfVgP4te.js} +1 -1
- package/dist/{useConfiguratorState-DxAqksK6.js → useConfiguratorState-BdQXh9ie.js} +1 -1
- package/dist/useSpecularTracking-DFK_fhpG.js +32 -0
- package/dist/useSpringMount-DXUzxBjV.js +108 -0
- package/dist/vReveal-CqaCz_mC.js +44 -0
- package/dist/watercolor-dot.js +2 -2
- package/package.json +34 -52
- package/src/styles/animations.css +18 -74
- package/src/styles/dock/layer-group.css +22 -0
- package/src/styles/dock/layers.css +11 -1
- package/src/styles/dock/morph.css +95 -19
- package/src/styles/dock/shell.css +12 -0
- package/src/styles/dock-controls.css +28 -31
- package/src/styles/glass/a11y-fallback.css +245 -0
- package/src/styles/glass/ladder.css +304 -0
- package/src/styles/glass/material.css +238 -0
- package/src/styles/glass/progress-rail.css +78 -0
- package/src/styles/glass/squircle.css +66 -0
- package/src/styles/glass/surfaces.css +306 -0
- package/src/styles/glass.css +31 -1188
- package/src/styles/index.css +24 -6
- package/src/styles/paper.css +2 -68
- package/src/styles/theme.css +13 -20
- package/src/styles/tokens/color-radius.css +250 -0
- package/src/styles/tokens/dark-arm.css +194 -0
- package/src/styles/tokens/glass.css +413 -0
- package/src/styles/tokens/light-dark.css +158 -0
- package/src/styles/tokens/offsets-sizing.css +406 -0
- package/src/styles/tokens/property-regs.css +169 -0
- package/src/styles/tokens/scale-paper.css +361 -0
- package/src/styles/tokens/scheme-motion.css +334 -0
- package/src/styles/tokens/shadow.css +132 -0
- package/src/styles/tokens.css +22 -2355
- package/src/styles/typography.css +18 -6
- package/src/styles/utilities/a11y-overrides.css +140 -0
- package/src/styles/utilities/animate.css +26 -0
- package/src/styles/utilities/base.css +365 -0
- package/src/styles/utilities/btn.css +399 -0
- package/src/styles/utilities/components.css +317 -0
- package/src/styles/utilities.css +19 -1260
- package/src/styles/view-transition.css +0 -51
- package/dist/DeckProgress-Dmk4_AKN.js +0 -23
- package/dist/InstrumentRail-CUJ05YVG.js +0 -44
- package/dist/components/custom/deck-progress/DeckProgress.vue.d.ts +0 -27
- package/dist/components/custom/deck-progress/index.d.ts +0 -2
- package/dist/components/custom/dialog-native/GlassDialogNative.vue.d.ts +0 -57
- package/dist/components/custom/dialog-native/index.d.ts +0 -1
- package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +0 -41
- package/dist/components/custom/glass-panel/index.d.ts +0 -2
- package/dist/components/custom/handmark/HandMark.vue.d.ts +0 -29
- package/dist/components/custom/handmark/brush.d.ts +0 -219
- package/dist/components/custom/handmark/freehand.d.ts +0 -69
- package/dist/components/custom/handmark/geometry.d.ts +0 -32
- package/dist/components/custom/handmark/index.d.ts +0 -21
- package/dist/components/custom/handmark/ink.d.ts +0 -11
- package/dist/components/custom/handmark/texture.d.ts +0 -39
- package/dist/components/custom/handmark/types.d.ts +0 -53
- package/dist/components/custom/handmark/useHandMark.d.ts +0 -66
- package/dist/components/custom/header-ribbon/HeaderRibbon.vue.d.ts +0 -31
- package/dist/components/custom/header-ribbon/index.d.ts +0 -2
- package/dist/components/custom/header-ribbon/types.d.ts +0 -7
- package/dist/components/custom/instrument-rail/InstrumentRail.vue.d.ts +0 -91
- package/dist/components/custom/instrument-rail/index.d.ts +0 -2
- package/dist/composables/motion/useRouteTransition.d.ts +0 -42
- package/dist/deck-progress.d.ts +0 -1
- package/dist/deck-progress.js +0 -2
- package/dist/dockContext-BKeIMmNk.js +0 -9
- package/dist/glass-panel.d.ts +0 -1
- package/dist/glass-panel.js +0 -44
- package/dist/handmark.d.ts +0 -1
- package/dist/handmark.js +0 -609
- package/dist/header-ribbon.d.ts +0 -1
- package/dist/header-ribbon.js +0 -63
- package/dist/instrument-rail.d.ts +0 -1
- package/dist/instrument-rail.js +0 -2
- package/dist/useGlassRenderer-D7YGOYiM.js +0 -69
- package/dist/useSpecularTracking-BVRZsRHA.js +0 -26
- package/dist/useSpringMount-BJSHcLl3.js +0 -113
- package/dist/useViewTransition-DaN5Zrox.js +0 -21
- package/dist/vReveal-zUIQk-rJ.js +0 -53
- /package/dist/{CollapsibleContent-CP9qF1v4.js → CollapsibleContent-Drow5WkV.js} +0 -0
- /package/dist/{DialogFooter-Gprw8H_A.js → DialogFooter-DufLHi0y.js} +0 -0
- /package/dist/{IconTooltip-Cus0fvK0.js → IconTooltip-BrQ5p181.js} +0 -0
- /package/dist/{Input-xuDwALQR.js → Input-B-F818RU.js} +0 -0
- /package/dist/{_plugin-vue_export-helper-ok8pgSl5.js → _plugin-vue_export-helper-DWghtRt7.js} +0 -0
- /package/dist/{compile-BOXjLUxu.js → compile-Ce_V55zi.js} +0 -0
- /package/dist/{constants-yKeKnE84.js → constants-C8NMonuo.js} +0 -0
- /package/dist/{presets-Dkdv55Gt.js → presets-1OhFpaIC.js} +0 -0
- /package/dist/{prng-D27-B3tK.js → prng-CjVgzjQT.js} +0 -0
- /package/dist/{resolveCanvasColor-BBiYfp8g.js → resolveCanvasColor-CRvVzOvP.js} +0 -0
- /package/dist/{useCanvas2D-ClrQuZtp.js → useCanvas2D-CSeH8h16.js} +0 -0
- /package/dist/{useGlobalDark-d6waty-X.js → useGlobalDark-D7R9OypB.js} +0 -0
- /package/dist/{useIntersectionPause-Cck5Uxk8.js → useIntersectionPause-DAdVPVp4.js} +0 -0
- /package/dist/{useInterval-Dsmqwi03.js → useInterval-D3USn0yc.js} +0 -0
- /package/dist/{useKeyboardShortcuts-CyIYrndH.js → useKeyboardShortcuts-i8tHd5WO.js} +0 -0
- /package/dist/{useScrollProgress-CffFGLa5.js → useScrollProgress-CcgmgMQt.js} +0 -0
- /package/dist/{useSortable-C8ReQ50P.js → useSortable-DnyGXKKY.js} +0 -0
- /package/dist/{useTextHighlight-CWEi25hf.js → useTextHighlight-B3b10W6r.js} +0 -0
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
padding-inline: 0.625rem;
|
|
20
20
|
border-radius: var(--radius-lg, 0.5rem);
|
|
21
21
|
background: var(--glass-bg-floating, var(--popover, white));
|
|
22
|
+
-webkit-backdrop-filter: var(--glass-blur-floating);
|
|
23
|
+
|
|
22
24
|
backdrop-filter: var(--glass-blur-floating);
|
|
23
25
|
border: 1px solid var(--glass-border-floating, var(--border, transparent));
|
|
24
26
|
color: var(--popover-foreground, var(--foreground));
|
package/dist/styles/index.css
CHANGED
|
@@ -40,7 +40,20 @@
|
|
|
40
40
|
* above it via CSS custom properties or selector cascade; reordering breaks
|
|
41
41
|
* fallbacks. Documented at L.W2 Lane B per Rε §B.5.1.
|
|
42
42
|
*
|
|
43
|
-
*
|
|
43
|
+
* WHERE each idiom LIVES (the localized design-idiom home, complementing the
|
|
44
|
+
* load-ORDER below): see docs/precepts/design-idioms.md — @theme aliases live
|
|
45
|
+
* in theme.css, @utility recipes in their cohesion-domain file, the
|
|
46
|
+
* cohesion-aware @import-partial carve rule, and the var-in-arbitrary syntax.
|
|
47
|
+
* tokens.css / glass.css / utilities.css are thin @import ROOTS over cohesive
|
|
48
|
+
* tokens/* · glass/* · utilities/* partials (each < 500 lines, in cascade order
|
|
49
|
+
* — the dock.css precedent, AX.W06; generalized AY.W-CSS1). The carve is
|
|
50
|
+
* cascade-isomorphic: the partials @import in the recorded cascade order so this
|
|
51
|
+
* load order is preserved bit-for-bit.
|
|
52
|
+
*
|
|
53
|
+
* 1. tokens.css — thin @import root over tokens/{scheme-motion,
|
|
54
|
+
* color-radius,shadow,glass,offsets-sizing,
|
|
55
|
+
* scale-paper,light-dark,dark-arm,property-regs}.css.
|
|
56
|
+
* CSS custom properties (color, easing, glass,
|
|
44
57
|
* paper, shadow, surface-tint rungs). Source-of-
|
|
45
58
|
* record for every visual axis.
|
|
46
59
|
* 2. typography.css — golden-ratio scale (√φ); semantic type classes.
|
|
@@ -48,7 +61,9 @@
|
|
|
48
61
|
* 3. theme.css — @theme block (Tailwind aliases). Reads tokens
|
|
49
62
|
* from (1) so MUST come after them; defines the
|
|
50
63
|
* `dark` variant selector consumed by the cascade.
|
|
51
|
-
* 4. glass.css —
|
|
64
|
+
* 4. glass.css — thin @import root over glass/{material,ladder,
|
|
65
|
+
* surfaces,progress-rail,squircle,a11y-fallback}.css.
|
|
66
|
+
* .glass-{wash,quiet,resting,floating,overlay}
|
|
52
67
|
* 5-rung ladder + .glass-card / -pill / -btn.
|
|
53
68
|
* Consumes tokens (1) + theme aliases (3).
|
|
54
69
|
* 4a. glass-specular-track.css — the pointer-anchored MOVING specular rung
|
|
@@ -93,10 +108,12 @@
|
|
|
93
108
|
* 10b. view-transition.css — the `.gl-list-item` View-Transitions group
|
|
94
109
|
* recipe + `--vt-*` axes (AQ.W5; the
|
|
95
110
|
* `useViewTransition` substrate's CSS half).
|
|
96
|
-
* 11. utilities.css —
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
111
|
+
* 11. utilities.css — thin @import root over utilities/{animate,base,
|
|
112
|
+
* components,btn,a11y-overrides}.css. focus-ring,
|
|
113
|
+
* btn-audacious + btn-interactive (press cluster;
|
|
114
|
+
* K W6 + Q.W3 Lane E), rainbow-vivid +
|
|
115
|
+
* rainbow-pastel. Consumes earlier animations +
|
|
116
|
+
* tokens.
|
|
100
117
|
* 12. instrument-chassis.css — P-tranche component CSS (chassis bezel +
|
|
101
118
|
* groove dividers). Loaded after utilities so
|
|
102
119
|
* component-local recipes can override.
|
|
@@ -132,6 +149,7 @@
|
|
|
132
149
|
@import "./instrument-rail.css";
|
|
133
150
|
@import "./hover-popover.css";
|
|
134
151
|
@import "./drawer.css";
|
|
152
|
+
@import "../components/custom/tabs/segmented-tabs.css";
|
|
135
153
|
|
|
136
154
|
/* Ensure consumer's Tailwind scans glass-ui components for utility classes
|
|
137
155
|
(e.g. CVA button variants like text-destructive-foreground) */
|
|
@@ -44,6 +44,8 @@
|
|
|
44
44
|
transition: --phase-tint-amount
|
|
45
45
|
var(--motion-duration-phase-handoff, 600ms)
|
|
46
46
|
var(--motion-ease-standard);
|
|
47
|
+
-webkit-backdrop-filter: var(--glass-blur-quiet);
|
|
48
|
+
|
|
47
49
|
backdrop-filter: var(--glass-blur-quiet);
|
|
48
50
|
/* AK-FD1 §2.4 — glass-variant outer border softened one rung down the
|
|
49
51
|
foreground-tinted border ladder (quiet 10% → wash 8%) so it reads at
|
|
@@ -133,6 +135,8 @@
|
|
|
133
135
|
───────────────────────────────────────────────────────────── */
|
|
134
136
|
.instrument-chassis[data-variant="spine"] {
|
|
135
137
|
background: var(--glass-spine-vignette);
|
|
138
|
+
-webkit-backdrop-filter: none;
|
|
139
|
+
|
|
136
140
|
backdrop-filter: none;
|
|
137
141
|
border: 1px solid var(--glass-spine-border);
|
|
138
142
|
box-shadow: var(--glass-under-shadow-spine);
|
package/dist/styles/paper.css
CHANGED
|
@@ -7,54 +7,8 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Texture: feTurbulence baseFrequency 0.65, 4 octaves, desaturated via
|
|
9
9
|
* feColorMatrix, blended multiply (light) / soft-light (dark). Tiles ~60px.
|
|
10
|
-
*
|
|
11
|
-
* ── THE GRAIN RUNGS (D6.c M5 — the printed-paper tooth, FELT not seen) ─────────
|
|
12
|
-
* The warm-paper grain must be FELT at rest — a premium editorial stock has a
|
|
13
|
-
* felt depth, and the measured finding (ds2-medium M5 / fd-usf-gallery §F) is
|
|
14
|
-
* that the shipped `--glass-grain-opacity: 0.025` floor reads as NOTHING. This
|
|
15
|
-
* file lifts the grain off that floor and mints a SECOND rung for chart plates:
|
|
16
|
-
*
|
|
17
|
-
* --glass-grain-opacity — the PAGE grain. Lifted here to a perceptible-
|
|
18
|
-
* but-deft 0.038 default (the local floor below).
|
|
19
|
-
* Numeric justification: the kitsch line is
|
|
20
|
-
* ~0.05 (above it the grain reads as screen-noise
|
|
21
|
-
* / a dirty monitor, ds2-medium M5); 0.025 is
|
|
22
|
-
* sub-perceptual ("felt as nothing"). 0.038 is
|
|
23
|
-
* the calibrated MIDPOINT — ~1.5× the dead floor,
|
|
24
|
-
* ~0.76× the kitsch ceiling — felt at rest, never
|
|
25
|
-
* seen AS grain. (The canonical token still lives
|
|
26
|
-
* in tokens.css; this utility reads it with the
|
|
27
|
-
* lifted fallback so a no-override mount is felt.)
|
|
28
|
-
* --glass-grain-opacity-plate — the PLATE grain (NEW rung). A chart plate is
|
|
29
|
-
* the FIGURE's "paper", so it wants slightly more
|
|
30
|
-
* tooth than the page (M5): 0.045 — still below
|
|
31
|
-
* the 0.05 kitsch ceiling, distinctly felt so the
|
|
32
|
-
* plate reads as PRINTED on the same stock as the
|
|
33
|
-
* page, not pasted onto it.
|
|
34
|
-
*
|
|
35
|
-
* THE DATA-REGION MASK CONTRACT (M5, non-negotiable). Grain on the FRAME, never
|
|
36
|
-
* under the FIGURE — a fleck over a choropleth reads as a data artifact; on the
|
|
37
|
-
* plate margin it reads as paper. `paper-grain-overlay` exposes a custom-property
|
|
38
|
-
* MASK SLOT (`--paper-grain-mask`) so a consumer can carve the data viewport out
|
|
39
|
-
* of the grain ::after: set it to a gradient/`url()` that is transparent over the
|
|
40
|
-
* data region and opaque over the frame, and the grain is masked off the figure.
|
|
41
|
-
* Default `none` (the whole surface is grained — the page/card case, no data to
|
|
42
|
-
* fence). The plate rung is opt-in via `[data-grain="plate"]`.
|
|
43
10
|
*/
|
|
44
11
|
|
|
45
|
-
/* The grain rung DEFAULTS — lifted off the tokens.css floor (D6.c M5). These are
|
|
46
|
-
plain custom-property fallbacks the utilities read; a consumer/tokens.css value
|
|
47
|
-
still wins (`var(--glass-grain-opacity, <floor>)`), so this only sets the floor
|
|
48
|
-
a no-override mount inherits. The plate rung is minted here (no canonical
|
|
49
|
-
tokens.css home is touched in this lane — D6.b owns tokens.css). */
|
|
50
|
-
@layer components {
|
|
51
|
-
:root {
|
|
52
|
-
/* The PLATE grain rung — distinct from the page rung; the figure's paper
|
|
53
|
-
wants more tooth. Minted in this lane; a consumer overrides at :root. */
|
|
54
|
-
--glass-grain-opacity-plate: 0.045;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
12
|
@utility paper-underpaint {
|
|
59
13
|
position: fixed;
|
|
60
14
|
inset: 0;
|
|
@@ -63,8 +17,7 @@
|
|
|
63
17
|
background-image: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3CfeBlend mode='multiply' in2='SourceGraphic'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E");
|
|
64
18
|
background-repeat: repeat;
|
|
65
19
|
background-size: 60px 60px;
|
|
66
|
-
|
|
67
|
-
opacity: var(--glass-grain-opacity, 0.038);
|
|
20
|
+
opacity: var(--glass-grain-opacity);
|
|
68
21
|
mix-blend-mode: multiply;
|
|
69
22
|
}
|
|
70
23
|
|
|
@@ -86,27 +39,8 @@
|
|
|
86
39
|
background-image: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3CfeBlend mode='multiply' in2='SourceGraphic'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='1'/%3E%3C/svg%3E");
|
|
87
40
|
background-repeat: repeat;
|
|
88
41
|
background-size: 60px 60px;
|
|
89
|
-
|
|
90
|
-
opacity: var(--glass-grain-opacity, 0.038);
|
|
42
|
+
opacity: var(--glass-grain-opacity);
|
|
91
43
|
mix-blend-mode: overlay;
|
|
92
|
-
/* THE DATA-REGION MASK SLOT (M5). Default `none` = the whole surface is
|
|
93
|
-
grained (page/card — no data to fence). A consumer that grains a chart
|
|
94
|
-
plate sets `--paper-grain-mask` to a gradient/url() transparent over the
|
|
95
|
-
data viewport + opaque over the frame, carving the figure out of the
|
|
96
|
-
grain so no fleck lands on a tier fill. `mask` is Baseline; a
|
|
97
|
-
non-supporting engine ignores it and keeps the full-surface grain (the
|
|
98
|
-
page case is unaffected — the mask only matters when a consumer fences
|
|
99
|
-
the data region). */
|
|
100
|
-
mask: var(--paper-grain-mask, none);
|
|
101
|
-
-webkit-mask: var(--paper-grain-mask, none);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/* The PLATE rung — a chart plate opts in via `[data-grain="plate"]` to the
|
|
105
|
-
higher-tooth `--glass-grain-opacity-plate` (the figure's paper reads as the
|
|
106
|
-
same stock as the page, with a touch more tooth). Pair with the mask slot to
|
|
107
|
-
fence the data viewport. */
|
|
108
|
-
&[data-grain="plate"]::after {
|
|
109
|
-
opacity: var(--glass-grain-opacity-plate, 0.045);
|
|
110
44
|
}
|
|
111
45
|
}
|
|
112
46
|
|
package/dist/styles/theme.css
CHANGED
|
@@ -82,25 +82,24 @@
|
|
|
82
82
|
--corner-k-soft: 1.7; /* gentler, between round and squircle — n≈3.4 */
|
|
83
83
|
--corner-k-sharp: 2.4; /* crisper square-bias for large surfaces — n≈4.8 */
|
|
84
84
|
|
|
85
|
-
/* Semantic per-surface SHAPE aliases — the rounded-vs-squircle POLICY
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
85
|
+
/* Semantic per-surface SHAPE aliases — the rounded-vs-squircle POLICY (a
|
|
86
|
+
RADIUS-THRESHOLD policy: the superellipse only READS at a LARGE radius
|
|
87
|
+
~--radius-xl/12px and up). ROUND set = card, pill (small controls + data
|
|
88
|
+
cards + stadium pills — the superellipse is imperceptible, dropping it is
|
|
89
|
+
free). SQUIRCLE set = bigdock, dialog, sheet, panel, hero (the large-radius
|
|
90
|
+
glass overlays where the iOS-26 silhouette reads — the blur halo + cartoon
|
|
91
|
+
under-shadow follow the shape). ALL ride the ONE --corner-k-squircle vocab.
|
|
92
|
+
W56b (USER-DECISION R1) extended the family off big-dock-only onto the large
|
|
93
|
+
glass overlays; @supports-gated in glass/squircle.css over the `border-radius`
|
|
94
|
+
round CONTRACT. A consumer dials any surface back to round (or opts one in) by
|
|
95
|
+
re-pointing its `--corner-shape-<surface>` alias. */
|
|
92
96
|
--corner-shape-card: round;
|
|
93
97
|
--corner-shape-pill: round;
|
|
94
|
-
--corner-shape-panel: round;
|
|
95
98
|
--corner-shape-bigdock: superellipse(var(--corner-k-squircle));
|
|
96
|
-
/* AX.W56(R1) — the overlay-band glass surfaces W54 makes glass-default
|
|
97
|
-
(Dialog + Sheet content) ride the squircle alongside the big-dock. They
|
|
98
|
-
sit at the large `--radius-dialog` (16px) modal radius where the
|
|
99
|
-
superellipse READS — the same iOS-26 idiom. @supports-gated in glass.css
|
|
100
|
-
over the `border-radius` round CONTRACT; a consumer dials either back to
|
|
101
|
-
round by re-pointing the alias. */
|
|
102
99
|
--corner-shape-dialog: superellipse(var(--corner-k-squircle));
|
|
103
100
|
--corner-shape-sheet: superellipse(var(--corner-k-squircle));
|
|
101
|
+
--corner-shape-panel: superellipse(var(--corner-k-squircle));
|
|
102
|
+
--corner-shape-hero: superellipse(var(--corner-k-squircle));
|
|
104
103
|
/* AX.W59 — the spectrum slider's track-height thumb reads as a SQUIRCLE
|
|
105
104
|
(the iOS color-picker idiom). It rides the same --corner-k-squircle
|
|
106
105
|
vocabulary; @supports-gated in Slider.vue over a --radius-* round
|
|
@@ -309,12 +308,6 @@
|
|
|
309
308
|
--color-gold-light: var(--gold-light);
|
|
310
309
|
--color-gold-dark: var(--gold-dark);
|
|
311
310
|
--color-gold-deep: var(--gold-deep);
|
|
312
|
-
/* D6.b — the gilt family: the rim (gilt edge) + the legible gold ink. The
|
|
313
|
-
`@theme` bridge surfaces `text-gold-ink` / `border-gold-rim` utilities
|
|
314
|
-
beside the existing gold quad. `--gold-ink` clears cream-law ② on `--card`
|
|
315
|
-
in both arms (proof:gold-ink-contrast). */
|
|
316
|
-
--color-gold-rim: var(--gold-rim);
|
|
317
|
-
--color-gold-ink: var(--gold-ink);
|
|
318
311
|
|
|
319
312
|
--color-rainbow-red: var(--rainbow-red);
|
|
320
313
|
--color-rainbow-orange: var(--rainbow-orange);
|
|
@@ -0,0 +1,250 @@
|
|
|
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
|
+
--neutral-0: hsl(48 12% 98%); /* L 98 — page surface */
|
|
28
|
+
--neutral-1: hsl(48 10% 95%); /* L 95 — soft field bg */
|
|
29
|
+
--neutral-2: hsl(48 9% 90%); /* L 90 — chip / tab-inactive bg */
|
|
30
|
+
--neutral-3: hsl(48 8% 82%); /* L 82 — hover / highlight bg */
|
|
31
|
+
--neutral-4: hsl(48 7% 70%); /* L 70 — subtle border */
|
|
32
|
+
--neutral-5: hsl(48 6% 40%); /* L 40 — muted text (WCAG AA: 5.23:1 vs L98 page / 4.91:1 vs L95 muted) */
|
|
33
|
+
/* W7-α' (AK-FD1) — strong-muted text rung. One principled ladder step
|
|
34
|
+
(10 L darker, the 5→6 cadence above) past muted text toward
|
|
35
|
+
--foreground (L10). Sits at the 1/3 point of the L40→L10 muted→primary
|
|
36
|
+
gap: legible secondary text that reads less-faint than muted but not as
|
|
37
|
+
assertive as primary. By-COLOUR per the canon (a neutral step, not an
|
|
38
|
+
alpha mute); hue held at 48, sat nudged 6→7 toward --foreground's 10.
|
|
39
|
+
WCAG AA: 7.79:1 vs L98 page / 7.31:1 vs L95 muted (cf. neutral-5's
|
|
40
|
+
5.23:1) — comfortably above the 4.5:1 body floor. */
|
|
41
|
+
--neutral-6: hsl(48 7% 30%); /* L 30 — strong-muted text (secondary register) */
|
|
42
|
+
|
|
43
|
+
--background: var(--neutral-0);
|
|
44
|
+
--foreground: hsl(24 10% 10%);
|
|
45
|
+
--card: var(--neutral-0);
|
|
46
|
+
--card-foreground: var(--foreground);
|
|
47
|
+
--popover: var(--neutral-0);
|
|
48
|
+
--popover-foreground: var(--foreground);
|
|
49
|
+
|
|
50
|
+
/* R0G-5 (AO.W4) — warm-neutral public-data panel surface. One warmth step
|
|
51
|
+
off --card (hue 44 vs 48, +4 sat, −2 L) so a consumer's aurora-OFF
|
|
52
|
+
/dashboard/* surfaces read with the admin canon's warm-neutral chrome
|
|
53
|
+
instead of the colder bare card. Opaque surface (the --card family), not
|
|
54
|
+
a --surface-tint-* overlay. Consumer applies on /dashboard/* only. */
|
|
55
|
+
--surface-public-data-panel: hsl(44 16% 96%);
|
|
56
|
+
|
|
57
|
+
--muted: var(--neutral-1);
|
|
58
|
+
--muted-foreground: var(--neutral-5);
|
|
59
|
+
/* W7-α' (AK-FD1) — one rung less-faint than --muted-foreground for
|
|
60
|
+
secondary text that reads too-faint at the muted rung over resting
|
|
61
|
+
glass (CardDescription). By-colour neutral step, not alpha. */
|
|
62
|
+
--muted-foreground-strong: var(--neutral-6);
|
|
63
|
+
--secondary: var(--neutral-2);
|
|
64
|
+
--secondary-foreground: var(--foreground);
|
|
65
|
+
--accent: var(--neutral-3);
|
|
66
|
+
--accent-foreground: var(--foreground);
|
|
67
|
+
|
|
68
|
+
--border: var(--neutral-4);
|
|
69
|
+
--input: var(--neutral-4);
|
|
70
|
+
|
|
71
|
+
--primary: hsl(24 10% 10%);
|
|
72
|
+
--primary-foreground: var(--neutral-0);
|
|
73
|
+
--destructive: hsl(0 72% 50%);
|
|
74
|
+
--destructive-foreground: var(--neutral-0);
|
|
75
|
+
--ring: hsl(24 10% 10%);
|
|
76
|
+
--shadow: hsl(24 10% 10%);
|
|
77
|
+
--shadow-color: var(--foreground);
|
|
78
|
+
|
|
79
|
+
/* AQ.W2 §4 — native-control accent. `accent-color` is an inherited
|
|
80
|
+
built-in <color>, so per the §2b resolve-late discipline it reads a
|
|
81
|
+
dedicated UNREGISTERED token set per-mode (NOT light-dark()) and is
|
|
82
|
+
re-specified inside `.dark` — otherwise the accent freezes to the
|
|
83
|
+
light shade at the cascade root. Light: muted-black checkmarks /
|
|
84
|
+
sliders on warm cream. Dark arm (`.dark`) reads `--ring` (mid-tone),
|
|
85
|
+
not the near-white dark `--primary`, so a checkbox's white checkmark
|
|
86
|
+
keeps contrast headroom (accent-color.md §5). */
|
|
87
|
+
--accent-color: var(--primary);
|
|
88
|
+
|
|
89
|
+
/* Border hairline at whisper alpha — the canonical rung for
|
|
90
|
+
section-spine / panel-edge hairlines a consumer wants to read as an
|
|
91
|
+
iOS-26 whisper rather than a hard rule. Consumers compose this named
|
|
92
|
+
rung instead of hand-mixing `color-mix(... var(--border) ...)`
|
|
93
|
+
per-site (token-first). 45% is the canonical whisper. Auto-dark via
|
|
94
|
+
`--border` (which is `var(--neutral-4)`, light-dark()-resolved). */
|
|
95
|
+
--border-soft: color-mix(in srgb, var(--border) 45%, transparent);
|
|
96
|
+
|
|
97
|
+
/* AQ.W3 §W3.4 — tokenized scrollbar thumb + track. Minted in the color
|
|
98
|
+
block so the `scrollbar-color` / `::-webkit-scrollbar-thumb` rungs read a
|
|
99
|
+
single source. Auto-dark via `--muted-foreground` (light-dark()-resolved,
|
|
100
|
+
AQ.W2) — the OS scrollbar chrome also honors `color-scheme: dark`, so the
|
|
101
|
+
custom thumb tracks the dark surface without an explicit dark mirror. The
|
|
102
|
+
thumb α (25%) matches the prior inline `.scrollbar-thin` value byte-for-
|
|
103
|
+
byte; `transparent` track keeps the scroll-pane glass reading through. */
|
|
104
|
+
--scrollbar-thumb: color-mix(in srgb, var(--muted-foreground) 25%, transparent);
|
|
105
|
+
--scrollbar-track: transparent;
|
|
106
|
+
|
|
107
|
+
/* Foreground-tint rungs — canonical handles for the 36+ raw
|
|
108
|
+
`color-mix(in srgb, var(--foreground) N%, transparent)` sites surveyed
|
|
109
|
+
in R5 axis-1. Each rung's α is named in its key (4 → 4%, 22 → 22%).
|
|
110
|
+
Auto-dark via --foreground; no explicit dark mirrors needed. R5
|
|
111
|
+
vocab.γ gap row 1. Consumers land in W2.B + W3.C. */
|
|
112
|
+
--surface-tint-4: color-mix(in srgb, var(--foreground) 4%, transparent);
|
|
113
|
+
--surface-tint-6: color-mix(in srgb, var(--foreground) 6%, transparent);
|
|
114
|
+
--surface-tint-8: color-mix(in srgb, var(--foreground) 8%, transparent);
|
|
115
|
+
--surface-tint-10: color-mix(in srgb, var(--foreground) 10%, transparent);
|
|
116
|
+
--surface-tint-12: color-mix(in srgb, var(--foreground) 12%, transparent);
|
|
117
|
+
--surface-tint-15: color-mix(in srgb, var(--foreground) 15%, transparent);
|
|
118
|
+
--surface-tint-18: color-mix(in srgb, var(--foreground) 18%, transparent);
|
|
119
|
+
--surface-tint-22: color-mix(in srgb, var(--foreground) 22%, transparent);
|
|
120
|
+
--surface-tint-25: color-mix(in srgb, var(--foreground) 25%, transparent);
|
|
121
|
+
/* Higher-α rungs added at L.W5 (absorbs K R4 — 4 P1 sites whose
|
|
122
|
+
literal `color-mix(in srgb, var(--foreground) {35,40,70}%, transparent)`
|
|
123
|
+
expressions bypassed the canonical token family). See `docs/tranches/L/
|
|
124
|
+
audit/W5-A-doc-cohort-proof.md`. */
|
|
125
|
+
--surface-tint-35: color-mix(in srgb, var(--foreground) 35%, transparent);
|
|
126
|
+
--surface-tint-40: color-mix(in srgb, var(--foreground) 40%, transparent);
|
|
127
|
+
--surface-tint-70: color-mix(in srgb, var(--foreground) 70%, transparent);
|
|
128
|
+
|
|
129
|
+
/* Muted-tinted surface rungs — canonical handles for the 9 raw
|
|
130
|
+
`color-mix(in srgb, var(--muted) N%, transparent)` sites in
|
|
131
|
+
FuzzySearch / SegmentedTabs / Slider scoped CSS. (AI.W5-δ — the
|
|
132
|
+
ProgressiveSidebar consumer retired at the wave; the canonical token
|
|
133
|
+
rung lives on for the remaining consumers.) Auto-dark via --muted.
|
|
134
|
+
R5 vocab.γ axis-1 row. */
|
|
135
|
+
--muted-soft: color-mix(in srgb, var(--muted) 30%, transparent);
|
|
136
|
+
--muted-medium: color-mix(in srgb, var(--muted) 50%, transparent);
|
|
137
|
+
|
|
138
|
+
/* ═══════════════════════════════════════════════
|
|
139
|
+
§5c CONSTELLATION — Canvas2D proximity-graph lattice (AX.W17)
|
|
140
|
+
|
|
141
|
+
The H.W4 legibility intelligence promoted from the slides deck to
|
|
142
|
+
LIBRARY identity: the node tones, the edge hairline color, the per-mode
|
|
143
|
+
edge-alpha multipliers, and the field-yields-to-type translucency knob.
|
|
144
|
+
Only `--constellation-accent` (the anomaly tint) stays a CONSUMER preset
|
|
145
|
+
(slides aliases it to `--ncsu-red`); the library ships a neutral default.
|
|
146
|
+
|
|
147
|
+
PLAIN-hsl LITERALS, per arm — NEVER `light-dark()` and NEVER a
|
|
148
|
+
`var(--neutral-*)`/`var(--foreground)`/`var(--border)`/`var(--card)`
|
|
149
|
+
alias. Canvas2D silently REJECTS a `light-dark()` value into
|
|
150
|
+
`strokeStyle`/`fillStyle` (the W30 86.3%-red-splatter cardinal defect),
|
|
151
|
+
and the rejection is identical whether the value is a literal
|
|
152
|
+
`light-dark(…)` OR a `var()` that RESOLVES to one — so the constellation
|
|
153
|
+
tokens are plain-hsl LEAVES, the `:root` vs `.dark` cascade carrying two
|
|
154
|
+
literals. `proof:constellation-tokens` clause (c) machine-locks this
|
|
155
|
+
(the no-`light-dark(`-substring NOR transitive-`var()` static assertion).
|
|
156
|
+
═══════════════════════════════════════════════ */
|
|
157
|
+
/* Node tones — readable on the warm-cream ground. The two-tone split (the
|
|
158
|
+
`dim` half rides `-node-dim`). Warm-grey ink, NOT a neutral-ladder alias. */
|
|
159
|
+
--constellation-node: hsl(36 8% 46%);
|
|
160
|
+
--constellation-node-dim: hsl(36 8% 60%);
|
|
161
|
+
/* Edge hairline stroke — warm near-black on cream (the plain-hsl complement
|
|
162
|
+
the slides deck reads to fix the `--foreground` light-dark() leak). */
|
|
163
|
+
--constellation-line: hsl(24 14% 14%);
|
|
164
|
+
/* Anomaly tint — NEUTRAL library default (a desaturated warm accent). The
|
|
165
|
+
consumer overrides this (slides → `--ncsu-red`); the library does NOT
|
|
166
|
+
bake a brand hue. This is the single consumer-preset boundary. */
|
|
167
|
+
--constellation-accent: hsl(18 58% 46%);
|
|
168
|
+
/* Edge-alpha multipliers — replace the magic `0.17` hairline / pointer-web
|
|
169
|
+
literals. The cream ground lifts the node tones, so the field can recede;
|
|
170
|
+
the focus-proximity edge reads a touch stronger. */
|
|
171
|
+
--constellation-edge-alpha: 0.22;
|
|
172
|
+
--constellation-edge-focus-alpha: 0.34;
|
|
173
|
+
/* §7 field-yields-to-type translucency knob — the legible-but-RECESSIVE
|
|
174
|
+
MIDPOINT, NOT max-legibility. On cream the node tones already read, so the
|
|
175
|
+
field recedes further: BELOW the slides 0.92 max-legibility reference. */
|
|
176
|
+
--constellation-alpha: 0.80;
|
|
177
|
+
|
|
178
|
+
/* §interaction — the warp spring + the gravity-well tunings (NUMERIC, NOT
|
|
179
|
+
colors — read ONCE on mount via parseFloat, never reach a Canvas2D
|
|
180
|
+
fillStyle, so immune to the W30 light-dark()/Canvas2D leak; AY.W-CON2).
|
|
181
|
+
Mode-INVARIANT, declared ONCE in :root (the .dark arm needs no numeric
|
|
182
|
+
re-declare — a per-mode value SPLIT is what proof:constellation-tokens
|
|
183
|
+
clause (c) flags, and these tunings are identical in both modes).
|
|
184
|
+
`--constellation-warp-response` is the keyframes.js ANGULAR PERIOD (the
|
|
185
|
+
SwiftUI .spring(response:) axis), NOT a settle-duration — at ζ=1 the 2%
|
|
186
|
+
settle lands at t₂ ≈ 5.83/ω₀ ≈ 0.93·response (the engine keeps the
|
|
187
|
+
keyframes.js ω₀ = 2π/response convention, mints no second ω). */
|
|
188
|
+
--constellation-warp-response: 0.55; /* s — keyframes.js angular period (NOT a settle) */
|
|
189
|
+
--constellation-warp-zeta: 1.0; /* critically damped — a focal mark must NOT ring */
|
|
190
|
+
--constellation-well-gain: 14000; /* inverse-square force scale (the held-pull gain) */
|
|
191
|
+
--constellation-well-reach: 340; /* base-width px — the well's reach (k-scaled at step) */
|
|
192
|
+
--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) */
|
|
193
|
+
--constellation-well-max-speed: 4.0; /* base-width px/frame cap — the no-slingshot clamp */
|
|
194
|
+
--constellation-well-hold-ms: 140; /* ms hold before the well arms */
|
|
195
|
+
--constellation-wander-idle: 8000; /* ms — min idle between auto re-targets (the W-CON1 drift cadence) */
|
|
196
|
+
--constellation-wander-jitter: 8000; /* ms — random extra idle per cadence (so the rhythm is not metronomic) */
|
|
197
|
+
|
|
198
|
+
/* ═══════════════════════════════════════════════
|
|
199
|
+
§6 SECTION PALETTE — 13-stop jewel tones (light)
|
|
200
|
+
═══════════════════════════════════════════════ */
|
|
201
|
+
/* AV.W16 TW2 — oklch ramp (perceptually-even L; hue preserved from the
|
|
202
|
+
prior hsl() cadence). Categorical jewel tones — distinct hues, not a
|
|
203
|
+
monotone scale. Authored as oklch pairs with the .dark mirror. */
|
|
204
|
+
--section-color-0: oklch(0.552 0.192 359.8); /* rose */
|
|
205
|
+
--section-color-1: oklch(0.502 0.165 305.9); /* purple */
|
|
206
|
+
--section-color-2: oklch(0.484 0.163 265.5); /* indigo */
|
|
207
|
+
--section-color-3: oklch(0.542 0.089 222.8); /* teal-cyan */
|
|
208
|
+
--section-color-4: oklch(0.551 0.088 171.1); /* forest */
|
|
209
|
+
--section-color-5: oklch(0.623 0.124 69.6); /* amber */
|
|
210
|
+
--section-color-6: oklch(0.579 0.201 30.4); /* tomato-red */
|
|
211
|
+
--section-color-7: oklch(0.532 0.180 317.5); /* violet */
|
|
212
|
+
--section-color-8: oklch(0.520 0.176 8.4); /* ruby */
|
|
213
|
+
--section-color-9: oklch(0.492 0.038 239.6); /* slate-blue */
|
|
214
|
+
--section-color-10: oklch(0.556 0.103 128.8); /* olive */
|
|
215
|
+
--section-color-11: oklch(0.601 0.092 208.0); /* ocean */
|
|
216
|
+
--section-color-12: oklch(0.513 0.163 291.9); /* periwinkle */
|
|
217
|
+
|
|
218
|
+
/* Accent colors */
|
|
219
|
+
--accent-pink: oklch(0.613 0.197 353.8);
|
|
220
|
+
--section-heading: oklch(0.545 0.189 352.8);
|
|
221
|
+
--accent-red: oklch(0.574 0.216 27.5);
|
|
222
|
+
|
|
223
|
+
/* ═══════════════════════════════════════════════
|
|
224
|
+
§6b VIZ BASIS — core brand hues
|
|
225
|
+
═══════════════════════════════════════════════ */
|
|
226
|
+
--viz-fourier: oklch(0.579 0.201 30.4);
|
|
227
|
+
--viz-chebyshev: oklch(0.484 0.163 265.5);
|
|
228
|
+
--viz-legendre: oklch(0.532 0.180 317.5);
|
|
229
|
+
--viz-amber: var(--section-color-5);
|
|
230
|
+
--viz-green: var(--section-color-4);
|
|
231
|
+
|
|
232
|
+
/* Semantic UI accents */
|
|
233
|
+
--tier-featured: oklch(0.841 0.173 84.2);
|
|
234
|
+
--tier-saved: oklch(0.676 0.176 252.3);
|
|
235
|
+
--like: oklch(0.633 0.200 24.9);
|
|
236
|
+
--success: oklch(0.720 0.192 149.5);
|
|
237
|
+
--warning: oklch(0.770 0.165 70.6);
|
|
238
|
+
--info: oklch(0.626 0.186 259.6);
|
|
239
|
+
--delete: oklch(0.597 0.198 25.5);
|
|
240
|
+
|
|
241
|
+
/* Semantic foregrounds — text/glyph atop --success/--warning/--info plates.
|
|
242
|
+
Notification.vue currently hardcodes `text-white`/`text-foreground`
|
|
243
|
+
inline; W2 migrates consumers to read these tokens. Warning carries a
|
|
244
|
+
dark glyph because the amber plate is too luminous for white. R5
|
|
245
|
+
vocab.γ gap row 4. */
|
|
246
|
+
--success-foreground: var(--neutral-0);
|
|
247
|
+
--warning-foreground: hsl(24 10% 10%);
|
|
248
|
+
--info-foreground: var(--neutral-0);
|
|
249
|
+
|
|
250
|
+
}
|