@robr0/design-system 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/README.md +2 -2
  2. package/components/AgentStatus/AgentStatus.css +82 -22
  3. package/components/AgentStatus/AgentStatus.d.ts +6 -2
  4. package/components/AgentStatus/AgentStatus.js +38 -6
  5. package/components/AiButton/AiButton.css +163 -0
  6. package/components/AiButton/AiButton.d.ts +36 -0
  7. package/components/AiButton/AiButton.js +58 -0
  8. package/components/ChatHeader/ChatHeader.css +35 -0
  9. package/components/ChatHeader/ChatHeader.d.ts +30 -0
  10. package/components/ChatHeader/ChatHeader.js +17 -0
  11. package/components/ChatMarker/ChatMarker.css +52 -0
  12. package/components/ChatMarker/ChatMarker.d.ts +22 -0
  13. package/components/ChatMarker/ChatMarker.js +18 -0
  14. package/components/ChatMessage/ChatMessage.css +304 -0
  15. package/components/ChatMessage/ChatMessage.d.ts +68 -0
  16. package/components/ChatMessage/ChatMessage.js +69 -0
  17. package/components/ChatThread/ChatThread.css +171 -0
  18. package/components/ChatThread/ChatThread.d.ts +41 -0
  19. package/components/ChatThread/ChatThread.js +174 -0
  20. package/components/Chip/Chip.css +27 -0
  21. package/components/Chip/Chip.d.ts +2 -2
  22. package/components/CircularButton/CircularButton.d.ts +23 -8
  23. package/components/CircularButton/CircularButton.js +54 -52
  24. package/components/CodeBlock/CodeBlock.css +2 -2
  25. package/components/Composer/Composer.css +164 -0
  26. package/components/Composer/Composer.d.ts +67 -0
  27. package/components/Composer/Composer.js +120 -0
  28. package/components/DocumentChip/DocumentChip.css +181 -0
  29. package/components/DocumentChip/DocumentChip.d.ts +41 -0
  30. package/components/DocumentChip/DocumentChip.js +78 -0
  31. package/components/InterruptCard/InterruptCard.css +164 -0
  32. package/components/InterruptCard/InterruptCard.d.ts +55 -0
  33. package/components/InterruptCard/InterruptCard.js +57 -0
  34. package/components/MessageActions/MessageActions.css +76 -0
  35. package/components/MessageActions/MessageActions.d.ts +38 -0
  36. package/components/MessageActions/MessageActions.js +33 -0
  37. package/components/MessageCard/MessageCard.css +112 -0
  38. package/components/MessageCard/MessageCard.d.ts +35 -0
  39. package/components/MessageCard/MessageCard.js +28 -0
  40. package/components/NavList/NavList.css +155 -0
  41. package/components/NavList/NavList.d.ts +56 -0
  42. package/components/NavList/NavList.js +99 -0
  43. package/components/PromptSuggestions/PromptSuggestions.css +87 -0
  44. package/components/PromptSuggestions/PromptSuggestions.d.ts +51 -0
  45. package/components/PromptSuggestions/PromptSuggestions.js +34 -0
  46. package/components/Prose/Prose.css +252 -0
  47. package/components/Prose/Prose.d.ts +21 -0
  48. package/components/Prose/Prose.js +14 -0
  49. package/components/Reasoning/Reasoning.css +149 -25
  50. package/components/Reasoning/Reasoning.d.ts +19 -0
  51. package/components/Reasoning/Reasoning.js +32 -3
  52. package/components/SourceChip/SourceChip.css +102 -0
  53. package/components/SourceChip/SourceChip.d.ts +32 -0
  54. package/components/SourceChip/SourceChip.js +31 -0
  55. package/components/Stat/Stat.css +2 -2
  56. package/components/ToolCall/ToolCall.css +3 -3
  57. package/components/registry.json +113 -1
  58. package/components/registry.json.d.ts +113 -1
  59. package/components/registry.json.js +1 -1
  60. package/index.d.ts +14 -0
  61. package/index.js +28 -0
  62. package/package.json +1 -1
  63. package/tokens/registry.json +12 -0
  64. package/tokens/registry.json.d.ts +12 -0
  65. package/tokens/registry.json.js +1 -1
  66. package/tokens/tokens-dark.css +13 -0
  67. package/tokens/tokens-light.css +42 -0
  68. package/tokens/tokens-typography.css +24 -0
@@ -18,6 +18,9 @@
18
18
  "--color-action-primary-text-active",
19
19
  "--color-action-primary-text-secondary",
20
20
  "--color-action-primary-text-tertiary",
21
+ "--color-ai-gradient-end",
22
+ "--color-ai-gradient-mid",
23
+ "--color-ai-gradient-start",
21
24
  "--color-bg-container-border",
22
25
  "--color-bg-container-inverse",
23
26
  "--color-bg-container-primary",
@@ -32,6 +35,10 @@
32
35
  "--color-chart-contribution-2",
33
36
  "--color-chart-contribution-3",
34
37
  "--color-chart-contribution-4",
38
+ "--color-chat-bubble-received-bg",
39
+ "--color-chat-bubble-received-text",
40
+ "--color-chat-bubble-sent-bg",
41
+ "--color-chat-bubble-sent-text",
35
42
  "--color-control-thumb",
36
43
  "--color-core-accent-amber",
37
44
  "--color-core-accent-cobalt",
@@ -87,6 +94,7 @@
87
94
  "--font-display-2-line-height",
88
95
  "--font-display-2-size",
89
96
  "--font-display-2-weight",
97
+ "--font-family-code",
90
98
  "--font-family-primary",
91
99
  "--font-heading-1-family",
92
100
  "--font-heading-1-letter-spacing",
@@ -151,13 +159,17 @@
151
159
  "--gap-sm-md",
152
160
  "--gap-xl",
153
161
  "--gap-xs",
162
+ "--gap-xxl",
154
163
  "--gap-xxs",
164
+ "--gap-xxxl",
165
+ "--gap-xxxxl",
155
166
  "--padding-lg",
156
167
  "--padding-md",
157
168
  "--padding-sm",
158
169
  "--padding-sm-md",
159
170
  "--padding-xl",
160
171
  "--padding-xs",
172
+ "--padding-xxl",
161
173
  "--padding-xxs",
162
174
  "--padding-xxxs"
163
175
  ],
@@ -18,6 +18,9 @@ declare const _default: {
18
18
  "--color-action-primary-text-active",
19
19
  "--color-action-primary-text-secondary",
20
20
  "--color-action-primary-text-tertiary",
21
+ "--color-ai-gradient-end",
22
+ "--color-ai-gradient-mid",
23
+ "--color-ai-gradient-start",
21
24
  "--color-bg-container-border",
22
25
  "--color-bg-container-inverse",
23
26
  "--color-bg-container-primary",
@@ -32,6 +35,10 @@ declare const _default: {
32
35
  "--color-chart-contribution-2",
33
36
  "--color-chart-contribution-3",
34
37
  "--color-chart-contribution-4",
38
+ "--color-chat-bubble-received-bg",
39
+ "--color-chat-bubble-received-text",
40
+ "--color-chat-bubble-sent-bg",
41
+ "--color-chat-bubble-sent-text",
35
42
  "--color-control-thumb",
36
43
  "--color-core-accent-amber",
37
44
  "--color-core-accent-cobalt",
@@ -87,6 +94,7 @@ declare const _default: {
87
94
  "--font-display-2-line-height",
88
95
  "--font-display-2-size",
89
96
  "--font-display-2-weight",
97
+ "--font-family-code",
90
98
  "--font-family-primary",
91
99
  "--font-heading-1-family",
92
100
  "--font-heading-1-letter-spacing",
@@ -151,13 +159,17 @@ declare const _default: {
151
159
  "--gap-sm-md",
152
160
  "--gap-xl",
153
161
  "--gap-xs",
162
+ "--gap-xxl",
154
163
  "--gap-xxs",
164
+ "--gap-xxxl",
165
+ "--gap-xxxxl",
155
166
  "--padding-lg",
156
167
  "--padding-md",
157
168
  "--padding-sm",
158
169
  "--padding-sm-md",
159
170
  "--padding-xl",
160
171
  "--padding-xs",
172
+ "--padding-xxl",
161
173
  "--padding-xxs",
162
174
  "--padding-xxxs"
163
175
  ],
@@ -1,4 +1,4 @@
1
- const categories = { "colour": ["--color-action-icon-active", "--color-action-icon-default", "--color-action-passive-bg", "--color-action-passive-bg-active", "--color-action-passive-bg-hover", "--color-action-passive-text", "--color-action-primary-bg", "--color-action-primary-bg-active", "--color-action-primary-bg-hover", "--color-action-primary-border", "--color-action-primary-border-secondary", "--color-action-primary-border-tertiary", "--color-action-primary-text", "--color-action-primary-text-active", "--color-action-primary-text-secondary", "--color-action-primary-text-tertiary", "--color-bg-container-border", "--color-bg-container-inverse", "--color-bg-container-primary", "--color-bg-container-primary-semi", "--color-bg-container-primary-transparent", "--color-bg-container-secondary", "--color-bg-container-tertiary", "--color-bg-page-inverse", "--color-bg-page-primary", "--color-chart-contribution-0", "--color-chart-contribution-1", "--color-chart-contribution-2", "--color-chart-contribution-3", "--color-chart-contribution-4", "--color-control-thumb", "--color-core-accent-amber", "--color-core-accent-cobalt", "--color-core-accent-coral", "--color-core-accent-gold", "--color-core-accent-mint", "--color-core-accent-violet", "--color-core-ui-primary", "--color-core-ui-secondary", "--color-divider", "--color-icon-primary", "--color-icon-secondary", "--color-input-bg-disabled", "--color-input-bg-primary", "--color-input-border-disabled", "--color-input-border-hover", "--color-input-border-primary", "--color-input-border-selected", "--color-input-text-disabled", "--color-input-text-inverse", "--color-input-text-placeholder", "--color-input-text-primary", "--color-scrim", "--color-status-error-bg", "--color-status-error-border", "--color-status-error-text", "--color-status-info-bg", "--color-status-info-border", "--color-status-info-text", "--color-status-neutral-bg", "--color-status-neutral-border", "--color-status-neutral-text", "--color-status-positive-bg", "--color-status-positive-border", "--color-status-positive-text", "--color-status-warning-bg", "--color-status-warning-border", "--color-status-warning-text", "--color-text-inverse", "--color-text-on-inverse", "--color-text-primary", "--color-text-secondary", "--color-text-tertiary"], "typography": ["--font-display-1-family", "--font-display-1-letter-spacing", "--font-display-1-line-height", "--font-display-1-size", "--font-display-1-weight", "--font-display-2-family", "--font-display-2-letter-spacing", "--font-display-2-line-height", "--font-display-2-size", "--font-display-2-weight", "--font-family-primary", "--font-heading-1-family", "--font-heading-1-letter-spacing", "--font-heading-1-line-height", "--font-heading-1-size", "--font-heading-1-weight", "--font-heading-2-family", "--font-heading-2-letter-spacing", "--font-heading-2-line-height", "--font-heading-2-size", "--font-heading-2-weight", "--font-heading-3-family", "--font-heading-3-letter-spacing", "--font-heading-3-line-height", "--font-heading-3-size", "--font-heading-3-weight", "--font-mega-1-family", "--font-mega-1-letter-spacing", "--font-mega-1-line-height", "--font-mega-1-size", "--font-mega-1-weight", "--font-mega-2-family", "--font-mega-2-letter-spacing", "--font-mega-2-line-height", "--font-mega-2-size", "--font-mega-2-weight", "--font-paragraph-em-family", "--font-paragraph-em-letter-spacing", "--font-paragraph-em-line-height", "--font-paragraph-em-size", "--font-paragraph-em-weight", "--font-paragraph-family", "--font-paragraph-letter-spacing", "--font-paragraph-line-height", "--font-paragraph-size", "--font-paragraph-sm-em-family", "--font-paragraph-sm-em-letter-spacing", "--font-paragraph-sm-em-line-height", "--font-paragraph-sm-em-size", "--font-paragraph-sm-em-weight", "--font-paragraph-sm-family", "--font-paragraph-sm-letter-spacing", "--font-paragraph-sm-line-height", "--font-paragraph-sm-size", "--font-paragraph-sm-weight", "--font-paragraph-weight", "--font-sub-display-family", "--font-sub-display-letter-spacing", "--font-sub-display-line-height", "--font-sub-display-size", "--font-sub-display-weight", "--font-title-body-family", "--font-title-body-letter-spacing", "--font-title-body-line-height", "--font-title-body-size", "--font-title-body-weight"], "spacing": ["--gap-lg", "--gap-md", "--gap-sm", "--gap-sm-md", "--gap-xl", "--gap-xs", "--gap-xxs", "--padding-lg", "--padding-md", "--padding-sm", "--padding-sm-md", "--padding-xl", "--padding-xs", "--padding-xxs", "--padding-xxxs"], "radius": ["--radius-full", "--radius-lg", "--radius-md", "--radius-sm", "--radius-xl", "--radius-xs", "--radius-xxl", "--radius-xxs"], "border": ["--border-md", "--border-xs"], "shadow": ["--shadow-floating", "--shadow-modal"], "icons": ["--icon-size-lg", "--icon-size-md", "--icon-size-sm", "--icon-size-xl"], "motion": ["--motion-duration-base", "--motion-duration-deliberate", "--motion-duration-fast", "--motion-duration-loop-matrix", "--motion-duration-loop-shimmer", "--motion-duration-loop-spin", "--motion-duration-slow", "--motion-duration-slower", "--motion-ease-emphasized", "--motion-ease-entrance", "--motion-ease-linear", "--motion-ease-spring", "--motion-ease-standard"] };
1
+ const categories = { "colour": ["--color-action-icon-active", "--color-action-icon-default", "--color-action-passive-bg", "--color-action-passive-bg-active", "--color-action-passive-bg-hover", "--color-action-passive-text", "--color-action-primary-bg", "--color-action-primary-bg-active", "--color-action-primary-bg-hover", "--color-action-primary-border", "--color-action-primary-border-secondary", "--color-action-primary-border-tertiary", "--color-action-primary-text", "--color-action-primary-text-active", "--color-action-primary-text-secondary", "--color-action-primary-text-tertiary", "--color-ai-gradient-end", "--color-ai-gradient-mid", "--color-ai-gradient-start", "--color-bg-container-border", "--color-bg-container-inverse", "--color-bg-container-primary", "--color-bg-container-primary-semi", "--color-bg-container-primary-transparent", "--color-bg-container-secondary", "--color-bg-container-tertiary", "--color-bg-page-inverse", "--color-bg-page-primary", "--color-chart-contribution-0", "--color-chart-contribution-1", "--color-chart-contribution-2", "--color-chart-contribution-3", "--color-chart-contribution-4", "--color-chat-bubble-received-bg", "--color-chat-bubble-received-text", "--color-chat-bubble-sent-bg", "--color-chat-bubble-sent-text", "--color-control-thumb", "--color-core-accent-amber", "--color-core-accent-cobalt", "--color-core-accent-coral", "--color-core-accent-gold", "--color-core-accent-mint", "--color-core-accent-violet", "--color-core-ui-primary", "--color-core-ui-secondary", "--color-divider", "--color-icon-primary", "--color-icon-secondary", "--color-input-bg-disabled", "--color-input-bg-primary", "--color-input-border-disabled", "--color-input-border-hover", "--color-input-border-primary", "--color-input-border-selected", "--color-input-text-disabled", "--color-input-text-inverse", "--color-input-text-placeholder", "--color-input-text-primary", "--color-scrim", "--color-status-error-bg", "--color-status-error-border", "--color-status-error-text", "--color-status-info-bg", "--color-status-info-border", "--color-status-info-text", "--color-status-neutral-bg", "--color-status-neutral-border", "--color-status-neutral-text", "--color-status-positive-bg", "--color-status-positive-border", "--color-status-positive-text", "--color-status-warning-bg", "--color-status-warning-border", "--color-status-warning-text", "--color-text-inverse", "--color-text-on-inverse", "--color-text-primary", "--color-text-secondary", "--color-text-tertiary"], "typography": ["--font-display-1-family", "--font-display-1-letter-spacing", "--font-display-1-line-height", "--font-display-1-size", "--font-display-1-weight", "--font-display-2-family", "--font-display-2-letter-spacing", "--font-display-2-line-height", "--font-display-2-size", "--font-display-2-weight", "--font-family-code", "--font-family-primary", "--font-heading-1-family", "--font-heading-1-letter-spacing", "--font-heading-1-line-height", "--font-heading-1-size", "--font-heading-1-weight", "--font-heading-2-family", "--font-heading-2-letter-spacing", "--font-heading-2-line-height", "--font-heading-2-size", "--font-heading-2-weight", "--font-heading-3-family", "--font-heading-3-letter-spacing", "--font-heading-3-line-height", "--font-heading-3-size", "--font-heading-3-weight", "--font-mega-1-family", "--font-mega-1-letter-spacing", "--font-mega-1-line-height", "--font-mega-1-size", "--font-mega-1-weight", "--font-mega-2-family", "--font-mega-2-letter-spacing", "--font-mega-2-line-height", "--font-mega-2-size", "--font-mega-2-weight", "--font-paragraph-em-family", "--font-paragraph-em-letter-spacing", "--font-paragraph-em-line-height", "--font-paragraph-em-size", "--font-paragraph-em-weight", "--font-paragraph-family", "--font-paragraph-letter-spacing", "--font-paragraph-line-height", "--font-paragraph-size", "--font-paragraph-sm-em-family", "--font-paragraph-sm-em-letter-spacing", "--font-paragraph-sm-em-line-height", "--font-paragraph-sm-em-size", "--font-paragraph-sm-em-weight", "--font-paragraph-sm-family", "--font-paragraph-sm-letter-spacing", "--font-paragraph-sm-line-height", "--font-paragraph-sm-size", "--font-paragraph-sm-weight", "--font-paragraph-weight", "--font-sub-display-family", "--font-sub-display-letter-spacing", "--font-sub-display-line-height", "--font-sub-display-size", "--font-sub-display-weight", "--font-title-body-family", "--font-title-body-letter-spacing", "--font-title-body-line-height", "--font-title-body-size", "--font-title-body-weight"], "spacing": ["--gap-lg", "--gap-md", "--gap-sm", "--gap-sm-md", "--gap-xl", "--gap-xs", "--gap-xxl", "--gap-xxs", "--gap-xxxl", "--gap-xxxxl", "--padding-lg", "--padding-md", "--padding-sm", "--padding-sm-md", "--padding-xl", "--padding-xs", "--padding-xxl", "--padding-xxs", "--padding-xxxs"], "radius": ["--radius-full", "--radius-lg", "--radius-md", "--radius-sm", "--radius-xl", "--radius-xs", "--radius-xxl", "--radius-xxs"], "border": ["--border-md", "--border-xs"], "shadow": ["--shadow-floating", "--shadow-modal"], "icons": ["--icon-size-lg", "--icon-size-md", "--icon-size-sm", "--icon-size-xl"], "motion": ["--motion-duration-base", "--motion-duration-deliberate", "--motion-duration-fast", "--motion-duration-loop-matrix", "--motion-duration-loop-shimmer", "--motion-duration-loop-spin", "--motion-duration-slow", "--motion-duration-slower", "--motion-ease-emphasized", "--motion-ease-entrance", "--motion-ease-linear", "--motion-ease-spring", "--motion-ease-standard"] };
2
2
  const registry = {
3
3
  categories
4
4
  };
@@ -33,6 +33,13 @@
33
33
  /* Divider */
34
34
  --color-divider: var(--primitive-neutral-08-semi);
35
35
 
36
+ /* Chat bubbles — alias the same roles as light; the underlying container
37
+ and text tokens carry the theme swap. */
38
+ --color-chat-bubble-sent-bg: var(--color-bg-container-secondary);
39
+ --color-chat-bubble-sent-text: var(--color-text-primary);
40
+ --color-chat-bubble-received-bg: var(--color-bg-container-secondary);
41
+ --color-chat-bubble-received-text: var(--color-text-primary);
42
+
36
43
  /* Overlay & controls */
37
44
  --color-scrim: var(--primitive-true-black-strong);
38
45
  --color-control-thumb: var(--primitive-neutral-01);
@@ -88,6 +95,12 @@
88
95
  --color-status-neutral-border: var(--primitive-neutral-06);
89
96
  --color-status-neutral-text: var(--primitive-neutral-01);
90
97
 
98
+ /* AI - The gradient accent, one step brighter than light mode so the ring
99
+ stays luminous on dark surfaces. */
100
+ --color-ai-gradient-start: var(--primitive-purple-05);
101
+ --color-ai-gradient-mid: var(--primitive-blue-05);
102
+ --color-ai-gradient-end: var(--primitive-teal-05);
103
+
91
104
  /* Chart - Contribution heatmap ramp (level 0 = none → level 4 = most) */
92
105
  --color-chart-contribution-0: var(--primitive-neutral-08);
93
106
  --color-chart-contribution-1: var(--primitive-green-10);
@@ -34,6 +34,15 @@
34
34
  /* Divider */
35
35
  --color-divider: var(--primitive-neutral-02-semi);
36
36
 
37
+ /* Chat bubbles — sent (the person) and received (the agent). Both alias
38
+ the container-secondary / text-primary pair today; they exist as their
39
+ own roles so chat surfaces can be re-themed later without touching the
40
+ container ramp. */
41
+ --color-chat-bubble-sent-bg: var(--color-bg-container-secondary);
42
+ --color-chat-bubble-sent-text: var(--color-text-primary);
43
+ --color-chat-bubble-received-bg: var(--color-bg-container-secondary);
44
+ --color-chat-bubble-received-text: var(--color-text-primary);
45
+
37
46
  /* Overlay & controls */
38
47
  --color-scrim: var(--primitive-true-black-semi);
39
48
  --color-control-thumb: var(--primitive-neutral-00);
@@ -99,6 +108,14 @@
99
108
  --color-status-neutral-border: var(--primitive-neutral-07);
100
109
  --color-status-neutral-text: var(--primitive-neutral-08);
101
110
 
111
+ /* AI - The gradient accent reserved for AI entry points and surfaces.
112
+ Purple → blue → teal, so the AI affordance is its own signature and the
113
+ flat action teal keeps meaning "click here". Used as gradient stops
114
+ (AiButton's ring and glow), never as fills for ordinary chrome. */
115
+ --color-ai-gradient-start: var(--primitive-purple-06);
116
+ --color-ai-gradient-mid: var(--primitive-blue-06);
117
+ --color-ai-gradient-end: var(--primitive-teal-06);
118
+
102
119
  /* Chart - Contribution heatmap ramp (level 0 = none → level 4 = most) */
103
120
  --color-chart-contribution-0: var(--color-bg-container-primary);
104
121
  --color-chart-contribution-1: var(--primitive-green-02);
@@ -156,4 +173,29 @@
156
173
  --gap-md: var(--primitive-gap-md);
157
174
  --gap-lg: var(--primitive-gap-lg);
158
175
  --gap-xl: var(--primitive-gap-xl);
176
+
177
+ /* Section rhythm — page-level spacing between major blocks. These are
178
+ the only spacing tokens with a responsive step (see the collapse
179
+ block at the bottom of this file). */
180
+ --gap-xxl: var(--primitive-gap-xxl); /* 60px */
181
+ --gap-xxxl: var(--primitive-gap-xxxl); /* 80px */
182
+ --gap-xxxxl: var(--primitive-gap-xxxxl); /* 120px */
183
+ --padding-xxl: var(--primitive-padding-xxl); /* 60px */
184
+ }
185
+
186
+ /* ============================================
187
+ RESPONSIVE COLLAPSE
188
+ Section-rhythm spacing steps one notch down the primitive scale at
189
+ 768px — the token layer's only breakpoint (typography collapses at the
190
+ same threshold in tokens-typography.css). Component-level spacing
191
+ (gap/padding xl and below) never steps.
192
+ ============================================ */
193
+
194
+ @media (max-width: 768px) {
195
+ [data-theme="light"], :root {
196
+ --gap-xxl: var(--primitive-gap-xl); /* 60 → 40 */
197
+ --gap-xxxl: var(--primitive-gap-xxl); /* 80 → 60 */
198
+ --gap-xxxxl: var(--primitive-gap-xxxl); /* 120 → 80 */
199
+ --padding-xxl: var(--primitive-padding-xl); /* 60 → 40 */
200
+ }
159
201
  }
@@ -11,6 +11,11 @@
11
11
 
12
12
  --font-family-primary: 'Nunito Sans', sans-serif;
13
13
 
14
+ /* The one sanctioned monospace stack — CodeBlock, ToolCall names, and
15
+ Prose inline code. Anything monospace references this token. */
16
+ --font-family-code: ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Consolas,
17
+ monospace;
18
+
14
19
  /* ============================================
15
20
  DISPLAY STYLES (Large headlines)
16
21
  ============================================ */
@@ -114,3 +119,22 @@
114
119
  --font-paragraph-sm-em-line-height: 20px;
115
120
  --font-paragraph-sm-em-letter-spacing: 0;
116
121
  }
122
+
123
+ /* ============================================
124
+ RESPONSIVE COLLAPSE
125
+ The display tier steps down once, at 768px — the token layer's only
126
+ breakpoint. Headings and body never step; weights and letter-spacing
127
+ never change at any breakpoint (weight contrast is the hierarchy rule).
128
+ ============================================ */
129
+
130
+ @media (max-width: 768px) {
131
+ :root {
132
+ --font-mega-1-size: 64px;
133
+ --font-mega-2-size: 56px;
134
+ --font-display-1-size: 48px;
135
+ --font-display-2-size: 40px;
136
+ --font-display-2-line-height: 1.05;
137
+ --font-sub-display-size: 24px;
138
+ --font-sub-display-line-height: 36px;
139
+ }
140
+ }