@mcp-b/react-components 0.41.0 → 0.42.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 (114) hide show
  1. package/dist/{ThinkChatActivity-DyGHj01E.d.ts → ThinkChatActivity-CsDql-ER.d.ts} +3 -0
  2. package/dist/{WorkspaceFileView-D0yFwoDr.js → WorkspaceFileView-DwdXiKku.js} +15 -20
  3. package/dist/components/agents-sdk/AgentActivity.js +3 -2
  4. package/dist/components/agents-sdk/AgentChat.js +1 -0
  5. package/dist/components/agents-sdk/BrowserRunPanel.js +2 -1
  6. package/dist/components/agents-sdk/ManagerOffice.d.ts +39 -27
  7. package/dist/components/agents-sdk/ManagerOffice.js +80 -44
  8. package/dist/components/agents-sdk/McpPluginCatalog.js +4 -2
  9. package/dist/components/agents-sdk/ModelSelector.js +1 -1
  10. package/dist/components/agents-sdk/SubagentRunSelector.js +1 -1
  11. package/dist/components/agents-sdk/ThinkChat.d.ts +1 -1
  12. package/dist/components/agents-sdk/ThinkChat.js +1 -1
  13. package/dist/components/agents-sdk/ThinkChatActivity.d.ts +1 -1
  14. package/dist/components/agents-sdk/ThinkChatActivity.js +19 -5
  15. package/dist/components/agents-sdk/ThinkChatToolPanels.js +6 -2
  16. package/dist/components/agents-sdk/ThinkExecutionDetail.js +3 -1
  17. package/dist/components/agents-sdk/ThinkExecutionWorkbench.js +1 -0
  18. package/dist/components/agents-sdk/ThinkFullApp.d.ts +40 -88
  19. package/dist/components/agents-sdk/ThinkFullApp.js +75 -124
  20. package/dist/components/agents-sdk/ThinkFullAppViewSwitch.d.ts +1 -1
  21. package/dist/components/agents-sdk/ThinkFullAppViewSwitch.js +1 -1
  22. package/dist/components/agents-sdk/ThinkRoutineDetail.js +1 -1
  23. package/dist/components/agents-sdk/ThinkRoutineLibrary.d.ts +7 -6
  24. package/dist/components/agents-sdk/ThinkRoutineLibrary.js +57 -65
  25. package/dist/components/agents-sdk/ThinkThreadPicker.js +2 -1
  26. package/dist/components/agents-sdk/WorkspaceExplorer.js +2 -1
  27. package/dist/components/agents-sdk/WorkspaceFileView.js +1 -1
  28. package/dist/components/ai-sdk/MessageScroller.js +2 -1
  29. package/dist/components/ai-sdk/MessageScrollerVirtual.js +1 -0
  30. package/dist/components/ai-sdk/PromptInput.js +20 -14
  31. package/dist/components/extension/ChatGptSignInScreen.js +1 -0
  32. package/dist/components/foundations/ToggleGroup.d.ts +79 -1
  33. package/dist/components/foundations/ToggleGroup.js +1 -1
  34. package/dist/components/foundations/Toolbar.d.ts +151 -1
  35. package/dist/components/general-purpose/AppFrame.js +1 -0
  36. package/dist/components/general-purpose/AppTopBar.d.ts +96 -1
  37. package/dist/components/general-purpose/PricingBillingToggle.js +1 -1
  38. package/dist/components/general-purpose/PricingUsageCalculator.js +1 -1
  39. package/dist/components/general-purpose/ResizableSidePanel.d.ts +8 -0
  40. package/dist/components/general-purpose/ResizableSidePanel.js +3 -2
  41. package/dist/components/general-purpose/ResponsiveSidebarShell.d.ts +59 -49
  42. package/dist/components/general-purpose/ResponsiveSidebarShell.js +74 -74
  43. package/dist/components/general-purpose/WebPreview.d.ts +3 -0
  44. package/dist/components/general-purpose/WebPreview.js +2 -2
  45. package/dist/components/nanites/AgentToolDetail.js +4 -3
  46. package/dist/styles/accordion.css +1 -0
  47. package/dist/styles/action-guide.css +8 -7
  48. package/dist/styles/activity-header.css +13 -39
  49. package/dist/styles/activity.css +40 -55
  50. package/dist/styles/agent-attention.css +14 -14
  51. package/dist/styles/agent-chat.css +62 -45
  52. package/dist/styles/agent-connection.css +10 -4
  53. package/dist/styles/agent-tool-detail.css +4 -4
  54. package/dist/styles/alert-dialog.css +4 -4
  55. package/dist/styles/app-frame.css +1 -3
  56. package/dist/styles/app-top-bar.css +5 -9
  57. package/dist/styles/approval.css +1 -0
  58. package/dist/styles/artifact.css +6 -6
  59. package/dist/styles/attachment-preview.css +5 -4
  60. package/dist/styles/browser-replay.css +6 -6
  61. package/dist/styles/browser-run-panel.css +1 -0
  62. package/dist/styles/button.css +15 -6
  63. package/dist/styles/card.css +5 -5
  64. package/dist/styles/chatgpt-sign-in-screen.css +1 -1
  65. package/dist/styles/code-block.css +14 -13
  66. package/dist/styles/codex-model-selector.css +2 -0
  67. package/dist/styles/collapsible.css +1 -0
  68. package/dist/styles/commit.css +6 -6
  69. package/dist/styles/context.css +9 -9
  70. package/dist/styles/conversation-tab-picker.css +1 -1
  71. package/dist/styles/conversation.css +6 -8
  72. package/dist/styles/dialog.css +4 -4
  73. package/dist/styles/empty-state.css +3 -3
  74. package/dist/styles/environment-variables.css +9 -9
  75. package/dist/styles/field.css +2 -1
  76. package/dist/styles/fieldset.css +2 -2
  77. package/dist/styles/index.css +3 -3
  78. package/dist/styles/manager-office.css +23 -29
  79. package/dist/styles/mcp-plugin-catalog.css +11 -10
  80. package/dist/styles/mcp-server-picker.css +3 -3
  81. package/dist/styles/message-scroller.css +9 -11
  82. package/dist/styles/message.css +43 -20
  83. package/dist/styles/navigation-menu.css +1 -0
  84. package/dist/styles/plan.css +13 -12
  85. package/dist/styles/pricing-page.css +26 -23
  86. package/dist/styles/prompt-input.css +18 -5
  87. package/dist/styles/queue.css +1 -0
  88. package/dist/styles/reasoning.css +1 -9
  89. package/dist/styles/recipes.css +28 -1
  90. package/dist/styles/responsive-sidebar-shell.css +44 -16
  91. package/dist/styles/separator.css +5 -5
  92. package/dist/styles/sources.css +4 -4
  93. package/dist/styles/stepper.css +1 -0
  94. package/dist/styles/streamdown.css +31 -21
  95. package/dist/styles/tabs.css +1 -0
  96. package/dist/styles/task.css +5 -17
  97. package/dist/styles/terminal.css +10 -10
  98. package/dist/styles/test-results.css +6 -6
  99. package/dist/styles/think-execution-status.css +2 -2
  100. package/dist/styles/think-execution-workbench.css +12 -15
  101. package/dist/styles/think-full-app.css +26 -64
  102. package/dist/styles/think-routine-library.css +26 -55
  103. package/dist/styles/think-thread-picker.css +9 -9
  104. package/dist/styles/utilities.css +33 -0
  105. package/dist/styles/web-preview.css +20 -19
  106. package/dist/styles/workspace-explorer.css +18 -21
  107. package/dist/styles/workspace-mount-manager.css +2 -2
  108. package/dist/utils/favicon.d.ts +6 -1
  109. package/dist/utils/favicon.js +18 -1
  110. package/package.json +2 -2
  111. package/dist/AppTopBar-ZdgmB_Lu.d.ts +0 -97
  112. package/dist/ToggleGroup-BrQZOQn_.d.ts +0 -80
  113. package/dist/Toolbar-CBOseBQr.d.ts +0 -152
  114. package/dist/{ThinkChat-BES_3Mb-.js → ThinkChat-DkA4Wr71.js} +1 -1
@@ -7,9 +7,9 @@
7
7
  block-size: 100%;
8
8
  min-inline-size: 0;
9
9
  display: grid;
10
- grid-template-rows: auto auto auto minmax(0, 1fr);
10
+ grid-template-rows: auto auto auto var(--sigvelo-layout-track-fill);
11
11
  gap: var(--sigvelo-density-compact-control-gap);
12
- padding: var(--sigvelo-spacing-2);
12
+ padding: var(--sigvelo-layout-cluster);
13
13
  }
14
14
 
15
15
  .manager-office__sidebar-heading,
@@ -66,7 +66,7 @@
66
66
  }
67
67
 
68
68
  .manager-office__attention-nav {
69
- grid-template-columns: auto minmax(0, 1fr);
69
+ grid-template-columns: auto var(--sigvelo-layout-track-fill);
70
70
  }
71
71
 
72
72
  .manager-office__attention-nav > svg {
@@ -95,7 +95,7 @@
95
95
  }
96
96
 
97
97
  .manager-office__employee-link {
98
- grid-template-columns: auto minmax(0, 1fr) auto;
98
+ grid-template-columns: auto var(--sigvelo-layout-track-fill) auto;
99
99
  padding-block: var(--sigvelo-spacing-1);
100
100
  }
101
101
 
@@ -139,17 +139,8 @@
139
139
  * status a screen-width away from the name it belonged to; Ploy caps the same
140
140
  * lists at 800px for the same reason.
141
141
  */
142
- .manager-office__attention,
143
- .manager-office__employee-detail {
144
- min-inline-size: 0;
145
- inline-size: 100%;
146
- max-inline-size: 60rem;
147
- margin-inline: auto;
148
- padding: var(--sigvelo-spacing-4) var(--sigvelo-spacing-3);
149
- }
150
-
151
142
  .manager-office__attention-list {
152
- gap: var(--sigvelo-spacing-2);
143
+ gap: var(--sigvelo-layout-cluster);
153
144
  }
154
145
 
155
146
  /*
@@ -186,7 +177,7 @@
186
177
 
187
178
  .manager-office__work-link,
188
179
  .manager-office__routine-link {
189
- grid-template-columns: auto minmax(0, 1fr) auto;
180
+ grid-template-columns: auto var(--sigvelo-layout-track-fill) auto;
190
181
  }
191
182
 
192
183
  .manager-office__row-chevron {
@@ -202,7 +193,7 @@
202
193
  .manager-office__employee-header {
203
194
  min-inline-size: 0;
204
195
  display: grid;
205
- grid-template-columns: auto minmax(0, 1fr) auto auto;
196
+ grid-template-columns: auto var(--sigvelo-layout-track-fill) auto auto;
206
197
  align-items: center;
207
198
  gap: var(--sigvelo-spacing-3);
208
199
  padding-block: var(--sigvelo-spacing-1);
@@ -227,25 +218,26 @@
227
218
  /*
228
219
  * `AgentAttention` stacks header over body over actions, which is right when
229
220
  * the employee quoted its ask. When it did not, that stack spends a whole row
230
- * on a lone button, so the card pulls the way in up beside the ask instead.
221
+ * on a lone button, so the bare card pulls the way in up beside the ask instead.
231
222
  */
232
- .manager-office__handoff:not(:has(.agent-attention__body)) {
233
- grid-template-columns: minmax(0, 1fr) auto;
223
+ .manager-office__handoff--bare {
224
+ grid-template-columns: var(--sigvelo-layout-track-fill) auto;
234
225
  align-items: center;
235
226
  }
236
227
 
237
228
  /* The verbatim ask is the point of the card; it wraps rather than truncating,
238
229
  unlike the description line above it. */
239
- .manager-office__handoff > .agent-attention__body {
230
+ .manager-office__handoff-ask {
240
231
  grid-column: 1 / -1;
241
232
  color: var(--sigvelo-color-text);
242
233
  font-size: var(--sigvelo-text-sm);
243
234
  line-height: var(--sigvelo-text-sm-leading);
244
235
  }
245
236
 
237
+ /* Local wrap. Not --sigvelo-layout-break-compact. */
246
238
  @container responsive-sidebar-shell (inline-size <= 34rem) {
247
- .manager-office__handoff:not(:has(.agent-attention__body)) {
248
- grid-template-columns: minmax(0, 1fr);
239
+ .manager-office__handoff--bare {
240
+ grid-template-columns: var(--sigvelo-layout-track-fill);
249
241
  gap: var(--sigvelo-spacing-2);
250
242
  }
251
243
  }
@@ -255,14 +247,14 @@
255
247
  display: grid;
256
248
  grid-template-columns: minmax(0, 2fr) minmax(15rem, 1fr);
257
249
  align-items: stretch;
258
- gap: var(--sigvelo-spacing-3);
250
+ gap: var(--sigvelo-layout-gap);
259
251
  }
260
252
 
261
253
  .manager-office__employee-aside {
262
254
  min-inline-size: 0;
263
255
  display: grid;
264
256
  align-content: start;
265
- gap: var(--sigvelo-spacing-3);
257
+ gap: var(--sigvelo-layout-gap);
266
258
  }
267
259
 
268
260
  .manager-office__section {
@@ -270,14 +262,14 @@
270
262
  display: grid;
271
263
  align-content: start;
272
264
  gap: var(--sigvelo-spacing-2);
273
- padding-block: var(--sigvelo-spacing-3);
265
+ padding-block: var(--sigvelo-layout-gutter);
274
266
  }
275
267
 
276
268
  .manager-office__section-header {
277
269
  display: flex;
278
270
  align-items: flex-start;
279
271
  justify-content: space-between;
280
- gap: var(--sigvelo-spacing-2);
272
+ gap: var(--sigvelo-layout-cluster);
281
273
  }
282
274
 
283
275
  /* The glyph makes the three panes distinct before their labels are read. */
@@ -307,7 +299,7 @@
307
299
  }
308
300
 
309
301
  .manager-office__channel {
310
- grid-template-columns: auto minmax(0, 1fr) auto auto;
302
+ grid-template-columns: auto var(--sigvelo-layout-track-fill) auto auto;
311
303
  padding: var(--sigvelo-spacing-1) 0;
312
304
  }
313
305
 
@@ -360,7 +352,7 @@
360
352
  inline-size: 100%;
361
353
  min-inline-size: 0;
362
354
  display: grid;
363
- grid-template-columns: minmax(0, 1fr) auto;
355
+ grid-template-columns: var(--sigvelo-layout-track-fill) auto;
364
356
  align-items: center;
365
357
  justify-content: stretch;
366
358
  padding-inline: 0;
@@ -451,6 +443,7 @@
451
443
  padding: var(--sigvelo-spacing-6) var(--sigvelo-spacing-3);
452
444
  }
453
445
 
446
+ /* Local wrap. Not --sigvelo-layout-break-compact. */
454
447
  @container responsive-sidebar-shell (inline-size <= 42rem) {
455
448
  .manager-office__attention,
456
449
  .manager-office__employee-detail {
@@ -458,10 +451,11 @@
458
451
  }
459
452
 
460
453
  .manager-office__employee-columns {
461
- grid-template-columns: minmax(0, 1fr);
454
+ grid-template-columns: var(--sigvelo-layout-track-fill);
462
455
  }
463
456
  }
464
457
 
458
+ /* Local wrap. Not --sigvelo-layout-break-compact. */
465
459
  @container responsive-sidebar-shell (inline-size <= 30rem) {
466
460
  .manager-office__status > span {
467
461
  display: none;
@@ -22,10 +22,10 @@
22
22
  flex: none;
23
23
  display: flex;
24
24
  align-items: center;
25
- gap: var(--sigvelo-spacing-2);
26
- min-block-size: calc(var(--sigvelo-density-compact-control-height) + var(--sigvelo-spacing-2));
25
+ gap: var(--sigvelo-layout-cluster);
26
+ min-block-size: var(--sigvelo-layout-chrome);
27
27
  padding-block: var(--sigvelo-spacing-1);
28
- padding-inline: var(--sigvelo-spacing-2);
28
+ padding-inline: var(--sigvelo-layout-gutter);
29
29
  border-block-end: var(--sigvelo-border-style) var(--sigvelo-border-width)
30
30
  var(--sigvelo-color-neutral-border-subtle);
31
31
  box-shadow: var(--sigvelo-elevation-bar);
@@ -51,8 +51,8 @@
51
51
  flex: 1;
52
52
  min-block-size: 0;
53
53
  overflow: auto;
54
- padding-inline: var(--sigvelo-spacing-4);
55
- padding-block: var(--sigvelo-spacing-2) var(--sigvelo-spacing-4);
54
+ padding-inline: var(--sigvelo-layout-gutter);
55
+ padding-block: var(--sigvelo-layout-cluster) var(--sigvelo-layout-stack);
56
56
  }
57
57
 
58
58
  .mcp-plugin-catalog__body > * {
@@ -61,7 +61,7 @@
61
61
  }
62
62
 
63
63
  .mcp-plugin-catalog__installed {
64
- gap: var(--sigvelo-spacing-2);
64
+ gap: var(--sigvelo-layout-cluster);
65
65
  margin-block-end: var(--sigvelo-spacing-5);
66
66
  }
67
67
 
@@ -101,7 +101,7 @@
101
101
 
102
102
  .mcp-plugin-catalog__card {
103
103
  display: grid;
104
- grid-template-columns: minmax(0, 1fr) auto;
104
+ grid-template-columns: var(--sigvelo-layout-track-fill) auto;
105
105
  align-items: center;
106
106
  gap: var(--sigvelo-spacing-2);
107
107
  min-block-size: var(--sigvelo-spacing-12);
@@ -121,7 +121,7 @@
121
121
 
122
122
  .mcp-plugin-catalog__card-main {
123
123
  display: grid;
124
- grid-template-columns: var(--sigvelo-spacing-8) minmax(0, 1fr);
124
+ grid-template-columns: var(--sigvelo-spacing-8) var(--sigvelo-layout-track-fill);
125
125
  align-items: center;
126
126
  justify-content: start;
127
127
  gap: var(--sigvelo-spacing-3);
@@ -269,7 +269,7 @@
269
269
  display: flex;
270
270
  justify-content: center;
271
271
  margin-block-start: auto;
272
- padding-block: var(--sigvelo-spacing-4) var(--sigvelo-spacing-8);
272
+ padding-block: var(--sigvelo-layout-stack) var(--sigvelo-spacing-8);
273
273
  }
274
274
 
275
275
  .mcp-plugin-details__disclosure {
@@ -293,8 +293,9 @@
293
293
  }
294
294
  }
295
295
 
296
+ /* Local wrap. Not --sigvelo-layout-break-compact. */
296
297
  @container mcp-plugin-catalog (inline-size >= 36rem) {
297
298
  .mcp-plugin-catalog__list {
298
- grid-template-columns: repeat(2, minmax(0, 1fr));
299
+ grid-template-columns: repeat(2, var(--sigvelo-layout-track-fill));
299
300
  }
300
301
  }
@@ -25,7 +25,7 @@
25
25
 
26
26
  .mcp-server-picker__row-shell {
27
27
  display: grid;
28
- grid-template-columns: minmax(0, 1fr) auto;
28
+ grid-template-columns: var(--sigvelo-layout-track-fill) auto;
29
29
  align-items: center;
30
30
  transition: background-color var(--sigvelo-motion-duration-interaction)
31
31
  var(--sigvelo-motion-ease-change);
@@ -151,8 +151,8 @@
151
151
  }
152
152
 
153
153
  .mcp-server-picker__empty {
154
- padding-block: var(--sigvelo-spacing-2);
155
- padding-inline: var(--sigvelo-spacing-3);
154
+ padding-block: var(--sigvelo-layout-cluster);
155
+ padding-inline: var(--sigvelo-layout-gutter);
156
156
  color: var(--sigvelo-color-text-muted);
157
157
  font-size: var(--sigvelo-text-sm);
158
158
  }
@@ -2,20 +2,18 @@
2
2
  position: relative;
3
3
  display: flex;
4
4
  flex-direction: column;
5
- width: 100%;
6
- height: 100%;
7
- min-height: 0;
8
5
  overflow: hidden;
9
6
  font-family: inherit;
10
7
  color: var(--sigvelo-color-text);
11
8
  }
12
9
 
10
+ /* Scrollport fill. Not fill-host — that recipe is on the root. */
13
11
  .message-scroller__viewport {
14
12
  --message-scroller-fade-size: min(12%, 2.5rem);
15
- width: 100%;
16
- height: 100%;
17
- min-width: 0;
18
- min-height: 0;
13
+ inline-size: 100%;
14
+ block-size: 100%;
15
+ min-inline-size: 0;
16
+ min-block-size: 0;
19
17
  overflow-y: auto;
20
18
  overflow-x: hidden;
21
19
  overscroll-behavior: contain;
@@ -34,12 +32,12 @@
34
32
  .message-scroller__content {
35
33
  display: flex;
36
34
  flex-direction: column;
37
- gap: var(--sigvelo-spacing-4);
38
- min-height: 100%;
35
+ gap: var(--sigvelo-layout-stack);
36
+ min-block-size: 100%;
39
37
  }
40
38
 
41
39
  .message-scroller__item {
42
- min-width: 0;
40
+ min-inline-size: 0;
43
41
  flex-shrink: 0;
44
42
  /* Off-screen rows skip layout/paint entirely (Codex ships the same pair on
45
43
  turn content). `auto` keeps the last rendered size once measured; 15rem is
@@ -67,7 +65,7 @@
67
65
  position: absolute;
68
66
  inset-block-start: var(--message-scroller-virtual-block-start, 0px);
69
67
  inset-inline: 0;
70
- min-width: 0;
68
+ min-inline-size: 0;
71
69
  padding-inline: inherit;
72
70
  }
73
71
 
@@ -1,6 +1,9 @@
1
1
  .message {
2
2
  display: flex;
3
3
  flex-direction: column;
4
+ /* Codex --conversation-grouped-item-gap: 4px — activity, reasoning, and the
5
+ closing answer are one turn, not three. The 16px turn gap is the
6
+ virtualizer / conversation stack, not this row. */
4
7
  gap: var(--sigvelo-spacing-1);
5
8
  inline-size: 100%;
6
9
  min-inline-size: 0;
@@ -23,10 +26,11 @@
23
26
  max-inline-size: min(var(--sigvelo-measure-prose), 85%);
24
27
  min-inline-size: 0;
25
28
  padding-block: var(--sigvelo-spacing-2);
29
+ /* Bubble inset. Not --sigvelo-layout-gutter. */
26
30
  padding-inline: var(--sigvelo-spacing-3);
27
31
  border-radius: var(--sigvelo-radius-lg);
28
- font-size: var(--sigvelo-text-sm);
29
- line-height: var(--sigvelo-leading-normal);
32
+ font-size: var(--sigvelo-text-prose);
33
+ line-height: var(--sigvelo-text-prose-leading);
30
34
  background-color: var(--sigvelo-color-neutral-bg-subtle);
31
35
  color: var(--sigvelo-color-text);
32
36
  overflow-wrap: anywhere;
@@ -38,8 +42,8 @@
38
42
  }
39
43
 
40
44
  .message__content:has(> .message__response) {
41
- font-size: var(--sigvelo-text-sm);
42
- line-height: var(--sigvelo-text-sm-leading);
45
+ font-size: var(--sigvelo-text-prose);
46
+ line-height: var(--sigvelo-text-prose-leading);
43
47
  }
44
48
 
45
49
  .message[data-from="user"] .message__content:has(> .message__response) {
@@ -48,9 +52,12 @@
48
52
 
49
53
  .message[data-from="assistant"] .message__content {
50
54
  display: block;
51
- inline-size: min(var(--sigvelo-measure-prose), 85%);
55
+ /* The transcript column owns the measure. A second 68ch / 85% cap left the
56
+ answer sitting in the start half of an extension-width pane. */
57
+ inline-size: 100%;
52
58
  max-inline-size: 100%;
53
59
  background-color: transparent;
60
+ padding-block: 0;
54
61
  padding-inline: 0;
55
62
  }
56
63
 
@@ -58,13 +65,6 @@
58
65
  font-family: var(--sigvelo-font-response);
59
66
  }
60
67
 
61
- /* Structured parts can opt into the transcript rail without teaching Message
62
- which product feature they represent. The child still owns its own measure
63
- and responsive layout. */
64
- .message[data-from="assistant"] .message__content:has(> [data-message-layout="wide"]) {
65
- inline-size: 100%;
66
- }
67
-
68
68
  .message[data-from="system"] .message__content {
69
69
  background-color: transparent;
70
70
  color: var(--sigvelo-color-text-muted);
@@ -72,7 +72,13 @@
72
72
  }
73
73
 
74
74
  .message__content > * + * {
75
- margin-block-start: var(--sigvelo-spacing-2);
75
+ margin-block-start: var(--sigvelo-spacing-1);
76
+ }
77
+
78
+ /* Tool activity is grouped with the closing answer, not a second turn. */
79
+ .message .activity {
80
+ max-inline-size: 100%;
81
+ margin-block: 0;
76
82
  }
77
83
 
78
84
  .message__content :where(pre) {
@@ -83,7 +89,7 @@
83
89
  .message__response {
84
90
  min-inline-size: 0;
85
91
  max-inline-size: 100%;
86
- line-height: calc(var(--sigvelo-text-sm-leading) * var(--sigvelo-chat-font-scale));
92
+ line-height: calc(var(--sigvelo-text-prose-leading) * var(--sigvelo-chat-font-scale));
87
93
  }
88
94
 
89
95
  .message__attachment {
@@ -91,7 +97,7 @@
91
97
  align-items: center;
92
98
  gap: var(--sigvelo-spacing-1-5);
93
99
  max-inline-size: 100%;
94
- font-size: var(--sigvelo-text-compact);
100
+ font-size: var(--sigvelo-text-meta);
95
101
  color: inherit;
96
102
  text-decoration: none;
97
103
  }
@@ -115,6 +121,7 @@
115
121
 
116
122
  .message__attachment-image {
117
123
  display: block;
124
+ /* Thumbnail cap. Not --sigvelo-layout-sidebar. */
118
125
  max-inline-size: 16rem;
119
126
  max-block-size: 16rem;
120
127
  border-radius: var(--sigvelo-radius-md);
@@ -123,7 +130,7 @@
123
130
  /* Quiet annotation under a part whose stored content was compacted. */
124
131
  .message__compacted {
125
132
  margin-block-start: var(--sigvelo-spacing-1);
126
- font-size: var(--sigvelo-text-xs);
133
+ font-size: var(--sigvelo-text-meta);
127
134
  font-style: italic;
128
135
  color: var(--sigvelo-color-text-muted);
129
136
  }
@@ -140,9 +147,10 @@
140
147
  }
141
148
 
142
149
  .message__timestamp {
143
- font-size: var(--sigvelo-text-xs);
150
+ font-size: var(--sigvelo-text-meta);
144
151
  font-variant-numeric: tabular-nums;
145
- line-height: var(--sigvelo-leading-snug);
152
+ line-height: var(--sigvelo-text-meta-leading);
153
+ color: var(--sigvelo-color-text-muted);
146
154
  white-space: nowrap;
147
155
  }
148
156
 
@@ -162,6 +170,21 @@
162
170
  min-block-size: var(--sigvelo-control-height-xs);
163
171
  }
164
172
 
173
+ /* Hover chrome must not inflate the 16px turn gap. Always overlay the user
174
+ meta — headless Chromium (CI) does not match `(hover: hover)`, so gating
175
+ the positioning there left a ~32px in-flow row in Verify. */
176
+ .message[data-from="user"] {
177
+ position: relative;
178
+ }
179
+
180
+ .message[data-from="user"] > .message__meta {
181
+ position: absolute;
182
+ inset-block-start: 100%;
183
+ inset-inline-end: 0;
184
+ z-index: 1;
185
+ min-block-size: 0;
186
+ }
187
+
165
188
  @media (hover: hover) and (pointer: fine) {
166
189
  .message__meta {
167
190
  opacity: 0;
@@ -213,7 +236,7 @@
213
236
  display: flex;
214
237
  align-items: center;
215
238
  justify-content: space-between;
216
- gap: var(--sigvelo-spacing-2);
239
+ gap: var(--sigvelo-layout-cluster);
217
240
  inline-size: 100%;
218
241
  }
219
242
 
@@ -246,7 +269,7 @@
246
269
  }
247
270
 
248
271
  .message__branch-page {
249
- font-size: var(--sigvelo-text-xs);
272
+ font-size: var(--sigvelo-text-meta);
250
273
  font-variant-numeric: tabular-nums;
251
274
  color: var(--sigvelo-color-text-muted);
252
275
  padding-inline: var(--sigvelo-spacing-1-5);
@@ -66,6 +66,7 @@
66
66
 
67
67
  .navigation-menu__content {
68
68
  display: grid;
69
+ /* Popup density, not --sigvelo-layout-cluster. */
69
70
  gap: var(--sigvelo-spacing-2);
70
71
  padding: var(--sigvelo-spacing-2);
71
72
  }
@@ -2,8 +2,8 @@
2
2
  display: grid;
3
3
  gap: var(--sigvelo-spacing-0-5);
4
4
  min-inline-size: 0;
5
- padding-block: var(--sigvelo-spacing-2-5);
6
- padding-inline: var(--sigvelo-spacing-3);
5
+ padding-block: var(--sigvelo-layout-cluster);
6
+ padding-inline: 0;
7
7
  border-block-end: var(--sigvelo-border-width) var(--sigvelo-border-style)
8
8
  var(--sigvelo-color-neutral-border-subtle);
9
9
  }
@@ -19,31 +19,31 @@
19
19
 
20
20
  .plan__title {
21
21
  color: var(--sigvelo-color-text);
22
- font-size: var(--sigvelo-text-compact);
22
+ font-size: var(--sigvelo-text-prose);
23
23
  font-weight: var(--sigvelo-font-weight-semibold);
24
24
  line-height: var(--sigvelo-leading-tight);
25
25
  }
26
26
 
27
27
  .plan__description {
28
28
  color: var(--sigvelo-color-text-muted);
29
- font-size: var(--sigvelo-text-xs);
29
+ font-size: var(--sigvelo-text-meta);
30
30
  line-height: var(--sigvelo-leading-normal);
31
31
  }
32
32
 
33
33
  .plan__content {
34
34
  display: flex;
35
35
  flex-direction: column;
36
- gap: var(--sigvelo-spacing-3);
36
+ gap: var(--sigvelo-layout-gutter);
37
37
  margin: 0;
38
- padding-block: var(--sigvelo-spacing-3);
39
- padding-inline: var(--sigvelo-spacing-3);
38
+ padding-block: var(--sigvelo-layout-gutter);
39
+ padding-inline: 0;
40
40
  list-style: none;
41
41
  }
42
42
 
43
43
  .plan__step {
44
44
  position: relative;
45
45
  display: grid;
46
- grid-template-columns: var(--sigvelo-spacing-4) minmax(0, 1fr);
46
+ grid-template-columns: var(--sigvelo-spacing-4) var(--sigvelo-layout-track-fill);
47
47
  column-gap: var(--sigvelo-spacing-2);
48
48
  row-gap: var(--sigvelo-spacing-0-5);
49
49
  min-inline-size: 0;
@@ -104,7 +104,7 @@
104
104
 
105
105
  .plan__step-title {
106
106
  color: var(--sigvelo-color-text);
107
- font-size: var(--sigvelo-text-compact);
107
+ font-size: var(--sigvelo-text-prose);
108
108
  font-weight: var(--sigvelo-font-weight-semibold);
109
109
  line-height: var(--sigvelo-leading-tight);
110
110
  transition: color var(--sigvelo-motion-duration-interaction) var(--sigvelo-motion-ease-change);
@@ -116,7 +116,7 @@
116
116
 
117
117
  .plan__step-description {
118
118
  color: var(--sigvelo-color-text-muted);
119
- font-size: var(--sigvelo-text-xs);
119
+ font-size: var(--sigvelo-text-meta);
120
120
  line-height: var(--sigvelo-leading-normal);
121
121
  }
122
122
 
@@ -132,7 +132,7 @@
132
132
  padding-block: var(--sigvelo-spacing-1);
133
133
  padding-inline: var(--sigvelo-spacing-2-5);
134
134
  color: var(--sigvelo-color-text);
135
- font-size: var(--sigvelo-text-compact);
135
+ font-size: var(--sigvelo-text-prose);
136
136
  line-height: var(--sigvelo-leading-snug);
137
137
  background-color: var(--sigvelo-color-surface-raised);
138
138
  border: var(--sigvelo-border-width) var(--sigvelo-border-style)
@@ -158,8 +158,9 @@
158
158
  }
159
159
 
160
160
  .plan-summary__content {
161
+ /* Popover reading width. Not --sigvelo-layout-sidebar. */
161
162
  min-inline-size: 16rem;
162
- max-inline-size: min(24rem, calc(100vw - var(--sigvelo-spacing-8)));
163
+ max-inline-size: min(24rem, calc(100dvi - var(--sigvelo-spacing-8)));
163
164
  padding: 0;
164
165
  font-family: inherit;
165
166
  color: var(--sigvelo-color-text);