@nurix/etna 0.19.2 → 0.19.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/data/harness-index.json +1 -1
  2. package/data/harnesses/code/CLAUDE.md +2 -2
  3. package/data/harnesses/code/harness.json +2 -2
  4. package/data/harnesses/code/rules/frontend.md +3 -3
  5. package/data/harnesses/code/skills/design/SKILL.md +20 -8
  6. package/data/harnesses/code/skills/design/data/catalog/rules.csv +10 -5
  7. package/data/harnesses/code/skills/design/data/combinations/Readme.md +8 -4
  8. package/data/harnesses/code/skills/design/data/combinations/accent-presets.md +113 -0
  9. package/data/harnesses/code/skills/design/data/combinations/fonts-known.json +11 -0
  10. package/data/harnesses/code/skills/design/data/combinations/manifest.json +57 -10
  11. package/data/harnesses/code/skills/design/data/combinations/motion.csv +10 -0
  12. package/data/harnesses/code/skills/design/data/combinations/palettes.csv +92 -49
  13. package/data/harnesses/code/skills/design/data/combinations/styles.csv +67 -54
  14. package/data/harnesses/code/skills/design/data/combinations/typography.csv +64 -61
  15. package/data/harnesses/code/skills/design/data/design-md/library/expo.md +4 -4
  16. package/data/harnesses/code/skills/design/data/design-md/library/lovable.md +5 -5
  17. package/data/harnesses/code/skills/design/data/design-md/library/minimax.md +6 -6
  18. package/data/harnesses/code/skills/design/data/design-md/library/notion.md +4 -4
  19. package/data/harnesses/code/skills/design/data/design-md/library/runwayml.md +4 -4
  20. package/data/harnesses/code/skills/design/data/design-md/library/sentry.md +2 -2
  21. package/data/harnesses/code/skills/design/data/design-md/library/slack.md +6 -6
  22. package/data/harnesses/code/skills/design/data/design-md/library/webflow.md +5 -5
  23. package/data/harnesses/code/skills/design/data/design-md/nurix.md +11 -7
  24. package/data/harnesses/code/skills/design/data/design-tokens/SCHEMA.md +256 -141
  25. package/data/harnesses/code/skills/design/data/design-tokens/airbnb/design.tokens.json +309 -1
  26. package/data/harnesses/code/skills/design/data/design-tokens/airtable/design.tokens.json +309 -1
  27. package/data/harnesses/code/skills/design/data/design-tokens/anthropic-claude/design.tokens.json +309 -1
  28. package/data/harnesses/code/skills/design/data/design-tokens/apple/design.tokens.json +309 -1
  29. package/data/harnesses/code/skills/design/data/design-tokens/binance/design.tokens.json +309 -1
  30. package/data/harnesses/code/skills/design/data/design-tokens/bmw/design.tokens.json +309 -1
  31. package/data/harnesses/code/skills/design/data/design-tokens/cal/design.tokens.json +313 -1
  32. package/data/harnesses/code/skills/design/data/design-tokens/clay/design.tokens.json +309 -1
  33. package/data/harnesses/code/skills/design/data/design-tokens/clickhouse/design.tokens.json +309 -1
  34. package/data/harnesses/code/skills/design/data/design-tokens/cohere/design.tokens.json +309 -1
  35. package/data/harnesses/code/skills/design/data/design-tokens/coinbase/design.tokens.json +309 -1
  36. package/data/harnesses/code/skills/design/data/design-tokens/composio/design.tokens.json +309 -1
  37. package/data/harnesses/code/skills/design/data/design-tokens/cursor/design.tokens.json +309 -1
  38. package/data/harnesses/code/skills/design/data/design-tokens/elevenlabs/design.tokens.json +313 -1
  39. package/data/harnesses/code/skills/design/data/design-tokens/expo/design.tokens.json +309 -1
  40. package/data/harnesses/code/skills/design/data/design-tokens/figma/design.tokens.json +313 -1
  41. package/data/harnesses/code/skills/design/data/design-tokens/framer/design.tokens.json +309 -1
  42. package/data/harnesses/code/skills/design/data/design-tokens/goldens.json +123 -123
  43. package/data/harnesses/code/skills/design/data/design-tokens/hashicorp/design.tokens.json +309 -1
  44. package/data/harnesses/code/skills/design/data/design-tokens/ibm/design.tokens.json +309 -1
  45. package/data/harnesses/code/skills/design/data/design-tokens/intercom/design.tokens.json +309 -1
  46. package/data/harnesses/code/skills/design/data/design-tokens/kraken/design.tokens.json +313 -1
  47. package/data/harnesses/code/skills/design/data/design-tokens/linear-app/design.resolver.json +1 -1
  48. package/data/harnesses/code/skills/design/data/design-tokens/linear-app/design.tokens.dark.json +10 -0
  49. package/data/harnesses/code/skills/design/data/design-tokens/linear-app/design.tokens.json +309 -1
  50. package/data/harnesses/code/skills/design/data/design-tokens/lovable/design.tokens.json +313 -1
  51. package/data/harnesses/code/skills/design/data/design-tokens/meta/design.tokens.json +313 -1
  52. package/data/harnesses/code/skills/design/data/design-tokens/minimax/design.tokens.json +309 -1
  53. package/data/harnesses/code/skills/design/data/design-tokens/mintlify/design.tokens.json +309 -1
  54. package/data/harnesses/code/skills/design/data/design-tokens/miro/design.tokens.json +313 -1
  55. package/data/harnesses/code/skills/design/data/design-tokens/mistral-ai/design.tokens.json +309 -1
  56. package/data/harnesses/code/skills/design/data/design-tokens/mongodb/design.tokens.json +313 -1
  57. package/data/harnesses/code/skills/design/data/design-tokens/notion/design.tokens.json +309 -1
  58. package/data/harnesses/code/skills/design/data/design-tokens/nurix/design.tokens.json +307 -2
  59. package/data/harnesses/code/skills/design/data/design-tokens/nvidia/design.tokens.json +309 -1
  60. package/data/harnesses/code/skills/design/data/design-tokens/ollama/design.tokens.json +309 -1
  61. package/data/harnesses/code/skills/design/data/design-tokens/opencode-ai/design.tokens.json +309 -1
  62. package/data/harnesses/code/skills/design/data/design-tokens/posthog/design.tokens.json +309 -1
  63. package/data/harnesses/code/skills/design/data/design-tokens/raycast/design.tokens.json +309 -1
  64. package/data/harnesses/code/skills/design/data/design-tokens/replicate/design.tokens.json +309 -1
  65. package/data/harnesses/code/skills/design/data/design-tokens/resend/design.resolver.json +1 -1
  66. package/data/harnesses/code/skills/design/data/design-tokens/resend/design.tokens.dark.json +10 -0
  67. package/data/harnesses/code/skills/design/data/design-tokens/resend/design.tokens.json +309 -1
  68. package/data/harnesses/code/skills/design/data/design-tokens/revolut/design.tokens.json +309 -1
  69. package/data/harnesses/code/skills/design/data/design-tokens/runwayml/design.tokens.json +310 -2
  70. package/data/harnesses/code/skills/design/data/design-tokens/sanity/design.tokens.json +313 -1
  71. package/data/harnesses/code/skills/design/data/design-tokens/sentry/design.tokens.json +309 -1
  72. package/data/harnesses/code/skills/design/data/design-tokens/shopify/design.tokens.json +309 -1
  73. package/data/harnesses/code/skills/design/data/design-tokens/slack/design.tokens.json +309 -1
  74. package/data/harnesses/code/skills/design/data/design-tokens/spacex/design.tokens.json +309 -1
  75. package/data/harnesses/code/skills/design/data/design-tokens/spotify/design.tokens.json +313 -1
  76. package/data/harnesses/code/skills/design/data/design-tokens/stripe/design.tokens.json +313 -1
  77. package/data/harnesses/code/skills/design/data/design-tokens/supabase/design.tokens.json +309 -1
  78. package/data/harnesses/code/skills/design/data/design-tokens/superhuman/design.tokens.json +313 -1
  79. package/data/harnesses/code/skills/design/data/design-tokens/tesla/design.tokens.json +309 -1
  80. package/data/harnesses/code/skills/design/data/design-tokens/theverge/design.tokens.json +309 -1
  81. package/data/harnesses/code/skills/design/data/design-tokens/together-ai/design.tokens.json +313 -1
  82. package/data/harnesses/code/skills/design/data/design-tokens/uber/design.tokens.json +309 -1
  83. package/data/harnesses/code/skills/design/data/design-tokens/vercel/design.tokens.json +309 -1
  84. package/data/harnesses/code/skills/design/data/design-tokens/voltagent/design.resolver.json +1 -1
  85. package/data/harnesses/code/skills/design/data/design-tokens/voltagent/design.tokens.dark.json +10 -0
  86. package/data/harnesses/code/skills/design/data/design-tokens/voltagent/design.tokens.json +309 -1
  87. package/data/harnesses/code/skills/design/data/design-tokens/warp/design.tokens.json +309 -1
  88. package/data/harnesses/code/skills/design/data/design-tokens/webflow/design.tokens.json +309 -1
  89. package/data/harnesses/code/skills/design/data/design-tokens/wired/design.tokens.json +309 -1
  90. package/data/harnesses/code/skills/design/data/design-tokens/wise/design.tokens.json +309 -1
  91. package/data/harnesses/code/skills/design/data/design-tokens/x-ai/design.tokens.json +309 -1
  92. package/data/harnesses/code/skills/design/data/design-tokens/zapier/design.tokens.json +309 -1
  93. package/data/harnesses/code/skills/design/data/operator-pack/exemplars/command-center.tsx +25 -25
  94. package/data/harnesses/code/skills/design/data/operator-pack/exemplars/create-edit.tsx +18 -18
  95. package/data/harnesses/code/skills/design/data/operator-pack/exemplars/dashboard.tsx +82 -105
  96. package/data/harnesses/code/skills/design/data/operator-pack/exemplars/entity-detail.tsx +97 -93
  97. package/data/harnesses/code/skills/design/data/operator-pack/exemplars/list-detail.tsx +16 -15
  98. package/data/harnesses/code/skills/design/data/operator-pack/exemplars/log-stream.tsx +34 -34
  99. package/data/harnesses/code/skills/design/data/operator-pack/surface-catalog.md +5 -5
  100. package/data/harnesses/code/skills/design/references/create.md +49 -7
  101. package/data/harnesses/code/skills/design/references/diagnosis.md +3 -3
  102. package/data/harnesses/code/skills/design/references/hard-rules.md +25 -3
  103. package/data/harnesses/code/skills/design/references/improve.md +32 -3
  104. package/data/harnesses/code/skills/design/references/interaction.md +3 -3
  105. package/data/harnesses/code/skills/design/references/introspect.md +1 -1
  106. package/data/harnesses/code/skills/design/references/lifecycle.md +2 -2
  107. package/data/harnesses/code/skills/design/references/personality.md +280 -133
  108. package/data/harnesses/code/skills/design/references/structure.md +22 -1
  109. package/data/harnesses/code/skills/design/scripts/convert-design-md.mjs +306 -26
  110. package/data/harnesses/code/skills/design/scripts/derive-personality.mjs +596 -104
  111. package/data/harnesses/code/skills/design/scripts/lib/checks.mjs +200 -11
  112. package/data/harnesses/code/skills/design/scripts/lib/vocabulary.mjs +65 -0
  113. package/data/harnesses/code/skills/design/scripts/phase-gate.mjs +95 -11
  114. package/data/harnesses/code/skills/design/scripts/preship-sweep.mjs +50 -5
  115. package/data/harnesses/code/skills/design/scripts/render-rung.mjs +214 -14
  116. package/data/harnesses/code/skills/design/scripts/scaffold.mjs +242 -25
  117. package/data/harnesses/code/skills/design/scripts/self-integrity.mjs +81 -6
  118. package/data/harnesses/code/skills/design/scripts/snapshot-goldens.mjs +101 -5
  119. package/data/harnesses/code/skills/design/scripts/validate-combinations.mjs +142 -17
  120. package/data/harnesses/etna/CLAUDE.md +1 -1
  121. package/data/harnesses/etna/harness.json +2 -2
  122. package/package.json +1 -1
@@ -2,11 +2,12 @@
2
2
  "$description": "Spotify — the near-black operator reading\n[verbosity] derived: content-first, scannable — Spotify trusts dense content over explanatory chrome\n[density-tier] corpus: content density over breathing room, dark compression\n[color-tokens.light] categorically-dark brand — the default slot carries Spotify's near-black surface set; the corpus forbids light primary surfaces",
3
3
  "$extensions": {
4
4
  "com.nurix.design": {
5
- "schema": "design-tokens/v1",
5
+ "schema": "design-tokens/v2",
6
6
  "dtcg": "2025.10",
7
7
  "product": "Spotify",
8
8
  "provenance": "library",
9
9
  "sourced": "2026-07-04",
10
+ "theme-default": "light",
10
11
  "product-traits": [
11
12
  "media-library",
12
13
  "catalog",
@@ -186,6 +187,14 @@
186
187
  }
187
188
  }
188
189
  },
190
+ "stagger-unit": {
191
+ "$type": "duration",
192
+ "$value": {
193
+ "value": 30,
194
+ "unit": "ms"
195
+ },
196
+ "$description": "derived: v1→v2 migration — the 30ms default stagger base (0–60ms legal)"
197
+ },
189
198
  "contrast-boost": {
190
199
  "$type": "number",
191
200
  "$value": 1,
@@ -569,6 +578,16 @@
569
578
  }
570
579
  }
571
580
  },
581
+ "surface-raised": {
582
+ "$type": "color",
583
+ "$value": "{color.card}",
584
+ "$description": "derived: v1→v2 migration — light aliases card; dark looks carry the surface-lightness ladder"
585
+ },
586
+ "surface-overlay": {
587
+ "$type": "color",
588
+ "$value": "{color.popover}",
589
+ "$description": "derived: v1→v2 migration — light aliases popover; dark looks carry the surface-lightness ladder"
590
+ },
572
591
  "popover": {
573
592
  "$type": "color",
574
593
  "$value": {
@@ -968,6 +987,299 @@
968
987
  }
969
988
  }
970
989
  }
990
+ },
991
+ "display": {
992
+ "$type": "typography",
993
+ "$value": {
994
+ "fontFamily": "{typography.family.heading}",
995
+ "fontSize": {
996
+ "value": 42,
997
+ "unit": "px"
998
+ },
999
+ "lineHeight": 1.25,
1000
+ "fontWeight": "{primitive.font-weight-strong}",
1001
+ "letterSpacing": 0
1002
+ },
1003
+ "$description": "derived: v1→v2 migration — provisional display step (h1 × 1.75, strong weight)",
1004
+ "$extensions": {
1005
+ "com.nurix.design": {
1006
+ "hint": "display step unset — resolve from the product's design.md or leave for budget-time"
1007
+ }
1008
+ }
1009
+ }
1010
+ }
1011
+ },
1012
+ "elevation": {
1013
+ "sm": {
1014
+ "$type": "shadow",
1015
+ "$value": [
1016
+ {
1017
+ "color": {
1018
+ "colorSpace": "srgb",
1019
+ "components": [
1020
+ 0.05882,
1021
+ 0.0902,
1022
+ 0.16471
1023
+ ],
1024
+ "hex": "#0f172a",
1025
+ "alpha": 0.1
1026
+ },
1027
+ "offsetX": {
1028
+ "value": 0,
1029
+ "unit": "px"
1030
+ },
1031
+ "offsetY": {
1032
+ "value": 1,
1033
+ "unit": "px"
1034
+ },
1035
+ "blur": {
1036
+ "value": 3,
1037
+ "unit": "px"
1038
+ },
1039
+ "spread": {
1040
+ "value": 0,
1041
+ "unit": "px"
1042
+ }
1043
+ },
1044
+ {
1045
+ "color": {
1046
+ "colorSpace": "srgb",
1047
+ "components": [
1048
+ 0.05882,
1049
+ 0.0902,
1050
+ 0.16471
1051
+ ],
1052
+ "hex": "#0f172a",
1053
+ "alpha": 0.1
1054
+ },
1055
+ "offsetX": {
1056
+ "value": 0,
1057
+ "unit": "px"
1058
+ },
1059
+ "offsetY": {
1060
+ "value": 1,
1061
+ "unit": "px"
1062
+ },
1063
+ "blur": {
1064
+ "value": 2,
1065
+ "unit": "px"
1066
+ },
1067
+ "spread": {
1068
+ "value": -1,
1069
+ "unit": "px"
1070
+ }
1071
+ }
1072
+ ],
1073
+ "$description": "derived: v1 shadow-intensity migration",
1074
+ "$extensions": {
1075
+ "com.nurix.design": {
1076
+ "css": "0 1px 3px 0 rgb(15 23 42 / calc(0.10 * var(--shadow-intensity))), 0 1px 2px -1px rgb(15 23 42 / calc(0.10 * var(--shadow-intensity)))",
1077
+ "hint": "elevation unset — the design.md names real shadow values (`rgba(0,0,0,0.3) 0 8px 8px`; `rgba(0,0,0,0.5) 0 8px 24px`); resolve the composites from that prose at the data build"
1078
+ }
1079
+ }
1080
+ },
1081
+ "md": {
1082
+ "$type": "shadow",
1083
+ "$value": [
1084
+ {
1085
+ "color": {
1086
+ "colorSpace": "srgb",
1087
+ "components": [
1088
+ 0.05882,
1089
+ 0.0902,
1090
+ 0.16471
1091
+ ],
1092
+ "hex": "#0f172a",
1093
+ "alpha": 0.1
1094
+ },
1095
+ "offsetX": {
1096
+ "value": 0,
1097
+ "unit": "px"
1098
+ },
1099
+ "offsetY": {
1100
+ "value": 4,
1101
+ "unit": "px"
1102
+ },
1103
+ "blur": {
1104
+ "value": 6,
1105
+ "unit": "px"
1106
+ },
1107
+ "spread": {
1108
+ "value": -1,
1109
+ "unit": "px"
1110
+ }
1111
+ },
1112
+ {
1113
+ "color": {
1114
+ "colorSpace": "srgb",
1115
+ "components": [
1116
+ 0.05882,
1117
+ 0.0902,
1118
+ 0.16471
1119
+ ],
1120
+ "hex": "#0f172a",
1121
+ "alpha": 0.1
1122
+ },
1123
+ "offsetX": {
1124
+ "value": 0,
1125
+ "unit": "px"
1126
+ },
1127
+ "offsetY": {
1128
+ "value": 2,
1129
+ "unit": "px"
1130
+ },
1131
+ "blur": {
1132
+ "value": 4,
1133
+ "unit": "px"
1134
+ },
1135
+ "spread": {
1136
+ "value": -2,
1137
+ "unit": "px"
1138
+ }
1139
+ }
1140
+ ],
1141
+ "$description": "derived: v1 shadow-intensity migration",
1142
+ "$extensions": {
1143
+ "com.nurix.design": {
1144
+ "css": "0 4px 6px -1px rgb(15 23 42 / calc(0.10 * var(--shadow-intensity))), 0 2px 4px -2px rgb(15 23 42 / calc(0.10 * var(--shadow-intensity)))",
1145
+ "hint": "elevation unset — the design.md names real shadow values (`rgba(0,0,0,0.3) 0 8px 8px`; `rgba(0,0,0,0.5) 0 8px 24px`); resolve the composites from that prose at the data build"
1146
+ }
1147
+ }
1148
+ },
1149
+ "lg": {
1150
+ "$type": "shadow",
1151
+ "$value": [
1152
+ {
1153
+ "color": {
1154
+ "colorSpace": "srgb",
1155
+ "components": [
1156
+ 0.05882,
1157
+ 0.0902,
1158
+ 0.16471
1159
+ ],
1160
+ "hex": "#0f172a",
1161
+ "alpha": 0.1
1162
+ },
1163
+ "offsetX": {
1164
+ "value": 0,
1165
+ "unit": "px"
1166
+ },
1167
+ "offsetY": {
1168
+ "value": 10,
1169
+ "unit": "px"
1170
+ },
1171
+ "blur": {
1172
+ "value": 15,
1173
+ "unit": "px"
1174
+ },
1175
+ "spread": {
1176
+ "value": -3,
1177
+ "unit": "px"
1178
+ }
1179
+ },
1180
+ {
1181
+ "color": {
1182
+ "colorSpace": "srgb",
1183
+ "components": [
1184
+ 0.05882,
1185
+ 0.0902,
1186
+ 0.16471
1187
+ ],
1188
+ "hex": "#0f172a",
1189
+ "alpha": 0.1
1190
+ },
1191
+ "offsetX": {
1192
+ "value": 0,
1193
+ "unit": "px"
1194
+ },
1195
+ "offsetY": {
1196
+ "value": 4,
1197
+ "unit": "px"
1198
+ },
1199
+ "blur": {
1200
+ "value": 6,
1201
+ "unit": "px"
1202
+ },
1203
+ "spread": {
1204
+ "value": -4,
1205
+ "unit": "px"
1206
+ }
1207
+ }
1208
+ ],
1209
+ "$description": "derived: v1 shadow-intensity migration",
1210
+ "$extensions": {
1211
+ "com.nurix.design": {
1212
+ "css": "0 10px 15px -3px rgb(15 23 42 / calc(0.10 * var(--shadow-intensity))), 0 4px 6px -4px rgb(15 23 42 / calc(0.10 * var(--shadow-intensity)))",
1213
+ "hint": "elevation unset — the design.md names real shadow values (`rgba(0,0,0,0.3) 0 8px 8px`; `rgba(0,0,0,0.5) 0 8px 24px`); resolve the composites from that prose at the data build"
1214
+ }
1215
+ }
1216
+ },
1217
+ "overlay": {
1218
+ "$type": "shadow",
1219
+ "$value": [
1220
+ {
1221
+ "color": {
1222
+ "colorSpace": "srgb",
1223
+ "components": [
1224
+ 0.05882,
1225
+ 0.0902,
1226
+ 0.16471
1227
+ ],
1228
+ "hex": "#0f172a",
1229
+ "alpha": 0.1
1230
+ },
1231
+ "offsetX": {
1232
+ "value": 0,
1233
+ "unit": "px"
1234
+ },
1235
+ "offsetY": {
1236
+ "value": 20,
1237
+ "unit": "px"
1238
+ },
1239
+ "blur": {
1240
+ "value": 25,
1241
+ "unit": "px"
1242
+ },
1243
+ "spread": {
1244
+ "value": -5,
1245
+ "unit": "px"
1246
+ }
1247
+ },
1248
+ {
1249
+ "color": {
1250
+ "colorSpace": "srgb",
1251
+ "components": [
1252
+ 0.05882,
1253
+ 0.0902,
1254
+ 0.16471
1255
+ ],
1256
+ "hex": "#0f172a",
1257
+ "alpha": 0.1
1258
+ },
1259
+ "offsetX": {
1260
+ "value": 0,
1261
+ "unit": "px"
1262
+ },
1263
+ "offsetY": {
1264
+ "value": 8,
1265
+ "unit": "px"
1266
+ },
1267
+ "blur": {
1268
+ "value": 10,
1269
+ "unit": "px"
1270
+ },
1271
+ "spread": {
1272
+ "value": -6,
1273
+ "unit": "px"
1274
+ }
1275
+ }
1276
+ ],
1277
+ "$description": "derived: v1 shadow-intensity migration",
1278
+ "$extensions": {
1279
+ "com.nurix.design": {
1280
+ "css": "0 20px 25px -5px rgb(15 23 42 / calc(0.10 * var(--shadow-intensity))), 0 8px 10px -6px rgb(15 23 42 / calc(0.10 * var(--shadow-intensity)))",
1281
+ "hint": "elevation unset — the design.md names real shadow values (`rgba(0,0,0,0.3) 0 8px 8px`; `rgba(0,0,0,0.5) 0 8px 24px`); resolve the composites from that prose at the data build"
1282
+ }
971
1283
  }
972
1284
  }
973
1285
  }
@@ -2,11 +2,12 @@
2
2
  "$description": "Stripe — operator reading\n[feedback] derived: Stripe's micro-feedback is polished and present, not austere silence\n[density-tier] derived: the dashboard reads clean and moderate, neither terminal-dense nor consumer-spacious",
3
3
  "$extensions": {
4
4
  "com.nurix.design": {
5
- "schema": "design-tokens/v1",
5
+ "schema": "design-tokens/v2",
6
6
  "dtcg": "2025.10",
7
7
  "product": "Stripe",
8
8
  "provenance": "library",
9
9
  "sourced": "2026-07-04",
10
+ "theme-default": "light",
10
11
  "product-traits": [
11
12
  "payments",
12
13
  "fintech",
@@ -185,6 +186,14 @@
185
186
  }
186
187
  }
187
188
  },
189
+ "stagger-unit": {
190
+ "$type": "duration",
191
+ "$value": {
192
+ "value": 30,
193
+ "unit": "ms"
194
+ },
195
+ "$description": "derived: v1→v2 migration — the 30ms default stagger base (0–60ms legal)"
196
+ },
188
197
  "contrast-boost": {
189
198
  "$type": "number",
190
199
  "$value": 1
@@ -562,6 +571,16 @@
562
571
  }
563
572
  }
564
573
  },
574
+ "surface-raised": {
575
+ "$type": "color",
576
+ "$value": "{color.card}",
577
+ "$description": "derived: v1→v2 migration — light aliases card; dark looks carry the surface-lightness ladder"
578
+ },
579
+ "surface-overlay": {
580
+ "$type": "color",
581
+ "$value": "{color.popover}",
582
+ "$description": "derived: v1→v2 migration — light aliases popover; dark looks carry the surface-lightness ladder"
583
+ },
565
584
  "popover": {
566
585
  "$type": "color",
567
586
  "$value": {
@@ -967,6 +986,299 @@
967
986
  }
968
987
  }
969
988
  }
989
+ },
990
+ "display": {
991
+ "$type": "typography",
992
+ "$value": {
993
+ "fontFamily": "{typography.family.heading}",
994
+ "fontSize": {
995
+ "value": 42,
996
+ "unit": "px"
997
+ },
998
+ "lineHeight": 1.25,
999
+ "fontWeight": "{primitive.font-weight-strong}",
1000
+ "letterSpacing": "{primitive.heading-tracking}"
1001
+ },
1002
+ "$description": "derived: v1→v2 migration — provisional display step (h1 × 1.75, strong weight)",
1003
+ "$extensions": {
1004
+ "com.nurix.design": {
1005
+ "hint": "display step unset — resolve from the product's design.md or leave for budget-time"
1006
+ }
1007
+ }
1008
+ }
1009
+ }
1010
+ },
1011
+ "elevation": {
1012
+ "sm": {
1013
+ "$type": "shadow",
1014
+ "$value": [
1015
+ {
1016
+ "color": {
1017
+ "colorSpace": "srgb",
1018
+ "components": [
1019
+ 0.05882,
1020
+ 0.0902,
1021
+ 0.16471
1022
+ ],
1023
+ "hex": "#0f172a",
1024
+ "alpha": 0.1
1025
+ },
1026
+ "offsetX": {
1027
+ "value": 0,
1028
+ "unit": "px"
1029
+ },
1030
+ "offsetY": {
1031
+ "value": 1,
1032
+ "unit": "px"
1033
+ },
1034
+ "blur": {
1035
+ "value": 3,
1036
+ "unit": "px"
1037
+ },
1038
+ "spread": {
1039
+ "value": 0,
1040
+ "unit": "px"
1041
+ }
1042
+ },
1043
+ {
1044
+ "color": {
1045
+ "colorSpace": "srgb",
1046
+ "components": [
1047
+ 0.05882,
1048
+ 0.0902,
1049
+ 0.16471
1050
+ ],
1051
+ "hex": "#0f172a",
1052
+ "alpha": 0.1
1053
+ },
1054
+ "offsetX": {
1055
+ "value": 0,
1056
+ "unit": "px"
1057
+ },
1058
+ "offsetY": {
1059
+ "value": 1,
1060
+ "unit": "px"
1061
+ },
1062
+ "blur": {
1063
+ "value": 2,
1064
+ "unit": "px"
1065
+ },
1066
+ "spread": {
1067
+ "value": -1,
1068
+ "unit": "px"
1069
+ }
1070
+ }
1071
+ ],
1072
+ "$description": "derived: v1 shadow-intensity migration",
1073
+ "$extensions": {
1074
+ "com.nurix.design": {
1075
+ "css": "0 1px 3px 0 rgb(15 23 42 / calc(0.10 * var(--shadow-intensity))), 0 1px 2px -1px rgb(15 23 42 / calc(0.10 * var(--shadow-intensity)))",
1076
+ "hint": "elevation unset — the design.md names real shadow values (`rgba(0,55,112,0.08)`; `rgba(0,55,112,0.08) 0 1px 3px`); resolve the composites from that prose at the data build"
1077
+ }
1078
+ }
1079
+ },
1080
+ "md": {
1081
+ "$type": "shadow",
1082
+ "$value": [
1083
+ {
1084
+ "color": {
1085
+ "colorSpace": "srgb",
1086
+ "components": [
1087
+ 0.05882,
1088
+ 0.0902,
1089
+ 0.16471
1090
+ ],
1091
+ "hex": "#0f172a",
1092
+ "alpha": 0.1
1093
+ },
1094
+ "offsetX": {
1095
+ "value": 0,
1096
+ "unit": "px"
1097
+ },
1098
+ "offsetY": {
1099
+ "value": 4,
1100
+ "unit": "px"
1101
+ },
1102
+ "blur": {
1103
+ "value": 6,
1104
+ "unit": "px"
1105
+ },
1106
+ "spread": {
1107
+ "value": -1,
1108
+ "unit": "px"
1109
+ }
1110
+ },
1111
+ {
1112
+ "color": {
1113
+ "colorSpace": "srgb",
1114
+ "components": [
1115
+ 0.05882,
1116
+ 0.0902,
1117
+ 0.16471
1118
+ ],
1119
+ "hex": "#0f172a",
1120
+ "alpha": 0.1
1121
+ },
1122
+ "offsetX": {
1123
+ "value": 0,
1124
+ "unit": "px"
1125
+ },
1126
+ "offsetY": {
1127
+ "value": 2,
1128
+ "unit": "px"
1129
+ },
1130
+ "blur": {
1131
+ "value": 4,
1132
+ "unit": "px"
1133
+ },
1134
+ "spread": {
1135
+ "value": -2,
1136
+ "unit": "px"
1137
+ }
1138
+ }
1139
+ ],
1140
+ "$description": "derived: v1 shadow-intensity migration",
1141
+ "$extensions": {
1142
+ "com.nurix.design": {
1143
+ "css": "0 4px 6px -1px rgb(15 23 42 / calc(0.10 * var(--shadow-intensity))), 0 2px 4px -2px rgb(15 23 42 / calc(0.10 * var(--shadow-intensity)))",
1144
+ "hint": "elevation unset — the design.md names real shadow values (`rgba(0,55,112,0.08)`; `rgba(0,55,112,0.08) 0 1px 3px`); resolve the composites from that prose at the data build"
1145
+ }
1146
+ }
1147
+ },
1148
+ "lg": {
1149
+ "$type": "shadow",
1150
+ "$value": [
1151
+ {
1152
+ "color": {
1153
+ "colorSpace": "srgb",
1154
+ "components": [
1155
+ 0.05882,
1156
+ 0.0902,
1157
+ 0.16471
1158
+ ],
1159
+ "hex": "#0f172a",
1160
+ "alpha": 0.1
1161
+ },
1162
+ "offsetX": {
1163
+ "value": 0,
1164
+ "unit": "px"
1165
+ },
1166
+ "offsetY": {
1167
+ "value": 10,
1168
+ "unit": "px"
1169
+ },
1170
+ "blur": {
1171
+ "value": 15,
1172
+ "unit": "px"
1173
+ },
1174
+ "spread": {
1175
+ "value": -3,
1176
+ "unit": "px"
1177
+ }
1178
+ },
1179
+ {
1180
+ "color": {
1181
+ "colorSpace": "srgb",
1182
+ "components": [
1183
+ 0.05882,
1184
+ 0.0902,
1185
+ 0.16471
1186
+ ],
1187
+ "hex": "#0f172a",
1188
+ "alpha": 0.1
1189
+ },
1190
+ "offsetX": {
1191
+ "value": 0,
1192
+ "unit": "px"
1193
+ },
1194
+ "offsetY": {
1195
+ "value": 4,
1196
+ "unit": "px"
1197
+ },
1198
+ "blur": {
1199
+ "value": 6,
1200
+ "unit": "px"
1201
+ },
1202
+ "spread": {
1203
+ "value": -4,
1204
+ "unit": "px"
1205
+ }
1206
+ }
1207
+ ],
1208
+ "$description": "derived: v1 shadow-intensity migration",
1209
+ "$extensions": {
1210
+ "com.nurix.design": {
1211
+ "css": "0 10px 15px -3px rgb(15 23 42 / calc(0.10 * var(--shadow-intensity))), 0 4px 6px -4px rgb(15 23 42 / calc(0.10 * var(--shadow-intensity)))",
1212
+ "hint": "elevation unset — the design.md names real shadow values (`rgba(0,55,112,0.08)`; `rgba(0,55,112,0.08) 0 1px 3px`); resolve the composites from that prose at the data build"
1213
+ }
1214
+ }
1215
+ },
1216
+ "overlay": {
1217
+ "$type": "shadow",
1218
+ "$value": [
1219
+ {
1220
+ "color": {
1221
+ "colorSpace": "srgb",
1222
+ "components": [
1223
+ 0.05882,
1224
+ 0.0902,
1225
+ 0.16471
1226
+ ],
1227
+ "hex": "#0f172a",
1228
+ "alpha": 0.1
1229
+ },
1230
+ "offsetX": {
1231
+ "value": 0,
1232
+ "unit": "px"
1233
+ },
1234
+ "offsetY": {
1235
+ "value": 20,
1236
+ "unit": "px"
1237
+ },
1238
+ "blur": {
1239
+ "value": 25,
1240
+ "unit": "px"
1241
+ },
1242
+ "spread": {
1243
+ "value": -5,
1244
+ "unit": "px"
1245
+ }
1246
+ },
1247
+ {
1248
+ "color": {
1249
+ "colorSpace": "srgb",
1250
+ "components": [
1251
+ 0.05882,
1252
+ 0.0902,
1253
+ 0.16471
1254
+ ],
1255
+ "hex": "#0f172a",
1256
+ "alpha": 0.1
1257
+ },
1258
+ "offsetX": {
1259
+ "value": 0,
1260
+ "unit": "px"
1261
+ },
1262
+ "offsetY": {
1263
+ "value": 8,
1264
+ "unit": "px"
1265
+ },
1266
+ "blur": {
1267
+ "value": 10,
1268
+ "unit": "px"
1269
+ },
1270
+ "spread": {
1271
+ "value": -6,
1272
+ "unit": "px"
1273
+ }
1274
+ }
1275
+ ],
1276
+ "$description": "derived: v1 shadow-intensity migration",
1277
+ "$extensions": {
1278
+ "com.nurix.design": {
1279
+ "css": "0 20px 25px -5px rgb(15 23 42 / calc(0.10 * var(--shadow-intensity))), 0 8px 10px -6px rgb(15 23 42 / calc(0.10 * var(--shadow-intensity)))",
1280
+ "hint": "elevation unset — the design.md names real shadow values (`rgba(0,55,112,0.08)`; `rgba(0,55,112,0.08) 0 1px 3px`); resolve the composites from that prose at the data build"
1281
+ }
970
1282
  }
971
1283
  }
972
1284
  }