@pgege/kaboo-react 0.1.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.
@@ -0,0 +1,712 @@
1
+ /* kaboo-react — default styles
2
+ *
3
+ * Theme integration:
4
+ * kaboo-react reads standard CSS custom properties (--background,
5
+ * --foreground, --card, --muted, --border, etc.) that shadcn/ui
6
+ * and similar design systems define. When those variables exist,
7
+ * kaboo components adapt automatically. When they don't, the
8
+ * built-in neutral fallbacks provide a clean look out of the box.
9
+ *
10
+ * To override any token, set the --kaboo-* variable on a parent
11
+ * element or :root.
12
+ */
13
+
14
+ *,
15
+ *::before,
16
+ *::after {
17
+ box-sizing: border-box;
18
+ }
19
+
20
+ /* ── Theme tokens ── */
21
+ :where([class*="kaboo-"]) {
22
+ --kaboo-bg: var(--background, #ffffff);
23
+ --kaboo-fg: var(--foreground, #09090b);
24
+ --kaboo-card: var(--card, #ffffff);
25
+ --kaboo-card-fg: var(--card-foreground, #09090b);
26
+ --kaboo-muted: var(--muted, #f4f4f5);
27
+ --kaboo-muted-fg: var(--muted-foreground, #71717a);
28
+ --kaboo-border: var(--border, #e4e4e7);
29
+ --kaboo-accent: var(--accent, #f4f4f5);
30
+ --kaboo-accent-fg: var(--accent-foreground, #18181b);
31
+ --kaboo-ring: var(--ring, #a1a1aa);
32
+ --kaboo-success: #16a34a;
33
+ --kaboo-success-bg: #dcfce7;
34
+ --kaboo-active: var(--kaboo-muted-fg);
35
+ --kaboo-active-bg: var(--kaboo-muted);
36
+ /* status / tool accents */
37
+ --kaboo-warning: #f59e0b;
38
+ --kaboo-warning-bg: rgba(245, 158, 11, 0.12);
39
+ --kaboo-running: #d97706;
40
+ --kaboo-error: #dc2626;
41
+ --kaboo-tool-success: #059669;
42
+ }
43
+
44
+ .kaboo-root {
45
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
46
+ font-size: 0.875rem;
47
+ color: var(--kaboo-fg);
48
+ line-height: 1.5;
49
+ }
50
+
51
+ /* ── Agent Card ── */
52
+ .kaboo-agent-card {
53
+ border: 1px solid var(--kaboo-border);
54
+ border-radius: 10px;
55
+ overflow: hidden;
56
+ margin: 8px 0;
57
+ font-size: 0.875rem;
58
+ transition: background 0.3s ease;
59
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
60
+ background: var(--kaboo-card);
61
+ color: var(--kaboo-card-fg);
62
+ }
63
+
64
+ .kaboo-agent-card-done {
65
+ background: var(--kaboo-muted);
66
+ }
67
+
68
+ .kaboo-inline-cards {
69
+ display: flex;
70
+ flex-direction: column;
71
+ gap: 8px;
72
+ margin: 8px 0;
73
+ }
74
+
75
+ .kaboo-agent-card-children {
76
+ display: flex;
77
+ flex-direction: column;
78
+ gap: 6px;
79
+ margin-top: 8px;
80
+ padding-left: 10px;
81
+ border-left: 2px solid var(--kaboo-border);
82
+ }
83
+
84
+ .kaboo-agent-card-header {
85
+ display: flex;
86
+ align-items: center;
87
+ gap: 8px;
88
+ padding: 10px 14px;
89
+ cursor: pointer;
90
+ user-select: none;
91
+ }
92
+
93
+ .kaboo-agent-card-title-area { flex: 1; min-width: 0; }
94
+
95
+ .kaboo-agent-card-title-row { display: flex; align-items: center; gap: 6px; }
96
+
97
+ .kaboo-agent-card-title { font-weight: 600; font-size: 0.82rem; color: var(--kaboo-fg); }
98
+
99
+ .kaboo-agent-card-subtitle { font-size: 0.72rem; color: var(--kaboo-muted-fg); margin-top: 1px; }
100
+
101
+ .kaboo-agent-card-collapsed {
102
+ border-top: 1px solid var(--kaboo-border);
103
+ padding: 6px 14px;
104
+ font-size: 0.78rem;
105
+ color: var(--kaboo-fg);
106
+ }
107
+
108
+ .kaboo-agent-card-body {
109
+ border-top: 1px solid var(--kaboo-border);
110
+ padding: 8px 14px;
111
+ max-height: 350px;
112
+ overflow-y: auto;
113
+ }
114
+
115
+ .kaboo-agent-card-task {
116
+ background: var(--kaboo-muted);
117
+ padding: 6px 10px;
118
+ border-radius: 6px;
119
+ font-size: 0.8rem;
120
+ color: var(--kaboo-fg);
121
+ margin-bottom: 8px;
122
+ border-left: 3px solid var(--kaboo-border);
123
+ }
124
+
125
+ .kaboo-agent-card-tools { margin-bottom: 6px; }
126
+ .kaboo-agent-card-timeline { display: flex; flex-direction: column; gap: 4px; }
127
+
128
+ .kaboo-agent-card-tokens {
129
+ padding: 6px 8px;
130
+ background: var(--kaboo-bg);
131
+ border: 1px solid var(--kaboo-border);
132
+ border-radius: 6px;
133
+ font-size: 0.78rem;
134
+ max-height: 120px;
135
+ overflow-y: auto;
136
+ white-space: pre-wrap;
137
+ word-break: break-word;
138
+ line-height: 1.5;
139
+ color: var(--kaboo-fg);
140
+ margin-bottom: 6px;
141
+ }
142
+
143
+ .kaboo-agent-card-result {
144
+ background: var(--kaboo-bg);
145
+ border: 1px solid var(--kaboo-border);
146
+ padding: 10px;
147
+ border-radius: 6px;
148
+ font-size: 0.8rem;
149
+ max-height: 300px;
150
+ overflow-y: auto;
151
+ line-height: 1.5;
152
+ color: var(--kaboo-fg);
153
+ }
154
+
155
+ .kaboo-agent-card-empty { font-size: 0.8rem; color: var(--kaboo-muted-fg); font-style: italic; padding: 8px 0; }
156
+
157
+ .kaboo-agent-card-structured { margin-top: 8px; }
158
+
159
+ .kaboo-agent-card-structured-summary {
160
+ cursor: pointer;
161
+ font-size: 0.78rem;
162
+ color: var(--kaboo-muted-fg);
163
+ user-select: none;
164
+ }
165
+
166
+ .kaboo-agent-card-structured-pre {
167
+ background: var(--kaboo-muted);
168
+ border: 1px solid var(--kaboo-border);
169
+ border-radius: 6px;
170
+ padding: 8px 10px;
171
+ font-size: 0.75rem;
172
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
173
+ overflow-x: auto;
174
+ max-height: 200px;
175
+ margin-top: 4px;
176
+ color: var(--kaboo-fg);
177
+ white-space: pre-wrap;
178
+ word-break: break-word;
179
+ }
180
+
181
+ /* ── Status Badge ── */
182
+ .kaboo-status-badge {
183
+ font-weight: 500;
184
+ font-size: 0.68rem;
185
+ padding: 1px 6px;
186
+ border-radius: 4px;
187
+ display: inline-flex;
188
+ align-items: center;
189
+ gap: 4px;
190
+ }
191
+ .kaboo-status-done { color: var(--kaboo-success); background: var(--kaboo-success-bg); }
192
+ .kaboo-status-active { color: var(--kaboo-active); background: var(--kaboo-active-bg); }
193
+ .kaboo-status-interrupted { color: var(--kaboo-warning); background: var(--kaboo-warning-bg); }
194
+
195
+ /* ── Tool Count ── */
196
+ .kaboo-tool-count {
197
+ font-size: 0.65rem;
198
+ font-weight: 500;
199
+ background: var(--kaboo-muted);
200
+ color: var(--kaboo-accent-fg);
201
+ padding: 2px 7px;
202
+ border-radius: 4px;
203
+ flex-shrink: 0;
204
+ }
205
+ .kaboo-tool-count-done { background: var(--kaboo-success-bg); color: var(--kaboo-success); }
206
+
207
+ /* ── Chevron ── */
208
+ .kaboo-chevron {
209
+ flex-shrink: 0;
210
+ color: var(--kaboo-muted-fg);
211
+ transition: transform 0.2s;
212
+ }
213
+ .kaboo-chevron-open { transform: rotate(180deg); }
214
+
215
+ .kaboo-icon-shrink { flex-shrink: 0; }
216
+
217
+ .kaboo-tool-spinner { stroke: var(--kaboo-running); }
218
+ .kaboo-tool-dot-success { fill: var(--kaboo-tool-success); }
219
+ .kaboo-tool-dot-error { fill: var(--kaboo-error); }
220
+ .kaboo-tool-dot-cancelled { fill: var(--kaboo-muted-fg); }
221
+
222
+ /* ── Tool Row ── */
223
+ .kaboo-inline-tool {
224
+ border: 1px solid var(--kaboo-border);
225
+ border-radius: 10px;
226
+ padding: 8px 14px;
227
+ margin: 8px 0;
228
+ background: var(--kaboo-card);
229
+ color: var(--kaboo-card-fg);
230
+ }
231
+
232
+ .kaboo-inline-tool .kaboo-tool-row { margin-bottom: 0; }
233
+
234
+ .kaboo-tool-row { margin-bottom: 4px; }
235
+
236
+ .kaboo-tool-row-header {
237
+ display: flex;
238
+ align-items: center;
239
+ gap: 6px;
240
+ padding: 4px 0;
241
+ cursor: pointer;
242
+ font-size: 0.8rem;
243
+ line-height: 1.4;
244
+ }
245
+
246
+ .kaboo-tool-row-label { font-weight: 500; color: var(--kaboo-fg); flex: 1; word-break: break-word; }
247
+
248
+ .kaboo-tool-row-status { font-size: 0.68rem; color: var(--kaboo-muted-fg); flex-shrink: 0; }
249
+
250
+ .kaboo-tool-row-summary {
251
+ margin-left: 16px;
252
+ font-size: 0.75rem;
253
+ color: var(--kaboo-muted-fg);
254
+ overflow: hidden;
255
+ text-overflow: ellipsis;
256
+ white-space: nowrap;
257
+ max-width: 90%;
258
+ padding-bottom: 2px;
259
+ }
260
+
261
+ .kaboo-tool-row-detail { margin-left: 16px; margin-bottom: 8px; }
262
+
263
+ .kaboo-tool-input {
264
+ background: var(--kaboo-muted);
265
+ padding: 6px 10px;
266
+ border-radius: 6px;
267
+ font-size: 0.78rem;
268
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
269
+ border-left: 3px solid var(--kaboo-border);
270
+ margin-bottom: 6px;
271
+ max-height: 120px;
272
+ overflow-y: auto;
273
+ white-space: pre-wrap;
274
+ word-break: break-word;
275
+ color: var(--kaboo-fg);
276
+ }
277
+
278
+ .kaboo-tool-result {
279
+ background: var(--kaboo-muted);
280
+ border: 1px solid var(--kaboo-border);
281
+ padding: 6px 10px;
282
+ border-radius: 6px;
283
+ font-size: 0.78rem;
284
+ max-height: 180px;
285
+ overflow-y: auto;
286
+ white-space: pre-wrap;
287
+ word-break: break-word;
288
+ color: var(--kaboo-fg);
289
+ }
290
+ .kaboo-tool-result-table { padding: 4px 0; white-space: normal; }
291
+ .kaboo-tool-result-cancelled { color: var(--kaboo-muted-fg); font-style: italic; }
292
+
293
+ /* ── Mini Table ── */
294
+ .kaboo-mini-table {
295
+ width: 100%;
296
+ border-collapse: collapse;
297
+ font-size: 0.75rem;
298
+ line-height: 1.4;
299
+ }
300
+ .kaboo-mini-table th {
301
+ text-align: left;
302
+ padding: 4px 8px;
303
+ border-bottom: 1px solid var(--kaboo-border);
304
+ color: var(--kaboo-muted-fg);
305
+ font-weight: 600;
306
+ white-space: nowrap;
307
+ }
308
+ .kaboo-mini-table td {
309
+ padding: 3px 8px;
310
+ border-bottom: 1px solid var(--kaboo-muted);
311
+ color: var(--kaboo-fg);
312
+ max-width: 200px;
313
+ overflow: hidden;
314
+ text-overflow: ellipsis;
315
+ white-space: nowrap;
316
+ }
317
+ .kaboo-mini-table-overflow { font-size: 0.7rem; color: var(--kaboo-muted-fg); padding: 3px 8px; }
318
+
319
+ /* ── Drill Button ── */
320
+ .kaboo-drill-btn {
321
+ display: flex;
322
+ width: 100%;
323
+ align-items: center;
324
+ gap: 4px;
325
+ padding: 8px 14px;
326
+ border: none;
327
+ border-top: 1px solid var(--kaboo-border);
328
+ background: none;
329
+ cursor: pointer;
330
+ font-size: 0.78rem;
331
+ font-weight: 500;
332
+ color: var(--kaboo-accent-fg);
333
+ transition: all 0.15s;
334
+ font-family: inherit;
335
+ }
336
+ .kaboo-drill-btn:hover { background: var(--kaboo-muted); color: var(--kaboo-fg); }
337
+ .kaboo-drill-btn:hover svg { transform: translateX(2px); }
338
+ .kaboo-drill-btn svg { transition: transform 0.2s; }
339
+
340
+ /* ── Breadcrumb Navigation ── */
341
+ .kaboo-breadcrumb-bar {
342
+ display: flex;
343
+ align-items: center;
344
+ padding: 10px 24px;
345
+ background: var(--kaboo-muted);
346
+ border-bottom: 1px solid var(--kaboo-border);
347
+ overflow-x: auto;
348
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
349
+ }
350
+
351
+ .kaboo-breadcrumb-item {
352
+ display: inline-flex;
353
+ align-items: center;
354
+ gap: 0;
355
+ }
356
+
357
+ .kaboo-breadcrumb-sep {
358
+ color: var(--kaboo-muted-fg);
359
+ margin: 0 6px;
360
+ flex-shrink: 0;
361
+ }
362
+
363
+ .kaboo-breadcrumb-link {
364
+ display: inline-flex;
365
+ align-items: center;
366
+ gap: 4px;
367
+ padding: 4px 10px;
368
+ border: none;
369
+ border-radius: 6px;
370
+ font-size: 0.8rem;
371
+ font-weight: 500;
372
+ background: transparent;
373
+ color: var(--kaboo-accent-fg);
374
+ cursor: pointer;
375
+ white-space: nowrap;
376
+ transition: all 0.15s;
377
+ font-family: inherit;
378
+ text-decoration: none;
379
+ }
380
+ .kaboo-breadcrumb-link:not(:disabled):hover { background: var(--kaboo-accent); color: var(--kaboo-fg); }
381
+
382
+ .kaboo-breadcrumb-current {
383
+ color: var(--kaboo-fg) !important;
384
+ font-weight: 600;
385
+ cursor: default;
386
+ background: var(--kaboo-bg);
387
+ border: 1px solid var(--kaboo-border);
388
+ }
389
+ .kaboo-breadcrumb-current:hover { background: var(--kaboo-bg) !important; color: var(--kaboo-fg) !important; }
390
+
391
+ .kaboo-breadcrumb-icon {
392
+ flex-shrink: 0;
393
+ color: inherit;
394
+ }
395
+
396
+ /* ── Drill Detail View ── */
397
+ .kaboo-drill-detail {
398
+ position: absolute;
399
+ inset: 0;
400
+ overflow-y: auto;
401
+ padding: 24px;
402
+ background: var(--kaboo-bg);
403
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
404
+ font-size: 0.875rem;
405
+ color: var(--kaboo-fg);
406
+ }
407
+
408
+ .kaboo-drill-detail-inner {
409
+ max-width: 720px;
410
+ margin: 0 auto;
411
+ }
412
+
413
+ .kaboo-hidden { display: none; }
414
+
415
+ .kaboo-drill-section-label {
416
+ font-size: 0.72rem;
417
+ font-weight: 600;
418
+ color: var(--kaboo-muted-fg);
419
+ text-transform: uppercase;
420
+ letter-spacing: 0.05em;
421
+ margin-bottom: 8px;
422
+ margin-top: 0;
423
+ }
424
+
425
+ .kaboo-drill-timeline {
426
+ display: flex;
427
+ flex-direction: column;
428
+ gap: 12px;
429
+ }
430
+
431
+ .kaboo-drill-tokens-content {
432
+ padding: 14px 16px;
433
+ background: var(--kaboo-muted);
434
+ border: 1px solid var(--kaboo-border);
435
+ border-radius: 10px;
436
+ font-size: 0.84rem;
437
+ white-space: pre-wrap;
438
+ word-break: break-word;
439
+ line-height: 1.6;
440
+ max-height: 500px;
441
+ overflow-y: auto;
442
+ color: var(--kaboo-fg);
443
+ }
444
+
445
+ .kaboo-drill-task { margin-bottom: 16px; }
446
+
447
+ .kaboo-drill-children { margin-top: 20px; }
448
+
449
+ .kaboo-drill-interrupt { margin-top: 16px; }
450
+
451
+ /* ── Activity Panel ── */
452
+ .kaboo-activity-panel { padding: 4px 0; }
453
+
454
+ /* ── Markdown Content ── */
455
+ .kaboo-md { line-height: 1.6; }
456
+ .kaboo-md-h2 { font-size: 1rem; font-weight: 700; color: var(--kaboo-fg); margin: 16px 0 6px; }
457
+ .kaboo-md-h2:first-child { margin-top: 0; }
458
+ .kaboo-md-h3 { font-size: 0.9rem; font-weight: 600; color: var(--kaboo-fg); margin: 12px 0 4px; }
459
+ .kaboo-md-h3:first-child { margin-top: 0; }
460
+ .kaboo-md-h4 { font-size: 0.84rem; font-weight: 600; color: var(--kaboo-fg); margin: 10px 0 4px; }
461
+ .kaboo-md-h4:first-child { margin-top: 0; }
462
+ .kaboo-md-p { margin: 2px 0; }
463
+ .kaboo-md-li { margin: 1px 0; padding-left: 4px; list-style: disc inside; }
464
+ .kaboo-md-spacer { height: 8px; }
465
+
466
+ /* ── Interrupt Renderer ── */
467
+ .kaboo-interrupt {
468
+ border: 1px solid var(--kaboo-border);
469
+ border-radius: 10px;
470
+ padding: 14px 16px;
471
+ margin: 8px 0;
472
+ background: var(--kaboo-card);
473
+ color: var(--kaboo-card-fg);
474
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
475
+ font-size: 0.875rem;
476
+ }
477
+
478
+ .kaboo-interrupt-header {
479
+ display: flex;
480
+ align-items: flex-start;
481
+ gap: 8px;
482
+ margin-bottom: 10px;
483
+ }
484
+
485
+ .kaboo-interrupt-icon { color: var(--kaboo-running); flex-shrink: 0; margin-top: 1px; }
486
+
487
+ .kaboo-interrupt-message { font-weight: 500; line-height: 1.4; }
488
+
489
+ .kaboo-interrupt-details { margin-bottom: 10px; }
490
+
491
+ .kaboo-interrupt-details summary {
492
+ cursor: pointer;
493
+ font-size: 0.78rem;
494
+ color: var(--kaboo-muted-fg);
495
+ user-select: none;
496
+ }
497
+
498
+ .kaboo-interrupt-pre {
499
+ background: var(--kaboo-muted);
500
+ border: 1px solid var(--kaboo-border);
501
+ border-radius: 6px;
502
+ padding: 8px 10px;
503
+ font-size: 0.75rem;
504
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
505
+ overflow-x: auto;
506
+ max-height: 160px;
507
+ margin-top: 4px;
508
+ color: var(--kaboo-fg);
509
+ }
510
+
511
+ .kaboo-interrupt-actions {
512
+ display: flex;
513
+ gap: 6px;
514
+ margin-top: 10px;
515
+ }
516
+
517
+ .kaboo-interrupt-btn {
518
+ padding: 6px 14px;
519
+ border-radius: 6px;
520
+ border: 1px solid var(--kaboo-border);
521
+ font-size: 0.8rem;
522
+ font-weight: 500;
523
+ cursor: pointer;
524
+ transition: all 0.15s;
525
+ font-family: inherit;
526
+ background: var(--kaboo-bg);
527
+ color: var(--kaboo-fg);
528
+ }
529
+
530
+ .kaboo-interrupt-btn:hover { background: var(--kaboo-muted); }
531
+
532
+ .kaboo-interrupt-btn-approve {
533
+ background: var(--kaboo-success-bg);
534
+ color: var(--kaboo-success);
535
+ border-color: var(--kaboo-success);
536
+ }
537
+ .kaboo-interrupt-btn-approve:hover { opacity: 0.85; }
538
+
539
+ .kaboo-interrupt-btn-reject { color: var(--kaboo-muted-fg); }
540
+
541
+ .kaboo-interrupt-btn-next {
542
+ background: var(--kaboo-accent);
543
+ color: var(--kaboo-accent-fg);
544
+ }
545
+
546
+ .kaboo-interrupt-btn-back {
547
+ color: var(--kaboo-muted-fg);
548
+ }
549
+
550
+ .kaboo-interrupt-progress {
551
+ font-size: 0.72rem;
552
+ font-weight: 500;
553
+ color: var(--kaboo-muted-fg);
554
+ margin-bottom: 8px;
555
+ text-transform: uppercase;
556
+ letter-spacing: 0.03em;
557
+ }
558
+
559
+ .kaboo-interrupt-question {
560
+ font-weight: 500;
561
+ margin-bottom: 10px;
562
+ line-height: 1.4;
563
+ }
564
+
565
+ .kaboo-interrupt-radio-group,
566
+ .kaboo-interrupt-checkbox-group {
567
+ display: flex;
568
+ flex-direction: column;
569
+ gap: 4px;
570
+ }
571
+
572
+ .kaboo-interrupt-option {
573
+ display: flex;
574
+ align-items: center;
575
+ gap: 8px;
576
+ padding: 6px 10px;
577
+ border: 1px solid var(--kaboo-border);
578
+ border-radius: 6px;
579
+ cursor: pointer;
580
+ font-size: 0.8rem;
581
+ transition: all 0.15s;
582
+ background: var(--kaboo-bg);
583
+ color: var(--kaboo-fg);
584
+ }
585
+ .kaboo-interrupt-option:hover { background: var(--kaboo-muted); }
586
+ .kaboo-interrupt-option-selected {
587
+ border-color: var(--kaboo-success);
588
+ background: var(--kaboo-success-bg);
589
+ }
590
+
591
+ .kaboo-interrupt-radio,
592
+ .kaboo-interrupt-checkbox {
593
+ accent-color: var(--kaboo-success);
594
+ }
595
+
596
+ .kaboo-interrupt-other { margin-top: 2px; }
597
+
598
+ .kaboo-interrupt-option-other {
599
+ gap: 8px;
600
+ cursor: default;
601
+ }
602
+ .kaboo-interrupt-option-other:hover { background: var(--kaboo-bg); }
603
+ .kaboo-interrupt-option-other.kaboo-interrupt-option-selected {
604
+ border-color: var(--kaboo-success);
605
+ background: var(--kaboo-success-bg);
606
+ }
607
+ .kaboo-interrupt-other-input {
608
+ flex: 1;
609
+ margin-top: 0;
610
+ border: none;
611
+ background: transparent;
612
+ padding: 0;
613
+ }
614
+ .kaboo-interrupt-other-input:focus { border-color: transparent; }
615
+
616
+ .kaboo-interrupt-text-input {
617
+ width: 100%;
618
+ padding: 6px 10px;
619
+ border: 1px solid var(--kaboo-border);
620
+ border-radius: 6px;
621
+ font-size: 0.8rem;
622
+ font-family: inherit;
623
+ background: var(--kaboo-bg);
624
+ color: var(--kaboo-fg);
625
+ margin-top: 4px;
626
+ outline: none;
627
+ }
628
+ .kaboo-interrupt-text-input:focus { border-color: var(--kaboo-ring); }
629
+
630
+ .kaboo-interrupt-textarea {
631
+ width: 100%;
632
+ padding: 8px 10px;
633
+ border: 1px solid var(--kaboo-border);
634
+ border-radius: 6px;
635
+ font-size: 0.8rem;
636
+ font-family: inherit;
637
+ background: var(--kaboo-bg);
638
+ color: var(--kaboo-fg);
639
+ resize: vertical;
640
+ outline: none;
641
+ min-height: 60px;
642
+ }
643
+ .kaboo-interrupt-textarea:focus { border-color: var(--kaboo-ring); }
644
+
645
+ .kaboo-interrupt-responded {
646
+ padding: 8px 14px;
647
+ margin: 8px 0;
648
+ font-size: 0.8rem;
649
+ color: var(--kaboo-muted-fg);
650
+ font-style: italic;
651
+ }
652
+
653
+ /* ── Answered ask_user prompt (durable, inline Q&A) ── */
654
+ .kaboo-askuser {
655
+ border: 1px solid var(--kaboo-border);
656
+ border-radius: 10px;
657
+ padding: 12px 14px;
658
+ margin: 8px 0;
659
+ background: var(--kaboo-card);
660
+ color: var(--kaboo-card-fg);
661
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
662
+ font-size: 0.875rem;
663
+ display: flex;
664
+ flex-direction: column;
665
+ gap: 10px;
666
+ }
667
+
668
+ .kaboo-askuser-qa {
669
+ display: flex;
670
+ flex-direction: column;
671
+ gap: 4px;
672
+ }
673
+
674
+ .kaboo-askuser-question {
675
+ font-weight: 500;
676
+ line-height: 1.4;
677
+ color: var(--kaboo-muted-fg);
678
+ }
679
+
680
+ .kaboo-askuser-answer {
681
+ line-height: 1.4;
682
+ padding: 6px 10px;
683
+ border-radius: 6px;
684
+ background: var(--kaboo-muted);
685
+ color: var(--kaboo-fg);
686
+ white-space: pre-wrap;
687
+ word-break: break-word;
688
+ }
689
+
690
+ .kaboo-askuser-answer-empty {
691
+ color: var(--kaboo-muted-fg);
692
+ font-style: italic;
693
+ }
694
+
695
+ .kaboo-askuser-answer-declined {
696
+ color: var(--kaboo-muted-fg);
697
+ font-style: italic;
698
+ }
699
+
700
+ /* ── Blinking cursor ── */
701
+ .kaboo-blink-cursor {
702
+ display: inline-block;
703
+ width: 6px;
704
+ height: 14px;
705
+ background: var(--kaboo-muted-fg);
706
+ margin-left: 2px;
707
+ vertical-align: text-bottom;
708
+ animation: kaboo-blink 1s step-end infinite;
709
+ }
710
+
711
+ /* ── Animations ── */
712
+ @keyframes kaboo-blink { 50% { opacity: 0; } }