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.
Files changed (31) hide show
  1. package/README.md +6 -2
  2. package/dist/adapters/mcp-cli.d.ts +45 -1
  3. package/dist/adapters/mcp-cli.js +297 -50
  4. package/dist/adapters/visual/protocol-contract.d.ts +29 -2
  5. package/dist/adapters/visual/session-server.js +27 -6
  6. package/dist/adapters/visual/session-store.js +1 -0
  7. package/dist/adapters/visual/wire.d.ts +18 -0
  8. package/dist/adapters/visual/workspace-model.js +11 -1
  9. package/dist/visual-app/assets/{elk.bundled-ZYNFKdcv.js → elk.bundled-CYZFv-C6.js} +1 -1
  10. package/dist/visual-app/assets/{index-CMqEmjU2.js → index-CRYHv5jy.js} +6 -2
  11. package/dist/visual-app/assets/index-DdE5s692.css +1 -0
  12. package/dist/visual-app/index.html +2 -2
  13. package/dist/visual-app-lib/editor.js +7812 -7485
  14. package/dist/visual-app-lib/styles.css +1 -1
  15. package/dist/visual-app-lib/types/adapters/visual/protocol-contract.d.ts +29 -2
  16. package/dist/visual-app-lib/types/adapters/visual/wire.d.ts +18 -0
  17. package/dist/visual-app-lib/types/visual-app/App.d.ts +7 -1
  18. package/dist/visual-app-lib/types/visual-app/context-menu-model.d.ts +36 -0
  19. package/dist/visual-app-lib/types/visual-app/mount.d.ts +9 -1
  20. package/dist/visual-app-lib/types/visual-app/open-questions.d.ts +18 -2
  21. package/dist/visual-app-lib/types/visual-app/question-verbs.d.ts +54 -0
  22. package/dist/visual-app-lib/types/visual-app/session-client.d.ts +3 -0
  23. package/dist/visual-app-lib/types/visual-app/state.d.ts +4 -1
  24. package/dist/visual-app-lib/types/visual-app/workspace-state.d.ts +13 -0
  25. package/docs/CONSUMING-YARRAMATE.md +17 -5
  26. package/package.json +1 -1
  27. package/schema/yarramate-visual-event.schema.json +324 -73
  28. package/schema/yarramate-visual-response.schema.json +230 -56
  29. package/skills/yarramate-architecture/SKILL.md +6 -2
  30. package/skills/yarramate-architecture/references/visual-conversations.md +21 -3
  31. 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": ["type", "payload"],
54
+ "required": [
55
+ "type",
56
+ "payload"
57
+ ],
54
58
  "properties": {
55
- "type": { "const": "chat.response" },
56
- "payload": { "$ref": "#/$defs/chatResponsePayload" }
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": ["type", "payload"],
69
+ "required": [
70
+ "type",
71
+ "payload"
72
+ ],
62
73
  "properties": {
63
- "type": { "const": "agent.status" },
64
- "payload": { "$ref": "#/$defs/agentStatusPayload" }
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": ["type", "payload"],
84
+ "required": [
85
+ "type",
86
+ "payload"
87
+ ],
70
88
  "properties": {
71
- "type": { "const": "choice.present" },
72
- "payload": { "$ref": "#/$defs/choicePresentPayload" }
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": ["type", "payload"],
99
+ "required": [
100
+ "type",
101
+ "payload"
102
+ ],
78
103
  "properties": {
79
- "type": { "const": "handoff.complete" },
80
- "payload": { "$ref": "#/$defs/handoffSummary" }
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": ["type", "payload"],
114
+ "required": [
115
+ "type",
116
+ "payload"
117
+ ],
86
118
  "properties": {
87
- "type": { "const": "diagnostic" },
88
- "payload": { "$ref": "#/$defs/diagnosticPayload" }
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": ["type", "payload"],
129
+ "required": [
130
+ "type",
131
+ "payload"
132
+ ],
94
133
  "properties": {
95
- "type": { "const": "filter.result" },
96
- "payload": { "$ref": "#/$defs/filterResultPayload" }
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": ["type", "payload"],
144
+ "required": [
145
+ "type",
146
+ "payload"
147
+ ],
102
148
  "properties": {
103
- "type": { "const": "view.save.result" },
104
- "payload": { "$ref": "#/$defs/viewSaveResultPayload" }
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": ["type", "payload"],
159
+ "required": [
160
+ "type",
161
+ "payload"
162
+ ],
110
163
  "properties": {
111
- "type": { "const": "apply.result" },
112
- "payload": { "$ref": "#/$defs/applyResultPayload" }
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": ["type", "payload"],
174
+ "required": [
175
+ "type",
176
+ "payload"
177
+ ],
118
178
  "properties": {
119
- "type": { "const": "layout.save.result" },
120
- "payload": { "$ref": "#/$defs/layoutSaveResultPayload" }
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": ["query", "matchedIds"],
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": ["query"],
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": ["text"],
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": { "$ref": "#/$defs/chatAppliedQuery" }
281
+ "appliedQuery": {
282
+ "$ref": "#/$defs/chatAppliedQuery"
283
+ }
196
284
  }
197
285
  },
198
286
  "agentStatusPayload": {
199
287
  "type": "object",
200
288
  "additionalProperties": false,
201
- "required": ["state"],
289
+ "required": [
290
+ "state"
291
+ ],
202
292
  "properties": {
203
293
  "state": {
204
- "enum": ["thinking", "compiling", "waiting", "idle"]
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": ["choiceId", "question", "options"],
311
+ "required": [
312
+ "choiceId",
313
+ "question",
314
+ "options"
315
+ ],
217
316
  "properties": {
218
- "choiceId": { "$ref": "#/$defs/shortId" },
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": ["id", "label"],
332
+ "required": [
333
+ "id",
334
+ "label"
335
+ ],
232
336
  "properties": {
233
- "id": { "$ref": "#/$defs/shortId" },
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": { "$ref": "#/$defs/summaryText" },
261
- "confirmedDecisions": { "$ref": "#/$defs/statementList" },
262
- "requestedChanges": { "$ref": "#/$defs/statementList" },
263
- "unresolvedQuestions": { "$ref": "#/$defs/statementList" },
264
- "finalViews": { "$ref": "#/$defs/viewList" }
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": ["diagnostics"],
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": ["ok", "id", "path"],
406
+ "required": [
407
+ "ok",
408
+ "id",
409
+ "path"
410
+ ],
289
411
  "properties": {
290
- "ok": { "const": true },
291
- "id": { "$ref": "https://yarramate.org/schema/projection/v1#/$defs/id" },
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": ["ok", "diagnostics"],
428
+ "required": [
429
+ "ok",
430
+ "diagnostics"
431
+ ],
303
432
  "properties": {
304
- "ok": { "const": false },
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": ["ok", "result"],
454
+ "required": [
455
+ "ok",
456
+ "result"
457
+ ],
324
458
  "properties": {
325
- "ok": { "const": true },
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": ["ok", "diagnostics"],
470
+ "required": [
471
+ "ok",
472
+ "diagnostics"
473
+ ],
335
474
  "properties": {
336
- "ok": { "const": false },
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": ["ok", "path"],
496
+ "required": [
497
+ "ok",
498
+ "path"
499
+ ],
356
500
  "properties": {
357
- "ok": { "const": true },
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": ["ok", "message"],
514
+ "required": [
515
+ "ok",
516
+ "message"
517
+ ],
369
518
  "properties": {
370
- "ok": { "const": false },
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). Landing answers
273
- through the editor's changeset closes them on the next model frame.
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` and
167
- `choice.selected`; the four mechanical events never reach it.
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`, `handoff.complete`, or `diagnostic`. A
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}