@repobit/dex-system-design 0.23.95 → 0.23.97

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 (84) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/package.json +4 -4
  3. package/src/blog/assets/articles/fbi-crypto-scam-1.jpeg +0 -0
  4. package/src/blog/assets/articles/fbi-crypto-scam-cover.png +0 -0
  5. package/src/blog/assets/fonts/IBMPlexSans-Bold.woff2 +0 -0
  6. package/src/blog/assets/fonts/IBMPlexSans-BoldItalic.woff2 +0 -0
  7. package/src/blog/assets/fonts/IBMPlexSans-Italic.woff2 +0 -0
  8. package/src/blog/assets/fonts/IBMPlexSans-Light.woff2 +0 -0
  9. package/src/blog/assets/fonts/IBMPlexSans-LightItalic.woff2 +0 -0
  10. package/src/blog/assets/fonts/IBMPlexSans-Medium.woff2 +0 -0
  11. package/src/blog/assets/fonts/IBMPlexSans-MediumItalic.woff2 +0 -0
  12. package/src/blog/assets/fonts/IBMPlexSans-Regular.woff2 +0 -0
  13. package/src/blog/assets/fonts/IBMPlexSans-SemiBold.woff2 +0 -0
  14. package/src/blog/assets/fonts/IBMPlexSans-SemiBoldItalic.woff2 +0 -0
  15. package/src/blog/assets/fonts/IBMPlexSansCondensed-Bold.woff2 +0 -0
  16. package/src/blog/assets/fonts/IBMPlexSansCondensed-BoldItalic.woff2 +0 -0
  17. package/src/blog/assets/fonts/IBMPlexSansCondensed-Italic.woff2 +0 -0
  18. package/src/blog/assets/fonts/IBMPlexSansCondensed-Light.woff2 +0 -0
  19. package/src/blog/assets/fonts/IBMPlexSansCondensed-LightItalic.woff2 +0 -0
  20. package/src/blog/assets/fonts/IBMPlexSansCondensed-Medium.woff2 +0 -0
  21. package/src/blog/assets/fonts/IBMPlexSansCondensed-MediumItalic.woff2 +0 -0
  22. package/src/blog/assets/fonts/IBMPlexSansCondensed-Regular.woff2 +0 -0
  23. package/src/blog/assets/fonts/IBMPlexSansCondensed-SemiBold.woff2 +0 -0
  24. package/src/blog/assets/fonts/IBMPlexSansCondensed-SemiBoldItalic.woff2 +0 -0
  25. package/src/blog/assets/global-scam-intelligence-report-2026.png +0 -0
  26. package/src/blog/assets/psd-4.jpg +0 -0
  27. package/src/blog/src/articles/FBI warns of crypto investment scam that sends couriers to collect victims' cash-editedAB.docx +0 -0
  28. package/src/blog/src/articles/FBI-crypto-scam-courier-cash.png +0 -0
  29. package/src/blog/src/articles/fbi-crypto-scam.js +324 -0
  30. package/src/blog/src/articles/~$I warns of crypto investment scam that sends couriers to collect victims' cash-editedAB.docx +0 -0
  31. package/src/blog/src/atoms/blog-abstract.js +51 -0
  32. package/src/blog/src/atoms/blog-atoms.stories.js +519 -0
  33. package/src/blog/src/atoms/blog-authors.js +70 -0
  34. package/src/blog/src/atoms/blog-avatar.js +44 -0
  35. package/src/blog/src/atoms/blog-blockquote.js +92 -0
  36. package/src/blog/src/atoms/blog-caption.js +31 -0
  37. package/src/blog/src/atoms/blog-code-block.js +89 -0
  38. package/src/blog/src/atoms/blog-dek.js +30 -0
  39. package/src/blog/src/atoms/blog-featured-image.js +65 -0
  40. package/src/blog/src/atoms/blog-heading.js +63 -0
  41. package/src/blog/src/atoms/blog-image.js +50 -0
  42. package/src/blog/src/atoms/blog-key-takeaways.js +101 -0
  43. package/src/blog/src/atoms/blog-link.js +68 -0
  44. package/src/blog/src/atoms/blog-meta.js +87 -0
  45. package/src/blog/src/atoms/blog-most-popular.js +146 -0
  46. package/src/blog/src/atoms/blog-newsletter-signup.js +342 -0
  47. package/src/blog/src/atoms/blog-paragraph.js +61 -0
  48. package/src/blog/src/atoms/blog-product-upsell.js +168 -0
  49. package/src/blog/src/atoms/blog-related-articles.js +326 -0
  50. package/src/blog/src/atoms/blog-related-label.js +30 -0
  51. package/src/blog/src/atoms/blog-report-promo.js +250 -0
  52. package/src/blog/src/atoms/blog-standout.js +78 -0
  53. package/src/blog/src/atoms/blog-subhead.js +32 -0
  54. package/src/blog/src/atoms/blog-table-of-contents.js +447 -0
  55. package/src/blog/src/atoms/blog-tag.js +86 -0
  56. package/src/blog/src/atoms/blog-title.js +31 -0
  57. package/src/blog/src/base/blog-element.js +10 -0
  58. package/src/blog/src/breakpoints.js +23 -0
  59. package/src/blog/src/content/blog-article.js +736 -0
  60. package/src/blog/src/content/blog-atoms-showcase.js +401 -0
  61. package/src/blog/src/content/blog-page-layout.js +73 -0
  62. package/src/blog/src/content/blog-pages.stories.js +101 -0
  63. package/src/blog/src/content/render-inline-content.js +18 -0
  64. package/src/blog/src/data/popular-articles.js +43 -0
  65. package/src/blog/src/data/related-articles.js +58 -0
  66. package/src/blog/src/index.js +104 -0
  67. package/src/blog/src/lib/article-toc.js +206 -0
  68. package/src/blog/src/lib/load-prism.js +23 -0
  69. package/src/blog/src/shell/blog-shell.js +31 -0
  70. package/src/blog/src/styles/prism-theme.js +65 -0
  71. package/src/blog/src/tokens/blog.js +406 -0
  72. package/src/blog/src/tokens/core.js +811 -0
  73. package/src/blog/src/tokens/fonts.css +241 -0
  74. package/src/blog/src/tokens/index.js +27 -0
  75. package/src/blog/src/tokens/legacy.js +58 -0
  76. package/src/blog/tokens/blog.js +406 -0
  77. package/src/blog/tokens/core.js +811 -0
  78. package/src/blog/tokens/fonts.css +241 -0
  79. package/src/blog/tokens/index.js +27 -0
  80. package/src/blog/tokens/legacy.js +58 -0
  81. package/src/blog/tokens.css +1512 -0
  82. package/src/blog/tokens.js +1 -0
  83. package/src/blog/vendor/prism/prism.css +120 -0
  84. package/src/blog/vendor/prism/prism.js +300 -0
@@ -0,0 +1,1512 @@
1
+ /* AUTO-GENERATED — edit tokens/*.js and run npm run build:tokens */
2
+ :root {
3
+ /* ================================
4
+ CORE TYPOGRAPHY TOKENS
5
+ ================================ */
6
+
7
+ --typography-fontFamily-sans: "IBM Plex Sans", system-ui, -apple-system,
8
+ BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
9
+ --typography-fontFamily-sans-condensed: "IBM Plex Sans Condensed", system-ui,
10
+ -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial,
11
+ sans-serif;
12
+ --typography-fontFamily-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular,
13
+ Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
14
+
15
+ --typography-fontSize-xxs: 0.6875rem; /* 11px */
16
+ --typography-fontSize-xs: 0.75rem; /* 12px */
17
+ --typography-fontSize-sm: 0.875rem; /* 14px */
18
+ --typography-fontSize-base: 1rem; /* 16px */
19
+ --typography-fontSize-lg: 1.125rem; /* 18px */
20
+ --typography-fontSize-xl: 1.25rem; /* 20px */
21
+ --typography-fontSize-2xl: 1.5rem; /* 24px */
22
+ --typography-fontSize-3xl: 2rem; /* 32px */
23
+ --typography-fontSize-4xl: 2.25rem; /* 36px */
24
+ --typography-fontSize-5xl: 3rem; /* 48px */
25
+ --typography-fontSize-6xl: 3.75rem; /* 60px */
26
+ --typography-fontSize-7xl: 4.5rem; /* 72px */
27
+ --typography-fontSize-8xl: 6rem; /* 96px */
28
+ --typography-fontSize-9xl: 8rem; /* 128px */
29
+
30
+ --typography-fontWeight-light: 300;
31
+ --typography-fontWeight-normal: 400;
32
+ --typography-fontWeight-medium: 500;
33
+ --typography-fontWeight-semibold: 600;
34
+ --typography-fontWeight-bold: 700;
35
+
36
+ --typography-lineHeight-none: 1;
37
+ --typography-lineHeight-tight: 1.25;
38
+ --typography-lineHeight-snug: 1.375;
39
+ --typography-lineHeight-normal: 1.5;
40
+ --typography-lineHeight-relaxed: 1.625;
41
+ --typography-lineHeight-loose: 2;
42
+
43
+ --typography-letterSpacing-tighter: -0.05em;
44
+ --typography-letterSpacing-tight: -0.025em;
45
+ --typography-letterSpacing-normal: 0em;
46
+ --typography-letterSpacing-wide: 0.025em;
47
+ --typography-letterSpacing-wider: 0.05em;
48
+ --typography-letterSpacing-widest: 0.1em;
49
+
50
+ /* =====================
51
+ COLORS (PRIMITIVE)
52
+ ====================== */
53
+ --color-blue-50: #f0f7ff;
54
+ --color-blue-100: #d6e8ff;
55
+ --color-blue-200: #9ec8ff;
56
+ --color-blue-300: #6babff;
57
+ --color-blue-400: #338bff;
58
+ --color-blue-500: #006dff;
59
+ --color-blue-600: #0059d6;
60
+ --color-blue-700: #0045ad;
61
+ --color-blue-800: #003385;
62
+ --color-blue-900: #00225c;
63
+ --color-blue-950: #001947;
64
+
65
+ --color-red-50: #fff0f0;
66
+ --color-red-100: #ffd6d6;
67
+ --color-red-200: #ff9e9e;
68
+ --color-red-300: #ff6b6b;
69
+ --color-red-400: #ff3333;
70
+ --color-red-500: #ff0000;
71
+ --color-red-600: #d60000;
72
+ --color-red-700: #ad0000;
73
+ --color-red-800: #850000;
74
+ --color-red-900: #5c0000;
75
+ --color-red-950: #470000;
76
+
77
+ --color-green-50: #edfdf1;
78
+ --color-green-100: #d1fadc;
79
+ --color-green-200: #9af4b4;
80
+ --color-green-300: #63ee8d;
81
+ --color-green-400: #2ce767;
82
+ --color-green-500: #15c14f;
83
+ --color-green-600: #12a641;
84
+ --color-green-700: #0e8532;
85
+ --color-green-800: #0b6a26;
86
+ --color-green-900: #084a1a;
87
+ --color-green-950: #063c14;
88
+
89
+ --color-yellow-50: #fffbf0;
90
+ --color-yellow-100: #fff5d6;
91
+ --color-yellow-200: #ffe89e;
92
+ --color-yellow-300: #ffdc6b;
93
+ --color-yellow-400: #ffcf33;
94
+ --color-yellow-500: #ffc400;
95
+ --color-yellow-600: #d6a000;
96
+ --color-yellow-700: #ad7f00;
97
+ --color-yellow-800: #855f00;
98
+ --color-yellow-900: #5c4000;
99
+ --color-yellow-950: #473100;
100
+
101
+ --color-orange-50: #fef7f1;
102
+ --color-orange-100: #ffe9d6;
103
+ --color-orange-200: #ffcb9e;
104
+ --color-orange-300: #ffaf6b;
105
+ --color-orange-400: #ff9133;
106
+ --color-orange-500: #ff7500;
107
+ --color-orange-600: #d66200;
108
+ --color-orange-700: #ad4f00;
109
+ --color-orange-800: #853d00;
110
+ --color-orange-900: #5c2a00;
111
+ --color-orange-950: #472100;
112
+
113
+ --color-neutral-0: #ffffff;
114
+ --color-neutral-25: #fafafa;
115
+ --color-neutral-50: #f1f2f3;
116
+ --color-neutral-100: #e1e3e5;
117
+ --color-neutral-200: #c5c9ce;
118
+ --color-neutral-300: #a6adb4;
119
+ --color-neutral-400: #88909b;
120
+ --color-neutral-500: #6c7580;
121
+ --color-neutral-600: #565e66;
122
+ --color-neutral-700: #41474d;
123
+ --color-neutral-800: #2c3035;
124
+ --color-neutral-900: #151719;
125
+ --color-neutral-950: #0c0d0e;
126
+ --color-neutral-1000: #000000;
127
+
128
+ /* =====================
129
+ COLORS (SEMANTIC)
130
+ ====================== */
131
+ --color-text-primary: var(--color-neutral-900);
132
+ --color-text-secondary: var(--color-neutral-600);
133
+ --color-text-muted: var(--color-neutral-500);
134
+ --color-text-inverse: var(--color-neutral-0);
135
+ --color-text-link: var(--color-blue-600);
136
+ --color-text-link-hover: var(--color-blue-700);
137
+
138
+ --color-surface: var(--color-neutral-0);
139
+ --color-surface-subtle: var(--color-neutral-50);
140
+ --color-surface-muted: var(--color-neutral-100);
141
+ --color-surface-inverse: var(--color-neutral-950);
142
+ --color-surface-brand: var(--color-blue-50);
143
+
144
+ --color-border-default: var(--color-neutral-300);
145
+ --color-border-subtle: var(--color-neutral-100);
146
+ --color-border-strong: var(--color-neutral-600);
147
+ --color-border-focus: var(--color-blue-500);
148
+
149
+ --color-interactive-primary: var(--color-blue-500);
150
+ --color-interactive-primary-hover: var(--color-blue-600);
151
+ --color-interactive-primary-active: var(--color-blue-700);
152
+
153
+ --color-feedback-error: var(--color-red-500);
154
+ --color-feedback-success: var(--color-green-500);
155
+ --color-feedback-warning: var(--color-yellow-500);
156
+
157
+ /* ================================
158
+ CORE SPACING TOKENS
159
+ ================================ */
160
+
161
+ --spacing-0: 0;
162
+ --spacing-1: 0.0625rem; /* 1px */
163
+ --spacing-2: 0.125rem; /* 2px */
164
+ --spacing-4: 0.25rem; /* 4px */
165
+ --spacing-6: 0.375rem; /* 6px */
166
+ --spacing-8: 0.5rem; /* 8px */
167
+ --spacing-10: 0.625rem; /* 10px */
168
+ --spacing-12: 0.75rem; /* 12px */
169
+ --spacing-14: 0.875rem; /* 14px */
170
+ --spacing-16: 1rem; /* 16px */
171
+ --spacing-18: 1.125rem; /* 18px */
172
+ --spacing-20: 1.25rem; /* 20px */
173
+ --spacing-22: 1.375rem; /* 22px */
174
+ --spacing-24: 1.5rem; /* 24px */
175
+ --spacing-28: 1.75rem; /* 28px */
176
+ --spacing-32: 2rem; /* 32px */
177
+ --spacing-36: 2.25rem; /* 36px */
178
+ --spacing-40: 2.5rem; /* 40px */
179
+ --spacing-44: 2.75rem; /* 44px */
180
+ --spacing-48: 3rem; /* 48px */
181
+ --spacing-52: 3.25rem; /* 52px */
182
+ --spacing-56: 3.5rem; /* 56px */
183
+ --spacing-64: 4rem; /* 64px */
184
+ --spacing-80: 5rem; /* 80px */
185
+ --spacing-96: 6rem; /* 96px */
186
+ --spacing-112: 7rem; /* 112px */
187
+ --spacing-128: 8rem; /* 128px */
188
+
189
+ /* Semantic spacing aliases (canonical: --spacing-*) */
190
+ --space-none: var(--spacing-0);
191
+ --space-4xs: var(--spacing-2);
192
+ --space-3xs: var(--spacing-4);
193
+ --space-2xs: var(--spacing-8);
194
+ --space-xs: var(--spacing-12);
195
+ --space-sm: var(--spacing-16);
196
+ --space-md: var(--spacing-24);
197
+ --space-lg: var(--spacing-32);
198
+ --space-xl: var(--spacing-40);
199
+ --space-2xl: var(--spacing-48);
200
+ --space-3xl: var(--spacing-64);
201
+ --space-4xl: var(--spacing-96);
202
+ --space-5xl: var(--spacing-128);
203
+
204
+ /* ================================
205
+ CORE BORDER TOKENS
206
+ ================================ */
207
+
208
+ --border-width-0: 0;
209
+ --border-width-1: 1px;
210
+ --border-width-2: 2px;
211
+ --border-width-3: 3px;
212
+ --border-width-4: 4px;
213
+ --border-width-8: 8px;
214
+
215
+ --radius-none: 0;
216
+ --radius-sm: 0.25rem; /* 4px */
217
+ --radius-md: 0.375rem; /* 6px */
218
+ --radius-lg: 0.5rem; /* 8px */
219
+ --radius-xl: 0.75rem; /* 12px */
220
+ --radius-2xl: 1rem; /* 16px */
221
+ --radius-3xl: 1.5rem; /* 24px */
222
+ --radius-full: 9999px;
223
+
224
+ /* ================================
225
+ CORE DIMENSION TOKENS
226
+ ================================ */
227
+
228
+ --dimension-2px: 2px;
229
+ --dimension-4px: 4px;
230
+ --dimension-8px: 8px;
231
+ --dimension-12px: 12px;
232
+ --dimension-16px: 16px;
233
+ --dimension-20px: 20px;
234
+ --dimension-24px: 24px;
235
+ --dimension-32px: 32px;
236
+ --dimension-34px: 34px;
237
+ --dimension-40px: 40px;
238
+ --dimension-45px: 45px;
239
+ --dimension-48px: 48px;
240
+ --dimension-55px: 55px;
241
+ --dimension-64px: 64px;
242
+
243
+ /* ================================
244
+ CORE TRANSITION TOKENS
245
+ ================================ */
246
+
247
+ --transition-duration-fast: 150ms;
248
+ --transition-duration-normal: 200ms;
249
+ --transition-duration-slow: 300ms;
250
+ --transition-duration-slower: 500ms;
251
+
252
+ --transition-easing-linear: linear;
253
+ --transition-easing-smooth: ease-in-out;
254
+ --transition-easing-ease-in: ease-in;
255
+ --transition-easing-ease-out: ease-out;
256
+ --transition-easing-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
257
+
258
+ /* ================================
259
+ CORE SHADOW TOKENS
260
+ ================================ */
261
+
262
+ --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
263
+ --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
264
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1),
265
+ 0 4px 6px -4px rgb(0 0 0 / 0.1);
266
+ --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1),
267
+ 0 8px 10px -6px rgb(0 0 0 / 0.1);
268
+ --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);
269
+ --shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);
270
+
271
+ --shadow-focus-outline-blue: 0 0 0 3px rgba(6, 109, 255, 0.15);
272
+ --shadow-focus-outline-red: 0 0 0 3px rgba(239, 68, 68, 0.15);
273
+ --shadow-focus-outline-green: 0 0 0 3px rgba(34, 197, 94, 0.15);
274
+
275
+ --focus-outline-primary: 0 0 0 2px var(--color-neutral-0),
276
+ 0 0 0 4px var(--color-blue-500);
277
+ --focus-outline-secondary: 0 0 0 2px var(--color-neutral-0),
278
+ 0 0 0 4px var(--color-neutral-600);
279
+ --focus-outline-error: 0 0 0 2px var(--color-neutral-0),
280
+ 0 0 0 4px var(--color-red-500);
281
+ --focus-outline-success: 0 0 0 2px var(--color-neutral-0),
282
+ 0 0 0 4px var(--color-green-500);
283
+
284
+ --focus-outline-traditional: 2px solid var(--color-blue-500);
285
+ --focus-outline-offset: 2px;
286
+
287
+ /* ================================
288
+ LAYOUT & GRID
289
+ ================================ */
290
+
291
+ --padding-button: var(--space-xs) var(--space-md);
292
+ --padding-input: var(--space-xs);
293
+ --padding-card: var(--space-md);
294
+ --padding-card-sm: var(--space-sm);
295
+ --padding-card-lg: var(--space-lg);
296
+
297
+ --padding-section: var(--space-3xl) 0;
298
+ --padding-section-sm: var(--space-2xl) 0;
299
+ --padding-section-lg: var(--space-4xl) 0;
300
+
301
+ --container-padding: var(--space-md);
302
+ --container-padding-sm: var(--space-sm);
303
+ --container-padding-lg: var(--space-lg);
304
+
305
+ --inset-xs: var(--space-xs);
306
+ --inset-sm: var(--space-sm);
307
+ --inset-md: var(--space-md);
308
+ --inset-lg: var(--space-lg);
309
+
310
+ --stack-xs: var(--space-xs);
311
+ --stack-sm: var(--space-sm);
312
+ --stack-md: var(--space-md);
313
+ --stack-lg: var(--space-lg);
314
+ --stack-xl: var(--space-xl);
315
+
316
+ --inline-xs: var(--space-xs);
317
+ --inline-sm: var(--space-sm);
318
+ --inline-md: var(--space-md);
319
+ --inline-lg: var(--space-lg);
320
+
321
+ --touch-target-size: 44px;
322
+ --touch-target-spacing: 8px;
323
+
324
+ --content-width-readable: 70ch;
325
+ --content-width-max: 1200px;
326
+
327
+ --grid-container-max-xs: 100%;
328
+ --grid-container-max-sm: 540px;
329
+ --grid-container-max-md: 720px;
330
+ --grid-container-max-lg: 960px;
331
+ --grid-container-max-xl: 1140px;
332
+ --grid-container-max-xxl: 1320px;
333
+
334
+ --grid-columns: 12;
335
+
336
+ --grid-gutter-xs: 16px;
337
+ --grid-gutter-sm: 24px;
338
+ --grid-gutter-md: 32px;
339
+ --grid-gutter-lg: 40px;
340
+
341
+ --grid-padding-xs: 16px;
342
+ --grid-padding-sm: 24px;
343
+ --grid-padding-md: 32px;
344
+ --grid-padding-lg: 40px;
345
+
346
+ --breakpoint-xs: 0px;
347
+ --breakpoint-sm: 576px;
348
+ --breakpoint-md: 768px;
349
+ --breakpoint-lg: 992px;
350
+ --breakpoint-xl: 1200px;
351
+ --breakpoint-xxl: 1400px;
352
+
353
+ /* ================================
354
+ COMPONENT TOKENS - TYPOGRAPHY
355
+ ================================ */
356
+
357
+ --typography-heading-h1-fontSize: var(--typography-fontSize-5xl);
358
+ --typography-heading-h1-fontWeight: var(--typography-fontWeight-bold);
359
+ --typography-heading-h1-lineHeight: var(--typography-lineHeight-snug);
360
+ --typography-heading-h1-letterSpacing: var(--typography-letterSpacing-normal);
361
+ --typography-heading-h1-fontFamily: var(--typography-fontFamily-sans-condensed);
362
+
363
+ --typography-heading-h2-fontSize: var(--typography-fontSize-4xl);
364
+ --typography-heading-h2-fontWeight: var(--typography-fontWeight-bold);
365
+ --typography-heading-h2-lineHeight: var(--typography-lineHeight-snug);
366
+ --typography-heading-h2-letterSpacing: var(--typography-letterSpacing-normal);
367
+ --typography-heading-h2-fontFamily: var(--typography-fontFamily-sans-condensed);
368
+
369
+ --typography-heading-h3-fontSize: var(--typography-fontSize-3xl);
370
+ --typography-heading-h3-fontWeight: var(--typography-fontWeight-semibold);
371
+ --typography-heading-h3-lineHeight: var(--typography-lineHeight-snug);
372
+ --typography-heading-h3-letterSpacing: var(--typography-letterSpacing-normal);
373
+ --typography-heading-h3-fontFamily: var(--typography-fontFamily-sans-condensed);
374
+
375
+ --typography-heading-h4-fontSize: var(--typography-fontSize-2xl);
376
+ --typography-heading-h4-fontWeight: var(--typography-fontWeight-semibold);
377
+ --typography-heading-h4-lineHeight: var(--typography-lineHeight-snug);
378
+ --typography-heading-h4-letterSpacing: var(--typography-letterSpacing-normal);
379
+ --typography-heading-h4-fontFamily: var(--typography-fontFamily-sans-condensed);
380
+
381
+ --typography-heading-h5-fontSize: var(--typography-fontSize-xl);
382
+ --typography-heading-h5-fontWeight: var(--typography-fontWeight-medium);
383
+ --typography-heading-h5-lineHeight: var(--typography-lineHeight-normal);
384
+ --typography-heading-h5-letterSpacing: var(--typography-letterSpacing-normal);
385
+ --typography-heading-h5-fontFamily: var(--typography-fontFamily-sans-condensed);
386
+
387
+ --typography-heading-h6-fontSize: var(--typography-fontSize-lg);
388
+ --typography-heading-h6-fontWeight: var(--typography-fontWeight-medium);
389
+ --typography-heading-h6-lineHeight: var(--typography-lineHeight-normal);
390
+ --typography-heading-h6-letterSpacing: var(--typography-letterSpacing-normal);
391
+ --typography-heading-h6-fontFamily: var(--typography-fontFamily-sans-condensed);
392
+
393
+ --typography-body-large-fontSize: var(--typography-fontSize-lg);
394
+ --typography-body-large-fontWeight: var(--typography-fontWeight-normal);
395
+ --typography-body-large-lineHeight: var(--typography-lineHeight-relaxed);
396
+ --typography-body-large-letterSpacing: var(--typography-letterSpacing-normal);
397
+ --typography-body-large-fontFamily: var(--typography-fontFamily-sans);
398
+
399
+ --typography-body-regular-fontSize: var(--typography-fontSize-base);
400
+ --typography-body-regular-fontWeight: var(--typography-fontWeight-normal);
401
+ --typography-body-regular-lineHeight: var(--typography-lineHeight-normal);
402
+ --typography-body-regular-letterSpacing: var(--typography-letterSpacing-normal);
403
+ --typography-body-regular-fontFamily: var(--typography-fontFamily-sans);
404
+
405
+ --typography-body-small-fontSize: var(--typography-fontSize-sm);
406
+ --typography-body-small-fontWeight: var(--typography-fontWeight-normal);
407
+ --typography-body-small-lineHeight: var(--typography-lineHeight-normal);
408
+ --typography-body-small-letterSpacing: var(--typography-letterSpacing-normal);
409
+ --typography-body-small-fontFamily: var(--typography-fontFamily-sans);
410
+
411
+ --typography-body-lead-fontSize: var(--typography-fontSize-xl);
412
+ --typography-body-lead-fontWeight: var(--typography-fontWeight-normal);
413
+ --typography-body-lead-lineHeight: var(--typography-lineHeight-relaxed);
414
+ --typography-body-lead-letterSpacing: var(--typography-letterSpacing-normal);
415
+ --typography-body-lead-fontFamily: var(--typography-fontFamily-sans);
416
+
417
+ --typography-label-default-fontSize: var(--typography-fontSize-sm);
418
+ --typography-label-default-fontWeight: var(--typography-fontWeight-medium);
419
+ --typography-label-default-lineHeight: var(--typography-lineHeight-normal);
420
+ --typography-label-default-letterSpacing: var(--typography-letterSpacing-normal);
421
+ --typography-label-default-fontFamily: var(--typography-fontFamily-sans);
422
+
423
+ --typography-label-small-fontSize: var(--typography-fontSize-xs);
424
+ --typography-label-small-fontWeight: var(--typography-fontWeight-medium);
425
+ --typography-label-small-lineHeight: var(--typography-lineHeight-normal);
426
+ --typography-label-small-letterSpacing: var(--typography-letterSpacing-wide);
427
+ --typography-label-small-fontFamily: var(--typography-fontFamily-sans);
428
+
429
+ --typography-label-extra-small-fontSize: var(--typography-fontSize-xxs);
430
+ --typography-label-xsmall-fontSize: var(--typography-fontSize-xs);
431
+
432
+ --typography-label-large-fontSize: var(--typography-fontSize-base);
433
+ --typography-label-large-fontWeight: var(--typography-fontWeight-medium);
434
+ --typography-label-large-lineHeight: var(--typography-lineHeight-normal);
435
+ --typography-label-large-letterSpacing: var(--typography-letterSpacing-normal);
436
+ --typography-label-large-fontFamily: var(--typography-fontFamily-sans);
437
+
438
+ --typography-label-xl-fontSize: var(--typography-fontSize-lg);
439
+ --typography-label-xl-fontWeight: var(--typography-fontWeight-medium);
440
+ --typography-label-xl-lineHeight: var(--typography-lineHeight-normal);
441
+ --typography-label-xl-letterSpacing: var(--typography-letterSpacing-normal);
442
+ --typography-label-xl-fontFamily: var(--typography-fontFamily-sans);
443
+
444
+ --typography-caption-default-fontSize: var(--typography-fontSize-xs);
445
+ --typography-caption-default-fontWeight: var(--typography-fontWeight-normal);
446
+ --typography-caption-default-lineHeight: var(--typography-lineHeight-normal);
447
+ --typography-caption-default-letterSpacing: var(--typography-letterSpacing-normal);
448
+ --typography-caption-default-fontFamily: var(--typography-fontFamily-sans);
449
+
450
+ --typography-caption-small-fontSize: var(--typography-fontSize-xs);
451
+ --typography-caption-small-fontWeight: var(--typography-fontWeight-normal);
452
+ --typography-caption-small-lineHeight: var(--typography-lineHeight-normal);
453
+ --typography-caption-small-letterSpacing: var(--typography-letterSpacing-wide);
454
+ --typography-caption-small-fontFamily: var(--typography-fontFamily-sans);
455
+
456
+ --typography-link-default-fontSize: inherit;
457
+ --typography-link-default-fontWeight: var(--typography-fontWeight-normal);
458
+ --typography-link-default-lineHeight: inherit;
459
+ --typography-link-default-letterSpacing: inherit;
460
+ --typography-link-default-fontFamily: inherit;
461
+ --typography-link-default-textDecoration-default: underline;
462
+ --typography-link-default-textDecoration-hover: none;
463
+
464
+ --typography-link-standalone-fontSize: var(--typography-fontSize-base);
465
+ --typography-link-standalone-fontWeight: var(--typography-fontWeight-medium);
466
+ --typography-link-standalone-lineHeight: var(--typography-lineHeight-normal);
467
+ --typography-link-standalone-letterSpacing: var(--typography-letterSpacing-normal);
468
+ --typography-link-standalone-fontFamily: var(--typography-fontFamily-sans);
469
+ --typography-link-standalone-textDecoration-default: underline;
470
+ --typography-link-standalone-textDecoration-hover: none;
471
+
472
+ --typography-code-inline-fontSize: 0.875em;
473
+ --typography-code-inline-fontWeight: var(--typography-fontWeight-normal);
474
+ --typography-code-inline-lineHeight: inherit;
475
+ --typography-code-inline-letterSpacing: var(--typography-letterSpacing-normal);
476
+ --typography-code-inline-fontFamily: var(--typography-fontFamily-mono);
477
+
478
+ --typography-code-block-fontSize: var(--typography-fontSize-sm);
479
+ --typography-code-block-fontWeight: var(--typography-fontWeight-normal);
480
+ --typography-code-block-lineHeight: var(--typography-lineHeight-relaxed);
481
+ --typography-code-block-letterSpacing: var(--typography-letterSpacing-normal);
482
+ --typography-code-block-fontFamily: var(--typography-fontFamily-mono);
483
+
484
+ --typography-display-3xl-fontSize: var(--typography-fontSize-9xl);
485
+ --typography-display-3xl-fontWeight: var(--typography-fontWeight-bold);
486
+ --typography-display-3xl-lineHeight: var(--typography-lineHeight-tight);
487
+ --typography-display-3xl-letterSpacing: var(--typography-letterSpacing-tight);
488
+ --typography-display-3xl-fontFamily: var(--typography-fontFamily-sans-condensed);
489
+
490
+ --typography-display-2xl-fontSize: var(--typography-fontSize-8xl);
491
+ --typography-display-2xl-fontWeight: var(--typography-fontWeight-bold);
492
+ --typography-display-2xl-lineHeight: var(--typography-lineHeight-tight);
493
+ --typography-display-2xl-letterSpacing: var(--typography-letterSpacing-tight);
494
+ --typography-display-2xl-fontFamily: var(--typography-fontFamily-sans-condensed);
495
+
496
+ --typography-display-xl-fontSize: var(--typography-fontSize-7xl);
497
+ --typography-display-xl-fontWeight: var(--typography-fontWeight-bold);
498
+ --typography-display-xl-lineHeight: var(--typography-lineHeight-tight);
499
+ --typography-display-xl-letterSpacing: var(--typography-letterSpacing-tight);
500
+ --typography-display-xl-fontFamily: var(--typography-fontFamily-sans-condensed);
501
+
502
+ --typography-display-lg-fontSize: var(--typography-fontSize-6xl);
503
+ --typography-display-lg-fontWeight: var(--typography-fontWeight-bold);
504
+ --typography-display-lg-lineHeight: var(--typography-lineHeight-tight);
505
+ --typography-display-lg-letterSpacing: var(--typography-letterSpacing-tight);
506
+ --typography-display-lg-fontFamily: var(--typography-fontFamily-sans-condensed);
507
+
508
+ --typography-display-md-fontSize: var(--typography-fontSize-5xl);
509
+ --typography-display-md-fontWeight: var(--typography-fontWeight-bold);
510
+ --typography-display-md-lineHeight: var(--typography-lineHeight-tight);
511
+ --typography-display-md-letterSpacing: var(--typography-letterSpacing-tight);
512
+ --typography-display-md-fontFamily: var(--typography-fontFamily-sans-condensed);
513
+
514
+ --typography-display-sm-fontSize: var(--typography-fontSize-4xl);
515
+ --typography-display-sm-fontWeight: var(--typography-fontWeight-bold);
516
+ --typography-display-sm-lineHeight: var(--typography-lineHeight-tight);
517
+ --typography-display-sm-letterSpacing: var(--typography-letterSpacing-tight);
518
+ --typography-display-sm-fontFamily: var(--typography-fontFamily-sans-condensed);
519
+
520
+ /* ================================
521
+ COMPONENT TOKENS - FORM
522
+ ================================ */
523
+
524
+ --form-label-default-fontSize: var(--typography-fontSize-sm);
525
+ --form-label-default-fontWeight: var(--typography-fontWeight-medium);
526
+ --form-label-default-lineHeight: var(--typography-lineHeight-normal);
527
+ --form-label-default-letterSpacing: var(--typography-letterSpacing-normal);
528
+ --form-label-default-fontFamily: var(--typography-fontFamily-sans);
529
+ --form-label-default-color: var(--color-text-primary);
530
+ --form-label-default-marginBottom: var(--spacing-1);
531
+
532
+ --form-label-large-fontSize: var(--typography-fontSize-lg);
533
+ --form-label-large-fontWeight: var(--typography-fontWeight-medium);
534
+ --form-label-large-lineHeight: var(--typography-lineHeight-normal);
535
+ --form-label-large-letterSpacing: var(--typography-letterSpacing-normal);
536
+ --form-label-large-fontFamily: var(--typography-fontFamily-sans);
537
+ --form-label-large-color: var(--color-text-primary);
538
+ --form-label-large-marginBottom: var(--spacing-2);
539
+
540
+ --form-label-small-fontSize: var(--typography-fontSize-xs);
541
+ --form-label-small-fontWeight: var(--typography-fontWeight-medium);
542
+ --form-label-small-lineHeight: var(--typography-lineHeight-normal);
543
+ --form-label-small-letterSpacing: var(--typography-letterSpacing-wide);
544
+ --form-label-small-fontFamily: var(--typography-fontFamily-sans);
545
+ --form-label-small-color: var(--color-text-primary);
546
+ --form-label-small-marginBottom: var(--spacing-1);
547
+
548
+ --form-label-required-color: var(--color-red-500);
549
+ --form-label-required-marginLeft: var(--spacing-1);
550
+
551
+ --form-input-small-height: var(--dimension-34px);
552
+ --form-input-small-fontSize: var(--typography-fontSize-sm);
553
+ --form-input-small-padding: var(--spacing-8) var(--spacing-12);
554
+ --form-input-small-borderRadius: var(--radius-sm);
555
+
556
+ --form-input-medium-height: var(--dimension-45px);
557
+ --form-input-medium-fontSize: var(--typography-fontSize-base);
558
+ --form-input-medium-padding: var(--spacing-12) var(--spacing-16);
559
+ --form-input-medium-borderRadius: var(--radius-md);
560
+
561
+ --form-input-large-height: var(--dimension-55px);
562
+ --form-input-large-fontSize: var(--typography-fontSize-lg);
563
+ --form-input-large-padding: var(--spacing-16) var(--spacing-20);
564
+ --form-input-large-borderRadius: var(--radius-lg);
565
+
566
+ --form-input-default-backgroundColor: var(--color-surface);
567
+ --form-input-default-borderColor: var(--color-border-default);
568
+ --form-input-default-borderWidth: var(--border-width-1);
569
+ --form-input-default-color: var(--color-text-primary);
570
+ --form-input-default-fontFamily: var(--typography-fontFamily-sans);
571
+ --form-input-default-lineHeight: var(--typography-lineHeight-normal);
572
+
573
+ --form-input-focus-borderColor: var(--color-border-focus);
574
+ --form-input-focus-boxShadow: var(--shadow-focus-outline-blue);
575
+
576
+ --form-input-error-backgroundColor: var(--color-red-50);
577
+ --form-input-error-borderColor: var(--color-red-500);
578
+ --form-input-error-placeholderColor: var(--color-red-400);
579
+
580
+ --form-input-success-backgroundColor: var(--color-green-50);
581
+ --form-input-success-borderColor: var(--color-green-500);
582
+ --form-input-success-placeholderColor: var(--color-green-400);
583
+
584
+ --form-input-disabled-backgroundColor: var(--color-neutral-100);
585
+ --form-input-disabled-borderColor: var(--color-border-default);
586
+ --form-input-disabled-color: var(--color-text-muted);
587
+ --form-input-disabled-placeholderColor: var(--color-neutral-400);
588
+
589
+ --form-help-text-default-fontSize: var(--typography-fontSize-xs);
590
+ --form-help-text-default-fontWeight: var(--typography-fontWeight-normal);
591
+ --form-help-text-default-lineHeight: var(--typography-lineHeight-normal);
592
+ --form-help-text-default-letterSpacing: var(--typography-letterSpacing-normal);
593
+ --form-help-text-default-fontFamily: var(--typography-fontFamily-sans);
594
+ --form-help-text-default-color: var(--color-text-secondary);
595
+ --form-help-text-default-marginTop: var(--spacing-1);
596
+
597
+ --form-help-text-error-color: var(--color-red-600);
598
+ --form-help-text-success-color: var(--color-green-600);
599
+
600
+ --form-fieldSpacing: var(--spacing-6);
601
+ --form-sectionSpacing: var(--spacing-8);
602
+ --form-labelSpacing: var(--spacing-1);
603
+ --form-helpTextSpacing: var(--spacing-1);
604
+
605
+ /* ================================
606
+ COMPONENT TOKENS - BUTTON
607
+ ================================ */
608
+
609
+ --button-size-small-padding-vertical: var(--spacing-2);
610
+ --button-size-small-padding-horizontal: var(--spacing-4);
611
+ --button-size-small-fontSize: var(--typography-fontSize-sm);
612
+ --button-size-small-height: var(--dimension-34px);
613
+ --button-size-small-borderRadius: var(--radius-sm);
614
+ --button-size-small-gap: var(--spacing-1);
615
+
616
+ --button-size-medium-padding-vertical: var(--spacing-12);
617
+ --button-size-medium-padding-horizontal: var(--spacing-20);
618
+ --button-size-medium-fontSize: var(--typography-fontSize-base);
619
+ --button-size-medium-height: var(--dimension-45px);
620
+ --button-size-medium-borderRadius: var(--radius-md);
621
+ --button-size-medium-gap: var(--spacing-2);
622
+
623
+ --button-size-large-padding-vertical: var(--spacing-4);
624
+ --button-size-large-padding-horizontal: var(--spacing-6);
625
+ --button-size-large-fontSize: var(--typography-fontSize-lg);
626
+ --button-size-large-height: var(--dimension-55px);
627
+ --button-size-large-borderRadius: var(--radius-lg);
628
+ --button-size-large-gap: var(--spacing-2);
629
+
630
+ --button-shared-fontFamily: var(--typography-fontFamily-sans);
631
+ --button-shared-fontWeight: var(--typography-fontWeight-medium);
632
+ --button-shared-lineHeight: var(--typography-lineHeight-tight);
633
+ --button-shared-letterSpacing: var(--typography-letterSpacing-normal);
634
+ --button-shared-borderWidth: var(--border-width-1);
635
+ --button-shared-transition-properties: background-color, border-color, color,
636
+ box-shadow;
637
+ --button-shared-transition-duration: var(--transition-duration-normal);
638
+ --button-shared-transition-easing: var(--transition-easing-smooth);
639
+ --button-shared-focus-outline: var(--focus-outline-traditional);
640
+ --button-shared-focus-outlineOffset: var(--focus-outline-offset);
641
+ --button-shared-focus-boxShadow: var(--focus-outline-primary);
642
+ --button-shared-disabled-opacity: 0.6;
643
+ --button-shared-disabled-cursor: not-allowed;
644
+
645
+ --button-primary-background-default: var(--color-blue-500);
646
+ --button-primary-text-default: var(--color-neutral-0);
647
+ --button-primary-border-default: var(--color-blue-500);
648
+ --button-primary-background-hover: var(--color-blue-600);
649
+ --button-primary-border-hover: var(--color-blue-600);
650
+ --button-primary-background-active: var(--color-blue-700);
651
+ --button-primary-border-active: var(--color-blue-700);
652
+ --button-primary-border-focus: var(--color-blue-500);
653
+ --button-primary-background-disabled: var(--color-neutral-300);
654
+ --button-primary-text-disabled: var(--color-neutral-500);
655
+ --button-primary-border-disabled: var(--color-neutral-300);
656
+
657
+ --button-secondary-background-default: var(--color-neutral-950);
658
+ --button-secondary-text-default: var(--color-neutral-0);
659
+ --button-secondary-border-default: var(--color-neutral-950);
660
+ --button-secondary-background-hover: var(--color-neutral-900);
661
+ --button-secondary-text-hover: var(--color-neutral-0);
662
+ --button-secondary-border-hover: var(--color-neutral-900);
663
+ --button-secondary-background-active: var(--color-neutral-800);
664
+ --button-secondary-text-active: var(--color-neutral-0);
665
+ --button-secondary-border-active: var(--color-neutral-800);
666
+ --button-secondary-border-focus: var(--color-neutral-950);
667
+ --button-secondary-background-disabled: var(--color-neutral-300);
668
+ --button-secondary-text-disabled: var(--color-neutral-500);
669
+ --button-secondary-border-disabled: var(--color-neutral-300);
670
+
671
+ --button-tertiaryPrimary-background-default: transparent;
672
+ --button-tertiaryPrimary-text-default: var(--color-blue-500);
673
+ --button-tertiaryPrimary-border-default: var(--color-blue-500);
674
+ --button-tertiaryPrimary-borderWidth: var(--border-width-2);
675
+ --button-tertiaryPrimary-background-hover: var(--color-blue-50);
676
+ --button-tertiaryPrimary-text-hover: var(--color-blue-500);
677
+ --button-tertiaryPrimary-border-hover: var(--color-blue-500);
678
+ --button-tertiaryPrimary-background-active: var(--color-blue-500);
679
+ --button-tertiaryPrimary-text-active: var(--color-neutral-0);
680
+ --button-tertiaryPrimary-border-active: var(--color-blue-500);
681
+ --button-tertiaryPrimary-border-focus: var(--color-blue-500);
682
+ --button-tertiaryPrimary-background-disabled: transparent;
683
+ --button-tertiaryPrimary-text-disabled: var(--color-neutral-400);
684
+ --button-tertiaryPrimary-border-disabled: var(--color-neutral-300);
685
+
686
+ --button-tertiarySecondary-background-default: transparent;
687
+ --button-tertiarySecondary-text-default: var(--color-neutral-900);
688
+ --button-tertiarySecondary-border-default: var(--color-neutral-900);
689
+ --button-tertiarySecondary-borderWidth: var(--border-width-2);
690
+ --button-tertiarySecondary-background-hover: var(--color-neutral-100);
691
+ --button-tertiarySecondary-text-hover: var(--color-neutral-900);
692
+ --button-tertiarySecondary-border-hover: var(--color-neutral-900);
693
+ --button-tertiarySecondary-background-active: var(--color-neutral-900);
694
+ --button-tertiarySecondary-text-active: var(--color-neutral-0);
695
+ --button-tertiarySecondary-border-active: var(--color-neutral-900);
696
+ --button-tertiarySecondary-border-focus: var(--color-neutral-900);
697
+ --button-tertiarySecondary-background-disabled: transparent;
698
+ --button-tertiarySecondary-text-disabled: var(--color-neutral-400);
699
+ --button-tertiarySecondary-border-disabled: var(--color-neutral-300);
700
+
701
+ --button-cta-background-default: var(--color-red-500);
702
+ --button-cta-text-default: var(--color-neutral-0);
703
+ --button-cta-border-default: var(--color-red-500);
704
+ --button-cta-background-hover: var(--color-red-600);
705
+ --button-cta-border-hover: var(--color-red-600);
706
+ --button-cta-background-active: var(--color-red-700);
707
+ --button-cta-border-active: var(--color-red-700);
708
+ --button-cta-border-focus: var(--color-red-500);
709
+ --button-cta-background-disabled: var(--color-neutral-300);
710
+ --button-cta-text-disabled: var(--color-neutral-500);
711
+ --button-cta-border-disabled: var(--color-neutral-300);
712
+
713
+ --button-empty-background-default: var(--color-neutral-200);
714
+ --button-empty-text-default: transparent;
715
+ --button-empty-border-default: var(--color-neutral-200);
716
+
717
+ --button-disabled-backgroundColor: var(--color-neutral-100);
718
+ --button-disabled-borderColor: var(--color-neutral-300);
719
+ --button-disabled-color: var(--color-neutral-500);
720
+
721
+ --button-focus-boxShadow: var(--shadow-focus-outline-blue);
722
+
723
+ /* Deprecated button size aliases */
724
+ --button-small-height: var(--button-size-small-height);
725
+ --button-small-fontSize: var(--button-size-small-fontSize);
726
+ --button-small-padding: var(--spacing-8) var(--spacing-12);
727
+ --button-small-borderRadius: var(--button-size-small-borderRadius);
728
+
729
+ --button-medium-height: var(--button-size-medium-height);
730
+ --button-medium-fontSize: var(--button-size-medium-fontSize);
731
+ --button-medium-padding: var(--spacing-12) var(--spacing-16);
732
+ --button-medium-borderRadius: var(--button-size-medium-borderRadius);
733
+
734
+ --button-large-height: var(--button-size-large-height);
735
+ --button-large-fontSize: var(--button-size-large-fontSize);
736
+ --button-large-padding: var(--spacing-16) var(--spacing-20);
737
+ --button-large-borderRadius: var(--button-size-large-borderRadius);
738
+
739
+ --button-default-backgroundColor: var(--color-surface);
740
+ --button-default-borderColor: var(--color-border-default);
741
+ --button-default-borderWidth: var(--border-width-1);
742
+ --button-default-color: var(--color-text-primary);
743
+ --button-default-fontFamily: var(--typography-fontFamily-sans);
744
+ --button-default-fontWeight: var(--typography-fontWeight-medium);
745
+ --button-default-lineHeight: var(--typography-lineHeight-normal);
746
+
747
+ /* ================================
748
+ COMPONENT TOKENS - ANNOTATION
749
+ ================================ */
750
+
751
+ --footnote-reference-fontSize: 0.75em;
752
+ --footnote-reference-fontWeight: var(--typography-fontWeight-normal);
753
+ --footnote-reference-lineHeight: 1;
754
+ --footnote-reference-verticalAlign: super;
755
+ --footnote-reference-color: inherit;
756
+ --footnote-reference-marginLeft: 0.1em;
757
+ --footnote-reference-marginRight: 0.2em;
758
+
759
+ --citation-reference-fontSize: inherit;
760
+ --citation-reference-fontWeight: var(--typography-fontWeight-normal);
761
+ --citation-reference-lineHeight: inherit;
762
+ --citation-reference-color: var(--color-text-link);
763
+ --citation-reference-textDecoration: underline;
764
+ --citation-reference-hover-color: var(--color-text-link-hover);
765
+ --citation-reference-hover-textDecoration: none;
766
+
767
+ --math-superscript-fontSize: 0.75em;
768
+ --math-superscript-fontWeight: var(--typography-fontWeight-normal);
769
+ --math-superscript-lineHeight: 1;
770
+ --math-superscript-verticalAlign: super;
771
+ --math-superscript-marginLeft: 0.05em;
772
+
773
+ --math-subscript-fontSize: 0.75em;
774
+ --math-subscript-fontWeight: var(--typography-fontWeight-normal);
775
+ --math-subscript-lineHeight: 1;
776
+ --math-subscript-verticalAlign: sub;
777
+ --math-subscript-marginLeft: 0.05em;
778
+
779
+ /* ================================
780
+ COMPONENT TOKENS - ICON
781
+ ================================ */
782
+
783
+ --icon-xs-size: var(--dimension-12px);
784
+ --icon-sm-size: var(--dimension-16px);
785
+ --icon-md-size: var(--dimension-20px);
786
+ --icon-lg-size: var(--dimension-24px);
787
+ --icon-xl-size: var(--dimension-32px);
788
+ --icon-2xl-size: var(--dimension-48px);
789
+ --icon-3xl-size: var(--dimension-64px);
790
+
791
+ --icon-button-small-size: var(--dimension-16px);
792
+ --icon-button-medium-size: var(--dimension-20px);
793
+ --icon-button-large-size: var(--dimension-24px);
794
+
795
+ --icon-form-small-size: var(--dimension-16px);
796
+ --icon-form-medium-size: var(--dimension-20px);
797
+ --icon-form-large-size: var(--dimension-24px);
798
+
799
+ --icon-default-color: var(--color-text-secondary);
800
+ --icon-hover-color: var(--color-neutral-700);
801
+ --icon-active-color: var(--color-neutral-800);
802
+ --icon-disabled-color: var(--color-neutral-400);
803
+
804
+ --icon-primary-color: var(--color-blue-500);
805
+ --icon-primary-hover-color: var(--color-blue-600);
806
+ --icon-primary-active-color: var(--color-blue-700);
807
+
808
+ --icon-success-color: var(--color-green-500);
809
+ --icon-warning-color: var(--color-yellow-500);
810
+ --icon-error-color: var(--color-red-500);
811
+ /* ================================
812
+ BLOG — LAYOUT
813
+ ================================ */
814
+
815
+ --layout-content-max-width: var(--content-width-max);
816
+ --layout-article-max-width: 45rem;
817
+ --layout-article-inline-padding: var(--spacing-24);
818
+ --layout-page-max-width: var(--layout-content-max-width);
819
+ --layout-page-gap: var(--spacing-32);
820
+ --layout-page-main-ratio: 3fr;
821
+ --layout-page-sidebar-ratio: 1fr;
822
+ --layout-article-toc-width: 13rem;
823
+ --layout-article-toc-gap: var(--spacing-32);
824
+ --layout-section-gap: var(--spacing-64);
825
+
826
+ --layout-awards-section-background: var(--color-surface-brand);
827
+ --layout-awards-banner-max-width: 37.5rem;
828
+ --layout-awards-cluster-max-width: 49.5625rem;
829
+ --layout-awards-intro-max-width: 39.4375rem;
830
+ --layout-awards-content-max-width: 53.0625rem;
831
+ --layout-ensemble-inline-padding: var(--spacing-24);
832
+
833
+ /* ================================
834
+ BLOG — PROSE / ARTICLE
835
+ ================================ */
836
+
837
+ --blog-prose-max-width: var(--content-width-readable);
838
+ --blog-prose-fontSize: var(--typography-body-regular-fontSize);
839
+ --blog-prose-lineHeight: var(--typography-body-regular-lineHeight);
840
+ --blog-prose-color: var(--color-text-primary);
841
+ --blog-prose-paragraph-spacing: var(--spacing-24);
842
+ --blog-prose-heading-spacing-top: var(--spacing-48);
843
+ --blog-prose-heading-spacing-bottom: var(--spacing-16);
844
+ --blog-prose-list-spacing: var(--spacing-8);
845
+ --blog-prose-list-indent: var(--spacing-24);
846
+
847
+ --blog-prose-subhead-fontFamily: var(--typography-fontFamily-sans-condensed);
848
+ --blog-prose-subhead-fontSize: var(--typography-fontSize-2xl);
849
+ --blog-prose-subhead-fontWeight: var(--typography-fontWeight-semibold);
850
+ --blog-prose-subhead-lineHeight: var(--typography-lineHeight-snug);
851
+ --blog-prose-subhead-color: var(--blog-prose-color);
852
+ --blog-prose-subhead-spacing-top: var(--spacing-32);
853
+ --blog-prose-subhead-spacing-bottom: var(--spacing-8);
854
+
855
+ --blog-related-label-fontFamily: var(--typography-fontFamily-sans);
856
+ --blog-related-label-fontSize: var(--blog-prose-fontSize);
857
+ --blog-related-label-fontWeight: var(--typography-body-regular-fontWeight);
858
+ --blog-related-label-fontStyle: italic;
859
+ --blog-related-label-lineHeight: var(--blog-prose-lineHeight);
860
+ --blog-related-label-color: var(--blog-prose-color);
861
+ --blog-related-label-spacing-top: var(--spacing-32);
862
+
863
+ /* Hero abstract accent — left bar only (not used by body quotes) */
864
+ --blog-accent-border-width: var(--border-width-2);
865
+ --blog-accent-border-color: var(--color-blue-500);
866
+ --blog-accent-padding: var(--spacing-24);
867
+
868
+ /* Body quote — tinted panel + oversized opening mark */
869
+ --blog-quote-background: var(--color-blue-50);
870
+ --blog-quote-borderRadius: var(--radius-2xl);
871
+ --blog-quote-padding-block: var(--spacing-24);
872
+ --blog-quote-padding-inline: var(--spacing-24);
873
+ --blog-quote-padding-inline-start: var(--spacing-16);
874
+ --blog-quote-mark-gap: var(--spacing-4);
875
+ --blog-quote-mark-fontSize: 4rem;
876
+ --blog-quote-mark-fontFamily: var(--typography-fontFamily-sans-condensed);
877
+ --blog-quote-mark-fontWeight: var(--typography-fontWeight-semibold);
878
+ --blog-quote-mark-color: var(--color-blue-200);
879
+ --blog-quote-mark-offset-top: -0.05em;
880
+ --blog-quote-mark-lineHeight: 0.85;
881
+ --blog-quote-fontSize: var(--typography-fontSize-xl);
882
+ --blog-quote-lineHeight: var(--typography-lineHeight-relaxed);
883
+ --blog-quote-color: var(--color-text-primary);
884
+ --blog-quote-fontStyle: italic;
885
+ --blog-quote-attribution-fontSize: var(--typography-fontSize-sm);
886
+ --blog-quote-attribution-color: var(--color-text-muted);
887
+
888
+ --blog-pullquote-fontSize: var(--typography-fontSize-2xl);
889
+ --blog-pullquote-fontWeight: var(--typography-fontWeight-medium);
890
+ --blog-pullquote-lineHeight: var(--typography-lineHeight-snug);
891
+ --blog-pullquote-color: var(--color-text-primary);
892
+
893
+ --blog-code-block-background: var(--color-neutral-50);
894
+ --blog-code-block-color: var(--color-text-primary);
895
+ --blog-code-block-fontFamily: var(--typography-code-block-fontFamily);
896
+ --blog-code-block-fontSize: var(--typography-code-block-fontSize);
897
+ --blog-code-block-fontWeight: var(--typography-code-block-fontWeight);
898
+ --blog-code-block-lineHeight: var(--typography-code-block-lineHeight);
899
+ --blog-code-block-padding: var(--spacing-24);
900
+ --blog-code-block-borderRadius: var(--radius-2xl);
901
+ --blog-code-block-selection-background: var(--color-neutral-100);
902
+
903
+ /* ================================
904
+ BLOG — META & BYLINE
905
+ ================================ */
906
+
907
+ --blog-meta-fontSize: var(--typography-fontSize-sm);
908
+ --blog-meta-fontWeight: var(--typography-fontWeight-normal);
909
+ --blog-meta-color: var(--color-text-muted);
910
+ --blog-meta-gap: var(--spacing-8);
911
+ --blog-meta-separator-fontSize: var(--typography-fontSize-base);
912
+ --blog-meta-separator-color: var(--color-text-muted);
913
+ --blog-meta-separator-fontWeight: var(--typography-fontWeight-semibold);
914
+
915
+ --blog-byline-fontSize: var(--typography-fontSize-sm);
916
+ --blog-byline-color: var(--color-text-secondary);
917
+ --blog-byline-gap: var(--spacing-12);
918
+ --blog-byline-avatar-size: var(--dimension-40px);
919
+
920
+ --blog-date-color: var(--color-text-muted);
921
+ --blog-reading-time-color: var(--color-text-muted);
922
+
923
+ /* ================================
924
+ BLOG — AUTHORS (HERO)
925
+ ================================ */
926
+
927
+ --blog-authors-label-fontSize: var(--typography-fontSize-sm);
928
+ --blog-authors-label-fontWeight: var(--typography-fontWeight-medium);
929
+ --blog-authors-label-color: var(--color-text-primary);
930
+ --blog-authors-gap: var(--spacing-8);
931
+ --blog-authors-pill-gap: var(--spacing-8);
932
+
933
+ --blog-hero-divider-width: var(--border-width-1);
934
+ --blog-hero-divider-color: var(--color-border-subtle);
935
+
936
+ /* ================================
937
+ BLOG — TAGS & CHIPS
938
+ ================================ */
939
+
940
+ --blog-tag-padding: var(--spacing-4) var(--spacing-8);
941
+ --blog-tag-fontSize: var(--typography-label-default-fontSize);
942
+ --blog-tag-fontWeight: var(--typography-label-default-fontWeight);
943
+ --blog-tag-lineHeight: var(--dimension-20px);
944
+ --blog-tag-borderRadius: var(--radius-full);
945
+ --blog-tag-border-width: var(--border-width-1);
946
+ --blog-tag-gap: var(--spacing-8);
947
+
948
+ --blog-tag-default-background: var(--color-surface-subtle);
949
+ --blog-tag-default-color: var(--color-text-secondary);
950
+ --blog-tag-default-border-color: var(--color-border-subtle);
951
+
952
+ --blog-tag-brand-background: var(--color-blue-100);
953
+ --blog-tag-brand-color: var(--color-blue-800);
954
+ --blog-tag-brand-border-color: var(--color-blue-100);
955
+
956
+ --blog-tag-brand-hover-background: var(--color-blue-200);
957
+ --blog-tag-brand-hover-color: var(--color-blue-800);
958
+
959
+ --blog-tag-hover-background: var(--color-neutral-100);
960
+ --blog-tag-hover-color: var(--color-text-primary);
961
+
962
+ /* ================================
963
+ BLOG — CARDS
964
+ ================================ */
965
+
966
+ --blog-card-padding: var(--spacing-24);
967
+ --blog-card-gap: var(--spacing-16);
968
+ --blog-card-borderRadius: var(--radius-lg);
969
+ --blog-card-border-color: var(--color-border-subtle);
970
+ --blog-card-background: var(--color-surface);
971
+ --blog-card-shadow: var(--shadow-sm);
972
+ --blog-card-shadow-hover: var(--shadow-md);
973
+ --blog-card-title-fontSize: var(--typography-fontSize-xl);
974
+ --blog-card-title-fontWeight: var(--typography-fontWeight-semibold);
975
+ --blog-card-title-fontFamily: var(--typography-heading-h5-fontFamily);
976
+ --blog-card-excerpt-color: var(--color-text-secondary);
977
+ --blog-card-image-aspect-ratio: 16 / 9;
978
+
979
+ /* ================================
980
+ BLOG — KEY TAKEAWAYS
981
+ ================================ */
982
+
983
+ --blog-takeaways-borderRadius: var(--radius-2xl);
984
+ --blog-takeaways-border-width: var(--border-width-1);
985
+ --blog-takeaways-border-color: var(--blog-card-border-color);
986
+ --blog-takeaways-background: var(--blog-card-background);
987
+ --blog-takeaways-padding-inline: var(--spacing-24);
988
+ --blog-takeaways-header-padding-block: var(--spacing-20);
989
+ --blog-takeaways-header-padding-bottom: var(--spacing-20);
990
+ --blog-takeaways-body-padding-top: var(--spacing-16);
991
+ --blog-takeaways-body-padding-bottom: var(--spacing-24);
992
+ --blog-takeaways-divider-width: var(--border-width-1);
993
+ --blog-takeaways-divider-color: var(--color-border-subtle);
994
+ --blog-takeaways-title-fontFamily: var(--typography-fontFamily-sans-condensed);
995
+ --blog-takeaways-title-fontSize: var(--typography-fontSize-base);
996
+ --blog-takeaways-title-fontWeight: var(--typography-fontWeight-bold);
997
+ --blog-takeaways-title-lineHeight: var(--typography-lineHeight-normal);
998
+ --blog-takeaways-title-color: var(--color-text-primary);
999
+ --blog-takeaways-item-fontSize: var(--blog-prose-fontSize);
1000
+ --blog-takeaways-item-fontWeight: var(--typography-fontWeight-normal);
1001
+ --blog-takeaways-item-lineHeight: var(--typography-lineHeight-relaxed);
1002
+ --blog-takeaways-item-color: var(--blog-prose-color);
1003
+ --blog-takeaways-item-gap: var(--spacing-12);
1004
+ --blog-takeaways-list-indent: var(--spacing-16);
1005
+ --blog-takeaways-bullet-gap: var(--spacing-4);
1006
+
1007
+ /* ================================
1008
+ BLOG — TABLE OF CONTENTS
1009
+ ================================ */
1010
+
1011
+ --blog-toc-borderRadius: var(--blog-takeaways-borderRadius);
1012
+ --blog-toc-border-width: var(--blog-takeaways-border-width);
1013
+ --blog-toc-border-color: var(--blog-takeaways-border-color);
1014
+ --blog-toc-background: var(--blog-takeaways-background);
1015
+ --blog-toc-link-fontSize: var(--blog-nav-link-fontSize);
1016
+ --blog-toc-link-fontWeight: var(--blog-nav-link-fontWeight);
1017
+ --blog-toc-link-lineHeight: var(--typography-lineHeight-normal);
1018
+ --blog-toc-link-color: var(--blog-nav-link-color);
1019
+ --blog-toc-link-hover-color: var(--blog-nav-link-hover-color);
1020
+ --blog-toc-item-gap: var(--spacing-8);
1021
+ --blog-toc-sticky-offset: var(--spacing-24);
1022
+ --blog-toc-marker-size: var(--spacing-8);
1023
+ --blog-toc-marker-gap: var(--spacing-8);
1024
+ --blog-toc-marker-offset-top: 0.65em;
1025
+ --blog-toc-marker-color: var(--color-blue-500);
1026
+ --blog-toc-link-active-color: var(--color-blue-600);
1027
+ --blog-toc-scroll-offset: var(--spacing-48);
1028
+ --blog-toc-reading-line-offset: var(--spacing-128);
1029
+ --blog-toc-toggle-size: var(--spacing-32);
1030
+ --blog-toc-toggle-fontSize: var(--typography-fontSize-2xl);
1031
+ --blog-toc-toggle-color: var(--color-blue-500);
1032
+ --blog-toc-toggle-hover-color: var(--color-blue-600);
1033
+
1034
+ /* ================================
1035
+ BLOG — REPORT PROMO
1036
+ Sidebar lead magnet — aliases only; styles use shared core/blog tokens.
1037
+ ================================ */
1038
+
1039
+ --blog-report-promo-background: var(--color-blue-100);
1040
+ --blog-report-promo-borderRadius: var(--blog-takeaways-borderRadius);
1041
+ --blog-report-promo-border-width: var(--blog-newsletter-border-width);
1042
+ --blog-report-promo-border-color: var(--blog-newsletter-border-color);
1043
+ --blog-report-promo-max-width: 40rem;
1044
+ --blog-report-promo-padding: var(--spacing-24);
1045
+ --blog-report-promo-gap: var(--spacing-24);
1046
+ --blog-report-promo-media-max-height: 16rem;
1047
+ --blog-report-promo-media-width-desktop: 13.25rem;
1048
+ --blog-report-promo-image-width-desktop: 26.5625rem;
1049
+ --blog-report-promo-media-aspect-ratio: 490 / 157;
1050
+ --blog-report-promo-image-crop-offset: -70%;
1051
+ --blog-report-promo-image-height-ratio: 492 / 157;
1052
+ --blog-report-promo-title-fontSize: var(--typography-fontSize-xl);
1053
+ --blog-report-promo-title-fontWeight: var(--typography-fontWeight-semibold);
1054
+ --blog-report-promo-title-lineHeight: var(--typography-lineHeight-snug);
1055
+ --blog-report-promo-title-color: var(--color-text-primary);
1056
+ --blog-report-promo-description-fontSize: var(--typography-fontSize-base);
1057
+ --blog-report-promo-description-lineHeight: var(--typography-lineHeight-normal);
1058
+ --blog-report-promo-description-color: var(--color-text-muted);
1059
+ --blog-report-promo-body-gap: var(--spacing-8);
1060
+ --blog-report-promo-cta-spacing-top: var(--spacing-4);
1061
+
1062
+ /* ================================
1063
+ BLOG — RELATED ARTICLES
1064
+ ================================ */
1065
+
1066
+ --blog-related-title-fontFamily: var(--typography-fontFamily-sans-condensed);
1067
+ --blog-related-title-fontSize: var(--typography-fontSize-2xl);
1068
+ --blog-related-title-fontWeight: var(--typography-fontWeight-bold);
1069
+ --blog-related-title-lineHeight: var(--typography-lineHeight-snug);
1070
+ --blog-related-title-color: var(--color-text-primary);
1071
+ --blog-related-title-spacing-bottom: var(--spacing-24);
1072
+ --blog-related-grid-gap: var(--spacing-24);
1073
+ --blog-related-grid-gap-mobile: var(--spacing-32);
1074
+ --blog-related-card-body-gap: var(--spacing-12);
1075
+ --blog-related-card-image-gap: var(--spacing-12);
1076
+ --blog-related-card-divider-color: var(--color-border-subtle);
1077
+ --blog-related-card-divider-width: var(--border-width-1);
1078
+ --blog-related-card-image-aspect-ratio-mobile: 2 / 1;
1079
+ --blog-related-mobile-preview-count: 2;
1080
+ --blog-related-see-all-fontFamily: var(--typography-fontFamily-sans);
1081
+ --blog-related-see-all-fontSize: var(--typography-fontSize-base);
1082
+ --blog-related-see-all-fontWeight: var(--typography-fontWeight-medium);
1083
+ --blog-related-see-all-color: var(--color-blue-500);
1084
+ --blog-related-see-all-hover-color: var(--color-blue-700);
1085
+ --blog-related-see-all-spacing-top: var(--spacing-8);
1086
+ --blog-related-see-all-underline-offset: 0.15em;
1087
+ --blog-related-card-title-fontFamily: var(--blog-card-title-fontFamily);
1088
+ --blog-related-card-title-fontSize: var(--blog-card-title-fontSize);
1089
+ --blog-related-card-title-fontWeight: var(--blog-card-title-fontWeight);
1090
+ --blog-related-card-title-lineHeight: var(--typography-lineHeight-snug);
1091
+ --blog-related-card-title-color: var(--color-text-primary);
1092
+ --blog-related-card-excerpt-fontSize: var(--typography-fontSize-sm);
1093
+ --blog-related-card-excerpt-color: var(--blog-card-excerpt-color);
1094
+ --blog-related-card-meta-fontSize: var(--blog-meta-fontSize);
1095
+ --blog-related-card-image-aspect-ratio: var(--blog-card-image-aspect-ratio);
1096
+ --blog-related-card-image-borderRadius: var(--radius-xl);
1097
+ --blog-related-card-tag-inset: var(--spacing-12);
1098
+ --blog-related-card-tag-background: var(--blog-tag-brand-background);
1099
+ --blog-related-card-tag-color: var(--blog-tag-brand-color);
1100
+ --blog-related-card-tag-border-color: var(--blog-tag-brand-border-color);
1101
+
1102
+ /* ================================
1103
+ BLOG — MOST POPULAR
1104
+ ================================ */
1105
+
1106
+ --blog-popular-title-fontFamily: var(--typography-fontFamily-sans-condensed);
1107
+ --blog-popular-title-fontSize: var(--typography-fontSize-2xl);
1108
+ --blog-popular-title-fontWeight: var(--typography-fontWeight-semibold);
1109
+ --blog-popular-title-lineHeight: var(--typography-lineHeight-snug);
1110
+ --blog-popular-title-color: var(--color-text-primary);
1111
+ --blog-popular-title-spacing-bottom: var(--spacing-24);
1112
+ --blog-popular-item-gap: var(--spacing-24);
1113
+ --blog-popular-item-inner-gap: var(--spacing-12);
1114
+ --blog-popular-thumb-width: 5rem;
1115
+ --blog-popular-thumb-aspect-ratio: var(--blog-card-image-aspect-ratio);
1116
+ --blog-popular-thumb-borderRadius: var(--radius-lg);
1117
+ --blog-popular-thumb-background: var(--blog-content-image-background);
1118
+ --blog-popular-item-title-fontFamily: var(--typography-fontFamily-sans);
1119
+ --blog-popular-item-title-fontSize: var(--typography-fontSize-sm);
1120
+ --blog-popular-item-title-fontWeight: var(--typography-fontWeight-medium);
1121
+ --blog-popular-item-title-lineHeight: var(--typography-lineHeight-snug);
1122
+ --blog-popular-item-title-color: var(--color-blue-500);
1123
+ --blog-popular-item-date-fontSize: var(--typography-fontSize-xs);
1124
+ --blog-popular-item-date-color: var(--color-text-muted);
1125
+ --blog-popular-link-hover-color: var(--color-text-link-hover);
1126
+
1127
+ /* ================================
1128
+ BLOG — HERO
1129
+ ================================ */
1130
+
1131
+ --blog-hero-min-height: 24rem;
1132
+ --blog-hero-padding: var(--spacing-64) var(--spacing-24);
1133
+ --blog-hero-background: var(--color-surface-brand);
1134
+ --blog-hero-title-fontSize: var(--typography-display-md-fontSize);
1135
+ --blog-hero-title-fontWeight: var(--typography-fontWeight-semibold);
1136
+ --blog-hero-title-lineHeight: var(--typography-display-md-lineHeight);
1137
+ --blog-hero-title-fontFamily: var(--typography-display-md-fontFamily);
1138
+ --blog-hero-title-color: var(--color-blue-500);
1139
+ --blog-hero-subtitle-color: var(--blog-prose-color);
1140
+ --blog-hero-subtitle-fontSize: var(--typography-body-lead-fontSize);
1141
+ --blog-hero-subtitle-fontFamily: var(--typography-body-lead-fontFamily);
1142
+ --blog-hero-subtitle-fontStyle: normal;
1143
+ --blog-hero-abstract-border-width: var(--blog-accent-border-width);
1144
+ --blog-hero-abstract-border-color: var(--blog-accent-border-color);
1145
+ --blog-hero-abstract-padding: var(--spacing-16);
1146
+ --blog-abstract-spacing-after-last: var(--spacing-24);
1147
+ --blog-hero-abstract-to-featured-gap: var(--spacing-24);
1148
+ --blog-hero-featured-borderRadius: var(--radius-2xl);
1149
+ --blog-hero-featured-aspect-ratio: 16 / 9;
1150
+ --blog-hero-featured-background: var(--color-neutral-50);
1151
+
1152
+ /* ================================
1153
+ BLOG — CONTENT IMAGES
1154
+ ================================ */
1155
+
1156
+ --blog-content-image-borderRadius: var(--blog-hero-featured-borderRadius);
1157
+ --blog-content-image-background: var(--color-neutral-100);
1158
+
1159
+ --blog-standout-fontFamily: var(--typography-fontFamily-sans-condensed);
1160
+ --blog-standout-fontSize: var(--typography-fontSize-xl);
1161
+ --blog-standout-fontWeight: var(--typography-fontWeight-bold);
1162
+ --blog-standout-fontStyle: italic;
1163
+ --blog-standout-lineHeight: var(--typography-lineHeight-snug);
1164
+ --blog-standout-color: var(--color-text-primary);
1165
+
1166
+ /* ================================
1167
+ BLOG — NAVIGATION
1168
+ ================================ */
1169
+
1170
+ --blog-nav-height: 4rem;
1171
+ --blog-nav-padding: 0 var(--spacing-24);
1172
+ --blog-nav-background: var(--color-surface);
1173
+ --blog-nav-border-color: var(--color-border-subtle);
1174
+ --blog-nav-link-color: var(--color-text-primary);
1175
+ --blog-nav-link-hover-color: var(--color-text-link);
1176
+ --blog-nav-link-fontSize: var(--typography-fontSize-sm);
1177
+ --blog-nav-link-fontWeight: var(--typography-fontWeight-medium);
1178
+
1179
+ /* ================================
1180
+ BLOG — NEWSLETTER SIGNUP
1181
+ ================================ */
1182
+
1183
+ --blog-newsletter-padding: var(--spacing-32);
1184
+ --blog-newsletter-gap: var(--spacing-24);
1185
+ --blog-newsletter-borderRadius: var(--radius-2xl);
1186
+ --blog-newsletter-border-width: var(--border-width-1);
1187
+ --blog-newsletter-border-color: var(--blog-card-border-color);
1188
+ --blog-newsletter-background: var(--blog-card-background);
1189
+ --blog-newsletter-icon-size: var(--icon-2xl-size);
1190
+ --blog-newsletter-icon-color: var(--color-blue-500);
1191
+ --blog-newsletter-heading-fontFamily: var(--typography-fontFamily-sans);
1192
+ --blog-newsletter-heading-fontSize: var(--typography-fontSize-xl);
1193
+ --blog-newsletter-heading-fontWeight: var(--typography-fontWeight-normal);
1194
+ --blog-newsletter-heading-lineHeight: var(--typography-lineHeight-snug);
1195
+ --blog-newsletter-heading-color: var(--color-text-primary);
1196
+ --blog-newsletter-heading-max-width: 28rem;
1197
+ --blog-newsletter-heading-emphasis-fontStyle: italic;
1198
+ --blog-newsletter-description-fontFamily: var(--typography-fontFamily-sans);
1199
+ --blog-newsletter-description-fontSize: var(--typography-fontSize-sm);
1200
+ --blog-newsletter-description-fontWeight: var(--typography-fontWeight-normal);
1201
+ --blog-newsletter-description-lineHeight: var(--typography-lineHeight-normal);
1202
+ --blog-newsletter-description-color: var(--color-text-muted);
1203
+ --blog-newsletter-description-max-width: 28rem;
1204
+ --blog-newsletter-form-max-width: 32rem;
1205
+ --blog-newsletter-form-gap: var(--spacing-12);
1206
+ --blog-newsletter-disclaimer-fontFamily: var(--typography-fontFamily-sans);
1207
+ --blog-newsletter-disclaimer-fontSize: var(--typography-fontSize-xs);
1208
+ --blog-newsletter-disclaimer-fontWeight: var(--typography-fontWeight-normal);
1209
+ --blog-newsletter-disclaimer-lineHeight: var(--typography-lineHeight-normal);
1210
+ --blog-newsletter-disclaimer-color: var(--color-text-muted);
1211
+ --blog-newsletter-disclaimer-max-width: 28rem;
1212
+ --blog-newsletter-spacing-top: var(--spacing-48);
1213
+ --blog-newsletter-spacing-bottom: var(--spacing-32);
1214
+ /* ================================
1215
+ LEGACY ALIASES (DEPRECATED)
1216
+ Do not add new references — use core tokens instead.
1217
+ These names are preserved for backward compatibility only.
1218
+ ================================ */
1219
+
1220
+ /* Display sizes (legacy px-based names) */
1221
+ --display-xxsmall: 2.75rem;
1222
+ --display-xsmall: 3rem;
1223
+ --display-small: 3.25rem;
1224
+ --display-medium: 3.5rem;
1225
+ --display-large: 3.75rem;
1226
+ --display-xlarge: 4rem;
1227
+
1228
+ --display-xxsmall-mobile: 2.125rem;
1229
+ --display-xsmall-mobile: 2.25rem;
1230
+ --display-small-mobile: 2.375rem;
1231
+ --display-medium-mobile: 2.5rem;
1232
+ --display-large-mobile: 2.75rem;
1233
+ --display-xlarge-mobile: 3rem;
1234
+
1235
+ --display-xlarge-line-height: 1.1;
1236
+ --display-medium-line-height: 1.15;
1237
+ --display-xlarge-mobile-line-height: 1.15;
1238
+ --display-medium-mobile-line-height: 1.2;
1239
+
1240
+ /* Heading sizes (legacy names — map to current scale) */
1241
+ --heading-xxsmall: var(--typography-fontSize-lg);
1242
+ --heading-xsmall: var(--typography-fontSize-xl);
1243
+ --heading-medium: 1.75rem;
1244
+ --heading-xlarge: var(--typography-fontSize-4xl);
1245
+ --heading-xxlarge: 2.5rem;
1246
+ --heading-xlarge-line-height: 1.2;
1247
+ --typography-heading-h4-fontSize-line-height: 1.3;
1248
+
1249
+ /* Body sizes (legacy names) */
1250
+ --body-small: 0.8125rem;
1251
+ --body-xlarge: var(--typography-fontSize-lg);
1252
+ --typography-body-regular-fontSize-line-height: var(--typography-lineHeight-normal);
1253
+ --typography-label-small-fontSize-line-height: 1.35;
1254
+
1255
+ /* Font family shorthand (legacy) */
1256
+ --font-family-mono: var(--typography-fontFamily-mono);
1257
+ --font-weight-mono-light: var(--typography-fontWeight-light);
1258
+ --font-weight-mono-regular: var(--typography-fontWeight-normal);
1259
+ --font-weight-mono-medium: var(--typography-fontWeight-medium);
1260
+ --font-weight-mono-semibold: var(--typography-fontWeight-semibold);
1261
+ --font-weight-mono-bold: var(--typography-fontWeight-bold);
1262
+ --font-style-mono-normal: normal;
1263
+ --font-style-mono-italic: italic;
1264
+
1265
+ --font-weight-sans-light: var(--typography-fontWeight-light);
1266
+ --font-weight-sans-medium: var(--typography-fontWeight-medium);
1267
+ --font-style-sans-normal: normal;
1268
+ --font-style-sans-italic: italic;
1269
+ }
1270
+
1271
+ /* Load once globally — do not import into Lit shadow styles */
1272
+
1273
+ @font-face {
1274
+ font-family: "IBM Plex Mono";
1275
+ font-style: normal;
1276
+ font-weight: 700;
1277
+ font-display: swap;
1278
+ src: url("/assets/fonts/IBMPlexMono-Bold.woff2") format("woff2");
1279
+ }
1280
+
1281
+ @font-face {
1282
+ font-family: "IBM Plex Mono";
1283
+ font-style: italic;
1284
+ font-weight: 700;
1285
+ font-display: swap;
1286
+ src: url("/assets/fonts/IBMPlexMono-BoldItalic.woff2") format("woff2");
1287
+ }
1288
+
1289
+ @font-face {
1290
+ font-family: "IBM Plex Mono";
1291
+ font-style: italic;
1292
+ font-weight: 300;
1293
+ font-display: swap;
1294
+ src: url("/assets/fonts/IBMPlexMono-Italic.woff2") format("woff2");
1295
+ }
1296
+
1297
+ @font-face {
1298
+ font-family: "IBM Plex Mono";
1299
+ font-style: normal;
1300
+ font-weight: 300;
1301
+ font-display: swap;
1302
+ src: url("/assets/fonts/IBMPlexMono-Light.woff2") format("woff2");
1303
+ }
1304
+
1305
+ @font-face {
1306
+ font-family: "IBM Plex Mono";
1307
+ font-style: italic;
1308
+ font-weight: 300;
1309
+ font-display: swap;
1310
+ src: url("/assets/fonts/IBMPlexMono-LightItalic.woff2") format("woff2");
1311
+ }
1312
+
1313
+ @font-face {
1314
+ font-family: "IBM Plex Mono";
1315
+ font-style: normal;
1316
+ font-weight: 400;
1317
+ font-display: swap;
1318
+ src: url("/assets/fonts/IBMPlexMono-Regular.woff2") format("woff2");
1319
+ }
1320
+
1321
+ @font-face {
1322
+ font-family: "IBM Plex Mono";
1323
+ font-style: italic;
1324
+ font-weight: 500;
1325
+ font-display: swap;
1326
+ src: url("/assets/fonts/IBMPlexMono-Medium.woff2") format("woff2");
1327
+ }
1328
+
1329
+ @font-face {
1330
+ font-family: "IBM Plex Mono";
1331
+ font-style: italic;
1332
+ font-weight: 500;
1333
+ font-display: swap;
1334
+ src: url("/assets/fonts/IBMPlexMono-MediumItalic.woff2") format("woff2");
1335
+ }
1336
+
1337
+ @font-face {
1338
+ font-family: "IBM Plex Mono";
1339
+ font-style: italic;
1340
+ font-weight: 600;
1341
+ font-display: swap;
1342
+ src: url("/assets/fonts/IBMPlexMono-SemiBold.woff2") format("woff2");
1343
+ }
1344
+
1345
+ @font-face {
1346
+ font-family: "IBM Plex Mono";
1347
+ font-style: italic;
1348
+ font-weight: 600;
1349
+ font-display: swap;
1350
+ src: url("/assets/fonts/IBMPlexMono-SemiBoldItalic.woff2") format("woff2");
1351
+ }
1352
+
1353
+ @font-face {
1354
+ font-family: "IBM Plex Sans";
1355
+ font-style: normal;
1356
+ font-weight: 700;
1357
+ font-display: swap;
1358
+ src: url("/assets/fonts/IBMPlexSans-Bold.woff2") format("woff2");
1359
+ }
1360
+
1361
+ @font-face {
1362
+ font-family: "IBM Plex Sans";
1363
+ font-style: italic;
1364
+ font-weight: 700;
1365
+ font-display: swap;
1366
+ src: url("/assets/fonts/IBMPlexSans-BoldItalic.woff2") format("woff2");
1367
+ }
1368
+
1369
+ @font-face {
1370
+ font-family: "IBM Plex Sans";
1371
+ font-style: italic;
1372
+ font-weight: 400;
1373
+ font-display: swap;
1374
+ src: url("/assets/fonts/IBMPlexSans-Italic.woff2") format("woff2");
1375
+ }
1376
+
1377
+ @font-face {
1378
+ font-family: "IBM Plex Sans";
1379
+ font-style: normal;
1380
+ font-weight: 300;
1381
+ font-display: swap;
1382
+ src: url("/assets/fonts/IBMPlexSans-Light.woff2") format("woff2");
1383
+ }
1384
+
1385
+ @font-face {
1386
+ font-family: "IBM Plex Sans";
1387
+ font-style: italic;
1388
+ font-weight: 300;
1389
+ font-display: swap;
1390
+ src: url("/assets/fonts/IBMPlexSans-LightItalic.woff2") format("woff2");
1391
+ }
1392
+
1393
+ @font-face {
1394
+ font-family: "IBM Plex Sans";
1395
+ font-style: normal;
1396
+ font-weight: 400;
1397
+ font-display: swap;
1398
+ src: url("/assets/fonts/IBMPlexSans-Regular.woff2") format("woff2");
1399
+ }
1400
+
1401
+ @font-face {
1402
+ font-family: "IBM Plex Sans";
1403
+ font-style: italic;
1404
+ font-weight: 500;
1405
+ font-display: swap;
1406
+ src: url("/assets/fonts/IBMPlexSans-MediumItalic.woff2") format("woff2");
1407
+ }
1408
+
1409
+ @font-face {
1410
+ font-family: "IBM Plex Sans";
1411
+ font-style: normal;
1412
+ font-weight: 500;
1413
+ font-display: swap;
1414
+ src: url("/assets/fonts/IBMPlexSans-Medium.woff2") format("woff2");
1415
+ }
1416
+
1417
+ @font-face {
1418
+ font-family: "IBM Plex Sans";
1419
+ font-style: normal;
1420
+ font-weight: 600;
1421
+ font-display: swap;
1422
+ src: url("/assets/fonts/IBMPlexSans-SemiBold.woff2") format("woff2");
1423
+ }
1424
+
1425
+ @font-face {
1426
+ font-family: "IBM Plex Sans";
1427
+ font-style: italic;
1428
+ font-weight: 600;
1429
+ font-display: swap;
1430
+ src: url("/assets/fonts/IBMPlexSans-SemiBoldItalic.woff2") format("woff2");
1431
+ }
1432
+
1433
+ @font-face {
1434
+ font-family: "IBM Plex Sans Condensed";
1435
+ font-style: normal;
1436
+ font-weight: 700;
1437
+ font-display: swap;
1438
+ src: url("/assets/fonts/IBMPlexSansCondensed-Bold.woff2") format("woff2");
1439
+ }
1440
+
1441
+ @font-face {
1442
+ font-family: "IBM Plex Sans Condensed";
1443
+ font-style: italic;
1444
+ font-weight: 700;
1445
+ font-display: swap;
1446
+ src: url("/assets/fonts/IBMPlexSansCondensed-BoldItalic.woff2") format("woff2");
1447
+ }
1448
+
1449
+ @font-face {
1450
+ font-family: "IBM Plex Sans Condensed";
1451
+ font-style: italic;
1452
+ font-weight: 300;
1453
+ font-display: swap;
1454
+ src: url("/assets/fonts/IBMPlexSansCondensed-Italic.woff2") format("woff2");
1455
+ }
1456
+
1457
+ @font-face {
1458
+ font-family: "IBM Plex Sans Condensed";
1459
+ font-style: normal;
1460
+ font-weight: 300;
1461
+ font-display: swap;
1462
+ src: url("/assets/fonts/IBMPlexSansCondensed-Light.woff2") format("woff2");
1463
+ }
1464
+
1465
+ @font-face {
1466
+ font-family: "IBM Plex Sans Condensed";
1467
+ font-style: italic;
1468
+ font-weight: 300;
1469
+ font-display: swap;
1470
+ src: url("/assets/fonts/IBMPlexSansCondensed-LightItalic.woff2") format("woff2");
1471
+ }
1472
+
1473
+ @font-face {
1474
+ font-family: "IBM Plex Sans Condensed";
1475
+ font-style: normal;
1476
+ font-weight: 400;
1477
+ font-display: swap;
1478
+ src: url("/assets/fonts/IBMPlexSansCondensed-Regular.woff2") format("woff2");
1479
+ }
1480
+
1481
+ @font-face {
1482
+ font-family: "IBM Plex Sans Condensed";
1483
+ font-style: normal;
1484
+ font-weight: 500;
1485
+ font-display: swap;
1486
+ src: url("/assets/fonts/IBMPlexSansCondensed-Medium.woff2") format("woff2");
1487
+ }
1488
+
1489
+ @font-face {
1490
+ font-family: "IBM Plex Sans Condensed";
1491
+ font-style: italic;
1492
+ font-weight: 500;
1493
+ font-display: swap;
1494
+ src: url("/assets/fonts/IBMPlexSansCondensed-MediumItalic.woff2") format("woff2");
1495
+ }
1496
+
1497
+ @font-face {
1498
+ font-family: "IBM Plex Sans Condensed";
1499
+ font-style: normal;
1500
+ font-weight: 600;
1501
+ font-display: swap;
1502
+ src: url("/assets/fonts/IBMPlexSansCondensed-SemiBold.woff2") format("woff2");
1503
+ }
1504
+
1505
+ @font-face {
1506
+ font-family: "IBM Plex Sans Condensed";
1507
+ font-style: italic;
1508
+ font-weight: 600;
1509
+ font-display: swap;
1510
+ src: url("/assets/fonts/IBMPlexSansCondensed-SemiBoldItalic.woff2") format("woff2");
1511
+ }
1512
+