@rdna/radiants 0.1.3 → 0.1.5

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 (61) hide show
  1. package/base.css +1 -1
  2. package/components/core/AppWindow/AppWindow.meta.ts +69 -0
  3. package/components/core/AppWindow/AppWindow.schema.json +55 -0
  4. package/components/core/AppWindow/AppWindow.test.tsx +150 -0
  5. package/components/core/AppWindow/AppWindow.tsx +830 -0
  6. package/components/core/Button/Button.test.tsx +18 -0
  7. package/components/core/Button/Button.tsx +26 -16
  8. package/components/core/DialPanel/DialPanel.tsx +1 -1
  9. package/components/core/Separator/Separator.tsx +1 -1
  10. package/components/core/Tabs/Tabs.tsx +14 -2
  11. package/components/core/__tests__/smoke.test.tsx +2 -0
  12. package/components/core/index.ts +1 -0
  13. package/contract/system.ts +18 -4
  14. package/dark.css +11 -1
  15. package/eslint/contract.mjs +1 -1
  16. package/eslint/index.mjs +10 -0
  17. package/eslint/rules/no-raw-font-family.mjs +91 -0
  18. package/eslint/rules/no-raw-line-height.mjs +119 -0
  19. package/fonts/.gitkeep +0 -0
  20. package/fonts/Mondwest-Bold.woff2 +0 -0
  21. package/fonts/Mondwest.woff2 +0 -0
  22. package/fonts/PixeloidSans-Bold.woff2 +0 -0
  23. package/fonts/PixeloidSans.woff2 +0 -0
  24. package/fonts/WavesBlackletterCPC-Base.woff2 +0 -0
  25. package/fonts/WavesTinyCPC-Extended.woff2 +0 -0
  26. package/fonts-core.css +70 -0
  27. package/fonts-editorial.css +45 -0
  28. package/fonts.css +19 -89
  29. package/generated/ai-contract.json +11 -2
  30. package/generated/contract.freshness.json +2 -1
  31. package/generated/eslint-contract.json +35 -4
  32. package/generated/figma/contracts/app-window.contract.json +82 -0
  33. package/generated/figma/primitive/color.tokens.json +9 -0
  34. package/generated/figma/primitive/shape.tokens.json +0 -4
  35. package/generated/figma/primitive/typography.tokens.json +16 -4
  36. package/generated/figma/rdna.tokens.json +28 -11
  37. package/generated/figma/semantic/semantic.tokens.json +3 -3
  38. package/generated/figma/tokens.d.ts +1 -1
  39. package/generated/figma/validation-report.json +1 -1
  40. package/icons/DesktopIcons.tsx +4 -3
  41. package/icons/Icon.tsx +10 -2
  42. package/icons/types.ts +7 -1
  43. package/meta/index.ts +6 -0
  44. package/package.json +6 -5
  45. package/patterns/pretext-type-scale.ts +115 -0
  46. package/pixel-corners.generated.css +15 -0
  47. package/schemas/index.ts +2 -0
  48. package/tokens.css +47 -21
  49. package/typography.css +10 -5
  50. package/fonts/PixelCode-Black-Italic.woff2 +0 -0
  51. package/fonts/PixelCode-Black.woff2 +0 -0
  52. package/fonts/PixelCode-DemiBold-Italic.woff2 +0 -0
  53. package/fonts/PixelCode-DemiBold.woff2 +0 -0
  54. package/fonts/PixelCode-ExtraBlack-Italic.woff2 +0 -0
  55. package/fonts/PixelCode-ExtraBlack.woff2 +0 -0
  56. package/fonts/PixelCode-ExtraBold-Italic.woff2 +0 -0
  57. package/fonts/PixelCode-ExtraBold.woff2 +0 -0
  58. package/fonts/PixelCode-ExtraLight-Italic.woff2 +0 -0
  59. package/fonts/PixelCode-ExtraLight.woff2 +0 -0
  60. package/fonts/PixelCode-Thin-Italic.woff2 +0 -0
  61. package/fonts/PixelCode-Thin.woff2 +0 -0
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Pretext Type Scale — JS-native fluid typography for canvas-based layouts.
3
+ *
4
+ * Single source of truth for text sizing in pretext consumers (GoodNews,
5
+ * editorial layouts, future content apps). Mirrors the design intent of the
6
+ * CSS fluid tokens in tokens.css but lives entirely in JS — no DOM, no
7
+ * reflow, no CSS dependency.
8
+ *
9
+ * Each tier defines a clamp(min, base + coeff × containerWidth/100, max)
10
+ * curve. The formula is identical to the CSS `clamp(min, base + Ncqi, max)`
11
+ * pattern, where 1cqi = 1% of container inline size.
12
+ *
13
+ * Usage:
14
+ * import { resolveFluid, fluidType } from '@rdna/radiants/patterns/pretext-type-scale'
15
+ * const fontSize = resolveFluid('xl', containerWidth) // → px number
16
+ */
17
+
18
+ // ---------------------------------------------------------------------------
19
+ // Scale definitions (px values — pretext operates in px)
20
+ // ---------------------------------------------------------------------------
21
+
22
+ export interface FluidTier {
23
+ /** Minimum size in px (floor) */
24
+ min: number;
25
+ /** Base offset in px (intercept when containerWidth = 0) */
26
+ base: number;
27
+ /** Scaling coefficient (multiplied by containerWidth / 100) */
28
+ coeff: number;
29
+ /** Maximum size in px (ceiling) */
30
+ max: number;
31
+ }
32
+
33
+ /**
34
+ * Fluid type tiers — each maps to the equivalent CSS fluid token.
35
+ *
36
+ * The preferred value is: base + coeff × (containerWidth / 100)
37
+ * This mirrors CSS: base_rem + coeff_cqi where 1cqi = 1% of container.
38
+ *
39
+ * Values derived from the CSS tokens (rem × 16 = px):
40
+ * --font-size-fluid-sm: clamp(0.75rem, 0.7rem + 0.25cqi, 0.875rem)
41
+ * --font-size-fluid-base: clamp(0.875rem, 0.8rem + 0.5cqi, 1.125rem)
42
+ * --font-size-fluid-lg: clamp(1rem, 0.9rem + 0.75cqi, 1.5rem)
43
+ * --font-size-fluid-xl: clamp(1.25rem, 1rem + 1.25cqi, 2rem)
44
+ * --font-size-fluid-2xl: clamp(1.5rem, 1.2rem + 1.75cqi, 2.5rem)
45
+ * --font-size-fluid-3xl: clamp(1.75rem, 1.4rem + 2.5cqi, 3.5rem)
46
+ * --font-size-fluid-4xl: clamp(2rem, 1.5rem + 3.5cqi, 4.5rem)
47
+ */
48
+ export const fluidType = {
49
+ sm: { min: 12, base: 11.2, coeff: 0.04, max: 14 },
50
+ base: { min: 14, base: 12.8, coeff: 0.08, max: 18 },
51
+ lg: { min: 16, base: 14.4, coeff: 0.12, max: 24 },
52
+ xl: { min: 20, base: 16, coeff: 0.20, max: 32 },
53
+ '2xl': { min: 24, base: 19.2, coeff: 0.28, max: 40 },
54
+ '3xl': { min: 28, base: 22.4, coeff: 0.40, max: 56 },
55
+ '4xl': { min: 32, base: 24, coeff: 0.56, max: 72 },
56
+ } as const satisfies Record<string, FluidTier>;
57
+
58
+ export type FluidTierName = keyof typeof fluidType;
59
+
60
+ // ---------------------------------------------------------------------------
61
+ // Resolver
62
+ // ---------------------------------------------------------------------------
63
+
64
+ /**
65
+ * Compute fluid font size for a given tier and container width.
66
+ *
67
+ * Returns a smooth px value — no Math.round stepping. The caller decides
68
+ * whether to round (canvas measureText handles fractional px fine).
69
+ *
70
+ * @param tier - Named tier from the scale (e.g. 'xl', '3xl')
71
+ * @param containerWidth - Width of the layout container in px
72
+ */
73
+ export function resolveFluid(tier: FluidTierName, containerWidth: number): number {
74
+ const { min, base, coeff, max } = fluidType[tier];
75
+ return Math.min(max, Math.max(min, base + coeff * containerWidth / 100));
76
+ }
77
+
78
+ /**
79
+ * Resolve fluid size from raw tier parameters (for one-off overrides).
80
+ */
81
+ export function resolveFluidRaw(tier: FluidTier, containerWidth: number): number {
82
+ const { min, base, coeff, max } = tier;
83
+ return Math.min(max, Math.max(min, base + coeff * containerWidth / 100));
84
+ }
85
+
86
+ // ---------------------------------------------------------------------------
87
+ // Spacing scale — all values are multipliers of bodyLh
88
+ // ---------------------------------------------------------------------------
89
+
90
+ /**
91
+ * Named spacing roles for editorial layouts.
92
+ *
93
+ * Every spacing value is a multiplier of `bodyLh` (body line-height) so
94
+ * spacing scales proportionally with type size. No magic pixel values.
95
+ *
96
+ * Usage:
97
+ * const gap = bodyLh * spacing.paragraph;
98
+ * const sectionBreak = bodyLh * spacing.section;
99
+ */
100
+ export const spacing = {
101
+ /** Between paragraphs in the same section */
102
+ paragraph: 0.75,
103
+ /** Before a heading (establishes new section) */
104
+ headingBefore: 1.5,
105
+ /** After a heading (ties heading to its content) */
106
+ headingAfter: 0.5,
107
+ /** Around horizontal rules */
108
+ rule: 0.5,
109
+ /** Between major sections (rule + gap) */
110
+ section: 2,
111
+ /** Column gutter (between column rules) */
112
+ column: 0.5,
113
+ } as const;
114
+
115
+ export type SpacingRole = keyof typeof spacing;
@@ -17,6 +17,7 @@
17
17
  .pixel-rounded-xl::after,
18
18
  .pixel-rounded-xl--wrapper::after,
19
19
  .pixel-rounded-t-sm-b-md::after,
20
+ .pixel-rounded-t-sm::after,
20
21
  .pixel-rounded-l-sm::after,
21
22
  .pixel-rounded-sm-notl::after {
22
23
  content: "";
@@ -46,6 +47,7 @@
46
47
  .pixel-rounded-xl,
47
48
  .pixel-rounded-xl--wrapper,
48
49
  .pixel-rounded-t-sm-b-md,
50
+ .pixel-rounded-t-sm,
49
51
  .pixel-rounded-l-sm,
50
52
  .pixel-rounded-sm-notl {
51
53
  position: relative;
@@ -58,6 +60,7 @@
58
60
  .pixel-corners,
59
61
  .pixel-rounded-xl,
60
62
  .pixel-rounded-t-sm-b-md,
63
+ .pixel-rounded-t-sm,
61
64
  .pixel-rounded-l-sm,
62
65
  .pixel-rounded-sm-notl {
63
66
  border: 1px solid transparent;
@@ -88,6 +91,10 @@
88
91
  border-radius: 0;
89
92
  }
90
93
 
94
+ .pixel-rounded-t-sm {
95
+ border-radius: 0;
96
+ }
97
+
91
98
  .pixel-rounded-l-sm {
92
99
  border-radius: 0;
93
100
  }
@@ -198,6 +205,14 @@
198
205
  clip-path: polygon(0px calc(100% - 9px), 1px calc(100% - 9px), 1px calc(100% - 8px), 1px calc(100% - 6px), 2px calc(100% - 6px), 2px calc(100% - 5px), 3px calc(100% - 5px), 3px calc(100% - 4px), 4px calc(100% - 3px), 5px calc(100% - 3px), 5px calc(100% - 2px), 6px calc(100% - 2px), 6px calc(100% - 1px), 8px calc(100% - 1px), 9px calc(100% - 1px), 9px 100%, calc(100% - 9px) 100%, calc(100% - 9px) calc(100% - 1px), calc(100% - 8px) calc(100% - 1px), calc(100% - 6px) calc(100% - 1px), calc(100% - 6px) calc(100% - 2px), calc(100% - 5px) calc(100% - 2px), calc(100% - 5px) calc(100% - 3px), calc(100% - 4px) calc(100% - 3px), calc(100% - 3px) calc(100% - 4px), calc(100% - 3px) calc(100% - 5px), calc(100% - 2px) calc(100% - 5px), calc(100% - 2px) calc(100% - 6px), calc(100% - 1px) calc(100% - 6px), calc(100% - 1px) calc(100% - 8px), calc(100% - 1px) calc(100% - 9px), 100% calc(100% - 9px), 100% 5px, calc(100% - 1px) 5px, calc(100% - 1px) 3px, calc(100% - 2px) 3px, calc(100% - 2px) 2px, calc(100% - 3px) 2px, calc(100% - 3px) 1px, calc(100% - 5px) 1px, calc(100% - 5px) 0px, 5px 0px, 5px 1px, 3px 1px, 3px 2px, 2px 2px, 2px 3px, 1px 3px, 1px 5px, 0px 5px, 0px 50%, 1px 50%, 1px 5px, 2px 5px, 2px 3px, 3px 3px, 3px 2px, 5px 2px, 5px 1px, calc(100% - 5px) 1px, calc(100% - 5px) 2px, calc(100% - 3px) 2px, calc(100% - 3px) 3px, calc(100% - 2px) 3px, calc(100% - 2px) 5px, calc(100% - 1px) 5px, calc(100% - 1px) calc(100% - 9px), calc(100% - 2px) calc(100% - 9px), calc(100% - 2px) calc(100% - 8px), calc(100% - 2px) calc(100% - 6px), calc(100% - 3px) calc(100% - 6px), calc(100% - 3px) calc(100% - 5px), calc(100% - 4px) calc(100% - 5px), calc(100% - 4px) calc(100% - 4px), calc(100% - 5px) calc(100% - 4px), calc(100% - 5px) calc(100% - 3px), calc(100% - 6px) calc(100% - 3px), calc(100% - 6px) calc(100% - 2px), calc(100% - 8px) calc(100% - 2px), calc(100% - 9px) calc(100% - 2px), calc(100% - 9px) calc(100% - 1px), 9px calc(100% - 1px), 9px calc(100% - 2px), 8px calc(100% - 2px), 6px calc(100% - 2px), 6px calc(100% - 3px), 5px calc(100% - 3px), 5px calc(100% - 4px), 4px calc(100% - 4px), 4px calc(100% - 5px), 3px calc(100% - 5px), 3px calc(100% - 6px), 2px calc(100% - 6px), 2px calc(100% - 8px), 2px calc(100% - 9px), 1px calc(100% - 9px), 1px 50%, 0px 50%);
199
206
  }
200
207
 
208
+ .pixel-rounded-t-sm {
209
+ clip-path: polygon(0px 100%, 100% 100%, 100% 5px, calc(100% - 1px) 5px, calc(100% - 1px) 3px, calc(100% - 2px) 3px, calc(100% - 2px) 2px, calc(100% - 3px) 2px, calc(100% - 3px) 1px, calc(100% - 5px) 1px, calc(100% - 5px) 0px, 5px 0px, 5px 1px, 3px 1px, 3px 2px, 2px 2px, 2px 3px, 1px 3px, 1px 5px, 0px 5px);
210
+ }
211
+
212
+ .pixel-rounded-t-sm::after {
213
+ clip-path: polygon(0px 100%, 100% 100%, 100% 5px, calc(100% - 1px) 5px, calc(100% - 1px) 3px, calc(100% - 2px) 3px, calc(100% - 2px) 2px, calc(100% - 3px) 2px, calc(100% - 3px) 1px, calc(100% - 5px) 1px, calc(100% - 5px) 0px, 5px 0px, 5px 1px, 3px 1px, 3px 2px, 2px 2px, 2px 3px, 1px 3px, 1px 5px, 0px 5px, 0px 50%, 1px 50%, 1px 5px, 2px 5px, 2px 3px, 3px 3px, 3px 2px, 5px 2px, 5px 1px, calc(100% - 5px) 1px, calc(100% - 5px) 2px, calc(100% - 3px) 2px, calc(100% - 3px) 3px, calc(100% - 2px) 3px, calc(100% - 2px) 5px, calc(100% - 1px) 5px, calc(100% - 1px) 100%, 1px 100%, 1px 50%, 0px 50%);
214
+ }
215
+
201
216
  .pixel-rounded-l-sm {
202
217
  clip-path: polygon(0px calc(100% - 5px), 1px calc(100% - 5px), 1px calc(100% - 3px), 2px calc(100% - 3px), 2px calc(100% - 2px), 3px calc(100% - 2px), 3px calc(100% - 1px), 5px calc(100% - 1px), 5px 100%, 100% 100%, 100% 0px, 5px 0px, 5px 1px, 3px 1px, 3px 2px, 2px 2px, 2px 3px, 1px 3px, 1px 5px, 0px 5px);
203
218
  }
package/schemas/index.ts CHANGED
@@ -3,6 +3,7 @@
3
3
 
4
4
  import AlertSchema from "../components/core/Alert/Alert.schema.json";
5
5
  import AlertDialogSchema from "../components/core/AlertDialog/AlertDialog.schema.json";
6
+ import AppWindowSchema from "../components/core/AppWindow/AppWindow.schema.json";
6
7
  import AvatarSchema from "../components/core/Avatar/Avatar.schema.json";
7
8
  import BadgeSchema from "../components/core/Badge/Badge.schema.json";
8
9
  import BreadcrumbsSchema from "../components/core/Breadcrumbs/Breadcrumbs.schema.json";
@@ -45,6 +46,7 @@ import TooltipSchema from "../components/core/Tooltip/Tooltip.schema.json";
45
46
  export const componentData = {
46
47
  Alert: { schema: AlertSchema },
47
48
  AlertDialog: { schema: AlertDialogSchema },
49
+ AppWindow: { schema: AppWindowSchema },
48
50
  Avatar: { schema: AvatarSchema },
49
51
  Badge: { schema: BadgeSchema },
50
52
  Breadcrumbs: { schema: BreadcrumbsSchema },
package/tokens.css CHANGED
@@ -14,6 +14,7 @@
14
14
  --color-pure-black: oklch(0.0000 0.0000 0); /* was #000000 */
15
15
  --color-sun-yellow: oklch(0.9126 0.1170 93.68); /* was #FCE184 */
16
16
  --color-sky-blue: oklch(0.7701 0.0527 236.81); /* was #95BAD2 */
17
+ --color-sky-blue-dark: oklch(0.47 0.08 237); /* WCAG AA compliant on cream bg (~6:1 contrast) */
17
18
  --color-sunset-fuzz: oklch(0.8546 0.1039 68.93); /* was #FCC383 */
18
19
  --color-sun-red: oklch(0.7429 0.1568 21.43); /* was #FF7F7F */
19
20
  --color-mint: oklch(0.9312 0.0702 142.51); /* was #CEF5CA */
@@ -46,7 +47,7 @@
46
47
  --color-sub: oklch(0.1641 0.0044 84.59 / 0.85);
47
48
  --color-mute: oklch(0.1641 0.0044 84.59 / 0.6);
48
49
  --color-flip: var(--color-cream);
49
- --color-link: var(--color-sky-blue);
50
+ --color-link: var(--color-sky-blue-dark);
50
51
 
51
52
  /* Borders */
52
53
  --color-line: var(--color-ink);
@@ -64,7 +65,7 @@
64
65
  --color-content-secondary: oklch(0.1641 0.0044 84.59 / 0.85); /* was rgba(15, 14, 12, 0.85) */
65
66
  --color-content-inverted: var(--color-cream);
66
67
  --color-content-muted: oklch(0.1641 0.0044 84.59 / 0.6); /* was rgba(15, 14, 12, 0.6) */
67
- --color-content-link: var(--color-sky-blue);
68
+ --color-content-link: var(--color-sky-blue-dark);
68
69
 
69
70
  /* ============================================
70
71
  SEMANTIC TOKENS - Edge
@@ -181,16 +182,21 @@
181
182
 
182
183
  /* ============================================
183
184
  TYPOGRAPHY SCALE
184
- Font sizes for the pixel-art aesthetic
185
+ Perfect fourth (1.333) from 16px base.
186
+ xs/sm are fixed for UI legibility.
187
+ base -> 5xl follow the ratio.
185
188
  ============================================ */
186
189
 
187
- --font-size-xs: 0.625rem; /* 10px - small labels */
188
- --font-size-sm: 0.75rem; /* 12px - buttons, small UI */
189
- --font-size-base: 1rem; /* 16px - body text (at max root) */
190
- --font-size-lg: 1.25rem; /* 20px - large body */
191
- --font-size-xl: 1.5rem; /* 24px - headings */
192
- --font-size-2xl: 1.75rem; /* 28px - headings */
193
- --font-size-3xl: 2rem; /* 32px - display */
190
+ --font-size-xs: 0.625rem; /* 10px - fixed: small labels */
191
+ --font-size-sm: 0.75rem; /* 12px - fixed: buttons, small UI */
192
+ --font-size-base: 1rem; /* 16px - base */
193
+ --font-size-lg: 1.333rem; /* ~21px - base x 1.333 */
194
+ --font-size-xl: 1.777rem; /* ~28px - base x 1.333^2 */
195
+ --font-size-2xl: 2.369rem; /* ~38px - base x 1.333^3 */
196
+ --font-size-3xl: 3.157rem; /* ~50px - base x 1.333^4 */
197
+ --font-size-4xl: 4.209rem; /* ~67px - base x 1.333^5 */
198
+ --font-size-5xl: 5.61rem; /* ~90px - base x 1.333^6 */
199
+ --font-size-display: 5.61rem; /* alias: same as 5xl, named for hero/display use */
194
200
 
195
201
  /* ============================================
196
202
  MOTION - Duration
@@ -237,17 +243,6 @@
237
243
 
238
244
  --touch-target-min: 44px; /* WCAG AA minimum */
239
245
  --touch-target-comfortable: 48px;
240
- --touch-target-default: var(--touch-target-comfortable);
241
-
242
- /* ============================================
243
- DENSITY
244
- Attribute-driven spacing/touch affordances
245
- ============================================ */
246
-
247
- --density-compact: 0.5;
248
- --density-default: 1;
249
- --density-comfortable: 1.5;
250
- --density-scale: var(--density-comfortable);
251
246
 
252
247
  /* ============================================
253
248
  Z-INDEX SCALE
@@ -267,6 +262,37 @@
267
262
  --z-index-system: 900; /* Invert overlay, system effects */
268
263
  }
269
264
 
265
+ /* =============================================================================
266
+ FLUID TYPOGRAPHY
267
+ Container-query-based fluid scaling.
268
+ Uses cqi (container query inline) units so text scales with
269
+ AppWindow width, not viewport.
270
+
271
+ Formula: clamp(min, preferred, max)
272
+ Preferred uses cqi to create smooth scaling.
273
+ Min/max lock to slightly below/above the static scale values.
274
+
275
+ Outside a container context cqi resolves to 0, so the clamp()
276
+ min value takes over — safe for Taskbar, StartMenu, etc.
277
+
278
+ Placed in @layer base (not @theme) because cqi is a runtime-
279
+ relative unit that Tailwind v4 cannot resolve at build time.
280
+ Use via: text-[length:var(--font-size-fluid-base)] syntax,
281
+ or apply directly in CSS: font-size: var(--font-size-fluid-lg).
282
+ ============================================================================= */
283
+
284
+ @layer base {
285
+ :root {
286
+ --font-size-fluid-sm: clamp(0.75rem, 0.7rem + 0.25cqi, 0.875rem);
287
+ --font-size-fluid-base: clamp(0.875rem, 0.8rem + 0.5cqi, 1.125rem);
288
+ --font-size-fluid-lg: clamp(1rem, 0.9rem + 0.75cqi, 1.5rem);
289
+ --font-size-fluid-xl: clamp(1.25rem, 1rem + 1.25cqi, 2rem);
290
+ --font-size-fluid-2xl: clamp(1.5rem, 1.2rem + 1.75cqi, 2.5rem);
291
+ --font-size-fluid-3xl: clamp(1.75rem, 1.4rem + 2.5cqi, 3.5rem);
292
+ --font-size-fluid-4xl: clamp(2rem, 1.5rem + 3.5cqi, 4.5rem);
293
+ }
294
+ }
295
+
270
296
  /* =============================================================================
271
297
  REDUCED MOTION SUPPORT
272
298
  Respects user preference for reduced motion
package/typography.css CHANGED
@@ -11,23 +11,28 @@
11
11
  ============================================ */
12
12
 
13
13
  h1 {
14
- @apply text-4xl font-heading font-bold leading-none tracking-tight text-main;
14
+ @apply font-heading font-bold leading-none tracking-tight text-main;
15
+ font-size: var(--font-size-fluid-4xl);
15
16
  }
16
17
 
17
18
  h2 {
18
- @apply text-3xl font-heading font-normal leading-none tracking-tight text-main;
19
+ @apply font-heading font-normal leading-none tracking-tight text-main;
20
+ font-size: var(--font-size-fluid-3xl);
19
21
  }
20
22
 
21
23
  h3 {
22
- @apply text-2xl font-heading font-semibold leading-none tracking-tight text-main;
24
+ @apply font-heading font-semibold leading-none tracking-tight text-main;
25
+ font-size: var(--font-size-fluid-2xl);
23
26
  }
24
27
 
25
28
  h4 {
26
- @apply text-xl font-heading font-medium leading-none tracking-tight text-main;
29
+ @apply font-heading font-medium leading-none tracking-tight text-main;
30
+ font-size: var(--font-size-fluid-xl);
27
31
  }
28
32
 
29
33
  h5 {
30
- @apply text-lg font-heading font-medium leading-none tracking-tight text-main;
34
+ @apply font-heading font-medium leading-none tracking-tight text-main;
35
+ font-size: var(--font-size-fluid-lg);
31
36
  }
32
37
 
33
38
  h6 {
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file