yarramate 1.25.2 → 1.26.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.
- package/README.md +6 -2
- package/dist/adapters/mcp-cli.d.ts +45 -1
- package/dist/adapters/mcp-cli.js +297 -50
- package/dist/adapters/visual/protocol-contract.d.ts +29 -2
- package/dist/adapters/visual/session-server.js +27 -6
- package/dist/adapters/visual/session-store.js +1 -0
- package/dist/adapters/visual/wire.d.ts +18 -0
- package/dist/adapters/visual/workspace-model.js +11 -1
- package/dist/visual-app/assets/{elk.bundled-ZYNFKdcv.js → elk.bundled-CYZFv-C6.js} +1 -1
- package/dist/visual-app/assets/{index-CMqEmjU2.js → index-CRYHv5jy.js} +6 -2
- package/dist/visual-app/assets/index-DdE5s692.css +1 -0
- package/dist/visual-app/index.html +2 -2
- package/dist/visual-app-lib/editor.js +7812 -7485
- package/dist/visual-app-lib/styles.css +1 -1
- package/dist/visual-app-lib/types/adapters/visual/protocol-contract.d.ts +29 -2
- package/dist/visual-app-lib/types/adapters/visual/wire.d.ts +18 -0
- package/dist/visual-app-lib/types/visual-app/App.d.ts +7 -1
- package/dist/visual-app-lib/types/visual-app/context-menu-model.d.ts +36 -0
- package/dist/visual-app-lib/types/visual-app/mount.d.ts +9 -1
- package/dist/visual-app-lib/types/visual-app/open-questions.d.ts +18 -2
- package/dist/visual-app-lib/types/visual-app/question-verbs.d.ts +54 -0
- package/dist/visual-app-lib/types/visual-app/session-client.d.ts +3 -0
- package/dist/visual-app-lib/types/visual-app/state.d.ts +4 -1
- package/dist/visual-app-lib/types/visual-app/workspace-state.d.ts +13 -0
- package/docs/CONSUMING-YARRAMATE.md +17 -5
- package/package.json +1 -1
- package/schema/yarramate-visual-event.schema.json +324 -73
- package/schema/yarramate-visual-response.schema.json +230 -56
- package/skills/yarramate-architecture/SKILL.md +6 -2
- package/skills/yarramate-architecture/references/visual-conversations.md +21 -3
- package/dist/visual-app/assets/index-CJVWkpLt.css +0 -1
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
"chat.response",
|
|
33
33
|
"agent.status",
|
|
34
34
|
"choice.present",
|
|
35
|
+
"operations.propose",
|
|
35
36
|
"handoff.complete",
|
|
36
37
|
"diagnostic",
|
|
37
38
|
"filter.result",
|
|
@@ -50,74 +51,152 @@
|
|
|
50
51
|
"oneOf": [
|
|
51
52
|
{
|
|
52
53
|
"type": "object",
|
|
53
|
-
"required": [
|
|
54
|
+
"required": [
|
|
55
|
+
"type",
|
|
56
|
+
"payload"
|
|
57
|
+
],
|
|
54
58
|
"properties": {
|
|
55
|
-
"type": {
|
|
56
|
-
|
|
59
|
+
"type": {
|
|
60
|
+
"const": "chat.response"
|
|
61
|
+
},
|
|
62
|
+
"payload": {
|
|
63
|
+
"$ref": "#/$defs/chatResponsePayload"
|
|
64
|
+
}
|
|
57
65
|
}
|
|
58
66
|
},
|
|
59
67
|
{
|
|
60
68
|
"type": "object",
|
|
61
|
-
"required": [
|
|
69
|
+
"required": [
|
|
70
|
+
"type",
|
|
71
|
+
"payload"
|
|
72
|
+
],
|
|
62
73
|
"properties": {
|
|
63
|
-
"type": {
|
|
64
|
-
|
|
74
|
+
"type": {
|
|
75
|
+
"const": "agent.status"
|
|
76
|
+
},
|
|
77
|
+
"payload": {
|
|
78
|
+
"$ref": "#/$defs/agentStatusPayload"
|
|
79
|
+
}
|
|
65
80
|
}
|
|
66
81
|
},
|
|
67
82
|
{
|
|
68
83
|
"type": "object",
|
|
69
|
-
"required": [
|
|
84
|
+
"required": [
|
|
85
|
+
"type",
|
|
86
|
+
"payload"
|
|
87
|
+
],
|
|
70
88
|
"properties": {
|
|
71
|
-
"type": {
|
|
72
|
-
|
|
89
|
+
"type": {
|
|
90
|
+
"const": "choice.present"
|
|
91
|
+
},
|
|
92
|
+
"payload": {
|
|
93
|
+
"$ref": "#/$defs/choicePresentPayload"
|
|
94
|
+
}
|
|
73
95
|
}
|
|
74
96
|
},
|
|
75
97
|
{
|
|
76
98
|
"type": "object",
|
|
77
|
-
"required": [
|
|
99
|
+
"required": [
|
|
100
|
+
"type",
|
|
101
|
+
"payload"
|
|
102
|
+
],
|
|
78
103
|
"properties": {
|
|
79
|
-
"type": {
|
|
80
|
-
|
|
104
|
+
"type": {
|
|
105
|
+
"const": "operations.propose"
|
|
106
|
+
},
|
|
107
|
+
"payload": {
|
|
108
|
+
"$ref": "#/$defs/operationsProposePayload"
|
|
109
|
+
}
|
|
81
110
|
}
|
|
82
111
|
},
|
|
83
112
|
{
|
|
84
113
|
"type": "object",
|
|
85
|
-
"required": [
|
|
114
|
+
"required": [
|
|
115
|
+
"type",
|
|
116
|
+
"payload"
|
|
117
|
+
],
|
|
86
118
|
"properties": {
|
|
87
|
-
"type": {
|
|
88
|
-
|
|
119
|
+
"type": {
|
|
120
|
+
"const": "handoff.complete"
|
|
121
|
+
},
|
|
122
|
+
"payload": {
|
|
123
|
+
"$ref": "#/$defs/handoffSummary"
|
|
124
|
+
}
|
|
89
125
|
}
|
|
90
126
|
},
|
|
91
127
|
{
|
|
92
128
|
"type": "object",
|
|
93
|
-
"required": [
|
|
129
|
+
"required": [
|
|
130
|
+
"type",
|
|
131
|
+
"payload"
|
|
132
|
+
],
|
|
94
133
|
"properties": {
|
|
95
|
-
"type": {
|
|
96
|
-
|
|
134
|
+
"type": {
|
|
135
|
+
"const": "diagnostic"
|
|
136
|
+
},
|
|
137
|
+
"payload": {
|
|
138
|
+
"$ref": "#/$defs/diagnosticPayload"
|
|
139
|
+
}
|
|
97
140
|
}
|
|
98
141
|
},
|
|
99
142
|
{
|
|
100
143
|
"type": "object",
|
|
101
|
-
"required": [
|
|
144
|
+
"required": [
|
|
145
|
+
"type",
|
|
146
|
+
"payload"
|
|
147
|
+
],
|
|
102
148
|
"properties": {
|
|
103
|
-
"type": {
|
|
104
|
-
|
|
149
|
+
"type": {
|
|
150
|
+
"const": "filter.result"
|
|
151
|
+
},
|
|
152
|
+
"payload": {
|
|
153
|
+
"$ref": "#/$defs/filterResultPayload"
|
|
154
|
+
}
|
|
105
155
|
}
|
|
106
156
|
},
|
|
107
157
|
{
|
|
108
158
|
"type": "object",
|
|
109
|
-
"required": [
|
|
159
|
+
"required": [
|
|
160
|
+
"type",
|
|
161
|
+
"payload"
|
|
162
|
+
],
|
|
110
163
|
"properties": {
|
|
111
|
-
"type": {
|
|
112
|
-
|
|
164
|
+
"type": {
|
|
165
|
+
"const": "view.save.result"
|
|
166
|
+
},
|
|
167
|
+
"payload": {
|
|
168
|
+
"$ref": "#/$defs/viewSaveResultPayload"
|
|
169
|
+
}
|
|
113
170
|
}
|
|
114
171
|
},
|
|
115
172
|
{
|
|
116
173
|
"type": "object",
|
|
117
|
-
"required": [
|
|
174
|
+
"required": [
|
|
175
|
+
"type",
|
|
176
|
+
"payload"
|
|
177
|
+
],
|
|
118
178
|
"properties": {
|
|
119
|
-
"type": {
|
|
120
|
-
|
|
179
|
+
"type": {
|
|
180
|
+
"const": "apply.result"
|
|
181
|
+
},
|
|
182
|
+
"payload": {
|
|
183
|
+
"$ref": "#/$defs/applyResultPayload"
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"type": "object",
|
|
189
|
+
"required": [
|
|
190
|
+
"type",
|
|
191
|
+
"payload"
|
|
192
|
+
],
|
|
193
|
+
"properties": {
|
|
194
|
+
"type": {
|
|
195
|
+
"const": "layout.save.result"
|
|
196
|
+
},
|
|
197
|
+
"payload": {
|
|
198
|
+
"$ref": "#/$defs/layoutSaveResultPayload"
|
|
199
|
+
}
|
|
121
200
|
}
|
|
122
201
|
}
|
|
123
202
|
],
|
|
@@ -150,7 +229,10 @@
|
|
|
150
229
|
"filterResultPayload": {
|
|
151
230
|
"type": "object",
|
|
152
231
|
"additionalProperties": false,
|
|
153
|
-
"required": [
|
|
232
|
+
"required": [
|
|
233
|
+
"query",
|
|
234
|
+
"matchedIds"
|
|
235
|
+
],
|
|
154
236
|
"properties": {
|
|
155
237
|
"query": {
|
|
156
238
|
"$ref": "https://yarramate.org/schema/projection/v1#/$defs/query"
|
|
@@ -168,7 +250,9 @@
|
|
|
168
250
|
"description": "The filter a chat turn resolved to. The agent states the query; the runtime evaluates it against the same graph a filter.query event is evaluated against, and fills matchedIds in before the response is journaled or streamed. matchedIds is optional here so a resolved response round-trips through the transcript, not so an agent may assert one.",
|
|
169
251
|
"type": "object",
|
|
170
252
|
"additionalProperties": false,
|
|
171
|
-
"required": [
|
|
253
|
+
"required": [
|
|
254
|
+
"query"
|
|
255
|
+
],
|
|
172
256
|
"properties": {
|
|
173
257
|
"query": {
|
|
174
258
|
"$ref": "https://yarramate.org/schema/projection/v1#/$defs/query"
|
|
@@ -185,23 +269,34 @@
|
|
|
185
269
|
"chatResponsePayload": {
|
|
186
270
|
"type": "object",
|
|
187
271
|
"additionalProperties": false,
|
|
188
|
-
"required": [
|
|
272
|
+
"required": [
|
|
273
|
+
"text"
|
|
274
|
+
],
|
|
189
275
|
"properties": {
|
|
190
276
|
"text": {
|
|
191
277
|
"type": "string",
|
|
192
278
|
"minLength": 1,
|
|
193
279
|
"maxLength": 65536
|
|
194
280
|
},
|
|
195
|
-
"appliedQuery": {
|
|
281
|
+
"appliedQuery": {
|
|
282
|
+
"$ref": "#/$defs/chatAppliedQuery"
|
|
283
|
+
}
|
|
196
284
|
}
|
|
197
285
|
},
|
|
198
286
|
"agentStatusPayload": {
|
|
199
287
|
"type": "object",
|
|
200
288
|
"additionalProperties": false,
|
|
201
|
-
"required": [
|
|
289
|
+
"required": [
|
|
290
|
+
"state"
|
|
291
|
+
],
|
|
202
292
|
"properties": {
|
|
203
293
|
"state": {
|
|
204
|
-
"enum": [
|
|
294
|
+
"enum": [
|
|
295
|
+
"thinking",
|
|
296
|
+
"compiling",
|
|
297
|
+
"waiting",
|
|
298
|
+
"idle"
|
|
299
|
+
]
|
|
205
300
|
},
|
|
206
301
|
"detail": {
|
|
207
302
|
"type": "string",
|
|
@@ -213,9 +308,15 @@
|
|
|
213
308
|
"choicePresentPayload": {
|
|
214
309
|
"type": "object",
|
|
215
310
|
"additionalProperties": false,
|
|
216
|
-
"required": [
|
|
311
|
+
"required": [
|
|
312
|
+
"choiceId",
|
|
313
|
+
"question",
|
|
314
|
+
"options"
|
|
315
|
+
],
|
|
217
316
|
"properties": {
|
|
218
|
-
"choiceId": {
|
|
317
|
+
"choiceId": {
|
|
318
|
+
"$ref": "#/$defs/shortId"
|
|
319
|
+
},
|
|
219
320
|
"question": {
|
|
220
321
|
"type": "string",
|
|
221
322
|
"minLength": 1,
|
|
@@ -228,9 +329,14 @@
|
|
|
228
329
|
"items": {
|
|
229
330
|
"type": "object",
|
|
230
331
|
"additionalProperties": false,
|
|
231
|
-
"required": [
|
|
332
|
+
"required": [
|
|
333
|
+
"id",
|
|
334
|
+
"label"
|
|
335
|
+
],
|
|
232
336
|
"properties": {
|
|
233
|
-
"id": {
|
|
337
|
+
"id": {
|
|
338
|
+
"$ref": "#/$defs/shortId"
|
|
339
|
+
},
|
|
234
340
|
"label": {
|
|
235
341
|
"type": "string",
|
|
236
342
|
"minLength": 1,
|
|
@@ -257,17 +363,29 @@
|
|
|
257
363
|
"finalViews"
|
|
258
364
|
],
|
|
259
365
|
"properties": {
|
|
260
|
-
"summary": {
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
"
|
|
264
|
-
|
|
366
|
+
"summary": {
|
|
367
|
+
"$ref": "#/$defs/summaryText"
|
|
368
|
+
},
|
|
369
|
+
"confirmedDecisions": {
|
|
370
|
+
"$ref": "#/$defs/statementList"
|
|
371
|
+
},
|
|
372
|
+
"requestedChanges": {
|
|
373
|
+
"$ref": "#/$defs/statementList"
|
|
374
|
+
},
|
|
375
|
+
"unresolvedQuestions": {
|
|
376
|
+
"$ref": "#/$defs/statementList"
|
|
377
|
+
},
|
|
378
|
+
"finalViews": {
|
|
379
|
+
"$ref": "#/$defs/viewList"
|
|
380
|
+
}
|
|
265
381
|
}
|
|
266
382
|
},
|
|
267
383
|
"diagnosticPayload": {
|
|
268
384
|
"type": "object",
|
|
269
385
|
"additionalProperties": false,
|
|
270
|
-
"required": [
|
|
386
|
+
"required": [
|
|
387
|
+
"diagnostics"
|
|
388
|
+
],
|
|
271
389
|
"properties": {
|
|
272
390
|
"diagnostics": {
|
|
273
391
|
"type": "array",
|
|
@@ -285,10 +403,18 @@
|
|
|
285
403
|
{
|
|
286
404
|
"type": "object",
|
|
287
405
|
"additionalProperties": false,
|
|
288
|
-
"required": [
|
|
406
|
+
"required": [
|
|
407
|
+
"ok",
|
|
408
|
+
"id",
|
|
409
|
+
"path"
|
|
410
|
+
],
|
|
289
411
|
"properties": {
|
|
290
|
-
"ok": {
|
|
291
|
-
|
|
412
|
+
"ok": {
|
|
413
|
+
"const": true
|
|
414
|
+
},
|
|
415
|
+
"id": {
|
|
416
|
+
"$ref": "https://yarramate.org/schema/projection/v1#/$defs/id"
|
|
417
|
+
},
|
|
292
418
|
"path": {
|
|
293
419
|
"type": "string",
|
|
294
420
|
"minLength": 1,
|
|
@@ -299,9 +425,14 @@
|
|
|
299
425
|
{
|
|
300
426
|
"type": "object",
|
|
301
427
|
"additionalProperties": false,
|
|
302
|
-
"required": [
|
|
428
|
+
"required": [
|
|
429
|
+
"ok",
|
|
430
|
+
"diagnostics"
|
|
431
|
+
],
|
|
303
432
|
"properties": {
|
|
304
|
-
"ok": {
|
|
433
|
+
"ok": {
|
|
434
|
+
"const": false
|
|
435
|
+
},
|
|
305
436
|
"diagnostics": {
|
|
306
437
|
"type": "array",
|
|
307
438
|
"minItems": 1,
|
|
@@ -320,9 +451,14 @@
|
|
|
320
451
|
{
|
|
321
452
|
"type": "object",
|
|
322
453
|
"additionalProperties": false,
|
|
323
|
-
"required": [
|
|
454
|
+
"required": [
|
|
455
|
+
"ok",
|
|
456
|
+
"result"
|
|
457
|
+
],
|
|
324
458
|
"properties": {
|
|
325
|
-
"ok": {
|
|
459
|
+
"ok": {
|
|
460
|
+
"const": true
|
|
461
|
+
},
|
|
326
462
|
"result": {
|
|
327
463
|
"$ref": "https://yarrasys.dev/schema/yarramate-apply-result.schema.json"
|
|
328
464
|
}
|
|
@@ -331,9 +467,14 @@
|
|
|
331
467
|
{
|
|
332
468
|
"type": "object",
|
|
333
469
|
"additionalProperties": false,
|
|
334
|
-
"required": [
|
|
470
|
+
"required": [
|
|
471
|
+
"ok",
|
|
472
|
+
"diagnostics"
|
|
473
|
+
],
|
|
335
474
|
"properties": {
|
|
336
|
-
"ok": {
|
|
475
|
+
"ok": {
|
|
476
|
+
"const": false
|
|
477
|
+
},
|
|
337
478
|
"diagnostics": {
|
|
338
479
|
"type": "array",
|
|
339
480
|
"minItems": 1,
|
|
@@ -352,9 +493,14 @@
|
|
|
352
493
|
{
|
|
353
494
|
"type": "object",
|
|
354
495
|
"additionalProperties": false,
|
|
355
|
-
"required": [
|
|
496
|
+
"required": [
|
|
497
|
+
"ok",
|
|
498
|
+
"path"
|
|
499
|
+
],
|
|
356
500
|
"properties": {
|
|
357
|
-
"ok": {
|
|
501
|
+
"ok": {
|
|
502
|
+
"const": true
|
|
503
|
+
},
|
|
358
504
|
"path": {
|
|
359
505
|
"type": "string",
|
|
360
506
|
"minLength": 1,
|
|
@@ -365,9 +511,14 @@
|
|
|
365
511
|
{
|
|
366
512
|
"type": "object",
|
|
367
513
|
"additionalProperties": false,
|
|
368
|
-
"required": [
|
|
514
|
+
"required": [
|
|
515
|
+
"ok",
|
|
516
|
+
"message"
|
|
517
|
+
],
|
|
369
518
|
"properties": {
|
|
370
|
-
"ok": {
|
|
519
|
+
"ok": {
|
|
520
|
+
"const": false
|
|
521
|
+
},
|
|
371
522
|
"message": {
|
|
372
523
|
"type": "string",
|
|
373
524
|
"minLength": 1,
|
|
@@ -376,6 +527,29 @@
|
|
|
376
527
|
}
|
|
377
528
|
}
|
|
378
529
|
]
|
|
530
|
+
},
|
|
531
|
+
"operationsProposePayload": {
|
|
532
|
+
"type": "object",
|
|
533
|
+
"additionalProperties": false,
|
|
534
|
+
"required": [
|
|
535
|
+
"note",
|
|
536
|
+
"operations"
|
|
537
|
+
],
|
|
538
|
+
"properties": {
|
|
539
|
+
"note": {
|
|
540
|
+
"type": "string",
|
|
541
|
+
"minLength": 1,
|
|
542
|
+
"maxLength": 4000
|
|
543
|
+
},
|
|
544
|
+
"operations": {
|
|
545
|
+
"type": "array",
|
|
546
|
+
"minItems": 1,
|
|
547
|
+
"maxItems": 256,
|
|
548
|
+
"items": {
|
|
549
|
+
"$ref": "https://yarrasys.dev/schema/yarramate-operations.schema.json#/$defs/operation"
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
}
|
|
379
553
|
}
|
|
380
554
|
}
|
|
381
555
|
}
|
|
@@ -269,8 +269,12 @@ request
|
|
|
269
269
|
|
|
270
270
|
The canvas itself carries the interview: subjects with open questions wear
|
|
271
271
|
a count chip, and the Open questions panel scopes to the selected subject
|
|
272
|
-
(workspace-scoped questions show when nothing is selected).
|
|
273
|
-
|
|
272
|
+
(workspace-scoped questions show when nothing is selected). Each row offers
|
|
273
|
+
the gesture that would answer it, and "Answer via agent", which hands the
|
|
274
|
+
question to the delegated child as a `question.delegate` event; the child
|
|
275
|
+
answers with `operations.propose`, and the reviewer commits the staged rows.
|
|
276
|
+
Landing answers through the editor's changeset closes them on the next model
|
|
277
|
+
frame.
|
|
274
278
|
|
|
275
279
|
Read [references/visual-conversations.md](references/visual-conversations.md)
|
|
276
280
|
before starting a session. It owns the request builder and its refusals, the
|
|
@@ -163,8 +163,25 @@ On session.end or any terminal diagnostic, publish handoff.complete and exit.
|
|
|
163
163
|
```
|
|
164
164
|
|
|
165
165
|
Add the user's question, the descriptor path, and the workspace the session
|
|
166
|
-
renders. The child sees only the conversational events - `chat.message
|
|
167
|
-
`choice.selected`; the four mechanical events never
|
|
166
|
+
renders. The child sees only the conversational events - `chat.message`,
|
|
167
|
+
`choice.selected` and `question.delegate`; the four mechanical events never
|
|
168
|
+
reach it.
|
|
169
|
+
|
|
170
|
+
A `question.delegate` event is the reviewer handing one open question to
|
|
171
|
+
you from the Open questions panel (ADR 0151). Its payload carries
|
|
172
|
+
`questionId`, `subjectId` (null for a workspace question) and the phrasing.
|
|
173
|
+
Run `yarramate design <workspace> --subject <subjectId> --json` (or
|
|
174
|
+
`yarramate ask <workspace> --open --json` for a workspace question) to read
|
|
175
|
+
the step: its `materiality`, `resolution`, `trigger` and `authority`. If the
|
|
176
|
+
authority is `human`, ask the reviewer what you need with a `chat.response`
|
|
177
|
+
or a `choice.present`; you do not decide for them. If it is `agent` or
|
|
178
|
+
`either`, you may answer from the rendered model and the evidence, and your
|
|
179
|
+
note says so. Then answer with an `operations.propose` response: a `note`
|
|
180
|
+
(one line the transcript shows) and `operations`, a `yarramate/operations/v1`
|
|
181
|
+
list built to the step's skeleton. You never run `apply`: the browser stages
|
|
182
|
+
your operations into the reviewer's changeset and the reviewer commits them,
|
|
183
|
+
which is where any mistake in them is caught, in front of the reviewer, with
|
|
184
|
+
the diagnostics pinned to the rows. `operations.propose` completes the turn.
|
|
168
185
|
|
|
169
186
|
The child loops on one event at a time:
|
|
170
187
|
|
|
@@ -197,7 +214,8 @@ The child loops on one event at a time:
|
|
|
197
214
|
own identifier, `eventId` is the event being answered, `responseId` is a
|
|
198
215
|
fresh 32 lowercase hex string, and `timestamp` is an ISO instant with
|
|
199
216
|
exactly three millisecond digits. The type is `chat.response`,
|
|
200
|
-
`agent.status`, `choice.present`, `
|
|
217
|
+
`agent.status`, `choice.present`, `operations.propose`,
|
|
218
|
+
`handoff.complete`, or `diagnostic`. A
|
|
201
219
|
response for another session is rejected.
|
|
202
220
|
4. Advance `--after` to that event's `sequence`.
|
|
203
221
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
:root{--paper:#e8eef0;--ink:#182228;--eucalyptus:#416f65;--ochre:#8c4d18;--cobalt:#2457a6;--failure:#a3403a;--sheet:color-mix(in oklab, var(--paper) 55%, white);--rule:color-mix(in oklab, var(--ink) 16%, transparent);--rule-firm:color-mix(in oklab, var(--ink) 34%, transparent);--quiet:color-mix(in oklab, var(--ink) 62%, var(--paper));--display:"Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, serif;--body:"Avenir Next", Avenir, -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--utility:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--step:.5rem;--rail-width:264px;--form-label-width:6rem;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--paper);color:var(--ink);font-family:var(--body);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.5}:focus-visible{outline:3px solid var(--cobalt);outline-offset:2px}.offscreen{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.visual-shell{background:var(--paper);min-width:0;height:100dvh;color:var(--ink);grid-template-rows:auto minmax(0,1fr);display:grid;overflow:hidden}.command-strip{z-index:10;justify-content:space-between;align-items:center;gap:calc(var(--step) * 2);min-height:48px;padding:calc(var(--step) * .75) calc(var(--step) * 2);border-bottom:1px solid var(--rule);background:var(--sheet);flex-wrap:wrap;display:flex;position:relative}.command-identity,.command-actions{align-items:center;gap:var(--step);min-width:0;display:flex}.session-description{min-width:0;color:var(--quiet);text-overflow:ellipsis;white-space:nowrap;flex:0 auto;margin:0;font-size:13px;overflow:hidden}.command-identity{flex:10rem}.command-actions{flex-wrap:wrap;flex:0 auto;justify-content:flex-end}.command-identity h1{min-width:8ch;font-family:var(--display);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:15px;line-height:1.2;overflow:hidden}.command-actions select,.command-actions button,.command-actions .quick-filter{min-height:32px;font-family:var(--utility);letter-spacing:.08em;color:var(--ink);background:var(--paper);border:1px solid var(--rule-firm);cursor:pointer;border-radius:0;padding:0 .7rem;font-size:12px}.command-actions select{text-overflow:ellipsis;max-width:12rem}.command-actions .quick-filter{cursor:text;width:160px}.command-actions .quick-filter::placeholder{color:var(--quiet)}.command-actions select{padding-right:.35rem}.command-actions select:hover:enabled,.command-actions button:hover:enabled,.command-actions .quick-filter:hover,.command-actions .quick-filter:focus{border-color:var(--cobalt)}.command-actions select:disabled,.command-actions button:disabled{color:var(--quiet);border-color:var(--rule);cursor:not-allowed;background:0 0}.command-actions button[aria-expanded=true]{color:var(--paper);background:var(--cobalt);border-color:var(--cobalt)}.command-actions .end-session:hover:enabled{color:var(--paper);background:var(--failure);border-color:var(--failure)}.connection-state{font-family:var(--utility);letter-spacing:.14em;text-transform:uppercase;color:var(--quiet);flex:none;font-size:11px}.end-transition-status{max-width:28rem;font-family:var(--utility);color:var(--quiet);font-size:11px;line-height:1.25}.end-transition-status:empty{display:none}.direction-notice{max-width:16rem;font-family:var(--utility);color:var(--quiet);font-size:11px;line-height:1.25}.direction-notice:empty{display:none}.authority{white-space:nowrap;font-family:var(--utility);letter-spacing:.14em;text-transform:uppercase;color:var(--eucalyptus);flex:none;margin:0;font-size:11px}.authority:before{content:"";vertical-align:0;background:currentColor;width:.5rem;height:.5rem;margin-right:.5rem;display:inline-block}.beta-badge{font-family:var(--utility);letter-spacing:.1em;text-transform:uppercase;color:var(--ochre);border:1px solid var(--ochre);flex:none;padding:.05rem .4rem;font-size:10px;font-weight:600}.session-details{align-items:flex-start;gap:calc(var(--step) * 2);padding:var(--step) calc(var(--step) * 2) calc(var(--step) * 1.5);border-bottom:1px solid var(--rule);background:var(--sheet);display:flex;position:absolute;top:100%;left:0;right:0;box-shadow:0 12px 28px #1323391f}.session-details[hidden]{display:none}.session-details p{max-width:90ch;color:var(--quiet);margin:0}.details-close{min-height:28px;font-family:var(--utility);letter-spacing:.08em;color:var(--ink);background:var(--paper);border:1px solid var(--rule-firm);cursor:pointer;border-radius:0;flex:none;margin-left:auto;padding:0 .6rem;font-size:11px}.details-close:hover{border-color:var(--cobalt)}.attention-count{background:var(--cobalt);color:#fff;text-align:center;border-radius:999px;min-width:1.25rem;padding:0 .35rem;font-size:11px}.workspace{grid-template-columns:var(--rail-width) minmax(0, 1fr) auto var(--conversation-width);min-width:0;min-height:0;display:grid;overflow:hidden}.workspace[data-rail=hidden]{grid-template-columns:22px minmax(0, 1fr) auto var(--conversation-width)}.rail-reopen{align-items:center;gap:var(--step);width:22px;height:100%;padding:calc(var(--step) * 1.5) 0;border:none;border-right:1px solid var(--rule);background:var(--sheet);color:var(--quiet);cursor:pointer;flex-direction:column;font-size:12px;display:flex}.rail-reopen:hover,.rail-reopen:focus-visible{color:var(--cobalt)}.rail-hide{min-height:1.75rem;padding:0 calc(var(--step) * .75);color:var(--quiet);cursor:pointer;background:0 0;border:none;flex:none;font-size:12px;line-height:1}.rail-hide:hover,.rail-hide:focus-visible{color:var(--cobalt)}.view-tree{border-right:1px solid var(--rule);background:var(--sheet);grid-template-rows:auto minmax(0,1fr);min-width:0;min-height:0;display:grid}.view-tree-head{align-items:center;gap:calc(var(--step) * 1);padding:var(--step) calc(var(--step) * 1.5);border-bottom:1px solid var(--rule);display:flex}.view-tree-filter{min-width:0;min-height:1.75rem;font-family:var(--utility);color:var(--ink);background:var(--paper);border:1px solid var(--rule-firm);border-radius:0;flex:1;padding:0 .5rem;font-size:12px}.view-tree-new{width:1.75rem;height:1.75rem;color:var(--ink);background:var(--paper);border:1px solid var(--rule-firm);cursor:pointer;border-radius:0;flex:none;place-items:center;padding:0;display:grid}.view-tree-new:hover{border-color:var(--cobalt);color:var(--cobalt)}.view-tree-body{padding:var(--step) 0 calc(var(--step) * 2);overflow:auto}.tree-list{margin:0;padding:0;list-style:none}.tree-row{align-items:center;gap:calc(var(--step) * .75);width:100%;padding:.18rem calc(var(--step) * 1.5);font:inherit;text-align:left;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:0;font-size:13px;display:flex}.tree-row:hover{background:color-mix(in oklab, var(--cobalt) 10%, transparent)}.tree-branch{font-family:var(--utility);color:var(--quiet);font-size:12px}.tree-depth-0{letter-spacing:.08em;text-transform:uppercase;color:var(--quiet)}.tree-depth-1{padding-left:calc(var(--step) * 3)}.tree-depth-2{padding-left:calc(var(--step) * 5.5)}.tree-row-active,.tree-row-active:hover{background:var(--cobalt);color:var(--paper)}.tree-row-quiet{color:var(--quiet)}.tree-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.subject-slots{margin-top:12px}.subject-slots-heading{font-family:var(--utility);text-transform:uppercase;letter-spacing:.06em;color:var(--quiet);align-items:baseline;gap:6px;margin:0 0 4px;font-size:11px;display:flex}.subject-slots-list{grid-template-columns:auto 1fr;gap:2px 10px;margin:0;font-size:12px;display:grid}.subject-slot-row{display:contents}.subject-slot-name{font-family:var(--utility);color:var(--quiet)}.subject-slot-value{margin:0}.subject-slot-vacant{color:var(--quiet);font-style:italic}.tree-fold{color:var(--quiet);flex:none;font-size:9px;line-height:1}.tree-count{font-family:var(--utility);color:var(--quiet);font-variant-numeric:tabular-nums;flex:none;font-size:10px}.tree-row>svg{opacity:.4}.tree-row-active>svg{opacity:1}.tree-row-active .tree-count{color:inherit;opacity:.75}.tree-swatch{background:var(--paper);border:1px solid var(--rule-firm);flex:none;width:.625rem;height:.625rem}.tree-empty{padding:.3rem calc(var(--step) * 3);color:var(--quiet);font-size:12px}.diagram-workspace{background:var(--paper);grid-template-rows:minmax(0,1fr) auto;min-width:0;min-height:0;display:grid;position:relative;overflow:hidden}.canvas-controls{inset:var(--step) var(--step) auto auto;z-index:5;align-items:center;gap:var(--step);display:flex;position:absolute}.canvas{width:100%;min-width:0;height:100%;min-height:0;position:relative}.diagram-workspace>.faults{z-index:4;max-height:50%;position:absolute;inset:auto 0 0;overflow:auto}.diagram-workspace>.filter-pill{inset:var(--step) auto auto var(--step);z-index:4;align-items:center;gap:var(--step);max-width:min(52ch, calc(100% - var(--step) * 2));border:1px solid var(--rule-firm);background:var(--sheet);font-family:var(--utility);color:var(--ink);border-radius:999px;padding:.35rem .7rem;font-size:12px;display:flex;position:absolute}.filter-pill span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.filter-pill code{font-weight:700}.filter-pill button{color:var(--cobalt);font-family:inherit;font-size:inherit;cursor:pointer;background:0 0;border:none;flex:none;padding:0;text-decoration:underline}.filter-pill button:hover{color:var(--ink)}.canvas>.filter-empty-pill{z-index:4;align-items:center;gap:var(--step);max-width:min(52ch, calc(100% - var(--step) * 2));border:1px solid var(--rule-firm);background:var(--sheet);font-family:var(--utility);color:var(--ink);border-radius:999px;padding:.35rem .7rem;font-size:12px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.filter-empty-pill span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.filter-empty-pill code{font-weight:700}.filter-empty-pill button{color:var(--cobalt);font-family:inherit;font-size:inherit;cursor:pointer;background:0 0;border:none;flex:none;padding:0;text-decoration:underline}.filter-empty-pill button:hover{color:var(--ink)}.conversation-separator{z-index:3;cursor:col-resize;touch-action:none;width:10px;height:100%;position:relative}.conversation-separator:before{background:var(--rule);content:"";width:1px;position:absolute;inset:0 auto 0 4px}.conversation-separator:hover:before,.conversation-separator:focus-visible:before{background:var(--cobalt);width:2px}.waiting{padding:calc(var(--step) * 4);font-family:var(--utility);letter-spacing:.1em;text-transform:uppercase;color:var(--quiet);margin:0;font-size:12px}.section-stack{border-left:1px solid var(--rule);background:var(--sheet);flex-direction:column;min-width:0;min-height:0;display:flex;overflow:hidden}.stack-rim{border-bottom:1px solid var(--rule);flex:none;justify-content:flex-end;display:flex}.conversation-hide{min-height:22px;padding:0 calc(var(--step) * 1.5);color:var(--quiet);cursor:pointer;background:0 0;border:none;font-size:12px;line-height:1}.conversation-hide:hover,.conversation-hide:focus-visible{color:var(--cobalt)}.conversation-reopen{align-items:center;gap:var(--step);width:22px;height:100%;padding:calc(var(--step) * 1.5) 0;border:none;border-left:1px solid var(--rule);background:var(--sheet);color:var(--quiet);cursor:pointer;flex-direction:column;font-size:12px;display:flex}.conversation-reopen:hover,.conversation-reopen:focus-visible{color:var(--cobalt)}.attention-choice{border:1px solid var(--cobalt);min-width:1.25rem;color:var(--cobalt);text-align:center;border-radius:999px;padding:0 .35rem;font-size:11px}.stack-section{grid-template-rows:auto minmax(0,1fr);min-height:0;display:grid;overflow:hidden}.stack-section-properties{flex:auto}.stack-section-changes{flex:0 0 var(--changes-height,200px)}.stack-section-chat{flex:0 0 var(--chat-height,300px)}.section-stack:not(:has(>.stack-section-properties))>.stack-section:nth-child(1 of .stack-section:not(.stack-section-palette)){flex:auto}.section-stack>.stack-section-palette:only-child{flex:auto;max-height:none}.stack-section-palette{flex:0 auto;max-height:45%}.kind-palette{padding:calc(var(--step) * .5) 0 calc(var(--step) * .75)}.kind-palette-layer-name{width:100%;padding:calc(var(--step) * .75) calc(var(--step) * 1.5) calc(var(--step) * .25);text-align:left;cursor:pointer;font-family:var(--utility);letter-spacing:.08em;color:var(--quiet);background:0 0;border:none;margin:0;font-size:11px;display:block}.kind-palette-caret{width:1em;display:inline-block}.kind-palette-rows{margin:0;padding:0;list-style:none}.kind-palette-row{align-items:center;gap:calc(var(--step) * .75);width:100%;padding:.3rem calc(var(--step) * 1.5);font:inherit;text-align:left;color:var(--ink);cursor:grab;background:0 0;border:0;border-radius:0;font-size:13px;display:flex}.kind-palette-row:hover,.kind-palette-row:focus-visible{background:color-mix(in oklab, var(--cobalt) 10%, transparent)}.kind-palette-row img{flex:none}.kind-palette-stack{border:1px solid var(--ink);background:var(--paper);border-radius:2px;flex:none;width:14px;height:14px;position:relative}.kind-palette-stack:before{content:"";border:1px solid color-mix(in oklab, var(--ink) 45%, transparent);background:var(--paper);z-index:-1;border-radius:2px;width:100%;height:100%;position:absolute;top:-3px;left:3px}.kind-palette-slots{color:color-mix(in oklab, var(--ink) 60%, transparent);margin-left:auto;font-size:11px}.instance-draft-slots{margin:0;padding:0;list-style:none}.instance-draft-slot{align-items:center;gap:calc(var(--step) * .75);margin-bottom:calc(var(--step) * .75);grid-template-columns:10rem 1fr;display:grid}.instance-draft-slot>label{align-items:baseline;gap:calc(var(--step) * .5);display:flex}.instance-draft-slot-name{font-weight:600}.instance-draft-required,.instance-draft-context{border-radius:2px;padding:0 .35em;font-size:11px}.instance-draft-required{color:var(--failure);border:1px solid color-mix(in oklab, var(--failure) 40%, transparent)}.instance-draft-context{color:color-mix(in oklab, var(--ink) 65%, transparent);border:1px solid color-mix(in oklab, var(--ink) 25%, transparent)}.instance-draft-new{gap:calc(var(--step) * .5);grid-column:2;display:flex}.instance-draft-wiring h4{margin:calc(var(--step) * 1.5) 0 calc(var(--step) * .5);color:color-mix(in oklab, var(--ink) 65%, transparent);font-size:12px}.kind-palette-bound-name{padding-left:calc(var(--step) * 2.5);color:color-mix(in oklab, var(--ink) 65%, transparent);font-size:12px}.section-head{align-items:center;gap:var(--step);min-height:32px;padding-right:calc(var(--step) * 1.5);border-bottom:1px solid var(--rule);font-size:inherit;margin:0;font-weight:400;display:flex}.section-toggle{align-items:center;gap:calc(var(--step) * .75);min-height:32px;padding:0 calc(var(--step) * 1.5);color:var(--ink);cursor:pointer;font-family:var(--utility);letter-spacing:.08em;background:0 0;border:none;font-size:12px;display:flex}.section-chevron{color:var(--quiet);font-size:10px}.section-meta{font-family:var(--utility);color:var(--quiet);text-overflow:ellipsis;white-space:nowrap;margin-left:auto;font-size:11px;overflow:hidden}.section-body{min-height:0;overflow:auto}.section-body[hidden]{display:none}.section-empty{padding:calc(var(--step) * 1.5);color:var(--quiet);margin:0;font-size:13px}.section-splitter{cursor:row-resize;background:0 0;border:none;flex:0 0 7px;height:7px;position:relative}.section-splitter:after{content:"";background:var(--rule);position:absolute;inset:3px 0}.section-splitter:hover:after,.section-splitter:focus-visible:after{background:var(--cobalt);inset:2px 0}.section-splitter:focus-visible{outline:none}.talk{background:var(--sheet);grid-template-rows:minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);min-width:0;min-height:0;display:grid;overflow:hidden}.session-foot{align-items:center;gap:var(--step);padding:0 calc(var(--step) * 1.5) calc(var(--step) * 1.5);display:flex}.session-foot .end-session{margin-left:auto}.talk[hidden]{display:none}.conversation-scroll{min-width:0;min-height:0;overflow:auto}.subject-inspector{min-width:0;padding:calc(var(--step) * 1.5);border-bottom:1px solid var(--rule);background:color-mix(in srgb, var(--sheet) 92%, var(--cobalt) 8%)}.subject-heading-row{justify-content:space-between;align-items:flex-start;gap:var(--step);min-width:0;display:flex}.subject-heading-row>:first-child,.subject-heading-row h2{min-width:0}.subject-type{margin:0 0 calc(var(--step) * .25);color:var(--quiet);letter-spacing:.12em;text-transform:uppercase;font-size:10px;font-weight:700}.subject-heading-row h2{font-family:var(--display);overflow-wrap:anywhere;margin:0;font-size:16px;line-height:1.25}.subject-facts{gap:calc(var(--step) * .5);margin:var(--step) 0;display:grid}.subject-facts>div{gap:var(--step);grid-template-columns:minmax(5.5rem,auto) minmax(0,1fr);display:grid}.subject-facts dt{color:var(--quiet);font-size:11px}.subject-facts dd{overflow-wrap:anywhere;min-width:0;margin:0}.subject-description p{white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.description-clamped{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.subject-description button,.subject-navigate,.subject-clear{margin-top:calc(var(--step) * .5);min-height:28px}.subject-connect{margin-top:calc(var(--step) * .5);margin-right:calc(var(--step) * .5);min-height:28px}.connection-panel{z-index:2;top:calc(var(--step) * 1.5);max-width:min(560px, calc(100% - var(--step) * 4));padding:calc(var(--step) * 1.5) calc(var(--step) * 2);border:1px solid var(--rule);background:var(--sheet);border-radius:4px;position:absolute;left:50%;transform:translate(-50%);box-shadow:0 2px 12px #0000001f}.connection-prompt{margin:0 0 calc(var(--step) * 1.5)}.connection-empty{margin:0 0 calc(var(--step) * 1.5);color:var(--quiet)}.changeset-fault-summary{margin:calc(var(--step) * 1.5) calc(var(--step) * 2.5) 0;color:var(--failure);font-weight:600}.subject-delete{margin-top:calc(var(--step) * .5);margin-right:calc(var(--step) * .5);min-height:28px}.subject-draft-open{border:1px solid var(--rule-firm);background:var(--sheet);min-height:28px;color:var(--ink);cursor:pointer;font-family:var(--utility);letter-spacing:.08em;border-radius:0;padding:0 .7rem;font-size:12px}.subject-draft-open:hover{border-color:var(--cobalt)}.canvas-controls .quick-filter{border:1px solid var(--rule-firm);background:var(--sheet);width:min(220px,30vw);min-height:28px;color:var(--ink);font-family:var(--utility);border-radius:0;padding:0 .6rem;font-size:12px}.canvas-controls .quick-filter::placeholder{color:var(--quiet)}.canvas-controls .canvas-select{border:1px solid var(--rule-firm);background:var(--sheet);min-height:28px;color:var(--ink);font-family:var(--utility);border-radius:0;padding:0 .4rem;font-size:12px}.canvas-controls .canvas-select:focus-visible{outline:2px solid var(--cobalt);outline-offset:1px}.subject-draft-panel{z-index:6;top:calc(var(--step) * 2 + 28px);right:calc(var(--step) * 1.5);width:min(340px, calc(100% - var(--step) * 4));padding:calc(var(--step) * 1.5) calc(var(--step) * 2);border:1px solid var(--rule);background:var(--sheet);border-radius:4px;position:absolute;box-shadow:0 2px 12px #0000001f}.subject-draft-field{margin-bottom:calc(var(--step) * 1.5);display:block}.subject-draft-field>span{margin-bottom:calc(var(--step) * .5);display:block}.subject-draft-field>input,.subject-draft-field>select{width:100%}.subject-draft-id{margin:0 0 calc(var(--step) * 1.5);color:var(--quiet)}.connection-kinds{gap:calc(var(--step) * .75);margin:0 0 calc(var(--step) * 1.5);flex-wrap:wrap;padding:0;list-style:none;display:flex}.connection-search-label{margin:0 0 calc(var(--step) * .5);font-family:var(--utility);color:var(--quiet);font-size:12px;display:block}.connection-search{width:100%;margin:0 0 calc(var(--step) * 1);padding:calc(var(--step) * .5) calc(var(--step) * .75);border:1px solid var(--rule-firm);background:var(--sheet);color:var(--ink);font-family:var(--utility);border-radius:0;display:block}.connection-targets{gap:calc(var(--step) * .5);margin:0 0 calc(var(--step) * 1.5);flex-direction:column;max-height:200px;padding:0;list-style:none;display:flex;overflow-y:auto}.connection-target-id,.connection-targets-more{color:var(--quiet);font-family:var(--utility);font-size:12px}.ledger{padding:calc(var(--step) * 2) calc(var(--step) * 2.5);min-height:0;margin:0;list-style:none;overflow:visible}.ledger .empty p{color:var(--quiet);font-family:var(--utility);margin:0;font-size:12px}.said{padding:0 0 calc(var(--step) * 1.75) calc(var(--step) * 1.5);border-left:2px solid var(--rule)}.said+.said{padding-top:calc(var(--step) * 1.75)}.said-reviewer{border-left-color:var(--cobalt)}.said-agent{border-left-color:var(--eucalyptus)}.said-session{border-left-color:var(--ochre)}.who{font-family:var(--utility);letter-spacing:.16em;text-transform:uppercase;color:var(--quiet);margin:0 0 .15rem;font-size:10px}.words{white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.faults{padding:calc(var(--step) * 1.5) calc(var(--step) * 2.5);border-top:1px solid var(--failure);background:color-mix(in oklab, var(--failure) 8%, var(--sheet))}.faults-title{margin:0 0 var(--step);color:var(--failure);font-size:13px}.faults ul{font-family:var(--utility);margin:0;padding-left:1.1rem;font-size:11px;line-height:1.6}.faults .code{font-weight:700}.faults .where{color:var(--quiet);margin-left:.4rem}.choices{padding:calc(var(--step) * 1.5) calc(var(--step) * 2.5);border-top:1px solid var(--rule)}.question{margin:0 0 var(--step);font-family:var(--display);font-size:1.05rem}.choices ul{gap:var(--step);margin:0;padding:0;list-style:none;display:grid}.choices button{text-align:left;width:100%;font-family:var(--body);color:var(--ink);background:var(--paper);border:1px solid var(--rule-firm);cursor:pointer;border-radius:0;padding:.5rem .7rem;font-size:14px;display:block}.choices button:hover:enabled{border-color:var(--cobalt)}.choices button:disabled{color:var(--quiet);cursor:not-allowed}.choices .detail{color:var(--quiet);font-size:12px;display:block}.composer{padding:calc(var(--step) * 1.5) calc(var(--step) * 2.5) calc(var(--step) * 2);border-top:1px solid var(--rule)}.composer textarea{resize:vertical;width:100%;font-family:var(--body);color:var(--ink);background:var(--paper);border:1px solid var(--rule-firm);border-radius:0;padding:.55rem .65rem;font-size:14px;display:block}.composer textarea:disabled{color:var(--quiet);background:color-mix(in oklab, var(--paper) 70%, var(--sheet));cursor:not-allowed}.composer-foot{justify-content:space-between;align-items:center;gap:var(--step);margin-top:var(--step);display:flex}.agent-status{align-items:center;gap:calc(var(--step) * .5);font-family:var(--utility);letter-spacing:.14em;text-transform:uppercase;color:var(--quiet);margin:0;font-size:10px;display:flex}.agent-spinner{border:1px solid;border-right-color:#0000;border-radius:50%;flex:none;width:.75rem;height:.75rem;animation:.7s linear infinite agent-spinner-turn}@keyframes agent-spinner-turn{to{transform:rotate(1turn)}}.composer button{font-family:var(--utility);letter-spacing:.08em;color:var(--paper);background:var(--cobalt);border:1px solid var(--cobalt);cursor:pointer;border-radius:0;padding:.45rem 1.1rem;font-size:12px}.composer button:disabled{color:var(--quiet);border-color:var(--rule-firm);cursor:not-allowed;background:0 0}.subject-chip{justify-content:space-between;align-items:center;gap:var(--step);margin-bottom:calc(var(--step) * .75);padding:calc(var(--step) * .5) calc(var(--step) * .75);border:1px solid var(--cobalt);color:var(--cobalt);border-radius:999px;display:flex}.subject-chip span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.subject-chip button{min-height:24px;padding:0 calc(var(--step) * .5);color:inherit;background:0 0;border:0;flex:none}.filter-grid{gap:calc(var(--step) * 1.5);grid-template-columns:repeat(auto-fill,minmax(200px,1fr));display:grid}.filter-field{gap:calc(var(--step) * .75);flex-direction:column;display:flex}.filter-field>label,.filter-field legend{font-family:var(--utility);letter-spacing:.08em;text-transform:uppercase;color:var(--quiet);font-size:11px}.tag-input{align-items:center;gap:var(--step);padding:calc(var(--step) * .5);border:1px solid var(--rule-firm);background:var(--paper);border-radius:2px;flex-wrap:wrap;display:flex}.tag-input input{min-width:80px;font:inherit;background:0 0;border:none;flex:1;font-size:15px}.tag-input input:focus{outline:none}.tag-chip{background:var(--cobalt);color:var(--paper);border-radius:2px;align-items:center;gap:.4rem;padding:.2rem .6rem;font-size:13px;display:inline-flex}.tag-chip button{color:currentColor;cursor:pointer;background:0 0;border:none;min-width:0;min-height:0;margin:0;padding:0;font-size:16px;line-height:1;display:inline}.tag-chip button:hover{opacity:.8}.filter-field select{font-family:var(--body);color:var(--ink);background:var(--paper);border:1px solid var(--rule-firm);cursor:pointer;border-radius:0;padding:.4rem .7rem;font-size:15px}.filter-field select:hover{border-color:var(--cobalt)}.filter-checkbox-group{border:none;margin:0;padding:0}.filter-checkbox-option{cursor:pointer;align-items:center;gap:.5rem;padding:.4rem 0;font-size:15px;display:flex}.filter-checkbox-option input{cursor:pointer}.bottom-panel{border-top:1px solid var(--rule-firm);background:var(--sheet);flex-direction:column;min-height:0;display:flex}.bottom-panel-tabs{align-items:stretch;gap:0;min-height:32px;display:flex}.bottom-panel-tab{min-height:32px;font-family:var(--utility);letter-spacing:.08em;color:var(--quiet);border:none;border-right:1px solid var(--rule);cursor:pointer;background:0 0;border-bottom:2px solid #0000;padding:0 .9rem;font-size:12px}.bottom-panel-tab:hover{color:var(--ink)}.bottom-panel-tab[aria-selected=true]{color:var(--ink);background:var(--paper);border-bottom-color:var(--cobalt)}.bottom-panel-summary{font-family:var(--utility);color:var(--quiet);align-items:center;padding-inline:.9rem;font-size:12px;display:flex}.bottom-panel-collapse{min-width:32px;min-height:32px;color:var(--quiet);border:none;border-left:1px solid var(--rule);cursor:pointer;background:0 0;margin-left:auto;font-size:12px}.bottom-panel-collapse:hover{color:var(--ink)}.bottom-panel-body{border-top:1px solid var(--rule);background:var(--paper);min-height:0;max-height:42dvh;overflow:auto}.query-tab{gap:calc(var(--step) * 2);padding:calc(var(--step) * 1.5);grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr);display:grid}.query-tab>div{min-width:0}.query-tab h3{margin:0 0 var(--step);font-family:var(--utility);letter-spacing:.08em;text-transform:uppercase;color:var(--quiet);font-size:11px;font-weight:400}.query-tab-fields{gap:calc(var(--step) * 1.5);flex-direction:column;display:flex}.query-tab-outcome>h3:not(:first-child){margin-top:calc(var(--step) * 2)}.query-match-count{font-family:var(--display);margin:0;font-size:15px}.query-match-count strong{font-size:28px;font-weight:400;line-height:1}.query-outcome-stale,.query-outcome-note{margin:var(--step) 0 0;color:var(--quiet);font-size:13px}.query-outcome-empty{margin:var(--step) 0 0;color:var(--ochre);font-size:13px}.query-exclusions{margin:0;padding:0;list-style:none}.query-exclusions>li+li{margin-top:var(--step)}.query-exclusions ul{margin:calc(var(--step) * .5) 0 0;padding-left:calc(var(--step) * 2);color:var(--quiet);font-size:13px;list-style:none}.query-exclusion-facet{font-family:var(--utility);letter-spacing:.08em;text-transform:uppercase;color:var(--ink);font-size:11px}.query-exclusion-count{font-family:var(--utility);color:var(--quiet);font-size:11px}.query-exclusion-more{font-style:italic}.query-tab-document{flex-direction:column;min-height:0;display:flex}.query-document{min-height:0;max-height:22dvh;padding:var(--step);border:1px solid var(--rule);background:var(--sheet);font-family:var(--utility);flex:1;margin:0;font-size:12px;line-height:1.5;overflow:auto}.query-tab-actions{align-items:center;gap:var(--step);margin-top:var(--step);display:flex}.query-tab-actions button{min-height:32px;font-family:var(--utility);letter-spacing:.08em;color:var(--paper);background:var(--cobalt);border:1px solid var(--cobalt);cursor:pointer;border-radius:0;padding:0 .7rem;font-size:12px}.query-tab-actions button:disabled{color:var(--quiet);background:var(--paper);border-color:var(--rule-firm);cursor:default}.query-stage-status{color:var(--quiet);font-size:13px}@media (max-width:899px){.command-strip{gap:calc(var(--step) * .5);padding-inline:var(--step)}.command-identity,.command-actions{gap:calc(var(--step) * .5)}.workspace{grid-template-rows:auto minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);min-height:0}.view-tree{border-right:0;border-bottom:1px solid var(--rule);max-height:34dvh}.conversation-separator{display:none}.query-tab{grid-template-columns:minmax(0,1fr)}.bottom-panel-body{max-height:30dvh}.section-stack{border-top:1px solid var(--rule);border-left:0;max-height:56dvh}.conversation-reopen{border-left:0;border-top:1px solid var(--rule);flex-direction:row;justify-content:center;width:auto;height:auto;min-height:24px;padding:0}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.save-view-control{display:contents}.save-view-toggle{padding:0 calc(var(--step) * .75rem);border:1px solid var(--rule-firm);background:var(--paper);height:32px;color:var(--ink);cursor:pointer;border-radius:2px;font-size:13px}.save-view-toggle:hover:not(:disabled){border-color:var(--rule);background:color-mix(in oklab, var(--paper) 90%, var(--ink))}.save-view-toggle:disabled{opacity:.5;cursor:not-allowed}.save-view-control{z-index:20;background:color-mix(in oklab, var(--ink) 22%, transparent);place-items:center;display:grid;position:fixed;inset:0}.save-view-panel{background:var(--sheet);border:1px solid var(--rule-firm);border-radius:4px;box-shadow:0 8px 28px #1323392e}.save-view-panel-body{padding:calc(var(--step) * 1.5);min-width:300px}.save-view-form{gap:calc(var(--step) * 1);flex-direction:column;display:flex}.save-view-form div{gap:calc(var(--step) * .5);flex-direction:column;display:flex}.save-view-form label{color:var(--ink);font-size:12px;font-weight:500}.save-view-form input,.save-view-form textarea{padding:calc(var(--step) * .5);border:1px solid var(--rule);font-family:var(--body);border-radius:2px;font-size:13px}.save-view-actions{gap:calc(var(--step) * 1);margin-top:calc(var(--step) * .5);display:flex}.save-view-actions button{padding:calc(var(--step) * .5) calc(var(--step) * 1);border:1px solid var(--rule-firm);background:var(--paper);color:var(--ink);cursor:pointer;border-radius:2px;flex:1;font-size:13px}.save-view-actions button:hover:not(:disabled){background:color-mix(in oklab, var(--paper) 85%, var(--ink))}.save-view-notice{align-items:center;gap:calc(var(--step) * .75);padding:calc(var(--step) * .75) calc(var(--step) * 1.5);background:color-mix(in oklab, var(--eucalyptus) 15%, var(--sheet));border:1px solid var(--eucalyptus);color:var(--ink);border-radius:4px;font-size:13px;display:flex}.save-view-notice button{padding:0 calc(var(--step) * .5);color:var(--eucalyptus);cursor:pointer;background:0 0;border:none;margin-left:auto;font-size:11px;text-decoration:underline}.confirm-dialog-backdrop{z-index:1000;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.confirm-dialog{background:var(--sheet);border:1px solid var(--rule-firm);padding:calc(var(--step) * 2);text-align:center;border-radius:8px;max-width:400px;box-shadow:0 8px 24px #00000029}.confirm-dialog h2{margin:0 0 calc(var(--step) * 1) 0;font-size:16px}.confirm-dialog p{margin:0 0 calc(var(--step) * 1.5) 0;color:var(--quiet);font-size:13px}.confirm-dialog-actions{gap:calc(var(--step) * 1);display:flex}.confirm-dialog-actions button{padding:calc(var(--step) * .75);border:1px solid var(--rule-firm);background:var(--paper);color:var(--ink);cursor:pointer;border-radius:2px;flex:1;font-size:13px}.confirm-dialog-actions button:hover{background:color-mix(in oklab, var(--paper) 85%, var(--ink))}.changeset-tray{padding:calc(var(--step) * 1.5) calc(var(--step) * 2.5);border-top:1px solid var(--rule);background:color-mix(in srgb, var(--sheet) 92%, var(--cobalt) 8%)}.changeset-heading-row{justify-content:space-between;align-items:baseline;gap:var(--step);display:flex}.changeset-heading-row h2{font-family:var(--display);margin:0;font-size:15px}.changeset-discard-all{color:var(--eucalyptus);cursor:pointer;background:0 0;border:none;padding:0;font-size:12px;text-decoration:underline}.changeset-history-controls{align-items:baseline;gap:var(--step);display:flex}.changeset-undo,.changeset-redo{color:var(--eucalyptus);cursor:pointer;background:0 0;border:none;padding:0;font-size:12px;text-decoration:underline}.changeset-undo:disabled,.changeset-redo:disabled{color:var(--quiet);cursor:not-allowed;text-decoration:none}.changeset-rows{margin:var(--step) 0 0;gap:calc(var(--step) * .75);padding:0;list-style:none;display:grid}.changeset-row{padding:calc(var(--step) * .75);border:1px solid var(--rule-firm);background:var(--paper);border-radius:2px}.changeset-row.conflicted{border-color:var(--ochre);background:color-mix(in oklab, var(--ochre) 6%, var(--paper))}.changeset-row-conflict{margin:calc(var(--step) * .5) 0 0;font-family:var(--utility);color:var(--ochre);font-size:11px}.changeset-row-line{justify-content:space-between;align-items:center;gap:var(--step);display:flex}.changeset-row-label{overflow-wrap:anywhere;min-width:0;font-family:var(--utility);color:var(--ink);font-size:12px}.changeset-row-discard{color:var(--eucalyptus);cursor:pointer;background:0 0;border:none;flex:none;padding:0;font-size:11px;text-decoration:underline}.changeset-row-diagnostics,.changeset-batch-diagnostics{margin:calc(var(--step) * .5) 0 0;font-family:var(--utility);color:var(--failure);padding-left:1.1rem;font-size:11px}.changeset-batch-diagnostics{margin:0 0 var(--step)}.changeset-row-diagnostics .code,.changeset-batch-diagnostics .code{font-weight:700}.changeset-row-diagnostics .where,.changeset-batch-diagnostics .where{color:var(--quiet);margin-left:.4rem}.changeset-actions{margin-top:var(--step)}.changeset-commit{width:100%;padding:calc(var(--step) * .75);border:1px solid var(--cobalt);background:var(--cobalt);color:var(--paper);cursor:pointer;border-radius:2px;font-size:13px}.changeset-commit:disabled{border-color:var(--rule-firm);color:var(--quiet);cursor:not-allowed;background:0 0}.changeset-notice{margin-top:var(--step);padding:calc(var(--step) * .75) calc(var(--step) * 1);border:1px solid var(--eucalyptus);background:color-mix(in oklab, var(--eucalyptus) 15%, var(--sheet));color:var(--ink);border-radius:4px;font-size:12px}.changeset-notice p{margin:0 0 calc(var(--step) * .25);font-weight:700}.changeset-notice ul{font-family:var(--utility);margin:0;padding-left:1.1rem}.layout-notice-pill{inset:var(--step) var(--step) auto auto;z-index:4;align-items:center;gap:var(--step);max-width:calc(100% - var(--step) * 2);border:1px solid var(--rule-firm);background:var(--sheet);font-family:var(--utility);color:var(--ink);border-radius:999px;padding:.35rem .7rem;font-size:12px;display:flex;position:absolute}.layout-notice-pill span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.subject-form{gap:calc(var(--step) * 1.25);margin:calc(var(--step) * 1) 0;flex-direction:column;display:flex}.subject-form-field{grid-template-columns:var(--form-label-width) minmax(0, 1fr);align-items:center;gap:calc(var(--step) * .75);display:grid}.subject-form-field.subject-form-list{align-items:start}.subject-form-list>.subject-form-label{padding-top:.35rem}.subject-form-list-body{align-items:flex-start;gap:calc(var(--step) * .35);flex-direction:column;min-width:0;display:flex}.subject-form-label{font-family:var(--utility);letter-spacing:.02em;text-transform:uppercase;color:var(--quiet);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.subject-form-field input[type=text],.subject-form-field select{border:1px solid var(--rule-firm);border-radius:calc(var(--step) * .5);background:var(--paper);font-family:var(--body);color:var(--ink);padding:.35rem .5rem;font-size:13px}.subject-fact-value{font-family:var(--body);color:var(--ink);overflow-wrap:anywhere;font-size:13px}.subject-form-list{border-top:1px solid var(--rule);padding-top:calc(var(--step) * .75)}.subject-form-row{align-items:flex-start;gap:calc(var(--step) * .5);margin-bottom:calc(var(--step) * .5);display:flex}.subject-form-row-body{align-items:center;gap:calc(var(--step) * .5);flex-wrap:wrap;flex:1;display:flex}.subject-form-toggle{align-items:center;gap:calc(var(--step) * .35);font-family:var(--utility);color:var(--quiet);font-size:12px;display:flex}.subject-form-row-add,.subject-form-row-remove{border:1px solid var(--rule-firm);border-radius:calc(var(--step) * .5);background:var(--sheet);font-family:var(--utility);cursor:pointer;padding:.25rem .6rem;font-size:12px}.context-menu{z-index:1100;min-width:184px;max-width:280px;max-height:70vh;padding:calc(var(--step) * .5) 0;background:var(--sheet);border:1px solid var(--rule-firm);border-radius:2px;position:fixed;overflow-y:auto;box-shadow:0 8px 24px #00000029}.context-menu:focus{outline:none}.context-menu ul{margin:0;padding:0;list-style:none}.context-menu-group+.context-menu-group{margin-top:calc(var(--step) * .5);padding-top:calc(var(--step) * .5);border-top:1px solid var(--rule)}.context-menu-destructive{margin-top:calc(var(--step) * .5);padding-top:calc(var(--step) * .5);border-top:1px solid var(--rule-firm)}.context-menu-heading{padding:calc(var(--step) * .5) calc(var(--step) * 1.5);font-family:var(--utility);letter-spacing:.08em;text-transform:uppercase;color:var(--quiet);margin:0;font-size:10px}.context-menu-item{align-items:center;gap:calc(var(--step) * .75);width:100%;padding:.3rem calc(var(--step) * 1.5);font:inherit;text-align:left;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:0;font-size:13px;display:flex}.context-menu-item:hover{background:color-mix(in oklab, var(--cobalt) 10%, transparent)}.context-menu-destructive .context-menu-item{color:var(--failure)}.context-menu-destructive .context-menu-item:hover{background:color-mix(in oklab, var(--failure) 12%, transparent)}.context-menu-tick{width:8px;font-family:var(--utility);color:var(--cobalt);flex:none;font-size:12px}.context-menu-label{white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.changeset-row-scope{font-family:var(--utility);letter-spacing:.08em;text-transform:uppercase;padding:0 calc(var(--step) * .5);border:1px solid var(--rule);color:var(--quiet);border-radius:2px;flex:none;font-size:10px}.changeset-scope-view{color:var(--cobalt);border-color:color-mix(in oklab, var(--cobalt) 40%, transparent)}.prompt-dialog-form{gap:calc(var(--step) * .75);text-align:left;flex-direction:column;display:flex}.prompt-dialog-form label{font-family:var(--utility);letter-spacing:.08em;text-transform:uppercase;color:var(--quiet);font-size:10px}.prompt-dialog-form input{padding:calc(var(--step) * .75);font:inherit;color:var(--ink);background:var(--paper);border:1px solid var(--rule-firm);border-radius:2px;font-size:13px}.prompt-dialog-form input:focus{border-color:var(--cobalt)}.prompt-dialog-form .confirm-dialog-actions{margin-top:calc(var(--step) * .5)}.open-questions{gap:var(--step);padding:var(--step) 0;flex-direction:column;display:flex}.open-questions-scope,.open-questions-catalogue{color:var(--quiet);margin:0;font-size:.78rem}.question-list{gap:calc(var(--step) * .75);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.question-row{gap:calc(var(--step) * .25);flex-direction:column;display:flex}.question-text{font-size:.85rem;line-height:1.35}.question-meta{gap:var(--step);align-items:baseline;display:flex}.question-authority{letter-spacing:.04em;text-transform:uppercase;color:var(--quiet);border:1px solid var(--quiet);padding:0 calc(var(--step) * .75);border-radius:999px;font-size:.68rem;font-weight:600}.question-since{color:var(--quiet);font-size:.72rem}.saved-layout-pill{inset:auto auto var(--step) var(--step);z-index:4;align-items:center;gap:var(--step);max-width:calc(100% - var(--step) * 2);border:1px solid var(--rule-firm);background:var(--sheet);font-family:var(--utility);color:var(--ink);border-radius:999px;padding:.35rem .7rem;font-size:12px;display:flex;position:absolute}.saved-layout-pill span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.saved-layout-pill button{color:var(--cobalt);font-family:inherit;font-size:inherit;cursor:pointer;background:0 0;border:none;flex:none;padding:0;text-decoration:underline}.saved-layout-pill button:hover{color:var(--ink)}.zoom-controls{inset:auto var(--step) var(--step) auto;z-index:4;border:1px solid var(--rule-firm);border-radius:calc(var(--step) * .75);background:var(--sheet);align-items:stretch;display:flex;position:absolute;overflow:hidden}.zoom-controls button{color:var(--ink);font-family:var(--utility);cursor:pointer;background:0 0;border:none;padding:.3rem .6rem;font-size:13px;line-height:1}.zoom-controls button+button{border-left:1px solid var(--rule)}.zoom-controls button:hover{background:var(--paper)}.tree-row-staged .tree-label{font-style:italic}.tree-row-staged-delete .tree-label{text-decoration:line-through}.tree-staged{font-family:var(--utility);letter-spacing:.06em;text-transform:uppercase;color:var(--quiet);border:1px solid var(--rule-firm);border-radius:2px;flex:none;padding:0 .3em;font-size:9px}.tree-row-active .tree-staged{color:inherit;opacity:.75;border-color:currentColor}
|