@putdotio/design 1.3.0 → 1.5.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.
@@ -215,6 +215,28 @@
215
215
  }
216
216
  },
217
217
  "info": {
218
+ "background": {
219
+ "$type": "color",
220
+ "$value": "{color.neutral.light.solid}",
221
+ "$description": "Neutral solid command background in light mode.",
222
+ "$extensions": {
223
+ "putio": {
224
+ "cssName": "button-info-bg",
225
+ "mode": "light"
226
+ }
227
+ }
228
+ },
229
+ "backgroundDark": {
230
+ "$type": "color",
231
+ "$value": "{color.neutral.dark.solid}",
232
+ "$description": "Neutral solid command background in dark mode.",
233
+ "$extensions": {
234
+ "putio": {
235
+ "cssName": "button-info-bg",
236
+ "mode": "dark"
237
+ }
238
+ }
239
+ },
218
240
  "backgroundHover": {
219
241
  "$type": "color",
220
242
  "$value": "{color.neutral.light.solidHover}",
@@ -236,13 +258,103 @@
236
258
  "mode": "dark"
237
259
  }
238
260
  }
261
+ },
262
+ "foreground": {
263
+ "$type": "color",
264
+ "$value": "{component.alias.solidForeground}",
265
+ "$description": "Label on the neutral solid — mode-aware for AA contrast on the gray fill.",
266
+ "$extensions": {
267
+ "putio": {
268
+ "cssName": "button-info-fg",
269
+ "mode": "light"
270
+ }
271
+ }
272
+ },
273
+ "foregroundDark": {
274
+ "$type": "color",
275
+ "$value": "{component.alias.solidForegroundDark}",
276
+ "$description": "Label on the neutral solid in dark mode.",
277
+ "$extensions": {
278
+ "putio": {
279
+ "cssName": "button-info-fg",
280
+ "mode": "dark"
281
+ }
282
+ }
283
+ }
284
+ },
285
+ "default": {
286
+ "background": {
287
+ "$type": "color",
288
+ "$value": "{color.neutral.light.componentBg}",
289
+ "$description": "Quiet default button fill in light mode.",
290
+ "$extensions": {
291
+ "putio": {
292
+ "cssName": "button-default-bg",
293
+ "mode": "light"
294
+ }
295
+ }
296
+ },
297
+ "backgroundDark": {
298
+ "$type": "color",
299
+ "$value": "{color.neutral.dark.componentBg}",
300
+ "$description": "Quiet default button fill in dark mode.",
301
+ "$extensions": {
302
+ "putio": {
303
+ "cssName": "button-default-bg",
304
+ "mode": "dark"
305
+ }
306
+ }
307
+ },
308
+ "backgroundHover": {
309
+ "$type": "color",
310
+ "$value": "{color.neutral.light.componentBgHover}",
311
+ "$description": "Default button hover fill in light mode.",
312
+ "$extensions": {
313
+ "putio": {
314
+ "cssName": "button-default-bg-hover",
315
+ "mode": "light"
316
+ }
317
+ }
318
+ },
319
+ "backgroundHoverDark": {
320
+ "$type": "color",
321
+ "$value": "{color.neutral.dark.componentBgHover}",
322
+ "$description": "Default button hover fill in dark mode.",
323
+ "$extensions": {
324
+ "putio": {
325
+ "cssName": "button-default-bg-hover",
326
+ "mode": "dark"
327
+ }
328
+ }
329
+ },
330
+ "foreground": {
331
+ "$type": "color",
332
+ "$value": "{color.neutral.light.text}",
333
+ "$description": "Default button label in light mode.",
334
+ "$extensions": {
335
+ "putio": {
336
+ "cssName": "button-default-fg",
337
+ "mode": "light"
338
+ }
339
+ }
340
+ },
341
+ "foregroundDark": {
342
+ "$type": "color",
343
+ "$value": "{color.neutral.dark.text}",
344
+ "$description": "Default button label in dark mode.",
345
+ "$extensions": {
346
+ "putio": {
347
+ "cssName": "button-default-fg",
348
+ "mode": "dark"
349
+ }
350
+ }
239
351
  }
240
352
  }
241
353
  },
242
354
  "input": {
243
355
  "background": {
244
356
  "$type": "color",
245
- "$value": "{surface.light.appBg}",
357
+ "$value": "{component.field.background}",
246
358
  "$extensions": {
247
359
  "putio": {
248
360
  "cssName": "input-bg",
@@ -252,7 +364,7 @@
252
364
  },
253
365
  "backgroundDark": {
254
366
  "$type": "color",
255
- "$value": "{surface.dark.appBg}",
367
+ "$value": "{component.field.backgroundDark}",
256
368
  "$extensions": {
257
369
  "putio": {
258
370
  "cssName": "input-bg",
@@ -262,7 +374,7 @@
262
374
  },
263
375
  "border": {
264
376
  "$type": "color",
265
- "$value": "{color.neutral.light.border}",
377
+ "$value": "{component.field.border}",
266
378
  "$extensions": {
267
379
  "putio": {
268
380
  "cssName": "input-border",
@@ -272,7 +384,7 @@
272
384
  },
273
385
  "borderDark": {
274
386
  "$type": "color",
275
- "$value": "{color.neutral.dark.border}",
387
+ "$value": "{component.field.borderDark}",
276
388
  "$extensions": {
277
389
  "putio": {
278
390
  "cssName": "input-border",
@@ -282,13 +394,114 @@
282
394
  },
283
395
  "radius": {
284
396
  "$type": "dimension",
285
- "$value": "{radius.default}",
397
+ "$value": "{component.field.radius}",
286
398
  "$extensions": {
287
399
  "putio": {
288
400
  "cssName": "input-radius",
289
401
  "mode": "global"
290
402
  }
291
403
  }
404
+ },
405
+ "borderHover": {
406
+ "$type": "color",
407
+ "$value": "{component.field.borderHover}",
408
+ "$description": "shadcn-friendly alias of --field-border-hover. Always aliases the field token so the two name systems cannot drift.",
409
+ "$extensions": {
410
+ "putio": {
411
+ "cssName": "input-border-hover",
412
+ "mode": "light"
413
+ }
414
+ }
415
+ },
416
+ "borderHoverDark": {
417
+ "$type": "color",
418
+ "$value": "{component.field.borderHoverDark}",
419
+ "$extensions": {
420
+ "putio": {
421
+ "cssName": "input-border-hover",
422
+ "mode": "dark"
423
+ }
424
+ }
425
+ },
426
+ "borderFocus": {
427
+ "$type": "color",
428
+ "$value": "{component.field.borderFocus}",
429
+ "$extensions": {
430
+ "putio": {
431
+ "cssName": "input-border-focus",
432
+ "mode": "light"
433
+ }
434
+ }
435
+ },
436
+ "borderFocusDark": {
437
+ "$type": "color",
438
+ "$value": "{component.field.borderFocusDark}",
439
+ "$extensions": {
440
+ "putio": {
441
+ "cssName": "input-border-focus",
442
+ "mode": "dark"
443
+ }
444
+ }
445
+ },
446
+ "ring": {
447
+ "$type": "string",
448
+ "$value": "{component.field.ring}",
449
+ "$extensions": {
450
+ "putio": {
451
+ "cssName": "input-ring",
452
+ "mode": "light"
453
+ }
454
+ }
455
+ },
456
+ "ringDark": {
457
+ "$type": "string",
458
+ "$value": "{component.field.ringDark}",
459
+ "$extensions": {
460
+ "putio": {
461
+ "cssName": "input-ring",
462
+ "mode": "dark"
463
+ }
464
+ }
465
+ },
466
+ "text": {
467
+ "$type": "color",
468
+ "$value": "{component.field.text}",
469
+ "$extensions": {
470
+ "putio": {
471
+ "cssName": "input-text",
472
+ "mode": "light"
473
+ }
474
+ }
475
+ },
476
+ "textDark": {
477
+ "$type": "color",
478
+ "$value": "{component.field.textDark}",
479
+ "$extensions": {
480
+ "putio": {
481
+ "cssName": "input-text",
482
+ "mode": "dark"
483
+ }
484
+ }
485
+ },
486
+ "placeholder": {
487
+ "$type": "color",
488
+ "$value": "{component.field.placeholder}",
489
+ "$extensions": {
490
+ "putio": {
491
+ "cssName": "input-placeholder",
492
+ "mode": "light"
493
+ }
494
+ }
495
+ },
496
+ "placeholderDark": {
497
+ "$type": "color",
498
+ "$value": "{component.field.placeholderDark}",
499
+ "$extensions": {
500
+ "putio": {
501
+ "cssName": "input-placeholder",
502
+ "mode": "dark"
503
+ }
504
+ }
292
505
  }
293
506
  },
294
507
  "field": {
@@ -460,6 +673,18 @@
460
673
  }
461
674
  }
462
675
  },
676
+ "radius": {
677
+ "$type": "dimension",
678
+ "$value": "{radius.default}",
679
+ "$description": "Shared form-control radius.",
680
+ "$extensions": {
681
+ "putio": {
682
+ "cssName": "field-radius",
683
+ "mode": "global",
684
+ "figma": false
685
+ }
686
+ }
687
+ },
463
688
  "ring": {
464
689
  "$type": "string",
465
690
  "$value": "0 0 0 1px {color.neutral.light.borderHover}",
@@ -1023,9 +1248,51 @@
1023
1248
  }
1024
1249
  }
1025
1250
  },
1251
+ "activeBackground": {
1252
+ "$type": "color",
1253
+ "$value": "{surface.light.listItemBgActive}",
1254
+ "$extensions": {
1255
+ "putio": {
1256
+ "cssName": "file-row-bg-active",
1257
+ "mode": "light"
1258
+ }
1259
+ }
1260
+ },
1261
+ "activeBackgroundDark": {
1262
+ "$type": "color",
1263
+ "$value": "{surface.dark.listItemBgActive}",
1264
+ "$extensions": {
1265
+ "putio": {
1266
+ "cssName": "file-row-bg-active",
1267
+ "mode": "dark"
1268
+ }
1269
+ }
1270
+ },
1271
+ "border": {
1272
+ "$type": "color",
1273
+ "$value": "{surface.light.listItemBorder}",
1274
+ "$description": "Row divider. File lists divide with a hairline, never zebra stripes or per-row cards.",
1275
+ "$extensions": {
1276
+ "putio": {
1277
+ "cssName": "file-row-border",
1278
+ "mode": "light"
1279
+ }
1280
+ }
1281
+ },
1282
+ "borderDark": {
1283
+ "$type": "color",
1284
+ "$value": "{surface.dark.listItemBorder}",
1285
+ "$extensions": {
1286
+ "putio": {
1287
+ "cssName": "file-row-border",
1288
+ "mode": "dark"
1289
+ }
1290
+ }
1291
+ },
1026
1292
  "icon": {
1027
1293
  "$type": "color",
1028
1294
  "$value": "{color.brand.yellow}",
1295
+ "$description": "Every file kind takes this, not just the folder — folder, video, audio, image, archive, generic file alike. Utility and chrome icons stay neutral.",
1029
1296
  "$extensions": {
1030
1297
  "putio": {
1031
1298
  "cssName": "file-row-icon",
@@ -1074,57 +1341,708 @@
1074
1341
  "mode": "dark"
1075
1342
  }
1076
1343
  }
1077
- }
1078
- }
1079
- },
1080
- "context": {
1081
- "tv": {
1082
- "surface": {
1083
- "0": {
1084
- "$type": "color",
1085
- "$value": "hsl(0, 0%, 0%)",
1086
- "$extensions": {
1087
- "putio": {
1088
- "cssName": "surf-0",
1089
- "mode": "tv"
1090
- }
1091
- }
1092
- },
1093
- "1": {
1094
- "$type": "color",
1095
- "$value": "hsl(0, 0%, 3.9%)",
1096
- "$extensions": {
1097
- "putio": {
1098
- "cssName": "surf-1",
1099
- "mode": "tv"
1100
- }
1101
- }
1102
- },
1103
- "2": {
1104
- "$type": "color",
1105
- "$value": "hsl(0, 0%, 8.6%)",
1106
- "$extensions": {
1107
- "putio": {
1108
- "cssName": "surf-2",
1109
- "mode": "tv"
1110
- }
1344
+ },
1345
+ "background": {
1346
+ "$type": "color",
1347
+ "$value": "{color.neutral.light.componentBg}",
1348
+ "$description": "Default toast / inline notification surface.",
1349
+ "$extensions": {
1350
+ "putio": {
1351
+ "cssName": "notification-bg",
1352
+ "mode": "light"
1111
1353
  }
1112
- },
1113
- "3": {
1114
- "$type": "color",
1115
- "$value": "hsl(0, 0%, 12.2%)",
1116
- "$extensions": {
1117
- "putio": {
1118
- "cssName": "surf-3",
1119
- "mode": "tv"
1120
- }
1354
+ }
1355
+ },
1356
+ "backgroundDark": {
1357
+ "$type": "color",
1358
+ "$value": "{color.neutral.dark.componentBg}",
1359
+ "$extensions": {
1360
+ "putio": {
1361
+ "cssName": "notification-bg",
1362
+ "mode": "dark"
1121
1363
  }
1122
1364
  }
1123
1365
  },
1366
+ "border": {
1367
+ "$type": "color",
1368
+ "$value": "{color.neutral.light.line}",
1369
+ "$extensions": {
1370
+ "putio": {
1371
+ "cssName": "notification-border",
1372
+ "mode": "light"
1373
+ }
1374
+ }
1375
+ },
1376
+ "borderDark": {
1377
+ "$type": "color",
1378
+ "$value": "{color.neutral.dark.line}",
1379
+ "$extensions": {
1380
+ "putio": {
1381
+ "cssName": "notification-border",
1382
+ "mode": "dark"
1383
+ }
1384
+ }
1385
+ },
1386
+ "foreground": {
1387
+ "$type": "color",
1388
+ "$value": "{color.neutral.light.text}",
1389
+ "$extensions": {
1390
+ "putio": {
1391
+ "cssName": "notification-fg",
1392
+ "mode": "light"
1393
+ }
1394
+ }
1395
+ },
1396
+ "foregroundDark": {
1397
+ "$type": "color",
1398
+ "$value": "{color.neutral.dark.text}",
1399
+ "$extensions": {
1400
+ "putio": {
1401
+ "cssName": "notification-fg",
1402
+ "mode": "dark"
1403
+ }
1404
+ }
1405
+ },
1406
+ "icon": {
1407
+ "$type": "color",
1408
+ "$value": "{color.neutral.light.textSecondary}",
1409
+ "$extensions": {
1410
+ "putio": {
1411
+ "cssName": "notification-icon",
1412
+ "mode": "light"
1413
+ }
1414
+ }
1415
+ },
1416
+ "iconDark": {
1417
+ "$type": "color",
1418
+ "$value": "{color.neutral.dark.textSecondary}",
1419
+ "$extensions": {
1420
+ "putio": {
1421
+ "cssName": "notification-icon",
1422
+ "mode": "dark"
1423
+ }
1424
+ }
1425
+ },
1426
+ "successBackground": {
1427
+ "$type": "color",
1428
+ "$value": "{color.green.light.bgSecondary}",
1429
+ "$extensions": {
1430
+ "putio": {
1431
+ "cssName": "notification-success-bg",
1432
+ "mode": "light"
1433
+ }
1434
+ }
1435
+ },
1436
+ "successBackgroundDark": {
1437
+ "$type": "color",
1438
+ "$value": "{color.green.dark.bgSecondary}",
1439
+ "$extensions": {
1440
+ "putio": {
1441
+ "cssName": "notification-success-bg",
1442
+ "mode": "dark"
1443
+ }
1444
+ }
1445
+ },
1446
+ "successBorder": {
1447
+ "$type": "color",
1448
+ "$value": "{color.green.light.border}",
1449
+ "$extensions": {
1450
+ "putio": {
1451
+ "cssName": "notification-success-border",
1452
+ "mode": "light"
1453
+ }
1454
+ }
1455
+ },
1456
+ "successBorderDark": {
1457
+ "$type": "color",
1458
+ "$value": "{color.green.dark.border}",
1459
+ "$extensions": {
1460
+ "putio": {
1461
+ "cssName": "notification-success-border",
1462
+ "mode": "dark"
1463
+ }
1464
+ }
1465
+ },
1466
+ "successForeground": {
1467
+ "$type": "color",
1468
+ "$value": "{color.green.light.text}",
1469
+ "$extensions": {
1470
+ "putio": {
1471
+ "cssName": "notification-success-fg",
1472
+ "mode": "light"
1473
+ }
1474
+ }
1475
+ },
1476
+ "successForegroundDark": {
1477
+ "$type": "color",
1478
+ "$value": "{color.green.dark.text}",
1479
+ "$extensions": {
1480
+ "putio": {
1481
+ "cssName": "notification-success-fg",
1482
+ "mode": "dark"
1483
+ }
1484
+ }
1485
+ },
1486
+ "dangerBorder": {
1487
+ "$type": "color",
1488
+ "$value": "{color.red.light.border}",
1489
+ "$extensions": {
1490
+ "putio": {
1491
+ "cssName": "notification-danger-border",
1492
+ "mode": "light"
1493
+ }
1494
+ }
1495
+ },
1496
+ "dangerBorderDark": {
1497
+ "$type": "color",
1498
+ "$value": "{color.red.dark.border}",
1499
+ "$extensions": {
1500
+ "putio": {
1501
+ "cssName": "notification-danger-border",
1502
+ "mode": "dark"
1503
+ }
1504
+ }
1505
+ },
1506
+ "dangerForeground": {
1507
+ "$type": "color",
1508
+ "$value": "{color.red.light.text}",
1509
+ "$extensions": {
1510
+ "putio": {
1511
+ "cssName": "notification-danger-fg",
1512
+ "mode": "light"
1513
+ }
1514
+ }
1515
+ },
1516
+ "dangerForegroundDark": {
1517
+ "$type": "color",
1518
+ "$value": "{color.red.dark.text}",
1519
+ "$extensions": {
1520
+ "putio": {
1521
+ "cssName": "notification-danger-fg",
1522
+ "mode": "dark"
1523
+ }
1524
+ }
1525
+ }
1526
+ },
1527
+ "menu": {
1528
+ "background": {
1529
+ "$type": "color",
1530
+ "$value": "{color.neutral.light.componentBg}",
1531
+ "$description": "Floating menu surface.",
1532
+ "$extensions": {
1533
+ "putio": {
1534
+ "cssName": "menu-bg",
1535
+ "mode": "light"
1536
+ }
1537
+ }
1538
+ },
1539
+ "backgroundDark": {
1540
+ "$type": "color",
1541
+ "$value": "{color.neutral.dark.componentBg}",
1542
+ "$extensions": {
1543
+ "putio": {
1544
+ "cssName": "menu-bg",
1545
+ "mode": "dark"
1546
+ }
1547
+ }
1548
+ },
1549
+ "border": {
1550
+ "$type": "color",
1551
+ "$value": "{color.neutral.light.line}",
1552
+ "$extensions": {
1553
+ "putio": {
1554
+ "cssName": "menu-border",
1555
+ "mode": "light"
1556
+ }
1557
+ }
1558
+ },
1559
+ "borderDark": {
1560
+ "$type": "color",
1561
+ "$value": "{color.neutral.dark.line}",
1562
+ "$extensions": {
1563
+ "putio": {
1564
+ "cssName": "menu-border",
1565
+ "mode": "dark"
1566
+ }
1567
+ }
1568
+ },
1569
+ "radius": {
1570
+ "$type": "dimension",
1571
+ "$value": "{radius.md}",
1572
+ "$extensions": {
1573
+ "putio": {
1574
+ "cssName": "menu-radius",
1575
+ "mode": "global"
1576
+ }
1577
+ }
1578
+ },
1579
+ "shadow": {
1580
+ "$type": "string",
1581
+ "$value": "{elevation.lg}",
1582
+ "$extensions": {
1583
+ "putio": {
1584
+ "cssName": "menu-shadow",
1585
+ "mode": "light"
1586
+ }
1587
+ }
1588
+ },
1589
+ "shadowDark": {
1590
+ "$type": "string",
1591
+ "$value": "{surface.dark.shadowLg}",
1592
+ "$extensions": {
1593
+ "putio": {
1594
+ "cssName": "menu-shadow",
1595
+ "mode": "dark"
1596
+ }
1597
+ }
1598
+ },
1599
+ "itemBackgroundHover": {
1600
+ "$type": "color",
1601
+ "$value": "{color.neutral.light.componentBgHover}",
1602
+ "$extensions": {
1603
+ "putio": {
1604
+ "cssName": "menu-item-bg-hover",
1605
+ "mode": "light"
1606
+ }
1607
+ }
1608
+ },
1609
+ "itemBackgroundHoverDark": {
1610
+ "$type": "color",
1611
+ "$value": "{color.neutral.dark.componentBgHover}",
1612
+ "$extensions": {
1613
+ "putio": {
1614
+ "cssName": "menu-item-bg-hover",
1615
+ "mode": "dark"
1616
+ }
1617
+ }
1618
+ },
1619
+ "itemText": {
1620
+ "$type": "color",
1621
+ "$value": "{color.neutral.light.text}",
1622
+ "$extensions": {
1623
+ "putio": {
1624
+ "cssName": "menu-item-text",
1625
+ "mode": "light"
1626
+ }
1627
+ }
1628
+ },
1629
+ "itemTextDark": {
1630
+ "$type": "color",
1631
+ "$value": "{color.neutral.dark.text}",
1632
+ "$extensions": {
1633
+ "putio": {
1634
+ "cssName": "menu-item-text",
1635
+ "mode": "dark"
1636
+ }
1637
+ }
1638
+ },
1639
+ "itemIcon": {
1640
+ "$type": "color",
1641
+ "$value": "{color.neutral.light.textSecondary}",
1642
+ "$extensions": {
1643
+ "putio": {
1644
+ "cssName": "menu-item-icon",
1645
+ "mode": "light"
1646
+ }
1647
+ }
1648
+ },
1649
+ "itemIconDark": {
1650
+ "$type": "color",
1651
+ "$value": "{color.neutral.dark.textSecondary}",
1652
+ "$extensions": {
1653
+ "putio": {
1654
+ "cssName": "menu-item-icon",
1655
+ "mode": "dark"
1656
+ }
1657
+ }
1658
+ },
1659
+ "itemShortcut": {
1660
+ "$type": "color",
1661
+ "$value": "{color.neutral.light.textSecondary}",
1662
+ "$extensions": {
1663
+ "putio": {
1664
+ "cssName": "menu-item-shortcut",
1665
+ "mode": "light"
1666
+ }
1667
+ }
1668
+ },
1669
+ "itemShortcutDark": {
1670
+ "$type": "color",
1671
+ "$value": "{color.neutral.dark.textSecondary}",
1672
+ "$extensions": {
1673
+ "putio": {
1674
+ "cssName": "menu-item-shortcut",
1675
+ "mode": "dark"
1676
+ }
1677
+ }
1678
+ },
1679
+ "itemDangerText": {
1680
+ "$type": "color",
1681
+ "$value": "{color.red.light.textSecondary}",
1682
+ "$extensions": {
1683
+ "putio": {
1684
+ "cssName": "menu-item-danger-text",
1685
+ "mode": "light"
1686
+ }
1687
+ }
1688
+ },
1689
+ "itemDangerTextDark": {
1690
+ "$type": "color",
1691
+ "$value": "{color.red.dark.textSecondary}",
1692
+ "$extensions": {
1693
+ "putio": {
1694
+ "cssName": "menu-item-danger-text",
1695
+ "mode": "dark"
1696
+ }
1697
+ }
1698
+ },
1699
+ "itemDangerBackgroundHover": {
1700
+ "$type": "color",
1701
+ "$value": "{color.red.light.componentBg}",
1702
+ "$extensions": {
1703
+ "putio": {
1704
+ "cssName": "menu-item-danger-bg-hover",
1705
+ "mode": "light"
1706
+ }
1707
+ }
1708
+ },
1709
+ "itemDangerBackgroundHoverDark": {
1710
+ "$type": "color",
1711
+ "$value": "{color.red.dark.componentBg}",
1712
+ "$extensions": {
1713
+ "putio": {
1714
+ "cssName": "menu-item-danger-bg-hover",
1715
+ "mode": "dark"
1716
+ }
1717
+ }
1718
+ },
1719
+ "itemHeight": {
1720
+ "$type": "dimension",
1721
+ "$value": "32px",
1722
+ "$extensions": {
1723
+ "putio": {
1724
+ "cssName": "menu-item-height",
1725
+ "mode": "global"
1726
+ }
1727
+ }
1728
+ },
1729
+ "separator": {
1730
+ "$type": "color",
1731
+ "$value": "{color.neutral.light.line}",
1732
+ "$extensions": {
1733
+ "putio": {
1734
+ "cssName": "menu-separator",
1735
+ "mode": "light"
1736
+ }
1737
+ }
1738
+ },
1739
+ "separatorDark": {
1740
+ "$type": "color",
1741
+ "$value": "{color.neutral.dark.line}",
1742
+ "$extensions": {
1743
+ "putio": {
1744
+ "cssName": "menu-separator",
1745
+ "mode": "dark"
1746
+ }
1747
+ }
1748
+ },
1749
+ "label": {
1750
+ "$type": "color",
1751
+ "$value": "{color.neutral.light.textSecondary}",
1752
+ "$extensions": {
1753
+ "putio": {
1754
+ "cssName": "menu-label",
1755
+ "mode": "light"
1756
+ }
1757
+ }
1758
+ },
1759
+ "labelDark": {
1760
+ "$type": "color",
1761
+ "$value": "{color.neutral.dark.textSecondary}",
1762
+ "$extensions": {
1763
+ "putio": {
1764
+ "cssName": "menu-label",
1765
+ "mode": "dark"
1766
+ }
1767
+ }
1768
+ }
1769
+ },
1770
+ "palette": {
1771
+ "background": {
1772
+ "$type": "color",
1773
+ "$value": "{color.neutral.light.componentBg}",
1774
+ "$description": "Command palette surface.",
1775
+ "$extensions": {
1776
+ "putio": {
1777
+ "cssName": "palette-bg",
1778
+ "mode": "light"
1779
+ }
1780
+ }
1781
+ },
1782
+ "backgroundDark": {
1783
+ "$type": "color",
1784
+ "$value": "{color.neutral.dark.componentBg}",
1785
+ "$extensions": {
1786
+ "putio": {
1787
+ "cssName": "palette-bg",
1788
+ "mode": "dark"
1789
+ }
1790
+ }
1791
+ },
1792
+ "border": {
1793
+ "$type": "color",
1794
+ "$value": "{color.neutral.light.line}",
1795
+ "$extensions": {
1796
+ "putio": {
1797
+ "cssName": "palette-border",
1798
+ "mode": "light"
1799
+ }
1800
+ }
1801
+ },
1802
+ "borderDark": {
1803
+ "$type": "color",
1804
+ "$value": "{color.neutral.dark.line}",
1805
+ "$extensions": {
1806
+ "putio": {
1807
+ "cssName": "palette-border",
1808
+ "mode": "dark"
1809
+ }
1810
+ }
1811
+ },
1812
+ "shadow": {
1813
+ "$type": "string",
1814
+ "$value": "{elevation.lg}",
1815
+ "$extensions": {
1816
+ "putio": {
1817
+ "cssName": "palette-shadow",
1818
+ "mode": "light"
1819
+ }
1820
+ }
1821
+ },
1822
+ "shadowDark": {
1823
+ "$type": "string",
1824
+ "$value": "{surface.dark.shadowLg}",
1825
+ "$extensions": {
1826
+ "putio": {
1827
+ "cssName": "palette-shadow",
1828
+ "mode": "dark"
1829
+ }
1830
+ }
1831
+ },
1832
+ "scrim": {
1833
+ "$type": "color",
1834
+ "$value": "{surface.light.overlayFull}",
1835
+ "$extensions": {
1836
+ "putio": {
1837
+ "cssName": "palette-scrim",
1838
+ "mode": "light"
1839
+ }
1840
+ }
1841
+ },
1842
+ "scrimDark": {
1843
+ "$type": "color",
1844
+ "$value": "{surface.dark.overlayFull}",
1845
+ "$extensions": {
1846
+ "putio": {
1847
+ "cssName": "palette-scrim",
1848
+ "mode": "dark"
1849
+ }
1850
+ }
1851
+ },
1852
+ "width": {
1853
+ "$type": "dimension",
1854
+ "$value": "560px",
1855
+ "$extensions": {
1856
+ "putio": {
1857
+ "cssName": "palette-width",
1858
+ "mode": "global"
1859
+ }
1860
+ }
1861
+ },
1862
+ "inputHeight": {
1863
+ "$type": "dimension",
1864
+ "$value": "48px",
1865
+ "$extensions": {
1866
+ "putio": {
1867
+ "cssName": "palette-input-height",
1868
+ "mode": "global"
1869
+ }
1870
+ }
1871
+ },
1872
+ "itemHeight": {
1873
+ "$type": "dimension",
1874
+ "$value": "36px",
1875
+ "$extensions": {
1876
+ "putio": {
1877
+ "cssName": "palette-item-height",
1878
+ "mode": "global"
1879
+ }
1880
+ }
1881
+ },
1882
+ "itemBackgroundActive": {
1883
+ "$type": "color",
1884
+ "$value": "{color.neutral.light.componentBgHover}",
1885
+ "$extensions": {
1886
+ "putio": {
1887
+ "cssName": "palette-item-bg-active",
1888
+ "mode": "light"
1889
+ }
1890
+ }
1891
+ },
1892
+ "itemBackgroundActiveDark": {
1893
+ "$type": "color",
1894
+ "$value": "{color.neutral.dark.componentBgHover}",
1895
+ "$extensions": {
1896
+ "putio": {
1897
+ "cssName": "palette-item-bg-active",
1898
+ "mode": "dark"
1899
+ }
1900
+ }
1901
+ },
1902
+ "groupLabel": {
1903
+ "$type": "color",
1904
+ "$value": "{color.neutral.light.textSecondary}",
1905
+ "$extensions": {
1906
+ "putio": {
1907
+ "cssName": "palette-group-label",
1908
+ "mode": "light"
1909
+ }
1910
+ }
1911
+ },
1912
+ "groupLabelDark": {
1913
+ "$type": "color",
1914
+ "$value": "{color.neutral.dark.textSecondary}",
1915
+ "$extensions": {
1916
+ "putio": {
1917
+ "cssName": "palette-group-label",
1918
+ "mode": "dark"
1919
+ }
1920
+ }
1921
+ },
1922
+ "itemMeta": {
1923
+ "$type": "color",
1924
+ "$value": "{color.neutral.light.textSecondary}",
1925
+ "$extensions": {
1926
+ "putio": {
1927
+ "cssName": "palette-item-meta",
1928
+ "mode": "light"
1929
+ }
1930
+ }
1931
+ },
1932
+ "itemMetaDark": {
1933
+ "$type": "color",
1934
+ "$value": "{color.neutral.dark.textSecondary}",
1935
+ "$extensions": {
1936
+ "putio": {
1937
+ "cssName": "palette-item-meta",
1938
+ "mode": "dark"
1939
+ }
1940
+ }
1941
+ }
1942
+ },
1943
+ "sheet": {
1944
+ "background": {
1945
+ "$type": "color",
1946
+ "$value": "{color.neutral.light.componentBg}",
1947
+ "$description": "Right-side detail panel surface.",
1948
+ "$extensions": {
1949
+ "putio": {
1950
+ "cssName": "sheet-bg",
1951
+ "mode": "light"
1952
+ }
1953
+ }
1954
+ },
1955
+ "backgroundDark": {
1956
+ "$type": "color",
1957
+ "$value": "{color.neutral.dark.componentBg}",
1958
+ "$extensions": {
1959
+ "putio": {
1960
+ "cssName": "sheet-bg",
1961
+ "mode": "dark"
1962
+ }
1963
+ }
1964
+ },
1965
+ "border": {
1966
+ "$type": "color",
1967
+ "$value": "{color.neutral.light.line}",
1968
+ "$extensions": {
1969
+ "putio": {
1970
+ "cssName": "sheet-border",
1971
+ "mode": "light"
1972
+ }
1973
+ }
1974
+ },
1975
+ "borderDark": {
1976
+ "$type": "color",
1977
+ "$value": "{color.neutral.dark.line}",
1978
+ "$extensions": {
1979
+ "putio": {
1980
+ "cssName": "sheet-border",
1981
+ "mode": "dark"
1982
+ }
1983
+ }
1984
+ },
1985
+ "shadow": {
1986
+ "$type": "string",
1987
+ "$value": "{elevation.lg}",
1988
+ "$extensions": {
1989
+ "putio": {
1990
+ "cssName": "sheet-shadow",
1991
+ "mode": "light"
1992
+ }
1993
+ }
1994
+ },
1995
+ "shadowDark": {
1996
+ "$type": "string",
1997
+ "$value": "{surface.dark.shadowLg}",
1998
+ "$extensions": {
1999
+ "putio": {
2000
+ "cssName": "sheet-shadow",
2001
+ "mode": "dark"
2002
+ }
2003
+ }
2004
+ },
2005
+ "scrim": {
2006
+ "$type": "color",
2007
+ "$value": "{surface.light.overlayFull}",
2008
+ "$extensions": {
2009
+ "putio": {
2010
+ "cssName": "sheet-scrim",
2011
+ "mode": "light"
2012
+ }
2013
+ }
2014
+ },
2015
+ "scrimDark": {
2016
+ "$type": "color",
2017
+ "$value": "{surface.dark.overlayFull}",
2018
+ "$extensions": {
2019
+ "putio": {
2020
+ "cssName": "sheet-scrim",
2021
+ "mode": "dark"
2022
+ }
2023
+ }
2024
+ },
2025
+ "width": {
2026
+ "$type": "dimension",
2027
+ "$value": "380px",
2028
+ "$description": "Fixed on web. Touch surfaces use a bottom sheet instead.",
2029
+ "$extensions": {
2030
+ "putio": {
2031
+ "cssName": "sheet-width",
2032
+ "mode": "global"
2033
+ }
2034
+ }
2035
+ }
2036
+ }
2037
+ },
2038
+ "context": {
2039
+ "tv": {
1124
2040
  "text": {
2041
+ "$description": "TV uses two semantic text roles. The tertiary name remains as a deprecated alias of secondary so existing consumers keep working; TV text is solid.",
1125
2042
  "primary": {
1126
2043
  "$type": "color",
1127
- "$value": "hsl(0, 0%, 95.7%)",
2044
+ "$value": "{color.neutral.dark.text}",
2045
+ "$description": "Row titles, modal option labels, and button labels.",
1128
2046
  "$extensions": {
1129
2047
  "putio": {
1130
2048
  "cssName": "text-1",
@@ -1134,7 +2052,8 @@
1134
2052
  },
1135
2053
  "secondary": {
1136
2054
  "$type": "color",
1137
- "$value": "hsla(0, 0%, 95.7%, 0.62)",
2055
+ "$value": "{color.neutral.dark.textSecondary}",
2056
+ "$description": "Row sublines, modal titles, section headers, and accessories.",
1138
2057
  "$extensions": {
1139
2058
  "putio": {
1140
2059
  "cssName": "text-2",
@@ -1144,174 +2063,334 @@
1144
2063
  },
1145
2064
  "tertiary": {
1146
2065
  "$type": "color",
1147
- "$value": "hsla(0, 0%, 95.7%, 0.38)",
2066
+ "$value": "{context.tv.text.secondary}",
2067
+ "$description": "Deprecated compatibility alias. Use context.tv.text.secondary.",
1148
2068
  "$extensions": {
1149
2069
  "putio": {
1150
2070
  "cssName": "text-3",
1151
- "mode": "tv"
2071
+ "mode": "tv",
2072
+ "deprecated": true
1152
2073
  }
1153
2074
  }
1154
2075
  }
1155
2076
  },
1156
- "glass": {
1157
- "1": {
1158
- "$type": "color",
1159
- "$value": "hsla(0, 0%, 100%, 0.06)",
1160
- "$extensions": {
1161
- "putio": {
1162
- "cssName": "glass-1-bg",
1163
- "mode": "tv"
2077
+ "channelArt": {
2078
+ "production": {
2079
+ "posterBackground": {
2080
+ "$type": "color",
2081
+ "$value": "hsl(0, 0%, 20%)",
2082
+ "$extensions": {
2083
+ "putio": {
2084
+ "cssName": "tv-channel-art-production-poster-bg",
2085
+ "mode": "tv"
2086
+ }
1164
2087
  }
1165
- }
1166
- },
1167
- "2": {
1168
- "$type": "color",
1169
- "$value": "hsla(0, 0%, 100%, 0.10)",
1170
- "$extensions": {
1171
- "putio": {
1172
- "cssName": "glass-2-bg",
1173
- "mode": "tv"
2088
+ },
2089
+ "splashBackground": {
2090
+ "$type": "color",
2091
+ "$value": "{color.neutral.dark.bg}",
2092
+ "$extensions": {
2093
+ "putio": {
2094
+ "cssName": "tv-channel-art-production-splash-bg",
2095
+ "mode": "tv"
2096
+ }
1174
2097
  }
1175
2098
  }
1176
2099
  },
1177
- "3": {
1178
- "$type": "color",
1179
- "$value": "hsla(0, 0%, 100%, 0.14)",
1180
- "$extensions": {
1181
- "putio": {
1182
- "cssName": "glass-3-bg",
1183
- "mode": "tv"
2100
+ "development": {
2101
+ "background": {
2102
+ "$type": "color",
2103
+ "$value": "hsl(206.7, 78.8%, 52%)",
2104
+ "$extensions": {
2105
+ "putio": {
2106
+ "cssName": "tv-channel-art-development-bg",
2107
+ "mode": "tv"
2108
+ }
1184
2109
  }
1185
- }
1186
- },
1187
- "border": {
1188
- "$type": "color",
1189
- "$value": "hsla(0, 0%, 100%, 0.12)",
1190
- "$extensions": {
1191
- "putio": {
1192
- "cssName": "glass-border",
1193
- "mode": "tv"
2110
+ },
2111
+ "accent": {
2112
+ "$type": "color",
2113
+ "$value": "hsl(206.3, 100%, 81.2%)",
2114
+ "$extensions": {
2115
+ "putio": {
2116
+ "cssName": "tv-channel-art-development-accent",
2117
+ "mode": "tv"
2118
+ }
2119
+ }
2120
+ },
2121
+ "grid": {
2122
+ "$type": "color",
2123
+ "$value": "hsla(0, 0%, 100%, 0.18)",
2124
+ "$extensions": {
2125
+ "putio": {
2126
+ "cssName": "tv-channel-art-development-grid",
2127
+ "mode": "tv"
2128
+ }
1194
2129
  }
1195
2130
  }
1196
2131
  },
1197
- "borderStrong": {
1198
- "$type": "color",
1199
- "$value": "hsla(0, 0%, 100%, 0.22)",
1200
- "$extensions": {
1201
- "putio": {
1202
- "cssName": "glass-border-strong",
1203
- "mode": "tv"
2132
+ "lab": {
2133
+ "background": {
2134
+ "$type": "color",
2135
+ "$value": "hsl(120, 20%, 4.9%)",
2136
+ "$extensions": {
2137
+ "putio": {
2138
+ "cssName": "tv-channel-art-lab-bg",
2139
+ "mode": "tv"
2140
+ }
2141
+ }
2142
+ },
2143
+ "foreground": {
2144
+ "$type": "color",
2145
+ "$value": "hsl(111.1, 100%, 94.7%)",
2146
+ "$extensions": {
2147
+ "putio": {
2148
+ "cssName": "tv-channel-art-lab-fg",
2149
+ "mode": "tv"
2150
+ }
2151
+ }
2152
+ },
2153
+ "accent": {
2154
+ "$type": "color",
2155
+ "$value": "hsl(110.6, 100%, 53.9%)",
2156
+ "$extensions": {
2157
+ "putio": {
2158
+ "cssName": "tv-channel-art-lab-accent",
2159
+ "mode": "tv"
2160
+ }
1204
2161
  }
1205
2162
  }
1206
2163
  }
2164
+ }
2165
+ }
2166
+ },
2167
+ "tv": {
2168
+ "$description": "The portable 10-foot scale. These mode \"tv\" tokens are graph data for platform adapters and are not emitted into web CSS; preview support CSS declares matching --tv-* properties under .tv. TV has no mono face, and its z-order is distinct from the web stack.",
2169
+ "text": {
2170
+ "heading": {
2171
+ "$type": "dimension",
2172
+ "$value": "64px",
2173
+ "$description": "text.heading · GTAmerica-Md.",
2174
+ "$extensions": {
2175
+ "putio": {
2176
+ "cssName": "tv-text-heading",
2177
+ "mode": "tv"
2178
+ }
2179
+ }
2180
+ },
2181
+ "label": {
2182
+ "$type": "dimension",
2183
+ "$value": "48px",
2184
+ "$description": "text.label · GTAmerica-Md. Screen titles, and the file-row icon size.",
2185
+ "$extensions": {
2186
+ "putio": {
2187
+ "cssName": "tv-text-label",
2188
+ "mode": "tv"
2189
+ }
2190
+ }
2191
+ },
2192
+ "body": {
2193
+ "$type": "dimension",
2194
+ "$value": "36px",
2195
+ "$description": "text.body · GTAmerica-Rg. The file-row title.",
2196
+ "$extensions": {
2197
+ "putio": {
2198
+ "cssName": "tv-text-body",
2199
+ "mode": "tv"
2200
+ }
2201
+ }
2202
+ },
2203
+ "caption": {
2204
+ "$type": "dimension",
2205
+ "$value": "32px",
2206
+ "$description": "text.caption · GTAmerica-Rg. Row subline and button icons. TV has no mono face — the size subline renders in GT America with tabular figures, so the Berkeley Mono numeric rule is web and mobile only.",
2207
+ "$extensions": {
2208
+ "putio": {
2209
+ "cssName": "tv-text-caption",
2210
+ "mode": "tv"
2211
+ }
2212
+ }
2213
+ },
2214
+ "smol": {
2215
+ "$type": "dimension",
2216
+ "$value": "24px",
2217
+ "$description": "text.smol · GTAmerica-Rg. Button labels, rendered uppercase.",
2218
+ "$extensions": {
2219
+ "putio": {
2220
+ "cssName": "tv-text-smol",
2221
+ "mode": "tv"
2222
+ }
2223
+ }
2224
+ }
2225
+ },
2226
+ "fontWeight": {
2227
+ "regular": {
2228
+ "$type": "fontWeight",
2229
+ "$value": "400",
2230
+ "$description": "GTAmerica-Rg.",
2231
+ "$extensions": {
2232
+ "putio": {
2233
+ "cssName": "tv-fw-regular",
2234
+ "mode": "tv"
2235
+ }
2236
+ }
2237
+ },
2238
+ "medium": {
2239
+ "$type": "fontWeight",
2240
+ "$value": "500",
2241
+ "$description": "GTAmerica-Md.",
2242
+ "$extensions": {
2243
+ "putio": {
2244
+ "cssName": "tv-fw-medium",
2245
+ "mode": "tv"
2246
+ }
2247
+ }
2248
+ }
2249
+ },
2250
+ "space": {
2251
+ "xxs": {
2252
+ "$type": "dimension",
2253
+ "$value": "4px",
2254
+ "$extensions": {
2255
+ "putio": {
2256
+ "cssName": "tv-space-xxs",
2257
+ "mode": "tv"
2258
+ }
2259
+ }
2260
+ },
2261
+ "xs": {
2262
+ "$type": "dimension",
2263
+ "$value": "8px",
2264
+ "$extensions": {
2265
+ "putio": {
2266
+ "cssName": "tv-space-xs",
2267
+ "mode": "tv"
2268
+ }
2269
+ }
2270
+ },
2271
+ "sm": {
2272
+ "$type": "dimension",
2273
+ "$value": "16px",
2274
+ "$description": "Button padding at size=\"sm\".",
2275
+ "$extensions": {
2276
+ "putio": {
2277
+ "cssName": "tv-space-sm",
2278
+ "mode": "tv"
2279
+ }
2280
+ }
2281
+ },
2282
+ "md": {
2283
+ "$type": "dimension",
2284
+ "$value": "32px",
2285
+ "$description": "The workhorse step: uniform list-row padding, row gap, and header padding-bottom.",
2286
+ "$extensions": {
2287
+ "putio": {
2288
+ "cssName": "tv-space-md",
2289
+ "mode": "tv"
2290
+ }
2291
+ }
2292
+ },
2293
+ "lg": {
2294
+ "$type": "dimension",
2295
+ "$value": "64px",
2296
+ "$extensions": {
2297
+ "putio": {
2298
+ "cssName": "tv-space-lg",
2299
+ "mode": "tv"
2300
+ }
2301
+ }
2302
+ },
2303
+ "xl": {
2304
+ "$type": "dimension",
2305
+ "$value": "128px",
2306
+ "$extensions": {
2307
+ "putio": {
2308
+ "cssName": "tv-space-xl",
2309
+ "mode": "tv"
2310
+ }
2311
+ }
2312
+ },
2313
+ "xxl": {
2314
+ "$type": "dimension",
2315
+ "$value": "256px",
2316
+ "$extensions": {
2317
+ "putio": {
2318
+ "cssName": "tv-space-xxl",
2319
+ "mode": "tv"
2320
+ }
2321
+ }
2322
+ }
2323
+ },
2324
+ "overscan": {
2325
+ "x": {
2326
+ "$type": "number",
2327
+ "$value": 0.04,
2328
+ "$description": "Horizontal safe-area ratio. Platform adapters multiply this value by viewport width.",
2329
+ "$extensions": {
2330
+ "putio": {
2331
+ "cssName": "tv-overscan-x",
2332
+ "mode": "tv",
2333
+ "basis": "viewport-width"
2334
+ }
2335
+ }
1207
2336
  },
1208
- "focus": {
1209
- "ring": {
1210
- "$type": "color",
1211
- "$value": "hsla(44.7, 97.9%, 63.1%, 0.18)",
1212
- "$extensions": {
1213
- "putio": {
1214
- "cssName": "focus-ring",
1215
- "mode": "tv"
1216
- }
2337
+ "y": {
2338
+ "$type": "number",
2339
+ "$value": 0.02,
2340
+ "$description": "Vertical safe-area ratio. Platform adapters multiply this value by viewport height.",
2341
+ "$extensions": {
2342
+ "putio": {
2343
+ "cssName": "tv-overscan-y",
2344
+ "mode": "tv",
2345
+ "basis": "viewport-height"
1217
2346
  }
1218
- },
1219
- "liftShadow": {
1220
- "$type": "string",
1221
- "$value": "0 14px 30px hsla(0, 0%, 0%, 0.45)",
1222
- "$extensions": {
1223
- "putio": {
1224
- "cssName": "focus-shadow",
1225
- "mode": "tv"
1226
- }
2347
+ }
2348
+ }
2349
+ },
2350
+ "radius": {
2351
+ "$type": "dimension",
2352
+ "$value": "{radius.tv}",
2353
+ "$description": "radii.default — one radius for every 10-foot surface.",
2354
+ "$extensions": {
2355
+ "putio": {
2356
+ "cssName": "tv-radius",
2357
+ "mode": "tv"
2358
+ }
2359
+ }
2360
+ },
2361
+ "z": {
2362
+ "$description": "zIndices. NOT the web --z-* order: on TV, overlay sits ABOVE toast. Emit the two scales separately and never fold TV into the web stack order.",
2363
+ "modal": {
2364
+ "$type": "number",
2365
+ "$value": 100,
2366
+ "$extensions": {
2367
+ "putio": {
2368
+ "cssName": "tv-z-modal",
2369
+ "mode": "tv",
2370
+ "category": "other"
1227
2371
  }
1228
2372
  }
1229
2373
  },
1230
- "channelArt": {
1231
- "production": {
1232
- "posterBackground": {
1233
- "$type": "color",
1234
- "$value": "hsl(0, 0%, 20%)",
1235
- "$extensions": {
1236
- "putio": {
1237
- "cssName": "tv-channel-art-production-poster-bg",
1238
- "mode": "tv"
1239
- }
1240
- }
1241
- },
1242
- "splashBackground": {
1243
- "$type": "color",
1244
- "$value": "{color.neutral.dark.bg}",
1245
- "$extensions": {
1246
- "putio": {
1247
- "cssName": "tv-channel-art-production-splash-bg",
1248
- "mode": "tv"
1249
- }
1250
- }
1251
- }
1252
- },
1253
- "development": {
1254
- "background": {
1255
- "$type": "color",
1256
- "$value": "hsl(206.7, 78.8%, 52%)",
1257
- "$extensions": {
1258
- "putio": {
1259
- "cssName": "tv-channel-art-development-bg",
1260
- "mode": "tv"
1261
- }
1262
- }
1263
- },
1264
- "accent": {
1265
- "$type": "color",
1266
- "$value": "hsl(206.3, 100%, 81.2%)",
1267
- "$extensions": {
1268
- "putio": {
1269
- "cssName": "tv-channel-art-development-accent",
1270
- "mode": "tv"
1271
- }
1272
- }
1273
- },
1274
- "grid": {
1275
- "$type": "color",
1276
- "$value": "hsla(0, 0%, 100%, 0.18)",
1277
- "$extensions": {
1278
- "putio": {
1279
- "cssName": "tv-channel-art-development-grid",
1280
- "mode": "tv"
1281
- }
1282
- }
2374
+ "toast": {
2375
+ "$type": "number",
2376
+ "$value": 200,
2377
+ "$extensions": {
2378
+ "putio": {
2379
+ "cssName": "tv-z-toast",
2380
+ "mode": "tv",
2381
+ "category": "other"
1283
2382
  }
1284
- },
1285
- "lab": {
1286
- "background": {
1287
- "$type": "color",
1288
- "$value": "hsl(120, 20%, 4.9%)",
1289
- "$extensions": {
1290
- "putio": {
1291
- "cssName": "tv-channel-art-lab-bg",
1292
- "mode": "tv"
1293
- }
1294
- }
1295
- },
1296
- "foreground": {
1297
- "$type": "color",
1298
- "$value": "hsl(111.1, 100%, 94.7%)",
1299
- "$extensions": {
1300
- "putio": {
1301
- "cssName": "tv-channel-art-lab-fg",
1302
- "mode": "tv"
1303
- }
1304
- }
1305
- },
1306
- "accent": {
1307
- "$type": "color",
1308
- "$value": "hsl(110.6, 100%, 53.9%)",
1309
- "$extensions": {
1310
- "putio": {
1311
- "cssName": "tv-channel-art-lab-accent",
1312
- "mode": "tv"
1313
- }
1314
- }
2383
+ }
2384
+ },
2385
+ "overlay": {
2386
+ "$type": "number",
2387
+ "$value": 300,
2388
+ "$description": "Above toast — the opposite of the web scale, where --z-notification (1400) sits above --z-modal (1300).",
2389
+ "$extensions": {
2390
+ "putio": {
2391
+ "cssName": "tv-z-overlay",
2392
+ "mode": "tv",
2393
+ "category": "other"
1315
2394
  }
1316
2395
  }
1317
2396
  }
@@ -1784,7 +2863,7 @@
1784
2863
  },
1785
2864
  "solid": {
1786
2865
  "$type": "color",
1787
- "$value": "hsl(151, 55%, 41.5%)",
2866
+ "$value": "{color.green.light.solid}",
1788
2867
  "$extensions": {
1789
2868
  "putio": {
1790
2869
  "cssName": "green-solid",
@@ -2030,7 +3109,7 @@
2030
3109
  },
2031
3110
  "solid": {
2032
3111
  "$type": "color",
2033
- "$value": "hsl(358, 75%, 59%)",
3112
+ "$value": "{color.red.light.solid}",
2034
3113
  "$extensions": {
2035
3114
  "putio": {
2036
3115
  "cssName": "red-solid",
@@ -2267,7 +3346,7 @@
2267
3346
  },
2268
3347
  "solidHover": {
2269
3348
  "$type": "color",
2270
- "$value": "hsl(45, 89%, 58%)",
3349
+ "$value": "{color.yellow.light.solidHover}",
2271
3350
  "$description": "Primary-button hover yellow for dark mode.",
2272
3351
  "$extensions": {
2273
3352
  "putio": {
@@ -2339,7 +3418,8 @@
2339
3418
  },
2340
3419
  "color": {
2341
3420
  "$type": "color",
2342
- "$value": "hsl(0, 0%, 78.0%)",
3421
+ "$value": "{elevation.shadowColor}",
3422
+ "$description": "Compat name kept for existing web consumers — alias of elevation.shadowColor so the two can never drift.",
2343
3423
  "$extensions": {
2344
3424
  "putio": {
2345
3425
  "cssName": "shadow",
@@ -2419,7 +3499,7 @@
2419
3499
  },
2420
3500
  "display": {
2421
3501
  "$type": "fontFamily",
2422
- "$value": "\"GT America\", sans-serif",
3502
+ "$value": "{typography.fontFamily.sans}",
2423
3503
  "$extensions": {
2424
3504
  "putio": {
2425
3505
  "cssName": "font-display",
@@ -2428,20 +3508,10 @@
2428
3508
  }
2429
3509
  }
2430
3510
  },
2431
- "uiMono": {
2432
- "$type": "fontFamily",
2433
- "$value": "\"GT America Mono\", monospace",
2434
- "$extensions": {
2435
- "putio": {
2436
- "cssName": "font-ui-mono",
2437
- "mode": "global",
2438
- "figma": true
2439
- }
2440
- }
2441
- },
2442
3511
  "mono": {
2443
3512
  "$type": "fontFamily",
2444
- "$value": "\"Berkeley Mono\", \"GT America Mono\", monospace",
3513
+ "$value": "\"Berkeley Mono\", monospace",
3514
+ "$description": "The single mono face: numerics, timestamps, file sizes, ETAs, counts, code, logs, magnet URIs, identifiers, and filenames. Web and mobile only — TV has no mono face.",
2445
3515
  "$extensions": {
2446
3516
  "putio": {
2447
3517
  "cssName": "font-mono",
@@ -2465,7 +3535,8 @@
2465
3535
  },
2466
3536
  "sm": {
2467
3537
  "$type": "dimension",
2468
- "$value": "0.8125rem",
3538
+ "$value": "0.875rem",
3539
+ "$description": "Caption and button labels — production fontSize 0.",
2469
3540
  "$extensions": {
2470
3541
  "putio": {
2471
3542
  "cssName": "fs-sm",
@@ -2476,7 +3547,8 @@
2476
3547
  },
2477
3548
  "base": {
2478
3549
  "$type": "dimension",
2479
- "$value": "0.875rem",
3550
+ "$value": "1rem",
3551
+ "$description": "Body, labels, inputs — production fontSize 1; equals the responsive root (14px, 15px at >= breakpoint.lg).",
2480
3552
  "$extensions": {
2481
3553
  "putio": {
2482
3554
  "cssName": "fs-base",
@@ -2487,7 +3559,8 @@
2487
3559
  },
2488
3560
  "md": {
2489
3561
  "$type": "dimension",
2490
- "$value": "1rem",
3562
+ "$value": "1.125rem",
3563
+ "$description": "Subheading.",
2491
3564
  "$extensions": {
2492
3565
  "putio": {
2493
3566
  "cssName": "fs-md",
@@ -2498,7 +3571,8 @@
2498
3571
  },
2499
3572
  "lg": {
2500
3573
  "$type": "dimension",
2501
- "$value": "1.125rem",
3574
+ "$value": "1.5rem",
3575
+ "$description": "Heading.",
2502
3576
  "$extensions": {
2503
3577
  "putio": {
2504
3578
  "cssName": "fs-lg",
@@ -2509,7 +3583,8 @@
2509
3583
  },
2510
3584
  "xl": {
2511
3585
  "$type": "dimension",
2512
- "$value": "1.5rem",
3586
+ "$value": "2rem",
3587
+ "$description": "Page title.",
2513
3588
  "$extensions": {
2514
3589
  "putio": {
2515
3590
  "cssName": "fs-xl",
@@ -2520,7 +3595,8 @@
2520
3595
  },
2521
3596
  "2xl": {
2522
3597
  "$type": "dimension",
2523
- "$value": "2rem",
3598
+ "$value": "48px",
3599
+ "$description": "Fixed display tier — does not scale with the responsive root.",
2524
3600
  "$extensions": {
2525
3601
  "putio": {
2526
3602
  "cssName": "fs-2xl",
@@ -2531,7 +3607,8 @@
2531
3607
  },
2532
3608
  "3xl": {
2533
3609
  "$type": "dimension",
2534
- "$value": "3rem",
3610
+ "$value": "64px",
3611
+ "$description": "Fixed display tier — does not scale with the responsive root.",
2535
3612
  "$extensions": {
2536
3613
  "putio": {
2537
3614
  "cssName": "fs-3xl",
@@ -2542,7 +3619,8 @@
2542
3619
  },
2543
3620
  "4xl": {
2544
3621
  "$type": "dimension",
2545
- "$value": "4rem",
3622
+ "$value": "{typography.fontSize.3xl}",
3623
+ "$description": "Compatibility alias for the former 4xl tier; new surfaces should use fontSize.3xl or fontSize.display.",
2546
3624
  "$extensions": {
2547
3625
  "putio": {
2548
3626
  "cssName": "fs-4xl",
@@ -2553,7 +3631,8 @@
2553
3631
  },
2554
3632
  "display": {
2555
3633
  "$type": "dimension",
2556
- "$value": "6rem",
3634
+ "$value": "96px",
3635
+ "$description": "Fixed display tier for brand display moments.",
2557
3636
  "$extensions": {
2558
3637
  "putio": {
2559
3638
  "cssName": "fs-display",
@@ -2858,6 +3937,18 @@
2858
3937
  "figma": true
2859
3938
  }
2860
3939
  }
3940
+ },
3941
+ "tv": {
3942
+ "$type": "dimension",
3943
+ "$value": "12px",
3944
+ "$description": "The corner radius for every 10-foot surface — list rows, buttons, sheets, cards, code tiles, and keys. TV uses one radius, not a scale; the only other radii on TV are intentional pills and circles.",
3945
+ "$extensions": {
3946
+ "putio": {
3947
+ "cssName": "radius-tv",
3948
+ "mode": "global",
3949
+ "figma": true
3950
+ }
3951
+ }
2861
3952
  }
2862
3953
  },
2863
3954
  "border": {
@@ -2934,11 +4025,114 @@
2934
4025
  }
2935
4026
  }
2936
4027
  },
4028
+ "z": {
4029
+ "$description": "Stacking scale. Gapped for platform chrome — never invent z-index numbers in apps.",
4030
+ "dropdown": {
4031
+ "$type": "number",
4032
+ "$value": 1000,
4033
+ "$extensions": {
4034
+ "putio": {
4035
+ "cssName": "z-dropdown",
4036
+ "mode": "global",
4037
+ "category": "other",
4038
+ "figma": false
4039
+ }
4040
+ }
4041
+ },
4042
+ "sticky": {
4043
+ "$type": "number",
4044
+ "$value": 1100,
4045
+ "$extensions": {
4046
+ "putio": {
4047
+ "cssName": "z-sticky",
4048
+ "mode": "global",
4049
+ "category": "other",
4050
+ "figma": false
4051
+ }
4052
+ }
4053
+ },
4054
+ "modal": {
4055
+ "$type": "number",
4056
+ "$value": 1300,
4057
+ "$extensions": {
4058
+ "putio": {
4059
+ "cssName": "z-modal",
4060
+ "mode": "global",
4061
+ "category": "other",
4062
+ "figma": false
4063
+ }
4064
+ }
4065
+ },
4066
+ "notification": {
4067
+ "$type": "number",
4068
+ "$value": 1400,
4069
+ "$extensions": {
4070
+ "putio": {
4071
+ "cssName": "z-notification",
4072
+ "mode": "global",
4073
+ "category": "other",
4074
+ "figma": false
4075
+ }
4076
+ }
4077
+ },
4078
+ "tooltip": {
4079
+ "$type": "number",
4080
+ "$value": 1500,
4081
+ "$extensions": {
4082
+ "putio": {
4083
+ "cssName": "z-tooltip",
4084
+ "mode": "global",
4085
+ "category": "other",
4086
+ "figma": false
4087
+ }
4088
+ }
4089
+ }
4090
+ },
4091
+ "breakpoint": {
4092
+ "$description": "Responsive breakpoints, lifted from app.put.io's BREAKPOINTS. Generator-facing: CSS media queries cannot read custom properties, so emitters bind these as Tailwind screens, StyleX consts, or documented literals.",
4093
+ "sm": {
4094
+ "$type": "dimension",
4095
+ "$value": "640px",
4096
+ "$extensions": {
4097
+ "putio": {
4098
+ "cssName": "bp-sm",
4099
+ "mode": "global",
4100
+ "category": "other",
4101
+ "figma": false
4102
+ }
4103
+ }
4104
+ },
4105
+ "md": {
4106
+ "$type": "dimension",
4107
+ "$value": "768px",
4108
+ "$extensions": {
4109
+ "putio": {
4110
+ "cssName": "bp-md",
4111
+ "mode": "global",
4112
+ "category": "other",
4113
+ "figma": false
4114
+ }
4115
+ }
4116
+ },
4117
+ "lg": {
4118
+ "$type": "dimension",
4119
+ "$value": "1280px",
4120
+ "$description": "The root font-size steps from 14px to 15px at this width.",
4121
+ "$extensions": {
4122
+ "putio": {
4123
+ "cssName": "bp-lg",
4124
+ "mode": "global",
4125
+ "category": "other",
4126
+ "figma": false
4127
+ }
4128
+ }
4129
+ }
4130
+ },
2937
4131
  "surface": {
2938
4132
  "light": {
2939
4133
  "htmlBg": {
2940
4134
  "$type": "color",
2941
- "$value": "hsl(0, 0%, 97.3%)",
4135
+ "$value": "{color.neutral.light.bgSecondary}",
2942
4136
  "$extensions": {
2943
4137
  "putio": {
2944
4138
  "cssName": "html-bg",
@@ -2958,7 +4152,7 @@
2958
4152
  },
2959
4153
  "navBg": {
2960
4154
  "$type": "color",
2961
- "$value": "hsl(0, 0%, 100%)",
4155
+ "$value": "{surface.light.appBg}",
2962
4156
  "$extensions": {
2963
4157
  "putio": {
2964
4158
  "cssName": "nav-bg",
@@ -2978,7 +4172,7 @@
2978
4172
  },
2979
4173
  "navItemBgHover": {
2980
4174
  "$type": "color",
2981
- "$value": "hsl(0, 0%, 95.1%)",
4175
+ "$value": "{color.neutral.light.componentBg}",
2982
4176
  "$extensions": {
2983
4177
  "putio": {
2984
4178
  "cssName": "nav-item-bg-hover",
@@ -2988,7 +4182,7 @@
2988
4182
  },
2989
4183
  "navItemBgActive": {
2990
4184
  "$type": "color",
2991
- "$value": "hsl(0, 0%, 95.1%)",
4185
+ "$value": "{color.neutral.light.componentBg}",
2992
4186
  "$extensions": {
2993
4187
  "putio": {
2994
4188
  "cssName": "nav-item-bg-active",
@@ -3008,7 +4202,7 @@
3008
4202
  },
3009
4203
  "listItemBgHover": {
3010
4204
  "$type": "color",
3011
- "$value": "hsl(0, 0%, 97.3%)",
4205
+ "$value": "{color.neutral.light.bgSecondary}",
3012
4206
  "$extensions": {
3013
4207
  "putio": {
3014
4208
  "cssName": "list-item-bg-hover",
@@ -3018,7 +4212,7 @@
3018
4212
  },
3019
4213
  "listItemBgActive": {
3020
4214
  "$type": "color",
3021
- "$value": "hsl(0, 0%, 97.3%)",
4215
+ "$value": "{color.neutral.light.bgSecondary}",
3022
4216
  "$extensions": {
3023
4217
  "putio": {
3024
4218
  "cssName": "list-item-bg-active",
@@ -3038,7 +4232,7 @@
3038
4232
  },
3039
4233
  "segmentedControlBg": {
3040
4234
  "$type": "color",
3041
- "$value": "hsl(0, 0%, 95.1%)",
4235
+ "$value": "{color.neutral.light.componentBg}",
3042
4236
  "$extensions": {
3043
4237
  "putio": {
3044
4238
  "cssName": "segmented-control-bg",
@@ -3048,7 +4242,7 @@
3048
4242
  },
3049
4243
  "segmentedControlBgActive": {
3050
4244
  "$type": "color",
3051
- "$value": "hsl(0, 0%, 100%)",
4245
+ "$value": "{surface.light.appBg}",
3052
4246
  "$extensions": {
3053
4247
  "putio": {
3054
4248
  "cssName": "segmented-control-bg-active",
@@ -3058,7 +4252,7 @@
3058
4252
  },
3059
4253
  "transferListItemCompletingBg": {
3060
4254
  "$type": "color",
3061
- "$value": "hsl(85, 76.0%, 92.3%)",
4255
+ "$value": "{color.transfer.light.lime3}",
3062
4256
  "$extensions": {
3063
4257
  "putio": {
3064
4258
  "cssName": "transfer-list-item-completing-bg",
@@ -3068,7 +4262,7 @@
3068
4262
  },
3069
4263
  "transferListItemDownloadingBg": {
3070
4264
  "$type": "color",
3071
- "$value": "hsl(85, 76.0%, 92.3%)",
4265
+ "$value": "{color.transfer.light.lime3}",
3072
4266
  "$extensions": {
3073
4267
  "putio": {
3074
4268
  "cssName": "transfer-list-item-downloading-bg",
@@ -3078,7 +4272,7 @@
3078
4272
  },
3079
4273
  "transferListItemFinishedBg": {
3080
4274
  "$type": "color",
3081
- "$value": "hsl(0, 0%, 97.3%)",
4275
+ "$value": "{color.neutral.light.bgSecondary}",
3082
4276
  "$extensions": {
3083
4277
  "putio": {
3084
4278
  "cssName": "transfer-list-item-finished-bg",
@@ -3098,7 +4292,7 @@
3098
4292
  },
3099
4293
  "hiContrast": {
3100
4294
  "$type": "color",
3101
- "$value": "hsl(0, 0%, 9.0%)",
4295
+ "$value": "{color.neutral.light.text}",
3102
4296
  "$extensions": {
3103
4297
  "putio": {
3104
4298
  "cssName": "hi-contrast",
@@ -3108,7 +4302,7 @@
3108
4302
  },
3109
4303
  "loContrast": {
3110
4304
  "$type": "color",
3111
- "$value": "hsl(0, 0%, 99.0%)",
4305
+ "$value": "{color.neutral.light.bg}",
3112
4306
  "$extensions": {
3113
4307
  "putio": {
3114
4308
  "cssName": "lo-contrast",
@@ -3170,7 +4364,7 @@
3170
4364
  },
3171
4365
  "navBg": {
3172
4366
  "$type": "color",
3173
- "$value": "hsl(0, 0%, 8.5%)",
4367
+ "$value": "{surface.dark.appBg}",
3174
4368
  "$extensions": {
3175
4369
  "putio": {
3176
4370
  "cssName": "nav-bg",
@@ -3190,7 +4384,7 @@
3190
4384
  },
3191
4385
  "navItemBgHover": {
3192
4386
  "$type": "color",
3193
- "$value": "hsl(0, 0%, 13.6%)",
4387
+ "$value": "{color.neutral.dark.componentBg}",
3194
4388
  "$extensions": {
3195
4389
  "putio": {
3196
4390
  "cssName": "nav-item-bg-hover",
@@ -3200,7 +4394,7 @@
3200
4394
  },
3201
4395
  "navItemBgActive": {
3202
4396
  "$type": "color",
3203
- "$value": "hsl(0, 0%, 13.6%)",
4397
+ "$value": "{color.neutral.dark.componentBg}",
3204
4398
  "$extensions": {
3205
4399
  "putio": {
3206
4400
  "cssName": "nav-item-bg-active",
@@ -3220,7 +4414,7 @@
3220
4414
  },
3221
4415
  "listItemBgHover": {
3222
4416
  "$type": "color",
3223
- "$value": "hsl(0, 0%, 11.0%)",
4417
+ "$value": "{color.neutral.dark.bgSecondary}",
3224
4418
  "$extensions": {
3225
4419
  "putio": {
3226
4420
  "cssName": "list-item-bg-hover",
@@ -3230,7 +4424,7 @@
3230
4424
  },
3231
4425
  "listItemBgActive": {
3232
4426
  "$type": "color",
3233
- "$value": "hsl(0, 0%, 11.0%)",
4427
+ "$value": "{color.neutral.dark.bgSecondary}",
3234
4428
  "$extensions": {
3235
4429
  "putio": {
3236
4430
  "cssName": "list-item-bg-active",
@@ -3250,7 +4444,7 @@
3250
4444
  },
3251
4445
  "segmentedControlBg": {
3252
4446
  "$type": "color",
3253
- "$value": "hsl(0, 0%, 8.5%)",
4447
+ "$value": "{surface.dark.appBg}",
3254
4448
  "$extensions": {
3255
4449
  "putio": {
3256
4450
  "cssName": "segmented-control-bg",
@@ -3260,7 +4454,7 @@
3260
4454
  },
3261
4455
  "segmentedControlBgActive": {
3262
4456
  "$type": "color",
3263
- "$value": "hsl(0, 0%, 13.6%)",
4457
+ "$value": "{color.neutral.dark.componentBg}",
3264
4458
  "$extensions": {
3265
4459
  "putio": {
3266
4460
  "cssName": "segmented-control-bg-active",
@@ -3290,7 +4484,7 @@
3290
4484
  },
3291
4485
  "transferListItemFinishedBg": {
3292
4486
  "$type": "color",
3293
- "$value": "hsl(0, 0%, 11.0%)",
4487
+ "$value": "{color.neutral.dark.bgSecondary}",
3294
4488
  "$extensions": {
3295
4489
  "putio": {
3296
4490
  "cssName": "transfer-list-item-finished-bg",
@@ -3310,7 +4504,7 @@
3310
4504
  },
3311
4505
  "hiContrast": {
3312
4506
  "$type": "color",
3313
- "$value": "hsl(0, 0%, 93.0%)",
4507
+ "$value": "{color.neutral.dark.text}",
3314
4508
  "$extensions": {
3315
4509
  "putio": {
3316
4510
  "cssName": "hi-contrast",
@@ -3320,7 +4514,7 @@
3320
4514
  },
3321
4515
  "loContrast": {
3322
4516
  "$type": "color",
3323
- "$value": "hsl(0, 0%, 8.5%)",
4517
+ "$value": "{color.neutral.dark.bg}",
3324
4518
  "$extensions": {
3325
4519
  "putio": {
3326
4520
  "cssName": "lo-contrast",
@@ -3360,7 +4554,8 @@
3360
4554
  },
3361
4555
  "shadow": {
3362
4556
  "$type": "color",
3363
- "$value": "hsl(0, 0%, 0%)",
4557
+ "$value": "{surface.dark.shadowColor}",
4558
+ "$description": "Compat name kept for existing web consumers — alias of surface.dark.shadowColor so the two can never drift.",
3364
4559
  "$extensions": {
3365
4560
  "putio": {
3366
4561
  "cssName": "shadow",