@motion-proto/live-tokens 0.91.2 → 0.93.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.
Files changed (49) hide show
  1. package/.claude/skills/live-tokens-create-page/SKILL.md +10 -3
  2. package/.claude/skills/live-tokens-set-type/SKILL.md +3 -3
  3. package/CHANGELOG.md +171 -0
  4. package/bin/lib/tokenVocabulary.mjs +2 -2
  5. package/bin/rules/testRuns.mjs +1 -1
  6. package/bin/rules/tokens.mjs +3 -3
  7. package/dist-plugin/chunk-7XSUHJUH.js +1652 -0
  8. package/dist-plugin/index.cjs +950 -15
  9. package/dist-plugin/index.js +1 -1
  10. package/dist-plugin/setType/index.cjs +23 -2
  11. package/dist-plugin/setType/index.js +23 -2
  12. package/dist-plugin/tokensCssMigrations/index.cjs +954 -15
  13. package/dist-plugin/tokensCssMigrations/index.d.cts +23 -3
  14. package/dist-plugin/tokensCssMigrations/index.d.ts +23 -3
  15. package/dist-plugin/tokensCssMigrations/index.js +5 -1
  16. package/package.json +1 -1
  17. package/src/app/site.css +243 -9
  18. package/src/demo/TestingLoops.svelte +9 -9
  19. package/src/editor/core/fonts/weightCoverage.ts +31 -2
  20. package/src/editor/core/palettes/tokenRegistry.ts +36 -37
  21. package/src/editor/core/store/editorKeybindings.ts +1 -1
  22. package/src/editor/core/themes/parsers/mediaBlocks.ts +46 -0
  23. package/src/editor/core/typeScale/typeScale.ts +341 -0
  24. package/src/editor/skill-atlas/SourcePane.svelte +3 -3
  25. package/src/editor/skill-atlas/skillSources.generated.ts +2 -2
  26. package/src/editor/skill-atlas/trees/create-page.ts +14 -14
  27. package/src/editor/skill-atlas/trees/set-type.ts +2 -2
  28. package/src/editor/ui/UIFontFamilySelector.svelte +5 -1
  29. package/src/editor/ui/UIFontWeightSelector.svelte +4 -0
  30. package/src/editor/ui/UILetterSpacingSelector.svelte +4 -0
  31. package/src/editor/ui/UILineHeightSelector.svelte +4 -0
  32. package/src/editor/ui/UITextTransformSelector.svelte +4 -0
  33. package/src/editor/ui/UIVariantSelector.svelte +6 -8
  34. package/src/editor/ui/VariablesTab.svelte +4 -4
  35. package/src/editor/ui/colors/ColorsTab.svelte +99 -5
  36. package/src/editor/ui/colors/paletteBaseColor.ts +17 -0
  37. package/src/editor/ui/sections/textStyles.ts +44 -92
  38. package/src/editor/ui/text-styles/ControlBody.svelte +100 -0
  39. package/src/editor/ui/text-styles/ResetIcon.svelte +60 -0
  40. package/src/editor/ui/text-styles/StepRow.svelte +330 -0
  41. package/src/editor/ui/text-styles/StyleControl.svelte +128 -0
  42. package/src/editor/ui/text-styles/TextStylesSection.svelte +551 -0
  43. package/src/editor/ui/text-styles/textStyleEdits.ts +308 -0
  44. package/src/editor/ui/variantScales.ts +16 -0
  45. package/src/system/styles/tokens.css +412 -48
  46. package/src/testing-js/page-compliance.contract.js +233 -80
  47. package/src/testing-js/page-compliance.contract.js.map +1 -1
  48. package/dist-plugin/chunk-GWMEYBZ2.js +0 -715
  49. package/src/editor/ui/TextStylesSection.svelte +0 -171
@@ -3448,6 +3448,43 @@ function detectLegacyLayout(input) {
3448
3448
  return null;
3449
3449
  }
3450
3450
 
3451
+ // src/editor/core/themes/parsers/mediaBlocks.ts
3452
+ function stripMediaBlocks(css) {
3453
+ const kept = [];
3454
+ let from = 0;
3455
+ let i = 0;
3456
+ while (i < css.length) {
3457
+ if (css.startsWith("/*", i)) {
3458
+ i = commentEnd(css, i);
3459
+ } else if (css[i] === "@" && /^@media\b/i.test(css.slice(i, i + 7))) {
3460
+ kept.push(css.slice(from, i));
3461
+ i = from = blockEnd(css, i);
3462
+ } else {
3463
+ i++;
3464
+ }
3465
+ }
3466
+ kept.push(css.slice(from));
3467
+ return kept.join("");
3468
+ }
3469
+ function commentEnd(css, start) {
3470
+ const end = css.indexOf("*/", start + 2);
3471
+ return end === -1 ? css.length : end + 2;
3472
+ }
3473
+ function blockEnd(css, start) {
3474
+ let depth = 0;
3475
+ let i = start;
3476
+ while (i < css.length) {
3477
+ if (css.startsWith("/*", i)) {
3478
+ i = commentEnd(css, i);
3479
+ continue;
3480
+ }
3481
+ const c = css[i++];
3482
+ if (c === "{") depth++;
3483
+ else if (c === "}" && --depth === 0) return i;
3484
+ }
3485
+ return css.length;
3486
+ }
3487
+
3451
3488
  // vite-plugin/tokensCssMigrations/cssTokenOps.ts
3452
3489
  var DECL_RE = /(^|[\s;{])(--[a-z0-9-]+)\s*:/gi;
3453
3490
  var REF_RE = /var\(\s*(--[a-z0-9-]+)/gi;
@@ -3459,7 +3496,7 @@ function collectDefinedTokens(css) {
3459
3496
  }
3460
3497
  function collectTokenValues(css) {
3461
3498
  const out = /* @__PURE__ */ new Map();
3462
- for (const m of css.matchAll(DECL_VALUE_RE)) out.set(m[2], m[3].trim());
3499
+ for (const m of stripMediaBlocks(css).matchAll(DECL_VALUE_RE)) out.set(m[2], m[3].trim());
3463
3500
  return out;
3464
3501
  }
3465
3502
  function collectReferencedTokens(css) {
@@ -3502,6 +3539,58 @@ function removeTokensMatching(css, predicate) {
3502
3539
  if (kept.length === lines.length) return css;
3503
3540
  return kept.join("\n");
3504
3541
  }
3542
+ function setTokenValue(css, name, value, opts = {}) {
3543
+ const lines = css.split("\n");
3544
+ const declRe = new RegExp("(^|[\\s;{])(" + escapeRe(name) + ")(\\s*:)([^;}]*)");
3545
+ let changed = false;
3546
+ for (const root of findTopLevelRoots(lines)) {
3547
+ let depth = 1;
3548
+ for (let i = root.start + 1; i < root.end; i++) {
3549
+ if (depth === 1) {
3550
+ const m = lines[i].match(declRe);
3551
+ const current = m?.[4].trim();
3552
+ if (m && current !== value && (opts.from === void 0 || current === opts.from.trim())) {
3553
+ const at = m.index + m[1].length + m[2].length + m[3].length;
3554
+ lines[i] = lines[i].slice(0, at) + " " + value + lines[i].slice(at + m[4].length);
3555
+ changed = true;
3556
+ }
3557
+ }
3558
+ depth += braceDelta(lines[i]);
3559
+ }
3560
+ }
3561
+ return changed ? lines.join("\n") : css;
3562
+ }
3563
+ function appendMediaBlock(css, query, entries) {
3564
+ const lines = css.split("\n");
3565
+ const at = query.trim();
3566
+ const blocks = findTopLevelBlocks(lines, (line) => mediaQueryOf(line) === at);
3567
+ const declared = collectDefinedTokens(
3568
+ blocks.map((b) => lines.slice(b.start, b.end + 1).join("\n")).join("\n")
3569
+ );
3570
+ const missing = entries.filter((e) => !declared.has(e.name));
3571
+ if (missing.length === 0) return css;
3572
+ const media = blocks.find((b) => b.end > b.start);
3573
+ if (!media) {
3574
+ const block = [`@media ${at} {`, " :root {", ...declarationLines(missing, " "), " }", "}", ""];
3575
+ while (lines.length > 0 && lines[lines.length - 1].trim() === "") lines.pop();
3576
+ return [...lines, "", ...block].join("\n");
3577
+ }
3578
+ const root = findNestedRoot(lines, media);
3579
+ if (!root) {
3580
+ lines.splice(media.end, 0, " :root {", ...declarationLines(missing, " "), " }");
3581
+ return lines.join("\n");
3582
+ }
3583
+ let indent = (lines[root.end].match(/^\s*/)?.[0] ?? "") + " ";
3584
+ for (let i = root.start + 1; i < root.end; i++) {
3585
+ const m = lines[i].match(/^(\s*)--[a-z0-9-]+\s*:/i);
3586
+ if (m) indent = m[1];
3587
+ }
3588
+ lines.splice(root.end, 0, ...declarationLines(missing, indent));
3589
+ return lines.join("\n");
3590
+ }
3591
+ function declarationLines(entries, indent) {
3592
+ return entries.map((e) => `${indent}${e.name}: ${e.value};`);
3593
+ }
3505
3594
  function findInsertionPoint(lines, anchorPrefixes) {
3506
3595
  const root = findTopLevelRoot(lines);
3507
3596
  if (!root) return { indent: " ", insertAfter: lines.length - 1 };
@@ -3520,7 +3609,7 @@ function findInsertionPoint(lines, anchorPrefixes) {
3520
3609
  }
3521
3610
  }
3522
3611
  }
3523
- depth += (line.match(/\{/g)?.length ?? 0) - (line.match(/\}/g)?.length ?? 0);
3612
+ depth += braceDelta(line);
3524
3613
  }
3525
3614
  for (const prefix of anchorPrefixes) {
3526
3615
  const hit = lastByPrefix.get(prefix);
@@ -3528,22 +3617,52 @@ function findInsertionPoint(lines, anchorPrefixes) {
3528
3617
  }
3529
3618
  return { indent: lastDecl?.indent ?? " ", insertAfter: root.end - 1 };
3530
3619
  }
3620
+ var ROOT_OPEN_RE = /(^|[\s,]):root[^{]*\{/;
3531
3621
  function findTopLevelRoot(lines) {
3622
+ return findTopLevelRoots(lines)[0] ?? null;
3623
+ }
3624
+ function findTopLevelRoots(lines) {
3625
+ return findTopLevelBlocks(lines, (line) => ROOT_OPEN_RE.test(line));
3626
+ }
3627
+ function findTopLevelBlocks(lines, opens) {
3628
+ const blocks = [];
3532
3629
  let depth = 0;
3533
3630
  for (let i = 0; i < lines.length; i++) {
3534
- const line = lines[i];
3535
- if (depth === 0 && /(^|[\s,]):root[^{]*\{/.test(line)) {
3536
- let d = 0;
3537
- for (let j = i; j < lines.length; j++) {
3538
- d += (lines[j].match(/\{/g)?.length ?? 0) - (lines[j].match(/\}/g)?.length ?? 0);
3539
- if (d === 0) return { start: i, end: j };
3540
- }
3541
- return { start: i, end: lines.length - 1 };
3631
+ if (depth === 0 && opens(lines[i])) {
3632
+ const end = blockEnd2(lines, i);
3633
+ blocks.push({ start: i, end });
3634
+ i = end;
3635
+ continue;
3542
3636
  }
3543
- depth += (line.match(/\{/g)?.length ?? 0) - (line.match(/\}/g)?.length ?? 0);
3637
+ depth += braceDelta(lines[i]);
3638
+ }
3639
+ return blocks;
3640
+ }
3641
+ function findNestedRoot(lines, parent) {
3642
+ let depth = 1;
3643
+ for (let i = parent.start + 1; i < parent.end; i++) {
3644
+ if (depth === 1 && ROOT_OPEN_RE.test(lines[i])) {
3645
+ const end = blockEnd2(lines, i);
3646
+ if (end > i && end < parent.end) return { start: i, end };
3647
+ }
3648
+ depth += braceDelta(lines[i]);
3544
3649
  }
3545
3650
  return null;
3546
3651
  }
3652
+ function blockEnd2(lines, start) {
3653
+ let depth = 0;
3654
+ for (let j = start; j < lines.length; j++) {
3655
+ depth += braceDelta(lines[j]);
3656
+ if (depth === 0) return j;
3657
+ }
3658
+ return lines.length - 1;
3659
+ }
3660
+ function mediaQueryOf(line) {
3661
+ return line.match(/^\s*@media\s+([^{]*?)\s*\{/i)?.[1] ?? null;
3662
+ }
3663
+ function braceDelta(line) {
3664
+ return (line.match(/\{/g)?.length ?? 0) - (line.match(/\}/g)?.length ?? 0);
3665
+ }
3547
3666
  function escapeRe(s) {
3548
3667
  return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
3549
3668
  }
@@ -3760,11 +3879,12 @@ var BUNDLE = [
3760
3879
  { name: "--body-sm-font-weight", value: "var(--font-weight-normal)" },
3761
3880
  { name: "--body-sm-line-height", value: "var(--line-height-tight)" },
3762
3881
  { name: "--body-sm-letter-spacing", value: "var(--letter-spacing-normal)" },
3882
+ // The code bundle's size, leading and tracking belong to 2026-10-08-type-scales,
3883
+ // which renames them to `--code-md-*`. An additive migration must not re-add
3884
+ // names a later breaking rename removes, or re-running the fold loses
3885
+ // idempotency.
3763
3886
  { name: "--code-font-family", value: "var(--font-mono)" },
3764
- { name: "--code-font-size", value: "var(--font-size-sm)" },
3765
3887
  { name: "--code-font-weight", value: "var(--font-weight-normal)" },
3766
- { name: "--code-line-height", value: "var(--line-height-normal)" },
3767
- { name: "--code-letter-spacing", value: "var(--letter-spacing-normal)" },
3768
3888
  { name: "--eyebrow-font-family", value: "var(--font-sans)" },
3769
3889
  { name: "--eyebrow-font-size", value: "var(--font-size-sm)" },
3770
3890
  { name: "--eyebrow-font-weight", value: "var(--font-weight-normal)" },
@@ -4026,6 +4146,820 @@ var tokensCssMigration_2026_09_21_tintColorAndOpacity = {
4026
4146
  }
4027
4147
  };
4028
4148
 
4149
+ // vite-plugin/tokensCssMigrations/migrations/2026-10-08-type-scales.ts
4150
+ var RENAMES14 = [
4151
+ ["--code-font-size", "--code-md-font-size"],
4152
+ ["--code-line-height", "--code-md-line-height"],
4153
+ ["--code-letter-spacing", "--code-md-letter-spacing"]
4154
+ ];
4155
+ var CARRIED = [
4156
+ {
4157
+ prefix: "--heading-xl",
4158
+ size: "var(--font-size-4xl)",
4159
+ links: [
4160
+ { name: "--heading-xl-font-family", from: "var(--font-display)", to: "var(--heading-font-family)" },
4161
+ { name: "--heading-xl-font-weight", from: "var(--font-weight-semibold)", to: "var(--heading-font-weight)" }
4162
+ ]
4163
+ },
4164
+ {
4165
+ prefix: "--heading-lg",
4166
+ size: "var(--font-size-2xl)",
4167
+ links: [
4168
+ { name: "--heading-lg-font-family", from: "var(--font-display)", to: "var(--heading-font-family)" },
4169
+ { name: "--heading-lg-font-weight", from: "var(--font-weight-semibold)", to: "var(--heading-font-weight)" }
4170
+ ]
4171
+ },
4172
+ {
4173
+ prefix: "--heading-md",
4174
+ size: "var(--font-size-xl)",
4175
+ links: [
4176
+ { name: "--heading-md-font-family", from: "var(--font-display)", to: "var(--heading-font-family)" },
4177
+ { name: "--heading-md-font-weight", from: "var(--font-weight-semibold)", to: "var(--heading-font-weight)" }
4178
+ ]
4179
+ },
4180
+ {
4181
+ // heading-sm keeps the sans face it shipped with, so only its weight links.
4182
+ prefix: "--heading-sm",
4183
+ size: "var(--font-size-lg)",
4184
+ links: [
4185
+ { name: "--heading-sm-font-weight", from: "var(--font-weight-semibold)", to: "var(--heading-font-weight)" }
4186
+ ]
4187
+ },
4188
+ {
4189
+ prefix: "--body-md",
4190
+ size: "var(--font-size-md)",
4191
+ links: [
4192
+ { name: "--body-md-font-family", from: "var(--font-sans)", to: "var(--body-font-family)" },
4193
+ { name: "--body-md-font-weight", from: "var(--font-weight-normal)", to: "var(--body-font-weight)" }
4194
+ ]
4195
+ },
4196
+ {
4197
+ prefix: "--body-sm",
4198
+ size: "var(--font-size-sm)",
4199
+ links: [
4200
+ { name: "--body-sm-font-family", from: "var(--font-sans)", to: "var(--body-font-family)" },
4201
+ { name: "--body-sm-font-weight", from: "var(--font-weight-normal)", to: "var(--body-font-weight)" }
4202
+ ]
4203
+ },
4204
+ {
4205
+ // 0.91.2 had no code-md face or weight: `--code-font-family` and
4206
+ // `--code-font-weight` keep their names as the code usage's settings.
4207
+ prefix: "--code-md",
4208
+ size: "var(--font-size-sm)",
4209
+ links: []
4210
+ },
4211
+ {
4212
+ prefix: "--editorial-xl",
4213
+ size: "var(--font-size-xl)",
4214
+ links: [
4215
+ { name: "--editorial-xl-font-family", from: "var(--font-editorial)", to: "var(--editorial-font-family)" },
4216
+ { name: "--editorial-xl-font-weight", from: "var(--font-weight-normal)", to: "var(--editorial-font-weight)" }
4217
+ ]
4218
+ },
4219
+ {
4220
+ prefix: "--editorial-lg",
4221
+ size: "var(--font-size-lg)",
4222
+ links: [
4223
+ { name: "--editorial-lg-font-family", from: "var(--font-editorial)", to: "var(--editorial-font-family)" },
4224
+ { name: "--editorial-lg-font-weight", from: "var(--font-weight-normal)", to: "var(--editorial-font-weight)" }
4225
+ ]
4226
+ },
4227
+ {
4228
+ prefix: "--editorial-md",
4229
+ size: "var(--font-size-md)",
4230
+ links: [
4231
+ { name: "--editorial-md-font-family", from: "var(--font-editorial)", to: "var(--editorial-font-family)" },
4232
+ { name: "--editorial-md-font-weight", from: "var(--font-weight-normal)", to: "var(--editorial-font-weight)" }
4233
+ ]
4234
+ },
4235
+ {
4236
+ prefix: "--editorial-sm",
4237
+ size: "var(--font-size-sm)",
4238
+ links: [
4239
+ { name: "--editorial-sm-font-family", from: "var(--font-editorial)", to: "var(--editorial-font-family)" },
4240
+ { name: "--editorial-sm-font-weight", from: "var(--font-weight-normal)", to: "var(--editorial-font-weight)" }
4241
+ ]
4242
+ },
4243
+ {
4244
+ prefix: "--eyebrow",
4245
+ size: "var(--font-size-sm)",
4246
+ links: [
4247
+ { name: "--eyebrow-font-family", from: "var(--font-sans)", to: "var(--body-font-family)" },
4248
+ { name: "--eyebrow-font-weight", from: "var(--font-weight-normal)", to: "var(--body-font-weight)" }
4249
+ ]
4250
+ }
4251
+ ];
4252
+ var COMPRESSION = [
4253
+ { name: "--type-tablet-scale-compression", value: "0.75" },
4254
+ { name: "--type-phone-scale-compression", value: "0.63" }
4255
+ ];
4256
+ var COMPRESSED_VIEWPORTS = ["tablet", "phone"];
4257
+ function literalRem(size) {
4258
+ const m = /^(-?\d*\.?\d+)(rem|px)$/.exec(size.trim());
4259
+ if (!m) return null;
4260
+ return m[2] === "rem" ? Number(m[1]) : Number(m[1]) / 16;
4261
+ }
4262
+ var ALIAS = /^var\(\s*(--[a-z0-9-]+)\s*\)$/i;
4263
+ function resolvedRem(size, values) {
4264
+ const seen = /* @__PURE__ */ new Set();
4265
+ let value = size.trim();
4266
+ for (let ref2 = ALIAS.exec(value); ref2; ref2 = ALIAS.exec(value)) {
4267
+ const next = values.get(ref2[1]);
4268
+ if (next === void 0 || seen.has(ref2[1])) return null;
4269
+ seen.add(ref2[1]);
4270
+ value = next.trim();
4271
+ }
4272
+ return literalRem(value);
4273
+ }
4274
+ function editedSizes(prefix, rem) {
4275
+ const count = String(Number(rem.toFixed(4)));
4276
+ return COMPRESSED_VIEWPORTS.map((viewport) => ({
4277
+ name: `${prefix}-${viewport}-font-size`,
4278
+ value: `min(var(${prefix}-desktop-font-size), calc(pow(${count}, var(--type-${viewport}-scale-compression)) * 1rem))`
4279
+ }));
4280
+ }
4281
+ var USAGES = [
4282
+ {
4283
+ usage: "display",
4284
+ comment: "Display: type outside the page outline, such as heroes, section titles and big numbers",
4285
+ follows: "type",
4286
+ settings: [
4287
+ { name: "--display-font-family", value: "var(--font-display)" },
4288
+ { name: "--display-font-weight", value: "var(--font-weight-semibold)" },
4289
+ { name: "--display-scale-base", value: "3" },
4290
+ { name: "--display-scale-ratio", value: "1.2" }
4291
+ ],
4292
+ steps: [
4293
+ {
4294
+ prefix: "--display-2xl",
4295
+ entries: [
4296
+ { name: "--display-2xl-font-family", value: "var(--display-font-family)" },
4297
+ { name: "--display-2xl-desktop-font-size", value: "calc(var(--display-scale-base) * pow(var(--display-scale-ratio), 3) * 1rem)" },
4298
+ { name: "--display-2xl-tablet-font-size", value: "min(var(--display-2xl-desktop-font-size), calc(pow(var(--display-scale-base) * pow(var(--display-scale-ratio), 3), var(--type-tablet-scale-compression)) * 1rem))" },
4299
+ { name: "--display-2xl-phone-font-size", value: "min(var(--display-2xl-desktop-font-size), calc(pow(var(--display-scale-base) * pow(var(--display-scale-ratio), 3), var(--type-phone-scale-compression)) * 1rem))" },
4300
+ { name: "--display-2xl-font-size", value: "var(--display-2xl-desktop-font-size)" },
4301
+ { name: "--display-2xl-font-weight", value: "var(--display-font-weight)" },
4302
+ { name: "--display-2xl-line-height", value: "var(--line-height-tightest)" },
4303
+ { name: "--display-2xl-letter-spacing", value: "var(--letter-spacing-tight)" }
4304
+ ]
4305
+ },
4306
+ {
4307
+ prefix: "--display-xl",
4308
+ entries: [
4309
+ { name: "--display-xl-font-family", value: "var(--display-font-family)" },
4310
+ { name: "--display-xl-desktop-font-size", value: "calc(var(--display-scale-base) * pow(var(--display-scale-ratio), 2) * 1rem)" },
4311
+ { name: "--display-xl-tablet-font-size", value: "min(var(--display-xl-desktop-font-size), calc(pow(var(--display-scale-base) * pow(var(--display-scale-ratio), 2), var(--type-tablet-scale-compression)) * 1rem))" },
4312
+ { name: "--display-xl-phone-font-size", value: "min(var(--display-xl-desktop-font-size), calc(pow(var(--display-scale-base) * pow(var(--display-scale-ratio), 2), var(--type-phone-scale-compression)) * 1rem))" },
4313
+ { name: "--display-xl-font-size", value: "var(--display-xl-desktop-font-size)" },
4314
+ { name: "--display-xl-font-weight", value: "var(--display-font-weight)" },
4315
+ { name: "--display-xl-line-height", value: "var(--line-height-tightest)" },
4316
+ { name: "--display-xl-letter-spacing", value: "var(--letter-spacing-tight)" }
4317
+ ]
4318
+ },
4319
+ {
4320
+ prefix: "--display-lg",
4321
+ entries: [
4322
+ { name: "--display-lg-font-family", value: "var(--display-font-family)" },
4323
+ { name: "--display-lg-desktop-font-size", value: "calc(var(--display-scale-base) * pow(var(--display-scale-ratio), 1) * 1rem)" },
4324
+ { name: "--display-lg-tablet-font-size", value: "min(var(--display-lg-desktop-font-size), calc(pow(var(--display-scale-base) * pow(var(--display-scale-ratio), 1), var(--type-tablet-scale-compression)) * 1rem))" },
4325
+ { name: "--display-lg-phone-font-size", value: "min(var(--display-lg-desktop-font-size), calc(pow(var(--display-scale-base) * pow(var(--display-scale-ratio), 1), var(--type-phone-scale-compression)) * 1rem))" },
4326
+ { name: "--display-lg-font-size", value: "var(--display-lg-desktop-font-size)" },
4327
+ { name: "--display-lg-font-weight", value: "var(--display-font-weight)" },
4328
+ { name: "--display-lg-line-height", value: "var(--line-height-tightest)" },
4329
+ { name: "--display-lg-letter-spacing", value: "var(--letter-spacing-tight)" }
4330
+ ]
4331
+ },
4332
+ {
4333
+ prefix: "--display-md",
4334
+ entries: [
4335
+ { name: "--display-md-font-family", value: "var(--display-font-family)" },
4336
+ { name: "--display-md-desktop-font-size", value: "calc(var(--display-scale-base) * 1rem)" },
4337
+ { name: "--display-md-tablet-font-size", value: "min(var(--display-md-desktop-font-size), calc(pow(var(--display-scale-base), var(--type-tablet-scale-compression)) * 1rem))" },
4338
+ { name: "--display-md-phone-font-size", value: "min(var(--display-md-desktop-font-size), calc(pow(var(--display-scale-base), var(--type-phone-scale-compression)) * 1rem))" },
4339
+ { name: "--display-md-font-size", value: "var(--display-md-desktop-font-size)" },
4340
+ { name: "--display-md-font-weight", value: "var(--display-font-weight)" },
4341
+ { name: "--display-md-line-height", value: "var(--line-height-tightest)" },
4342
+ { name: "--display-md-letter-spacing", value: "var(--letter-spacing-normal)" }
4343
+ ]
4344
+ },
4345
+ {
4346
+ prefix: "--display-sm",
4347
+ entries: [
4348
+ { name: "--display-sm-font-family", value: "var(--display-font-family)" },
4349
+ { name: "--display-sm-desktop-font-size", value: "calc(var(--display-scale-base) * pow(var(--display-scale-ratio), -1) * 1rem)" },
4350
+ { name: "--display-sm-tablet-font-size", value: "min(var(--display-sm-desktop-font-size), calc(pow(var(--display-scale-base) * pow(var(--display-scale-ratio), -1), var(--type-tablet-scale-compression)) * 1rem))" },
4351
+ { name: "--display-sm-phone-font-size", value: "min(var(--display-sm-desktop-font-size), calc(pow(var(--display-scale-base) * pow(var(--display-scale-ratio), -1), var(--type-phone-scale-compression)) * 1rem))" },
4352
+ { name: "--display-sm-font-size", value: "var(--display-sm-desktop-font-size)" },
4353
+ { name: "--display-sm-font-weight", value: "var(--display-font-weight)" },
4354
+ { name: "--display-sm-line-height", value: "var(--line-height-tighter)" },
4355
+ { name: "--display-sm-letter-spacing", value: "var(--letter-spacing-normal)" }
4356
+ ]
4357
+ },
4358
+ {
4359
+ prefix: "--display-xs",
4360
+ entries: [
4361
+ { name: "--display-xs-font-family", value: "var(--display-font-family)" },
4362
+ { name: "--display-xs-desktop-font-size", value: "calc(var(--display-scale-base) * pow(var(--display-scale-ratio), -2) * 1rem)" },
4363
+ { name: "--display-xs-tablet-font-size", value: "min(var(--display-xs-desktop-font-size), calc(pow(var(--display-scale-base) * pow(var(--display-scale-ratio), -2), var(--type-tablet-scale-compression)) * 1rem))" },
4364
+ { name: "--display-xs-phone-font-size", value: "min(var(--display-xs-desktop-font-size), calc(pow(var(--display-scale-base) * pow(var(--display-scale-ratio), -2), var(--type-phone-scale-compression)) * 1rem))" },
4365
+ { name: "--display-xs-font-size", value: "var(--display-xs-desktop-font-size)" },
4366
+ { name: "--display-xs-font-weight", value: "var(--display-font-weight)" },
4367
+ { name: "--display-xs-line-height", value: "var(--line-height-tighter)" },
4368
+ { name: "--display-xs-letter-spacing", value: "var(--letter-spacing-normal)" }
4369
+ ]
4370
+ },
4371
+ {
4372
+ prefix: "--display-2xs",
4373
+ entries: [
4374
+ { name: "--display-2xs-font-family", value: "var(--display-font-family)" },
4375
+ { name: "--display-2xs-desktop-font-size", value: "calc(var(--display-scale-base) * pow(var(--display-scale-ratio), -3) * 1rem)" },
4376
+ { name: "--display-2xs-tablet-font-size", value: "min(var(--display-2xs-desktop-font-size), calc(pow(var(--display-scale-base) * pow(var(--display-scale-ratio), -3), var(--type-tablet-scale-compression)) * 1rem))" },
4377
+ { name: "--display-2xs-phone-font-size", value: "min(var(--display-2xs-desktop-font-size), calc(pow(var(--display-scale-base) * pow(var(--display-scale-ratio), -3), var(--type-phone-scale-compression)) * 1rem))" },
4378
+ { name: "--display-2xs-font-size", value: "var(--display-2xs-desktop-font-size)" },
4379
+ { name: "--display-2xs-font-weight", value: "var(--display-font-weight)" },
4380
+ { name: "--display-2xs-line-height", value: "var(--line-height-tighter)" },
4381
+ { name: "--display-2xs-letter-spacing", value: "var(--letter-spacing-normal)" }
4382
+ ]
4383
+ }
4384
+ ]
4385
+ },
4386
+ {
4387
+ usage: "heading",
4388
+ comment: "Heading: the page outline, h1 at xl down to h6 at 2xs",
4389
+ follows: "display",
4390
+ settings: [
4391
+ { name: "--heading-font-family", value: "var(--font-display)" },
4392
+ { name: "--heading-font-weight", value: "var(--font-weight-semibold)" },
4393
+ { name: "--heading-scale-base", value: "1.5" },
4394
+ { name: "--heading-scale-ratio", value: "1.25" }
4395
+ ],
4396
+ steps: [
4397
+ {
4398
+ prefix: "--heading-2xl",
4399
+ entries: [
4400
+ { name: "--heading-2xl-font-family", value: "var(--heading-font-family)" },
4401
+ { name: "--heading-2xl-desktop-font-size", value: "calc(var(--heading-scale-base) * pow(var(--heading-scale-ratio), 3) * 1rem)" },
4402
+ { name: "--heading-2xl-tablet-font-size", value: "min(var(--heading-2xl-desktop-font-size), calc(pow(var(--heading-scale-base) * pow(var(--heading-scale-ratio), 3), var(--type-tablet-scale-compression)) * 1rem))" },
4403
+ { name: "--heading-2xl-phone-font-size", value: "min(var(--heading-2xl-desktop-font-size), calc(pow(var(--heading-scale-base) * pow(var(--heading-scale-ratio), 3), var(--type-phone-scale-compression)) * 1rem))" },
4404
+ { name: "--heading-2xl-font-size", value: "var(--heading-2xl-desktop-font-size)" },
4405
+ { name: "--heading-2xl-font-weight", value: "var(--heading-font-weight)" },
4406
+ { name: "--heading-2xl-line-height", value: "var(--line-height-tightest)" },
4407
+ { name: "--heading-2xl-letter-spacing", value: "var(--letter-spacing-normal)" }
4408
+ ]
4409
+ },
4410
+ {
4411
+ prefix: "--heading-xl",
4412
+ entries: [
4413
+ { name: "--heading-xl-font-family", value: "var(--heading-font-family)" },
4414
+ { name: "--heading-xl-desktop-font-size", value: "calc(var(--heading-scale-base) * pow(var(--heading-scale-ratio), 2) * 1rem)" },
4415
+ { name: "--heading-xl-tablet-font-size", value: "min(var(--heading-xl-desktop-font-size), calc(pow(var(--heading-scale-base) * pow(var(--heading-scale-ratio), 2), var(--type-tablet-scale-compression)) * 1rem))" },
4416
+ { name: "--heading-xl-phone-font-size", value: "min(var(--heading-xl-desktop-font-size), calc(pow(var(--heading-scale-base) * pow(var(--heading-scale-ratio), 2), var(--type-phone-scale-compression)) * 1rem))" },
4417
+ { name: "--heading-xl-font-size", value: "var(--heading-xl-desktop-font-size)" },
4418
+ { name: "--heading-xl-font-weight", value: "var(--heading-font-weight)" },
4419
+ { name: "--heading-xl-line-height", value: "var(--line-height-tightest)" },
4420
+ { name: "--heading-xl-letter-spacing", value: "var(--letter-spacing-normal)" }
4421
+ ]
4422
+ },
4423
+ {
4424
+ prefix: "--heading-lg",
4425
+ entries: [
4426
+ { name: "--heading-lg-font-family", value: "var(--heading-font-family)" },
4427
+ { name: "--heading-lg-desktop-font-size", value: "calc(var(--heading-scale-base) * pow(var(--heading-scale-ratio), 1) * 1rem)" },
4428
+ { name: "--heading-lg-tablet-font-size", value: "min(var(--heading-lg-desktop-font-size), calc(pow(var(--heading-scale-base) * pow(var(--heading-scale-ratio), 1), var(--type-tablet-scale-compression)) * 1rem))" },
4429
+ { name: "--heading-lg-phone-font-size", value: "min(var(--heading-lg-desktop-font-size), calc(pow(var(--heading-scale-base) * pow(var(--heading-scale-ratio), 1), var(--type-phone-scale-compression)) * 1rem))" },
4430
+ { name: "--heading-lg-font-size", value: "var(--heading-lg-desktop-font-size)" },
4431
+ { name: "--heading-lg-font-weight", value: "var(--heading-font-weight)" },
4432
+ { name: "--heading-lg-line-height", value: "var(--line-height-tightest)" },
4433
+ { name: "--heading-lg-letter-spacing", value: "var(--letter-spacing-normal)" }
4434
+ ]
4435
+ },
4436
+ {
4437
+ prefix: "--heading-md",
4438
+ entries: [
4439
+ { name: "--heading-md-font-family", value: "var(--heading-font-family)" },
4440
+ { name: "--heading-md-desktop-font-size", value: "calc(var(--heading-scale-base) * 1rem)" },
4441
+ { name: "--heading-md-tablet-font-size", value: "min(var(--heading-md-desktop-font-size), calc(pow(var(--heading-scale-base), var(--type-tablet-scale-compression)) * 1rem))" },
4442
+ { name: "--heading-md-phone-font-size", value: "min(var(--heading-md-desktop-font-size), calc(pow(var(--heading-scale-base), var(--type-phone-scale-compression)) * 1rem))" },
4443
+ { name: "--heading-md-font-size", value: "var(--heading-md-desktop-font-size)" },
4444
+ { name: "--heading-md-font-weight", value: "var(--heading-font-weight)" },
4445
+ { name: "--heading-md-line-height", value: "var(--line-height-tighter)" },
4446
+ { name: "--heading-md-letter-spacing", value: "var(--letter-spacing-normal)" }
4447
+ ]
4448
+ },
4449
+ {
4450
+ prefix: "--heading-sm",
4451
+ entries: [
4452
+ { name: "--heading-sm-font-family", value: "var(--font-sans)" },
4453
+ { name: "--heading-sm-desktop-font-size", value: "calc(var(--heading-scale-base) * pow(var(--heading-scale-ratio), -1) * 1rem)" },
4454
+ { name: "--heading-sm-tablet-font-size", value: "min(var(--heading-sm-desktop-font-size), calc(pow(var(--heading-scale-base) * pow(var(--heading-scale-ratio), -1), var(--type-tablet-scale-compression)) * 1rem))" },
4455
+ { name: "--heading-sm-phone-font-size", value: "min(var(--heading-sm-desktop-font-size), calc(pow(var(--heading-scale-base) * pow(var(--heading-scale-ratio), -1), var(--type-phone-scale-compression)) * 1rem))" },
4456
+ { name: "--heading-sm-font-size", value: "var(--heading-sm-desktop-font-size)" },
4457
+ { name: "--heading-sm-font-weight", value: "var(--heading-font-weight)" },
4458
+ { name: "--heading-sm-line-height", value: "var(--line-height-tighter)" },
4459
+ { name: "--heading-sm-letter-spacing", value: "var(--letter-spacing-normal)" }
4460
+ ]
4461
+ },
4462
+ {
4463
+ prefix: "--heading-xs",
4464
+ entries: [
4465
+ { name: "--heading-xs-font-family", value: "var(--font-sans)" },
4466
+ { name: "--heading-xs-desktop-font-size", value: "calc(var(--heading-scale-base) * pow(var(--heading-scale-ratio), -2) * 1rem)" },
4467
+ { name: "--heading-xs-tablet-font-size", value: "min(var(--heading-xs-desktop-font-size), calc(pow(var(--heading-scale-base) * pow(var(--heading-scale-ratio), -2), var(--type-tablet-scale-compression)) * 1rem))" },
4468
+ { name: "--heading-xs-phone-font-size", value: "min(var(--heading-xs-desktop-font-size), calc(pow(var(--heading-scale-base) * pow(var(--heading-scale-ratio), -2), var(--type-phone-scale-compression)) * 1rem))" },
4469
+ { name: "--heading-xs-font-size", value: "var(--heading-xs-desktop-font-size)" },
4470
+ { name: "--heading-xs-font-weight", value: "var(--heading-font-weight)" },
4471
+ { name: "--heading-xs-line-height", value: "var(--line-height-tight)" },
4472
+ { name: "--heading-xs-letter-spacing", value: "var(--letter-spacing-normal)" }
4473
+ ]
4474
+ },
4475
+ {
4476
+ prefix: "--heading-2xs",
4477
+ entries: [
4478
+ { name: "--heading-2xs-font-family", value: "var(--font-sans)" },
4479
+ { name: "--heading-2xs-desktop-font-size", value: "calc(var(--heading-scale-base) * pow(var(--heading-scale-ratio), -3) * 1rem)" },
4480
+ { name: "--heading-2xs-tablet-font-size", value: "min(var(--heading-2xs-desktop-font-size), calc(pow(var(--heading-scale-base) * pow(var(--heading-scale-ratio), -3), var(--type-tablet-scale-compression)) * 1rem))" },
4481
+ { name: "--heading-2xs-phone-font-size", value: "min(var(--heading-2xs-desktop-font-size), calc(pow(var(--heading-scale-base) * pow(var(--heading-scale-ratio), -3), var(--type-phone-scale-compression)) * 1rem))" },
4482
+ { name: "--heading-2xs-font-size", value: "var(--heading-2xs-desktop-font-size)" },
4483
+ { name: "--heading-2xs-font-weight", value: "var(--heading-font-weight)" },
4484
+ { name: "--heading-2xs-line-height", value: "var(--line-height-tight)" },
4485
+ { name: "--heading-2xs-letter-spacing", value: "var(--letter-spacing-normal)" }
4486
+ ]
4487
+ }
4488
+ ]
4489
+ },
4490
+ {
4491
+ usage: "body",
4492
+ comment: "Body: interface text and short copy",
4493
+ follows: "heading",
4494
+ settings: [
4495
+ { name: "--body-font-family", value: "var(--font-sans)" },
4496
+ { name: "--body-font-weight", value: "var(--font-weight-normal)" },
4497
+ { name: "--body-scale-base", value: "1" },
4498
+ { name: "--body-scale-ratio", value: "1.125" }
4499
+ ],
4500
+ steps: [
4501
+ {
4502
+ prefix: "--body-2xl",
4503
+ entries: [
4504
+ { name: "--body-2xl-font-family", value: "var(--body-font-family)" },
4505
+ { name: "--body-2xl-desktop-font-size", value: "calc(var(--body-scale-base) * pow(var(--body-scale-ratio), 3) * 1rem)" },
4506
+ { name: "--body-2xl-tablet-font-size", value: "min(var(--body-2xl-desktop-font-size), calc(pow(var(--body-scale-base) * pow(var(--body-scale-ratio), 3), var(--type-tablet-scale-compression)) * 1rem))" },
4507
+ { name: "--body-2xl-phone-font-size", value: "min(var(--body-2xl-desktop-font-size), calc(pow(var(--body-scale-base) * pow(var(--body-scale-ratio), 3), var(--type-phone-scale-compression)) * 1rem))" },
4508
+ { name: "--body-2xl-font-size", value: "var(--body-2xl-desktop-font-size)" },
4509
+ { name: "--body-2xl-font-weight", value: "var(--body-font-weight)" },
4510
+ { name: "--body-2xl-line-height", value: "var(--line-height-tighter)" },
4511
+ { name: "--body-2xl-letter-spacing", value: "var(--letter-spacing-normal)" }
4512
+ ]
4513
+ },
4514
+ {
4515
+ prefix: "--body-xl",
4516
+ entries: [
4517
+ { name: "--body-xl-font-family", value: "var(--body-font-family)" },
4518
+ { name: "--body-xl-desktop-font-size", value: "calc(var(--body-scale-base) * pow(var(--body-scale-ratio), 2) * 1rem)" },
4519
+ { name: "--body-xl-tablet-font-size", value: "min(var(--body-xl-desktop-font-size), calc(pow(var(--body-scale-base) * pow(var(--body-scale-ratio), 2), var(--type-tablet-scale-compression)) * 1rem))" },
4520
+ { name: "--body-xl-phone-font-size", value: "min(var(--body-xl-desktop-font-size), calc(pow(var(--body-scale-base) * pow(var(--body-scale-ratio), 2), var(--type-phone-scale-compression)) * 1rem))" },
4521
+ { name: "--body-xl-font-size", value: "var(--body-xl-desktop-font-size)" },
4522
+ { name: "--body-xl-font-weight", value: "var(--body-font-weight)" },
4523
+ { name: "--body-xl-line-height", value: "var(--line-height-tighter)" },
4524
+ { name: "--body-xl-letter-spacing", value: "var(--letter-spacing-normal)" }
4525
+ ]
4526
+ },
4527
+ {
4528
+ prefix: "--body-lg",
4529
+ entries: [
4530
+ { name: "--body-lg-font-family", value: "var(--body-font-family)" },
4531
+ { name: "--body-lg-desktop-font-size", value: "calc(var(--body-scale-base) * pow(var(--body-scale-ratio), 1) * 1rem)" },
4532
+ { name: "--body-lg-tablet-font-size", value: "min(var(--body-lg-desktop-font-size), calc(pow(var(--body-scale-base) * pow(var(--body-scale-ratio), 1), var(--type-tablet-scale-compression)) * 1rem))" },
4533
+ { name: "--body-lg-phone-font-size", value: "min(var(--body-lg-desktop-font-size), calc(pow(var(--body-scale-base) * pow(var(--body-scale-ratio), 1), var(--type-phone-scale-compression)) * 1rem))" },
4534
+ { name: "--body-lg-font-size", value: "var(--body-lg-desktop-font-size)" },
4535
+ { name: "--body-lg-font-weight", value: "var(--body-font-weight)" },
4536
+ { name: "--body-lg-line-height", value: "var(--line-height-tight)" },
4537
+ { name: "--body-lg-letter-spacing", value: "var(--letter-spacing-normal)" }
4538
+ ]
4539
+ },
4540
+ {
4541
+ prefix: "--body-md",
4542
+ entries: [
4543
+ { name: "--body-md-font-family", value: "var(--body-font-family)" },
4544
+ { name: "--body-md-desktop-font-size", value: "calc(var(--body-scale-base) * 1rem)" },
4545
+ { name: "--body-md-tablet-font-size", value: "min(var(--body-md-desktop-font-size), calc(pow(var(--body-scale-base), var(--type-tablet-scale-compression)) * 1rem))" },
4546
+ { name: "--body-md-phone-font-size", value: "min(var(--body-md-desktop-font-size), calc(pow(var(--body-scale-base), var(--type-phone-scale-compression)) * 1rem))" },
4547
+ { name: "--body-md-font-size", value: "var(--body-md-desktop-font-size)" },
4548
+ { name: "--body-md-font-weight", value: "var(--body-font-weight)" },
4549
+ { name: "--body-md-line-height", value: "var(--line-height-normal)" },
4550
+ { name: "--body-md-letter-spacing", value: "var(--letter-spacing-normal)" }
4551
+ ]
4552
+ },
4553
+ {
4554
+ prefix: "--body-sm",
4555
+ entries: [
4556
+ { name: "--body-sm-font-family", value: "var(--body-font-family)" },
4557
+ { name: "--body-sm-desktop-font-size", value: "calc(var(--body-scale-base) * pow(var(--body-scale-ratio), -1) * 1rem)" },
4558
+ { name: "--body-sm-tablet-font-size", value: "min(var(--body-sm-desktop-font-size), calc(pow(var(--body-scale-base) * pow(var(--body-scale-ratio), -1), var(--type-tablet-scale-compression)) * 1rem))" },
4559
+ { name: "--body-sm-phone-font-size", value: "min(var(--body-sm-desktop-font-size), calc(pow(var(--body-scale-base) * pow(var(--body-scale-ratio), -1), var(--type-phone-scale-compression)) * 1rem))" },
4560
+ { name: "--body-sm-font-size", value: "var(--body-sm-desktop-font-size)" },
4561
+ { name: "--body-sm-font-weight", value: "var(--body-font-weight)" },
4562
+ { name: "--body-sm-line-height", value: "var(--line-height-tight)" },
4563
+ { name: "--body-sm-letter-spacing", value: "var(--letter-spacing-normal)" }
4564
+ ]
4565
+ },
4566
+ {
4567
+ prefix: "--body-xs",
4568
+ entries: [
4569
+ { name: "--body-xs-font-family", value: "var(--body-font-family)" },
4570
+ { name: "--body-xs-desktop-font-size", value: "calc(var(--body-scale-base) * pow(var(--body-scale-ratio), -2) * 1rem)" },
4571
+ { name: "--body-xs-tablet-font-size", value: "min(var(--body-xs-desktop-font-size), calc(pow(var(--body-scale-base) * pow(var(--body-scale-ratio), -2), var(--type-tablet-scale-compression)) * 1rem))" },
4572
+ { name: "--body-xs-phone-font-size", value: "min(var(--body-xs-desktop-font-size), calc(pow(var(--body-scale-base) * pow(var(--body-scale-ratio), -2), var(--type-phone-scale-compression)) * 1rem))" },
4573
+ { name: "--body-xs-font-size", value: "var(--body-xs-desktop-font-size)" },
4574
+ { name: "--body-xs-font-weight", value: "var(--body-font-weight)" },
4575
+ { name: "--body-xs-line-height", value: "var(--line-height-tight)" },
4576
+ { name: "--body-xs-letter-spacing", value: "var(--letter-spacing-normal)" }
4577
+ ]
4578
+ },
4579
+ {
4580
+ prefix: "--body-2xs",
4581
+ entries: [
4582
+ { name: "--body-2xs-font-family", value: "var(--body-font-family)" },
4583
+ { name: "--body-2xs-desktop-font-size", value: "calc(var(--body-scale-base) * pow(var(--body-scale-ratio), -3) * 1rem)" },
4584
+ { name: "--body-2xs-tablet-font-size", value: "min(var(--body-2xs-desktop-font-size), calc(pow(var(--body-scale-base) * pow(var(--body-scale-ratio), -3), var(--type-tablet-scale-compression)) * 1rem))" },
4585
+ { name: "--body-2xs-phone-font-size", value: "min(var(--body-2xs-desktop-font-size), calc(pow(var(--body-scale-base) * pow(var(--body-scale-ratio), -3), var(--type-phone-scale-compression)) * 1rem))" },
4586
+ { name: "--body-2xs-font-size", value: "var(--body-2xs-desktop-font-size)" },
4587
+ { name: "--body-2xs-font-weight", value: "var(--body-font-weight)" },
4588
+ { name: "--body-2xs-line-height", value: "var(--line-height-tight)" },
4589
+ { name: "--body-2xs-letter-spacing", value: "var(--letter-spacing-normal)" }
4590
+ ]
4591
+ }
4592
+ ]
4593
+ },
4594
+ {
4595
+ usage: "code",
4596
+ comment: "Code: code blocks and inline code",
4597
+ follows: "body",
4598
+ settings: [
4599
+ { name: "--code-font-family", value: "var(--font-mono)" },
4600
+ { name: "--code-font-weight", value: "var(--font-weight-normal)" },
4601
+ { name: "--code-scale-base", value: "0.875" },
4602
+ { name: "--code-scale-ratio", value: "1.125" }
4603
+ ],
4604
+ steps: [
4605
+ {
4606
+ prefix: "--code-2xl",
4607
+ entries: [
4608
+ { name: "--code-2xl-font-family", value: "var(--code-font-family)" },
4609
+ { name: "--code-2xl-desktop-font-size", value: "calc(var(--code-scale-base) * pow(var(--code-scale-ratio), 3) * 1rem)" },
4610
+ { name: "--code-2xl-tablet-font-size", value: "min(var(--code-2xl-desktop-font-size), calc(pow(var(--code-scale-base) * pow(var(--code-scale-ratio), 3), var(--type-tablet-scale-compression)) * 1rem))" },
4611
+ { name: "--code-2xl-phone-font-size", value: "min(var(--code-2xl-desktop-font-size), calc(pow(var(--code-scale-base) * pow(var(--code-scale-ratio), 3), var(--type-phone-scale-compression)) * 1rem))" },
4612
+ { name: "--code-2xl-font-size", value: "var(--code-2xl-desktop-font-size)" },
4613
+ { name: "--code-2xl-font-weight", value: "var(--code-font-weight)" },
4614
+ { name: "--code-2xl-line-height", value: "var(--line-height-normal)" },
4615
+ { name: "--code-2xl-letter-spacing", value: "var(--letter-spacing-normal)" }
4616
+ ]
4617
+ },
4618
+ {
4619
+ prefix: "--code-xl",
4620
+ entries: [
4621
+ { name: "--code-xl-font-family", value: "var(--code-font-family)" },
4622
+ { name: "--code-xl-desktop-font-size", value: "calc(var(--code-scale-base) * pow(var(--code-scale-ratio), 2) * 1rem)" },
4623
+ { name: "--code-xl-tablet-font-size", value: "min(var(--code-xl-desktop-font-size), calc(pow(var(--code-scale-base) * pow(var(--code-scale-ratio), 2), var(--type-tablet-scale-compression)) * 1rem))" },
4624
+ { name: "--code-xl-phone-font-size", value: "min(var(--code-xl-desktop-font-size), calc(pow(var(--code-scale-base) * pow(var(--code-scale-ratio), 2), var(--type-phone-scale-compression)) * 1rem))" },
4625
+ { name: "--code-xl-font-size", value: "var(--code-xl-desktop-font-size)" },
4626
+ { name: "--code-xl-font-weight", value: "var(--code-font-weight)" },
4627
+ { name: "--code-xl-line-height", value: "var(--line-height-normal)" },
4628
+ { name: "--code-xl-letter-spacing", value: "var(--letter-spacing-normal)" }
4629
+ ]
4630
+ },
4631
+ {
4632
+ prefix: "--code-lg",
4633
+ entries: [
4634
+ { name: "--code-lg-font-family", value: "var(--code-font-family)" },
4635
+ { name: "--code-lg-desktop-font-size", value: "calc(var(--code-scale-base) * pow(var(--code-scale-ratio), 1) * 1rem)" },
4636
+ { name: "--code-lg-tablet-font-size", value: "min(var(--code-lg-desktop-font-size), calc(pow(var(--code-scale-base) * pow(var(--code-scale-ratio), 1), var(--type-tablet-scale-compression)) * 1rem))" },
4637
+ { name: "--code-lg-phone-font-size", value: "min(var(--code-lg-desktop-font-size), calc(pow(var(--code-scale-base) * pow(var(--code-scale-ratio), 1), var(--type-phone-scale-compression)) * 1rem))" },
4638
+ { name: "--code-lg-font-size", value: "var(--code-lg-desktop-font-size)" },
4639
+ { name: "--code-lg-font-weight", value: "var(--code-font-weight)" },
4640
+ { name: "--code-lg-line-height", value: "var(--line-height-normal)" },
4641
+ { name: "--code-lg-letter-spacing", value: "var(--letter-spacing-normal)" }
4642
+ ]
4643
+ },
4644
+ {
4645
+ prefix: "--code-md",
4646
+ entries: [
4647
+ { name: "--code-md-font-family", value: "var(--code-font-family)" },
4648
+ { name: "--code-md-desktop-font-size", value: "calc(var(--code-scale-base) * 1rem)" },
4649
+ { name: "--code-md-tablet-font-size", value: "min(var(--code-md-desktop-font-size), calc(pow(var(--code-scale-base), var(--type-tablet-scale-compression)) * 1rem))" },
4650
+ { name: "--code-md-phone-font-size", value: "min(var(--code-md-desktop-font-size), calc(pow(var(--code-scale-base), var(--type-phone-scale-compression)) * 1rem))" },
4651
+ { name: "--code-md-font-size", value: "var(--code-md-desktop-font-size)" },
4652
+ { name: "--code-md-font-weight", value: "var(--code-font-weight)" },
4653
+ { name: "--code-md-line-height", value: "var(--line-height-normal)" },
4654
+ { name: "--code-md-letter-spacing", value: "var(--letter-spacing-normal)" }
4655
+ ]
4656
+ },
4657
+ {
4658
+ prefix: "--code-sm",
4659
+ entries: [
4660
+ { name: "--code-sm-font-family", value: "var(--code-font-family)" },
4661
+ { name: "--code-sm-desktop-font-size", value: "calc(var(--code-scale-base) * pow(var(--code-scale-ratio), -1) * 1rem)" },
4662
+ { name: "--code-sm-tablet-font-size", value: "min(var(--code-sm-desktop-font-size), calc(pow(var(--code-scale-base) * pow(var(--code-scale-ratio), -1), var(--type-tablet-scale-compression)) * 1rem))" },
4663
+ { name: "--code-sm-phone-font-size", value: "min(var(--code-sm-desktop-font-size), calc(pow(var(--code-scale-base) * pow(var(--code-scale-ratio), -1), var(--type-phone-scale-compression)) * 1rem))" },
4664
+ { name: "--code-sm-font-size", value: "var(--code-sm-desktop-font-size)" },
4665
+ { name: "--code-sm-font-weight", value: "var(--code-font-weight)" },
4666
+ { name: "--code-sm-line-height", value: "var(--line-height-normal)" },
4667
+ { name: "--code-sm-letter-spacing", value: "var(--letter-spacing-normal)" }
4668
+ ]
4669
+ },
4670
+ {
4671
+ prefix: "--code-xs",
4672
+ entries: [
4673
+ { name: "--code-xs-font-family", value: "var(--code-font-family)" },
4674
+ { name: "--code-xs-desktop-font-size", value: "calc(var(--code-scale-base) * pow(var(--code-scale-ratio), -2) * 1rem)" },
4675
+ { name: "--code-xs-tablet-font-size", value: "min(var(--code-xs-desktop-font-size), calc(pow(var(--code-scale-base) * pow(var(--code-scale-ratio), -2), var(--type-tablet-scale-compression)) * 1rem))" },
4676
+ { name: "--code-xs-phone-font-size", value: "min(var(--code-xs-desktop-font-size), calc(pow(var(--code-scale-base) * pow(var(--code-scale-ratio), -2), var(--type-phone-scale-compression)) * 1rem))" },
4677
+ { name: "--code-xs-font-size", value: "var(--code-xs-desktop-font-size)" },
4678
+ { name: "--code-xs-font-weight", value: "var(--code-font-weight)" },
4679
+ { name: "--code-xs-line-height", value: "var(--line-height-normal)" },
4680
+ { name: "--code-xs-letter-spacing", value: "var(--letter-spacing-normal)" }
4681
+ ]
4682
+ },
4683
+ {
4684
+ prefix: "--code-2xs",
4685
+ entries: [
4686
+ { name: "--code-2xs-font-family", value: "var(--code-font-family)" },
4687
+ { name: "--code-2xs-desktop-font-size", value: "calc(var(--code-scale-base) * pow(var(--code-scale-ratio), -3) * 1rem)" },
4688
+ { name: "--code-2xs-tablet-font-size", value: "min(var(--code-2xs-desktop-font-size), calc(pow(var(--code-scale-base) * pow(var(--code-scale-ratio), -3), var(--type-tablet-scale-compression)) * 1rem))" },
4689
+ { name: "--code-2xs-phone-font-size", value: "min(var(--code-2xs-desktop-font-size), calc(pow(var(--code-scale-base) * pow(var(--code-scale-ratio), -3), var(--type-phone-scale-compression)) * 1rem))" },
4690
+ { name: "--code-2xs-font-size", value: "var(--code-2xs-desktop-font-size)" },
4691
+ { name: "--code-2xs-font-weight", value: "var(--code-font-weight)" },
4692
+ { name: "--code-2xs-line-height", value: "var(--line-height-normal)" },
4693
+ { name: "--code-2xs-letter-spacing", value: "var(--letter-spacing-normal)" }
4694
+ ]
4695
+ }
4696
+ ]
4697
+ },
4698
+ {
4699
+ usage: "editorial",
4700
+ comment: "Editorial: the long-reading role",
4701
+ follows: "code",
4702
+ settings: [
4703
+ { name: "--editorial-font-family", value: "var(--font-editorial)" },
4704
+ { name: "--editorial-font-weight", value: "var(--font-weight-normal)" },
4705
+ { name: "--editorial-scale-base", value: "1" },
4706
+ { name: "--editorial-scale-ratio", value: "1.125" }
4707
+ ],
4708
+ steps: [
4709
+ {
4710
+ prefix: "--editorial-2xl",
4711
+ entries: [
4712
+ { name: "--editorial-2xl-font-family", value: "var(--editorial-font-family)" },
4713
+ { name: "--editorial-2xl-desktop-font-size", value: "calc(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), 3) * 1rem)" },
4714
+ { name: "--editorial-2xl-tablet-font-size", value: "min(var(--editorial-2xl-desktop-font-size), calc(pow(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), 3), var(--type-tablet-scale-compression)) * 1rem))" },
4715
+ { name: "--editorial-2xl-phone-font-size", value: "min(var(--editorial-2xl-desktop-font-size), calc(pow(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), 3), var(--type-phone-scale-compression)) * 1rem))" },
4716
+ { name: "--editorial-2xl-font-size", value: "var(--editorial-2xl-desktop-font-size)" },
4717
+ { name: "--editorial-2xl-font-weight", value: "var(--editorial-font-weight)" },
4718
+ { name: "--editorial-2xl-line-height", value: "var(--line-height-tightest)" },
4719
+ { name: "--editorial-2xl-letter-spacing", value: "var(--letter-spacing-normal)" }
4720
+ ]
4721
+ },
4722
+ {
4723
+ prefix: "--editorial-xl",
4724
+ entries: [
4725
+ { name: "--editorial-xl-font-family", value: "var(--editorial-font-family)" },
4726
+ { name: "--editorial-xl-desktop-font-size", value: "calc(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), 2) * 1rem)" },
4727
+ { name: "--editorial-xl-tablet-font-size", value: "min(var(--editorial-xl-desktop-font-size), calc(pow(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), 2), var(--type-tablet-scale-compression)) * 1rem))" },
4728
+ { name: "--editorial-xl-phone-font-size", value: "min(var(--editorial-xl-desktop-font-size), calc(pow(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), 2), var(--type-phone-scale-compression)) * 1rem))" },
4729
+ { name: "--editorial-xl-font-size", value: "var(--editorial-xl-desktop-font-size)" },
4730
+ { name: "--editorial-xl-font-weight", value: "var(--editorial-font-weight)" },
4731
+ { name: "--editorial-xl-line-height", value: "var(--line-height-tighter)" },
4732
+ { name: "--editorial-xl-letter-spacing", value: "var(--letter-spacing-normal)" }
4733
+ ]
4734
+ },
4735
+ {
4736
+ prefix: "--editorial-lg",
4737
+ entries: [
4738
+ { name: "--editorial-lg-font-family", value: "var(--editorial-font-family)" },
4739
+ { name: "--editorial-lg-desktop-font-size", value: "calc(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), 1) * 1rem)" },
4740
+ { name: "--editorial-lg-tablet-font-size", value: "min(var(--editorial-lg-desktop-font-size), calc(pow(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), 1), var(--type-tablet-scale-compression)) * 1rem))" },
4741
+ { name: "--editorial-lg-phone-font-size", value: "min(var(--editorial-lg-desktop-font-size), calc(pow(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), 1), var(--type-phone-scale-compression)) * 1rem))" },
4742
+ { name: "--editorial-lg-font-size", value: "var(--editorial-lg-desktop-font-size)" },
4743
+ { name: "--editorial-lg-font-weight", value: "var(--editorial-font-weight)" },
4744
+ { name: "--editorial-lg-line-height", value: "var(--line-height-tight)" },
4745
+ { name: "--editorial-lg-letter-spacing", value: "var(--letter-spacing-normal)" }
4746
+ ]
4747
+ },
4748
+ {
4749
+ prefix: "--editorial-md",
4750
+ entries: [
4751
+ { name: "--editorial-md-font-family", value: "var(--editorial-font-family)" },
4752
+ { name: "--editorial-md-desktop-font-size", value: "calc(var(--editorial-scale-base) * 1rem)" },
4753
+ { name: "--editorial-md-tablet-font-size", value: "min(var(--editorial-md-desktop-font-size), calc(pow(var(--editorial-scale-base), var(--type-tablet-scale-compression)) * 1rem))" },
4754
+ { name: "--editorial-md-phone-font-size", value: "min(var(--editorial-md-desktop-font-size), calc(pow(var(--editorial-scale-base), var(--type-phone-scale-compression)) * 1rem))" },
4755
+ { name: "--editorial-md-font-size", value: "var(--editorial-md-desktop-font-size)" },
4756
+ { name: "--editorial-md-font-weight", value: "var(--editorial-font-weight)" },
4757
+ { name: "--editorial-md-line-height", value: "var(--line-height-normal)" },
4758
+ { name: "--editorial-md-letter-spacing", value: "var(--letter-spacing-normal)" }
4759
+ ]
4760
+ },
4761
+ {
4762
+ prefix: "--editorial-sm",
4763
+ entries: [
4764
+ { name: "--editorial-sm-font-family", value: "var(--editorial-font-family)" },
4765
+ { name: "--editorial-sm-desktop-font-size", value: "calc(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), -1) * 1rem)" },
4766
+ { name: "--editorial-sm-tablet-font-size", value: "min(var(--editorial-sm-desktop-font-size), calc(pow(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), -1), var(--type-tablet-scale-compression)) * 1rem))" },
4767
+ { name: "--editorial-sm-phone-font-size", value: "min(var(--editorial-sm-desktop-font-size), calc(pow(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), -1), var(--type-phone-scale-compression)) * 1rem))" },
4768
+ { name: "--editorial-sm-font-size", value: "var(--editorial-sm-desktop-font-size)" },
4769
+ { name: "--editorial-sm-font-weight", value: "var(--editorial-font-weight)" },
4770
+ { name: "--editorial-sm-line-height", value: "var(--line-height-tight)" },
4771
+ { name: "--editorial-sm-letter-spacing", value: "var(--letter-spacing-normal)" }
4772
+ ]
4773
+ },
4774
+ {
4775
+ prefix: "--editorial-xs",
4776
+ entries: [
4777
+ { name: "--editorial-xs-font-family", value: "var(--editorial-font-family)" },
4778
+ { name: "--editorial-xs-desktop-font-size", value: "calc(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), -2) * 1rem)" },
4779
+ { name: "--editorial-xs-tablet-font-size", value: "min(var(--editorial-xs-desktop-font-size), calc(pow(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), -2), var(--type-tablet-scale-compression)) * 1rem))" },
4780
+ { name: "--editorial-xs-phone-font-size", value: "min(var(--editorial-xs-desktop-font-size), calc(pow(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), -2), var(--type-phone-scale-compression)) * 1rem))" },
4781
+ { name: "--editorial-xs-font-size", value: "var(--editorial-xs-desktop-font-size)" },
4782
+ { name: "--editorial-xs-font-weight", value: "var(--editorial-font-weight)" },
4783
+ { name: "--editorial-xs-line-height", value: "var(--line-height-tighter)" },
4784
+ { name: "--editorial-xs-letter-spacing", value: "var(--letter-spacing-normal)" }
4785
+ ]
4786
+ },
4787
+ {
4788
+ prefix: "--editorial-2xs",
4789
+ entries: [
4790
+ { name: "--editorial-2xs-font-family", value: "var(--editorial-font-family)" },
4791
+ { name: "--editorial-2xs-desktop-font-size", value: "calc(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), -3) * 1rem)" },
4792
+ { name: "--editorial-2xs-tablet-font-size", value: "min(var(--editorial-2xs-desktop-font-size), calc(pow(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), -3), var(--type-tablet-scale-compression)) * 1rem))" },
4793
+ { name: "--editorial-2xs-phone-font-size", value: "min(var(--editorial-2xs-desktop-font-size), calc(pow(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), -3), var(--type-phone-scale-compression)) * 1rem))" },
4794
+ { name: "--editorial-2xs-font-size", value: "var(--editorial-2xs-desktop-font-size)" },
4795
+ { name: "--editorial-2xs-font-weight", value: "var(--editorial-font-weight)" },
4796
+ { name: "--editorial-2xs-line-height", value: "var(--line-height-tighter)" },
4797
+ { name: "--editorial-2xs-letter-spacing", value: "var(--letter-spacing-normal)" }
4798
+ ]
4799
+ }
4800
+ ]
4801
+ }
4802
+ ];
4803
+ var EYEBROW = [
4804
+ { name: "--eyebrow-font-family", value: "var(--body-font-family)" },
4805
+ { name: "--eyebrow-desktop-font-size", value: "var(--body-sm-desktop-font-size)" },
4806
+ { name: "--eyebrow-tablet-font-size", value: "var(--body-sm-tablet-font-size)" },
4807
+ { name: "--eyebrow-phone-font-size", value: "var(--body-sm-phone-font-size)" },
4808
+ { name: "--eyebrow-font-size", value: "var(--eyebrow-desktop-font-size)" },
4809
+ { name: "--eyebrow-font-weight", value: "var(--body-font-weight)" },
4810
+ { name: "--eyebrow-line-height", value: "var(--line-height-normal)" },
4811
+ { name: "--eyebrow-letter-spacing", value: "var(--letter-spacing-normal)" },
4812
+ { name: "--eyebrow-text-transform", value: "none" }
4813
+ ];
4814
+ var MEDIA = [
4815
+ {
4816
+ query: "(max-width: 768px)",
4817
+ entries: [
4818
+ { name: "--display-2xl-font-size", value: "var(--display-2xl-tablet-font-size)" },
4819
+ { name: "--display-xl-font-size", value: "var(--display-xl-tablet-font-size)" },
4820
+ { name: "--display-lg-font-size", value: "var(--display-lg-tablet-font-size)" },
4821
+ { name: "--display-md-font-size", value: "var(--display-md-tablet-font-size)" },
4822
+ { name: "--display-sm-font-size", value: "var(--display-sm-tablet-font-size)" },
4823
+ { name: "--display-xs-font-size", value: "var(--display-xs-tablet-font-size)" },
4824
+ { name: "--display-2xs-font-size", value: "var(--display-2xs-tablet-font-size)" },
4825
+ { name: "--heading-2xl-font-size", value: "var(--heading-2xl-tablet-font-size)" },
4826
+ { name: "--heading-xl-font-size", value: "var(--heading-xl-tablet-font-size)" },
4827
+ { name: "--heading-lg-font-size", value: "var(--heading-lg-tablet-font-size)" },
4828
+ { name: "--heading-md-font-size", value: "var(--heading-md-tablet-font-size)" },
4829
+ { name: "--heading-sm-font-size", value: "var(--heading-sm-tablet-font-size)" },
4830
+ { name: "--heading-xs-font-size", value: "var(--heading-xs-tablet-font-size)" },
4831
+ { name: "--heading-2xs-font-size", value: "var(--heading-2xs-tablet-font-size)" },
4832
+ { name: "--body-2xl-font-size", value: "var(--body-2xl-tablet-font-size)" },
4833
+ { name: "--body-xl-font-size", value: "var(--body-xl-tablet-font-size)" },
4834
+ { name: "--body-lg-font-size", value: "var(--body-lg-tablet-font-size)" },
4835
+ { name: "--body-md-font-size", value: "var(--body-md-tablet-font-size)" },
4836
+ { name: "--body-sm-font-size", value: "var(--body-sm-tablet-font-size)" },
4837
+ { name: "--body-xs-font-size", value: "var(--body-xs-tablet-font-size)" },
4838
+ { name: "--body-2xs-font-size", value: "var(--body-2xs-tablet-font-size)" },
4839
+ { name: "--editorial-2xl-font-size", value: "var(--editorial-2xl-tablet-font-size)" },
4840
+ { name: "--editorial-xl-font-size", value: "var(--editorial-xl-tablet-font-size)" },
4841
+ { name: "--editorial-lg-font-size", value: "var(--editorial-lg-tablet-font-size)" },
4842
+ { name: "--editorial-md-font-size", value: "var(--editorial-md-tablet-font-size)" },
4843
+ { name: "--editorial-sm-font-size", value: "var(--editorial-sm-tablet-font-size)" },
4844
+ { name: "--editorial-xs-font-size", value: "var(--editorial-xs-tablet-font-size)" },
4845
+ { name: "--editorial-2xs-font-size", value: "var(--editorial-2xs-tablet-font-size)" },
4846
+ { name: "--code-2xl-font-size", value: "var(--code-2xl-tablet-font-size)" },
4847
+ { name: "--code-xl-font-size", value: "var(--code-xl-tablet-font-size)" },
4848
+ { name: "--code-lg-font-size", value: "var(--code-lg-tablet-font-size)" },
4849
+ { name: "--code-md-font-size", value: "var(--code-md-tablet-font-size)" },
4850
+ { name: "--code-sm-font-size", value: "var(--code-sm-tablet-font-size)" },
4851
+ { name: "--code-xs-font-size", value: "var(--code-xs-tablet-font-size)" },
4852
+ { name: "--code-2xs-font-size", value: "var(--code-2xs-tablet-font-size)" },
4853
+ { name: "--eyebrow-font-size", value: "var(--eyebrow-tablet-font-size)" }
4854
+ ]
4855
+ },
4856
+ {
4857
+ query: "(max-width: 480px)",
4858
+ entries: [
4859
+ { name: "--display-2xl-font-size", value: "var(--display-2xl-phone-font-size)" },
4860
+ { name: "--display-xl-font-size", value: "var(--display-xl-phone-font-size)" },
4861
+ { name: "--display-lg-font-size", value: "var(--display-lg-phone-font-size)" },
4862
+ { name: "--display-md-font-size", value: "var(--display-md-phone-font-size)" },
4863
+ { name: "--display-sm-font-size", value: "var(--display-sm-phone-font-size)" },
4864
+ { name: "--display-xs-font-size", value: "var(--display-xs-phone-font-size)" },
4865
+ { name: "--display-2xs-font-size", value: "var(--display-2xs-phone-font-size)" },
4866
+ { name: "--heading-2xl-font-size", value: "var(--heading-2xl-phone-font-size)" },
4867
+ { name: "--heading-xl-font-size", value: "var(--heading-xl-phone-font-size)" },
4868
+ { name: "--heading-lg-font-size", value: "var(--heading-lg-phone-font-size)" },
4869
+ { name: "--heading-md-font-size", value: "var(--heading-md-phone-font-size)" },
4870
+ { name: "--heading-sm-font-size", value: "var(--heading-sm-phone-font-size)" },
4871
+ { name: "--heading-xs-font-size", value: "var(--heading-xs-phone-font-size)" },
4872
+ { name: "--heading-2xs-font-size", value: "var(--heading-2xs-phone-font-size)" },
4873
+ { name: "--body-2xl-font-size", value: "var(--body-2xl-phone-font-size)" },
4874
+ { name: "--body-xl-font-size", value: "var(--body-xl-phone-font-size)" },
4875
+ { name: "--body-lg-font-size", value: "var(--body-lg-phone-font-size)" },
4876
+ { name: "--body-md-font-size", value: "var(--body-md-phone-font-size)" },
4877
+ { name: "--body-sm-font-size", value: "var(--body-sm-phone-font-size)" },
4878
+ { name: "--body-xs-font-size", value: "var(--body-xs-phone-font-size)" },
4879
+ { name: "--body-2xs-font-size", value: "var(--body-2xs-phone-font-size)" },
4880
+ { name: "--editorial-2xl-font-size", value: "var(--editorial-2xl-phone-font-size)" },
4881
+ { name: "--editorial-xl-font-size", value: "var(--editorial-xl-phone-font-size)" },
4882
+ { name: "--editorial-lg-font-size", value: "var(--editorial-lg-phone-font-size)" },
4883
+ { name: "--editorial-md-font-size", value: "var(--editorial-md-phone-font-size)" },
4884
+ { name: "--editorial-sm-font-size", value: "var(--editorial-sm-phone-font-size)" },
4885
+ { name: "--editorial-xs-font-size", value: "var(--editorial-xs-phone-font-size)" },
4886
+ { name: "--editorial-2xs-font-size", value: "var(--editorial-2xs-phone-font-size)" },
4887
+ { name: "--code-2xl-font-size", value: "var(--code-2xl-phone-font-size)" },
4888
+ { name: "--code-xl-font-size", value: "var(--code-xl-phone-font-size)" },
4889
+ { name: "--code-lg-font-size", value: "var(--code-lg-phone-font-size)" },
4890
+ { name: "--code-md-font-size", value: "var(--code-md-phone-font-size)" },
4891
+ { name: "--code-sm-font-size", value: "var(--code-sm-phone-font-size)" },
4892
+ { name: "--code-xs-font-size", value: "var(--code-xs-phone-font-size)" },
4893
+ { name: "--code-2xs-font-size", value: "var(--code-2xs-phone-font-size)" },
4894
+ { name: "--eyebrow-font-size", value: "var(--eyebrow-phone-font-size)" }
4895
+ ]
4896
+ }
4897
+ ];
4898
+ var DECLARED = new Map(
4899
+ USAGES.flatMap((u) => u.steps.flatMap((s) => s.entries)).concat(EYEBROW).map((e) => [e.name, e.value])
4900
+ );
4901
+ var TYPE_PRIMITIVES = ["--letter-spacing-", "--line-height-", "--font-weight-", "--font-size-", "--font-"];
4902
+ var CARRIED_PREFIXES = new Set(CARRIED.map((step) => step.prefix));
4903
+ function handDeclaredSteps(values) {
4904
+ return USAGES.flatMap((u) => u.steps).filter(
4905
+ ({ prefix }) => !CARRIED_PREFIXES.has(prefix) && values.has(`${prefix}-font-size`) && !values.has(`${prefix}-desktop-font-size`)
4906
+ ).map(({ prefix }) => ({ prefix, links: [] }));
4907
+ }
4908
+ var tokensCssMigration_2026_10_08_typeScales = {
4909
+ id: "2026-10-08-type-scales",
4910
+ kind: "breaking",
4911
+ description: "Rebuild the text styles as five type scales with per-viewport sizes, and rename --code-font-size, --code-line-height and --code-letter-spacing to --code-md-*",
4912
+ apply(css) {
4913
+ let out = css;
4914
+ for (const [from, to] of RENAMES14) out = renameToken2(out, from, to);
4915
+ const values = collectTokenValues(out);
4916
+ for (const step of [...CARRIED, ...handDeclaredSteps(values)]) {
4917
+ const size = values.get(`${step.prefix}-font-size`);
4918
+ if (size === void 0) continue;
4919
+ const desktop = `${step.prefix}-desktop-font-size`;
4920
+ const edited = size !== step.size;
4921
+ const rem = edited ? resolvedRem(size, values) : null;
4922
+ out = ensureScale(out, {
4923
+ anchorPrefixes: [`${step.prefix}-font-family`, `${step.prefix}-`],
4924
+ entries: [
4925
+ { name: desktop, value: edited ? size : DECLARED.get(desktop) },
4926
+ ...rem === null ? [] : editedSizes(step.prefix, rem)
4927
+ ]
4928
+ });
4929
+ out = setTokenValue(out, `${step.prefix}-font-size`, `var(${desktop})`);
4930
+ for (const link of step.links) out = setTokenValue(out, link.name, link.to, { from: link.from });
4931
+ }
4932
+ out = ensureScale(out, {
4933
+ sectionComment: "Text styles: the compression that sets each tablet and phone size",
4934
+ anchorPrefixes: ["--type-", ...TYPE_PRIMITIVES],
4935
+ entries: COMPRESSION
4936
+ });
4937
+ for (const block of USAGES) {
4938
+ const fallback = [`--${block.usage}-scale-`, `--${block.follows}-`, "--type-"];
4939
+ out = ensureScale(out, { sectionComment: block.comment, anchorPrefixes: fallback, entries: block.settings });
4940
+ block.steps.forEach((step, i) => {
4941
+ const above = block.steps.slice(0, i).reverse().map((s) => `${s.prefix}-`);
4942
+ out = ensureScale(out, {
4943
+ anchorPrefixes: [
4944
+ `${step.prefix}-desktop-font-size`,
4945
+ `${step.prefix}-font-family`,
4946
+ `${step.prefix}-`,
4947
+ ...above,
4948
+ ...fallback
4949
+ ],
4950
+ entries: step.entries
4951
+ });
4952
+ });
4953
+ }
4954
+ out = ensureScale(out, {
4955
+ anchorPrefixes: ["--eyebrow-desktop-font-size", "--eyebrow-font-family", "--eyebrow-", "--editorial-"],
4956
+ entries: EYEBROW
4957
+ });
4958
+ for (const media of MEDIA) out = appendMediaBlock(out, media.query, media.entries);
4959
+ return out;
4960
+ }
4961
+ };
4962
+
4029
4963
  // vite-plugin/tokensCssMigrations/index.ts
4030
4964
  var TOKENS_CSS_MIGRATIONS = [
4031
4965
  tokensCssMigration_2026_05_29_typographyScaleAdditions,
@@ -4044,7 +4978,8 @@ var TOKENS_CSS_MIGRATIONS = [
4044
4978
  tokensCssMigration_2026_09_01_scrimRename,
4045
4979
  tokensCssMigration_2026_09_01_tintScale,
4046
4980
  tokensCssMigration_2026_09_20_scrimColorAndOpacity,
4047
- tokensCssMigration_2026_09_21_tintColorAndOpacity
4981
+ tokensCssMigration_2026_09_21_tintColorAndOpacity,
4982
+ tokensCssMigration_2026_10_08_typeScales
4048
4983
  ];
4049
4984
  function runTokensCssMigrations(css) {
4050
4985
  return foldMigrations(css, () => true);