@verdify/tokens 0.6.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.
@@ -0,0 +1,275 @@
1
+ {
2
+ "color": {
3
+ "brand": {
4
+ "brand": {
5
+ "$value": "#7C5CFF",
6
+ "$type": "color",
7
+ "$description": "Sovereign Violet — the single brand anchor. Identity color; the logo seam and primary brand moments. Sits outside the traffic-light status register."
8
+ },
9
+ "brand-deep": {
10
+ "$value": "#5B3EE8",
11
+ "$type": "color",
12
+ "$description": "Companion to brand.brand — used on light surfaces where #7C5CFF fails WCAG 2.2 non-text contrast (>=3:1). Luminance shift only."
13
+ }
14
+ },
15
+ "neutral": {
16
+ "obsidian": {
17
+ "300": {
18
+ "$value": "#C8D0DE",
19
+ "$type": "color",
20
+ "$description": "Primary text on dark"
21
+ },
22
+ "400": {
23
+ "$value": "#8A95A8",
24
+ "$type": "color",
25
+ "$description": "Secondary text"
26
+ },
27
+ "500": {
28
+ "$value": "#4A5567",
29
+ "$type": "color",
30
+ "$description": "Muted text"
31
+ },
32
+ "600": {
33
+ "$value": "#2A3142",
34
+ "$type": "color",
35
+ "$description": "Muted border"
36
+ },
37
+ "700": {
38
+ "$value": "#1F2638",
39
+ "$type": "color",
40
+ "$description": "Border / divider"
41
+ },
42
+ "800": {
43
+ "$value": "#161B2A",
44
+ "$type": "color",
45
+ "$description": "Input / well"
46
+ },
47
+ "850": {
48
+ "$value": "#0F1320",
49
+ "$type": "color",
50
+ "$description": "Raised surface · cards"
51
+ },
52
+ "900": {
53
+ "$value": "#0B0F19",
54
+ "$type": "color",
55
+ "$description": "Default dark canvas"
56
+ },
57
+ "950": {
58
+ "$value": "#060912",
59
+ "$type": "color",
60
+ "$description": "Deepest backdrop · night-band canvas"
61
+ }
62
+ },
63
+ "mist": {
64
+ "50": {
65
+ "$value": "#FBFCFE",
66
+ "$type": "color",
67
+ "$description": "Deepest light backdrop"
68
+ },
69
+ "100": {
70
+ "$value": "#F4F6FA",
71
+ "$type": "color",
72
+ "$description": "Default light canvas"
73
+ },
74
+ "200": {
75
+ "$value": "#E8ECF4",
76
+ "$type": "color",
77
+ "$description": "Raised surface · cards"
78
+ },
79
+ "300": {
80
+ "$value": "#D6DCE8",
81
+ "$type": "color",
82
+ "$description": "Input / well"
83
+ },
84
+ "400": {
85
+ "$value": "#B0BACA",
86
+ "$type": "color",
87
+ "$description": "Border / divider"
88
+ },
89
+ "500": {
90
+ "$value": "#8A95A8",
91
+ "$type": "color",
92
+ "$description": "Muted (shared with obsidian.400)"
93
+ },
94
+ "600": {
95
+ "$value": "#4A5567",
96
+ "$type": "color",
97
+ "$description": "Secondary text (shared with obsidian.500)"
98
+ },
99
+ "800": {
100
+ "$value": "#2A3142",
101
+ "$type": "color",
102
+ "$description": "Strong text"
103
+ },
104
+ "950": {
105
+ "$value": "#0B0F19",
106
+ "$type": "color",
107
+ "$description": "Highest-contrast text (shared with obsidian.900)"
108
+ }
109
+ }
110
+ },
111
+ "semantic": {
112
+ "verified": {
113
+ "$value": "#00D17A",
114
+ "$type": "color",
115
+ "$description": "Trust / success / verification passed — bright decorative accent (icons/fills). Fails WCAG AA as text on light surfaces; use verified-strong for readable fg/border."
116
+ },
117
+ "verified-strong": {
118
+ "$value": "#007947",
119
+ "$type": "color",
120
+ "$description": "Verified, darkened to WCAG AA — in-hue luminance shift of verified; 4.64:1 on Mist-200 (#E8ECF4). Status chip foreground/border."
121
+ },
122
+ "signal": {
123
+ "$value": "#4D9DFF",
124
+ "$type": "color",
125
+ "$description": "Info / hyperlinks / neutral interactive accent — bright decorative accent. Fails WCAG AA as text on light surfaces; use signal-strong for readable fg/border."
126
+ },
127
+ "signal-strong": {
128
+ "$value": "#346BAD",
129
+ "$type": "color",
130
+ "$description": "Signal, darkened to WCAG AA — in-hue luminance shift of signal; 4.60:1 on Mist-200 (#E8ECF4). Status chip foreground/border."
131
+ },
132
+ "caution": {
133
+ "$value": "#F5A623",
134
+ "$type": "color",
135
+ "$description": "Warning / pending / verification in progress — bright decorative accent. Fails WCAG AA as text on light surfaces; use caution-strong for readable fg/border."
136
+ },
137
+ "caution-strong": {
138
+ "$value": "#8E6014",
139
+ "$type": "color",
140
+ "$description": "Caution, darkened to WCAG AA — in-hue luminance shift of caution; 4.63:1 on Mist-200 (#E8ECF4). Status chip foreground/border."
141
+ },
142
+ "critical": {
143
+ "$value": "#FF4D4D",
144
+ "$type": "color",
145
+ "$description": "Error / verification failure / destructive action — bright decorative accent. Fails WCAG AA as text on light surfaces; use critical-strong for readable fg/border."
146
+ },
147
+ "critical-strong": {
148
+ "$value": "#BE3939",
149
+ "$type": "color",
150
+ "$description": "Critical, darkened to WCAG AA — in-hue luminance shift of critical; 4.63:1 on Mist-200 (#E8ECF4). Status chip foreground/border."
151
+ }
152
+ },
153
+ "adaptive": {
154
+ "dawn": {
155
+ "surface": {
156
+ "$value": "rgb(240, 238, 233)",
157
+ "$type": "color",
158
+ "$description": "Adaptive dawn band surface (05:00-09:00)"
159
+ },
160
+ "text": {
161
+ "$value": "rgb(42, 49, 66)",
162
+ "$type": "color",
163
+ "$description": "Adaptive dawn band primary text (05:00-09:00)"
164
+ }
165
+ },
166
+ "day": {
167
+ "surface": {
168
+ "$value": "rgb(244, 246, 250)",
169
+ "$type": "color",
170
+ "$description": "Adaptive day band surface (09:00-17:00)"
171
+ },
172
+ "text": {
173
+ "$value": "rgb(42, 49, 66)",
174
+ "$type": "color",
175
+ "$description": "Adaptive day band primary text (09:00-17:00)"
176
+ }
177
+ },
178
+ "dusk": {
179
+ "surface": {
180
+ "$value": "rgb(26, 26, 38)",
181
+ "$type": "color",
182
+ "$description": "Adaptive dusk band surface (17:00-21:00)"
183
+ },
184
+ "text": {
185
+ "$value": "rgb(200, 208, 222)",
186
+ "$type": "color",
187
+ "$description": "Adaptive dusk band primary text (17:00-21:00)"
188
+ }
189
+ },
190
+ "night": {
191
+ "surface": {
192
+ "$value": "rgb(6, 9, 18)",
193
+ "$type": "color",
194
+ "$description": "Adaptive night band surface (21:00-05:00)"
195
+ },
196
+ "text": {
197
+ "$value": "rgb(200, 208, 222)",
198
+ "$type": "color",
199
+ "$description": "Adaptive night band primary text (21:00-05:00)"
200
+ }
201
+ }
202
+ },
203
+ "surface": {
204
+ "canvas": {
205
+ "$value": "{color.neutral.mist.100}",
206
+ "$type": "color",
207
+ "$description": "Default canvas (light); reassigned per adaptive band at runtime. Per BR-1 §4.2 'Default light canvas'."
208
+ },
209
+ "raised": {
210
+ "$value": "{color.neutral.mist.200}",
211
+ "$type": "color",
212
+ "$description": "Raised surface — cards. Per BR-1 §4.2 'Raised surface · cards'."
213
+ },
214
+ "input": {
215
+ "$value": "{color.neutral.mist.300}",
216
+ "$type": "color",
217
+ "$description": "Input / well. Per BR-1 §4.2 'Input / well'."
218
+ },
219
+ "border": {
220
+ "$value": "{color.neutral.mist.400}",
221
+ "$type": "color",
222
+ "$description": "Border / divider. Per BR-1 §4.2 'Border / divider'."
223
+ },
224
+ "border-muted": {
225
+ "$value": "{color.neutral.mist.500}",
226
+ "$type": "color",
227
+ "$description": "Muted border — implicit in Mist scale (mid-range collision with Obsidian 600). Per BR-1 §4.2."
228
+ }
229
+ },
230
+ "text": {
231
+ "primary": {
232
+ "$value": "{color.neutral.mist.950}",
233
+ "$type": "color",
234
+ "$description": "Primary text on canvas; reassigned per adaptive band. Per BR-1 §4.2 'Highest-contrast text'."
235
+ },
236
+ "secondary": {
237
+ "$value": "{color.neutral.mist.600}",
238
+ "$type": "color",
239
+ "$description": "Secondary text role; aliases to mist.600, whose hex (#4A5567) is shared with obsidian.500 per BR-1 §4.2 mid-range collision."
240
+ },
241
+ "muted": {
242
+ "$value": "{color.neutral.mist.500}",
243
+ "$type": "color",
244
+ "$description": "Muted text — shared with obsidian.400 per BR-1 §4.2 mid-range collision. Contrast on surface.canvas is ~2.8:1 — intentionally below WCAG AA for body text; use only for de-emphasised auxiliary text where ≥3:1 (UI components) is the relevant bar."
245
+ },
246
+ "disabled": {
247
+ "$value": "{color.neutral.mist.400}",
248
+ "$type": "color",
249
+ "$description": "Disabled text — low-contrast, deliberate. Aliases mist.400; downstream consumers may alternatively compose text.primary with state.opacity.disabled (0.38) for a different visual register."
250
+ },
251
+ "inverse": {
252
+ "$value": "{color.neutral.mist.50}",
253
+ "$type": "color",
254
+ "$description": "Text on dark surfaces (e.g. obsidian backdrop, dark scrim). Aliases mist.50 — the lightest neutral. Distinct from on-brand: inverse is for neutral-dark contexts; on-brand is reserved for brand backgrounds."
255
+ },
256
+ "on-brand": {
257
+ "$value": "{color.neutral.mist.50}",
258
+ "$type": "color",
259
+ "$description": "Text on brand backgrounds (e.g. CTA buttons). Constant per brand discipline."
260
+ }
261
+ },
262
+ "scrim": {
263
+ "light": {
264
+ "$value": "rgba(11, 15, 25, 0.5)",
265
+ "$type": "color",
266
+ "$description": "Modal/sheet backdrop on light surfaces — obsidian-900 at 50% opacity (per BR-2 spec §4)."
267
+ },
268
+ "dark": {
269
+ "$value": "rgba(6, 9, 18, 0.7)",
270
+ "$type": "color",
271
+ "$description": "Modal/sheet backdrop on dark surfaces — obsidian-950 at 70% opacity for stronger isolation."
272
+ }
273
+ }
274
+ }
275
+ }
@@ -0,0 +1,65 @@
1
+ {
2
+ "color": {
3
+ "action": {
4
+ "primary": {
5
+ "bg": { "$value": "{color.brand.brand}", "$type": "color", "$description": "Primary action background — Sovereign Violet. The single high-emphasis CTA per surface." },
6
+ "fg": { "$value": "{color.text.on-brand}", "$type": "color", "$description": "Text/icon on a primary action." },
7
+ "border": { "$value": "{color.brand.brand}", "$type": "color", "$description": "Primary action border — matches bg." },
8
+ "bg-hover": { "$value": "{color.brand.brand-deep}", "$type": "color", "$description": "Primary action hover — deep companion." },
9
+ "bg-active": { "$value": "{color.brand.brand-deep}", "$type": "color", "$description": "Primary action pressed/active." }
10
+ },
11
+ "secondary": {
12
+ "bg": { "$value": "{color.surface.raised}", "$type": "color", "$description": "Secondary action background — neutral raised surface." },
13
+ "fg": { "$value": "{color.text.primary}", "$type": "color", "$description": "Text/icon on a secondary action." },
14
+ "border": { "$value": "{color.surface.border}", "$type": "color", "$description": "Secondary action border." },
15
+ "bg-hover": { "$value": "{color.surface.input}", "$type": "color", "$description": "Secondary action hover." }
16
+ },
17
+ "ghost": {
18
+ "fg": { "$value": "{color.text.primary}", "$type": "color", "$description": "Ghost action text/icon — no fill until hover." },
19
+ "bg-hover": { "$value": "{color.surface.raised}", "$type": "color", "$description": "Ghost action hover fill." }
20
+ },
21
+ "destructive": {
22
+ "bg": { "$value": "{color.semantic.critical}", "$type": "color", "$description": "Destructive action background — Critical. A status color used for a destructive control; never the brand." },
23
+ "fg": { "$value": "{color.text.on-brand}", "$type": "color", "$description": "Text/icon on a destructive action." },
24
+ "border": { "$value": "{color.semantic.critical}", "$type": "color", "$description": "Destructive action border." }
25
+ }
26
+ },
27
+ "status": {
28
+ "verified": {
29
+ "fg": { "$value": "{color.semantic.verified-strong}", "$type": "color", "$description": "Verified status foreground — Verified Green darkened to WCAG AA (#007947, ≥4.5:1 on the chip bg). The in-product success state; never the brand." },
30
+ "bg": { "$value": "{color.surface.raised}", "$type": "color", "$description": "Verified status chip background — neutral; color carried by fg/border (restraint over volume)." },
31
+ "border": { "$value": "{color.semantic.verified-strong}", "$type": "color", "$description": "Verified status border — AA-dark shade (≥3:1 non-text)." },
32
+ "accent": { "$value": "{color.semantic.verified}", "$type": "color", "$description": "Verified bright decorative accent (#00D17A) — for icons/fills where contrast is not a text/border requirement." }
33
+ },
34
+ "signal": {
35
+ "fg": { "$value": "{color.semantic.signal-strong}", "$type": "color", "$description": "Informational status foreground — Signal darkened to WCAG AA (#346BAD, ≥4.5:1 on the chip bg)." },
36
+ "bg": { "$value": "{color.surface.raised}", "$type": "color", "$description": "Informational status chip background — neutral." },
37
+ "border": { "$value": "{color.semantic.signal-strong}", "$type": "color", "$description": "Informational status border — AA-dark shade (≥3:1 non-text)." },
38
+ "accent": { "$value": "{color.semantic.signal}", "$type": "color", "$description": "Signal bright decorative accent (#4D9DFF) — for icons/fills." }
39
+ },
40
+ "caution": {
41
+ "fg": { "$value": "{color.semantic.caution-strong}", "$type": "color", "$description": "Caution status foreground — Caution darkened to WCAG AA (#8E6014, ≥4.5:1 on the chip bg); pending / in-progress." },
42
+ "bg": { "$value": "{color.surface.raised}", "$type": "color", "$description": "Caution status chip background — neutral." },
43
+ "border": { "$value": "{color.semantic.caution-strong}", "$type": "color", "$description": "Caution status border — AA-dark shade (≥3:1 non-text)." },
44
+ "accent": { "$value": "{color.semantic.caution}", "$type": "color", "$description": "Caution bright decorative accent (#F5A623) — for icons/fills." }
45
+ },
46
+ "critical": {
47
+ "fg": { "$value": "{color.semantic.critical-strong}", "$type": "color", "$description": "Critical status foreground — Critical darkened to WCAG AA (#BE3939, ≥4.5:1 on the chip bg); error / failure." },
48
+ "bg": { "$value": "{color.surface.raised}", "$type": "color", "$description": "Critical status chip background — neutral." },
49
+ "border": { "$value": "{color.semantic.critical-strong}", "$type": "color", "$description": "Critical status border — AA-dark shade (≥3:1 non-text)." },
50
+ "accent": { "$value": "{color.semantic.critical}", "$type": "color", "$description": "Critical bright decorative accent (#FF4D4D) — for icons/fills." }
51
+ }
52
+ },
53
+ "border": {
54
+ "default": { "$value": "{color.surface.border}", "$type": "color", "$description": "Default component border — divider weight." },
55
+ "strong": { "$value": "{color.surface.border-muted}", "$type": "color", "$description": "Higher-contrast component border for emphasis." },
56
+ "focus": { "$value": "{focus.ring.color}", "$type": "color", "$description": "Focused-input border color — matches the focus ring (single source: focus.ring.color)." }
57
+ },
58
+ "control": {
59
+ "bg": { "$value": "{color.surface.input}", "$type": "color", "$description": "Form control background — input / well." },
60
+ "border": { "$value": "{color.surface.border}", "$type": "color", "$description": "Form control border." },
61
+ "fg": { "$value": "{color.text.primary}", "$type": "color", "$description": "Form control text/value." },
62
+ "placeholder": { "$value": "{color.text.muted}", "$type": "color", "$description": "Form control placeholder text — de-emphasised." }
63
+ }
64
+ }
65
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "container": {
3
+ "sm": { "$value": "40rem", "$type": "dimension", "$description": "Container max-width at sm breakpoint" },
4
+ "md": { "$value": "48rem", "$type": "dimension", "$description": "Container max-width at md breakpoint" },
5
+ "lg": { "$value": "64rem", "$type": "dimension", "$description": "Container max-width at lg breakpoint" },
6
+ "xl": { "$value": "80rem", "$type": "dimension", "$description": "Container max-width at xl breakpoint" },
7
+ "2xl": { "$value": "96rem", "$type": "dimension", "$description": "Container max-width at 2xl breakpoint" }
8
+ }
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "focus": {
3
+ "ring": {
4
+ "width": { "$value": "2px", "$type": "dimension", "$description": "Focus ring width. Per WCAG 2.4.7." },
5
+ "color": { "$value": "{color.semantic.signal}", "$type": "color", "$description": "Focus ring color — semantic.signal (#4D9DFF). Contrast ≥3:1 verified in Task 7 (contrast-validation)." },
6
+ "offset": { "$value": "2px", "$type": "dimension", "$description": "Focus ring offset (gap between target and ring)." }
7
+ }
8
+ }
9
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "font": {
3
+ "family": {
4
+ "sans": {
5
+ "$value": "Inter, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
6
+ "$type": "fontFamily",
7
+ "$description": "Primary UI and reading family — Inter Variable per BR-1 §5.1. System fallbacks listed in priority order."
8
+ },
9
+ "mono": {
10
+ "$value": "'JetBrains Mono', 'SF Mono', Menlo, Consolas, monospace",
11
+ "$type": "fontFamily",
12
+ "$description": "Technical family for IDs, hashes, code, timestamps — JetBrains Mono Variable per BR-1 §5.1."
13
+ }
14
+ },
15
+ "weight": {
16
+ "regular": { "$value": "400", "$type": "fontWeight", "$description": "Body / paragraph weight" },
17
+ "medium": { "$value": "500", "$type": "fontWeight", "$description": "H2/H3, labels, wordmark" },
18
+ "semibold": { "$value": "600", "$type": "fontWeight", "$description": "Display / H1" },
19
+ "bold": { "$value": "700", "$type": "fontWeight", "$description": "Reserved for rare emphasis; not used in default scale" }
20
+ }
21
+ }
22
+ }
@@ -0,0 +1,35 @@
1
+ {
2
+ "motion": {
3
+ "duration": {
4
+ "instant": { "$value": "0ms", "$type": "duration", "$description": "State changes — selection, focus state (no animation). Per BR-1 §9.1." },
5
+ "fast": { "$value": "120ms", "$type": "duration", "$description": "Hover, focus rings, button presses. Per BR-1 §9.1." },
6
+ "base": { "$value": "200ms", "$type": "duration", "$description": "Most UI transitions — panels, tooltips. Per BR-1 §9.1." },
7
+ "deliberate": { "$value": "350ms", "$type": "duration", "$description": "Verification moments, modals, the check. Per BR-1 §9.1." },
8
+ "ambient": { "$value": "1200ms", "$type": "duration", "$description": "Band transitions, time-of-day, hero entrances. Per BR-1 §9.1. NOT for UI feedback." }
9
+ },
10
+ "easing": {
11
+ "verdify": { "$value": "cubic-bezier(0.2, 0.8, 0.2, 1)", "$type": "cubicBezier", "$description": "Default — natural, slightly snappy. Per BR-1 §9.2." },
12
+ "emphasis": { "$value": "cubic-bezier(0.34, 1.56, 0.64, 1)", "$type": "cubicBezier", "$description": "The check moment only — slight overshoot. Per BR-1 §9.2." },
13
+ "ambient": { "$value": "cubic-bezier(0.4, 0, 0.6, 1)", "$type": "cubicBezier", "$description": "Long, gentle — adaptive bands. Per BR-1 §9.2." },
14
+ "exit": { "$value": "cubic-bezier(0.4, 0, 1, 1)", "$type": "cubicBezier", "$description": "Things leaving feel decisive. Per BR-1 §9.2." }
15
+ },
16
+ "transition": {
17
+ "micro": {
18
+ "duration": { "$value": "{motion.duration.fast}", "$type": "duration", "$description": "Hover/press feedback duration. Per BR-2 spec D-11." },
19
+ "easing": { "$value": "{motion.easing.verdify}", "$type": "cubicBezier", "$description": "Hover/press feedback easing." }
20
+ },
21
+ "layout": {
22
+ "duration": { "$value": "{motion.duration.base}", "$type": "duration", "$description": "Most UI layout transitions duration." },
23
+ "easing": { "$value": "{motion.easing.verdify}", "$type": "cubicBezier", "$description": "Most UI layout transitions easing." }
24
+ },
25
+ "modal": {
26
+ "duration": { "$value": "{motion.duration.deliberate}", "$type": "duration", "$description": "Modal/sheet entry/exit duration. Per BR-1 §9.3 — restraint (no ease-emphasis; that is reserved for the check)." },
27
+ "easing": { "$value": "{motion.easing.verdify}", "$type": "cubicBezier", "$description": "Modal/sheet entry/exit easing." }
28
+ },
29
+ "ambient": {
30
+ "duration": { "$value": "{motion.duration.ambient}", "$type": "duration", "$description": "Adaptive band transitions duration. NOT for primary UI feedback." },
31
+ "easing": { "$value": "{motion.easing.ambient}", "$type": "cubicBezier", "$description": "Adaptive band transitions easing." }
32
+ }
33
+ }
34
+ }
35
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "opacity": {
3
+ "0": { "$value": "0", "$type": "number", "$description": "Fully transparent" },
4
+ "5": { "$value": "0.05", "$type": "number", "$description": "Opacity 5%" },
5
+ "10": { "$value": "0.1", "$type": "number", "$description": "Opacity 10%" },
6
+ "20": { "$value": "0.2", "$type": "number", "$description": "Opacity 20%" },
7
+ "30": { "$value": "0.3", "$type": "number", "$description": "Opacity 30%" },
8
+ "40": { "$value": "0.4", "$type": "number", "$description": "Opacity 40%" },
9
+ "50": { "$value": "0.5", "$type": "number", "$description": "Opacity 50%" },
10
+ "60": { "$value": "0.6", "$type": "number", "$description": "Opacity 60%" },
11
+ "70": { "$value": "0.7", "$type": "number", "$description": "Opacity 70%" },
12
+ "80": { "$value": "0.8", "$type": "number", "$description": "Opacity 80%" },
13
+ "90": { "$value": "0.9", "$type": "number", "$description": "Opacity 90%" },
14
+ "95": { "$value": "0.95", "$type": "number", "$description": "Opacity 95%" },
15
+ "100": { "$value": "1", "$type": "number", "$description": "Fully opaque" }
16
+ }
17
+ }
@@ -0,0 +1,120 @@
1
+ {
2
+ "color": {
3
+ "print": {
4
+ "brand": {
5
+ "brand": {
6
+ "$value": "#7C5CFF",
7
+ "$type": "color",
8
+ "$description": "Sovereign Violet — the single brand anchor. Identity color; the logo seam and primary brand moments. Sits outside the traffic-light status register.",
9
+ "$extensions": {
10
+ "com.verdify.print": {
11
+ "cmyk": "51,64,0,0",
12
+ "pantone": "PANTONE 2665 C"
13
+ }
14
+ }
15
+ },
16
+ "brand-deep": {
17
+ "$value": "#5B3EE8",
18
+ "$type": "color",
19
+ "$description": "Companion to brand.brand — used on light surfaces where #7C5CFF fails WCAG 2.2 non-text contrast (>=3:1). Luminance shift only.",
20
+ "$extensions": {
21
+ "com.verdify.print": {
22
+ "cmyk": "61,73,0,9",
23
+ "pantone": "PANTONE 266 C"
24
+ }
25
+ }
26
+ }
27
+ },
28
+ "semantic": {
29
+ "verified": {
30
+ "$value": "#00D17A",
31
+ "$type": "color",
32
+ "$description": "Trust / success / verification passed — bright decorative accent (icons/fills). Fails WCAG AA as text on light surfaces; use verified-strong for readable fg/border.",
33
+ "$extensions": {
34
+ "com.verdify.print": {
35
+ "cmyk": "100,0,42,18",
36
+ "pantone": "PANTONE 7479 C"
37
+ }
38
+ }
39
+ },
40
+ "verified-strong": {
41
+ "$value": "#007947",
42
+ "$type": "color",
43
+ "$description": "Verified, darkened to WCAG AA — in-hue luminance shift of verified; 4.64:1 on Mist-200 (#E8ECF4). Status chip foreground/border.",
44
+ "$extensions": {
45
+ "com.verdify.print": {
46
+ "cmyk": "100,0,41,53",
47
+ "pantone": "PANTONE 7479 C"
48
+ }
49
+ }
50
+ },
51
+ "signal": {
52
+ "$value": "#4D9DFF",
53
+ "$type": "color",
54
+ "$description": "Info / hyperlinks / neutral interactive accent — bright decorative accent. Fails WCAG AA as text on light surfaces; use signal-strong for readable fg/border.",
55
+ "$extensions": {
56
+ "com.verdify.print": {
57
+ "cmyk": "70,38,0,0",
58
+ "pantone": "PANTONE 279 C"
59
+ }
60
+ }
61
+ },
62
+ "signal-strong": {
63
+ "$value": "#346BAD",
64
+ "$type": "color",
65
+ "$description": "Signal, darkened to WCAG AA — in-hue luminance shift of signal; 4.60:1 on Mist-200 (#E8ECF4). Status chip foreground/border.",
66
+ "$extensions": {
67
+ "com.verdify.print": {
68
+ "cmyk": "70,38,0,32",
69
+ "pantone": "PANTONE 279 C"
70
+ }
71
+ }
72
+ },
73
+ "caution": {
74
+ "$value": "#F5A623",
75
+ "$type": "color",
76
+ "$description": "Warning / pending / verification in progress — bright decorative accent. Fails WCAG AA as text on light surfaces; use caution-strong for readable fg/border.",
77
+ "$extensions": {
78
+ "com.verdify.print": {
79
+ "cmyk": "0,32,86,4",
80
+ "pantone": "PANTONE 137 C"
81
+ }
82
+ }
83
+ },
84
+ "caution-strong": {
85
+ "$value": "#8E6014",
86
+ "$type": "color",
87
+ "$description": "Caution, darkened to WCAG AA — in-hue luminance shift of caution; 4.63:1 on Mist-200 (#E8ECF4). Status chip foreground/border.",
88
+ "$extensions": {
89
+ "com.verdify.print": {
90
+ "cmyk": "0,32,86,44",
91
+ "pantone": "PANTONE 137 C"
92
+ }
93
+ }
94
+ },
95
+ "critical": {
96
+ "$value": "#FF4D4D",
97
+ "$type": "color",
98
+ "$description": "Error / verification failure / destructive action — bright decorative accent. Fails WCAG AA as text on light surfaces; use critical-strong for readable fg/border.",
99
+ "$extensions": {
100
+ "com.verdify.print": {
101
+ "cmyk": "0,70,70,0",
102
+ "pantone": "PANTONE 178 C"
103
+ }
104
+ }
105
+ },
106
+ "critical-strong": {
107
+ "$value": "#BE3939",
108
+ "$type": "color",
109
+ "$description": "Critical, darkened to WCAG AA — in-hue luminance shift of critical; 4.63:1 on Mist-200 (#E8ECF4). Status chip foreground/border.",
110
+ "$extensions": {
111
+ "com.verdify.print": {
112
+ "cmyk": "0,70,70,25",
113
+ "pantone": "PANTONE 178 C"
114
+ }
115
+ }
116
+ }
117
+ }
118
+ }
119
+ }
120
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "radius": {
3
+ "none": { "$value": "0", "$type": "dimension", "$description": "No border radius — squared corners" },
4
+ "sm": { "$value": "0.25rem", "$type": "dimension", "$description": "Small radius (4px) — inputs, chips" },
5
+ "md": { "$value": "0.5rem", "$type": "dimension", "$description": "Medium radius (8px) — buttons, cards" },
6
+ "lg": { "$value": "0.75rem", "$type": "dimension", "$description": "Large radius (12px) — modals, sheets" },
7
+ "xl": { "$value": "1rem", "$type": "dimension", "$description": "Extra large radius (16px) — feature surfaces" },
8
+ "full": { "$value": "9999px", "$type": "dimension", "$description": "Full radius — pills, circular avatars" }
9
+ }
10
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "shadow": {
3
+ "none": {
4
+ "$value": "none",
5
+ "$type": "shadow",
6
+ "$description": "No shadow"
7
+ },
8
+ "sm": {
9
+ "$value": "0 1px 2px 0 rgb(11 15 25 / 0.05)",
10
+ "$type": "shadow",
11
+ "$description": "Subtle elevation — inputs, low cards"
12
+ },
13
+ "md": {
14
+ "$value": "0 4px 6px -1px rgb(11 15 25 / 0.08), 0 2px 4px -2px rgb(11 15 25 / 0.08)",
15
+ "$type": "shadow",
16
+ "$description": "Standard elevation — raised cards, dropdowns"
17
+ },
18
+ "lg": {
19
+ "$value": "0 10px 15px -3px rgb(11 15 25 / 0.10), 0 4px 6px -4px rgb(11 15 25 / 0.10)",
20
+ "$type": "shadow",
21
+ "$description": "Strong elevation — popovers, sheets"
22
+ },
23
+ "xl": {
24
+ "$value": "0 20px 25px -5px rgb(11 15 25 / 0.10), 0 8px 10px -6px rgb(11 15 25 / 0.10)",
25
+ "$type": "shadow",
26
+ "$description": "Hero elevation — modals, feature emphasis. Max opacity (brand-voice ceiling)."
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "size": {
3
+ "icon": {
4
+ "sm": { "$value": "1rem", "$type": "dimension", "$description": "Small icon (16px) — inline, captions" },
5
+ "md": { "$value": "1.25rem", "$type": "dimension", "$description": "Medium icon (20px) — buttons, inline body" },
6
+ "lg": { "$value": "1.5rem", "$type": "dimension", "$description": "Large icon (24px) — primary actions, headers" },
7
+ "xl": { "$value": "2rem", "$type": "dimension", "$description": "Extra large icon (32px) — feature emphasis" }
8
+ },
9
+ "target": {
10
+ "mobile": { "$value": "2.75rem", "$type": "dimension", "$description": "Mobile minimum tap target (44px). Per WCAG 2.5.5 and Apple HIG." },
11
+ "desktop": { "$value": "2.5rem", "$type": "dimension", "$description": "Desktop minimum click target (40px). Per Material Design." }
12
+ }
13
+ }
14
+ }