@motion-proto/live-tokens 0.91.2 → 0.92.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 (46) 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 +140 -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-JOSSYGR2.js +1634 -0
  8. package/dist-plugin/index.cjs +932 -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 +936 -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/themes/parsers/mediaBlocks.ts +46 -0
  22. package/src/editor/core/typeScale/typeScale.ts +341 -0
  23. package/src/editor/skill-atlas/SourcePane.svelte +3 -3
  24. package/src/editor/skill-atlas/skillSources.generated.ts +2 -2
  25. package/src/editor/skill-atlas/trees/create-page.ts +14 -14
  26. package/src/editor/skill-atlas/trees/set-type.ts +2 -2
  27. package/src/editor/ui/UIFontFamilySelector.svelte +5 -1
  28. package/src/editor/ui/UIFontWeightSelector.svelte +4 -0
  29. package/src/editor/ui/UILetterSpacingSelector.svelte +4 -0
  30. package/src/editor/ui/UILineHeightSelector.svelte +4 -0
  31. package/src/editor/ui/UITextTransformSelector.svelte +4 -0
  32. package/src/editor/ui/UIVariantSelector.svelte +6 -8
  33. package/src/editor/ui/VariablesTab.svelte +4 -4
  34. package/src/editor/ui/sections/textStyles.ts +44 -92
  35. package/src/editor/ui/text-styles/ControlBody.svelte +100 -0
  36. package/src/editor/ui/text-styles/ResetIcon.svelte +60 -0
  37. package/src/editor/ui/text-styles/StepRow.svelte +330 -0
  38. package/src/editor/ui/text-styles/StyleControl.svelte +128 -0
  39. package/src/editor/ui/text-styles/TextStylesSection.svelte +551 -0
  40. package/src/editor/ui/text-styles/textStyleEdits.ts +308 -0
  41. package/src/editor/ui/variantScales.ts +16 -0
  42. package/src/system/styles/tokens.css +412 -48
  43. package/src/testing-js/page-compliance.contract.js +233 -80
  44. package/src/testing-js/page-compliance.contract.js.map +1 -1
  45. package/dist-plugin/chunk-GWMEYBZ2.js +0 -715
  46. 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,802 @@ 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
+ function editedSizes(prefix, rem) {
4263
+ const count = String(Number(rem.toFixed(4)));
4264
+ return COMPRESSED_VIEWPORTS.map((viewport) => ({
4265
+ name: `${prefix}-${viewport}-font-size`,
4266
+ value: `min(var(${prefix}-desktop-font-size), calc(pow(${count}, var(--type-${viewport}-scale-compression)) * 1rem))`
4267
+ }));
4268
+ }
4269
+ var USAGES = [
4270
+ {
4271
+ usage: "display",
4272
+ comment: "Display: type outside the page outline, such as heroes, section titles and big numbers",
4273
+ follows: "type",
4274
+ settings: [
4275
+ { name: "--display-font-family", value: "var(--font-display)" },
4276
+ { name: "--display-font-weight", value: "var(--font-weight-semibold)" },
4277
+ { name: "--display-scale-base", value: "3" },
4278
+ { name: "--display-scale-ratio", value: "1.2" }
4279
+ ],
4280
+ steps: [
4281
+ {
4282
+ prefix: "--display-2xl",
4283
+ entries: [
4284
+ { name: "--display-2xl-font-family", value: "var(--display-font-family)" },
4285
+ { name: "--display-2xl-desktop-font-size", value: "calc(var(--display-scale-base) * pow(var(--display-scale-ratio), 3) * 1rem)" },
4286
+ { 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))" },
4287
+ { 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))" },
4288
+ { name: "--display-2xl-font-size", value: "var(--display-2xl-desktop-font-size)" },
4289
+ { name: "--display-2xl-font-weight", value: "var(--display-font-weight)" },
4290
+ { name: "--display-2xl-line-height", value: "var(--line-height-tightest)" },
4291
+ { name: "--display-2xl-letter-spacing", value: "var(--letter-spacing-tight)" }
4292
+ ]
4293
+ },
4294
+ {
4295
+ prefix: "--display-xl",
4296
+ entries: [
4297
+ { name: "--display-xl-font-family", value: "var(--display-font-family)" },
4298
+ { name: "--display-xl-desktop-font-size", value: "calc(var(--display-scale-base) * pow(var(--display-scale-ratio), 2) * 1rem)" },
4299
+ { 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))" },
4300
+ { 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))" },
4301
+ { name: "--display-xl-font-size", value: "var(--display-xl-desktop-font-size)" },
4302
+ { name: "--display-xl-font-weight", value: "var(--display-font-weight)" },
4303
+ { name: "--display-xl-line-height", value: "var(--line-height-tightest)" },
4304
+ { name: "--display-xl-letter-spacing", value: "var(--letter-spacing-tight)" }
4305
+ ]
4306
+ },
4307
+ {
4308
+ prefix: "--display-lg",
4309
+ entries: [
4310
+ { name: "--display-lg-font-family", value: "var(--display-font-family)" },
4311
+ { name: "--display-lg-desktop-font-size", value: "calc(var(--display-scale-base) * pow(var(--display-scale-ratio), 1) * 1rem)" },
4312
+ { 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))" },
4313
+ { 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))" },
4314
+ { name: "--display-lg-font-size", value: "var(--display-lg-desktop-font-size)" },
4315
+ { name: "--display-lg-font-weight", value: "var(--display-font-weight)" },
4316
+ { name: "--display-lg-line-height", value: "var(--line-height-tightest)" },
4317
+ { name: "--display-lg-letter-spacing", value: "var(--letter-spacing-tight)" }
4318
+ ]
4319
+ },
4320
+ {
4321
+ prefix: "--display-md",
4322
+ entries: [
4323
+ { name: "--display-md-font-family", value: "var(--display-font-family)" },
4324
+ { name: "--display-md-desktop-font-size", value: "calc(var(--display-scale-base) * 1rem)" },
4325
+ { 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))" },
4326
+ { 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))" },
4327
+ { name: "--display-md-font-size", value: "var(--display-md-desktop-font-size)" },
4328
+ { name: "--display-md-font-weight", value: "var(--display-font-weight)" },
4329
+ { name: "--display-md-line-height", value: "var(--line-height-tightest)" },
4330
+ { name: "--display-md-letter-spacing", value: "var(--letter-spacing-normal)" }
4331
+ ]
4332
+ },
4333
+ {
4334
+ prefix: "--display-sm",
4335
+ entries: [
4336
+ { name: "--display-sm-font-family", value: "var(--display-font-family)" },
4337
+ { name: "--display-sm-desktop-font-size", value: "calc(var(--display-scale-base) * pow(var(--display-scale-ratio), -1) * 1rem)" },
4338
+ { 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))" },
4339
+ { 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))" },
4340
+ { name: "--display-sm-font-size", value: "var(--display-sm-desktop-font-size)" },
4341
+ { name: "--display-sm-font-weight", value: "var(--display-font-weight)" },
4342
+ { name: "--display-sm-line-height", value: "var(--line-height-tighter)" },
4343
+ { name: "--display-sm-letter-spacing", value: "var(--letter-spacing-normal)" }
4344
+ ]
4345
+ },
4346
+ {
4347
+ prefix: "--display-xs",
4348
+ entries: [
4349
+ { name: "--display-xs-font-family", value: "var(--display-font-family)" },
4350
+ { name: "--display-xs-desktop-font-size", value: "calc(var(--display-scale-base) * pow(var(--display-scale-ratio), -2) * 1rem)" },
4351
+ { 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))" },
4352
+ { 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))" },
4353
+ { name: "--display-xs-font-size", value: "var(--display-xs-desktop-font-size)" },
4354
+ { name: "--display-xs-font-weight", value: "var(--display-font-weight)" },
4355
+ { name: "--display-xs-line-height", value: "var(--line-height-tighter)" },
4356
+ { name: "--display-xs-letter-spacing", value: "var(--letter-spacing-normal)" }
4357
+ ]
4358
+ },
4359
+ {
4360
+ prefix: "--display-2xs",
4361
+ entries: [
4362
+ { name: "--display-2xs-font-family", value: "var(--display-font-family)" },
4363
+ { name: "--display-2xs-desktop-font-size", value: "calc(var(--display-scale-base) * pow(var(--display-scale-ratio), -3) * 1rem)" },
4364
+ { 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))" },
4365
+ { 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))" },
4366
+ { name: "--display-2xs-font-size", value: "var(--display-2xs-desktop-font-size)" },
4367
+ { name: "--display-2xs-font-weight", value: "var(--display-font-weight)" },
4368
+ { name: "--display-2xs-line-height", value: "var(--line-height-tighter)" },
4369
+ { name: "--display-2xs-letter-spacing", value: "var(--letter-spacing-normal)" }
4370
+ ]
4371
+ }
4372
+ ]
4373
+ },
4374
+ {
4375
+ usage: "heading",
4376
+ comment: "Heading: the page outline, h1 at xl down to h6 at 2xs",
4377
+ follows: "display",
4378
+ settings: [
4379
+ { name: "--heading-font-family", value: "var(--font-display)" },
4380
+ { name: "--heading-font-weight", value: "var(--font-weight-semibold)" },
4381
+ { name: "--heading-scale-base", value: "1.5" },
4382
+ { name: "--heading-scale-ratio", value: "1.25" }
4383
+ ],
4384
+ steps: [
4385
+ {
4386
+ prefix: "--heading-2xl",
4387
+ entries: [
4388
+ { name: "--heading-2xl-font-family", value: "var(--heading-font-family)" },
4389
+ { name: "--heading-2xl-desktop-font-size", value: "calc(var(--heading-scale-base) * pow(var(--heading-scale-ratio), 3) * 1rem)" },
4390
+ { 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))" },
4391
+ { 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))" },
4392
+ { name: "--heading-2xl-font-size", value: "var(--heading-2xl-desktop-font-size)" },
4393
+ { name: "--heading-2xl-font-weight", value: "var(--heading-font-weight)" },
4394
+ { name: "--heading-2xl-line-height", value: "var(--line-height-tightest)" },
4395
+ { name: "--heading-2xl-letter-spacing", value: "var(--letter-spacing-normal)" }
4396
+ ]
4397
+ },
4398
+ {
4399
+ prefix: "--heading-xl",
4400
+ entries: [
4401
+ { name: "--heading-xl-font-family", value: "var(--heading-font-family)" },
4402
+ { name: "--heading-xl-desktop-font-size", value: "calc(var(--heading-scale-base) * pow(var(--heading-scale-ratio), 2) * 1rem)" },
4403
+ { 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))" },
4404
+ { 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))" },
4405
+ { name: "--heading-xl-font-size", value: "var(--heading-xl-desktop-font-size)" },
4406
+ { name: "--heading-xl-font-weight", value: "var(--heading-font-weight)" },
4407
+ { name: "--heading-xl-line-height", value: "var(--line-height-tightest)" },
4408
+ { name: "--heading-xl-letter-spacing", value: "var(--letter-spacing-normal)" }
4409
+ ]
4410
+ },
4411
+ {
4412
+ prefix: "--heading-lg",
4413
+ entries: [
4414
+ { name: "--heading-lg-font-family", value: "var(--heading-font-family)" },
4415
+ { name: "--heading-lg-desktop-font-size", value: "calc(var(--heading-scale-base) * pow(var(--heading-scale-ratio), 1) * 1rem)" },
4416
+ { 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))" },
4417
+ { 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))" },
4418
+ { name: "--heading-lg-font-size", value: "var(--heading-lg-desktop-font-size)" },
4419
+ { name: "--heading-lg-font-weight", value: "var(--heading-font-weight)" },
4420
+ { name: "--heading-lg-line-height", value: "var(--line-height-tightest)" },
4421
+ { name: "--heading-lg-letter-spacing", value: "var(--letter-spacing-normal)" }
4422
+ ]
4423
+ },
4424
+ {
4425
+ prefix: "--heading-md",
4426
+ entries: [
4427
+ { name: "--heading-md-font-family", value: "var(--heading-font-family)" },
4428
+ { name: "--heading-md-desktop-font-size", value: "calc(var(--heading-scale-base) * 1rem)" },
4429
+ { 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))" },
4430
+ { 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))" },
4431
+ { name: "--heading-md-font-size", value: "var(--heading-md-desktop-font-size)" },
4432
+ { name: "--heading-md-font-weight", value: "var(--heading-font-weight)" },
4433
+ { name: "--heading-md-line-height", value: "var(--line-height-tighter)" },
4434
+ { name: "--heading-md-letter-spacing", value: "var(--letter-spacing-normal)" }
4435
+ ]
4436
+ },
4437
+ {
4438
+ prefix: "--heading-sm",
4439
+ entries: [
4440
+ { name: "--heading-sm-font-family", value: "var(--font-sans)" },
4441
+ { name: "--heading-sm-desktop-font-size", value: "calc(var(--heading-scale-base) * pow(var(--heading-scale-ratio), -1) * 1rem)" },
4442
+ { 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))" },
4443
+ { 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))" },
4444
+ { name: "--heading-sm-font-size", value: "var(--heading-sm-desktop-font-size)" },
4445
+ { name: "--heading-sm-font-weight", value: "var(--heading-font-weight)" },
4446
+ { name: "--heading-sm-line-height", value: "var(--line-height-tighter)" },
4447
+ { name: "--heading-sm-letter-spacing", value: "var(--letter-spacing-normal)" }
4448
+ ]
4449
+ },
4450
+ {
4451
+ prefix: "--heading-xs",
4452
+ entries: [
4453
+ { name: "--heading-xs-font-family", value: "var(--font-sans)" },
4454
+ { name: "--heading-xs-desktop-font-size", value: "calc(var(--heading-scale-base) * pow(var(--heading-scale-ratio), -2) * 1rem)" },
4455
+ { 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))" },
4456
+ { 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))" },
4457
+ { name: "--heading-xs-font-size", value: "var(--heading-xs-desktop-font-size)" },
4458
+ { name: "--heading-xs-font-weight", value: "var(--heading-font-weight)" },
4459
+ { name: "--heading-xs-line-height", value: "var(--line-height-tight)" },
4460
+ { name: "--heading-xs-letter-spacing", value: "var(--letter-spacing-normal)" }
4461
+ ]
4462
+ },
4463
+ {
4464
+ prefix: "--heading-2xs",
4465
+ entries: [
4466
+ { name: "--heading-2xs-font-family", value: "var(--font-sans)" },
4467
+ { name: "--heading-2xs-desktop-font-size", value: "calc(var(--heading-scale-base) * pow(var(--heading-scale-ratio), -3) * 1rem)" },
4468
+ { 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))" },
4469
+ { 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))" },
4470
+ { name: "--heading-2xs-font-size", value: "var(--heading-2xs-desktop-font-size)" },
4471
+ { name: "--heading-2xs-font-weight", value: "var(--heading-font-weight)" },
4472
+ { name: "--heading-2xs-line-height", value: "var(--line-height-tight)" },
4473
+ { name: "--heading-2xs-letter-spacing", value: "var(--letter-spacing-normal)" }
4474
+ ]
4475
+ }
4476
+ ]
4477
+ },
4478
+ {
4479
+ usage: "body",
4480
+ comment: "Body: interface text and short copy",
4481
+ follows: "heading",
4482
+ settings: [
4483
+ { name: "--body-font-family", value: "var(--font-sans)" },
4484
+ { name: "--body-font-weight", value: "var(--font-weight-normal)" },
4485
+ { name: "--body-scale-base", value: "1" },
4486
+ { name: "--body-scale-ratio", value: "1.125" }
4487
+ ],
4488
+ steps: [
4489
+ {
4490
+ prefix: "--body-2xl",
4491
+ entries: [
4492
+ { name: "--body-2xl-font-family", value: "var(--body-font-family)" },
4493
+ { name: "--body-2xl-desktop-font-size", value: "calc(var(--body-scale-base) * pow(var(--body-scale-ratio), 3) * 1rem)" },
4494
+ { 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))" },
4495
+ { 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))" },
4496
+ { name: "--body-2xl-font-size", value: "var(--body-2xl-desktop-font-size)" },
4497
+ { name: "--body-2xl-font-weight", value: "var(--body-font-weight)" },
4498
+ { name: "--body-2xl-line-height", value: "var(--line-height-tighter)" },
4499
+ { name: "--body-2xl-letter-spacing", value: "var(--letter-spacing-normal)" }
4500
+ ]
4501
+ },
4502
+ {
4503
+ prefix: "--body-xl",
4504
+ entries: [
4505
+ { name: "--body-xl-font-family", value: "var(--body-font-family)" },
4506
+ { name: "--body-xl-desktop-font-size", value: "calc(var(--body-scale-base) * pow(var(--body-scale-ratio), 2) * 1rem)" },
4507
+ { 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))" },
4508
+ { 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))" },
4509
+ { name: "--body-xl-font-size", value: "var(--body-xl-desktop-font-size)" },
4510
+ { name: "--body-xl-font-weight", value: "var(--body-font-weight)" },
4511
+ { name: "--body-xl-line-height", value: "var(--line-height-tighter)" },
4512
+ { name: "--body-xl-letter-spacing", value: "var(--letter-spacing-normal)" }
4513
+ ]
4514
+ },
4515
+ {
4516
+ prefix: "--body-lg",
4517
+ entries: [
4518
+ { name: "--body-lg-font-family", value: "var(--body-font-family)" },
4519
+ { name: "--body-lg-desktop-font-size", value: "calc(var(--body-scale-base) * pow(var(--body-scale-ratio), 1) * 1rem)" },
4520
+ { 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))" },
4521
+ { 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))" },
4522
+ { name: "--body-lg-font-size", value: "var(--body-lg-desktop-font-size)" },
4523
+ { name: "--body-lg-font-weight", value: "var(--body-font-weight)" },
4524
+ { name: "--body-lg-line-height", value: "var(--line-height-tight)" },
4525
+ { name: "--body-lg-letter-spacing", value: "var(--letter-spacing-normal)" }
4526
+ ]
4527
+ },
4528
+ {
4529
+ prefix: "--body-md",
4530
+ entries: [
4531
+ { name: "--body-md-font-family", value: "var(--body-font-family)" },
4532
+ { name: "--body-md-desktop-font-size", value: "calc(var(--body-scale-base) * 1rem)" },
4533
+ { 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))" },
4534
+ { 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))" },
4535
+ { name: "--body-md-font-size", value: "var(--body-md-desktop-font-size)" },
4536
+ { name: "--body-md-font-weight", value: "var(--body-font-weight)" },
4537
+ { name: "--body-md-line-height", value: "var(--line-height-normal)" },
4538
+ { name: "--body-md-letter-spacing", value: "var(--letter-spacing-normal)" }
4539
+ ]
4540
+ },
4541
+ {
4542
+ prefix: "--body-sm",
4543
+ entries: [
4544
+ { name: "--body-sm-font-family", value: "var(--body-font-family)" },
4545
+ { name: "--body-sm-desktop-font-size", value: "calc(var(--body-scale-base) * pow(var(--body-scale-ratio), -1) * 1rem)" },
4546
+ { 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))" },
4547
+ { 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))" },
4548
+ { name: "--body-sm-font-size", value: "var(--body-sm-desktop-font-size)" },
4549
+ { name: "--body-sm-font-weight", value: "var(--body-font-weight)" },
4550
+ { name: "--body-sm-line-height", value: "var(--line-height-tight)" },
4551
+ { name: "--body-sm-letter-spacing", value: "var(--letter-spacing-normal)" }
4552
+ ]
4553
+ },
4554
+ {
4555
+ prefix: "--body-xs",
4556
+ entries: [
4557
+ { name: "--body-xs-font-family", value: "var(--body-font-family)" },
4558
+ { name: "--body-xs-desktop-font-size", value: "calc(var(--body-scale-base) * pow(var(--body-scale-ratio), -2) * 1rem)" },
4559
+ { 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))" },
4560
+ { 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))" },
4561
+ { name: "--body-xs-font-size", value: "var(--body-xs-desktop-font-size)" },
4562
+ { name: "--body-xs-font-weight", value: "var(--body-font-weight)" },
4563
+ { name: "--body-xs-line-height", value: "var(--line-height-tight)" },
4564
+ { name: "--body-xs-letter-spacing", value: "var(--letter-spacing-normal)" }
4565
+ ]
4566
+ },
4567
+ {
4568
+ prefix: "--body-2xs",
4569
+ entries: [
4570
+ { name: "--body-2xs-font-family", value: "var(--body-font-family)" },
4571
+ { name: "--body-2xs-desktop-font-size", value: "calc(var(--body-scale-base) * pow(var(--body-scale-ratio), -3) * 1rem)" },
4572
+ { 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))" },
4573
+ { 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))" },
4574
+ { name: "--body-2xs-font-size", value: "var(--body-2xs-desktop-font-size)" },
4575
+ { name: "--body-2xs-font-weight", value: "var(--body-font-weight)" },
4576
+ { name: "--body-2xs-line-height", value: "var(--line-height-tight)" },
4577
+ { name: "--body-2xs-letter-spacing", value: "var(--letter-spacing-normal)" }
4578
+ ]
4579
+ }
4580
+ ]
4581
+ },
4582
+ {
4583
+ usage: "code",
4584
+ comment: "Code: code blocks and inline code",
4585
+ follows: "body",
4586
+ settings: [
4587
+ { name: "--code-font-family", value: "var(--font-mono)" },
4588
+ { name: "--code-font-weight", value: "var(--font-weight-normal)" },
4589
+ { name: "--code-scale-base", value: "0.875" },
4590
+ { name: "--code-scale-ratio", value: "1.125" }
4591
+ ],
4592
+ steps: [
4593
+ {
4594
+ prefix: "--code-2xl",
4595
+ entries: [
4596
+ { name: "--code-2xl-font-family", value: "var(--code-font-family)" },
4597
+ { name: "--code-2xl-desktop-font-size", value: "calc(var(--code-scale-base) * pow(var(--code-scale-ratio), 3) * 1rem)" },
4598
+ { 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))" },
4599
+ { 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))" },
4600
+ { name: "--code-2xl-font-size", value: "var(--code-2xl-desktop-font-size)" },
4601
+ { name: "--code-2xl-font-weight", value: "var(--code-font-weight)" },
4602
+ { name: "--code-2xl-line-height", value: "var(--line-height-normal)" },
4603
+ { name: "--code-2xl-letter-spacing", value: "var(--letter-spacing-normal)" }
4604
+ ]
4605
+ },
4606
+ {
4607
+ prefix: "--code-xl",
4608
+ entries: [
4609
+ { name: "--code-xl-font-family", value: "var(--code-font-family)" },
4610
+ { name: "--code-xl-desktop-font-size", value: "calc(var(--code-scale-base) * pow(var(--code-scale-ratio), 2) * 1rem)" },
4611
+ { 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))" },
4612
+ { 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))" },
4613
+ { name: "--code-xl-font-size", value: "var(--code-xl-desktop-font-size)" },
4614
+ { name: "--code-xl-font-weight", value: "var(--code-font-weight)" },
4615
+ { name: "--code-xl-line-height", value: "var(--line-height-normal)" },
4616
+ { name: "--code-xl-letter-spacing", value: "var(--letter-spacing-normal)" }
4617
+ ]
4618
+ },
4619
+ {
4620
+ prefix: "--code-lg",
4621
+ entries: [
4622
+ { name: "--code-lg-font-family", value: "var(--code-font-family)" },
4623
+ { name: "--code-lg-desktop-font-size", value: "calc(var(--code-scale-base) * pow(var(--code-scale-ratio), 1) * 1rem)" },
4624
+ { 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))" },
4625
+ { 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))" },
4626
+ { name: "--code-lg-font-size", value: "var(--code-lg-desktop-font-size)" },
4627
+ { name: "--code-lg-font-weight", value: "var(--code-font-weight)" },
4628
+ { name: "--code-lg-line-height", value: "var(--line-height-normal)" },
4629
+ { name: "--code-lg-letter-spacing", value: "var(--letter-spacing-normal)" }
4630
+ ]
4631
+ },
4632
+ {
4633
+ prefix: "--code-md",
4634
+ entries: [
4635
+ { name: "--code-md-font-family", value: "var(--code-font-family)" },
4636
+ { name: "--code-md-desktop-font-size", value: "calc(var(--code-scale-base) * 1rem)" },
4637
+ { 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))" },
4638
+ { 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))" },
4639
+ { name: "--code-md-font-size", value: "var(--code-md-desktop-font-size)" },
4640
+ { name: "--code-md-font-weight", value: "var(--code-font-weight)" },
4641
+ { name: "--code-md-line-height", value: "var(--line-height-normal)" },
4642
+ { name: "--code-md-letter-spacing", value: "var(--letter-spacing-normal)" }
4643
+ ]
4644
+ },
4645
+ {
4646
+ prefix: "--code-sm",
4647
+ entries: [
4648
+ { name: "--code-sm-font-family", value: "var(--code-font-family)" },
4649
+ { name: "--code-sm-desktop-font-size", value: "calc(var(--code-scale-base) * pow(var(--code-scale-ratio), -1) * 1rem)" },
4650
+ { 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))" },
4651
+ { 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))" },
4652
+ { name: "--code-sm-font-size", value: "var(--code-sm-desktop-font-size)" },
4653
+ { name: "--code-sm-font-weight", value: "var(--code-font-weight)" },
4654
+ { name: "--code-sm-line-height", value: "var(--line-height-normal)" },
4655
+ { name: "--code-sm-letter-spacing", value: "var(--letter-spacing-normal)" }
4656
+ ]
4657
+ },
4658
+ {
4659
+ prefix: "--code-xs",
4660
+ entries: [
4661
+ { name: "--code-xs-font-family", value: "var(--code-font-family)" },
4662
+ { name: "--code-xs-desktop-font-size", value: "calc(var(--code-scale-base) * pow(var(--code-scale-ratio), -2) * 1rem)" },
4663
+ { 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))" },
4664
+ { 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))" },
4665
+ { name: "--code-xs-font-size", value: "var(--code-xs-desktop-font-size)" },
4666
+ { name: "--code-xs-font-weight", value: "var(--code-font-weight)" },
4667
+ { name: "--code-xs-line-height", value: "var(--line-height-normal)" },
4668
+ { name: "--code-xs-letter-spacing", value: "var(--letter-spacing-normal)" }
4669
+ ]
4670
+ },
4671
+ {
4672
+ prefix: "--code-2xs",
4673
+ entries: [
4674
+ { name: "--code-2xs-font-family", value: "var(--code-font-family)" },
4675
+ { name: "--code-2xs-desktop-font-size", value: "calc(var(--code-scale-base) * pow(var(--code-scale-ratio), -3) * 1rem)" },
4676
+ { 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))" },
4677
+ { 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))" },
4678
+ { name: "--code-2xs-font-size", value: "var(--code-2xs-desktop-font-size)" },
4679
+ { name: "--code-2xs-font-weight", value: "var(--code-font-weight)" },
4680
+ { name: "--code-2xs-line-height", value: "var(--line-height-normal)" },
4681
+ { name: "--code-2xs-letter-spacing", value: "var(--letter-spacing-normal)" }
4682
+ ]
4683
+ }
4684
+ ]
4685
+ },
4686
+ {
4687
+ usage: "editorial",
4688
+ comment: "Editorial: the long-reading role",
4689
+ follows: "code",
4690
+ settings: [
4691
+ { name: "--editorial-font-family", value: "var(--font-editorial)" },
4692
+ { name: "--editorial-font-weight", value: "var(--font-weight-normal)" },
4693
+ { name: "--editorial-scale-base", value: "1" },
4694
+ { name: "--editorial-scale-ratio", value: "1.125" }
4695
+ ],
4696
+ steps: [
4697
+ {
4698
+ prefix: "--editorial-2xl",
4699
+ entries: [
4700
+ { name: "--editorial-2xl-font-family", value: "var(--editorial-font-family)" },
4701
+ { name: "--editorial-2xl-desktop-font-size", value: "calc(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), 3) * 1rem)" },
4702
+ { 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))" },
4703
+ { 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))" },
4704
+ { name: "--editorial-2xl-font-size", value: "var(--editorial-2xl-desktop-font-size)" },
4705
+ { name: "--editorial-2xl-font-weight", value: "var(--editorial-font-weight)" },
4706
+ { name: "--editorial-2xl-line-height", value: "var(--line-height-tightest)" },
4707
+ { name: "--editorial-2xl-letter-spacing", value: "var(--letter-spacing-normal)" }
4708
+ ]
4709
+ },
4710
+ {
4711
+ prefix: "--editorial-xl",
4712
+ entries: [
4713
+ { name: "--editorial-xl-font-family", value: "var(--editorial-font-family)" },
4714
+ { name: "--editorial-xl-desktop-font-size", value: "calc(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), 2) * 1rem)" },
4715
+ { 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))" },
4716
+ { 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))" },
4717
+ { name: "--editorial-xl-font-size", value: "var(--editorial-xl-desktop-font-size)" },
4718
+ { name: "--editorial-xl-font-weight", value: "var(--editorial-font-weight)" },
4719
+ { name: "--editorial-xl-line-height", value: "var(--line-height-tighter)" },
4720
+ { name: "--editorial-xl-letter-spacing", value: "var(--letter-spacing-normal)" }
4721
+ ]
4722
+ },
4723
+ {
4724
+ prefix: "--editorial-lg",
4725
+ entries: [
4726
+ { name: "--editorial-lg-font-family", value: "var(--editorial-font-family)" },
4727
+ { name: "--editorial-lg-desktop-font-size", value: "calc(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), 1) * 1rem)" },
4728
+ { 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))" },
4729
+ { 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))" },
4730
+ { name: "--editorial-lg-font-size", value: "var(--editorial-lg-desktop-font-size)" },
4731
+ { name: "--editorial-lg-font-weight", value: "var(--editorial-font-weight)" },
4732
+ { name: "--editorial-lg-line-height", value: "var(--line-height-tight)" },
4733
+ { name: "--editorial-lg-letter-spacing", value: "var(--letter-spacing-normal)" }
4734
+ ]
4735
+ },
4736
+ {
4737
+ prefix: "--editorial-md",
4738
+ entries: [
4739
+ { name: "--editorial-md-font-family", value: "var(--editorial-font-family)" },
4740
+ { name: "--editorial-md-desktop-font-size", value: "calc(var(--editorial-scale-base) * 1rem)" },
4741
+ { 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))" },
4742
+ { 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))" },
4743
+ { name: "--editorial-md-font-size", value: "var(--editorial-md-desktop-font-size)" },
4744
+ { name: "--editorial-md-font-weight", value: "var(--editorial-font-weight)" },
4745
+ { name: "--editorial-md-line-height", value: "var(--line-height-normal)" },
4746
+ { name: "--editorial-md-letter-spacing", value: "var(--letter-spacing-normal)" }
4747
+ ]
4748
+ },
4749
+ {
4750
+ prefix: "--editorial-sm",
4751
+ entries: [
4752
+ { name: "--editorial-sm-font-family", value: "var(--editorial-font-family)" },
4753
+ { name: "--editorial-sm-desktop-font-size", value: "calc(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), -1) * 1rem)" },
4754
+ { 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))" },
4755
+ { 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))" },
4756
+ { name: "--editorial-sm-font-size", value: "var(--editorial-sm-desktop-font-size)" },
4757
+ { name: "--editorial-sm-font-weight", value: "var(--editorial-font-weight)" },
4758
+ { name: "--editorial-sm-line-height", value: "var(--line-height-tight)" },
4759
+ { name: "--editorial-sm-letter-spacing", value: "var(--letter-spacing-normal)" }
4760
+ ]
4761
+ },
4762
+ {
4763
+ prefix: "--editorial-xs",
4764
+ entries: [
4765
+ { name: "--editorial-xs-font-family", value: "var(--editorial-font-family)" },
4766
+ { name: "--editorial-xs-desktop-font-size", value: "calc(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), -2) * 1rem)" },
4767
+ { 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))" },
4768
+ { 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))" },
4769
+ { name: "--editorial-xs-font-size", value: "var(--editorial-xs-desktop-font-size)" },
4770
+ { name: "--editorial-xs-font-weight", value: "var(--editorial-font-weight)" },
4771
+ { name: "--editorial-xs-line-height", value: "var(--line-height-tighter)" },
4772
+ { name: "--editorial-xs-letter-spacing", value: "var(--letter-spacing-normal)" }
4773
+ ]
4774
+ },
4775
+ {
4776
+ prefix: "--editorial-2xs",
4777
+ entries: [
4778
+ { name: "--editorial-2xs-font-family", value: "var(--editorial-font-family)" },
4779
+ { name: "--editorial-2xs-desktop-font-size", value: "calc(var(--editorial-scale-base) * pow(var(--editorial-scale-ratio), -3) * 1rem)" },
4780
+ { 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))" },
4781
+ { 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))" },
4782
+ { name: "--editorial-2xs-font-size", value: "var(--editorial-2xs-desktop-font-size)" },
4783
+ { name: "--editorial-2xs-font-weight", value: "var(--editorial-font-weight)" },
4784
+ { name: "--editorial-2xs-line-height", value: "var(--line-height-tighter)" },
4785
+ { name: "--editorial-2xs-letter-spacing", value: "var(--letter-spacing-normal)" }
4786
+ ]
4787
+ }
4788
+ ]
4789
+ }
4790
+ ];
4791
+ var EYEBROW = [
4792
+ { name: "--eyebrow-font-family", value: "var(--body-font-family)" },
4793
+ { name: "--eyebrow-desktop-font-size", value: "var(--body-sm-desktop-font-size)" },
4794
+ { name: "--eyebrow-tablet-font-size", value: "var(--body-sm-tablet-font-size)" },
4795
+ { name: "--eyebrow-phone-font-size", value: "var(--body-sm-phone-font-size)" },
4796
+ { name: "--eyebrow-font-size", value: "var(--eyebrow-desktop-font-size)" },
4797
+ { name: "--eyebrow-font-weight", value: "var(--body-font-weight)" },
4798
+ { name: "--eyebrow-line-height", value: "var(--line-height-normal)" },
4799
+ { name: "--eyebrow-letter-spacing", value: "var(--letter-spacing-normal)" },
4800
+ { name: "--eyebrow-text-transform", value: "none" }
4801
+ ];
4802
+ var MEDIA = [
4803
+ {
4804
+ query: "(max-width: 768px)",
4805
+ entries: [
4806
+ { name: "--display-2xl-font-size", value: "var(--display-2xl-tablet-font-size)" },
4807
+ { name: "--display-xl-font-size", value: "var(--display-xl-tablet-font-size)" },
4808
+ { name: "--display-lg-font-size", value: "var(--display-lg-tablet-font-size)" },
4809
+ { name: "--display-md-font-size", value: "var(--display-md-tablet-font-size)" },
4810
+ { name: "--display-sm-font-size", value: "var(--display-sm-tablet-font-size)" },
4811
+ { name: "--display-xs-font-size", value: "var(--display-xs-tablet-font-size)" },
4812
+ { name: "--display-2xs-font-size", value: "var(--display-2xs-tablet-font-size)" },
4813
+ { name: "--heading-2xl-font-size", value: "var(--heading-2xl-tablet-font-size)" },
4814
+ { name: "--heading-xl-font-size", value: "var(--heading-xl-tablet-font-size)" },
4815
+ { name: "--heading-lg-font-size", value: "var(--heading-lg-tablet-font-size)" },
4816
+ { name: "--heading-md-font-size", value: "var(--heading-md-tablet-font-size)" },
4817
+ { name: "--heading-sm-font-size", value: "var(--heading-sm-tablet-font-size)" },
4818
+ { name: "--heading-xs-font-size", value: "var(--heading-xs-tablet-font-size)" },
4819
+ { name: "--heading-2xs-font-size", value: "var(--heading-2xs-tablet-font-size)" },
4820
+ { name: "--body-2xl-font-size", value: "var(--body-2xl-tablet-font-size)" },
4821
+ { name: "--body-xl-font-size", value: "var(--body-xl-tablet-font-size)" },
4822
+ { name: "--body-lg-font-size", value: "var(--body-lg-tablet-font-size)" },
4823
+ { name: "--body-md-font-size", value: "var(--body-md-tablet-font-size)" },
4824
+ { name: "--body-sm-font-size", value: "var(--body-sm-tablet-font-size)" },
4825
+ { name: "--body-xs-font-size", value: "var(--body-xs-tablet-font-size)" },
4826
+ { name: "--body-2xs-font-size", value: "var(--body-2xs-tablet-font-size)" },
4827
+ { name: "--editorial-2xl-font-size", value: "var(--editorial-2xl-tablet-font-size)" },
4828
+ { name: "--editorial-xl-font-size", value: "var(--editorial-xl-tablet-font-size)" },
4829
+ { name: "--editorial-lg-font-size", value: "var(--editorial-lg-tablet-font-size)" },
4830
+ { name: "--editorial-md-font-size", value: "var(--editorial-md-tablet-font-size)" },
4831
+ { name: "--editorial-sm-font-size", value: "var(--editorial-sm-tablet-font-size)" },
4832
+ { name: "--editorial-xs-font-size", value: "var(--editorial-xs-tablet-font-size)" },
4833
+ { name: "--editorial-2xs-font-size", value: "var(--editorial-2xs-tablet-font-size)" },
4834
+ { name: "--code-2xl-font-size", value: "var(--code-2xl-tablet-font-size)" },
4835
+ { name: "--code-xl-font-size", value: "var(--code-xl-tablet-font-size)" },
4836
+ { name: "--code-lg-font-size", value: "var(--code-lg-tablet-font-size)" },
4837
+ { name: "--code-md-font-size", value: "var(--code-md-tablet-font-size)" },
4838
+ { name: "--code-sm-font-size", value: "var(--code-sm-tablet-font-size)" },
4839
+ { name: "--code-xs-font-size", value: "var(--code-xs-tablet-font-size)" },
4840
+ { name: "--code-2xs-font-size", value: "var(--code-2xs-tablet-font-size)" },
4841
+ { name: "--eyebrow-font-size", value: "var(--eyebrow-tablet-font-size)" }
4842
+ ]
4843
+ },
4844
+ {
4845
+ query: "(max-width: 480px)",
4846
+ entries: [
4847
+ { name: "--display-2xl-font-size", value: "var(--display-2xl-phone-font-size)" },
4848
+ { name: "--display-xl-font-size", value: "var(--display-xl-phone-font-size)" },
4849
+ { name: "--display-lg-font-size", value: "var(--display-lg-phone-font-size)" },
4850
+ { name: "--display-md-font-size", value: "var(--display-md-phone-font-size)" },
4851
+ { name: "--display-sm-font-size", value: "var(--display-sm-phone-font-size)" },
4852
+ { name: "--display-xs-font-size", value: "var(--display-xs-phone-font-size)" },
4853
+ { name: "--display-2xs-font-size", value: "var(--display-2xs-phone-font-size)" },
4854
+ { name: "--heading-2xl-font-size", value: "var(--heading-2xl-phone-font-size)" },
4855
+ { name: "--heading-xl-font-size", value: "var(--heading-xl-phone-font-size)" },
4856
+ { name: "--heading-lg-font-size", value: "var(--heading-lg-phone-font-size)" },
4857
+ { name: "--heading-md-font-size", value: "var(--heading-md-phone-font-size)" },
4858
+ { name: "--heading-sm-font-size", value: "var(--heading-sm-phone-font-size)" },
4859
+ { name: "--heading-xs-font-size", value: "var(--heading-xs-phone-font-size)" },
4860
+ { name: "--heading-2xs-font-size", value: "var(--heading-2xs-phone-font-size)" },
4861
+ { name: "--body-2xl-font-size", value: "var(--body-2xl-phone-font-size)" },
4862
+ { name: "--body-xl-font-size", value: "var(--body-xl-phone-font-size)" },
4863
+ { name: "--body-lg-font-size", value: "var(--body-lg-phone-font-size)" },
4864
+ { name: "--body-md-font-size", value: "var(--body-md-phone-font-size)" },
4865
+ { name: "--body-sm-font-size", value: "var(--body-sm-phone-font-size)" },
4866
+ { name: "--body-xs-font-size", value: "var(--body-xs-phone-font-size)" },
4867
+ { name: "--body-2xs-font-size", value: "var(--body-2xs-phone-font-size)" },
4868
+ { name: "--editorial-2xl-font-size", value: "var(--editorial-2xl-phone-font-size)" },
4869
+ { name: "--editorial-xl-font-size", value: "var(--editorial-xl-phone-font-size)" },
4870
+ { name: "--editorial-lg-font-size", value: "var(--editorial-lg-phone-font-size)" },
4871
+ { name: "--editorial-md-font-size", value: "var(--editorial-md-phone-font-size)" },
4872
+ { name: "--editorial-sm-font-size", value: "var(--editorial-sm-phone-font-size)" },
4873
+ { name: "--editorial-xs-font-size", value: "var(--editorial-xs-phone-font-size)" },
4874
+ { name: "--editorial-2xs-font-size", value: "var(--editorial-2xs-phone-font-size)" },
4875
+ { name: "--code-2xl-font-size", value: "var(--code-2xl-phone-font-size)" },
4876
+ { name: "--code-xl-font-size", value: "var(--code-xl-phone-font-size)" },
4877
+ { name: "--code-lg-font-size", value: "var(--code-lg-phone-font-size)" },
4878
+ { name: "--code-md-font-size", value: "var(--code-md-phone-font-size)" },
4879
+ { name: "--code-sm-font-size", value: "var(--code-sm-phone-font-size)" },
4880
+ { name: "--code-xs-font-size", value: "var(--code-xs-phone-font-size)" },
4881
+ { name: "--code-2xs-font-size", value: "var(--code-2xs-phone-font-size)" },
4882
+ { name: "--eyebrow-font-size", value: "var(--eyebrow-phone-font-size)" }
4883
+ ]
4884
+ }
4885
+ ];
4886
+ var DECLARED = new Map(
4887
+ USAGES.flatMap((u) => u.steps.flatMap((s) => s.entries)).concat(EYEBROW).map((e) => [e.name, e.value])
4888
+ );
4889
+ var TYPE_PRIMITIVES = ["--letter-spacing-", "--line-height-", "--font-weight-", "--font-size-", "--font-"];
4890
+ var tokensCssMigration_2026_10_08_typeScales = {
4891
+ id: "2026-10-08-type-scales",
4892
+ kind: "breaking",
4893
+ 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-*",
4894
+ apply(css) {
4895
+ let out = css;
4896
+ for (const [from, to] of RENAMES14) out = renameToken2(out, from, to);
4897
+ const values = collectTokenValues(out);
4898
+ for (const step of CARRIED) {
4899
+ const size = values.get(`${step.prefix}-font-size`);
4900
+ if (size === void 0) continue;
4901
+ const desktop = `${step.prefix}-desktop-font-size`;
4902
+ const edited = size !== step.size;
4903
+ const rem = edited ? literalRem(size) : null;
4904
+ out = ensureScale(out, {
4905
+ anchorPrefixes: [`${step.prefix}-font-family`, `${step.prefix}-`],
4906
+ entries: [
4907
+ { name: desktop, value: edited ? size : DECLARED.get(desktop) },
4908
+ ...rem === null ? [] : editedSizes(step.prefix, rem)
4909
+ ]
4910
+ });
4911
+ out = setTokenValue(out, `${step.prefix}-font-size`, `var(${desktop})`);
4912
+ for (const link of step.links) out = setTokenValue(out, link.name, link.to, { from: link.from });
4913
+ }
4914
+ out = ensureScale(out, {
4915
+ sectionComment: "Text styles: the compression that sets each tablet and phone size",
4916
+ anchorPrefixes: ["--type-", ...TYPE_PRIMITIVES],
4917
+ entries: COMPRESSION
4918
+ });
4919
+ for (const block of USAGES) {
4920
+ const fallback = [`--${block.usage}-scale-`, `--${block.follows}-`, "--type-"];
4921
+ out = ensureScale(out, { sectionComment: block.comment, anchorPrefixes: fallback, entries: block.settings });
4922
+ block.steps.forEach((step, i) => {
4923
+ const above = block.steps.slice(0, i).reverse().map((s) => `${s.prefix}-`);
4924
+ out = ensureScale(out, {
4925
+ anchorPrefixes: [
4926
+ `${step.prefix}-desktop-font-size`,
4927
+ `${step.prefix}-font-family`,
4928
+ `${step.prefix}-`,
4929
+ ...above,
4930
+ ...fallback
4931
+ ],
4932
+ entries: step.entries
4933
+ });
4934
+ });
4935
+ }
4936
+ out = ensureScale(out, {
4937
+ anchorPrefixes: ["--eyebrow-desktop-font-size", "--eyebrow-font-family", "--eyebrow-", "--editorial-"],
4938
+ entries: EYEBROW
4939
+ });
4940
+ for (const media of MEDIA) out = appendMediaBlock(out, media.query, media.entries);
4941
+ return out;
4942
+ }
4943
+ };
4944
+
4029
4945
  // vite-plugin/tokensCssMigrations/index.ts
4030
4946
  var TOKENS_CSS_MIGRATIONS = [
4031
4947
  tokensCssMigration_2026_05_29_typographyScaleAdditions,
@@ -4044,7 +4960,8 @@ var TOKENS_CSS_MIGRATIONS = [
4044
4960
  tokensCssMigration_2026_09_01_scrimRename,
4045
4961
  tokensCssMigration_2026_09_01_tintScale,
4046
4962
  tokensCssMigration_2026_09_20_scrimColorAndOpacity,
4047
- tokensCssMigration_2026_09_21_tintColorAndOpacity
4963
+ tokensCssMigration_2026_09_21_tintColorAndOpacity,
4964
+ tokensCssMigration_2026_10_08_typeScales
4048
4965
  ];
4049
4966
  function runTokensCssMigrations(css) {
4050
4967
  return foldMigrations(css, () => true);