@pepperui/tokens 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +101 -0
- package/dist/_tokens.scss +348 -0
- package/dist/figma.json +4503 -0
- package/dist/pepper_tokens.py +819 -0
- package/dist/shadcn.css +125 -0
- package/dist/tailwind.css +213 -0
- package/dist/tailwind.js +214 -0
- package/dist/tokens.css +573 -0
- package/package.json +24 -0
package/dist/figma.json
ADDED
|
@@ -0,0 +1,4503 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "GENERATED from tokens/*.json by npm run build. Imported by scripts/figma_import.mjs. Figma variables are COLOR / FLOAT / STRING / BOOLEAN only.",
|
|
3
|
+
"collections": {
|
|
4
|
+
"Primitives": {
|
|
5
|
+
"modes": [
|
|
6
|
+
"Value"
|
|
7
|
+
],
|
|
8
|
+
"variables": [
|
|
9
|
+
{
|
|
10
|
+
"name": "color/neutral/0",
|
|
11
|
+
"type": "COLOR",
|
|
12
|
+
"values": {
|
|
13
|
+
"Value": "#ffffff"
|
|
14
|
+
},
|
|
15
|
+
"scopes": [
|
|
16
|
+
"ALL_FILLS",
|
|
17
|
+
"STROKE_COLOR"
|
|
18
|
+
],
|
|
19
|
+
"description": "S5 --color-neutral-0. Page surface."
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"name": "color/neutral/100",
|
|
23
|
+
"type": "COLOR",
|
|
24
|
+
"values": {
|
|
25
|
+
"Value": "#f2f2f2"
|
|
26
|
+
},
|
|
27
|
+
"scopes": [
|
|
28
|
+
"ALL_FILLS",
|
|
29
|
+
"STROKE_COLOR"
|
|
30
|
+
],
|
|
31
|
+
"description": "S5 --color-neutral-100. NOT the card surface - see color.light-blue.100, a deliberately separate value (D5)."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "color/neutral/200",
|
|
35
|
+
"type": "COLOR",
|
|
36
|
+
"values": {
|
|
37
|
+
"Value": "#dad9d9"
|
|
38
|
+
},
|
|
39
|
+
"scopes": [
|
|
40
|
+
"ALL_FILLS",
|
|
41
|
+
"STROKE_COLOR"
|
|
42
|
+
],
|
|
43
|
+
"description": "S5 --color-neutral-200. Default border."
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"name": "color/neutral/300",
|
|
47
|
+
"type": "COLOR",
|
|
48
|
+
"values": {
|
|
49
|
+
"Value": "#b5b3b3"
|
|
50
|
+
},
|
|
51
|
+
"scopes": [
|
|
52
|
+
"ALL_FILLS",
|
|
53
|
+
"STROKE_COLOR"
|
|
54
|
+
],
|
|
55
|
+
"description": "S5 --color-neutral-300. Too pale to be a heading ink - Fedor 2026-08-05, which is why rule U12 uses 400."
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"name": "color/neutral/400",
|
|
59
|
+
"type": "COLOR",
|
|
60
|
+
"values": {
|
|
61
|
+
"Value": "#858080"
|
|
62
|
+
},
|
|
63
|
+
"scopes": [
|
|
64
|
+
"ALL_FILLS",
|
|
65
|
+
"STROKE_COLOR"
|
|
66
|
+
],
|
|
67
|
+
"description": "S5 --color-neutral-400. Every grey subheading in the system reads this ink (U12)."
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"name": "color/neutral/500",
|
|
71
|
+
"type": "COLOR",
|
|
72
|
+
"values": {
|
|
73
|
+
"Value": "#6c6666"
|
|
74
|
+
},
|
|
75
|
+
"scopes": [
|
|
76
|
+
"ALL_FILLS",
|
|
77
|
+
"STROKE_COLOR"
|
|
78
|
+
],
|
|
79
|
+
"description": "DERIVED, not quoted. OKLab midpoint of 400 and 600 - scripts/derive_neutrals.py. D4 asked for this step; no source file has it."
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"name": "color/neutral/600",
|
|
83
|
+
"type": "COLOR",
|
|
84
|
+
"values": {
|
|
85
|
+
"Value": "#544d4d"
|
|
86
|
+
},
|
|
87
|
+
"scopes": [
|
|
88
|
+
"ALL_FILLS",
|
|
89
|
+
"STROKE_COLOR"
|
|
90
|
+
],
|
|
91
|
+
"description": "S5 --color-neutral-600. Muted text."
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"name": "color/neutral/700",
|
|
95
|
+
"type": "COLOR",
|
|
96
|
+
"values": {
|
|
97
|
+
"Value": "#3b3333"
|
|
98
|
+
},
|
|
99
|
+
"scopes": [
|
|
100
|
+
"ALL_FILLS",
|
|
101
|
+
"STROKE_COLOR"
|
|
102
|
+
],
|
|
103
|
+
"description": "DERIVED, not quoted. OKLab midpoint of 600 and 800 - scripts/derive_neutrals.py. D4 asked for this step; no source file has it."
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"name": "color/neutral/800",
|
|
107
|
+
"type": "COLOR",
|
|
108
|
+
"values": {
|
|
109
|
+
"Value": "#231b1b"
|
|
110
|
+
},
|
|
111
|
+
"scopes": [
|
|
112
|
+
"ALL_FILLS",
|
|
113
|
+
"STROKE_COLOR"
|
|
114
|
+
],
|
|
115
|
+
"description": "S5 --color-neutral-800. Inverse surface; the multicolor table header (Fedor 2026-07-15)."
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
"name": "color/neutral/900",
|
|
119
|
+
"type": "COLOR",
|
|
120
|
+
"values": {
|
|
121
|
+
"Value": "#0b0202"
|
|
122
|
+
},
|
|
123
|
+
"scopes": [
|
|
124
|
+
"ALL_FILLS",
|
|
125
|
+
"STROKE_COLOR"
|
|
126
|
+
],
|
|
127
|
+
"description": "S5 --color-neutral-darkest, S1 --ink. D4: this is text.default. It absorbs the two other blacks, #141414 (--mobupps-black) and #171717 (--color-btn-primary-bg), unless a visual test shows a difference worth its own token."
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"name": "color/neutral/1000",
|
|
131
|
+
"type": "COLOR",
|
|
132
|
+
"values": {
|
|
133
|
+
"Value": "#000000"
|
|
134
|
+
},
|
|
135
|
+
"scopes": [
|
|
136
|
+
"ALL_FILLS",
|
|
137
|
+
"STROKE_COLOR"
|
|
138
|
+
],
|
|
139
|
+
"description": "S5 --color-neutral-1000. D4 reserves pure black for masks and print. Not a text colour."
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"name": "color/blue/100",
|
|
143
|
+
"type": "COLOR",
|
|
144
|
+
"values": {
|
|
145
|
+
"Value": "#e9e9fb"
|
|
146
|
+
},
|
|
147
|
+
"scopes": [
|
|
148
|
+
"ALL_FILLS",
|
|
149
|
+
"STROKE_COLOR"
|
|
150
|
+
],
|
|
151
|
+
"description": "S5 --color-blue-100 / S1 --blue-bg. accent.bg in blue mode."
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"name": "color/blue/200",
|
|
155
|
+
"type": "COLOR",
|
|
156
|
+
"values": {
|
|
157
|
+
"Value": "#d4d3f7"
|
|
158
|
+
},
|
|
159
|
+
"scopes": [
|
|
160
|
+
"ALL_FILLS",
|
|
161
|
+
"STROKE_COLOR"
|
|
162
|
+
],
|
|
163
|
+
"description": "S5 --color-blue-200 / S1 --blue-lighter."
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"name": "color/blue/300",
|
|
167
|
+
"type": "COLOR",
|
|
168
|
+
"values": {
|
|
169
|
+
"Value": "#6a66e4"
|
|
170
|
+
},
|
|
171
|
+
"scopes": [
|
|
172
|
+
"ALL_FILLS",
|
|
173
|
+
"STROKE_COLOR"
|
|
174
|
+
],
|
|
175
|
+
"description": "S5 --color-blue-300 / S1 --blue-light. Subtitle ink and icon-list glyph ink in blue mode."
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"name": "color/blue/400",
|
|
179
|
+
"type": "COLOR",
|
|
180
|
+
"values": {
|
|
181
|
+
"Value": "#2b25d9"
|
|
182
|
+
},
|
|
183
|
+
"scopes": [
|
|
184
|
+
"ALL_FILLS",
|
|
185
|
+
"STROKE_COLOR"
|
|
186
|
+
],
|
|
187
|
+
"description": "S5 --color-blue-400 / S1 --persian-blue. Brand main."
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"name": "color/blue/500",
|
|
191
|
+
"type": "COLOR",
|
|
192
|
+
"values": {
|
|
193
|
+
"Value": "#221dad"
|
|
194
|
+
},
|
|
195
|
+
"scopes": [
|
|
196
|
+
"ALL_FILLS",
|
|
197
|
+
"STROKE_COLOR"
|
|
198
|
+
],
|
|
199
|
+
"description": "S5 --color-blue-500."
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"name": "color/blue/600",
|
|
203
|
+
"type": "COLOR",
|
|
204
|
+
"values": {
|
|
205
|
+
"Value": "#110e56"
|
|
206
|
+
},
|
|
207
|
+
"scopes": [
|
|
208
|
+
"ALL_FILLS",
|
|
209
|
+
"STROKE_COLOR"
|
|
210
|
+
],
|
|
211
|
+
"description": "S5 --color-blue-600 / S1 --blue-dark."
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
"name": "color/blue/700",
|
|
215
|
+
"type": "COLOR",
|
|
216
|
+
"values": {
|
|
217
|
+
"Value": "#0c0b41"
|
|
218
|
+
},
|
|
219
|
+
"scopes": [
|
|
220
|
+
"ALL_FILLS",
|
|
221
|
+
"STROKE_COLOR"
|
|
222
|
+
],
|
|
223
|
+
"description": "S5 --color-blue-700 / S1 --blue-darkest. Table header bar in blue mode."
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
"name": "color/red/100",
|
|
227
|
+
"type": "COLOR",
|
|
228
|
+
"values": {
|
|
229
|
+
"Value": "#fce9e8"
|
|
230
|
+
},
|
|
231
|
+
"scopes": [
|
|
232
|
+
"ALL_FILLS",
|
|
233
|
+
"STROKE_COLOR"
|
|
234
|
+
],
|
|
235
|
+
"description": "S5 --color-red-100 / S1 --red-bg."
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
"name": "color/red/200",
|
|
239
|
+
"type": "COLOR",
|
|
240
|
+
"values": {
|
|
241
|
+
"Value": "#f9d3d2"
|
|
242
|
+
},
|
|
243
|
+
"scopes": [
|
|
244
|
+
"ALL_FILLS",
|
|
245
|
+
"STROKE_COLOR"
|
|
246
|
+
],
|
|
247
|
+
"description": "S5 --color-red-200 / S1 --red-lighter."
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
"name": "color/red/300",
|
|
251
|
+
"type": "COLOR",
|
|
252
|
+
"values": {
|
|
253
|
+
"Value": "#ec6663"
|
|
254
|
+
},
|
|
255
|
+
"scopes": [
|
|
256
|
+
"ALL_FILLS",
|
|
257
|
+
"STROKE_COLOR"
|
|
258
|
+
],
|
|
259
|
+
"description": "S5 --color-red-300 / S1 --red-light. Subtitle ink in red mode - scores 2.83 on the card surface against a 3.0 floor, accepted as an exception by D18, not a defect."
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"name": "color/red/400",
|
|
263
|
+
"type": "COLOR",
|
|
264
|
+
"values": {
|
|
265
|
+
"Value": "#e42521"
|
|
266
|
+
},
|
|
267
|
+
"scopes": [
|
|
268
|
+
"ALL_FILLS",
|
|
269
|
+
"STROKE_COLOR"
|
|
270
|
+
],
|
|
271
|
+
"description": "S5 --color-red-400 / S1 --crimson. Brand main, and the logo fill (D19 binds the mark to this so it cannot drift again)."
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
"name": "color/red/500",
|
|
275
|
+
"type": "COLOR",
|
|
276
|
+
"values": {
|
|
277
|
+
"Value": "#b61d1a"
|
|
278
|
+
},
|
|
279
|
+
"scopes": [
|
|
280
|
+
"ALL_FILLS",
|
|
281
|
+
"STROKE_COLOR"
|
|
282
|
+
],
|
|
283
|
+
"description": "S5 --color-red-500."
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
"name": "color/red/600",
|
|
287
|
+
"type": "COLOR",
|
|
288
|
+
"values": {
|
|
289
|
+
"Value": "#5b0e0d"
|
|
290
|
+
},
|
|
291
|
+
"scopes": [
|
|
292
|
+
"ALL_FILLS",
|
|
293
|
+
"STROKE_COLOR"
|
|
294
|
+
],
|
|
295
|
+
"description": "S5 --color-red-600 / S1 --red-dark."
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
"name": "color/red/700",
|
|
299
|
+
"type": "COLOR",
|
|
300
|
+
"values": {
|
|
301
|
+
"Value": "#440b09"
|
|
302
|
+
},
|
|
303
|
+
"scopes": [
|
|
304
|
+
"ALL_FILLS",
|
|
305
|
+
"STROKE_COLOR"
|
|
306
|
+
],
|
|
307
|
+
"description": "S5 --color-red-700 / S1 --red-darkest. Table header bar in red mode."
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
"name": "color/yellow/100",
|
|
311
|
+
"type": "COLOR",
|
|
312
|
+
"values": {
|
|
313
|
+
"Value": "#fef9e9"
|
|
314
|
+
},
|
|
315
|
+
"scopes": [
|
|
316
|
+
"ALL_FILLS",
|
|
317
|
+
"STROKE_COLOR"
|
|
318
|
+
],
|
|
319
|
+
"description": "S5 --color-yellow-100 / S1 --yellow-bg."
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
"name": "color/yellow/200",
|
|
323
|
+
"type": "COLOR",
|
|
324
|
+
"values": {
|
|
325
|
+
"Value": "#fdf3d3"
|
|
326
|
+
},
|
|
327
|
+
"scopes": [
|
|
328
|
+
"ALL_FILLS",
|
|
329
|
+
"STROKE_COLOR"
|
|
330
|
+
],
|
|
331
|
+
"description": "S5 --color-yellow-200 / S1 --yellow-lighter."
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
"name": "color/yellow/300",
|
|
335
|
+
"type": "COLOR",
|
|
336
|
+
"values": {
|
|
337
|
+
"Value": "#fad567"
|
|
338
|
+
},
|
|
339
|
+
"scopes": [
|
|
340
|
+
"ALL_FILLS",
|
|
341
|
+
"STROKE_COLOR"
|
|
342
|
+
],
|
|
343
|
+
"description": "S5 --color-yellow-300 / S1 --yellow-light. Too pale for a 24px glyph, which is why the icon list keeps the main hue in yellow mode (Fedor 2026-08-10)."
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
"name": "color/yellow/400",
|
|
347
|
+
"type": "COLOR",
|
|
348
|
+
"values": {
|
|
349
|
+
"Value": "#f9c426"
|
|
350
|
+
},
|
|
351
|
+
"scopes": [
|
|
352
|
+
"ALL_FILLS",
|
|
353
|
+
"STROKE_COLOR"
|
|
354
|
+
],
|
|
355
|
+
"description": "S5 --color-yellow-400 / S1 --yellow. Brand main."
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
"name": "color/yellow/500",
|
|
359
|
+
"type": "COLOR",
|
|
360
|
+
"values": {
|
|
361
|
+
"Value": "#c79c1e"
|
|
362
|
+
},
|
|
363
|
+
"scopes": [
|
|
364
|
+
"ALL_FILLS",
|
|
365
|
+
"STROKE_COLOR"
|
|
366
|
+
],
|
|
367
|
+
"description": "S5 --color-yellow-500. Dark enough to carry status.warning text."
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
"name": "color/yellow/600",
|
|
371
|
+
"type": "COLOR",
|
|
372
|
+
"values": {
|
|
373
|
+
"Value": "#634e0f"
|
|
374
|
+
},
|
|
375
|
+
"scopes": [
|
|
376
|
+
"ALL_FILLS",
|
|
377
|
+
"STROKE_COLOR"
|
|
378
|
+
],
|
|
379
|
+
"description": "S5 --color-yellow-600 / S1 --yellow-dark."
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
"name": "color/yellow/700",
|
|
383
|
+
"type": "COLOR",
|
|
384
|
+
"values": {
|
|
385
|
+
"Value": "#4a3a0b"
|
|
386
|
+
},
|
|
387
|
+
"scopes": [
|
|
388
|
+
"ALL_FILLS",
|
|
389
|
+
"STROKE_COLOR"
|
|
390
|
+
],
|
|
391
|
+
"description": "S5 --color-yellow-700 / S1 --yellow-darkest. Table header bar in yellow mode."
|
|
392
|
+
},
|
|
393
|
+
{
|
|
394
|
+
"name": "color/green/100",
|
|
395
|
+
"type": "COLOR",
|
|
396
|
+
"values": {
|
|
397
|
+
"Value": "#d4f2de"
|
|
398
|
+
},
|
|
399
|
+
"scopes": [
|
|
400
|
+
"ALL_FILLS",
|
|
401
|
+
"STROKE_COLOR"
|
|
402
|
+
],
|
|
403
|
+
"description": "S1 --green-bg. Success badge background (slide.css:287, app.css:96)."
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
"name": "color/green/400",
|
|
407
|
+
"type": "COLOR",
|
|
408
|
+
"values": {
|
|
409
|
+
"Value": "#74af36"
|
|
410
|
+
},
|
|
411
|
+
"scopes": [
|
|
412
|
+
"ALL_FILLS",
|
|
413
|
+
"STROKE_COLOR"
|
|
414
|
+
],
|
|
415
|
+
"description": "S5 --color-status-green-light. The site's solid status green."
|
|
416
|
+
},
|
|
417
|
+
{
|
|
418
|
+
"name": "color/green/600",
|
|
419
|
+
"type": "COLOR",
|
|
420
|
+
"values": {
|
|
421
|
+
"Value": "#1a6b36"
|
|
422
|
+
},
|
|
423
|
+
"scopes": [
|
|
424
|
+
"ALL_FILLS",
|
|
425
|
+
"STROKE_COLOR"
|
|
426
|
+
],
|
|
427
|
+
"description": "S1 --green. Success badge text, read on green.100 (slide.css:287)."
|
|
428
|
+
},
|
|
429
|
+
{
|
|
430
|
+
"name": "color/status/danger",
|
|
431
|
+
"type": "COLOR",
|
|
432
|
+
"values": {
|
|
433
|
+
"Value": "#da4144"
|
|
434
|
+
},
|
|
435
|
+
"scopes": [
|
|
436
|
+
"ALL_FILLS",
|
|
437
|
+
"STROKE_COLOR"
|
|
438
|
+
],
|
|
439
|
+
"description": "S5 --color-status-red-light. NOT color.red.400 (#e42521) - G2 flagged these as one name over two values, and they are two jobs: this is the error state, #e42521 is the brand mark. Both survive."
|
|
440
|
+
},
|
|
441
|
+
{
|
|
442
|
+
"name": "color/light-blue/50",
|
|
443
|
+
"type": "COLOR",
|
|
444
|
+
"values": {
|
|
445
|
+
"Value": "#fbfbfd"
|
|
446
|
+
},
|
|
447
|
+
"scopes": [
|
|
448
|
+
"ALL_FILLS",
|
|
449
|
+
"STROKE_COLOR"
|
|
450
|
+
],
|
|
451
|
+
"description": "The illustrations' screen near-white (D120): the TV, phone and laptop screens, one step lighter and bluer than 100. Not white, because a screen has no outline of its own, so in white it takes the colour of the shell around it and its edge disappears; not 100, which reads visibly greyer. Its one role is illustration/screen."
|
|
452
|
+
},
|
|
453
|
+
{
|
|
454
|
+
"name": "color/light-blue/100",
|
|
455
|
+
"type": "COLOR",
|
|
456
|
+
"values": {
|
|
457
|
+
"Value": "#f2f2f7"
|
|
458
|
+
},
|
|
459
|
+
"scopes": [
|
|
460
|
+
"ALL_FILLS",
|
|
461
|
+
"STROKE_COLOR"
|
|
462
|
+
],
|
|
463
|
+
"description": "S5 --color-light-blue-100 / S1 --card-bg. The card surface."
|
|
464
|
+
},
|
|
465
|
+
{
|
|
466
|
+
"name": "color/gradient-stop/pink",
|
|
467
|
+
"type": "COLOR",
|
|
468
|
+
"values": {
|
|
469
|
+
"Value": "#f24288"
|
|
470
|
+
},
|
|
471
|
+
"scopes": [
|
|
472
|
+
"ALL_FILLS",
|
|
473
|
+
"STROKE_COLOR"
|
|
474
|
+
],
|
|
475
|
+
"description": "S1 --grad-blue far stop."
|
|
476
|
+
},
|
|
477
|
+
{
|
|
478
|
+
"name": "color/gradient-stop/orchid",
|
|
479
|
+
"type": "COLOR",
|
|
480
|
+
"values": {
|
|
481
|
+
"Value": "#ebb8fc"
|
|
482
|
+
},
|
|
483
|
+
"scopes": [
|
|
484
|
+
"ALL_FILLS",
|
|
485
|
+
"STROKE_COLOR"
|
|
486
|
+
],
|
|
487
|
+
"description": "S1 --grad-yellow near stop."
|
|
488
|
+
},
|
|
489
|
+
{
|
|
490
|
+
"name": "color/gradient-stop/magenta",
|
|
491
|
+
"type": "COLOR",
|
|
492
|
+
"values": {
|
|
493
|
+
"Value": "#d947d6"
|
|
494
|
+
},
|
|
495
|
+
"scopes": [
|
|
496
|
+
"ALL_FILLS",
|
|
497
|
+
"STROKE_COLOR"
|
|
498
|
+
],
|
|
499
|
+
"description": "S1 --grad-red far stop."
|
|
500
|
+
},
|
|
501
|
+
{
|
|
502
|
+
"name": "color/alpha/neutral-800-50",
|
|
503
|
+
"type": "COLOR",
|
|
504
|
+
"values": {
|
|
505
|
+
"Value": "#231b1b80"
|
|
506
|
+
},
|
|
507
|
+
"scopes": [
|
|
508
|
+
"ALL_FILLS",
|
|
509
|
+
"STROKE_COLOR"
|
|
510
|
+
],
|
|
511
|
+
"description": "neutral.800 at 50%. Added 2026-09-07 for the Dialog scrim: Paggy uses ink at 45% (app.css .modal-scrim rgba(11,2,2,.45)), the site neutral-800 at 66% with a blur (home-popup.css .cookie-consent), shadcn black/50 - the middle value on the house dark."
|
|
512
|
+
},
|
|
513
|
+
{
|
|
514
|
+
"name": "color/alpha/white-8",
|
|
515
|
+
"type": "COLOR",
|
|
516
|
+
"values": {
|
|
517
|
+
"Value": "#ffffff14"
|
|
518
|
+
},
|
|
519
|
+
"scopes": [
|
|
520
|
+
"ALL_FILLS",
|
|
521
|
+
"STROKE_COLOR"
|
|
522
|
+
],
|
|
523
|
+
"description": "White at 8% — the hover wash on a dark rail. Paggy app.css:563 .anav-item:hover background rgba(255,255,255,.08) and :1823 .mtr-secnav button:hover; the concept's 'Hover white 8%' (design-rules §B). Added 2026-09-07 for Sidebar."
|
|
524
|
+
},
|
|
525
|
+
{
|
|
526
|
+
"name": "color/alpha/white-16",
|
|
527
|
+
"type": "COLOR",
|
|
528
|
+
"values": {
|
|
529
|
+
"Value": "#ffffff29"
|
|
530
|
+
},
|
|
531
|
+
"scopes": [
|
|
532
|
+
"ALL_FILLS",
|
|
533
|
+
"STROKE_COLOR"
|
|
534
|
+
],
|
|
535
|
+
"description": "White at 16% — the active wash on a dark rail and the glass of the user card. Paggy app.css:564 .anav-item.active rgba(255,255,255,.16) and :1688; the concept's 'Active white 16%'. Added 2026-09-07 for Sidebar."
|
|
536
|
+
},
|
|
537
|
+
{
|
|
538
|
+
"name": "color/alpha/black-7",
|
|
539
|
+
"type": "COLOR",
|
|
540
|
+
"values": {
|
|
541
|
+
"Value": "#00000012"
|
|
542
|
+
},
|
|
543
|
+
"scopes": [
|
|
544
|
+
"ALL_FILLS",
|
|
545
|
+
"STROKE_COLOR"
|
|
546
|
+
],
|
|
547
|
+
"description": "Black at 7% — the chart grid line. Paggy charts.js:17 GRID rgba(0,0,0,0.07) (the light horizontal grid under every bar and line chart; DESIGN_SYSTEM.md §Chart rules). 0x12 = 18/255 = 7.06%. Added 2026-09-07 for Chart recipes."
|
|
548
|
+
},
|
|
549
|
+
{
|
|
550
|
+
"name": "color/alpha/grey-232-49",
|
|
551
|
+
"type": "COLOR",
|
|
552
|
+
"values": {
|
|
553
|
+
"Value": "#e8e8e87d"
|
|
554
|
+
},
|
|
555
|
+
"scopes": [
|
|
556
|
+
"ALL_FILLS",
|
|
557
|
+
"STROKE_COLOR"
|
|
558
|
+
],
|
|
559
|
+
"description": "rgb(232,232,232) at 49% - the site's navigation-bar frost, global-2026.css:159 .main-nav background rgba(232,232,232,.49). 232 is not a ramp step; the site's value is kept exactly (D42, 2026-09-07)."
|
|
560
|
+
},
|
|
561
|
+
{
|
|
562
|
+
"name": "color/alpha/white-71",
|
|
563
|
+
"type": "COLOR",
|
|
564
|
+
"values": {
|
|
565
|
+
"Value": "#ffffffb5"
|
|
566
|
+
},
|
|
567
|
+
"scopes": [
|
|
568
|
+
"ALL_FILLS",
|
|
569
|
+
"STROKE_COLOR"
|
|
570
|
+
],
|
|
571
|
+
"description": "White at 71% - the site's products panel frost, global-2026.css:208 .nav-dropdown background rgba(255,255,255,.71) (D42, 2026-09-07)."
|
|
572
|
+
},
|
|
573
|
+
{
|
|
574
|
+
"name": "space/2",
|
|
575
|
+
"type": "FLOAT",
|
|
576
|
+
"values": {
|
|
577
|
+
"Value": 2
|
|
578
|
+
},
|
|
579
|
+
"scopes": [
|
|
580
|
+
"GAP",
|
|
581
|
+
"WIDTH_HEIGHT"
|
|
582
|
+
],
|
|
583
|
+
"description": ""
|
|
584
|
+
},
|
|
585
|
+
{
|
|
586
|
+
"name": "space/4",
|
|
587
|
+
"type": "FLOAT",
|
|
588
|
+
"values": {
|
|
589
|
+
"Value": 4
|
|
590
|
+
},
|
|
591
|
+
"scopes": [
|
|
592
|
+
"GAP",
|
|
593
|
+
"WIDTH_HEIGHT"
|
|
594
|
+
],
|
|
595
|
+
"description": ""
|
|
596
|
+
},
|
|
597
|
+
{
|
|
598
|
+
"name": "space/8",
|
|
599
|
+
"type": "FLOAT",
|
|
600
|
+
"values": {
|
|
601
|
+
"Value": 8
|
|
602
|
+
},
|
|
603
|
+
"scopes": [
|
|
604
|
+
"GAP",
|
|
605
|
+
"WIDTH_HEIGHT"
|
|
606
|
+
],
|
|
607
|
+
"description": "Locked: the bullet-list gap. A rule with a test behind it (G19)."
|
|
608
|
+
},
|
|
609
|
+
{
|
|
610
|
+
"name": "space/12",
|
|
611
|
+
"type": "FLOAT",
|
|
612
|
+
"values": {
|
|
613
|
+
"Value": 12
|
|
614
|
+
},
|
|
615
|
+
"scopes": [
|
|
616
|
+
"GAP",
|
|
617
|
+
"WIDTH_HEIGHT"
|
|
618
|
+
],
|
|
619
|
+
"description": "S1 --card-gap, between items inside a card."
|
|
620
|
+
},
|
|
621
|
+
{
|
|
622
|
+
"name": "space/16",
|
|
623
|
+
"type": "FLOAT",
|
|
624
|
+
"values": {
|
|
625
|
+
"Value": 16
|
|
626
|
+
},
|
|
627
|
+
"scopes": [
|
|
628
|
+
"GAP",
|
|
629
|
+
"WIDTH_HEIGHT"
|
|
630
|
+
],
|
|
631
|
+
"description": ""
|
|
632
|
+
},
|
|
633
|
+
{
|
|
634
|
+
"name": "space/20",
|
|
635
|
+
"type": "FLOAT",
|
|
636
|
+
"values": {
|
|
637
|
+
"Value": 20
|
|
638
|
+
},
|
|
639
|
+
"scopes": [
|
|
640
|
+
"GAP",
|
|
641
|
+
"WIDTH_HEIGHT"
|
|
642
|
+
],
|
|
643
|
+
"description": "S1 --card-pad, inside cards."
|
|
644
|
+
},
|
|
645
|
+
{
|
|
646
|
+
"name": "space/24",
|
|
647
|
+
"type": "FLOAT",
|
|
648
|
+
"values": {
|
|
649
|
+
"Value": 24
|
|
650
|
+
},
|
|
651
|
+
"scopes": [
|
|
652
|
+
"GAP",
|
|
653
|
+
"WIDTH_HEIGHT"
|
|
654
|
+
],
|
|
655
|
+
"description": ""
|
|
656
|
+
},
|
|
657
|
+
{
|
|
658
|
+
"name": "space/32",
|
|
659
|
+
"type": "FLOAT",
|
|
660
|
+
"values": {
|
|
661
|
+
"Value": 32
|
|
662
|
+
},
|
|
663
|
+
"scopes": [
|
|
664
|
+
"GAP",
|
|
665
|
+
"WIDTH_HEIGHT"
|
|
666
|
+
],
|
|
667
|
+
"description": "S1 --gap-section, between content sections."
|
|
668
|
+
},
|
|
669
|
+
{
|
|
670
|
+
"name": "space/40",
|
|
671
|
+
"type": "FLOAT",
|
|
672
|
+
"values": {
|
|
673
|
+
"Value": 40
|
|
674
|
+
},
|
|
675
|
+
"scopes": [
|
|
676
|
+
"GAP",
|
|
677
|
+
"WIDTH_HEIGHT"
|
|
678
|
+
],
|
|
679
|
+
"description": ""
|
|
680
|
+
},
|
|
681
|
+
{
|
|
682
|
+
"name": "space/48",
|
|
683
|
+
"type": "FLOAT",
|
|
684
|
+
"values": {
|
|
685
|
+
"Value": 48
|
|
686
|
+
},
|
|
687
|
+
"scopes": [
|
|
688
|
+
"GAP",
|
|
689
|
+
"WIDTH_HEIGHT"
|
|
690
|
+
],
|
|
691
|
+
"description": ""
|
|
692
|
+
},
|
|
693
|
+
{
|
|
694
|
+
"name": "space/64",
|
|
695
|
+
"type": "FLOAT",
|
|
696
|
+
"values": {
|
|
697
|
+
"Value": 64
|
|
698
|
+
},
|
|
699
|
+
"scopes": [
|
|
700
|
+
"GAP",
|
|
701
|
+
"WIDTH_HEIGHT"
|
|
702
|
+
],
|
|
703
|
+
"description": "S1 --margin and --gap-heading. The slide outer margin."
|
|
704
|
+
},
|
|
705
|
+
{
|
|
706
|
+
"name": "space/80",
|
|
707
|
+
"type": "FLOAT",
|
|
708
|
+
"values": {
|
|
709
|
+
"Value": 80
|
|
710
|
+
},
|
|
711
|
+
"scopes": [
|
|
712
|
+
"GAP",
|
|
713
|
+
"WIDTH_HEIGHT"
|
|
714
|
+
],
|
|
715
|
+
"description": ""
|
|
716
|
+
},
|
|
717
|
+
{
|
|
718
|
+
"name": "radius/4",
|
|
719
|
+
"type": "FLOAT",
|
|
720
|
+
"values": {
|
|
721
|
+
"Value": 4
|
|
722
|
+
},
|
|
723
|
+
"scopes": [
|
|
724
|
+
"CORNER_RADIUS"
|
|
725
|
+
],
|
|
726
|
+
"description": "S5 --radius-xs."
|
|
727
|
+
},
|
|
728
|
+
{
|
|
729
|
+
"name": "radius/8",
|
|
730
|
+
"type": "FLOAT",
|
|
731
|
+
"values": {
|
|
732
|
+
"Value": 8
|
|
733
|
+
},
|
|
734
|
+
"scopes": [
|
|
735
|
+
"CORNER_RADIUS"
|
|
736
|
+
],
|
|
737
|
+
"description": "S5 --radius-sm."
|
|
738
|
+
},
|
|
739
|
+
{
|
|
740
|
+
"name": "radius/16",
|
|
741
|
+
"type": "FLOAT",
|
|
742
|
+
"values": {
|
|
743
|
+
"Value": 16
|
|
744
|
+
},
|
|
745
|
+
"scopes": [
|
|
746
|
+
"CORNER_RADIUS"
|
|
747
|
+
],
|
|
748
|
+
"description": "S5 --radius-md."
|
|
749
|
+
},
|
|
750
|
+
{
|
|
751
|
+
"name": "radius/32",
|
|
752
|
+
"type": "FLOAT",
|
|
753
|
+
"values": {
|
|
754
|
+
"Value": 32
|
|
755
|
+
},
|
|
756
|
+
"scopes": [
|
|
757
|
+
"CORNER_RADIUS"
|
|
758
|
+
],
|
|
759
|
+
"description": "S5 --radius-lg."
|
|
760
|
+
},
|
|
761
|
+
{
|
|
762
|
+
"name": "radius/64",
|
|
763
|
+
"type": "FLOAT",
|
|
764
|
+
"values": {
|
|
765
|
+
"Value": 64
|
|
766
|
+
},
|
|
767
|
+
"scopes": [
|
|
768
|
+
"CORNER_RADIUS"
|
|
769
|
+
],
|
|
770
|
+
"description": "S5 --radius-xl."
|
|
771
|
+
},
|
|
772
|
+
{
|
|
773
|
+
"name": "radius/full",
|
|
774
|
+
"type": "FLOAT",
|
|
775
|
+
"values": {
|
|
776
|
+
"Value": 9999
|
|
777
|
+
},
|
|
778
|
+
"scopes": [
|
|
779
|
+
"CORNER_RADIUS"
|
|
780
|
+
],
|
|
781
|
+
"description": "Labels are pills, actions are squares. Chips take this; buttons never do."
|
|
782
|
+
},
|
|
783
|
+
{
|
|
784
|
+
"name": "font/family/poppins",
|
|
785
|
+
"type": "STRING",
|
|
786
|
+
"values": {
|
|
787
|
+
"Value": "Poppins"
|
|
788
|
+
},
|
|
789
|
+
"scopes": [
|
|
790
|
+
"FONT_FAMILY"
|
|
791
|
+
],
|
|
792
|
+
"description": "The Latin family. S5 sets it for all five type roles; S1 embeds it locally for offline PDF export. Poppins carries no Cyrillic (Finding 16) - RU text sets in font.family.cyrillic (D39)."
|
|
793
|
+
},
|
|
794
|
+
{
|
|
795
|
+
"name": "font/family/cyrillic",
|
|
796
|
+
"type": "STRING",
|
|
797
|
+
"values": {
|
|
798
|
+
"Value": "Onest"
|
|
799
|
+
},
|
|
800
|
+
"scopes": [
|
|
801
|
+
"FONT_FAMILY"
|
|
802
|
+
],
|
|
803
|
+
"description": "The Cyrillic companion to Poppins - Fedor, 2026-09-07 (D39): 'we use Onest for cyrillic'. Onest (Google Fonts, OFL) carries Cyrillic in the same weights the system uses (400 / 500 / 600). Every type role keeps Poppins; a text in Russian - :lang(ru), or a RU deck - takes this family at the same size and weight. Closes Finding 16."
|
|
804
|
+
},
|
|
805
|
+
{
|
|
806
|
+
"name": "font/weight/400",
|
|
807
|
+
"type": "FLOAT",
|
|
808
|
+
"values": {
|
|
809
|
+
"Value": 400
|
|
810
|
+
},
|
|
811
|
+
"scopes": [
|
|
812
|
+
"FONT_WEIGHT"
|
|
813
|
+
],
|
|
814
|
+
"description": "Regular. Body text and the small headline; on a slide, body/small is Medium."
|
|
815
|
+
},
|
|
816
|
+
{
|
|
817
|
+
"name": "font/weight/500",
|
|
818
|
+
"type": "FLOAT",
|
|
819
|
+
"values": {
|
|
820
|
+
"Value": 500
|
|
821
|
+
},
|
|
822
|
+
"scopes": [
|
|
823
|
+
"FONT_WEIGHT"
|
|
824
|
+
],
|
|
825
|
+
"description": "Medium. The small title and the web's label; on a slide, body/small and the medium headline. SemiBold is a display weight, not a reading weight."
|
|
826
|
+
},
|
|
827
|
+
{
|
|
828
|
+
"name": "font/weight/600",
|
|
829
|
+
"type": "FLOAT",
|
|
830
|
+
"values": {
|
|
831
|
+
"Value": 600
|
|
832
|
+
},
|
|
833
|
+
"scopes": [
|
|
834
|
+
"FONT_WEIGHT"
|
|
835
|
+
],
|
|
836
|
+
"description": "SemiBold. Display, the large headline, the web's medium headline, and the large and medium titles. Never body text."
|
|
837
|
+
},
|
|
838
|
+
{
|
|
839
|
+
"name": "font/weight/700",
|
|
840
|
+
"type": "FLOAT",
|
|
841
|
+
"values": {
|
|
842
|
+
"Value": 700
|
|
843
|
+
},
|
|
844
|
+
"scopes": [
|
|
845
|
+
"FONT_WEIGHT"
|
|
846
|
+
],
|
|
847
|
+
"description": "Bold. Rare; reserved for emphasis inside display type."
|
|
848
|
+
},
|
|
849
|
+
{
|
|
850
|
+
"name": "font/size/12",
|
|
851
|
+
"type": "FLOAT",
|
|
852
|
+
"values": {
|
|
853
|
+
"Value": 12
|
|
854
|
+
},
|
|
855
|
+
"scopes": [
|
|
856
|
+
"FONT_SIZE"
|
|
857
|
+
],
|
|
858
|
+
"description": ""
|
|
859
|
+
},
|
|
860
|
+
{
|
|
861
|
+
"name": "font/size/13",
|
|
862
|
+
"type": "FLOAT",
|
|
863
|
+
"values": {
|
|
864
|
+
"Value": 13
|
|
865
|
+
},
|
|
866
|
+
"scopes": [
|
|
867
|
+
"FONT_SIZE"
|
|
868
|
+
],
|
|
869
|
+
"description": "Paggy app.css:597 table.admin td 13px - the product table cell (D45, 2026-09-08). The one size between 12 and 14; added because the admin table is a source, not rounded away."
|
|
870
|
+
},
|
|
871
|
+
{
|
|
872
|
+
"name": "font/size/14",
|
|
873
|
+
"type": "FLOAT",
|
|
874
|
+
"values": {
|
|
875
|
+
"Value": 14
|
|
876
|
+
},
|
|
877
|
+
"scopes": [
|
|
878
|
+
"FONT_SIZE"
|
|
879
|
+
],
|
|
880
|
+
"description": ""
|
|
881
|
+
},
|
|
882
|
+
{
|
|
883
|
+
"name": "font/size/15",
|
|
884
|
+
"type": "FLOAT",
|
|
885
|
+
"values": {
|
|
886
|
+
"Value": 15
|
|
887
|
+
},
|
|
888
|
+
"scopes": [
|
|
889
|
+
"FONT_SIZE"
|
|
890
|
+
],
|
|
891
|
+
"description": "S1 --fs-caption. The chart minimum - nothing on a slide goes smaller."
|
|
892
|
+
},
|
|
893
|
+
{
|
|
894
|
+
"name": "font/size/16",
|
|
895
|
+
"type": "FLOAT",
|
|
896
|
+
"values": {
|
|
897
|
+
"Value": 16
|
|
898
|
+
},
|
|
899
|
+
"scopes": [
|
|
900
|
+
"FONT_SIZE"
|
|
901
|
+
],
|
|
902
|
+
"description": ""
|
|
903
|
+
},
|
|
904
|
+
{
|
|
905
|
+
"name": "font/size/18",
|
|
906
|
+
"type": "FLOAT",
|
|
907
|
+
"values": {
|
|
908
|
+
"Value": 18
|
|
909
|
+
},
|
|
910
|
+
"scopes": [
|
|
911
|
+
"FONT_SIZE"
|
|
912
|
+
],
|
|
913
|
+
"description": ""
|
|
914
|
+
},
|
|
915
|
+
{
|
|
916
|
+
"name": "font/size/20",
|
|
917
|
+
"type": "FLOAT",
|
|
918
|
+
"values": {
|
|
919
|
+
"Value": 20
|
|
920
|
+
},
|
|
921
|
+
"scopes": [
|
|
922
|
+
"FONT_SIZE"
|
|
923
|
+
],
|
|
924
|
+
"description": ""
|
|
925
|
+
},
|
|
926
|
+
{
|
|
927
|
+
"name": "font/size/22",
|
|
928
|
+
"type": "FLOAT",
|
|
929
|
+
"values": {
|
|
930
|
+
"Value": 22
|
|
931
|
+
},
|
|
932
|
+
"scopes": [
|
|
933
|
+
"FONT_SIZE"
|
|
934
|
+
],
|
|
935
|
+
"description": ""
|
|
936
|
+
},
|
|
937
|
+
{
|
|
938
|
+
"name": "font/size/24",
|
|
939
|
+
"type": "FLOAT",
|
|
940
|
+
"values": {
|
|
941
|
+
"Value": 24
|
|
942
|
+
},
|
|
943
|
+
"scopes": [
|
|
944
|
+
"FONT_SIZE"
|
|
945
|
+
],
|
|
946
|
+
"description": "Paggy slide.css:729 .ctbl__cell--head font-size 24px - the deck table header bar, Poppins Medium on the accent-dark bar (D45, 2026-09-08)."
|
|
947
|
+
},
|
|
948
|
+
{
|
|
949
|
+
"name": "font/size/25",
|
|
950
|
+
"type": "FLOAT",
|
|
951
|
+
"values": {
|
|
952
|
+
"Value": 25
|
|
953
|
+
},
|
|
954
|
+
"scopes": [
|
|
955
|
+
"FONT_SIZE"
|
|
956
|
+
],
|
|
957
|
+
"description": ""
|
|
958
|
+
},
|
|
959
|
+
{
|
|
960
|
+
"name": "font/size/26",
|
|
961
|
+
"type": "FLOAT",
|
|
962
|
+
"values": {
|
|
963
|
+
"Value": 26
|
|
964
|
+
},
|
|
965
|
+
"scopes": [
|
|
966
|
+
"FONT_SIZE"
|
|
967
|
+
],
|
|
968
|
+
"description": "S1 --fs-body, --fs-h2 and --fs-card-title all land here."
|
|
969
|
+
},
|
|
970
|
+
{
|
|
971
|
+
"name": "font/size/28",
|
|
972
|
+
"type": "FLOAT",
|
|
973
|
+
"values": {
|
|
974
|
+
"Value": 28
|
|
975
|
+
},
|
|
976
|
+
"scopes": [
|
|
977
|
+
"FONT_SIZE"
|
|
978
|
+
],
|
|
979
|
+
"description": ""
|
|
980
|
+
},
|
|
981
|
+
{
|
|
982
|
+
"name": "font/size/32",
|
|
983
|
+
"type": "FLOAT",
|
|
984
|
+
"values": {
|
|
985
|
+
"Value": 32
|
|
986
|
+
},
|
|
987
|
+
"scopes": [
|
|
988
|
+
"FONT_SIZE"
|
|
989
|
+
],
|
|
990
|
+
"description": ""
|
|
991
|
+
},
|
|
992
|
+
{
|
|
993
|
+
"name": "font/size/36",
|
|
994
|
+
"type": "FLOAT",
|
|
995
|
+
"values": {
|
|
996
|
+
"Value": 36
|
|
997
|
+
},
|
|
998
|
+
"scopes": [
|
|
999
|
+
"FONT_SIZE"
|
|
1000
|
+
],
|
|
1001
|
+
"description": ""
|
|
1002
|
+
},
|
|
1003
|
+
{
|
|
1004
|
+
"name": "font/size/40",
|
|
1005
|
+
"type": "FLOAT",
|
|
1006
|
+
"values": {
|
|
1007
|
+
"Value": 40
|
|
1008
|
+
},
|
|
1009
|
+
"scopes": [
|
|
1010
|
+
"FONT_SIZE"
|
|
1011
|
+
],
|
|
1012
|
+
"description": ""
|
|
1013
|
+
},
|
|
1014
|
+
{
|
|
1015
|
+
"name": "font/size/41",
|
|
1016
|
+
"type": "FLOAT",
|
|
1017
|
+
"values": {
|
|
1018
|
+
"Value": 41
|
|
1019
|
+
},
|
|
1020
|
+
"scopes": [
|
|
1021
|
+
"FONT_SIZE"
|
|
1022
|
+
],
|
|
1023
|
+
"description": "S1 slide.css:563 - the deck's 41 px takeaway line (.l17-insight__text, Figma 8042:47). A SLIDE step only (D110, 2026-09-17); the web's small headline is 40."
|
|
1024
|
+
},
|
|
1025
|
+
{
|
|
1026
|
+
"name": "font/size/45",
|
|
1027
|
+
"type": "FLOAT",
|
|
1028
|
+
"values": {
|
|
1029
|
+
"Value": 45
|
|
1030
|
+
},
|
|
1031
|
+
"scopes": [
|
|
1032
|
+
"FONT_SIZE"
|
|
1033
|
+
],
|
|
1034
|
+
"description": ""
|
|
1035
|
+
},
|
|
1036
|
+
{
|
|
1037
|
+
"name": "font/size/46",
|
|
1038
|
+
"type": "FLOAT",
|
|
1039
|
+
"values": {
|
|
1040
|
+
"Value": 46
|
|
1041
|
+
},
|
|
1042
|
+
"scopes": [
|
|
1043
|
+
"FONT_SIZE"
|
|
1044
|
+
],
|
|
1045
|
+
"description": "S1 slide.css:75 - Figma H2_46, the deck's second heading style. A SLIDE step only (D110, 2026-09-17); the web's medium headline is 45."
|
|
1046
|
+
},
|
|
1047
|
+
{
|
|
1048
|
+
"name": "font/size/48",
|
|
1049
|
+
"type": "FLOAT",
|
|
1050
|
+
"values": {
|
|
1051
|
+
"Value": 48
|
|
1052
|
+
},
|
|
1053
|
+
"scopes": [
|
|
1054
|
+
"FONT_SIZE"
|
|
1055
|
+
],
|
|
1056
|
+
"description": ""
|
|
1057
|
+
},
|
|
1058
|
+
{
|
|
1059
|
+
"name": "font/size/64",
|
|
1060
|
+
"type": "FLOAT",
|
|
1061
|
+
"values": {
|
|
1062
|
+
"Value": 64
|
|
1063
|
+
},
|
|
1064
|
+
"scopes": [
|
|
1065
|
+
"FONT_SIZE"
|
|
1066
|
+
],
|
|
1067
|
+
"description": "S1 --fs-kpi."
|
|
1068
|
+
},
|
|
1069
|
+
{
|
|
1070
|
+
"name": "font/size/65",
|
|
1071
|
+
"type": "FLOAT",
|
|
1072
|
+
"values": {
|
|
1073
|
+
"Value": 65
|
|
1074
|
+
},
|
|
1075
|
+
"scopes": [
|
|
1076
|
+
"FONT_SIZE"
|
|
1077
|
+
],
|
|
1078
|
+
"description": "S5 --fs-headline-large. One px from S1's 66 - G5, and D9 makes the two the same token in different canvas modes rather than an unexplained discrepancy."
|
|
1079
|
+
},
|
|
1080
|
+
{
|
|
1081
|
+
"name": "font/size/66",
|
|
1082
|
+
"type": "FLOAT",
|
|
1083
|
+
"values": {
|
|
1084
|
+
"Value": 66
|
|
1085
|
+
},
|
|
1086
|
+
"scopes": [
|
|
1087
|
+
"FONT_SIZE"
|
|
1088
|
+
],
|
|
1089
|
+
"description": "S1 --fs-h1."
|
|
1090
|
+
},
|
|
1091
|
+
{
|
|
1092
|
+
"name": "font/size/92",
|
|
1093
|
+
"type": "FLOAT",
|
|
1094
|
+
"values": {
|
|
1095
|
+
"Value": 92
|
|
1096
|
+
},
|
|
1097
|
+
"scopes": [
|
|
1098
|
+
"FONT_SIZE"
|
|
1099
|
+
],
|
|
1100
|
+
"description": ""
|
|
1101
|
+
},
|
|
1102
|
+
{
|
|
1103
|
+
"name": "font/size/117",
|
|
1104
|
+
"type": "FLOAT",
|
|
1105
|
+
"values": {
|
|
1106
|
+
"Value": 117
|
|
1107
|
+
},
|
|
1108
|
+
"scopes": [
|
|
1109
|
+
"FONT_SIZE"
|
|
1110
|
+
],
|
|
1111
|
+
"description": ""
|
|
1112
|
+
},
|
|
1113
|
+
{
|
|
1114
|
+
"name": "font/size/148",
|
|
1115
|
+
"type": "FLOAT",
|
|
1116
|
+
"values": {
|
|
1117
|
+
"Value": 148
|
|
1118
|
+
},
|
|
1119
|
+
"scopes": [
|
|
1120
|
+
"FONT_SIZE"
|
|
1121
|
+
],
|
|
1122
|
+
"description": ""
|
|
1123
|
+
},
|
|
1124
|
+
{
|
|
1125
|
+
"name": "font/line-height/tight",
|
|
1126
|
+
"type": "FLOAT",
|
|
1127
|
+
"values": {
|
|
1128
|
+
"Value": 1.2
|
|
1129
|
+
},
|
|
1130
|
+
"scopes": [],
|
|
1131
|
+
"description": "Display and headline. S1 H1_66; S5 headline-small."
|
|
1132
|
+
},
|
|
1133
|
+
{
|
|
1134
|
+
"name": "font/line-height/normal",
|
|
1135
|
+
"type": "FLOAT",
|
|
1136
|
+
"values": {
|
|
1137
|
+
"Value": 1.4
|
|
1138
|
+
},
|
|
1139
|
+
"scopes": [],
|
|
1140
|
+
"description": "The browser's 'normal' for Poppins, pinned to a number so it cannot vary by engine. Verify against a render before Figma import."
|
|
1141
|
+
},
|
|
1142
|
+
{
|
|
1143
|
+
"name": "font/line-height/relaxed",
|
|
1144
|
+
"type": "FLOAT",
|
|
1145
|
+
"values": {
|
|
1146
|
+
"Value": 1.5
|
|
1147
|
+
},
|
|
1148
|
+
"scopes": [],
|
|
1149
|
+
"description": "S5 body-extra-small."
|
|
1150
|
+
},
|
|
1151
|
+
{
|
|
1152
|
+
"name": "font/line-height/loose",
|
|
1153
|
+
"type": "FLOAT",
|
|
1154
|
+
"values": {
|
|
1155
|
+
"Value": 1.7
|
|
1156
|
+
},
|
|
1157
|
+
"scopes": [],
|
|
1158
|
+
"description": "S5 body-extra-small in long-form blocks."
|
|
1159
|
+
},
|
|
1160
|
+
{
|
|
1161
|
+
"name": "font/letter-spacing/normal",
|
|
1162
|
+
"type": "FLOAT",
|
|
1163
|
+
"values": {
|
|
1164
|
+
"Value": 0
|
|
1165
|
+
},
|
|
1166
|
+
"scopes": [
|
|
1167
|
+
"ALL_SCOPES"
|
|
1168
|
+
],
|
|
1169
|
+
"description": ""
|
|
1170
|
+
},
|
|
1171
|
+
{
|
|
1172
|
+
"name": "font/letter-spacing/tight",
|
|
1173
|
+
"type": "FLOAT",
|
|
1174
|
+
"values": {
|
|
1175
|
+
"Value": -0.01
|
|
1176
|
+
},
|
|
1177
|
+
"scopes": [
|
|
1178
|
+
"ALL_SCOPES"
|
|
1179
|
+
],
|
|
1180
|
+
"description": "S1 H1_66 tracking -0.66px at 66px = -0.01em. — UNIT CORRECTED 2026-09-07 (G28): written as rem on 2026-09-04, but every source is em: styles.css:479 `letter-spacing: 0.06em`, :489 `0.1em`, and S1 H1_66 is -0.66px at 66px = -0.01em. In rem the value was measured against the 16px root, one sixth of what was quoted."
|
|
1181
|
+
},
|
|
1182
|
+
{
|
|
1183
|
+
"name": "font/letter-spacing/wide",
|
|
1184
|
+
"type": "FLOAT",
|
|
1185
|
+
"values": {
|
|
1186
|
+
"Value": 0.06
|
|
1187
|
+
},
|
|
1188
|
+
"scopes": [
|
|
1189
|
+
"ALL_SCOPES"
|
|
1190
|
+
],
|
|
1191
|
+
"description": "S5, on 22px uppercase-adjacent labels. — UNIT CORRECTED 2026-09-07 (G28): written as rem on 2026-09-04, but every source is em: styles.css:479 `letter-spacing: 0.06em`, :489 `0.1em`, and S1 H1_66 is -0.66px at 66px = -0.01em. In rem the value was measured against the 16px root, one sixth of what was quoted."
|
|
1192
|
+
},
|
|
1193
|
+
{
|
|
1194
|
+
"name": "font/letter-spacing/wider",
|
|
1195
|
+
"type": "FLOAT",
|
|
1196
|
+
"values": {
|
|
1197
|
+
"Value": 0.1
|
|
1198
|
+
},
|
|
1199
|
+
"scopes": [
|
|
1200
|
+
"ALL_SCOPES"
|
|
1201
|
+
],
|
|
1202
|
+
"description": "S5 .page-eyebrow. — UNIT CORRECTED 2026-09-07 (G28): written as rem on 2026-09-04, but every source is em: styles.css:479 `letter-spacing: 0.06em`, :489 `0.1em`, and S1 H1_66 is -0.66px at 66px = -0.01em. In rem the value was measured against the 16px root, one sixth of what was quoted."
|
|
1203
|
+
},
|
|
1204
|
+
{
|
|
1205
|
+
"name": "duration/instant",
|
|
1206
|
+
"type": "FLOAT",
|
|
1207
|
+
"values": {
|
|
1208
|
+
"Value": 50
|
|
1209
|
+
},
|
|
1210
|
+
"scopes": [],
|
|
1211
|
+
"description": "Press feedback only - S5 uses it for transform on :active."
|
|
1212
|
+
},
|
|
1213
|
+
{
|
|
1214
|
+
"name": "duration/fast",
|
|
1215
|
+
"type": "FLOAT",
|
|
1216
|
+
"values": {
|
|
1217
|
+
"Value": 150
|
|
1218
|
+
},
|
|
1219
|
+
"scopes": [],
|
|
1220
|
+
"description": "The most-used value in S5 (colour, background, border). Default for state changes."
|
|
1221
|
+
},
|
|
1222
|
+
{
|
|
1223
|
+
"name": "duration/medium",
|
|
1224
|
+
"type": "FLOAT",
|
|
1225
|
+
"values": {
|
|
1226
|
+
"Value": 200
|
|
1227
|
+
},
|
|
1228
|
+
"scopes": [],
|
|
1229
|
+
"description": "S5 transform and opacity."
|
|
1230
|
+
},
|
|
1231
|
+
{
|
|
1232
|
+
"name": "duration/slow",
|
|
1233
|
+
"type": "FLOAT",
|
|
1234
|
+
"values": {
|
|
1235
|
+
"Value": 250
|
|
1236
|
+
},
|
|
1237
|
+
"scopes": [],
|
|
1238
|
+
"description": "S5 the dropdown: max-height, margin-top, box-shadow."
|
|
1239
|
+
},
|
|
1240
|
+
{
|
|
1241
|
+
"name": "duration/slower",
|
|
1242
|
+
"type": "FLOAT",
|
|
1243
|
+
"values": {
|
|
1244
|
+
"Value": 300
|
|
1245
|
+
},
|
|
1246
|
+
"scopes": [],
|
|
1247
|
+
"description": "S5, paired with the decelerate easing below."
|
|
1248
|
+
},
|
|
1249
|
+
{
|
|
1250
|
+
"name": "easing/standard",
|
|
1251
|
+
"type": "STRING",
|
|
1252
|
+
"values": {
|
|
1253
|
+
"Value": "cubic-bezier(0.25, 0.1, 0.25, 1)"
|
|
1254
|
+
},
|
|
1255
|
+
"scopes": [],
|
|
1256
|
+
"description": "CSS 'ease'. What S5 uses almost everywhere; written out so the token is explicit rather than a keyword."
|
|
1257
|
+
},
|
|
1258
|
+
{
|
|
1259
|
+
"name": "easing/decelerate",
|
|
1260
|
+
"type": "STRING",
|
|
1261
|
+
"values": {
|
|
1262
|
+
"Value": "cubic-bezier(0.16, 1, 0.3, 1)"
|
|
1263
|
+
},
|
|
1264
|
+
"scopes": [],
|
|
1265
|
+
"description": "S5, the one hand-tuned curve in the codebase - transform 0.3s. Fast out, long settle."
|
|
1266
|
+
},
|
|
1267
|
+
{
|
|
1268
|
+
"name": "size/icon/16",
|
|
1269
|
+
"type": "FLOAT",
|
|
1270
|
+
"values": {
|
|
1271
|
+
"Value": 16
|
|
1272
|
+
},
|
|
1273
|
+
"scopes": [
|
|
1274
|
+
"WIDTH_HEIGHT"
|
|
1275
|
+
],
|
|
1276
|
+
"description": ""
|
|
1277
|
+
},
|
|
1278
|
+
{
|
|
1279
|
+
"name": "size/icon/24",
|
|
1280
|
+
"type": "FLOAT",
|
|
1281
|
+
"values": {
|
|
1282
|
+
"Value": 24
|
|
1283
|
+
},
|
|
1284
|
+
"scopes": [
|
|
1285
|
+
"WIDTH_HEIGHT"
|
|
1286
|
+
],
|
|
1287
|
+
"description": "The icon-list glyph size - the reason yellow.300 is too pale for it."
|
|
1288
|
+
},
|
|
1289
|
+
{
|
|
1290
|
+
"name": "size/icon/32",
|
|
1291
|
+
"type": "FLOAT",
|
|
1292
|
+
"values": {
|
|
1293
|
+
"Value": 32
|
|
1294
|
+
},
|
|
1295
|
+
"scopes": [
|
|
1296
|
+
"WIDTH_HEIGHT"
|
|
1297
|
+
],
|
|
1298
|
+
"description": ""
|
|
1299
|
+
},
|
|
1300
|
+
{
|
|
1301
|
+
"name": "size/icon/48",
|
|
1302
|
+
"type": "FLOAT",
|
|
1303
|
+
"values": {
|
|
1304
|
+
"Value": 48
|
|
1305
|
+
},
|
|
1306
|
+
"scopes": [
|
|
1307
|
+
"WIDTH_HEIGHT"
|
|
1308
|
+
],
|
|
1309
|
+
"description": ""
|
|
1310
|
+
},
|
|
1311
|
+
{
|
|
1312
|
+
"name": "size/control/small",
|
|
1313
|
+
"type": "FLOAT",
|
|
1314
|
+
"values": {
|
|
1315
|
+
"Value": 28
|
|
1316
|
+
},
|
|
1317
|
+
"scopes": [
|
|
1318
|
+
"WIDTH_HEIGHT"
|
|
1319
|
+
],
|
|
1320
|
+
"description": "The small control: Button small, Input small, the pills."
|
|
1321
|
+
},
|
|
1322
|
+
{
|
|
1323
|
+
"name": "size/control/medium",
|
|
1324
|
+
"type": "FLOAT",
|
|
1325
|
+
"values": {
|
|
1326
|
+
"Value": 36
|
|
1327
|
+
},
|
|
1328
|
+
"scopes": [
|
|
1329
|
+
"WIDTH_HEIGHT"
|
|
1330
|
+
],
|
|
1331
|
+
"description": "The medium control - the site and Paggy default (.btn min-height 36px)."
|
|
1332
|
+
},
|
|
1333
|
+
{
|
|
1334
|
+
"name": "size/control/large",
|
|
1335
|
+
"type": "FLOAT",
|
|
1336
|
+
"values": {
|
|
1337
|
+
"Value": 44
|
|
1338
|
+
},
|
|
1339
|
+
"scopes": [
|
|
1340
|
+
"WIDTH_HEIGHT"
|
|
1341
|
+
],
|
|
1342
|
+
"description": "The large control: Button large, Input large."
|
|
1343
|
+
},
|
|
1344
|
+
{
|
|
1345
|
+
"name": "breakpoint/tablet",
|
|
1346
|
+
"type": "FLOAT",
|
|
1347
|
+
"values": {
|
|
1348
|
+
"Value": 768
|
|
1349
|
+
},
|
|
1350
|
+
"scopes": [
|
|
1351
|
+
"WIDTH_HEIGHT"
|
|
1352
|
+
],
|
|
1353
|
+
"description": "Below this is web-mobile."
|
|
1354
|
+
},
|
|
1355
|
+
{
|
|
1356
|
+
"name": "breakpoint/desktop",
|
|
1357
|
+
"type": "FLOAT",
|
|
1358
|
+
"values": {
|
|
1359
|
+
"Value": 1024
|
|
1360
|
+
},
|
|
1361
|
+
"scopes": [
|
|
1362
|
+
"WIDTH_HEIGHT"
|
|
1363
|
+
],
|
|
1364
|
+
"description": "At and above this is web-desktop."
|
|
1365
|
+
},
|
|
1366
|
+
{
|
|
1367
|
+
"name": "container/web",
|
|
1368
|
+
"type": "FLOAT",
|
|
1369
|
+
"values": {
|
|
1370
|
+
"Value": 1320
|
|
1371
|
+
},
|
|
1372
|
+
"scopes": [
|
|
1373
|
+
"WIDTH_HEIGHT"
|
|
1374
|
+
],
|
|
1375
|
+
"description": "Site content width."
|
|
1376
|
+
},
|
|
1377
|
+
{
|
|
1378
|
+
"name": "container/slide",
|
|
1379
|
+
"type": "FLOAT",
|
|
1380
|
+
"values": {
|
|
1381
|
+
"Value": 1792
|
|
1382
|
+
},
|
|
1383
|
+
"scopes": [
|
|
1384
|
+
"WIDTH_HEIGHT"
|
|
1385
|
+
],
|
|
1386
|
+
"description": "S1 --content-w. 1920 minus two 64px margins."
|
|
1387
|
+
},
|
|
1388
|
+
{
|
|
1389
|
+
"name": "canvas/slide-width",
|
|
1390
|
+
"type": "FLOAT",
|
|
1391
|
+
"values": {
|
|
1392
|
+
"Value": 1920
|
|
1393
|
+
},
|
|
1394
|
+
"scopes": [
|
|
1395
|
+
"WIDTH_HEIGHT"
|
|
1396
|
+
],
|
|
1397
|
+
"description": ""
|
|
1398
|
+
},
|
|
1399
|
+
{
|
|
1400
|
+
"name": "canvas/slide-height",
|
|
1401
|
+
"type": "FLOAT",
|
|
1402
|
+
"values": {
|
|
1403
|
+
"Value": 1080
|
|
1404
|
+
},
|
|
1405
|
+
"scopes": [
|
|
1406
|
+
"WIDTH_HEIGHT"
|
|
1407
|
+
],
|
|
1408
|
+
"description": ""
|
|
1409
|
+
},
|
|
1410
|
+
{
|
|
1411
|
+
"name": "canvas/slide-margin",
|
|
1412
|
+
"type": "FLOAT",
|
|
1413
|
+
"values": {
|
|
1414
|
+
"Value": 64
|
|
1415
|
+
},
|
|
1416
|
+
"scopes": [
|
|
1417
|
+
"WIDTH_HEIGHT"
|
|
1418
|
+
],
|
|
1419
|
+
"description": "S1 --margin."
|
|
1420
|
+
},
|
|
1421
|
+
{
|
|
1422
|
+
"name": "canvas/slide-margin-top",
|
|
1423
|
+
"type": "FLOAT",
|
|
1424
|
+
"values": {
|
|
1425
|
+
"Value": 42
|
|
1426
|
+
},
|
|
1427
|
+
"scopes": [
|
|
1428
|
+
"WIDTH_HEIGHT"
|
|
1429
|
+
],
|
|
1430
|
+
"description": "S1 --margin-top. The heading is anchored at y=42, not at the outer margin."
|
|
1431
|
+
},
|
|
1432
|
+
{
|
|
1433
|
+
"name": "blur/nav",
|
|
1434
|
+
"type": "FLOAT",
|
|
1435
|
+
"values": {
|
|
1436
|
+
"Value": 7.3
|
|
1437
|
+
},
|
|
1438
|
+
"scopes": [
|
|
1439
|
+
"EFFECT_FLOAT"
|
|
1440
|
+
],
|
|
1441
|
+
"description": "The site's navigation bar: backdrop-filter blur(7.3px) under surface.glass - global-2026.css:159 .main-nav."
|
|
1442
|
+
},
|
|
1443
|
+
{
|
|
1444
|
+
"name": "blur/panel",
|
|
1445
|
+
"type": "FLOAT",
|
|
1446
|
+
"values": {
|
|
1447
|
+
"Value": 14.6
|
|
1448
|
+
},
|
|
1449
|
+
"scopes": [
|
|
1450
|
+
"EFFECT_FLOAT"
|
|
1451
|
+
],
|
|
1452
|
+
"description": "The site's products panel: blur(14.6px) under surface.glass-strong - global-2026.css:208 .nav-dropdown."
|
|
1453
|
+
},
|
|
1454
|
+
{
|
|
1455
|
+
"name": "blur/card",
|
|
1456
|
+
"type": "FLOAT",
|
|
1457
|
+
"values": {
|
|
1458
|
+
"Value": 6.8
|
|
1459
|
+
},
|
|
1460
|
+
"scopes": [
|
|
1461
|
+
"EFFECT_FLOAT"
|
|
1462
|
+
],
|
|
1463
|
+
"description": "The deck's case-study card: a 6.8 background blur over the blob - Pepper Deck UI Kit Card/Case_Study/* (8006:3590)."
|
|
1464
|
+
},
|
|
1465
|
+
{
|
|
1466
|
+
"name": "blur/blob",
|
|
1467
|
+
"type": "FLOAT",
|
|
1468
|
+
"values": {
|
|
1469
|
+
"Value": 150
|
|
1470
|
+
},
|
|
1471
|
+
"scopes": [
|
|
1472
|
+
"EFFECT_FLOAT"
|
|
1473
|
+
],
|
|
1474
|
+
"description": "The Blob's layer blur - Pepper Deck UI Kit Decoration/Blob/* (8012:4118)."
|
|
1475
|
+
}
|
|
1476
|
+
]
|
|
1477
|
+
},
|
|
1478
|
+
"Semantic": {
|
|
1479
|
+
"modes": [
|
|
1480
|
+
"Value"
|
|
1481
|
+
],
|
|
1482
|
+
"variables": [
|
|
1483
|
+
{
|
|
1484
|
+
"name": "icon-list/ink",
|
|
1485
|
+
"type": "COLOR",
|
|
1486
|
+
"values": {
|
|
1487
|
+
"Value": "#6a66e4"
|
|
1488
|
+
},
|
|
1489
|
+
"scopes": [
|
|
1490
|
+
"ALL_FILLS",
|
|
1491
|
+
"STROKE_COLOR"
|
|
1492
|
+
],
|
|
1493
|
+
"description": "DEVIATION: reads accent.*.icon-ink, not accent.*.light. In yellow mode the glyph keeps the MAIN hue because #fad567 is too pale at 24px (Fedor 2026-08-10). Scoped deliberately - this is the only component whose ink changed, and no other component's colour moved with it. The value shown is the blue-mode default; the build emits one per accent mode.",
|
|
1494
|
+
"aliases": {
|
|
1495
|
+
"Value": "accent/blue/icon-ink"
|
|
1496
|
+
}
|
|
1497
|
+
},
|
|
1498
|
+
{
|
|
1499
|
+
"name": "insight/max-width",
|
|
1500
|
+
"type": "FLOAT",
|
|
1501
|
+
"values": {
|
|
1502
|
+
"Value": 1344
|
|
1503
|
+
},
|
|
1504
|
+
"scopes": [
|
|
1505
|
+
"ALL_SCOPES"
|
|
1506
|
+
],
|
|
1507
|
+
"description": "DEVIATION: not a layout token. 1344 is three quarters of the 1792px slide content width - an insight block that runs the full width stops reading as an insight and starts reading as a paragraph. Enforced by rules_test.py."
|
|
1508
|
+
},
|
|
1509
|
+
{
|
|
1510
|
+
"name": "bullet-list/gap",
|
|
1511
|
+
"type": "FLOAT",
|
|
1512
|
+
"values": {
|
|
1513
|
+
"Value": 8
|
|
1514
|
+
},
|
|
1515
|
+
"scopes": [
|
|
1516
|
+
"ALL_SCOPES"
|
|
1517
|
+
],
|
|
1518
|
+
"description": "LOCKED. 8px between bullets, and there is a test for it. It is here rather than in layout.* because it is a rule with a history: it was re-set by hand often enough to be worth pinning.",
|
|
1519
|
+
"aliases": {
|
|
1520
|
+
"Value": "space/8"
|
|
1521
|
+
}
|
|
1522
|
+
},
|
|
1523
|
+
{
|
|
1524
|
+
"name": "chip/radius",
|
|
1525
|
+
"type": "FLOAT",
|
|
1526
|
+
"values": {
|
|
1527
|
+
"Value": 9999
|
|
1528
|
+
},
|
|
1529
|
+
"scopes": [
|
|
1530
|
+
"ALL_SCOPES"
|
|
1531
|
+
],
|
|
1532
|
+
"description": "DEVIATION from the radius scale: labels are pills, actions are squares. A chip is a label, so it is fully round; a button is an action, so it never is. The rule is the sentence, not the number.",
|
|
1533
|
+
"aliases": {
|
|
1534
|
+
"Value": "radius/full"
|
|
1535
|
+
}
|
|
1536
|
+
},
|
|
1537
|
+
{
|
|
1538
|
+
"name": "table/header/bg",
|
|
1539
|
+
"type": "COLOR",
|
|
1540
|
+
"values": {
|
|
1541
|
+
"Value": "#0c0b41"
|
|
1542
|
+
},
|
|
1543
|
+
"scopes": [
|
|
1544
|
+
"FRAME_FILL",
|
|
1545
|
+
"SHAPE_FILL"
|
|
1546
|
+
],
|
|
1547
|
+
"description": "DEVIATION: the header bar is the only thing that reads accent.*.dark, which is why multicolor can safely map that slot to neutral.800 without touching anything else (Fedor 2026-07-15, matching the Figma grey SWOT variant). The value shown is the blue-mode default; the build emits one per accent mode.",
|
|
1548
|
+
"aliases": {
|
|
1549
|
+
"Value": "accent/blue/dark"
|
|
1550
|
+
}
|
|
1551
|
+
},
|
|
1552
|
+
{
|
|
1553
|
+
"name": "table/header/pill-tint",
|
|
1554
|
+
"type": "COLOR",
|
|
1555
|
+
"values": {
|
|
1556
|
+
"Value": "#d4d3f7"
|
|
1557
|
+
},
|
|
1558
|
+
"scopes": [
|
|
1559
|
+
"ALL_FILLS",
|
|
1560
|
+
"STROKE_COLOR"
|
|
1561
|
+
],
|
|
1562
|
+
"description": "The header column's pill tint — an alias of accent.*.pill-tint, which carries the yellow (light) and multicolor (neutral-200) values per mode; the build emits one per accent mode. Until 2026-09-07 this aliased accent.*.lighter and described the multicolor override in prose only — the Figma variable then rendered red in multicolor (found by the Table build's SWOT example).",
|
|
1563
|
+
"aliases": {
|
|
1564
|
+
"Value": "accent/blue/pill-tint"
|
|
1565
|
+
}
|
|
1566
|
+
},
|
|
1567
|
+
{
|
|
1568
|
+
"name": "table/row/selected-bg",
|
|
1569
|
+
"type": "COLOR",
|
|
1570
|
+
"values": {
|
|
1571
|
+
"Value": "#e9e9fb"
|
|
1572
|
+
},
|
|
1573
|
+
"scopes": [
|
|
1574
|
+
"ALL_FILLS",
|
|
1575
|
+
"STROKE_COLOR"
|
|
1576
|
+
],
|
|
1577
|
+
"description": "The wash of a selected row - an alias of accent.*.selected, which the build emits once per accent mode: the accent's palest tint in blue, red and yellow, and a NEUTRAL one step darker than the Table's own ground in multicolor (D110, 2026-09-17 - Fedor's pick on a rendered picture; until then the row read accent/bg, which is red/100 in multicolor, and a selected row on a dashboard was pink). Table ",
|
|
1578
|
+
"aliases": {
|
|
1579
|
+
"Value": "accent/blue/selected"
|
|
1580
|
+
}
|
|
1581
|
+
},
|
|
1582
|
+
{
|
|
1583
|
+
"name": "table/divider",
|
|
1584
|
+
"type": "COLOR",
|
|
1585
|
+
"values": {
|
|
1586
|
+
"Value": "#dad9d9"
|
|
1587
|
+
},
|
|
1588
|
+
"scopes": [
|
|
1589
|
+
"STROKE_COLOR"
|
|
1590
|
+
],
|
|
1591
|
+
"description": "DEVIATION, stated substitution: the deck table body divider is a 2 px #c9c9c9 that Paggy slide.css:723 itself calls token-less (.ctbl__cell--div - the quarter skill exact hairline, no matching design token). The nearest ramp step is neutral.200 #dad9d9; #c9c9c9 sits between 200 and 300 and would be a ramp exception with one consumer. The product size draws it 1 px (app.css:597 table.admin td borde",
|
|
1592
|
+
"aliases": {
|
|
1593
|
+
"Value": "color/neutral/200"
|
|
1594
|
+
}
|
|
1595
|
+
},
|
|
1596
|
+
{
|
|
1597
|
+
"name": "card/band",
|
|
1598
|
+
"type": "COLOR",
|
|
1599
|
+
"values": {
|
|
1600
|
+
"Value": "#dad9d9"
|
|
1601
|
+
},
|
|
1602
|
+
"scopes": [
|
|
1603
|
+
"FRAME_FILL",
|
|
1604
|
+
"SHAPE_FILL"
|
|
1605
|
+
],
|
|
1606
|
+
"description": "The Card subtitle band - Deck kit Card/Basic/Card with border 8011:5687 (Frame 291): #dad9d9 at radius 8, padding 12, the 20 px Regular line under the title. #dad9d9 is neutral.200 exactly; its own role because it is the only grey band on a card surface and neither border.default nor surface.sunken says what it is for (D45, 2026-09-08).",
|
|
1607
|
+
"aliases": {
|
|
1608
|
+
"Value": "color/neutral/200"
|
|
1609
|
+
}
|
|
1610
|
+
},
|
|
1611
|
+
{
|
|
1612
|
+
"name": "avatar/blue/bg",
|
|
1613
|
+
"type": "COLOR",
|
|
1614
|
+
"values": {
|
|
1615
|
+
"Value": "#d4d3f7"
|
|
1616
|
+
},
|
|
1617
|
+
"scopes": [
|
|
1618
|
+
"FRAME_FILL",
|
|
1619
|
+
"SHAPE_FILL"
|
|
1620
|
+
],
|
|
1621
|
+
"description": "DEVIATION from tint.blue: the avatar initials tint is hue 200 on hue 600, not 200 on 300. Paggy app.css:1349-1351 .avatar--blue background #D4D3F7, color #110E56 - \"photo when uploaded; otherwise initials on the SECONDARY palette - visible but calm (Fedor: not too aggressive, not too weak)\". Added 2026-09-07 for the Figma Avatar.",
|
|
1622
|
+
"aliases": {
|
|
1623
|
+
"Value": "color/blue/200"
|
|
1624
|
+
}
|
|
1625
|
+
},
|
|
1626
|
+
{
|
|
1627
|
+
"name": "avatar/blue/fg",
|
|
1628
|
+
"type": "COLOR",
|
|
1629
|
+
"values": {
|
|
1630
|
+
"Value": "#110e56"
|
|
1631
|
+
},
|
|
1632
|
+
"scopes": [
|
|
1633
|
+
"TEXT_FILL",
|
|
1634
|
+
"SHAPE_FILL"
|
|
1635
|
+
],
|
|
1636
|
+
"description": "Avatar initials ink, blue. See avatar.blue.bg.",
|
|
1637
|
+
"aliases": {
|
|
1638
|
+
"Value": "color/blue/600"
|
|
1639
|
+
}
|
|
1640
|
+
},
|
|
1641
|
+
{
|
|
1642
|
+
"name": "avatar/red/bg",
|
|
1643
|
+
"type": "COLOR",
|
|
1644
|
+
"values": {
|
|
1645
|
+
"Value": "#f9d3d2"
|
|
1646
|
+
},
|
|
1647
|
+
"scopes": [
|
|
1648
|
+
"FRAME_FILL",
|
|
1649
|
+
"SHAPE_FILL"
|
|
1650
|
+
],
|
|
1651
|
+
"description": "Paggy .avatar--red #F9D3D2 / #5B0E0D. See avatar.blue.bg.",
|
|
1652
|
+
"aliases": {
|
|
1653
|
+
"Value": "color/red/200"
|
|
1654
|
+
}
|
|
1655
|
+
},
|
|
1656
|
+
{
|
|
1657
|
+
"name": "avatar/red/fg",
|
|
1658
|
+
"type": "COLOR",
|
|
1659
|
+
"values": {
|
|
1660
|
+
"Value": "#5b0e0d"
|
|
1661
|
+
},
|
|
1662
|
+
"scopes": [
|
|
1663
|
+
"TEXT_FILL",
|
|
1664
|
+
"SHAPE_FILL"
|
|
1665
|
+
],
|
|
1666
|
+
"description": "Avatar initials ink, red.",
|
|
1667
|
+
"aliases": {
|
|
1668
|
+
"Value": "color/red/600"
|
|
1669
|
+
}
|
|
1670
|
+
},
|
|
1671
|
+
{
|
|
1672
|
+
"name": "avatar/yellow/bg",
|
|
1673
|
+
"type": "COLOR",
|
|
1674
|
+
"values": {
|
|
1675
|
+
"Value": "#fdf3d3"
|
|
1676
|
+
},
|
|
1677
|
+
"scopes": [
|
|
1678
|
+
"FRAME_FILL",
|
|
1679
|
+
"SHAPE_FILL"
|
|
1680
|
+
],
|
|
1681
|
+
"description": "Paggy .avatar--yellow #FDF3D3 / #634E0F - yellow-200, one step lighter than tint.yellow.bg (300), because an avatar is calm and a label must read. See avatar.blue.bg.",
|
|
1682
|
+
"aliases": {
|
|
1683
|
+
"Value": "color/yellow/200"
|
|
1684
|
+
}
|
|
1685
|
+
},
|
|
1686
|
+
{
|
|
1687
|
+
"name": "avatar/yellow/fg",
|
|
1688
|
+
"type": "COLOR",
|
|
1689
|
+
"values": {
|
|
1690
|
+
"Value": "#634e0f"
|
|
1691
|
+
},
|
|
1692
|
+
"scopes": [
|
|
1693
|
+
"TEXT_FILL",
|
|
1694
|
+
"SHAPE_FILL"
|
|
1695
|
+
],
|
|
1696
|
+
"description": "Avatar initials ink, yellow.",
|
|
1697
|
+
"aliases": {
|
|
1698
|
+
"Value": "color/yellow/600"
|
|
1699
|
+
}
|
|
1700
|
+
},
|
|
1701
|
+
{
|
|
1702
|
+
"name": "toggle/on/bg",
|
|
1703
|
+
"type": "COLOR",
|
|
1704
|
+
"values": {
|
|
1705
|
+
"Value": "#544d4d"
|
|
1706
|
+
},
|
|
1707
|
+
"scopes": [
|
|
1708
|
+
"FRAME_FILL",
|
|
1709
|
+
"SHAPE_FILL"
|
|
1710
|
+
],
|
|
1711
|
+
"description": "Toggle on-state fill. Component token (tier 3): the site blog.css:284-286 .filter-pill.is-active background var(--color-neutral-600) #544d4d. Fedor 2026-09-07: \"use what the site uses - that way we combine our rules with the shadcn design system\" (shadcn: data-[state=on]:bg-accent). Shared by Toggle and Toggle - filled; replaces surface/inverse, which the first build used. Paggy's near-black #1414",
|
|
1712
|
+
"aliases": {
|
|
1713
|
+
"Value": "color/neutral/600"
|
|
1714
|
+
}
|
|
1715
|
+
},
|
|
1716
|
+
{
|
|
1717
|
+
"name": "toggle/on/fg",
|
|
1718
|
+
"type": "COLOR",
|
|
1719
|
+
"values": {
|
|
1720
|
+
"Value": "#ffffff"
|
|
1721
|
+
},
|
|
1722
|
+
"scopes": [
|
|
1723
|
+
"TEXT_FILL",
|
|
1724
|
+
"SHAPE_FILL"
|
|
1725
|
+
],
|
|
1726
|
+
"description": "Toggle on-state ink. Component token (tier 3): the site blog.css:286 .filter-pill.is-active color var(--color-btn-primary-fg) #fafafa, carried as neutral/0 the way action.primary.fg is. Added 2026-09-07.",
|
|
1727
|
+
"aliases": {
|
|
1728
|
+
"Value": "color/neutral/0"
|
|
1729
|
+
}
|
|
1730
|
+
},
|
|
1731
|
+
{
|
|
1732
|
+
"name": "tabs/track",
|
|
1733
|
+
"type": "COLOR",
|
|
1734
|
+
"values": {
|
|
1735
|
+
"Value": "#f2f2f2"
|
|
1736
|
+
},
|
|
1737
|
+
"scopes": [
|
|
1738
|
+
"FRAME_FILL",
|
|
1739
|
+
"SHAPE_FILL"
|
|
1740
|
+
],
|
|
1741
|
+
"description": "DEVIATION: the box of a segmented Tabs does not take the step every other grey surface takes on the product ground. On a white ground it is neutral.100 like the rest; on surface.card it is WHITE, not neutral.200 (Fedor 2026-09-17, D106 b and D107: 'can we make white background for menu. The rest is good'). It follows the ground by itself: the token names the page half and re-resolves to ground.car",
|
|
1742
|
+
"aliases": {
|
|
1743
|
+
"Value": "ground/page/track"
|
|
1744
|
+
}
|
|
1745
|
+
},
|
|
1746
|
+
{
|
|
1747
|
+
"name": "kpi/tone/blue/bg",
|
|
1748
|
+
"type": "COLOR",
|
|
1749
|
+
"values": {
|
|
1750
|
+
"Value": "#e9e9fb"
|
|
1751
|
+
},
|
|
1752
|
+
"scopes": [
|
|
1753
|
+
"FRAME_FILL",
|
|
1754
|
+
"SHAPE_FILL"
|
|
1755
|
+
],
|
|
1756
|
+
"description": "KPI tile blue-team fill. Component token (tier 3): Paggy tokens.css:20 `--blue-bg` #E9E9FB (`.kpi-tile--blue`, slide.css) and the Deck kit's Card/Metric/color_card #e9e9fb; the site's echo-ai.css:452 `.stat-card.fintech` --persian-blue-lightest. A Tone axis rather than the Accent mode, because a KPI row shows every colour team on one canvas (Figma_product_dashboard_designer design-rules.md §0, Fed",
|
|
1757
|
+
"aliases": {
|
|
1758
|
+
"Value": "color/blue/100"
|
|
1759
|
+
}
|
|
1760
|
+
},
|
|
1761
|
+
{
|
|
1762
|
+
"name": "kpi/tone/red/bg",
|
|
1763
|
+
"type": "COLOR",
|
|
1764
|
+
"values": {
|
|
1765
|
+
"Value": "#fce9e8"
|
|
1766
|
+
},
|
|
1767
|
+
"scopes": [
|
|
1768
|
+
"FRAME_FILL",
|
|
1769
|
+
"SHAPE_FILL"
|
|
1770
|
+
],
|
|
1771
|
+
"description": "KPI tile red-team fill. Component token (tier 3): Paggy tokens.css:27 `--red-bg` (`.kpi-tile--red`) and the kit's color_card_input #fce9e8; the site's `.stat-card.edtech` --red-lightest. A Tone axis rather than the Accent mode, because a KPI row shows every colour team on one canvas (Figma_product_dashboard_designer design-rules.md §0, Fedor Aug 27 2026). Added 2026-09-07.",
|
|
1772
|
+
"aliases": {
|
|
1773
|
+
"Value": "color/red/100"
|
|
1774
|
+
}
|
|
1775
|
+
},
|
|
1776
|
+
{
|
|
1777
|
+
"name": "kpi/tone/yellow/bg",
|
|
1778
|
+
"type": "COLOR",
|
|
1779
|
+
"values": {
|
|
1780
|
+
"Value": "#fef9e9"
|
|
1781
|
+
},
|
|
1782
|
+
"scopes": [
|
|
1783
|
+
"FRAME_FILL",
|
|
1784
|
+
"SHAPE_FILL"
|
|
1785
|
+
],
|
|
1786
|
+
"description": "KPI tile yellow-team fill. Component token (tier 3): Paggy tokens.css:34 `--yellow-bg` (`.kpi-tile--yellow`); the site's `.stat-card.ecommerce` --yellow-lightest. A Tone axis rather than the Accent mode, because a KPI row shows every colour team on one canvas (Figma_product_dashboard_designer design-rules.md §0, Fedor Aug 27 2026). Added 2026-09-07.",
|
|
1787
|
+
"aliases": {
|
|
1788
|
+
"Value": "color/yellow/100"
|
|
1789
|
+
}
|
|
1790
|
+
},
|
|
1791
|
+
{
|
|
1792
|
+
"name": "kpi/tone/neutral/bg",
|
|
1793
|
+
"type": "COLOR",
|
|
1794
|
+
"values": {
|
|
1795
|
+
"Value": "#f2f2f2"
|
|
1796
|
+
},
|
|
1797
|
+
"scopes": [
|
|
1798
|
+
"FRAME_FILL",
|
|
1799
|
+
"SHAPE_FILL"
|
|
1800
|
+
],
|
|
1801
|
+
"description": "KPI tile neutral-team fill: it IS surface.sunken, so it follows the ground (D107, Fedor 2026-09-17) - neutral.100 #f2f2f2 on a white page (1.12 : 1), neutral.200 #dad9d9 on the product ground surface.card (1.26 : 1), where neutral.200 is the fill of the master Card/Metric/color_status_input (the site file 3928:8574) and the white detail slot inside it reads 1.41 : 1. HISTORY, kept: neutral.100 on ",
|
|
1802
|
+
"aliases": {
|
|
1803
|
+
"Value": "surface/sunken"
|
|
1804
|
+
}
|
|
1805
|
+
},
|
|
1806
|
+
{
|
|
1807
|
+
"name": "kpi/delta/ring",
|
|
1808
|
+
"type": "COLOR",
|
|
1809
|
+
"values": {
|
|
1810
|
+
"Value": "#ffffff"
|
|
1811
|
+
},
|
|
1812
|
+
"scopes": [
|
|
1813
|
+
"STROKE_COLOR"
|
|
1814
|
+
],
|
|
1815
|
+
"description": "DEVIATION: the only ring in the library, and the one border a Badge ever carries. It marks a STATUS DELTA and nothing else — green because the number went up, red because it went down (Fedor 2026-09-16, and the correction he made the same day: 'we are working only with green positive and red negative status badges — this is a different thing from coloured badges for cards, blue tints for blue card",
|
|
1816
|
+
"aliases": {
|
|
1817
|
+
"Value": "surface/slot"
|
|
1818
|
+
}
|
|
1819
|
+
},
|
|
1820
|
+
{
|
|
1821
|
+
"name": "nav/bg",
|
|
1822
|
+
"type": "COLOR",
|
|
1823
|
+
"values": {
|
|
1824
|
+
"Value": "#231b1b"
|
|
1825
|
+
},
|
|
1826
|
+
"scopes": [
|
|
1827
|
+
"FRAME_FILL",
|
|
1828
|
+
"SHAPE_FILL"
|
|
1829
|
+
],
|
|
1830
|
+
"description": "The rail's fill. Component token (tier 3): Paggy app.css:552 .anav background var(--near-black) #171717 and the concept's neutral/1000 panel (design-rules §B) both say near-black; the ramp has no #171717 and D4 reserves neutral/1000 for masks, so the rail takes the house dark surface, neutral/800 (surface.inverse — the site's --color-neutral-darker, the segment tab, the icon chip). Stated substitu",
|
|
1831
|
+
"aliases": {
|
|
1832
|
+
"Value": "color/neutral/800"
|
|
1833
|
+
}
|
|
1834
|
+
},
|
|
1835
|
+
{
|
|
1836
|
+
"name": "nav/item/fg",
|
|
1837
|
+
"type": "COLOR",
|
|
1838
|
+
"values": {
|
|
1839
|
+
"Value": "#b5b3b3"
|
|
1840
|
+
},
|
|
1841
|
+
"scopes": [
|
|
1842
|
+
"TEXT_FILL",
|
|
1843
|
+
"SHAPE_FILL"
|
|
1844
|
+
],
|
|
1845
|
+
"description": "A nav item's ink and glyph at rest — Paggy app.css:559 .anav-item color var(--n300); the concept: 'Default text/glyph neutral/300'. Added 2026-09-07.",
|
|
1846
|
+
"aliases": {
|
|
1847
|
+
"Value": "color/neutral/300"
|
|
1848
|
+
}
|
|
1849
|
+
},
|
|
1850
|
+
{
|
|
1851
|
+
"name": "nav/item/fg-active",
|
|
1852
|
+
"type": "COLOR",
|
|
1853
|
+
"values": {
|
|
1854
|
+
"Value": "#ffffff"
|
|
1855
|
+
},
|
|
1856
|
+
"scopes": [
|
|
1857
|
+
"ALL_FILLS",
|
|
1858
|
+
"STROKE_COLOR"
|
|
1859
|
+
],
|
|
1860
|
+
"description": "A nav item's ink and glyph on hover and when active — Paggy .anav-item:hover / .active color #fff; the concept: 'Active white text/glyphs'. Added 2026-09-07.",
|
|
1861
|
+
"aliases": {
|
|
1862
|
+
"Value": "color/neutral/0"
|
|
1863
|
+
}
|
|
1864
|
+
},
|
|
1865
|
+
{
|
|
1866
|
+
"name": "nav/item/bg-hover",
|
|
1867
|
+
"type": "COLOR",
|
|
1868
|
+
"values": {
|
|
1869
|
+
"Value": "#ffffff14"
|
|
1870
|
+
},
|
|
1871
|
+
"scopes": [
|
|
1872
|
+
"ALL_FILLS",
|
|
1873
|
+
"STROKE_COLOR"
|
|
1874
|
+
],
|
|
1875
|
+
"description": "The hover wash — Paggy .anav-item:hover rgba(255,255,255,.08); the concept's 'Hover white 8%'. Added 2026-09-07.",
|
|
1876
|
+
"aliases": {
|
|
1877
|
+
"Value": "color/alpha/white-8"
|
|
1878
|
+
}
|
|
1879
|
+
},
|
|
1880
|
+
{
|
|
1881
|
+
"name": "nav/item/bg-active",
|
|
1882
|
+
"type": "COLOR",
|
|
1883
|
+
"values": {
|
|
1884
|
+
"Value": "#ffffff29"
|
|
1885
|
+
},
|
|
1886
|
+
"scopes": [
|
|
1887
|
+
"ALL_FILLS",
|
|
1888
|
+
"STROKE_COLOR"
|
|
1889
|
+
],
|
|
1890
|
+
"description": "The active wash — Paggy .anav-item.active rgba(255,255,255,.16); the concept's 'Active white 16%'. Also the user card's glass (Sidebar/MAFO: Bg rect 0.08 → the hover step is used there). Added 2026-09-07.",
|
|
1891
|
+
"aliases": {
|
|
1892
|
+
"Value": "color/alpha/white-16"
|
|
1893
|
+
}
|
|
1894
|
+
},
|
|
1895
|
+
{
|
|
1896
|
+
"name": "nav/section/fg",
|
|
1897
|
+
"type": "COLOR",
|
|
1898
|
+
"values": {
|
|
1899
|
+
"Value": "#858080"
|
|
1900
|
+
},
|
|
1901
|
+
"scopes": [
|
|
1902
|
+
"TEXT_FILL",
|
|
1903
|
+
"SHAPE_FILL"
|
|
1904
|
+
],
|
|
1905
|
+
"description": "A nav section title's ink (WORKSPACE · INTELLIGENCE · ACCOUNT) — the concept: 'Medium 12 with +8% tracking, neutral/400'; also the chevron on a nav link (concept: 'chevron in neutral/400 so the two glyphs read as different things'). Added 2026-09-07.",
|
|
1906
|
+
"aliases": {
|
|
1907
|
+
"Value": "color/neutral/400"
|
|
1908
|
+
}
|
|
1909
|
+
},
|
|
1910
|
+
{
|
|
1911
|
+
"name": "illustration/shell",
|
|
1912
|
+
"type": "COLOR",
|
|
1913
|
+
"values": {
|
|
1914
|
+
"Value": "#ffffff"
|
|
1915
|
+
},
|
|
1916
|
+
"scopes": [],
|
|
1917
|
+
"description": "An object's body: white, with one thin dark outline (D117).",
|
|
1918
|
+
"aliases": {
|
|
1919
|
+
"Value": "color/neutral/0"
|
|
1920
|
+
}
|
|
1921
|
+
},
|
|
1922
|
+
{
|
|
1923
|
+
"name": "illustration/surface",
|
|
1924
|
+
"type": "COLOR",
|
|
1925
|
+
"values": {
|
|
1926
|
+
"Value": "#f2f2f7"
|
|
1927
|
+
},
|
|
1928
|
+
"scopes": [],
|
|
1929
|
+
"description": "A soft surface on an object: bars, a window's top bar.",
|
|
1930
|
+
"aliases": {
|
|
1931
|
+
"Value": "color/light-blue/100"
|
|
1932
|
+
}
|
|
1933
|
+
},
|
|
1934
|
+
{
|
|
1935
|
+
"name": "illustration/detail",
|
|
1936
|
+
"type": "COLOR",
|
|
1937
|
+
"values": {
|
|
1938
|
+
"Value": "#dad9d9"
|
|
1939
|
+
},
|
|
1940
|
+
"scopes": [],
|
|
1941
|
+
"description": "A soft grey detail: keyboard keys, a phone's speaker.",
|
|
1942
|
+
"aliases": {
|
|
1943
|
+
"Value": "color/neutral/200"
|
|
1944
|
+
}
|
|
1945
|
+
},
|
|
1946
|
+
{
|
|
1947
|
+
"name": "illustration/screen",
|
|
1948
|
+
"type": "COLOR",
|
|
1949
|
+
"values": {
|
|
1950
|
+
"Value": "#fbfbfd"
|
|
1951
|
+
},
|
|
1952
|
+
"scopes": [],
|
|
1953
|
+
"description": "The screen of a TV, phone or laptop (D120).",
|
|
1954
|
+
"aliases": {
|
|
1955
|
+
"Value": "color/light-blue/50"
|
|
1956
|
+
}
|
|
1957
|
+
},
|
|
1958
|
+
{
|
|
1959
|
+
"name": "illustration/deck",
|
|
1960
|
+
"type": "COLOR",
|
|
1961
|
+
"values": {
|
|
1962
|
+
"Value": "#ffffff"
|
|
1963
|
+
},
|
|
1964
|
+
"scopes": [],
|
|
1965
|
+
"description": "A laptop's keyboard deck: white, not the screen's near-white (D120).",
|
|
1966
|
+
"aliases": {
|
|
1967
|
+
"Value": "color/neutral/0"
|
|
1968
|
+
}
|
|
1969
|
+
},
|
|
1970
|
+
{
|
|
1971
|
+
"name": "illustration/text",
|
|
1972
|
+
"type": "COLOR",
|
|
1973
|
+
"values": {
|
|
1974
|
+
"Value": "#0b0202"
|
|
1975
|
+
},
|
|
1976
|
+
"scopes": [],
|
|
1977
|
+
"description": "A label's text on an object, Poppins SemiBold.",
|
|
1978
|
+
"aliases": {
|
|
1979
|
+
"Value": "color/neutral/900"
|
|
1980
|
+
}
|
|
1981
|
+
},
|
|
1982
|
+
{
|
|
1983
|
+
"name": "illustration/outline/color",
|
|
1984
|
+
"type": "COLOR",
|
|
1985
|
+
"values": {
|
|
1986
|
+
"Value": "#0b0202"
|
|
1987
|
+
},
|
|
1988
|
+
"scopes": [],
|
|
1989
|
+
"description": "The one thin dark outline every object carries (D117).",
|
|
1990
|
+
"aliases": {
|
|
1991
|
+
"Value": "color/neutral/900"
|
|
1992
|
+
}
|
|
1993
|
+
},
|
|
1994
|
+
{
|
|
1995
|
+
"name": "illustration/outline/opacity",
|
|
1996
|
+
"type": "FLOAT",
|
|
1997
|
+
"values": {
|
|
1998
|
+
"Value": 85
|
|
1999
|
+
},
|
|
2000
|
+
"scopes": [],
|
|
2001
|
+
"description": "The outline's opacity, so the outline reads dark without reading black."
|
|
2002
|
+
},
|
|
2003
|
+
{
|
|
2004
|
+
"name": "illustration/outline/width",
|
|
2005
|
+
"type": "FLOAT",
|
|
2006
|
+
"values": {
|
|
2007
|
+
"Value": 0.5
|
|
2008
|
+
},
|
|
2009
|
+
"scopes": [],
|
|
2010
|
+
"description": "The outline width, in px of a still at its own size; at another size it scales with the picture (D119). The live version draws the same line, never under one device pixel."
|
|
2011
|
+
},
|
|
2012
|
+
{
|
|
2013
|
+
"name": "illustration/connector/color",
|
|
2014
|
+
"type": "COLOR",
|
|
2015
|
+
"values": {
|
|
2016
|
+
"Value": "#b5b3b3"
|
|
2017
|
+
},
|
|
2018
|
+
"scopes": [],
|
|
2019
|
+
"description": "A connector: the ring, a rod.",
|
|
2020
|
+
"aliases": {
|
|
2021
|
+
"Value": "color/neutral/300"
|
|
2022
|
+
}
|
|
2023
|
+
},
|
|
2024
|
+
{
|
|
2025
|
+
"name": "illustration/connector/radius",
|
|
2026
|
+
"type": "FLOAT",
|
|
2027
|
+
"values": {
|
|
2028
|
+
"Value": 0.028
|
|
2029
|
+
},
|
|
2030
|
+
"scopes": [],
|
|
2031
|
+
"description": "A connector tube's radius in scene units, the space the objects are modelled in (D119)."
|
|
2032
|
+
},
|
|
2033
|
+
{
|
|
2034
|
+
"name": "illustration/arrow/color",
|
|
2035
|
+
"type": "COLOR",
|
|
2036
|
+
"values": {
|
|
2037
|
+
"Value": "#6c6666"
|
|
2038
|
+
},
|
|
2039
|
+
"scopes": [],
|
|
2040
|
+
"description": "An arrow by default; another token colour only for emphasis (D122).",
|
|
2041
|
+
"aliases": {
|
|
2042
|
+
"Value": "color/neutral/500"
|
|
2043
|
+
}
|
|
2044
|
+
},
|
|
2045
|
+
{
|
|
2046
|
+
"name": "illustration/arrow/width",
|
|
2047
|
+
"type": "FLOAT",
|
|
2048
|
+
"values": {
|
|
2049
|
+
"Value": 3
|
|
2050
|
+
},
|
|
2051
|
+
"scopes": [],
|
|
2052
|
+
"description": "An arrow's stroke: the width of a line in a picture 1000 px wide; a still at another size scales it with the picture (D119, D122)."
|
|
2053
|
+
},
|
|
2054
|
+
{
|
|
2055
|
+
"name": "illustration/arrow/head/length",
|
|
2056
|
+
"type": "FLOAT",
|
|
2057
|
+
"values": {
|
|
2058
|
+
"Value": 5
|
|
2059
|
+
},
|
|
2060
|
+
"scopes": [],
|
|
2061
|
+
"description": "The length of each arm of the open chevron head, in stroke widths (D122)."
|
|
2062
|
+
},
|
|
2063
|
+
{
|
|
2064
|
+
"name": "illustration/arrow/head/angle",
|
|
2065
|
+
"type": "FLOAT",
|
|
2066
|
+
"values": {
|
|
2067
|
+
"Value": 40
|
|
2068
|
+
},
|
|
2069
|
+
"scopes": [],
|
|
2070
|
+
"description": "The angle between each arm of the head and the line, in degrees (D122)."
|
|
2071
|
+
},
|
|
2072
|
+
{
|
|
2073
|
+
"name": "text/default",
|
|
2074
|
+
"type": "COLOR",
|
|
2075
|
+
"values": {
|
|
2076
|
+
"Value": "#0b0202"
|
|
2077
|
+
},
|
|
2078
|
+
"scopes": [
|
|
2079
|
+
"TEXT_FILL",
|
|
2080
|
+
"SHAPE_FILL"
|
|
2081
|
+
],
|
|
2082
|
+
"description": "D4. Body and headings on light surfaces.",
|
|
2083
|
+
"aliases": {
|
|
2084
|
+
"Value": "color/neutral/900"
|
|
2085
|
+
}
|
|
2086
|
+
},
|
|
2087
|
+
{
|
|
2088
|
+
"name": "text/muted",
|
|
2089
|
+
"type": "COLOR",
|
|
2090
|
+
"values": {
|
|
2091
|
+
"Value": "#544d4d"
|
|
2092
|
+
},
|
|
2093
|
+
"scopes": [
|
|
2094
|
+
"TEXT_FILL",
|
|
2095
|
+
"SHAPE_FILL"
|
|
2096
|
+
],
|
|
2097
|
+
"description": "Secondary text.",
|
|
2098
|
+
"aliases": {
|
|
2099
|
+
"Value": "color/neutral/600"
|
|
2100
|
+
}
|
|
2101
|
+
},
|
|
2102
|
+
{
|
|
2103
|
+
"name": "text/subtle",
|
|
2104
|
+
"type": "COLOR",
|
|
2105
|
+
"values": {
|
|
2106
|
+
"Value": "#858080"
|
|
2107
|
+
},
|
|
2108
|
+
"scopes": [
|
|
2109
|
+
"TEXT_FILL",
|
|
2110
|
+
"SHAPE_FILL"
|
|
2111
|
+
],
|
|
2112
|
+
"description": "Every grey subheading - U12 uses this step, not 300, because 300 is too pale to read as a heading (Fedor 2026-08-05). Since D43 (2026-09-07) NOT for captions: at caption size (15px and under) neutral.400 scores 3.89 against the 4.5 floor - captions, chart axes and small labels read text.caption.",
|
|
2113
|
+
"aliases": {
|
|
2114
|
+
"Value": "color/neutral/400"
|
|
2115
|
+
}
|
|
2116
|
+
},
|
|
2117
|
+
{
|
|
2118
|
+
"name": "text/on-accent",
|
|
2119
|
+
"type": "COLOR",
|
|
2120
|
+
"values": {
|
|
2121
|
+
"Value": "#ffffff"
|
|
2122
|
+
},
|
|
2123
|
+
"scopes": [
|
|
2124
|
+
"TEXT_FILL",
|
|
2125
|
+
"SHAPE_FILL"
|
|
2126
|
+
],
|
|
2127
|
+
"description": "Text on a filled accent surface.",
|
|
2128
|
+
"aliases": {
|
|
2129
|
+
"Value": "color/neutral/0"
|
|
2130
|
+
}
|
|
2131
|
+
},
|
|
2132
|
+
{
|
|
2133
|
+
"name": "text/on-inverse",
|
|
2134
|
+
"type": "COLOR",
|
|
2135
|
+
"values": {
|
|
2136
|
+
"Value": "#ffffff"
|
|
2137
|
+
},
|
|
2138
|
+
"scopes": [
|
|
2139
|
+
"TEXT_FILL",
|
|
2140
|
+
"SHAPE_FILL"
|
|
2141
|
+
],
|
|
2142
|
+
"description": "Text on surface.inverse.",
|
|
2143
|
+
"aliases": {
|
|
2144
|
+
"Value": "color/neutral/0"
|
|
2145
|
+
}
|
|
2146
|
+
},
|
|
2147
|
+
{
|
|
2148
|
+
"name": "text/link",
|
|
2149
|
+
"type": "COLOR",
|
|
2150
|
+
"values": {
|
|
2151
|
+
"Value": "#2b25d9"
|
|
2152
|
+
},
|
|
2153
|
+
"scopes": [
|
|
2154
|
+
"TEXT_FILL",
|
|
2155
|
+
"SHAPE_FILL"
|
|
2156
|
+
],
|
|
2157
|
+
"description": "Brand blue, in every accent mode. A link does not follow the slide accent - it has to stay recognisable as a link.",
|
|
2158
|
+
"aliases": {
|
|
2159
|
+
"Value": "color/blue/400"
|
|
2160
|
+
}
|
|
2161
|
+
},
|
|
2162
|
+
{
|
|
2163
|
+
"name": "text/disabled",
|
|
2164
|
+
"type": "COLOR",
|
|
2165
|
+
"values": {
|
|
2166
|
+
"Value": "#b5b3b3"
|
|
2167
|
+
},
|
|
2168
|
+
"scopes": [
|
|
2169
|
+
"TEXT_FILL",
|
|
2170
|
+
"SHAPE_FILL"
|
|
2171
|
+
],
|
|
2172
|
+
"description": "The one place neutral.300 is correct: it is meant to be too pale to read as active.",
|
|
2173
|
+
"aliases": {
|
|
2174
|
+
"Value": "color/neutral/300"
|
|
2175
|
+
}
|
|
2176
|
+
},
|
|
2177
|
+
{
|
|
2178
|
+
"name": "text/error",
|
|
2179
|
+
"type": "COLOR",
|
|
2180
|
+
"values": {
|
|
2181
|
+
"Value": "#e42521"
|
|
2182
|
+
},
|
|
2183
|
+
"scopes": [
|
|
2184
|
+
"TEXT_FILL",
|
|
2185
|
+
"SHAPE_FILL"
|
|
2186
|
+
],
|
|
2187
|
+
"description": "Error text under a form field. QUOTED from styles.css:732-739 .field__error: 14px Regular, line-height 1.3, color var(--color-red-400). It is the brand red, matching border.error, not status.danger.fg. Contrast 4.58:1 on surface.page (passes the 4.5 body floor by a hair) and about 4.3:1 on surface.card (under it) - the site only puts forms on white; a form on a card should use status.danger.fg for",
|
|
2188
|
+
"aliases": {
|
|
2189
|
+
"Value": "color/red/400"
|
|
2190
|
+
}
|
|
2191
|
+
},
|
|
2192
|
+
{
|
|
2193
|
+
"name": "text/caption",
|
|
2194
|
+
"type": "COLOR",
|
|
2195
|
+
"values": {
|
|
2196
|
+
"Value": "#544d4d"
|
|
2197
|
+
},
|
|
2198
|
+
"scopes": [
|
|
2199
|
+
"TEXT_FILL",
|
|
2200
|
+
"SHAPE_FILL"
|
|
2201
|
+
],
|
|
2202
|
+
"description": "D43 (Fedor, 2026-09-07, charter Q1 - 'split'): the caption ink. Chart axes, legend notes, small labels, placeholders - every grey text under 24px that used to read text.subtle (neutral.400, 3.89 on white). neutral.600 #544d4d scores about 7.5 on the page and 6.8 on the card. Subheadings keep text.subtle - U12 untouched.",
|
|
2203
|
+
"aliases": {
|
|
2204
|
+
"Value": "color/neutral/600"
|
|
2205
|
+
}
|
|
2206
|
+
},
|
|
2207
|
+
{
|
|
2208
|
+
"name": "surface/page",
|
|
2209
|
+
"type": "COLOR",
|
|
2210
|
+
"values": {
|
|
2211
|
+
"Value": "#ffffff"
|
|
2212
|
+
},
|
|
2213
|
+
"scopes": [
|
|
2214
|
+
"FRAME_FILL",
|
|
2215
|
+
"SHAPE_FILL"
|
|
2216
|
+
],
|
|
2217
|
+
"description": "The default ground.",
|
|
2218
|
+
"aliases": {
|
|
2219
|
+
"Value": "color/neutral/0"
|
|
2220
|
+
}
|
|
2221
|
+
},
|
|
2222
|
+
{
|
|
2223
|
+
"name": "surface/card",
|
|
2224
|
+
"type": "COLOR",
|
|
2225
|
+
"values": {
|
|
2226
|
+
"Value": "#f2f2f7"
|
|
2227
|
+
},
|
|
2228
|
+
"scopes": [
|
|
2229
|
+
"FRAME_FILL",
|
|
2230
|
+
"SHAPE_FILL"
|
|
2231
|
+
],
|
|
2232
|
+
"description": "D5. #f2f2f7, not neutral.100 #f2f2f2 - two colours, two jobs. Do not merge them.",
|
|
2233
|
+
"aliases": {
|
|
2234
|
+
"Value": "color/light-blue/100"
|
|
2235
|
+
}
|
|
2236
|
+
},
|
|
2237
|
+
{
|
|
2238
|
+
"name": "surface/sunken",
|
|
2239
|
+
"type": "COLOR",
|
|
2240
|
+
"values": {
|
|
2241
|
+
"Value": "#f2f2f2"
|
|
2242
|
+
},
|
|
2243
|
+
"scopes": [
|
|
2244
|
+
"FRAME_FILL",
|
|
2245
|
+
"SHAPE_FILL"
|
|
2246
|
+
],
|
|
2247
|
+
"description": "Wells and inset panels. This is where #f2f2f2 belongs - on the white ground. It FOLLOWS THE GROUND since 2026-09-17 (D107): neutral.100 on surface.page, neutral.200 on the product ground surface.card, one step darker than what it sits on. The token names the page half, the default; under [data-ground=\"card\"] - and inside every part of @pepperui/css that paints surface.card as a ground - it re-reso",
|
|
2248
|
+
"aliases": {
|
|
2249
|
+
"Value": "ground/page/sunken"
|
|
2250
|
+
}
|
|
2251
|
+
},
|
|
2252
|
+
{
|
|
2253
|
+
"name": "surface/inverse",
|
|
2254
|
+
"type": "COLOR",
|
|
2255
|
+
"values": {
|
|
2256
|
+
"Value": "#231b1b"
|
|
2257
|
+
},
|
|
2258
|
+
"scopes": [
|
|
2259
|
+
"FRAME_FILL",
|
|
2260
|
+
"SHAPE_FILL"
|
|
2261
|
+
],
|
|
2262
|
+
"description": "Dark blocks on a light page. Not neutral.900, which is reserved for text (D4).",
|
|
2263
|
+
"aliases": {
|
|
2264
|
+
"Value": "color/neutral/800"
|
|
2265
|
+
}
|
|
2266
|
+
},
|
|
2267
|
+
{
|
|
2268
|
+
"name": "surface/slot",
|
|
2269
|
+
"type": "COLOR",
|
|
2270
|
+
"values": {
|
|
2271
|
+
"Value": "#ffffff"
|
|
2272
|
+
},
|
|
2273
|
+
"scopes": [
|
|
2274
|
+
"FRAME_FILL",
|
|
2275
|
+
"SHAPE_FILL"
|
|
2276
|
+
],
|
|
2277
|
+
"description": "The inversion rule: a slot on surface.card is white, a slot on surface.page is card. Consumers flip this pair; the token names the default half.",
|
|
2278
|
+
"aliases": {
|
|
2279
|
+
"Value": "color/neutral/0"
|
|
2280
|
+
}
|
|
2281
|
+
},
|
|
2282
|
+
{
|
|
2283
|
+
"name": "surface/glass",
|
|
2284
|
+
"type": "COLOR",
|
|
2285
|
+
"values": {
|
|
2286
|
+
"Value": "#e8e8e87d"
|
|
2287
|
+
},
|
|
2288
|
+
"scopes": [
|
|
2289
|
+
"FRAME_FILL",
|
|
2290
|
+
"SHAPE_FILL"
|
|
2291
|
+
],
|
|
2292
|
+
"description": "D42 (Fedor, 2026-09-07, charter F19): the frosted surface of the site's navigation bar - rgba(232,232,232,.49) over blur.nav. The Navigation menu binds it; before D42 it was a literal (audit Finding 19).",
|
|
2293
|
+
"aliases": {
|
|
2294
|
+
"Value": "color/alpha/grey-232-49"
|
|
2295
|
+
}
|
|
2296
|
+
},
|
|
2297
|
+
{
|
|
2298
|
+
"name": "surface/glass-strong",
|
|
2299
|
+
"type": "COLOR",
|
|
2300
|
+
"values": {
|
|
2301
|
+
"Value": "#ffffffb5"
|
|
2302
|
+
},
|
|
2303
|
+
"scopes": [
|
|
2304
|
+
"FRAME_FILL",
|
|
2305
|
+
"SHAPE_FILL"
|
|
2306
|
+
],
|
|
2307
|
+
"description": "D42: the stronger frost of the site's products panel - rgba(255,255,255,.71) over blur.panel. The Navigation panel binds it.",
|
|
2308
|
+
"aliases": {
|
|
2309
|
+
"Value": "color/alpha/white-71"
|
|
2310
|
+
}
|
|
2311
|
+
},
|
|
2312
|
+
{
|
|
2313
|
+
"name": "overlay/scrim",
|
|
2314
|
+
"type": "COLOR",
|
|
2315
|
+
"values": {
|
|
2316
|
+
"Value": "#231b1b80"
|
|
2317
|
+
},
|
|
2318
|
+
"scopes": [
|
|
2319
|
+
"ALL_FILLS",
|
|
2320
|
+
"STROKE_COLOR"
|
|
2321
|
+
],
|
|
2322
|
+
"description": "The wash behind a dialog, sheet or drawer. One value for all three products; the blur the site adds is a product choice, not a token. Added 2026-09-07 for Dialog (D29 point 6).",
|
|
2323
|
+
"aliases": {
|
|
2324
|
+
"Value": "color/alpha/neutral-800-50"
|
|
2325
|
+
}
|
|
2326
|
+
},
|
|
2327
|
+
{
|
|
2328
|
+
"name": "border/default",
|
|
2329
|
+
"type": "COLOR",
|
|
2330
|
+
"values": {
|
|
2331
|
+
"Value": "#dad9d9"
|
|
2332
|
+
},
|
|
2333
|
+
"scopes": [
|
|
2334
|
+
"STROKE_COLOR"
|
|
2335
|
+
],
|
|
2336
|
+
"description": "Card and input borders.",
|
|
2337
|
+
"aliases": {
|
|
2338
|
+
"Value": "color/neutral/200"
|
|
2339
|
+
}
|
|
2340
|
+
},
|
|
2341
|
+
{
|
|
2342
|
+
"name": "border/strong",
|
|
2343
|
+
"type": "COLOR",
|
|
2344
|
+
"values": {
|
|
2345
|
+
"Value": "#858080"
|
|
2346
|
+
},
|
|
2347
|
+
"scopes": [
|
|
2348
|
+
"STROKE_COLOR"
|
|
2349
|
+
],
|
|
2350
|
+
"description": "Dividers that have to be seen. Note: decorative separators are banned - a border that only decorates should not exist (G19).",
|
|
2351
|
+
"aliases": {
|
|
2352
|
+
"Value": "color/neutral/400"
|
|
2353
|
+
}
|
|
2354
|
+
},
|
|
2355
|
+
{
|
|
2356
|
+
"name": "border/focus",
|
|
2357
|
+
"type": "COLOR",
|
|
2358
|
+
"values": {
|
|
2359
|
+
"Value": "#6a66e4"
|
|
2360
|
+
},
|
|
2361
|
+
"scopes": [
|
|
2362
|
+
"STROKE_COLOR",
|
|
2363
|
+
"EFFECT_COLOR"
|
|
2364
|
+
],
|
|
2365
|
+
"description": "The focus ring hue and border, in every accent mode. QUOTED from styles.css:644-646 `.field__control:focus → border-color var(--color-blue-300), box-shadow 0 0 0 3px rgba(106,102,228,0.15)` — the only focus ring the site defines; `.btn.btn--dark:focus` (:558) changes colour only. CORRECTED 2026-09-07: was color.blue.400 since 2026-09-04 with no source behind it; the Figma Button ring was already q",
|
|
2366
|
+
"aliases": {
|
|
2367
|
+
"Value": "color/blue/300"
|
|
2368
|
+
}
|
|
2369
|
+
},
|
|
2370
|
+
{
|
|
2371
|
+
"name": "border/error",
|
|
2372
|
+
"type": "COLOR",
|
|
2373
|
+
"values": {
|
|
2374
|
+
"Value": "#e42521"
|
|
2375
|
+
},
|
|
2376
|
+
"scopes": [
|
|
2377
|
+
"STROKE_COLOR",
|
|
2378
|
+
"EFFECT_COLOR"
|
|
2379
|
+
],
|
|
2380
|
+
"description": "The error border and ring. QUOTED from styles.css:648-650 `.field__control:invalid:not(:placeholder-shown) → border-color var(--color-red-400), box-shadow 0 0 0 3px rgba(228,37,33,0.10)`. Note it is the brand red (color.red.400 #e42521), NOT color.status.danger #da4144 — the same two reds G2 flagged; the site chose the brand one for the ring. Added 2026-09-07 for the Figma Input (D29 point 6: no l",
|
|
2381
|
+
"aliases": {
|
|
2382
|
+
"Value": "color/red/400"
|
|
2383
|
+
}
|
|
2384
|
+
},
|
|
2385
|
+
{
|
|
2386
|
+
"name": "action/primary/bg",
|
|
2387
|
+
"type": "COLOR",
|
|
2388
|
+
"values": {
|
|
2389
|
+
"Value": "#0b0202"
|
|
2390
|
+
},
|
|
2391
|
+
"scopes": [
|
|
2392
|
+
"FRAME_FILL",
|
|
2393
|
+
"SHAPE_FILL"
|
|
2394
|
+
],
|
|
2395
|
+
"description": "S5 --color-btn-primary-bg is #171717; D4 retires it into neutral.900 #0b0202. If a visual test shows the difference matters, #171717 comes back as its own primitive - until then this is the one place D4's merge is load-bearing and worth watching.",
|
|
2396
|
+
"aliases": {
|
|
2397
|
+
"Value": "color/neutral/900"
|
|
2398
|
+
}
|
|
2399
|
+
},
|
|
2400
|
+
{
|
|
2401
|
+
"name": "action/primary/bg-hover",
|
|
2402
|
+
"type": "COLOR",
|
|
2403
|
+
"values": {
|
|
2404
|
+
"Value": "#3b3333"
|
|
2405
|
+
},
|
|
2406
|
+
"scopes": [
|
|
2407
|
+
"ALL_FILLS",
|
|
2408
|
+
"STROKE_COLOR"
|
|
2409
|
+
],
|
|
2410
|
+
"description": "S5 --color-btn-primary-bg-hover is #404040, one of the four values DL-3 could not name. It is not a ramp value; the derived neutral.700 #3b3333 is the nearest step. FLAGGED: this is a real substitution, not an alias, and M1.5's visual_regress will show it if it is wrong.",
|
|
2411
|
+
"aliases": {
|
|
2412
|
+
"Value": "color/neutral/700"
|
|
2413
|
+
}
|
|
2414
|
+
},
|
|
2415
|
+
{
|
|
2416
|
+
"name": "action/primary/fg",
|
|
2417
|
+
"type": "COLOR",
|
|
2418
|
+
"values": {
|
|
2419
|
+
"Value": "#ffffff"
|
|
2420
|
+
},
|
|
2421
|
+
"scopes": [
|
|
2422
|
+
"TEXT_FILL",
|
|
2423
|
+
"SHAPE_FILL"
|
|
2424
|
+
],
|
|
2425
|
+
"description": "S5 --color-btn-primary-fg is #fafafa, also unnamed in DL-3. Substituted with pure white. FLAGGED like bg-hover - a 2% difference on button text, verified by visual_regress rather than by argument.",
|
|
2426
|
+
"aliases": {
|
|
2427
|
+
"Value": "color/neutral/0"
|
|
2428
|
+
}
|
|
2429
|
+
},
|
|
2430
|
+
{
|
|
2431
|
+
"name": "action/secondary/bg",
|
|
2432
|
+
"type": "COLOR",
|
|
2433
|
+
"values": {
|
|
2434
|
+
"Value": "#ffffff"
|
|
2435
|
+
},
|
|
2436
|
+
"scopes": [
|
|
2437
|
+
"FRAME_FILL",
|
|
2438
|
+
"SHAPE_FILL"
|
|
2439
|
+
],
|
|
2440
|
+
"description": "Outlined button.",
|
|
2441
|
+
"aliases": {
|
|
2442
|
+
"Value": "color/neutral/0"
|
|
2443
|
+
}
|
|
2444
|
+
},
|
|
2445
|
+
{
|
|
2446
|
+
"name": "action/secondary/bg-hover",
|
|
2447
|
+
"type": "COLOR",
|
|
2448
|
+
"values": {
|
|
2449
|
+
"Value": "#f2f2f2"
|
|
2450
|
+
},
|
|
2451
|
+
"scopes": [
|
|
2452
|
+
"ALL_FILLS",
|
|
2453
|
+
"STROKE_COLOR"
|
|
2454
|
+
],
|
|
2455
|
+
"description": "",
|
|
2456
|
+
"aliases": {
|
|
2457
|
+
"Value": "color/neutral/100"
|
|
2458
|
+
}
|
|
2459
|
+
},
|
|
2460
|
+
{
|
|
2461
|
+
"name": "action/secondary/fg",
|
|
2462
|
+
"type": "COLOR",
|
|
2463
|
+
"values": {
|
|
2464
|
+
"Value": "#0b0202"
|
|
2465
|
+
},
|
|
2466
|
+
"scopes": [
|
|
2467
|
+
"TEXT_FILL",
|
|
2468
|
+
"SHAPE_FILL"
|
|
2469
|
+
],
|
|
2470
|
+
"description": "",
|
|
2471
|
+
"aliases": {
|
|
2472
|
+
"Value": "color/neutral/900"
|
|
2473
|
+
}
|
|
2474
|
+
},
|
|
2475
|
+
{
|
|
2476
|
+
"name": "action/secondary/border",
|
|
2477
|
+
"type": "COLOR",
|
|
2478
|
+
"values": {
|
|
2479
|
+
"Value": "#dad9d9"
|
|
2480
|
+
},
|
|
2481
|
+
"scopes": [
|
|
2482
|
+
"ALL_FILLS",
|
|
2483
|
+
"STROKE_COLOR"
|
|
2484
|
+
],
|
|
2485
|
+
"description": "",
|
|
2486
|
+
"aliases": {
|
|
2487
|
+
"Value": "color/neutral/200"
|
|
2488
|
+
}
|
|
2489
|
+
},
|
|
2490
|
+
{
|
|
2491
|
+
"name": "action/danger/bg",
|
|
2492
|
+
"type": "COLOR",
|
|
2493
|
+
"values": {
|
|
2494
|
+
"Value": "#e42521"
|
|
2495
|
+
},
|
|
2496
|
+
"scopes": [
|
|
2497
|
+
"FRAME_FILL",
|
|
2498
|
+
"SHAPE_FILL"
|
|
2499
|
+
],
|
|
2500
|
+
"description": "QUOTED from Paggy app.css:57 .btn--red: background var(--red) = #E42521 (app.css:11), the brand red, red.400. The site has no red button, so Paggy's is the quotation (D17); MAFO's <Button color=danger> is CoreUI's #e55353 and shadcn's destructive variant is bg-destructive - both stated, neither carried (D35).",
|
|
2501
|
+
"aliases": {
|
|
2502
|
+
"Value": "color/red/400"
|
|
2503
|
+
}
|
|
2504
|
+
},
|
|
2505
|
+
{
|
|
2506
|
+
"name": "action/danger/bg-hover",
|
|
2507
|
+
"type": "COLOR",
|
|
2508
|
+
"values": {
|
|
2509
|
+
"Value": "#b61d1a"
|
|
2510
|
+
},
|
|
2511
|
+
"scopes": [
|
|
2512
|
+
"ALL_FILLS",
|
|
2513
|
+
"STROKE_COLOR"
|
|
2514
|
+
],
|
|
2515
|
+
"description": "Paggy app.css:58 .btn--red:hover is #c61f1c, not a ramp value. The nearest step is red.500 #b61d1a - FLAGGED as a real substitution, the same kind as action.primary.bg-hover, and M1.5's visual_regress will show it if it is wrong.",
|
|
2516
|
+
"aliases": {
|
|
2517
|
+
"Value": "color/red/500"
|
|
2518
|
+
}
|
|
2519
|
+
},
|
|
2520
|
+
{
|
|
2521
|
+
"name": "action/danger/fg",
|
|
2522
|
+
"type": "COLOR",
|
|
2523
|
+
"values": {
|
|
2524
|
+
"Value": "#ffffff"
|
|
2525
|
+
},
|
|
2526
|
+
"scopes": [
|
|
2527
|
+
"TEXT_FILL",
|
|
2528
|
+
"SHAPE_FILL"
|
|
2529
|
+
],
|
|
2530
|
+
"description": "QUOTED from Paggy app.css:57 .btn--red: color #fff. White on red.400 is 4.58 - the same pair the contrast matrix already passes as accent.red.on-accent on accent.red.main.",
|
|
2531
|
+
"aliases": {
|
|
2532
|
+
"Value": "color/neutral/0"
|
|
2533
|
+
}
|
|
2534
|
+
},
|
|
2535
|
+
{
|
|
2536
|
+
"name": "action/disabled/bg",
|
|
2537
|
+
"type": "COLOR",
|
|
2538
|
+
"values": {
|
|
2539
|
+
"Value": "#f2f2f2"
|
|
2540
|
+
},
|
|
2541
|
+
"scopes": [
|
|
2542
|
+
"FRAME_FILL",
|
|
2543
|
+
"SHAPE_FILL"
|
|
2544
|
+
],
|
|
2545
|
+
"description": "",
|
|
2546
|
+
"aliases": {
|
|
2547
|
+
"Value": "color/neutral/100"
|
|
2548
|
+
}
|
|
2549
|
+
},
|
|
2550
|
+
{
|
|
2551
|
+
"name": "action/disabled/fg",
|
|
2552
|
+
"type": "COLOR",
|
|
2553
|
+
"values": {
|
|
2554
|
+
"Value": "#b5b3b3"
|
|
2555
|
+
},
|
|
2556
|
+
"scopes": [
|
|
2557
|
+
"TEXT_FILL",
|
|
2558
|
+
"SHAPE_FILL"
|
|
2559
|
+
],
|
|
2560
|
+
"description": "",
|
|
2561
|
+
"aliases": {
|
|
2562
|
+
"Value": "color/neutral/300"
|
|
2563
|
+
}
|
|
2564
|
+
},
|
|
2565
|
+
{
|
|
2566
|
+
"name": "status/success/bg",
|
|
2567
|
+
"type": "COLOR",
|
|
2568
|
+
"values": {
|
|
2569
|
+
"Value": "#d4f2de"
|
|
2570
|
+
},
|
|
2571
|
+
"scopes": [
|
|
2572
|
+
"FRAME_FILL",
|
|
2573
|
+
"SHAPE_FILL"
|
|
2574
|
+
],
|
|
2575
|
+
"description": "S1 slide.css:287 .badge--green background.",
|
|
2576
|
+
"aliases": {
|
|
2577
|
+
"Value": "color/green/100"
|
|
2578
|
+
}
|
|
2579
|
+
},
|
|
2580
|
+
{
|
|
2581
|
+
"name": "status/success/fg",
|
|
2582
|
+
"type": "COLOR",
|
|
2583
|
+
"values": {
|
|
2584
|
+
"Value": "#1a6b36"
|
|
2585
|
+
},
|
|
2586
|
+
"scopes": [
|
|
2587
|
+
"TEXT_FILL",
|
|
2588
|
+
"SHAPE_FILL"
|
|
2589
|
+
],
|
|
2590
|
+
"description": "S1 slide.css:287 .badge--green colour. This pair is quoted from a component that already ships, so its contrast is proven in production rather than asserted here.",
|
|
2591
|
+
"aliases": {
|
|
2592
|
+
"Value": "color/green/600"
|
|
2593
|
+
}
|
|
2594
|
+
},
|
|
2595
|
+
{
|
|
2596
|
+
"name": "status/success/solid",
|
|
2597
|
+
"type": "COLOR",
|
|
2598
|
+
"values": {
|
|
2599
|
+
"Value": "#74af36"
|
|
2600
|
+
},
|
|
2601
|
+
"scopes": [
|
|
2602
|
+
"ALL_FILLS",
|
|
2603
|
+
"STROKE_COLOR"
|
|
2604
|
+
],
|
|
2605
|
+
"description": "S5's solid status green, for dots and fills.",
|
|
2606
|
+
"aliases": {
|
|
2607
|
+
"Value": "color/green/400"
|
|
2608
|
+
}
|
|
2609
|
+
},
|
|
2610
|
+
{
|
|
2611
|
+
"name": "status/danger/bg",
|
|
2612
|
+
"type": "COLOR",
|
|
2613
|
+
"values": {
|
|
2614
|
+
"Value": "#fce9e8"
|
|
2615
|
+
},
|
|
2616
|
+
"scopes": [
|
|
2617
|
+
"FRAME_FILL",
|
|
2618
|
+
"SHAPE_FILL"
|
|
2619
|
+
],
|
|
2620
|
+
"description": "",
|
|
2621
|
+
"aliases": {
|
|
2622
|
+
"Value": "color/red/100"
|
|
2623
|
+
}
|
|
2624
|
+
},
|
|
2625
|
+
{
|
|
2626
|
+
"name": "status/danger/fg",
|
|
2627
|
+
"type": "COLOR",
|
|
2628
|
+
"values": {
|
|
2629
|
+
"Value": "#5b0e0d"
|
|
2630
|
+
},
|
|
2631
|
+
"scopes": [
|
|
2632
|
+
"TEXT_FILL",
|
|
2633
|
+
"SHAPE_FILL"
|
|
2634
|
+
],
|
|
2635
|
+
"description": "Not color.status.danger #da4144 - that value is a solid fill, too light to read as text on a pale tint.",
|
|
2636
|
+
"aliases": {
|
|
2637
|
+
"Value": "color/red/600"
|
|
2638
|
+
}
|
|
2639
|
+
},
|
|
2640
|
+
{
|
|
2641
|
+
"name": "status/danger/solid",
|
|
2642
|
+
"type": "COLOR",
|
|
2643
|
+
"values": {
|
|
2644
|
+
"Value": "#da4144"
|
|
2645
|
+
},
|
|
2646
|
+
"scopes": [
|
|
2647
|
+
"ALL_FILLS",
|
|
2648
|
+
"STROKE_COLOR"
|
|
2649
|
+
],
|
|
2650
|
+
"description": "",
|
|
2651
|
+
"aliases": {
|
|
2652
|
+
"Value": "color/status/danger"
|
|
2653
|
+
}
|
|
2654
|
+
},
|
|
2655
|
+
{
|
|
2656
|
+
"name": "status/warning/bg",
|
|
2657
|
+
"type": "COLOR",
|
|
2658
|
+
"values": {
|
|
2659
|
+
"Value": "#fef9e9"
|
|
2660
|
+
},
|
|
2661
|
+
"scopes": [
|
|
2662
|
+
"FRAME_FILL",
|
|
2663
|
+
"SHAPE_FILL"
|
|
2664
|
+
],
|
|
2665
|
+
"description": "",
|
|
2666
|
+
"aliases": {
|
|
2667
|
+
"Value": "color/yellow/100"
|
|
2668
|
+
}
|
|
2669
|
+
},
|
|
2670
|
+
{
|
|
2671
|
+
"name": "status/warning/fg",
|
|
2672
|
+
"type": "COLOR",
|
|
2673
|
+
"values": {
|
|
2674
|
+
"Value": "#634e0f"
|
|
2675
|
+
},
|
|
2676
|
+
"scopes": [
|
|
2677
|
+
"TEXT_FILL",
|
|
2678
|
+
"SHAPE_FILL"
|
|
2679
|
+
],
|
|
2680
|
+
"description": "Built from the existing yellow ramp - no new hue was invented to complete the set. yellow.600 not 500, because warning text has to clear 4.5 on a pale tint.",
|
|
2681
|
+
"aliases": {
|
|
2682
|
+
"Value": "color/yellow/600"
|
|
2683
|
+
}
|
|
2684
|
+
},
|
|
2685
|
+
{
|
|
2686
|
+
"name": "status/warning/solid",
|
|
2687
|
+
"type": "COLOR",
|
|
2688
|
+
"values": {
|
|
2689
|
+
"Value": "#f9c426"
|
|
2690
|
+
},
|
|
2691
|
+
"scopes": [
|
|
2692
|
+
"ALL_FILLS",
|
|
2693
|
+
"STROKE_COLOR"
|
|
2694
|
+
],
|
|
2695
|
+
"description": "Fills and icons only. Never text - U12.",
|
|
2696
|
+
"aliases": {
|
|
2697
|
+
"Value": "color/yellow/400"
|
|
2698
|
+
}
|
|
2699
|
+
},
|
|
2700
|
+
{
|
|
2701
|
+
"name": "status/info/bg",
|
|
2702
|
+
"type": "COLOR",
|
|
2703
|
+
"values": {
|
|
2704
|
+
"Value": "#e9e9fb"
|
|
2705
|
+
},
|
|
2706
|
+
"scopes": [
|
|
2707
|
+
"FRAME_FILL",
|
|
2708
|
+
"SHAPE_FILL"
|
|
2709
|
+
],
|
|
2710
|
+
"description": "",
|
|
2711
|
+
"aliases": {
|
|
2712
|
+
"Value": "color/blue/100"
|
|
2713
|
+
}
|
|
2714
|
+
},
|
|
2715
|
+
{
|
|
2716
|
+
"name": "status/info/fg",
|
|
2717
|
+
"type": "COLOR",
|
|
2718
|
+
"values": {
|
|
2719
|
+
"Value": "#110e56"
|
|
2720
|
+
},
|
|
2721
|
+
"scopes": [
|
|
2722
|
+
"TEXT_FILL",
|
|
2723
|
+
"SHAPE_FILL"
|
|
2724
|
+
],
|
|
2725
|
+
"description": "",
|
|
2726
|
+
"aliases": {
|
|
2727
|
+
"Value": "color/blue/600"
|
|
2728
|
+
}
|
|
2729
|
+
},
|
|
2730
|
+
{
|
|
2731
|
+
"name": "status/info/solid",
|
|
2732
|
+
"type": "COLOR",
|
|
2733
|
+
"values": {
|
|
2734
|
+
"Value": "#2b25d9"
|
|
2735
|
+
},
|
|
2736
|
+
"scopes": [
|
|
2737
|
+
"ALL_FILLS",
|
|
2738
|
+
"STROKE_COLOR"
|
|
2739
|
+
],
|
|
2740
|
+
"description": "OPEN QUESTION: this is the brand blue, so an info chip and a blue-accent element are the same colour. Acceptable if info is rare; wrong if info chips ever sit on a blue-accent slide. Needs Fedor, and it is the kind of thing only a real screen will settle.",
|
|
2741
|
+
"aliases": {
|
|
2742
|
+
"Value": "color/blue/400"
|
|
2743
|
+
}
|
|
2744
|
+
},
|
|
2745
|
+
{
|
|
2746
|
+
"name": "tint/neutral/bg",
|
|
2747
|
+
"type": "COLOR",
|
|
2748
|
+
"values": {
|
|
2749
|
+
"Value": "#dad9d9"
|
|
2750
|
+
},
|
|
2751
|
+
"scopes": [
|
|
2752
|
+
"FRAME_FILL",
|
|
2753
|
+
"SHAPE_FILL"
|
|
2754
|
+
],
|
|
2755
|
+
"description": "Neutral tinted label background. QUOTED from three surfaces that agree on the pairing: the site tag styles.css:1194-1197 (.badge--red red-200/red-300, --blue blue-200/blue-300, --yellow yellow-300/yellow-600, --neutral neutral-200/neutral-600), Paggy app.css:92-96 (same pairs; --green #D4F2DE/#1A6B36 = green-100/green-600) and the deck slide.css:283-288 (same, plus --dark near-black/white).",
|
|
2756
|
+
"aliases": {
|
|
2757
|
+
"Value": "color/neutral/200"
|
|
2758
|
+
}
|
|
2759
|
+
},
|
|
2760
|
+
{
|
|
2761
|
+
"name": "tint/neutral/fg",
|
|
2762
|
+
"type": "COLOR",
|
|
2763
|
+
"values": {
|
|
2764
|
+
"Value": "#544d4d"
|
|
2765
|
+
},
|
|
2766
|
+
"scopes": [
|
|
2767
|
+
"TEXT_FILL",
|
|
2768
|
+
"SHAPE_FILL"
|
|
2769
|
+
],
|
|
2770
|
+
"description": "Neutral tinted label text. The site uses neutral-600; Paggy app and slide use neutral-400, which is 2.1:1 on neutral-200 and fails every text floor - the 600 is taken (4.4:1, passes 3.0 large, a hair under 4.5 at 12px). Added 2026-09-07 for the Figma Badge.",
|
|
2771
|
+
"aliases": {
|
|
2772
|
+
"Value": "color/neutral/600"
|
|
2773
|
+
}
|
|
2774
|
+
},
|
|
2775
|
+
{
|
|
2776
|
+
"name": "tint/blue/bg",
|
|
2777
|
+
"type": "COLOR",
|
|
2778
|
+
"values": {
|
|
2779
|
+
"Value": "#d4d3f7"
|
|
2780
|
+
},
|
|
2781
|
+
"scopes": [
|
|
2782
|
+
"FRAME_FILL",
|
|
2783
|
+
"SHAPE_FILL"
|
|
2784
|
+
],
|
|
2785
|
+
"description": "Blue tinted label background - the hue at 200, in every accent mode. QUOTED from three surfaces that agree on the pairing: the site tag styles.css:1194-1197 (.badge--red red-200/red-300, --blue blue-200/blue-300, --yellow yellow-300/yellow-600, --neutral neutral-200/neutral-600), Paggy app.css:92-96 (same pairs; --green #D4F2DE/#1A6B36 = green-100/green-600) and the deck slide.css:283-288 (same, p",
|
|
2786
|
+
"aliases": {
|
|
2787
|
+
"Value": "color/blue/200"
|
|
2788
|
+
}
|
|
2789
|
+
},
|
|
2790
|
+
{
|
|
2791
|
+
"name": "tint/blue/fg",
|
|
2792
|
+
"type": "COLOR",
|
|
2793
|
+
"values": {
|
|
2794
|
+
"Value": "#6a66e4"
|
|
2795
|
+
},
|
|
2796
|
+
"scopes": [
|
|
2797
|
+
"TEXT_FILL",
|
|
2798
|
+
"SHAPE_FILL"
|
|
2799
|
+
],
|
|
2800
|
+
"description": "Blue tinted label text - the hue at 300. Not accent.blue.light: a badge tone is fixed, it does not follow the slide accent.",
|
|
2801
|
+
"aliases": {
|
|
2802
|
+
"Value": "color/blue/300"
|
|
2803
|
+
}
|
|
2804
|
+
},
|
|
2805
|
+
{
|
|
2806
|
+
"name": "tint/red/bg",
|
|
2807
|
+
"type": "COLOR",
|
|
2808
|
+
"values": {
|
|
2809
|
+
"Value": "#f9d3d2"
|
|
2810
|
+
},
|
|
2811
|
+
"scopes": [
|
|
2812
|
+
"FRAME_FILL",
|
|
2813
|
+
"SHAPE_FILL"
|
|
2814
|
+
],
|
|
2815
|
+
"description": "Red tinted label background. QUOTED from three surfaces that agree on the pairing: the site tag styles.css:1194-1197 (.badge--red red-200/red-300, --blue blue-200/blue-300, --yellow yellow-300/yellow-600, --neutral neutral-200/neutral-600), Paggy app.css:92-96 (same pairs; --green #D4F2DE/#1A6B36 = green-100/green-600) and the deck slide.css:283-288 (same, plus --dark near-black/white).",
|
|
2816
|
+
"aliases": {
|
|
2817
|
+
"Value": "color/red/200"
|
|
2818
|
+
}
|
|
2819
|
+
},
|
|
2820
|
+
{
|
|
2821
|
+
"name": "tint/red/fg",
|
|
2822
|
+
"type": "COLOR",
|
|
2823
|
+
"values": {
|
|
2824
|
+
"Value": "#ec6663"
|
|
2825
|
+
},
|
|
2826
|
+
"scopes": [
|
|
2827
|
+
"TEXT_FILL",
|
|
2828
|
+
"SHAPE_FILL"
|
|
2829
|
+
],
|
|
2830
|
+
"description": "Red tinted label text. red-300 on red-200 is 2.6:1 - below the 3.0 large floor; the three sources all ship it (D18-style accepted exception, recorded here, Fedor's call as with the red subtitle).",
|
|
2831
|
+
"aliases": {
|
|
2832
|
+
"Value": "color/red/300"
|
|
2833
|
+
}
|
|
2834
|
+
},
|
|
2835
|
+
{
|
|
2836
|
+
"name": "tint/yellow/bg",
|
|
2837
|
+
"type": "COLOR",
|
|
2838
|
+
"values": {
|
|
2839
|
+
"Value": "#fad567"
|
|
2840
|
+
},
|
|
2841
|
+
"scopes": [
|
|
2842
|
+
"FRAME_FILL",
|
|
2843
|
+
"SHAPE_FILL"
|
|
2844
|
+
],
|
|
2845
|
+
"description": "Yellow tinted label background - the hue at 300, not 200: the only tone whose tint is one step darker, because yellow-200 is too pale to read as a label. All three sources agree.",
|
|
2846
|
+
"aliases": {
|
|
2847
|
+
"Value": "color/yellow/300"
|
|
2848
|
+
}
|
|
2849
|
+
},
|
|
2850
|
+
{
|
|
2851
|
+
"name": "tint/yellow/fg",
|
|
2852
|
+
"type": "COLOR",
|
|
2853
|
+
"values": {
|
|
2854
|
+
"Value": "#634e0f"
|
|
2855
|
+
},
|
|
2856
|
+
"scopes": [
|
|
2857
|
+
"TEXT_FILL",
|
|
2858
|
+
"SHAPE_FILL"
|
|
2859
|
+
],
|
|
2860
|
+
"description": "Yellow tinted label text - yellow-600, U12: yellow is never text at its main step.",
|
|
2861
|
+
"aliases": {
|
|
2862
|
+
"Value": "color/yellow/600"
|
|
2863
|
+
}
|
|
2864
|
+
},
|
|
2865
|
+
{
|
|
2866
|
+
"name": "tint/green/bg",
|
|
2867
|
+
"type": "COLOR",
|
|
2868
|
+
"values": {
|
|
2869
|
+
"Value": "#d4f2de"
|
|
2870
|
+
},
|
|
2871
|
+
"scopes": [
|
|
2872
|
+
"FRAME_FILL",
|
|
2873
|
+
"SHAPE_FILL"
|
|
2874
|
+
],
|
|
2875
|
+
"description": "Green tinted label background - the same pair as status.success, kept as its own role because a green tag is not always a success state (D23 greens).",
|
|
2876
|
+
"aliases": {
|
|
2877
|
+
"Value": "color/green/100"
|
|
2878
|
+
}
|
|
2879
|
+
},
|
|
2880
|
+
{
|
|
2881
|
+
"name": "tint/green/fg",
|
|
2882
|
+
"type": "COLOR",
|
|
2883
|
+
"values": {
|
|
2884
|
+
"Value": "#1a6b36"
|
|
2885
|
+
},
|
|
2886
|
+
"scopes": [
|
|
2887
|
+
"TEXT_FILL",
|
|
2888
|
+
"SHAPE_FILL"
|
|
2889
|
+
],
|
|
2890
|
+
"description": "Green tinted label text.",
|
|
2891
|
+
"aliases": {
|
|
2892
|
+
"Value": "color/green/600"
|
|
2893
|
+
}
|
|
2894
|
+
},
|
|
2895
|
+
{
|
|
2896
|
+
"name": "motion/state",
|
|
2897
|
+
"type": "FLOAT",
|
|
2898
|
+
"values": {
|
|
2899
|
+
"Value": 150
|
|
2900
|
+
},
|
|
2901
|
+
"scopes": [],
|
|
2902
|
+
"description": "Hover, focus, colour. The default.",
|
|
2903
|
+
"aliases": {
|
|
2904
|
+
"Value": "duration/fast"
|
|
2905
|
+
}
|
|
2906
|
+
},
|
|
2907
|
+
{
|
|
2908
|
+
"name": "motion/move",
|
|
2909
|
+
"type": "FLOAT",
|
|
2910
|
+
"values": {
|
|
2911
|
+
"Value": 200
|
|
2912
|
+
},
|
|
2913
|
+
"scopes": [],
|
|
2914
|
+
"description": "Transform and opacity.",
|
|
2915
|
+
"aliases": {
|
|
2916
|
+
"Value": "duration/medium"
|
|
2917
|
+
}
|
|
2918
|
+
},
|
|
2919
|
+
{
|
|
2920
|
+
"name": "motion/menu",
|
|
2921
|
+
"type": "FLOAT",
|
|
2922
|
+
"values": {
|
|
2923
|
+
"Value": 250
|
|
2924
|
+
},
|
|
2925
|
+
"scopes": [],
|
|
2926
|
+
"description": "The site's locked dropdown: max-height, opacity, margin-top.",
|
|
2927
|
+
"aliases": {
|
|
2928
|
+
"Value": "duration/slow"
|
|
2929
|
+
}
|
|
2930
|
+
},
|
|
2931
|
+
{
|
|
2932
|
+
"name": "motion/easing",
|
|
2933
|
+
"type": "STRING",
|
|
2934
|
+
"values": {
|
|
2935
|
+
"Value": "cubic-bezier(0.25, 0.1, 0.25, 1)"
|
|
2936
|
+
},
|
|
2937
|
+
"scopes": [],
|
|
2938
|
+
"description": "",
|
|
2939
|
+
"aliases": {
|
|
2940
|
+
"Value": "easing/standard"
|
|
2941
|
+
}
|
|
2942
|
+
},
|
|
2943
|
+
{
|
|
2944
|
+
"name": "motion/easing-enter",
|
|
2945
|
+
"type": "STRING",
|
|
2946
|
+
"values": {
|
|
2947
|
+
"Value": "cubic-bezier(0.16, 1, 0.3, 1)"
|
|
2948
|
+
},
|
|
2949
|
+
"scopes": [],
|
|
2950
|
+
"description": "The one hand-tuned curve in the codebase. Things arriving, not things leaving.",
|
|
2951
|
+
"aliases": {
|
|
2952
|
+
"Value": "easing/decelerate"
|
|
2953
|
+
}
|
|
2954
|
+
},
|
|
2955
|
+
{
|
|
2956
|
+
"name": "layout/gutter",
|
|
2957
|
+
"type": "FLOAT",
|
|
2958
|
+
"values": {
|
|
2959
|
+
"Value": 24
|
|
2960
|
+
},
|
|
2961
|
+
"scopes": [
|
|
2962
|
+
"GAP",
|
|
2963
|
+
"WIDTH_HEIGHT"
|
|
2964
|
+
],
|
|
2965
|
+
"description": "",
|
|
2966
|
+
"aliases": {
|
|
2967
|
+
"Value": "space/24"
|
|
2968
|
+
}
|
|
2969
|
+
},
|
|
2970
|
+
{
|
|
2971
|
+
"name": "layout/section-gap",
|
|
2972
|
+
"type": "FLOAT",
|
|
2973
|
+
"values": {
|
|
2974
|
+
"Value": 32
|
|
2975
|
+
},
|
|
2976
|
+
"scopes": [
|
|
2977
|
+
"GAP",
|
|
2978
|
+
"WIDTH_HEIGHT"
|
|
2979
|
+
],
|
|
2980
|
+
"description": "S1 --gap-section.",
|
|
2981
|
+
"aliases": {
|
|
2982
|
+
"Value": "space/32"
|
|
2983
|
+
}
|
|
2984
|
+
},
|
|
2985
|
+
{
|
|
2986
|
+
"name": "layout/heading-gap",
|
|
2987
|
+
"type": "FLOAT",
|
|
2988
|
+
"values": {
|
|
2989
|
+
"Value": 64
|
|
2990
|
+
},
|
|
2991
|
+
"scopes": [
|
|
2992
|
+
"GAP",
|
|
2993
|
+
"WIDTH_HEIGHT"
|
|
2994
|
+
],
|
|
2995
|
+
"description": "S1 --gap-heading. Heading pair to content.",
|
|
2996
|
+
"aliases": {
|
|
2997
|
+
"Value": "space/64"
|
|
2998
|
+
}
|
|
2999
|
+
},
|
|
3000
|
+
{
|
|
3001
|
+
"name": "layout/card-padding",
|
|
3002
|
+
"type": "FLOAT",
|
|
3003
|
+
"values": {
|
|
3004
|
+
"Value": 20
|
|
3005
|
+
},
|
|
3006
|
+
"scopes": [
|
|
3007
|
+
"GAP",
|
|
3008
|
+
"WIDTH_HEIGHT"
|
|
3009
|
+
],
|
|
3010
|
+
"description": "S1 --card-pad.",
|
|
3011
|
+
"aliases": {
|
|
3012
|
+
"Value": "space/20"
|
|
3013
|
+
}
|
|
3014
|
+
},
|
|
3015
|
+
{
|
|
3016
|
+
"name": "layout/card-gap",
|
|
3017
|
+
"type": "FLOAT",
|
|
3018
|
+
"values": {
|
|
3019
|
+
"Value": 12
|
|
3020
|
+
},
|
|
3021
|
+
"scopes": [
|
|
3022
|
+
"GAP",
|
|
3023
|
+
"WIDTH_HEIGHT"
|
|
3024
|
+
],
|
|
3025
|
+
"description": "S1 --card-gap.",
|
|
3026
|
+
"aliases": {
|
|
3027
|
+
"Value": "space/12"
|
|
3028
|
+
}
|
|
3029
|
+
},
|
|
3030
|
+
{
|
|
3031
|
+
"name": "layout/bullet-gap",
|
|
3032
|
+
"type": "FLOAT",
|
|
3033
|
+
"values": {
|
|
3034
|
+
"Value": 8
|
|
3035
|
+
},
|
|
3036
|
+
"scopes": [
|
|
3037
|
+
"GAP",
|
|
3038
|
+
"WIDTH_HEIGHT"
|
|
3039
|
+
],
|
|
3040
|
+
"description": "Locked. 8px, and there is a test for it (G19).",
|
|
3041
|
+
"aliases": {
|
|
3042
|
+
"Value": "space/8"
|
|
3043
|
+
}
|
|
3044
|
+
},
|
|
3045
|
+
{
|
|
3046
|
+
"name": "layout/content-width",
|
|
3047
|
+
"type": "FLOAT",
|
|
3048
|
+
"values": {
|
|
3049
|
+
"Value": 1320
|
|
3050
|
+
},
|
|
3051
|
+
"scopes": [
|
|
3052
|
+
"GAP",
|
|
3053
|
+
"WIDTH_HEIGHT"
|
|
3054
|
+
],
|
|
3055
|
+
"description": "",
|
|
3056
|
+
"aliases": {
|
|
3057
|
+
"Value": "container/web"
|
|
3058
|
+
}
|
|
3059
|
+
},
|
|
3060
|
+
{
|
|
3061
|
+
"name": "layout/slide-margin",
|
|
3062
|
+
"type": "FLOAT",
|
|
3063
|
+
"values": {
|
|
3064
|
+
"Value": 64
|
|
3065
|
+
},
|
|
3066
|
+
"scopes": [
|
|
3067
|
+
"GAP",
|
|
3068
|
+
"WIDTH_HEIGHT"
|
|
3069
|
+
],
|
|
3070
|
+
"description": "",
|
|
3071
|
+
"aliases": {
|
|
3072
|
+
"Value": "canvas/slide-margin"
|
|
3073
|
+
}
|
|
3074
|
+
},
|
|
3075
|
+
{
|
|
3076
|
+
"name": "chart/text",
|
|
3077
|
+
"type": "COLOR",
|
|
3078
|
+
"values": {
|
|
3079
|
+
"Value": "#0b0202"
|
|
3080
|
+
},
|
|
3081
|
+
"scopes": [
|
|
3082
|
+
"TEXT_FILL",
|
|
3083
|
+
"SHAPE_FILL"
|
|
3084
|
+
],
|
|
3085
|
+
"description": "All chart text — axis labels, data labels, legend. Paggy charts.js:16 INK #0B0202 = neutral.900 (the same ink as text/default; its own role because a chart theme object reads a chart key, not the page's). Size is the label/medium role: 15 on a slide (Paggy's --fs-caption floor, 'nothing on a slide goes smaller'), 12 on web (the dashboard concepts' Label Medium). The concepts set axis text in neutr",
|
|
3086
|
+
"aliases": {
|
|
3087
|
+
"Value": "color/neutral/900"
|
|
3088
|
+
}
|
|
3089
|
+
},
|
|
3090
|
+
{
|
|
3091
|
+
"name": "chart/grid",
|
|
3092
|
+
"type": "COLOR",
|
|
3093
|
+
"values": {
|
|
3094
|
+
"Value": "#00000012"
|
|
3095
|
+
},
|
|
3096
|
+
"scopes": [
|
|
3097
|
+
"ALL_FILLS",
|
|
3098
|
+
"STROKE_COLOR"
|
|
3099
|
+
],
|
|
3100
|
+
"description": "The light horizontal grid. Paggy charts.js:17 GRID rgba(0,0,0,0.07) as splitLine — no axis lines, no ticks, no bottom baseline (charts.js:213–214, 230). The concepts draw it as 1px neutral/200 (chart-recipes.md) — the opaque near-equivalent, stated.",
|
|
3101
|
+
"aliases": {
|
|
3102
|
+
"Value": "color/alpha/black-7"
|
|
3103
|
+
}
|
|
3104
|
+
},
|
|
3105
|
+
{
|
|
3106
|
+
"name": "chart/rest",
|
|
3107
|
+
"type": "COLOR",
|
|
3108
|
+
"values": {
|
|
3109
|
+
"Value": "#dad9d9"
|
|
3110
|
+
},
|
|
3111
|
+
"scopes": [
|
|
3112
|
+
"ALL_FILLS",
|
|
3113
|
+
"STROKE_COLOR"
|
|
3114
|
+
],
|
|
3115
|
+
"description": "The second slice of a TWO-slice donut — share-vs-rest reads with slice 1 in the accent's main and slice 2 always Neutral Lighter #DAD9D9 (Fedor 2026-08-12; charts.js:280–291 pieChart, pptx_export.py:640). Also the empty track under a progress or ranking bar (chart-recipes.md §Horizontal bars).",
|
|
3116
|
+
"aliases": {
|
|
3117
|
+
"Value": "color/neutral/200"
|
|
3118
|
+
}
|
|
3119
|
+
},
|
|
3120
|
+
{
|
|
3121
|
+
"name": "chart/on-fill",
|
|
3122
|
+
"type": "COLOR",
|
|
3123
|
+
"values": {
|
|
3124
|
+
"Value": "#ffffff"
|
|
3125
|
+
},
|
|
3126
|
+
"scopes": [
|
|
3127
|
+
"ALL_FILLS",
|
|
3128
|
+
"STROKE_COLOR"
|
|
3129
|
+
],
|
|
3130
|
+
"description": "The white on a filled bar or slice: the 3px borders between donut segments (charts.js:352 borderColor #fff, borderWidth 3), and a label drawn inside any fill that is not an accent's main colour (charts.js:178 label_inside #fff). Since D110 (2026-09-17) a label inside an accent's MAIN fill takes that accent's own on-accent instead - near-black on yellow, where this white read 1.62 to 1 - through th",
|
|
3131
|
+
"aliases": {
|
|
3132
|
+
"Value": "color/neutral/0"
|
|
3133
|
+
}
|
|
3134
|
+
}
|
|
3135
|
+
]
|
|
3136
|
+
},
|
|
3137
|
+
"Accent": {
|
|
3138
|
+
"modes": [
|
|
3139
|
+
"blue",
|
|
3140
|
+
"red",
|
|
3141
|
+
"yellow",
|
|
3142
|
+
"multicolor"
|
|
3143
|
+
],
|
|
3144
|
+
"variables": [
|
|
3145
|
+
{
|
|
3146
|
+
"name": "main",
|
|
3147
|
+
"type": "COLOR",
|
|
3148
|
+
"values": {
|
|
3149
|
+
"blue": "#2b25d9",
|
|
3150
|
+
"red": "#e42521",
|
|
3151
|
+
"yellow": "#f9c426",
|
|
3152
|
+
"multicolor": "#e42521"
|
|
3153
|
+
},
|
|
3154
|
+
"scopes": [
|
|
3155
|
+
"ALL_FILLS",
|
|
3156
|
+
"STROKE_COLOR"
|
|
3157
|
+
],
|
|
3158
|
+
"description": "",
|
|
3159
|
+
"aliases": {
|
|
3160
|
+
"blue": "color/blue/400",
|
|
3161
|
+
"red": "color/red/400",
|
|
3162
|
+
"yellow": "color/yellow/400",
|
|
3163
|
+
"multicolor": "color/red/400"
|
|
3164
|
+
}
|
|
3165
|
+
},
|
|
3166
|
+
{
|
|
3167
|
+
"name": "light",
|
|
3168
|
+
"type": "COLOR",
|
|
3169
|
+
"values": {
|
|
3170
|
+
"blue": "#6a66e4",
|
|
3171
|
+
"red": "#ec6663",
|
|
3172
|
+
"yellow": "#fad567",
|
|
3173
|
+
"multicolor": "#ec6663"
|
|
3174
|
+
},
|
|
3175
|
+
"scopes": [
|
|
3176
|
+
"ALL_FILLS",
|
|
3177
|
+
"STROKE_COLOR"
|
|
3178
|
+
],
|
|
3179
|
+
"description": "",
|
|
3180
|
+
"aliases": {
|
|
3181
|
+
"blue": "color/blue/300",
|
|
3182
|
+
"red": "color/red/300",
|
|
3183
|
+
"yellow": "color/yellow/300",
|
|
3184
|
+
"multicolor": "color/red/300"
|
|
3185
|
+
}
|
|
3186
|
+
},
|
|
3187
|
+
{
|
|
3188
|
+
"name": "lighter",
|
|
3189
|
+
"type": "COLOR",
|
|
3190
|
+
"values": {
|
|
3191
|
+
"blue": "#d4d3f7",
|
|
3192
|
+
"red": "#f9d3d2",
|
|
3193
|
+
"yellow": "#fdf3d3",
|
|
3194
|
+
"multicolor": "#f9d3d2"
|
|
3195
|
+
},
|
|
3196
|
+
"scopes": [
|
|
3197
|
+
"ALL_FILLS",
|
|
3198
|
+
"STROKE_COLOR"
|
|
3199
|
+
],
|
|
3200
|
+
"description": "",
|
|
3201
|
+
"aliases": {
|
|
3202
|
+
"blue": "color/blue/200",
|
|
3203
|
+
"red": "color/red/200",
|
|
3204
|
+
"yellow": "color/yellow/200",
|
|
3205
|
+
"multicolor": "color/red/200"
|
|
3206
|
+
}
|
|
3207
|
+
},
|
|
3208
|
+
{
|
|
3209
|
+
"name": "bg",
|
|
3210
|
+
"type": "COLOR",
|
|
3211
|
+
"values": {
|
|
3212
|
+
"blue": "#e9e9fb",
|
|
3213
|
+
"red": "#fce9e8",
|
|
3214
|
+
"yellow": "#fef9e9",
|
|
3215
|
+
"multicolor": "#fce9e8"
|
|
3216
|
+
},
|
|
3217
|
+
"scopes": [
|
|
3218
|
+
"ALL_FILLS",
|
|
3219
|
+
"STROKE_COLOR"
|
|
3220
|
+
],
|
|
3221
|
+
"description": "",
|
|
3222
|
+
"aliases": {
|
|
3223
|
+
"blue": "color/blue/100",
|
|
3224
|
+
"red": "color/red/100",
|
|
3225
|
+
"yellow": "color/yellow/100",
|
|
3226
|
+
"multicolor": "color/red/100"
|
|
3227
|
+
}
|
|
3228
|
+
},
|
|
3229
|
+
{
|
|
3230
|
+
"name": "dark",
|
|
3231
|
+
"type": "COLOR",
|
|
3232
|
+
"values": {
|
|
3233
|
+
"blue": "#0c0b41",
|
|
3234
|
+
"red": "#440b09",
|
|
3235
|
+
"yellow": "#4a3a0b",
|
|
3236
|
+
"multicolor": "#231b1b"
|
|
3237
|
+
},
|
|
3238
|
+
"scopes": [
|
|
3239
|
+
"ALL_FILLS",
|
|
3240
|
+
"STROKE_COLOR"
|
|
3241
|
+
],
|
|
3242
|
+
"description": "Table header bar only.",
|
|
3243
|
+
"aliases": {
|
|
3244
|
+
"blue": "color/blue/700",
|
|
3245
|
+
"red": "color/red/700",
|
|
3246
|
+
"yellow": "color/yellow/700",
|
|
3247
|
+
"multicolor": "color/neutral/800"
|
|
3248
|
+
}
|
|
3249
|
+
},
|
|
3250
|
+
{
|
|
3251
|
+
"name": "on-accent",
|
|
3252
|
+
"type": "COLOR",
|
|
3253
|
+
"values": {
|
|
3254
|
+
"blue": "#ffffff",
|
|
3255
|
+
"red": "#ffffff",
|
|
3256
|
+
"yellow": "#0b0202",
|
|
3257
|
+
"multicolor": "#ffffff"
|
|
3258
|
+
},
|
|
3259
|
+
"scopes": [
|
|
3260
|
+
"TEXT_FILL",
|
|
3261
|
+
"SHAPE_FILL"
|
|
3262
|
+
],
|
|
3263
|
+
"description": "White reads on this hue.",
|
|
3264
|
+
"aliases": {
|
|
3265
|
+
"blue": "color/neutral/0",
|
|
3266
|
+
"red": "color/neutral/0",
|
|
3267
|
+
"yellow": "color/neutral/900",
|
|
3268
|
+
"multicolor": "color/neutral/0"
|
|
3269
|
+
}
|
|
3270
|
+
},
|
|
3271
|
+
{
|
|
3272
|
+
"name": "heading",
|
|
3273
|
+
"type": "COLOR",
|
|
3274
|
+
"values": {
|
|
3275
|
+
"blue": "#6a66e4",
|
|
3276
|
+
"red": "#ec6663",
|
|
3277
|
+
"yellow": "#858080",
|
|
3278
|
+
"multicolor": "#858080"
|
|
3279
|
+
},
|
|
3280
|
+
"scopes": [
|
|
3281
|
+
"TEXT_FILL",
|
|
3282
|
+
"SHAPE_FILL"
|
|
3283
|
+
],
|
|
3284
|
+
"description": "U12: the subtitle colour. Blue and red take their light step; yellow and multicolor take neutral.400. Promoting this out of a QA checklist into the token source is item 1.4.9 - a reviewer should not have to remember it.",
|
|
3285
|
+
"aliases": {
|
|
3286
|
+
"blue": "color/blue/300",
|
|
3287
|
+
"red": "color/red/300",
|
|
3288
|
+
"yellow": "color/neutral/400",
|
|
3289
|
+
"multicolor": "color/neutral/400"
|
|
3290
|
+
}
|
|
3291
|
+
},
|
|
3292
|
+
{
|
|
3293
|
+
"name": "icon-ink",
|
|
3294
|
+
"type": "COLOR",
|
|
3295
|
+
"values": {
|
|
3296
|
+
"blue": "#6a66e4",
|
|
3297
|
+
"red": "#ec6663",
|
|
3298
|
+
"yellow": "#f9c426",
|
|
3299
|
+
"multicolor": "#ec6663"
|
|
3300
|
+
},
|
|
3301
|
+
"scopes": [
|
|
3302
|
+
"TEXT_FILL",
|
|
3303
|
+
"SHAPE_FILL"
|
|
3304
|
+
],
|
|
3305
|
+
"description": "Icon-list glyph ink. The ONLY component that reads this (Fedor 2026-08-10).",
|
|
3306
|
+
"aliases": {
|
|
3307
|
+
"blue": "color/blue/300",
|
|
3308
|
+
"red": "color/red/300",
|
|
3309
|
+
"yellow": "color/yellow/400",
|
|
3310
|
+
"multicolor": "color/red/300"
|
|
3311
|
+
}
|
|
3312
|
+
},
|
|
3313
|
+
{
|
|
3314
|
+
"name": "text",
|
|
3315
|
+
"type": "COLOR",
|
|
3316
|
+
"values": {
|
|
3317
|
+
"blue": "#2b25d9",
|
|
3318
|
+
"red": "#e42521",
|
|
3319
|
+
"yellow": "#0b0202",
|
|
3320
|
+
"multicolor": "#e42521"
|
|
3321
|
+
},
|
|
3322
|
+
"scopes": [
|
|
3323
|
+
"TEXT_FILL",
|
|
3324
|
+
"SHAPE_FILL"
|
|
3325
|
+
],
|
|
3326
|
+
"description": "The accent used as text ink on a light surface — Paggy slide.css .insight__text (color: var(--accent)) with the [data-accent=yellow] .insight__text rule that sets color to var(--ink): yellow is unreadable as text on white (about 1.6:1), so it is neutral/900 the way D24's on-accent flips. Blue and red pass 4.5 on white (blue.400 8.4:1). Added 2026-09-07 for Insight block.",
|
|
3327
|
+
"aliases": {
|
|
3328
|
+
"blue": "color/blue/400",
|
|
3329
|
+
"red": "color/red/400",
|
|
3330
|
+
"yellow": "color/neutral/900",
|
|
3331
|
+
"multicolor": "color/red/400"
|
|
3332
|
+
}
|
|
3333
|
+
},
|
|
3334
|
+
{
|
|
3335
|
+
"name": "selected",
|
|
3336
|
+
"type": "COLOR",
|
|
3337
|
+
"values": {
|
|
3338
|
+
"blue": "#e9e9fb",
|
|
3339
|
+
"red": "#fce9e8",
|
|
3340
|
+
"yellow": "#fef9e9",
|
|
3341
|
+
"multicolor": "#dad9d9"
|
|
3342
|
+
},
|
|
3343
|
+
"scopes": [
|
|
3344
|
+
"ALL_FILLS",
|
|
3345
|
+
"STROKE_COLOR"
|
|
3346
|
+
],
|
|
3347
|
+
"description": "The wash of a SELECTED row in a Table: the accent's palest tint, the value accent.blue.bg holds. Its own role since D110 (2026-09-17) because multicolor's is not a tint at all - table.row.selected-bg aliases it and the build emits one per accent mode, the way table.header.bg and the pill tint are built.",
|
|
3348
|
+
"aliases": {
|
|
3349
|
+
"blue": "color/blue/100",
|
|
3350
|
+
"red": "color/red/100",
|
|
3351
|
+
"yellow": "color/yellow/100",
|
|
3352
|
+
"multicolor": "color/neutral/200"
|
|
3353
|
+
}
|
|
3354
|
+
},
|
|
3355
|
+
{
|
|
3356
|
+
"name": "pill-tint",
|
|
3357
|
+
"type": "COLOR",
|
|
3358
|
+
"values": {
|
|
3359
|
+
"blue": "#d4d3f7",
|
|
3360
|
+
"red": "#f9d3d2",
|
|
3361
|
+
"yellow": "#fad567",
|
|
3362
|
+
"multicolor": "#dad9d9"
|
|
3363
|
+
},
|
|
3364
|
+
"scopes": [
|
|
3365
|
+
"ALL_FILLS",
|
|
3366
|
+
"STROKE_COLOR"
|
|
3367
|
+
],
|
|
3368
|
+
"description": "The deck table's row-header pill tint — Paggy slide.css .ctbl__cell--hcol: background var(--accent-lighter) (the lighter tint). Its own role because the yellow and multicolor values are not the lighter tint; table.header.pill-tint aliases it. Added 2026-09-07 when the Table build rendered a red pill in multicolor.",
|
|
3369
|
+
"aliases": {
|
|
3370
|
+
"blue": "color/blue/200",
|
|
3371
|
+
"red": "color/red/200",
|
|
3372
|
+
"yellow": "color/yellow/300",
|
|
3373
|
+
"multicolor": "color/neutral/200"
|
|
3374
|
+
}
|
|
3375
|
+
},
|
|
3376
|
+
{
|
|
3377
|
+
"name": "chart/1",
|
|
3378
|
+
"type": "COLOR",
|
|
3379
|
+
"values": {
|
|
3380
|
+
"blue": "#2b25d9",
|
|
3381
|
+
"red": "#e42521",
|
|
3382
|
+
"yellow": "#f9c426",
|
|
3383
|
+
"multicolor": "#e42521"
|
|
3384
|
+
},
|
|
3385
|
+
"scopes": [
|
|
3386
|
+
"ALL_FILLS",
|
|
3387
|
+
"STROKE_COLOR"
|
|
3388
|
+
],
|
|
3389
|
+
"description": "Series 1 — the accent's main.",
|
|
3390
|
+
"aliases": {
|
|
3391
|
+
"blue": "color/blue/400",
|
|
3392
|
+
"red": "color/red/400",
|
|
3393
|
+
"yellow": "color/yellow/400",
|
|
3394
|
+
"multicolor": "color/red/400"
|
|
3395
|
+
}
|
|
3396
|
+
},
|
|
3397
|
+
{
|
|
3398
|
+
"name": "chart/2",
|
|
3399
|
+
"type": "COLOR",
|
|
3400
|
+
"values": {
|
|
3401
|
+
"blue": "#6a66e4",
|
|
3402
|
+
"red": "#ec6663",
|
|
3403
|
+
"yellow": "#858080",
|
|
3404
|
+
"multicolor": "#f9c426"
|
|
3405
|
+
},
|
|
3406
|
+
"scopes": [
|
|
3407
|
+
"ALL_FILLS",
|
|
3408
|
+
"STROKE_COLOR"
|
|
3409
|
+
],
|
|
3410
|
+
"description": "Series 2 — a readable MID tint (2026-07-09 fix: pale tints vanished as lines on the grey card).",
|
|
3411
|
+
"aliases": {
|
|
3412
|
+
"blue": "color/blue/300",
|
|
3413
|
+
"red": "color/red/300",
|
|
3414
|
+
"yellow": "color/neutral/400",
|
|
3415
|
+
"multicolor": "color/yellow/400"
|
|
3416
|
+
}
|
|
3417
|
+
},
|
|
3418
|
+
{
|
|
3419
|
+
"name": "chart/3",
|
|
3420
|
+
"type": "COLOR",
|
|
3421
|
+
"values": {
|
|
3422
|
+
"blue": "#d4d3f7",
|
|
3423
|
+
"red": "#f9d3d2",
|
|
3424
|
+
"yellow": "#dad9d9",
|
|
3425
|
+
"multicolor": "#2b25d9"
|
|
3426
|
+
},
|
|
3427
|
+
"scopes": [
|
|
3428
|
+
"ALL_FILLS",
|
|
3429
|
+
"STROKE_COLOR"
|
|
3430
|
+
],
|
|
3431
|
+
"description": "Series 3 — the pale tint.",
|
|
3432
|
+
"aliases": {
|
|
3433
|
+
"blue": "color/blue/200",
|
|
3434
|
+
"red": "color/red/200",
|
|
3435
|
+
"yellow": "color/neutral/200",
|
|
3436
|
+
"multicolor": "color/blue/400"
|
|
3437
|
+
}
|
|
3438
|
+
},
|
|
3439
|
+
{
|
|
3440
|
+
"name": "chart/4",
|
|
3441
|
+
"type": "COLOR",
|
|
3442
|
+
"values": {
|
|
3443
|
+
"blue": "#b5b3b3",
|
|
3444
|
+
"red": "#b5b3b3",
|
|
3445
|
+
"yellow": "#fad567",
|
|
3446
|
+
"multicolor": "#b5b3b3"
|
|
3447
|
+
},
|
|
3448
|
+
"scopes": [
|
|
3449
|
+
"ALL_FILLS",
|
|
3450
|
+
"STROKE_COLOR"
|
|
3451
|
+
],
|
|
3452
|
+
"description": "Series 4 — grey.",
|
|
3453
|
+
"aliases": {
|
|
3454
|
+
"blue": "color/neutral/300",
|
|
3455
|
+
"red": "color/neutral/300",
|
|
3456
|
+
"yellow": "color/yellow/300",
|
|
3457
|
+
"multicolor": "color/neutral/300"
|
|
3458
|
+
}
|
|
3459
|
+
},
|
|
3460
|
+
{
|
|
3461
|
+
"name": "chart/5",
|
|
3462
|
+
"type": "COLOR",
|
|
3463
|
+
"values": {
|
|
3464
|
+
"blue": "#dad9d9",
|
|
3465
|
+
"red": "#dad9d9",
|
|
3466
|
+
"yellow": "#b5b3b3",
|
|
3467
|
+
"multicolor": "#ec6663"
|
|
3468
|
+
},
|
|
3469
|
+
"scopes": [
|
|
3470
|
+
"ALL_FILLS",
|
|
3471
|
+
"STROKE_COLOR"
|
|
3472
|
+
],
|
|
3473
|
+
"description": "Series 5 — light grey.",
|
|
3474
|
+
"aliases": {
|
|
3475
|
+
"blue": "color/neutral/200",
|
|
3476
|
+
"red": "color/neutral/200",
|
|
3477
|
+
"yellow": "color/neutral/300",
|
|
3478
|
+
"multicolor": "color/red/300"
|
|
3479
|
+
}
|
|
3480
|
+
},
|
|
3481
|
+
{
|
|
3482
|
+
"name": "gradient-far",
|
|
3483
|
+
"type": "COLOR",
|
|
3484
|
+
"values": {
|
|
3485
|
+
"blue": "#f24288",
|
|
3486
|
+
"red": "#d947d6",
|
|
3487
|
+
"yellow": "#ebb8fc",
|
|
3488
|
+
"multicolor": "#d947d6"
|
|
3489
|
+
},
|
|
3490
|
+
"scopes": [
|
|
3491
|
+
"ALL_FILLS",
|
|
3492
|
+
"STROKE_COLOR"
|
|
3493
|
+
],
|
|
3494
|
+
"description": "The far stop of the accent's cover gradient, reached from the Accent mode - Pepper Deck UI Kit Decoration/Blob/Blue (fill style 8012:4117): the blob runs from the accent to this stop. Same pair as gradient.blue. Added 2026-09-07 for the Blob component (1.3.5); the stop colours themselves are the gradient-stop OPEN QUESTION.",
|
|
3495
|
+
"aliases": {
|
|
3496
|
+
"blue": "color/gradient-stop/pink",
|
|
3497
|
+
"red": "color/gradient-stop/magenta",
|
|
3498
|
+
"yellow": "color/gradient-stop/orchid",
|
|
3499
|
+
"multicolor": "color/gradient-stop/magenta"
|
|
3500
|
+
}
|
|
3501
|
+
},
|
|
3502
|
+
{
|
|
3503
|
+
"name": "blob-opacity",
|
|
3504
|
+
"type": "FLOAT",
|
|
3505
|
+
"values": {
|
|
3506
|
+
"blue": 20,
|
|
3507
|
+
"red": 20,
|
|
3508
|
+
"yellow": 35,
|
|
3509
|
+
"multicolor": 20
|
|
3510
|
+
},
|
|
3511
|
+
"scopes": [
|
|
3512
|
+
"OPACITY"
|
|
3513
|
+
],
|
|
3514
|
+
"description": "Opacity of the Blob decoration behind a slide - Pepper Deck UI Kit Decoration/Blob/Blue node opacity 20%: yellow is lighter and needs 35, blue and red sit at 20 (the deck skill's Blob colour rule table). Added 2026-09-07 (1.3.5)."
|
|
3515
|
+
}
|
|
3516
|
+
]
|
|
3517
|
+
},
|
|
3518
|
+
"Typography": {
|
|
3519
|
+
"modes": [
|
|
3520
|
+
"web-desktop",
|
|
3521
|
+
"web-mobile",
|
|
3522
|
+
"slide"
|
|
3523
|
+
],
|
|
3524
|
+
"variables": [
|
|
3525
|
+
{
|
|
3526
|
+
"name": "display/large/family",
|
|
3527
|
+
"type": "STRING",
|
|
3528
|
+
"values": {
|
|
3529
|
+
"web-desktop": "Poppins",
|
|
3530
|
+
"web-mobile": "Poppins",
|
|
3531
|
+
"slide": "Poppins"
|
|
3532
|
+
},
|
|
3533
|
+
"scopes": [
|
|
3534
|
+
"FONT_FAMILY"
|
|
3535
|
+
],
|
|
3536
|
+
"description": "INHERITED in web-mobile and slide: the source defines this role only for web-desktop, so these modes fall through to it rather than being authored. No slide uses this role today - if one needs it, author a real value rather than leaning on this."
|
|
3537
|
+
},
|
|
3538
|
+
{
|
|
3539
|
+
"name": "display/large/size",
|
|
3540
|
+
"type": "FLOAT",
|
|
3541
|
+
"values": {
|
|
3542
|
+
"web-desktop": 148,
|
|
3543
|
+
"web-mobile": 148,
|
|
3544
|
+
"slide": 148
|
|
3545
|
+
},
|
|
3546
|
+
"scopes": [
|
|
3547
|
+
"FONT_SIZE"
|
|
3548
|
+
],
|
|
3549
|
+
"description": "INHERITED in web-mobile and slide: the source defines this role only for web-desktop, so these modes fall through to it rather than being authored. No slide uses this role today - if one needs it, author a real value rather than leaning on this."
|
|
3550
|
+
},
|
|
3551
|
+
{
|
|
3552
|
+
"name": "display/large/weight",
|
|
3553
|
+
"type": "FLOAT",
|
|
3554
|
+
"values": {
|
|
3555
|
+
"web-desktop": 600,
|
|
3556
|
+
"web-mobile": 600,
|
|
3557
|
+
"slide": 600
|
|
3558
|
+
},
|
|
3559
|
+
"scopes": [
|
|
3560
|
+
"FONT_WEIGHT"
|
|
3561
|
+
],
|
|
3562
|
+
"description": "INHERITED in web-mobile and slide: the source defines this role only for web-desktop, so these modes fall through to it rather than being authored. No slide uses this role today - if one needs it, author a real value rather than leaning on this."
|
|
3563
|
+
},
|
|
3564
|
+
{
|
|
3565
|
+
"name": "display/large/line-height",
|
|
3566
|
+
"type": "FLOAT",
|
|
3567
|
+
"values": {
|
|
3568
|
+
"web-desktop": 1.2,
|
|
3569
|
+
"web-mobile": 1.2,
|
|
3570
|
+
"slide": 1.2
|
|
3571
|
+
},
|
|
3572
|
+
"scopes": [],
|
|
3573
|
+
"description": "INHERITED in web-mobile and slide: the source defines this role only for web-desktop, so these modes fall through to it rather than being authored. No slide uses this role today - if one needs it, author a real value rather than leaning on this."
|
|
3574
|
+
},
|
|
3575
|
+
{
|
|
3576
|
+
"name": "display/large/letter-spacing",
|
|
3577
|
+
"type": "FLOAT",
|
|
3578
|
+
"values": {
|
|
3579
|
+
"web-desktop": -0.01,
|
|
3580
|
+
"web-mobile": -0.01,
|
|
3581
|
+
"slide": -0.01
|
|
3582
|
+
},
|
|
3583
|
+
"scopes": [
|
|
3584
|
+
"LETTER_SPACING"
|
|
3585
|
+
],
|
|
3586
|
+
"description": "INHERITED in web-mobile and slide: the source defines this role only for web-desktop, so these modes fall through to it rather than being authored. No slide uses this role today - if one needs it, author a real value rather than leaning on this."
|
|
3587
|
+
},
|
|
3588
|
+
{
|
|
3589
|
+
"name": "display/medium/family",
|
|
3590
|
+
"type": "STRING",
|
|
3591
|
+
"values": {
|
|
3592
|
+
"web-desktop": "Poppins",
|
|
3593
|
+
"web-mobile": "Poppins",
|
|
3594
|
+
"slide": "Poppins"
|
|
3595
|
+
},
|
|
3596
|
+
"scopes": [
|
|
3597
|
+
"FONT_FAMILY"
|
|
3598
|
+
],
|
|
3599
|
+
"description": "INHERITED in web-mobile and slide: the source defines this role only for web-desktop, so these modes fall through to it rather than being authored. No slide uses this role today - if one needs it, author a real value rather than leaning on this."
|
|
3600
|
+
},
|
|
3601
|
+
{
|
|
3602
|
+
"name": "display/medium/size",
|
|
3603
|
+
"type": "FLOAT",
|
|
3604
|
+
"values": {
|
|
3605
|
+
"web-desktop": 117,
|
|
3606
|
+
"web-mobile": 117,
|
|
3607
|
+
"slide": 117
|
|
3608
|
+
},
|
|
3609
|
+
"scopes": [
|
|
3610
|
+
"FONT_SIZE"
|
|
3611
|
+
],
|
|
3612
|
+
"description": "INHERITED in web-mobile and slide: the source defines this role only for web-desktop, so these modes fall through to it rather than being authored. No slide uses this role today - if one needs it, author a real value rather than leaning on this."
|
|
3613
|
+
},
|
|
3614
|
+
{
|
|
3615
|
+
"name": "display/medium/weight",
|
|
3616
|
+
"type": "FLOAT",
|
|
3617
|
+
"values": {
|
|
3618
|
+
"web-desktop": 600,
|
|
3619
|
+
"web-mobile": 600,
|
|
3620
|
+
"slide": 600
|
|
3621
|
+
},
|
|
3622
|
+
"scopes": [
|
|
3623
|
+
"FONT_WEIGHT"
|
|
3624
|
+
],
|
|
3625
|
+
"description": "INHERITED in web-mobile and slide: the source defines this role only for web-desktop, so these modes fall through to it rather than being authored. No slide uses this role today - if one needs it, author a real value rather than leaning on this."
|
|
3626
|
+
},
|
|
3627
|
+
{
|
|
3628
|
+
"name": "display/medium/line-height",
|
|
3629
|
+
"type": "FLOAT",
|
|
3630
|
+
"values": {
|
|
3631
|
+
"web-desktop": 1.2,
|
|
3632
|
+
"web-mobile": 1.2,
|
|
3633
|
+
"slide": 1.2
|
|
3634
|
+
},
|
|
3635
|
+
"scopes": [],
|
|
3636
|
+
"description": "INHERITED in web-mobile and slide: the source defines this role only for web-desktop, so these modes fall through to it rather than being authored. No slide uses this role today - if one needs it, author a real value rather than leaning on this."
|
|
3637
|
+
},
|
|
3638
|
+
{
|
|
3639
|
+
"name": "display/medium/letter-spacing",
|
|
3640
|
+
"type": "FLOAT",
|
|
3641
|
+
"values": {
|
|
3642
|
+
"web-desktop": -0.01,
|
|
3643
|
+
"web-mobile": -0.01,
|
|
3644
|
+
"slide": -0.01
|
|
3645
|
+
},
|
|
3646
|
+
"scopes": [
|
|
3647
|
+
"LETTER_SPACING"
|
|
3648
|
+
],
|
|
3649
|
+
"description": "INHERITED in web-mobile and slide: the source defines this role only for web-desktop, so these modes fall through to it rather than being authored. No slide uses this role today - if one needs it, author a real value rather than leaning on this."
|
|
3650
|
+
},
|
|
3651
|
+
{
|
|
3652
|
+
"name": "display/small/family",
|
|
3653
|
+
"type": "STRING",
|
|
3654
|
+
"values": {
|
|
3655
|
+
"web-desktop": "Poppins",
|
|
3656
|
+
"slide": "Poppins",
|
|
3657
|
+
"web-mobile": "Poppins"
|
|
3658
|
+
},
|
|
3659
|
+
"scopes": [
|
|
3660
|
+
"FONT_FAMILY"
|
|
3661
|
+
],
|
|
3662
|
+
"description": "INHERITED in web-mobile: the source defines this role only for web-desktop, so these modes fall through to it rather than being authored. "
|
|
3663
|
+
},
|
|
3664
|
+
{
|
|
3665
|
+
"name": "display/small/size",
|
|
3666
|
+
"type": "FLOAT",
|
|
3667
|
+
"values": {
|
|
3668
|
+
"web-desktop": 92,
|
|
3669
|
+
"slide": 64,
|
|
3670
|
+
"web-mobile": 92
|
|
3671
|
+
},
|
|
3672
|
+
"scopes": [
|
|
3673
|
+
"FONT_SIZE"
|
|
3674
|
+
],
|
|
3675
|
+
"description": "INHERITED in web-mobile: the source defines this role only for web-desktop, so these modes fall through to it rather than being authored. "
|
|
3676
|
+
},
|
|
3677
|
+
{
|
|
3678
|
+
"name": "display/small/weight",
|
|
3679
|
+
"type": "FLOAT",
|
|
3680
|
+
"values": {
|
|
3681
|
+
"web-desktop": 600,
|
|
3682
|
+
"slide": 600,
|
|
3683
|
+
"web-mobile": 600
|
|
3684
|
+
},
|
|
3685
|
+
"scopes": [
|
|
3686
|
+
"FONT_WEIGHT"
|
|
3687
|
+
],
|
|
3688
|
+
"description": "INHERITED in web-mobile: the source defines this role only for web-desktop, so these modes fall through to it rather than being authored. "
|
|
3689
|
+
},
|
|
3690
|
+
{
|
|
3691
|
+
"name": "display/small/line-height",
|
|
3692
|
+
"type": "FLOAT",
|
|
3693
|
+
"values": {
|
|
3694
|
+
"web-desktop": 1.2,
|
|
3695
|
+
"slide": 1.2,
|
|
3696
|
+
"web-mobile": 1.2
|
|
3697
|
+
},
|
|
3698
|
+
"scopes": [],
|
|
3699
|
+
"description": "INHERITED in web-mobile: the source defines this role only for web-desktop, so these modes fall through to it rather than being authored. "
|
|
3700
|
+
},
|
|
3701
|
+
{
|
|
3702
|
+
"name": "display/small/letter-spacing",
|
|
3703
|
+
"type": "FLOAT",
|
|
3704
|
+
"values": {
|
|
3705
|
+
"web-desktop": -0.01,
|
|
3706
|
+
"slide": 0,
|
|
3707
|
+
"web-mobile": -0.01
|
|
3708
|
+
},
|
|
3709
|
+
"scopes": [
|
|
3710
|
+
"LETTER_SPACING"
|
|
3711
|
+
],
|
|
3712
|
+
"description": "INHERITED in web-mobile: the source defines this role only for web-desktop, so these modes fall through to it rather than being authored. "
|
|
3713
|
+
},
|
|
3714
|
+
{
|
|
3715
|
+
"name": "headline/large/family",
|
|
3716
|
+
"type": "STRING",
|
|
3717
|
+
"values": {
|
|
3718
|
+
"web-desktop": "Poppins",
|
|
3719
|
+
"web-mobile": "Poppins",
|
|
3720
|
+
"slide": "Poppins"
|
|
3721
|
+
},
|
|
3722
|
+
"scopes": [
|
|
3723
|
+
"FONT_FAMILY"
|
|
3724
|
+
],
|
|
3725
|
+
"description": "S5 --fs-headline-large. The 65 to the slide canvas's 66 - G5, now a mode difference rather than a discrepancy."
|
|
3726
|
+
},
|
|
3727
|
+
{
|
|
3728
|
+
"name": "headline/large/size",
|
|
3729
|
+
"type": "FLOAT",
|
|
3730
|
+
"values": {
|
|
3731
|
+
"web-desktop": 65,
|
|
3732
|
+
"web-mobile": 48,
|
|
3733
|
+
"slide": 66
|
|
3734
|
+
},
|
|
3735
|
+
"scopes": [
|
|
3736
|
+
"FONT_SIZE"
|
|
3737
|
+
],
|
|
3738
|
+
"description": "S5 --fs-headline-large. The 65 to the slide canvas's 66 - G5, now a mode difference rather than a discrepancy."
|
|
3739
|
+
},
|
|
3740
|
+
{
|
|
3741
|
+
"name": "headline/large/weight",
|
|
3742
|
+
"type": "FLOAT",
|
|
3743
|
+
"values": {
|
|
3744
|
+
"web-desktop": 600,
|
|
3745
|
+
"web-mobile": 600,
|
|
3746
|
+
"slide": 600
|
|
3747
|
+
},
|
|
3748
|
+
"scopes": [
|
|
3749
|
+
"FONT_WEIGHT"
|
|
3750
|
+
],
|
|
3751
|
+
"description": "S5 --fs-headline-large. The 65 to the slide canvas's 66 - G5, now a mode difference rather than a discrepancy."
|
|
3752
|
+
},
|
|
3753
|
+
{
|
|
3754
|
+
"name": "headline/large/line-height",
|
|
3755
|
+
"type": "FLOAT",
|
|
3756
|
+
"values": {
|
|
3757
|
+
"web-desktop": 1.2,
|
|
3758
|
+
"web-mobile": 1.2,
|
|
3759
|
+
"slide": 1.2
|
|
3760
|
+
},
|
|
3761
|
+
"scopes": [],
|
|
3762
|
+
"description": "S5 --fs-headline-large. The 65 to the slide canvas's 66 - G5, now a mode difference rather than a discrepancy."
|
|
3763
|
+
},
|
|
3764
|
+
{
|
|
3765
|
+
"name": "headline/large/letter-spacing",
|
|
3766
|
+
"type": "FLOAT",
|
|
3767
|
+
"values": {
|
|
3768
|
+
"web-desktop": 0,
|
|
3769
|
+
"web-mobile": 0,
|
|
3770
|
+
"slide": -0.01
|
|
3771
|
+
},
|
|
3772
|
+
"scopes": [
|
|
3773
|
+
"LETTER_SPACING"
|
|
3774
|
+
],
|
|
3775
|
+
"description": "S5 --fs-headline-large. The 65 to the slide canvas's 66 - G5, now a mode difference rather than a discrepancy."
|
|
3776
|
+
},
|
|
3777
|
+
{
|
|
3778
|
+
"name": "headline/medium/family",
|
|
3779
|
+
"type": "STRING",
|
|
3780
|
+
"values": {
|
|
3781
|
+
"web-desktop": "Poppins",
|
|
3782
|
+
"web-mobile": "Poppins",
|
|
3783
|
+
"slide": "Poppins"
|
|
3784
|
+
},
|
|
3785
|
+
"scopes": [
|
|
3786
|
+
"FONT_FAMILY"
|
|
3787
|
+
],
|
|
3788
|
+
"description": ""
|
|
3789
|
+
},
|
|
3790
|
+
{
|
|
3791
|
+
"name": "headline/medium/size",
|
|
3792
|
+
"type": "FLOAT",
|
|
3793
|
+
"values": {
|
|
3794
|
+
"web-desktop": 45,
|
|
3795
|
+
"web-mobile": 40,
|
|
3796
|
+
"slide": 46
|
|
3797
|
+
},
|
|
3798
|
+
"scopes": [
|
|
3799
|
+
"FONT_SIZE"
|
|
3800
|
+
],
|
|
3801
|
+
"description": ""
|
|
3802
|
+
},
|
|
3803
|
+
{
|
|
3804
|
+
"name": "headline/medium/weight",
|
|
3805
|
+
"type": "FLOAT",
|
|
3806
|
+
"values": {
|
|
3807
|
+
"web-desktop": 600,
|
|
3808
|
+
"web-mobile": 600,
|
|
3809
|
+
"slide": 500
|
|
3810
|
+
},
|
|
3811
|
+
"scopes": [
|
|
3812
|
+
"FONT_WEIGHT"
|
|
3813
|
+
],
|
|
3814
|
+
"description": ""
|
|
3815
|
+
},
|
|
3816
|
+
{
|
|
3817
|
+
"name": "headline/medium/line-height",
|
|
3818
|
+
"type": "FLOAT",
|
|
3819
|
+
"values": {
|
|
3820
|
+
"web-desktop": 1.2,
|
|
3821
|
+
"web-mobile": 1.2,
|
|
3822
|
+
"slide": 1.2
|
|
3823
|
+
},
|
|
3824
|
+
"scopes": [],
|
|
3825
|
+
"description": ""
|
|
3826
|
+
},
|
|
3827
|
+
{
|
|
3828
|
+
"name": "headline/medium/letter-spacing",
|
|
3829
|
+
"type": "FLOAT",
|
|
3830
|
+
"values": {
|
|
3831
|
+
"web-desktop": 0,
|
|
3832
|
+
"web-mobile": 0,
|
|
3833
|
+
"slide": -0.01
|
|
3834
|
+
},
|
|
3835
|
+
"scopes": [
|
|
3836
|
+
"LETTER_SPACING"
|
|
3837
|
+
],
|
|
3838
|
+
"description": ""
|
|
3839
|
+
},
|
|
3840
|
+
{
|
|
3841
|
+
"name": "headline/small/family",
|
|
3842
|
+
"type": "STRING",
|
|
3843
|
+
"values": {
|
|
3844
|
+
"web-desktop": "Poppins",
|
|
3845
|
+
"web-mobile": "Poppins",
|
|
3846
|
+
"slide": "Poppins"
|
|
3847
|
+
},
|
|
3848
|
+
"scopes": [
|
|
3849
|
+
"FONT_FAMILY"
|
|
3850
|
+
],
|
|
3851
|
+
"description": "Weight 400 and line-height 1.2 both quoted from S5 usage - this role is set Regular on the site, not SemiBold."
|
|
3852
|
+
},
|
|
3853
|
+
{
|
|
3854
|
+
"name": "headline/small/size",
|
|
3855
|
+
"type": "FLOAT",
|
|
3856
|
+
"values": {
|
|
3857
|
+
"web-desktop": 40,
|
|
3858
|
+
"web-mobile": 32,
|
|
3859
|
+
"slide": 41
|
|
3860
|
+
},
|
|
3861
|
+
"scopes": [
|
|
3862
|
+
"FONT_SIZE"
|
|
3863
|
+
],
|
|
3864
|
+
"description": "Weight 400 and line-height 1.2 both quoted from S5 usage - this role is set Regular on the site, not SemiBold."
|
|
3865
|
+
},
|
|
3866
|
+
{
|
|
3867
|
+
"name": "headline/small/weight",
|
|
3868
|
+
"type": "FLOAT",
|
|
3869
|
+
"values": {
|
|
3870
|
+
"web-desktop": 400,
|
|
3871
|
+
"web-mobile": 400,
|
|
3872
|
+
"slide": 400
|
|
3873
|
+
},
|
|
3874
|
+
"scopes": [
|
|
3875
|
+
"FONT_WEIGHT"
|
|
3876
|
+
],
|
|
3877
|
+
"description": "Weight 400 and line-height 1.2 both quoted from S5 usage - this role is set Regular on the site, not SemiBold."
|
|
3878
|
+
},
|
|
3879
|
+
{
|
|
3880
|
+
"name": "headline/small/line-height",
|
|
3881
|
+
"type": "FLOAT",
|
|
3882
|
+
"values": {
|
|
3883
|
+
"web-desktop": 1.2,
|
|
3884
|
+
"web-mobile": 1.2,
|
|
3885
|
+
"slide": 1.5
|
|
3886
|
+
},
|
|
3887
|
+
"scopes": [],
|
|
3888
|
+
"description": "Weight 400 and line-height 1.2 both quoted from S5 usage - this role is set Regular on the site, not SemiBold."
|
|
3889
|
+
},
|
|
3890
|
+
{
|
|
3891
|
+
"name": "headline/small/letter-spacing",
|
|
3892
|
+
"type": "FLOAT",
|
|
3893
|
+
"values": {
|
|
3894
|
+
"web-desktop": 0,
|
|
3895
|
+
"web-mobile": 0,
|
|
3896
|
+
"slide": 0
|
|
3897
|
+
},
|
|
3898
|
+
"scopes": [
|
|
3899
|
+
"LETTER_SPACING"
|
|
3900
|
+
],
|
|
3901
|
+
"description": "Weight 400 and line-height 1.2 both quoted from S5 usage - this role is set Regular on the site, not SemiBold."
|
|
3902
|
+
},
|
|
3903
|
+
{
|
|
3904
|
+
"name": "title/large/family",
|
|
3905
|
+
"type": "STRING",
|
|
3906
|
+
"values": {
|
|
3907
|
+
"web-desktop": "Poppins",
|
|
3908
|
+
"web-mobile": "Poppins",
|
|
3909
|
+
"slide": "Poppins"
|
|
3910
|
+
},
|
|
3911
|
+
"scopes": [
|
|
3912
|
+
"FONT_FAMILY"
|
|
3913
|
+
],
|
|
3914
|
+
"description": ""
|
|
3915
|
+
},
|
|
3916
|
+
{
|
|
3917
|
+
"name": "title/large/size",
|
|
3918
|
+
"type": "FLOAT",
|
|
3919
|
+
"values": {
|
|
3920
|
+
"web-desktop": 36,
|
|
3921
|
+
"web-mobile": 32,
|
|
3922
|
+
"slide": 36
|
|
3923
|
+
},
|
|
3924
|
+
"scopes": [
|
|
3925
|
+
"FONT_SIZE"
|
|
3926
|
+
],
|
|
3927
|
+
"description": ""
|
|
3928
|
+
},
|
|
3929
|
+
{
|
|
3930
|
+
"name": "title/large/weight",
|
|
3931
|
+
"type": "FLOAT",
|
|
3932
|
+
"values": {
|
|
3933
|
+
"web-desktop": 600,
|
|
3934
|
+
"web-mobile": 600,
|
|
3935
|
+
"slide": 600
|
|
3936
|
+
},
|
|
3937
|
+
"scopes": [
|
|
3938
|
+
"FONT_WEIGHT"
|
|
3939
|
+
],
|
|
3940
|
+
"description": ""
|
|
3941
|
+
},
|
|
3942
|
+
{
|
|
3943
|
+
"name": "title/large/line-height",
|
|
3944
|
+
"type": "FLOAT",
|
|
3945
|
+
"values": {
|
|
3946
|
+
"web-desktop": 1.2,
|
|
3947
|
+
"web-mobile": 1.2,
|
|
3948
|
+
"slide": 1.2
|
|
3949
|
+
},
|
|
3950
|
+
"scopes": [],
|
|
3951
|
+
"description": ""
|
|
3952
|
+
},
|
|
3953
|
+
{
|
|
3954
|
+
"name": "title/large/letter-spacing",
|
|
3955
|
+
"type": "FLOAT",
|
|
3956
|
+
"values": {
|
|
3957
|
+
"web-desktop": 0,
|
|
3958
|
+
"web-mobile": 0,
|
|
3959
|
+
"slide": 0
|
|
3960
|
+
},
|
|
3961
|
+
"scopes": [
|
|
3962
|
+
"LETTER_SPACING"
|
|
3963
|
+
],
|
|
3964
|
+
"description": ""
|
|
3965
|
+
},
|
|
3966
|
+
{
|
|
3967
|
+
"name": "title/medium/family",
|
|
3968
|
+
"type": "STRING",
|
|
3969
|
+
"values": {
|
|
3970
|
+
"web-desktop": "Poppins",
|
|
3971
|
+
"web-mobile": "Poppins",
|
|
3972
|
+
"slide": "Poppins"
|
|
3973
|
+
},
|
|
3974
|
+
"scopes": [
|
|
3975
|
+
"FONT_FAMILY"
|
|
3976
|
+
],
|
|
3977
|
+
"description": "INHERITED in slide: the source defines this role only for web-desktop, so these modes fall through to it rather than being authored. No slide uses this role today - if one needs it, author a real value rather than leaning on this."
|
|
3978
|
+
},
|
|
3979
|
+
{
|
|
3980
|
+
"name": "title/medium/size",
|
|
3981
|
+
"type": "FLOAT",
|
|
3982
|
+
"values": {
|
|
3983
|
+
"web-desktop": 32,
|
|
3984
|
+
"web-mobile": 28,
|
|
3985
|
+
"slide": 32
|
|
3986
|
+
},
|
|
3987
|
+
"scopes": [
|
|
3988
|
+
"FONT_SIZE"
|
|
3989
|
+
],
|
|
3990
|
+
"description": "INHERITED in slide: the source defines this role only for web-desktop, so these modes fall through to it rather than being authored. No slide uses this role today - if one needs it, author a real value rather than leaning on this."
|
|
3991
|
+
},
|
|
3992
|
+
{
|
|
3993
|
+
"name": "title/medium/weight",
|
|
3994
|
+
"type": "FLOAT",
|
|
3995
|
+
"values": {
|
|
3996
|
+
"web-desktop": 600,
|
|
3997
|
+
"web-mobile": 600,
|
|
3998
|
+
"slide": 600
|
|
3999
|
+
},
|
|
4000
|
+
"scopes": [
|
|
4001
|
+
"FONT_WEIGHT"
|
|
4002
|
+
],
|
|
4003
|
+
"description": "INHERITED in slide: the source defines this role only for web-desktop, so these modes fall through to it rather than being authored. No slide uses this role today - if one needs it, author a real value rather than leaning on this."
|
|
4004
|
+
},
|
|
4005
|
+
{
|
|
4006
|
+
"name": "title/medium/line-height",
|
|
4007
|
+
"type": "FLOAT",
|
|
4008
|
+
"values": {
|
|
4009
|
+
"web-desktop": 1.2,
|
|
4010
|
+
"web-mobile": 1.2,
|
|
4011
|
+
"slide": 1.2
|
|
4012
|
+
},
|
|
4013
|
+
"scopes": [],
|
|
4014
|
+
"description": "INHERITED in slide: the source defines this role only for web-desktop, so these modes fall through to it rather than being authored. No slide uses this role today - if one needs it, author a real value rather than leaning on this."
|
|
4015
|
+
},
|
|
4016
|
+
{
|
|
4017
|
+
"name": "title/medium/letter-spacing",
|
|
4018
|
+
"type": "FLOAT",
|
|
4019
|
+
"values": {
|
|
4020
|
+
"web-desktop": 0,
|
|
4021
|
+
"web-mobile": 0,
|
|
4022
|
+
"slide": 0
|
|
4023
|
+
},
|
|
4024
|
+
"scopes": [
|
|
4025
|
+
"LETTER_SPACING"
|
|
4026
|
+
],
|
|
4027
|
+
"description": "INHERITED in slide: the source defines this role only for web-desktop, so these modes fall through to it rather than being authored. No slide uses this role today - if one needs it, author a real value rather than leaning on this."
|
|
4028
|
+
},
|
|
4029
|
+
{
|
|
4030
|
+
"name": "title/small/family",
|
|
4031
|
+
"type": "STRING",
|
|
4032
|
+
"values": {
|
|
4033
|
+
"web-desktop": "Poppins",
|
|
4034
|
+
"web-mobile": "Poppins",
|
|
4035
|
+
"slide": "Poppins"
|
|
4036
|
+
},
|
|
4037
|
+
"scopes": [
|
|
4038
|
+
"FONT_FAMILY"
|
|
4039
|
+
],
|
|
4040
|
+
"description": "Medium, not SemiBold. At 28px this is close to a reading size, and SemiBold is a display weight."
|
|
4041
|
+
},
|
|
4042
|
+
{
|
|
4043
|
+
"name": "title/small/size",
|
|
4044
|
+
"type": "FLOAT",
|
|
4045
|
+
"values": {
|
|
4046
|
+
"web-desktop": 28,
|
|
4047
|
+
"web-mobile": 25,
|
|
4048
|
+
"slide": 26
|
|
4049
|
+
},
|
|
4050
|
+
"scopes": [
|
|
4051
|
+
"FONT_SIZE"
|
|
4052
|
+
],
|
|
4053
|
+
"description": "Medium, not SemiBold. At 28px this is close to a reading size, and SemiBold is a display weight."
|
|
4054
|
+
},
|
|
4055
|
+
{
|
|
4056
|
+
"name": "title/small/weight",
|
|
4057
|
+
"type": "FLOAT",
|
|
4058
|
+
"values": {
|
|
4059
|
+
"web-desktop": 500,
|
|
4060
|
+
"web-mobile": 500,
|
|
4061
|
+
"slide": 500
|
|
4062
|
+
},
|
|
4063
|
+
"scopes": [
|
|
4064
|
+
"FONT_WEIGHT"
|
|
4065
|
+
],
|
|
4066
|
+
"description": "Medium, not SemiBold. At 28px this is close to a reading size, and SemiBold is a display weight."
|
|
4067
|
+
},
|
|
4068
|
+
{
|
|
4069
|
+
"name": "title/small/line-height",
|
|
4070
|
+
"type": "FLOAT",
|
|
4071
|
+
"values": {
|
|
4072
|
+
"web-desktop": 1.4,
|
|
4073
|
+
"web-mobile": 1.4,
|
|
4074
|
+
"slide": 1.4
|
|
4075
|
+
},
|
|
4076
|
+
"scopes": [],
|
|
4077
|
+
"description": "Medium, not SemiBold. At 28px this is close to a reading size, and SemiBold is a display weight."
|
|
4078
|
+
},
|
|
4079
|
+
{
|
|
4080
|
+
"name": "title/small/letter-spacing",
|
|
4081
|
+
"type": "FLOAT",
|
|
4082
|
+
"values": {
|
|
4083
|
+
"web-desktop": 0,
|
|
4084
|
+
"web-mobile": 0,
|
|
4085
|
+
"slide": 0
|
|
4086
|
+
},
|
|
4087
|
+
"scopes": [
|
|
4088
|
+
"LETTER_SPACING"
|
|
4089
|
+
],
|
|
4090
|
+
"description": "Medium, not SemiBold. At 28px this is close to a reading size, and SemiBold is a display weight."
|
|
4091
|
+
},
|
|
4092
|
+
{
|
|
4093
|
+
"name": "body/large/family",
|
|
4094
|
+
"type": "STRING",
|
|
4095
|
+
"values": {
|
|
4096
|
+
"web-desktop": "Poppins",
|
|
4097
|
+
"web-mobile": "Poppins",
|
|
4098
|
+
"slide": "Poppins"
|
|
4099
|
+
},
|
|
4100
|
+
"scopes": [
|
|
4101
|
+
"FONT_FAMILY"
|
|
4102
|
+
],
|
|
4103
|
+
"description": ""
|
|
4104
|
+
},
|
|
4105
|
+
{
|
|
4106
|
+
"name": "body/large/size",
|
|
4107
|
+
"type": "FLOAT",
|
|
4108
|
+
"values": {
|
|
4109
|
+
"web-desktop": 22,
|
|
4110
|
+
"web-mobile": 18,
|
|
4111
|
+
"slide": 26
|
|
4112
|
+
},
|
|
4113
|
+
"scopes": [
|
|
4114
|
+
"FONT_SIZE"
|
|
4115
|
+
],
|
|
4116
|
+
"description": ""
|
|
4117
|
+
},
|
|
4118
|
+
{
|
|
4119
|
+
"name": "body/large/weight",
|
|
4120
|
+
"type": "FLOAT",
|
|
4121
|
+
"values": {
|
|
4122
|
+
"web-desktop": 400,
|
|
4123
|
+
"web-mobile": 400,
|
|
4124
|
+
"slide": 400
|
|
4125
|
+
},
|
|
4126
|
+
"scopes": [
|
|
4127
|
+
"FONT_WEIGHT"
|
|
4128
|
+
],
|
|
4129
|
+
"description": ""
|
|
4130
|
+
},
|
|
4131
|
+
{
|
|
4132
|
+
"name": "body/large/line-height",
|
|
4133
|
+
"type": "FLOAT",
|
|
4134
|
+
"values": {
|
|
4135
|
+
"web-desktop": 1.4,
|
|
4136
|
+
"web-mobile": 1.4,
|
|
4137
|
+
"slide": 1.4
|
|
4138
|
+
},
|
|
4139
|
+
"scopes": [],
|
|
4140
|
+
"description": ""
|
|
4141
|
+
},
|
|
4142
|
+
{
|
|
4143
|
+
"name": "body/large/letter-spacing",
|
|
4144
|
+
"type": "FLOAT",
|
|
4145
|
+
"values": {
|
|
4146
|
+
"web-desktop": 0,
|
|
4147
|
+
"web-mobile": 0,
|
|
4148
|
+
"slide": 0
|
|
4149
|
+
},
|
|
4150
|
+
"scopes": [
|
|
4151
|
+
"LETTER_SPACING"
|
|
4152
|
+
],
|
|
4153
|
+
"description": ""
|
|
4154
|
+
},
|
|
4155
|
+
{
|
|
4156
|
+
"name": "body/medium/family",
|
|
4157
|
+
"type": "STRING",
|
|
4158
|
+
"values": {
|
|
4159
|
+
"web-desktop": "Poppins",
|
|
4160
|
+
"web-mobile": "Poppins",
|
|
4161
|
+
"slide": "Poppins"
|
|
4162
|
+
},
|
|
4163
|
+
"scopes": [
|
|
4164
|
+
"FONT_FAMILY"
|
|
4165
|
+
],
|
|
4166
|
+
"description": ""
|
|
4167
|
+
},
|
|
4168
|
+
{
|
|
4169
|
+
"name": "body/medium/size",
|
|
4170
|
+
"type": "FLOAT",
|
|
4171
|
+
"values": {
|
|
4172
|
+
"web-desktop": 18,
|
|
4173
|
+
"web-mobile": 16,
|
|
4174
|
+
"slide": 20
|
|
4175
|
+
},
|
|
4176
|
+
"scopes": [
|
|
4177
|
+
"FONT_SIZE"
|
|
4178
|
+
],
|
|
4179
|
+
"description": ""
|
|
4180
|
+
},
|
|
4181
|
+
{
|
|
4182
|
+
"name": "body/medium/weight",
|
|
4183
|
+
"type": "FLOAT",
|
|
4184
|
+
"values": {
|
|
4185
|
+
"web-desktop": 400,
|
|
4186
|
+
"web-mobile": 400,
|
|
4187
|
+
"slide": 400
|
|
4188
|
+
},
|
|
4189
|
+
"scopes": [
|
|
4190
|
+
"FONT_WEIGHT"
|
|
4191
|
+
],
|
|
4192
|
+
"description": ""
|
|
4193
|
+
},
|
|
4194
|
+
{
|
|
4195
|
+
"name": "body/medium/line-height",
|
|
4196
|
+
"type": "FLOAT",
|
|
4197
|
+
"values": {
|
|
4198
|
+
"web-desktop": 1.4,
|
|
4199
|
+
"web-mobile": 1.4,
|
|
4200
|
+
"slide": 1.4
|
|
4201
|
+
},
|
|
4202
|
+
"scopes": [],
|
|
4203
|
+
"description": ""
|
|
4204
|
+
},
|
|
4205
|
+
{
|
|
4206
|
+
"name": "body/medium/letter-spacing",
|
|
4207
|
+
"type": "FLOAT",
|
|
4208
|
+
"values": {
|
|
4209
|
+
"web-desktop": 0,
|
|
4210
|
+
"web-mobile": 0,
|
|
4211
|
+
"slide": 0
|
|
4212
|
+
},
|
|
4213
|
+
"scopes": [
|
|
4214
|
+
"LETTER_SPACING"
|
|
4215
|
+
],
|
|
4216
|
+
"description": ""
|
|
4217
|
+
},
|
|
4218
|
+
{
|
|
4219
|
+
"name": "body/small/family",
|
|
4220
|
+
"type": "STRING",
|
|
4221
|
+
"values": {
|
|
4222
|
+
"web-desktop": "Poppins",
|
|
4223
|
+
"web-mobile": "Poppins",
|
|
4224
|
+
"slide": "Poppins"
|
|
4225
|
+
},
|
|
4226
|
+
"scopes": [
|
|
4227
|
+
"FONT_FAMILY"
|
|
4228
|
+
],
|
|
4229
|
+
"description": ""
|
|
4230
|
+
},
|
|
4231
|
+
{
|
|
4232
|
+
"name": "body/small/size",
|
|
4233
|
+
"type": "FLOAT",
|
|
4234
|
+
"values": {
|
|
4235
|
+
"web-desktop": 16,
|
|
4236
|
+
"web-mobile": 14,
|
|
4237
|
+
"slide": 18
|
|
4238
|
+
},
|
|
4239
|
+
"scopes": [
|
|
4240
|
+
"FONT_SIZE"
|
|
4241
|
+
],
|
|
4242
|
+
"description": ""
|
|
4243
|
+
},
|
|
4244
|
+
{
|
|
4245
|
+
"name": "body/small/weight",
|
|
4246
|
+
"type": "FLOAT",
|
|
4247
|
+
"values": {
|
|
4248
|
+
"web-desktop": 400,
|
|
4249
|
+
"web-mobile": 400,
|
|
4250
|
+
"slide": 500
|
|
4251
|
+
},
|
|
4252
|
+
"scopes": [
|
|
4253
|
+
"FONT_WEIGHT"
|
|
4254
|
+
],
|
|
4255
|
+
"description": ""
|
|
4256
|
+
},
|
|
4257
|
+
{
|
|
4258
|
+
"name": "body/small/line-height",
|
|
4259
|
+
"type": "FLOAT",
|
|
4260
|
+
"values": {
|
|
4261
|
+
"web-desktop": 1.5,
|
|
4262
|
+
"web-mobile": 1.5,
|
|
4263
|
+
"slide": 1.4
|
|
4264
|
+
},
|
|
4265
|
+
"scopes": [],
|
|
4266
|
+
"description": ""
|
|
4267
|
+
},
|
|
4268
|
+
{
|
|
4269
|
+
"name": "body/small/letter-spacing",
|
|
4270
|
+
"type": "FLOAT",
|
|
4271
|
+
"values": {
|
|
4272
|
+
"web-desktop": 0,
|
|
4273
|
+
"web-mobile": 0,
|
|
4274
|
+
"slide": 0
|
|
4275
|
+
},
|
|
4276
|
+
"scopes": [
|
|
4277
|
+
"LETTER_SPACING"
|
|
4278
|
+
],
|
|
4279
|
+
"description": ""
|
|
4280
|
+
},
|
|
4281
|
+
{
|
|
4282
|
+
"name": "body/x-small/family",
|
|
4283
|
+
"type": "STRING",
|
|
4284
|
+
"values": {
|
|
4285
|
+
"web-desktop": "Poppins",
|
|
4286
|
+
"web-mobile": "Poppins",
|
|
4287
|
+
"slide": "Poppins"
|
|
4288
|
+
},
|
|
4289
|
+
"scopes": [
|
|
4290
|
+
"FONT_FAMILY"
|
|
4291
|
+
],
|
|
4292
|
+
"description": "S5 --fs-body-extra-small. Line-height 1.7 in long-form blocks, 1.5 elsewhere - the looser value is the token because that is the role's main use. INHERITED in slide: the source defines this role only for web-desktop, so these modes fall through to it rather than being authored. No slide uses this role today - if one needs it, author a real value rather than leaning on this."
|
|
4293
|
+
},
|
|
4294
|
+
{
|
|
4295
|
+
"name": "body/x-small/size",
|
|
4296
|
+
"type": "FLOAT",
|
|
4297
|
+
"values": {
|
|
4298
|
+
"web-desktop": 14,
|
|
4299
|
+
"web-mobile": 12,
|
|
4300
|
+
"slide": 14
|
|
4301
|
+
},
|
|
4302
|
+
"scopes": [
|
|
4303
|
+
"FONT_SIZE"
|
|
4304
|
+
],
|
|
4305
|
+
"description": "S5 --fs-body-extra-small. Line-height 1.7 in long-form blocks, 1.5 elsewhere - the looser value is the token because that is the role's main use. INHERITED in slide: the source defines this role only for web-desktop, so these modes fall through to it rather than being authored. No slide uses this role today - if one needs it, author a real value rather than leaning on this."
|
|
4306
|
+
},
|
|
4307
|
+
{
|
|
4308
|
+
"name": "body/x-small/weight",
|
|
4309
|
+
"type": "FLOAT",
|
|
4310
|
+
"values": {
|
|
4311
|
+
"web-desktop": 400,
|
|
4312
|
+
"web-mobile": 400,
|
|
4313
|
+
"slide": 400
|
|
4314
|
+
},
|
|
4315
|
+
"scopes": [
|
|
4316
|
+
"FONT_WEIGHT"
|
|
4317
|
+
],
|
|
4318
|
+
"description": "S5 --fs-body-extra-small. Line-height 1.7 in long-form blocks, 1.5 elsewhere - the looser value is the token because that is the role's main use. INHERITED in slide: the source defines this role only for web-desktop, so these modes fall through to it rather than being authored. No slide uses this role today - if one needs it, author a real value rather than leaning on this."
|
|
4319
|
+
},
|
|
4320
|
+
{
|
|
4321
|
+
"name": "body/x-small/line-height",
|
|
4322
|
+
"type": "FLOAT",
|
|
4323
|
+
"values": {
|
|
4324
|
+
"web-desktop": 1.7,
|
|
4325
|
+
"web-mobile": 1.7,
|
|
4326
|
+
"slide": 1.7
|
|
4327
|
+
},
|
|
4328
|
+
"scopes": [],
|
|
4329
|
+
"description": "S5 --fs-body-extra-small. Line-height 1.7 in long-form blocks, 1.5 elsewhere - the looser value is the token because that is the role's main use. INHERITED in slide: the source defines this role only for web-desktop, so these modes fall through to it rather than being authored. No slide uses this role today - if one needs it, author a real value rather than leaning on this."
|
|
4330
|
+
},
|
|
4331
|
+
{
|
|
4332
|
+
"name": "body/x-small/letter-spacing",
|
|
4333
|
+
"type": "FLOAT",
|
|
4334
|
+
"values": {
|
|
4335
|
+
"web-desktop": 0,
|
|
4336
|
+
"web-mobile": 0,
|
|
4337
|
+
"slide": 0
|
|
4338
|
+
},
|
|
4339
|
+
"scopes": [
|
|
4340
|
+
"LETTER_SPACING"
|
|
4341
|
+
],
|
|
4342
|
+
"description": "S5 --fs-body-extra-small. Line-height 1.7 in long-form blocks, 1.5 elsewhere - the looser value is the token because that is the role's main use. INHERITED in slide: the source defines this role only for web-desktop, so these modes fall through to it rather than being authored. No slide uses this role today - if one needs it, author a real value rather than leaning on this."
|
|
4343
|
+
},
|
|
4344
|
+
{
|
|
4345
|
+
"name": "label/medium/family",
|
|
4346
|
+
"type": "STRING",
|
|
4347
|
+
"values": {
|
|
4348
|
+
"web-desktop": "Poppins",
|
|
4349
|
+
"slide": "Poppins",
|
|
4350
|
+
"web-mobile": "Poppins"
|
|
4351
|
+
},
|
|
4352
|
+
"scopes": [
|
|
4353
|
+
"FONT_FAMILY"
|
|
4354
|
+
],
|
|
4355
|
+
"description": "S5 --fs-label-medium, and .page-eyebrow's 0.1em tracking. INHERITED in web-mobile: the source defines this role only for web-desktop, so these modes fall through to it rather than being authored. "
|
|
4356
|
+
},
|
|
4357
|
+
{
|
|
4358
|
+
"name": "label/medium/size",
|
|
4359
|
+
"type": "FLOAT",
|
|
4360
|
+
"values": {
|
|
4361
|
+
"web-desktop": 12,
|
|
4362
|
+
"slide": 15,
|
|
4363
|
+
"web-mobile": 12
|
|
4364
|
+
},
|
|
4365
|
+
"scopes": [
|
|
4366
|
+
"FONT_SIZE"
|
|
4367
|
+
],
|
|
4368
|
+
"description": "S5 --fs-label-medium, and .page-eyebrow's 0.1em tracking. INHERITED in web-mobile: the source defines this role only for web-desktop, so these modes fall through to it rather than being authored. "
|
|
4369
|
+
},
|
|
4370
|
+
{
|
|
4371
|
+
"name": "label/medium/weight",
|
|
4372
|
+
"type": "FLOAT",
|
|
4373
|
+
"values": {
|
|
4374
|
+
"web-desktop": 500,
|
|
4375
|
+
"slide": 400,
|
|
4376
|
+
"web-mobile": 500
|
|
4377
|
+
},
|
|
4378
|
+
"scopes": [
|
|
4379
|
+
"FONT_WEIGHT"
|
|
4380
|
+
],
|
|
4381
|
+
"description": "S5 --fs-label-medium, and .page-eyebrow's 0.1em tracking. INHERITED in web-mobile: the source defines this role only for web-desktop, so these modes fall through to it rather than being authored. "
|
|
4382
|
+
},
|
|
4383
|
+
{
|
|
4384
|
+
"name": "label/medium/line-height",
|
|
4385
|
+
"type": "FLOAT",
|
|
4386
|
+
"values": {
|
|
4387
|
+
"web-desktop": 1.4,
|
|
4388
|
+
"slide": 1.4,
|
|
4389
|
+
"web-mobile": 1.4
|
|
4390
|
+
},
|
|
4391
|
+
"scopes": [],
|
|
4392
|
+
"description": "S5 --fs-label-medium, and .page-eyebrow's 0.1em tracking. INHERITED in web-mobile: the source defines this role only for web-desktop, so these modes fall through to it rather than being authored. "
|
|
4393
|
+
},
|
|
4394
|
+
{
|
|
4395
|
+
"name": "label/medium/letter-spacing",
|
|
4396
|
+
"type": "FLOAT",
|
|
4397
|
+
"values": {
|
|
4398
|
+
"web-desktop": 0.1,
|
|
4399
|
+
"slide": 0,
|
|
4400
|
+
"web-mobile": 0.1
|
|
4401
|
+
},
|
|
4402
|
+
"scopes": [
|
|
4403
|
+
"LETTER_SPACING"
|
|
4404
|
+
],
|
|
4405
|
+
"description": "S5 --fs-label-medium, and .page-eyebrow's 0.1em tracking. INHERITED in web-mobile: the source defines this role only for web-desktop, so these modes fall through to it rather than being authored. "
|
|
4406
|
+
}
|
|
4407
|
+
]
|
|
4408
|
+
},
|
|
4409
|
+
"Ground": {
|
|
4410
|
+
"modes": [
|
|
4411
|
+
"page",
|
|
4412
|
+
"card"
|
|
4413
|
+
],
|
|
4414
|
+
"variables": [
|
|
4415
|
+
{
|
|
4416
|
+
"name": "ground/sunken",
|
|
4417
|
+
"type": "COLOR",
|
|
4418
|
+
"values": {
|
|
4419
|
+
"page": "#f2f2f2",
|
|
4420
|
+
"card": "#dad9d9"
|
|
4421
|
+
},
|
|
4422
|
+
"scopes": [],
|
|
4423
|
+
"description": "GROUND MODE page (the default): a grey surface on the white ground surface.page is neutral.100 #f2f2f2, 1.12 : 1 - what the library has always drawn. A grey surface is one step darker than the ground it sits on (D107, Fedor 2026-09-17: 'the card looks good on the white and on the colored background'). surface.sunken aliases this half; the card half replaces it under [data-ground=\"card\"] and on a F",
|
|
4424
|
+
"aliases": {
|
|
4425
|
+
"page": "color/neutral/100",
|
|
4426
|
+
"card": "color/neutral/200"
|
|
4427
|
+
},
|
|
4428
|
+
"descriptions": {
|
|
4429
|
+
"page": "GROUND MODE page (the default): a grey surface on the white ground surface.page is neutral.100 #f2f2f2, 1.12 : 1 - what the library has always drawn. A grey surface is one step darker than the ground it sits on (D107, Fedor 2026-09-17: 'the card looks good on the white and on the colored background'). surface.sunken aliases this half; the card half replaces it under [data-ground=\"card\"] and on a F",
|
|
4430
|
+
"card": "GROUND MODE card: on the product ground surface.card #f2f2f7 a grey surface is neutral.200 #dad9d9, 1.26 : 1 - the fill of the master Card/Metric/color_status_input. neutral.100 on that ground measured 1.00 : 1 and the surface disappeared (D106, D107). Text on it: text.default 14.56, text.muted and text.caption 5.86, text.link 6.29; text.subtle and text.error are not offered on it."
|
|
4431
|
+
}
|
|
4432
|
+
},
|
|
4433
|
+
{
|
|
4434
|
+
"name": "ground/track",
|
|
4435
|
+
"type": "COLOR",
|
|
4436
|
+
"values": {
|
|
4437
|
+
"page": "#f2f2f2",
|
|
4438
|
+
"card": "#ffffff"
|
|
4439
|
+
},
|
|
4440
|
+
"scopes": [],
|
|
4441
|
+
"description": "GROUND MODE page: the box of a segmented Tabs on the white ground is neutral.100, the step every grey surface takes there. tabs.track aliases this half.",
|
|
4442
|
+
"aliases": {
|
|
4443
|
+
"page": "color/neutral/100",
|
|
4444
|
+
"card": "color/neutral/0"
|
|
4445
|
+
},
|
|
4446
|
+
"descriptions": {
|
|
4447
|
+
"page": "GROUND MODE page: the box of a segmented Tabs on the white ground is neutral.100, the step every grey surface takes there. tabs.track aliases this half.",
|
|
4448
|
+
"card": "GROUND MODE card: the one exception to the step rule. On the product ground the segmented Tabs' box is white, 1.12 : 1 - the step the box has on a white page (D106 b, confirmed by D107; Fedor 2026-09-17: 'not for menu background, we're not making this one step darker, but instead we're taking white color only for this, for the colored background')."
|
|
4449
|
+
}
|
|
4450
|
+
}
|
|
4451
|
+
]
|
|
4452
|
+
}
|
|
4453
|
+
},
|
|
4454
|
+
"notVariables": {
|
|
4455
|
+
"$why": "Figma has no variable type for these. They become effect styles or stay CSS-only.",
|
|
4456
|
+
"items": [
|
|
4457
|
+
{
|
|
4458
|
+
"name": "gradient/blue",
|
|
4459
|
+
"type": "gradient"
|
|
4460
|
+
},
|
|
4461
|
+
{
|
|
4462
|
+
"name": "gradient/yellow",
|
|
4463
|
+
"type": "gradient"
|
|
4464
|
+
},
|
|
4465
|
+
{
|
|
4466
|
+
"name": "gradient/red",
|
|
4467
|
+
"type": "gradient"
|
|
4468
|
+
},
|
|
4469
|
+
{
|
|
4470
|
+
"name": "shadow/sm",
|
|
4471
|
+
"type": "shadow"
|
|
4472
|
+
},
|
|
4473
|
+
{
|
|
4474
|
+
"name": "shadow/lg",
|
|
4475
|
+
"type": "shadow"
|
|
4476
|
+
},
|
|
4477
|
+
{
|
|
4478
|
+
"name": "shadow/xl",
|
|
4479
|
+
"type": "shadow"
|
|
4480
|
+
},
|
|
4481
|
+
{
|
|
4482
|
+
"name": "shadow/xxl",
|
|
4483
|
+
"type": "shadow"
|
|
4484
|
+
},
|
|
4485
|
+
{
|
|
4486
|
+
"name": "elevation/flat",
|
|
4487
|
+
"type": "shadow"
|
|
4488
|
+
},
|
|
4489
|
+
{
|
|
4490
|
+
"name": "elevation/card",
|
|
4491
|
+
"type": "shadow"
|
|
4492
|
+
},
|
|
4493
|
+
{
|
|
4494
|
+
"name": "elevation/floating",
|
|
4495
|
+
"type": "shadow"
|
|
4496
|
+
},
|
|
4497
|
+
{
|
|
4498
|
+
"name": "elevation/modal",
|
|
4499
|
+
"type": "shadow"
|
|
4500
|
+
}
|
|
4501
|
+
]
|
|
4502
|
+
}
|
|
4503
|
+
}
|