@agno-hq/chat-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,1293 @@
1
+ /*
2
+ * agno-chat-react styles — aligned with the Agno OS design system.
3
+ * Brand accent #ff4017, near-black #111113 surfaces, zinc greys, white-alpha
4
+ * borders, Inter + DM Mono. Import once: `import 'agno-chat-react/styles.css'`.
5
+ *
6
+ * Dark by default; add the `agno-light` class on a wrapper for light mode.
7
+ */
8
+
9
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=DM+Mono:wght@400;500&display=swap');
10
+
11
+ .agno-root,
12
+ .agno-root * {
13
+ box-sizing: border-box;
14
+ }
15
+
16
+ .agno-root {
17
+ /* Agno OS dark tokens */
18
+ --agno-bg: #111113;
19
+ --agno-surface: #18181b;
20
+ --agno-surface-2: #27272a;
21
+ --agno-border: rgba(255, 255, 255, 0.1);
22
+ --agno-border-strong: rgba(255, 255, 255, 0.2);
23
+ --agno-text: #fafafa;
24
+ --agno-muted: #a1a1aa;
25
+
26
+ /* Signature brand colour, used as the accent. */
27
+ --agno-brand: #ff4017;
28
+ --agno-brand-soft: rgba(255, 64, 23, 0.14);
29
+ --agno-accent: var(--agno-brand);
30
+
31
+ /* Monochrome primary action (Agno uses inverse, not brand, for buttons). */
32
+ --agno-primary-bg: #fafafa;
33
+ --agno-primary-fg: #111113;
34
+
35
+ --agno-user: rgba(255, 255, 255, 0.06);
36
+ --agno-positive: #22c55e;
37
+ --agno-error: #e53935;
38
+
39
+ --agno-radius-sm: 0.5rem;
40
+ --agno-radius: 0.625rem;
41
+ --agno-radius-lg: 0.75rem;
42
+
43
+ display: flex;
44
+ flex-direction: column;
45
+ background: var(--agno-bg);
46
+ color: var(--agno-text);
47
+ border: 1px solid var(--agno-border);
48
+ border-radius: var(--agno-radius-lg);
49
+ overflow: hidden;
50
+ font-family: 'Inter', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
51
+ font-size: 14px;
52
+ line-height: 1.55;
53
+ -webkit-font-smoothing: antialiased;
54
+ -moz-osx-font-smoothing: grayscale;
55
+ }
56
+
57
+ .agno-root.agno-light {
58
+ --agno-bg: #ffffff;
59
+ --agno-surface: #ffffff;
60
+ --agno-surface-2: #f4f4f5;
61
+ --agno-border: rgba(24, 24, 27, 0.1);
62
+ --agno-border-strong: rgba(24, 24, 27, 0.5);
63
+ --agno-text: #18181b;
64
+ --agno-muted: #71717a;
65
+ --agno-brand-soft: rgba(255, 64, 23, 0.1);
66
+ --agno-primary-bg: #18181b;
67
+ --agno-primary-fg: #ffffff;
68
+ --agno-user: #f4f4f5;
69
+ }
70
+
71
+ /* Scrollbars — thin, like Agno OS. */
72
+ .agno-root ::-webkit-scrollbar {
73
+ width: 6px;
74
+ height: 6px;
75
+ }
76
+ .agno-root ::-webkit-scrollbar-thumb {
77
+ background: var(--agno-border-strong);
78
+ border-radius: 9999px;
79
+ }
80
+ .agno-root ::-webkit-scrollbar-track {
81
+ background: transparent;
82
+ }
83
+
84
+ /* Header */
85
+ .agno-header {
86
+ display: flex;
87
+ align-items: center;
88
+ justify-content: space-between;
89
+ gap: 12px;
90
+ padding: 12px 16px;
91
+ border-bottom: 1px solid var(--agno-border);
92
+ background: var(--agno-bg);
93
+ }
94
+ .agno-header__brand {
95
+ display: flex;
96
+ align-items: center;
97
+ gap: 10px;
98
+ }
99
+ .agno-header__title {
100
+ font-weight: 600;
101
+ font-size: 13px;
102
+ text-transform: uppercase;
103
+ letter-spacing: 0.08em;
104
+ }
105
+ /* Agno brand mark — orange rounded square with the "A". */
106
+ .agno-logo {
107
+ display: grid;
108
+ place-items: center;
109
+ width: 24px;
110
+ height: 24px;
111
+ border-radius: 7px;
112
+ background: var(--agno-brand);
113
+ color: #fff;
114
+ font-weight: 700;
115
+ font-size: 14px;
116
+ line-height: 1;
117
+ box-shadow: 0 0 16px rgba(255, 64, 23, 0.45);
118
+ }
119
+ .agno-header__controls {
120
+ display: flex;
121
+ align-items: center;
122
+ gap: 8px;
123
+ }
124
+
125
+ .agno-main {
126
+ display: flex;
127
+ flex: 1;
128
+ min-height: 0;
129
+ }
130
+
131
+ .agno-sidebar {
132
+ width: 300px;
133
+ border-left: 1px solid var(--agno-border);
134
+ background: var(--agno-bg);
135
+ padding: 12px;
136
+ overflow: auto;
137
+ }
138
+ .agno-sidebar--left {
139
+ border-left: none;
140
+ border-right: 1px solid var(--agno-border);
141
+ width: 248px;
142
+ }
143
+ .agno-sidebar__title {
144
+ font-size: 11px;
145
+ text-transform: uppercase;
146
+ letter-spacing: 0.06em;
147
+ color: var(--agno-muted);
148
+ margin-bottom: 10px;
149
+ }
150
+
151
+ /* Chat surface */
152
+ .agno-chat {
153
+ display: flex;
154
+ flex-direction: column;
155
+ flex: 1;
156
+ min-width: 0;
157
+ min-height: 0;
158
+ }
159
+
160
+ .agno-list {
161
+ flex: 1;
162
+ overflow-y: auto;
163
+ padding: 20px;
164
+ display: flex;
165
+ flex-direction: column;
166
+ gap: 18px;
167
+ }
168
+ .agno-list__empty {
169
+ margin: auto;
170
+ color: var(--agno-muted);
171
+ text-align: center;
172
+ max-width: 360px;
173
+ }
174
+
175
+ /* Messages */
176
+ .agno-msg {
177
+ display: flex;
178
+ gap: 12px;
179
+ align-items: flex-start;
180
+ }
181
+ .agno-msg--user {
182
+ flex-direction: row-reverse;
183
+ }
184
+ .agno-msg__avatar {
185
+ flex: 0 0 30px;
186
+ width: 30px;
187
+ height: 30px;
188
+ border-radius: 8px;
189
+ display: grid;
190
+ place-items: center;
191
+ background: var(--agno-surface-2);
192
+ border: 1px solid var(--agno-border);
193
+ font-size: 15px;
194
+ }
195
+ .agno-msg--agent .agno-msg__avatar {
196
+ background: var(--agno-brand);
197
+ border-color: transparent;
198
+ color: #fff;
199
+ font-weight: 700;
200
+ box-shadow: 0 0 14px rgba(255, 64, 23, 0.4);
201
+ }
202
+ .agno-msg__body {
203
+ max-width: 80%;
204
+ display: flex;
205
+ flex-direction: column;
206
+ gap: 8px;
207
+ }
208
+ /* Agent body spans the column so tool/step cards keep a stable width as
209
+ content streams in (no horizontal jitter). */
210
+ .agno-msg--agent .agno-msg__body {
211
+ flex: 1;
212
+ max-width: 100%;
213
+ min-width: 0;
214
+ }
215
+ .agno-msg--user .agno-msg__body {
216
+ align-items: flex-end;
217
+ }
218
+ /* Agent replies render as plain text (Agno OS style), not a card. */
219
+ .agno-msg__content {
220
+ padding: 2px 0;
221
+ word-break: break-word;
222
+ }
223
+ /* User messages sit in a rounded bubble. */
224
+ .agno-msg--user .agno-msg__content {
225
+ background: var(--agno-user);
226
+ border: 1px solid var(--agno-border);
227
+ border-radius: var(--agno-radius);
228
+ padding: 10px 14px;
229
+ }
230
+ .agno-msg__content--empty {
231
+ min-height: 20px;
232
+ }
233
+ .agno-msg__error {
234
+ color: var(--agno-error);
235
+ font-size: 13px;
236
+ }
237
+
238
+ /* Inline "what it's doing" indicator, shown in the agent bubble before content. */
239
+ .agno-msg__activity {
240
+ display: flex;
241
+ align-items: center;
242
+ gap: 9px;
243
+ color: var(--agno-muted);
244
+ font-size: 13px;
245
+ padding: 4px 0;
246
+ }
247
+ .agno-msg__activity-label {
248
+ letter-spacing: 0.01em;
249
+ }
250
+
251
+ /* Streaming caret — brand accent */
252
+ .agno-msg__caret {
253
+ display: inline-block;
254
+ width: 7px;
255
+ height: 14px;
256
+ margin-left: 2px;
257
+ vertical-align: text-bottom;
258
+ background: var(--agno-brand);
259
+ border-radius: 1px;
260
+ animation: agno-blink 1s steps(2, start) infinite;
261
+ }
262
+ @keyframes agno-blink {
263
+ to {
264
+ visibility: hidden;
265
+ }
266
+ }
267
+
268
+ /* Markdown */
269
+ .agno-md > :first-child {
270
+ margin-top: 0;
271
+ }
272
+ .agno-md > :last-child {
273
+ margin-bottom: 0;
274
+ }
275
+ .agno-md-p {
276
+ margin: 6px 0;
277
+ }
278
+ .agno-md-heading {
279
+ margin: 12px 0 6px;
280
+ line-height: 1.3;
281
+ letter-spacing: -0.01em;
282
+ }
283
+ .agno-md-list {
284
+ margin: 6px 0;
285
+ padding-left: 20px;
286
+ }
287
+ .agno-md-code {
288
+ background: var(--agno-surface-2);
289
+ padding: 1px 5px;
290
+ border-radius: 5px;
291
+ font-size: 0.88em;
292
+ font-family: 'DM Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
293
+ }
294
+ .agno-md-pre {
295
+ background: var(--agno-surface-2);
296
+ border: 1px solid var(--agno-border);
297
+ border-radius: var(--agno-radius-sm);
298
+ padding: 12px 14px;
299
+ overflow-x: auto;
300
+ font-size: 12.5px;
301
+ font-family: 'DM Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
302
+ }
303
+
304
+ /* Tool calls */
305
+ .agno-tools {
306
+ display: flex;
307
+ flex-direction: column;
308
+ gap: 6px;
309
+ }
310
+ .agno-tool {
311
+ border: 1px solid var(--agno-border);
312
+ border-radius: var(--agno-radius-sm);
313
+ background: var(--agno-surface);
314
+ overflow: hidden;
315
+ }
316
+ .agno-tool--running {
317
+ border-color: rgba(255, 64, 23, 0.35);
318
+ }
319
+ .agno-tool__head {
320
+ width: 100%;
321
+ display: flex;
322
+ align-items: center;
323
+ gap: 8px;
324
+ padding: 8px 11px;
325
+ background: none;
326
+ border: none;
327
+ color: inherit;
328
+ cursor: pointer;
329
+ font: inherit;
330
+ text-align: left;
331
+ }
332
+ .agno-tool__icon {
333
+ font-size: 12px;
334
+ opacity: 0.7;
335
+ }
336
+ .agno-tool__name {
337
+ font-weight: 500;
338
+ font-family: 'DM Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
339
+ font-size: 13px;
340
+ }
341
+ .agno-tool__status {
342
+ font-size: 10.5px;
343
+ padding: 1px 8px;
344
+ border-radius: 999px;
345
+ background: var(--agno-surface-2);
346
+ color: var(--agno-muted);
347
+ text-transform: lowercase;
348
+ letter-spacing: 0.02em;
349
+ }
350
+ .agno-tool__status--running {
351
+ color: var(--agno-brand);
352
+ background: var(--agno-brand-soft);
353
+ }
354
+ .agno-tool__status--done {
355
+ color: var(--agno-positive);
356
+ }
357
+ .agno-tool__status--error {
358
+ color: var(--agno-error);
359
+ }
360
+ .agno-tool__status--paused {
361
+ color: var(--agno-brand);
362
+ }
363
+ .agno-tool__chev {
364
+ margin-left: auto;
365
+ font-size: 9px;
366
+ color: var(--agno-muted);
367
+ }
368
+ .agno-tool__body {
369
+ padding: 10px 11px;
370
+ border-top: 1px solid var(--agno-border);
371
+ display: flex;
372
+ flex-direction: column;
373
+ gap: 8px;
374
+ }
375
+ .agno-tool__label {
376
+ font-size: 10.5px;
377
+ text-transform: uppercase;
378
+ letter-spacing: 0.05em;
379
+ color: var(--agno-muted);
380
+ margin-bottom: 4px;
381
+ }
382
+ .agno-tool__pre {
383
+ margin: 0;
384
+ background: var(--agno-surface-2);
385
+ border-radius: 6px;
386
+ padding: 9px;
387
+ overflow-x: auto;
388
+ font-size: 12px;
389
+ font-family: 'DM Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
390
+ }
391
+
392
+ /* Reasoning + citations */
393
+ .agno-reasoning,
394
+ .agno-citations {
395
+ border: 1px solid var(--agno-border);
396
+ border-radius: var(--agno-radius-sm);
397
+ background: var(--agno-surface);
398
+ }
399
+ .agno-reasoning__toggle,
400
+ .agno-citations__toggle {
401
+ width: 100%;
402
+ display: flex;
403
+ align-items: center;
404
+ gap: 7px;
405
+ padding: 8px 11px;
406
+ background: none;
407
+ border: none;
408
+ color: var(--agno-muted);
409
+ cursor: pointer;
410
+ font: inherit;
411
+ font-size: 13px;
412
+ }
413
+ .agno-reasoning__chev,
414
+ .agno-citations__chev {
415
+ margin-left: auto;
416
+ font-size: 9px;
417
+ }
418
+ .agno-reasoning__list {
419
+ margin: 0;
420
+ padding: 4px 12px 12px 28px;
421
+ display: flex;
422
+ flex-direction: column;
423
+ gap: 10px;
424
+ }
425
+ .agno-reasoning__step {
426
+ position: relative;
427
+ }
428
+ .agno-reasoning__step::before {
429
+ content: '';
430
+ position: absolute;
431
+ left: -16px;
432
+ top: 6px;
433
+ width: 6px;
434
+ height: 6px;
435
+ border-radius: 50%;
436
+ background: var(--agno-brand);
437
+ }
438
+ .agno-reasoning__title {
439
+ font-weight: 600;
440
+ }
441
+ .agno-reasoning__text {
442
+ color: var(--agno-text);
443
+ }
444
+ .agno-reasoning__meta {
445
+ font-size: 12px;
446
+ color: var(--agno-muted);
447
+ }
448
+
449
+ .agno-citations__body {
450
+ padding: 4px 11px 11px;
451
+ display: flex;
452
+ flex-direction: column;
453
+ gap: 9px;
454
+ }
455
+ .agno-citations__name {
456
+ font-weight: 600;
457
+ font-size: 12px;
458
+ }
459
+ .agno-citations__snippet {
460
+ font-size: 12px;
461
+ color: var(--agno-muted);
462
+ }
463
+ .agno-citations__url {
464
+ font-size: 12px;
465
+ color: var(--agno-brand);
466
+ text-decoration: none;
467
+ }
468
+
469
+ /* Workflow steps */
470
+ .agno-steps,
471
+ .agno-members {
472
+ display: flex;
473
+ flex-direction: column;
474
+ gap: 6px;
475
+ }
476
+ .agno-steps__title,
477
+ .agno-members__title {
478
+ font-size: 11px;
479
+ text-transform: uppercase;
480
+ letter-spacing: 0.05em;
481
+ color: var(--agno-muted);
482
+ }
483
+ .agno-steps__list {
484
+ display: flex;
485
+ flex-direction: column;
486
+ position: relative;
487
+ }
488
+ .agno-step {
489
+ border: 1px solid var(--agno-border);
490
+ border-radius: var(--agno-radius-sm);
491
+ background: var(--agno-surface);
492
+ margin-bottom: 4px;
493
+ }
494
+ .agno-step__head {
495
+ width: 100%;
496
+ display: flex;
497
+ align-items: center;
498
+ gap: 9px;
499
+ padding: 8px 11px;
500
+ background: none;
501
+ border: none;
502
+ color: inherit;
503
+ cursor: pointer;
504
+ font: inherit;
505
+ text-align: left;
506
+ }
507
+ .agno-step__icon {
508
+ width: 18px;
509
+ height: 18px;
510
+ flex: 0 0 18px;
511
+ border-radius: 50%;
512
+ display: grid;
513
+ place-items: center;
514
+ font-size: 11px;
515
+ background: var(--agno-surface-2);
516
+ color: var(--agno-muted);
517
+ }
518
+ .agno-step__icon--completed {
519
+ background: rgba(34, 197, 94, 0.15);
520
+ color: var(--agno-positive);
521
+ }
522
+ .agno-step__icon--running {
523
+ background: var(--agno-brand-soft);
524
+ color: var(--agno-brand);
525
+ animation: agno-pulse 1.4s ease-in-out infinite;
526
+ }
527
+ .agno-step__icon--error {
528
+ background: rgba(229, 57, 53, 0.15);
529
+ color: var(--agno-error);
530
+ }
531
+ @keyframes agno-pulse {
532
+ 0%, 100% {
533
+ opacity: 1;
534
+ }
535
+ 50% {
536
+ opacity: 0.4;
537
+ }
538
+ }
539
+ .agno-step__name {
540
+ font-weight: 500;
541
+ font-size: 13px;
542
+ }
543
+ .agno-step__chev {
544
+ margin-left: auto;
545
+ font-size: 9px;
546
+ color: var(--agno-muted);
547
+ }
548
+ .agno-step__body {
549
+ padding: 0 11px 11px 38px;
550
+ font-size: 13px;
551
+ }
552
+ .agno-step__error {
553
+ color: var(--agno-error);
554
+ }
555
+
556
+ /* Member / executor responses */
557
+ .agno-member {
558
+ border: 1px solid var(--agno-border);
559
+ border-radius: var(--agno-radius-sm);
560
+ background: var(--agno-surface);
561
+ overflow: hidden;
562
+ }
563
+ .agno-member__head {
564
+ width: 100%;
565
+ display: flex;
566
+ align-items: center;
567
+ gap: 8px;
568
+ padding: 8px 11px;
569
+ background: none;
570
+ border: none;
571
+ color: inherit;
572
+ cursor: pointer;
573
+ font: inherit;
574
+ text-align: left;
575
+ }
576
+ .agno-member__dot {
577
+ width: 8px;
578
+ height: 8px;
579
+ flex: 0 0 8px;
580
+ border-radius: 50%;
581
+ background: var(--agno-muted);
582
+ }
583
+ .agno-member__dot--running {
584
+ background: var(--agno-brand);
585
+ animation: agno-pulse 1.4s ease-in-out infinite;
586
+ }
587
+ .agno-member__dot--done {
588
+ background: var(--agno-positive);
589
+ }
590
+ .agno-member__dot--error {
591
+ background: var(--agno-error);
592
+ }
593
+ .agno-member__name {
594
+ font-weight: 600;
595
+ font-size: 13px;
596
+ }
597
+ .agno-member__kind {
598
+ font-size: 10.5px;
599
+ color: var(--agno-muted);
600
+ text-transform: uppercase;
601
+ letter-spacing: 0.04em;
602
+ }
603
+ .agno-member__chev {
604
+ margin-left: auto;
605
+ font-size: 9px;
606
+ color: var(--agno-muted);
607
+ }
608
+ .agno-member__body {
609
+ padding: 0 11px 11px;
610
+ border-top: 1px solid var(--agno-border);
611
+ display: flex;
612
+ flex-direction: column;
613
+ gap: 8px;
614
+ padding-top: 10px;
615
+ }
616
+ .agno-member__content {
617
+ font-size: 13.5px;
618
+ }
619
+
620
+ /* Media */
621
+ .agno-media {
622
+ display: flex;
623
+ flex-wrap: wrap;
624
+ gap: 8px;
625
+ }
626
+ .agno-media__img,
627
+ .agno-media__video {
628
+ max-width: 100%;
629
+ border-radius: var(--agno-radius-sm);
630
+ border: 1px solid var(--agno-border);
631
+ }
632
+ .agno-media__audio {
633
+ width: 100%;
634
+ }
635
+
636
+ /* Status indicator */
637
+ .agno-status {
638
+ display: flex;
639
+ align-items: center;
640
+ gap: 9px;
641
+ color: var(--agno-muted);
642
+ font-size: 13px;
643
+ padding-left: 42px;
644
+ }
645
+ .agno-status__dots {
646
+ display: inline-flex;
647
+ gap: 3px;
648
+ }
649
+ .agno-status__dots span {
650
+ width: 6px;
651
+ height: 6px;
652
+ border-radius: 50%;
653
+ background: var(--agno-brand);
654
+ animation: agno-bounce 1.2s infinite ease-in-out;
655
+ }
656
+ .agno-status__dots span:nth-child(2) {
657
+ animation-delay: 0.15s;
658
+ }
659
+ .agno-status__dots span:nth-child(3) {
660
+ animation-delay: 0.3s;
661
+ }
662
+ @keyframes agno-bounce {
663
+ 0%, 60%, 100% {
664
+ transform: translateY(0);
665
+ opacity: 0.5;
666
+ }
667
+ 30% {
668
+ transform: translateY(-4px);
669
+ opacity: 1;
670
+ }
671
+ }
672
+
673
+ /* Human-in-the-loop — Agno OS style cards */
674
+ .agno-hitl {
675
+ display: flex;
676
+ flex-direction: column;
677
+ gap: 10px;
678
+ max-width: 360px;
679
+ }
680
+ .agno-hitl__title {
681
+ display: flex;
682
+ align-items: center;
683
+ gap: 7px;
684
+ font-weight: 600;
685
+ font-size: 13px;
686
+ }
687
+ .agno-hitl__actions {
688
+ display: flex;
689
+ gap: 8px;
690
+ }
691
+
692
+ .agno-hitl-card {
693
+ display: flex;
694
+ flex-direction: column;
695
+ gap: 12px;
696
+ padding: 12px;
697
+ background: var(--agno-surface-2);
698
+ border: 1px solid var(--agno-border);
699
+ border-radius: var(--agno-radius);
700
+ }
701
+ .agno-hitl-card__head {
702
+ display: flex;
703
+ align-items: center;
704
+ justify-content: space-between;
705
+ gap: 8px;
706
+ }
707
+ .agno-hitl-card__tool {
708
+ display: flex;
709
+ align-items: center;
710
+ gap: 7px;
711
+ font-family: 'DM Mono', ui-monospace, monospace;
712
+ font-size: 12px;
713
+ text-transform: uppercase;
714
+ letter-spacing: 0.03em;
715
+ color: var(--agno-muted);
716
+ }
717
+ .agno-hitl-card__icon {
718
+ font-size: 13px;
719
+ }
720
+ .agno-hitl-card__choices {
721
+ display: flex;
722
+ gap: 6px;
723
+ }
724
+ .agno-hitl-card__choice {
725
+ width: 26px;
726
+ height: 26px;
727
+ display: grid;
728
+ place-items: center;
729
+ border-radius: 6px;
730
+ border: 1px solid var(--agno-border);
731
+ background: var(--agno-bg);
732
+ color: var(--agno-muted);
733
+ cursor: pointer;
734
+ font-size: 12px;
735
+ }
736
+ .agno-hitl-card__choice:hover:not(:disabled) {
737
+ border-color: var(--agno-border-strong);
738
+ color: var(--agno-text);
739
+ }
740
+ .agno-hitl-card__choice.is-active.is-confirm {
741
+ border-color: var(--agno-positive);
742
+ color: var(--agno-positive);
743
+ box-shadow: 0 0 0 1px var(--agno-positive);
744
+ }
745
+ .agno-hitl-card__choice.is-active.is-reject {
746
+ border-color: var(--agno-error);
747
+ color: var(--agno-error);
748
+ box-shadow: 0 0 0 1px var(--agno-error);
749
+ }
750
+ .agno-hitl-card__args {
751
+ border: 1px solid var(--agno-border);
752
+ border-radius: var(--agno-radius-sm);
753
+ background: var(--agno-bg);
754
+ }
755
+ .agno-hitl-card__args-head {
756
+ width: 100%;
757
+ display: flex;
758
+ align-items: center;
759
+ justify-content: space-between;
760
+ padding: 7px 10px;
761
+ background: none;
762
+ border: none;
763
+ color: var(--agno-muted);
764
+ cursor: pointer;
765
+ font: inherit;
766
+ font-size: 11px;
767
+ text-transform: uppercase;
768
+ letter-spacing: 0.05em;
769
+ }
770
+ .agno-hitl-card__chev {
771
+ font-size: 8px;
772
+ }
773
+ .agno-hitl-card__args-body {
774
+ padding: 0 10px 9px;
775
+ display: flex;
776
+ flex-direction: column;
777
+ gap: 4px;
778
+ }
779
+ .agno-hitl-card__arg {
780
+ display: flex;
781
+ gap: 6px;
782
+ font-size: 12.5px;
783
+ }
784
+ .agno-hitl-card__arg-key {
785
+ color: var(--agno-muted);
786
+ font-family: 'DM Mono', ui-monospace, monospace;
787
+ }
788
+ .agno-hitl-card__arg-val {
789
+ color: var(--agno-text);
790
+ word-break: break-word;
791
+ }
792
+ .agno-hitl-card__reason {
793
+ background: var(--agno-bg);
794
+ border: 1px solid var(--agno-border);
795
+ border-radius: var(--agno-radius-sm);
796
+ padding: 8px 10px;
797
+ color: var(--agno-text);
798
+ font: inherit;
799
+ resize: vertical;
800
+ }
801
+ .agno-hitl-card__reason:focus {
802
+ outline: none;
803
+ border-color: var(--agno-border-strong);
804
+ }
805
+ .agno-hitl-card__fields {
806
+ display: flex;
807
+ flex-direction: column;
808
+ gap: 10px;
809
+ }
810
+ .agno-hitl-card__field {
811
+ display: flex;
812
+ flex-direction: column;
813
+ gap: 4px;
814
+ }
815
+ .agno-hitl-card__field.is-bool {
816
+ flex-direction: row;
817
+ align-items: center;
818
+ justify-content: space-between;
819
+ }
820
+ .agno-hitl-card__field-name {
821
+ font-size: 11px;
822
+ text-transform: uppercase;
823
+ letter-spacing: 0.03em;
824
+ color: var(--agno-muted);
825
+ }
826
+ .agno-hitl-card__input {
827
+ background: var(--agno-bg);
828
+ border: 1px solid var(--agno-border);
829
+ border-radius: var(--agno-radius-sm);
830
+ padding: 9px 11px;
831
+ color: var(--agno-text);
832
+ font: inherit;
833
+ }
834
+ .agno-hitl-card__input:focus {
835
+ outline: none;
836
+ border-color: var(--agno-brand);
837
+ }
838
+
839
+ /* Event log */
840
+ .agno-eventlog {
841
+ overflow-y: auto;
842
+ display: flex;
843
+ flex-direction: column;
844
+ gap: 3px;
845
+ font-size: 12px;
846
+ font-family: 'DM Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
847
+ }
848
+ .agno-eventlog__empty {
849
+ color: var(--agno-muted);
850
+ }
851
+ .agno-eventlog__row {
852
+ display: flex;
853
+ align-items: baseline;
854
+ gap: 8px;
855
+ padding: 4px 8px;
856
+ border-radius: 6px;
857
+ background: var(--agno-surface);
858
+ border: 1px solid var(--agno-border);
859
+ }
860
+ .agno-eventlog__name {
861
+ color: var(--agno-brand);
862
+ }
863
+ .agno-eventlog__count {
864
+ color: var(--agno-text);
865
+ background: var(--agno-surface-2);
866
+ border-radius: 999px;
867
+ padding: 0 6px;
868
+ font-size: 11px;
869
+ }
870
+ .agno-eventlog__source {
871
+ color: var(--agno-muted);
872
+ white-space: nowrap;
873
+ overflow: hidden;
874
+ text-overflow: ellipsis;
875
+ }
876
+ .agno-eventlog__time {
877
+ margin-left: auto;
878
+ color: var(--agno-muted);
879
+ white-space: nowrap;
880
+ }
881
+
882
+ /* Sessions */
883
+ .agno-sessions {
884
+ display: flex;
885
+ flex-direction: column;
886
+ gap: 10px;
887
+ height: 100%;
888
+ min-height: 0;
889
+ }
890
+ .agno-sessions__head {
891
+ display: flex;
892
+ align-items: center;
893
+ justify-content: space-between;
894
+ }
895
+ .agno-sessions__title {
896
+ font-size: 11px;
897
+ text-transform: uppercase;
898
+ letter-spacing: 0.06em;
899
+ color: var(--agno-muted);
900
+ }
901
+ .agno-sessions__new {
902
+ display: flex;
903
+ align-items: center;
904
+ justify-content: center;
905
+ gap: 8px;
906
+ width: 100%;
907
+ background: var(--agno-surface);
908
+ border: 1px solid var(--agno-border);
909
+ border-radius: var(--agno-radius);
910
+ color: var(--agno-text);
911
+ padding: 11px 12px;
912
+ cursor: pointer;
913
+ font: inherit;
914
+ font-size: 12px;
915
+ font-weight: 600;
916
+ text-transform: uppercase;
917
+ letter-spacing: 0.08em;
918
+ transition: border-color 0.12s ease, background 0.12s ease;
919
+ }
920
+ .agno-sessions__new:hover {
921
+ border-color: var(--agno-border-strong);
922
+ background: var(--agno-surface-2);
923
+ }
924
+ .agno-sessions__new span {
925
+ font-size: 15px;
926
+ font-weight: 400;
927
+ }
928
+ .agno-sessions__empty {
929
+ color: var(--agno-muted);
930
+ font-size: 13px;
931
+ padding: 6px 2px;
932
+ }
933
+ .agno-sessions__list {
934
+ list-style: none;
935
+ margin: 0;
936
+ padding: 0;
937
+ display: flex;
938
+ flex-direction: column;
939
+ gap: 6px;
940
+ overflow-y: auto;
941
+ }
942
+ .agno-sessions__item {
943
+ display: flex;
944
+ align-items: stretch;
945
+ border-radius: var(--agno-radius);
946
+ border: 1px solid var(--agno-border);
947
+ background: var(--agno-surface);
948
+ transition: border-color 0.12s ease, background 0.12s ease;
949
+ }
950
+ .agno-sessions__item:hover {
951
+ border-color: var(--agno-border-strong);
952
+ }
953
+ .agno-sessions__item.is-active {
954
+ background: var(--agno-surface-2);
955
+ border-color: var(--agno-border-strong);
956
+ }
957
+ .agno-sessions__select {
958
+ flex: 1;
959
+ min-width: 0;
960
+ display: flex;
961
+ flex-direction: column;
962
+ gap: 2px;
963
+ background: none;
964
+ border: none;
965
+ color: inherit;
966
+ cursor: pointer;
967
+ font: inherit;
968
+ text-align: left;
969
+ padding: 9px 11px;
970
+ }
971
+ .agno-sessions__name {
972
+ white-space: nowrap;
973
+ overflow: hidden;
974
+ text-overflow: ellipsis;
975
+ font-size: 13px;
976
+ }
977
+ .agno-sessions__date {
978
+ font-size: 11px;
979
+ color: var(--agno-muted);
980
+ }
981
+ .agno-sessions__delete {
982
+ background: none;
983
+ border: none;
984
+ color: var(--agno-muted);
985
+ cursor: pointer;
986
+ padding: 0 10px;
987
+ font-size: 13px;
988
+ }
989
+ .agno-sessions__delete:hover {
990
+ color: var(--agno-error);
991
+ }
992
+
993
+ /* Banner */
994
+ .agno-banner {
995
+ padding: 11px 16px;
996
+ background: var(--agno-brand-soft);
997
+ border-bottom: 1px solid rgba(255, 64, 23, 0.3);
998
+ color: var(--agno-text);
999
+ font-size: 13px;
1000
+ }
1001
+ .agno-banner code {
1002
+ background: var(--agno-surface-2);
1003
+ padding: 1px 5px;
1004
+ border-radius: 5px;
1005
+ font-size: 0.9em;
1006
+ font-family: 'DM Mono', ui-monospace, monospace;
1007
+ }
1008
+
1009
+ /* Input */
1010
+ .agno-input {
1011
+ border-top: 1px solid var(--agno-border);
1012
+ background: var(--agno-bg);
1013
+ padding: 12px 14px;
1014
+ display: flex;
1015
+ flex-direction: column;
1016
+ gap: 8px;
1017
+ }
1018
+ .agno-input__files {
1019
+ display: flex;
1020
+ flex-wrap: wrap;
1021
+ gap: 6px;
1022
+ }
1023
+ .agno-input__file {
1024
+ display: inline-flex;
1025
+ align-items: center;
1026
+ gap: 6px;
1027
+ font-size: 12px;
1028
+ background: var(--agno-surface-2);
1029
+ border-radius: 999px;
1030
+ padding: 2px 6px 2px 10px;
1031
+ }
1032
+ .agno-input__file button {
1033
+ border: none;
1034
+ background: none;
1035
+ color: var(--agno-muted);
1036
+ cursor: pointer;
1037
+ font-size: 14px;
1038
+ }
1039
+ .agno-input__row {
1040
+ display: flex;
1041
+ align-items: flex-end;
1042
+ gap: 8px;
1043
+ background: var(--agno-surface);
1044
+ border: 1px solid var(--agno-border);
1045
+ border-radius: var(--agno-radius-lg);
1046
+ padding: 7px 8px 7px 10px;
1047
+ }
1048
+ .agno-input__row:focus-within {
1049
+ border-color: var(--agno-border-strong);
1050
+ }
1051
+ .agno-input__textarea {
1052
+ flex: 1;
1053
+ resize: none;
1054
+ max-height: 160px;
1055
+ background: transparent;
1056
+ border: none;
1057
+ padding: 6px 8px;
1058
+ color: var(--agno-text);
1059
+ font: inherit;
1060
+ }
1061
+ .agno-input__textarea::placeholder {
1062
+ color: var(--agno-muted);
1063
+ }
1064
+ .agno-input__textarea:focus {
1065
+ outline: none;
1066
+ }
1067
+ .agno-input__attach {
1068
+ background: none;
1069
+ border: none;
1070
+ border-radius: var(--agno-radius-sm);
1071
+ width: 34px;
1072
+ height: 34px;
1073
+ cursor: pointer;
1074
+ color: var(--agno-muted);
1075
+ font-size: 15px;
1076
+ }
1077
+ .agno-input__attach:hover {
1078
+ color: var(--agno-text);
1079
+ background: var(--agno-surface-2);
1080
+ }
1081
+
1082
+ /* Buttons */
1083
+ .agno-btn {
1084
+ border: 1px solid var(--agno-border);
1085
+ background: var(--agno-surface-2);
1086
+ color: var(--agno-text);
1087
+ border-radius: var(--agno-radius-sm);
1088
+ padding: 8px 14px;
1089
+ cursor: pointer;
1090
+ font: inherit;
1091
+ font-weight: 500;
1092
+ transition: opacity 0.12s ease, border-color 0.12s ease;
1093
+ }
1094
+ .agno-btn:hover:not(:disabled) {
1095
+ border-color: var(--agno-border-strong);
1096
+ }
1097
+ .agno-btn:disabled {
1098
+ opacity: 0.45;
1099
+ cursor: not-allowed;
1100
+ }
1101
+ .agno-btn--primary {
1102
+ background: var(--agno-primary-bg);
1103
+ border-color: var(--agno-primary-bg);
1104
+ color: var(--agno-primary-fg);
1105
+ }
1106
+ .agno-btn--primary:hover:not(:disabled) {
1107
+ opacity: 0.9;
1108
+ border-color: var(--agno-primary-bg);
1109
+ }
1110
+ .agno-btn--stop {
1111
+ background: var(--agno-error);
1112
+ border-color: var(--agno-error);
1113
+ color: #fff;
1114
+ }
1115
+ .agno-btn--ghost {
1116
+ background: none;
1117
+ color: var(--agno-muted);
1118
+ font-size: 12px;
1119
+ font-weight: 600;
1120
+ text-transform: uppercase;
1121
+ letter-spacing: 0.08em;
1122
+ padding: 7px 12px;
1123
+ }
1124
+ .agno-btn--ghost:hover:not(:disabled) {
1125
+ color: var(--agno-text);
1126
+ background: var(--agno-surface);
1127
+ }
1128
+ .agno-btn--ghost.is-active {
1129
+ background: var(--agno-surface-2);
1130
+ color: var(--agno-text);
1131
+ border-color: var(--agno-border-strong);
1132
+ }
1133
+ /* Circular icon send button (paper-plane), brand-styled. */
1134
+ .agno-input__send {
1135
+ flex: 0 0 auto;
1136
+ display: grid;
1137
+ place-items: center;
1138
+ width: 36px;
1139
+ height: 36px;
1140
+ border-radius: var(--agno-radius);
1141
+ border: 1px solid transparent;
1142
+ background: var(--agno-primary-bg);
1143
+ color: var(--agno-primary-fg);
1144
+ cursor: pointer;
1145
+ font-size: 14px;
1146
+ transition: opacity 0.12s ease, background 0.12s ease;
1147
+ }
1148
+ .agno-input__send span {
1149
+ display: block;
1150
+ transform: translateX(1px);
1151
+ }
1152
+ .agno-input__send:hover:not(:disabled) {
1153
+ opacity: 0.9;
1154
+ }
1155
+ .agno-input__send:disabled {
1156
+ opacity: 0.4;
1157
+ cursor: not-allowed;
1158
+ }
1159
+ .agno-input__send--stop {
1160
+ background: var(--agno-error);
1161
+ color: #fff;
1162
+ }
1163
+ .agno-input__send--stop span {
1164
+ transform: none;
1165
+ font-size: 11px;
1166
+ }
1167
+
1168
+ .agno-chat__error {
1169
+ color: var(--agno-error);
1170
+ font-size: 13px;
1171
+ padding: 6px 14px;
1172
+ }
1173
+
1174
+ /* Entity selector — Agno OS style popover */
1175
+ .agno-select {
1176
+ position: relative;
1177
+ }
1178
+ .agno-select__trigger {
1179
+ display: flex;
1180
+ align-items: center;
1181
+ justify-content: space-between;
1182
+ gap: 8px;
1183
+ height: 34px;
1184
+ min-width: 190px;
1185
+ max-width: 280px;
1186
+ padding: 0 10px;
1187
+ background: var(--agno-surface);
1188
+ border: 1px solid var(--agno-border);
1189
+ border-radius: var(--agno-radius-sm);
1190
+ color: var(--agno-text);
1191
+ cursor: pointer;
1192
+ font: inherit;
1193
+ }
1194
+ .agno-select__trigger:hover:not(:disabled) {
1195
+ border-color: var(--agno-border-strong);
1196
+ }
1197
+ .agno-select__trigger:disabled {
1198
+ opacity: 0.5;
1199
+ cursor: not-allowed;
1200
+ }
1201
+ .agno-select__value {
1202
+ font-family: 'DM Mono', ui-monospace, monospace;
1203
+ font-size: 12px;
1204
+ letter-spacing: 0.02em;
1205
+ text-transform: uppercase;
1206
+ white-space: nowrap;
1207
+ overflow: hidden;
1208
+ text-overflow: ellipsis;
1209
+ }
1210
+ .agno-select__chev {
1211
+ color: var(--agno-muted);
1212
+ font-size: 13px;
1213
+ transition: transform 0.15s ease;
1214
+ }
1215
+ .agno-select__chev.is-open {
1216
+ transform: rotate(180deg);
1217
+ }
1218
+ .agno-select__panel {
1219
+ position: absolute;
1220
+ top: calc(100% + 6px);
1221
+ left: 0;
1222
+ z-index: 50;
1223
+ min-width: 260px;
1224
+ max-width: 320px;
1225
+ max-height: 360px;
1226
+ overflow-y: auto;
1227
+ padding: 6px;
1228
+ background: var(--agno-surface);
1229
+ border: 1px solid var(--agno-border);
1230
+ border-radius: var(--agno-radius);
1231
+ box-shadow:
1232
+ 0 0 0 1px rgba(0, 0, 0, 0.3),
1233
+ 0 12px 32px -8px rgba(0, 0, 0, 0.6);
1234
+ }
1235
+ .agno-select__empty {
1236
+ padding: 8px 10px;
1237
+ color: var(--agno-muted);
1238
+ font-size: 13px;
1239
+ }
1240
+ .agno-select__group + .agno-select__group {
1241
+ margin-top: 4px;
1242
+ }
1243
+ .agno-select__group-label {
1244
+ padding: 6px 10px 4px;
1245
+ font-size: 11px;
1246
+ color: var(--agno-muted);
1247
+ text-transform: uppercase;
1248
+ letter-spacing: 0.05em;
1249
+ }
1250
+ .agno-select__option {
1251
+ width: 100%;
1252
+ display: flex;
1253
+ align-items: center;
1254
+ gap: 8px;
1255
+ padding: 8px 10px;
1256
+ background: none;
1257
+ border: none;
1258
+ border-radius: var(--agno-radius-sm);
1259
+ color: var(--agno-text);
1260
+ cursor: pointer;
1261
+ font: inherit;
1262
+ text-align: left;
1263
+ }
1264
+ .agno-select__option:hover {
1265
+ background: var(--agno-surface-2);
1266
+ }
1267
+ .agno-select__option.is-selected {
1268
+ background: var(--agno-surface-2);
1269
+ }
1270
+ .agno-select__check {
1271
+ width: 14px;
1272
+ flex: 0 0 14px;
1273
+ color: var(--agno-brand);
1274
+ font-size: 12px;
1275
+ }
1276
+ .agno-select__label {
1277
+ flex: 1;
1278
+ min-width: 0;
1279
+ white-space: nowrap;
1280
+ overflow: hidden;
1281
+ text-overflow: ellipsis;
1282
+ font-size: 14px;
1283
+ }
1284
+ .agno-select__model {
1285
+ font-family: 'DM Mono', ui-monospace, monospace;
1286
+ font-size: 10.5px;
1287
+ color: var(--agno-muted);
1288
+ background: var(--agno-bg);
1289
+ border: 1px solid var(--agno-border);
1290
+ border-radius: 999px;
1291
+ padding: 1px 7px;
1292
+ white-space: nowrap;
1293
+ }