@m6d/cortex-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,3372 @@
1
+ @charset "UTF-8";
2
+ /*
3
+ * Theming surface.
4
+ *
5
+ * Every value below is the widget's own default; the compiled stylesheet ships
6
+ * this same file, so importing it changes nothing until you edit it. Override
7
+ * any token on :root, or on any ancestor of the widget, to retheme it.
8
+ *
9
+ * Each color is a light-dark() pair. Which side applies follows the widget root's
10
+ * color-scheme, set by the `theme` config option ('light' | 'dark' | 'system').
11
+ * The radius and font tokens below the colors are plain values — neither depends
12
+ * on the scheme.
13
+ */
14
+ :root {
15
+ --cortex-color-surface: light-dark(#ffffff, #0a0a0a);
16
+ --cortex-color-surface-subtle: light-dark(#f8fafc, #141414);
17
+ --cortex-color-surface-muted: light-dark(#f1f5f9, #1f1f1f);
18
+ --cortex-color-border: light-dark(#e2e8f0, #2e2e2e);
19
+ --cortex-color-border-strong: light-dark(#cbd5e1, #444444);
20
+ --cortex-color-text-heading: light-dark(#1e293b, #fafafa);
21
+ --cortex-color-text-strong: light-dark(#334155, #e5e5e5);
22
+ --cortex-color-text: light-dark(#475569, #d4d4d4);
23
+ --cortex-color-text-secondary: light-dark(#64748b, #a3a3a3);
24
+ --cortex-color-text-muted: light-dark(#94a3b8, #737373);
25
+ --cortex-color-primary: light-dark(#1e293b, #fafafa);
26
+ --cortex-color-primary-foreground: light-dark(#ffffff, #0a0a0a);
27
+ --cortex-color-accent: light-dark(#4f46e5, #818cf8);
28
+ --cortex-color-accent-surface: light-dark(#e0e7ff, #312e81);
29
+ --cortex-color-link: light-dark(#2563eb, #60a5fa);
30
+ --cortex-color-hover: light-dark(rgba(0, 0, 0, 0.05), rgba(255, 255, 255, 0.06));
31
+ /* User messages default to the same subtle surface every other quiet panel
32
+ * uses, split out so a consumer can give their own side of the chat a color
33
+ * without touching anything else. */
34
+ --cortex-color-user-surface: var(--cortex-color-surface-subtle);
35
+ --cortex-color-user-border: var(--cortex-color-border);
36
+ /* Code blocks sit a step below the bubble they are in, in either scheme. */
37
+ --cortex-color-code-surface: light-dark(#e8edf3, #111111);
38
+ --cortex-color-code-text: light-dark(#334155, #e5e5e5);
39
+ --cortex-color-success: light-dark(#059669, #34d399);
40
+ --cortex-color-success-surface: light-dark(#ecfdf5, #064e3b);
41
+ --cortex-color-success-border: light-dark(#d1fae5, #065f46);
42
+ --cortex-color-danger: light-dark(#dc2626, #f87171);
43
+ --cortex-color-danger-surface: light-dark(#fef2f2, #450a0a);
44
+ --cortex-color-danger-border: light-dark(#fecaca, #7f1d1d);
45
+ /* The corner scale every rounded surface derives from: the widget multiplies
46
+ * this by 0.5/0.75/1.5/2, so overriding it rescales all of them together. */
47
+ --cortex-radius: 0.5rem;
48
+ --cortex-font-mono: var(
49
+ --default-mono-font-family,
50
+ ui-monospace,
51
+ SFMono-Regular,
52
+ Menlo,
53
+ Monaco,
54
+ Consolas,
55
+ monospace
56
+ );
57
+ --cortex-font-size: 0.8125rem;
58
+ /* The widget's headings read --cortex-font-display and fall back to `inherit`,
59
+ * so it ships unset on purpose — declaring it here is how you opt in:
60
+ *
61
+ * --cortex-font-display: 'Your Display Face', sans-serif;
62
+ */
63
+ }
64
+
65
+ .cortex-widget {
66
+ color-scheme: light;
67
+ }
68
+ .cortex-widget[data-cortex-theme=dark] {
69
+ color-scheme: dark;
70
+ }
71
+ .cortex-widget[data-cortex-theme=system] {
72
+ color-scheme: light dark;
73
+ }
74
+
75
+ @layer cortex-preflight {
76
+ :where(.cortex-widget),
77
+ :where(.cortex-widget) *,
78
+ :where(.cortex-widget) ::before,
79
+ :where(.cortex-widget) ::after {
80
+ box-sizing: border-box;
81
+ margin: 0;
82
+ padding: 0;
83
+ border: 0 solid;
84
+ }
85
+ :where(.cortex-widget) {
86
+ tab-size: 4;
87
+ }
88
+ :where(.cortex-widget) hr {
89
+ height: 0;
90
+ color: inherit;
91
+ border-top-width: 1px;
92
+ }
93
+ :where(.cortex-widget) :is(h1, h2, h3, h4, h5, h6) {
94
+ font-size: inherit;
95
+ font-weight: inherit;
96
+ }
97
+ :where(.cortex-widget) a {
98
+ color: inherit;
99
+ text-decoration: inherit;
100
+ }
101
+ :where(.cortex-widget) :is(b, strong) {
102
+ font-weight: bolder;
103
+ }
104
+ :where(.cortex-widget) :is(code, kbd, samp, pre) {
105
+ font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);
106
+ font-feature-settings: var(--default-mono-font-feature-settings, normal);
107
+ font-variation-settings: var(--default-mono-font-variation-settings, normal);
108
+ font-size: 1em;
109
+ }
110
+ :where(.cortex-widget) small {
111
+ font-size: 80%;
112
+ }
113
+ :where(.cortex-widget) :is(sub, sup) {
114
+ font-size: 75%;
115
+ line-height: 0;
116
+ position: relative;
117
+ vertical-align: baseline;
118
+ }
119
+ :where(.cortex-widget) sub {
120
+ bottom: -0.25em;
121
+ }
122
+ :where(.cortex-widget) sup {
123
+ top: -0.5em;
124
+ }
125
+ :where(.cortex-widget) table {
126
+ text-indent: 0;
127
+ border-color: inherit;
128
+ border-collapse: collapse;
129
+ }
130
+ :where(.cortex-widget) :is(ol, ul, menu) {
131
+ list-style: none;
132
+ }
133
+ :where(.cortex-widget) :is(img, svg, video, canvas, audio, iframe, embed, object) {
134
+ display: block;
135
+ vertical-align: middle;
136
+ }
137
+ :where(.cortex-widget) :is(img, video) {
138
+ max-width: 100%;
139
+ height: auto;
140
+ }
141
+ :where(.cortex-widget) :is(button, input, select, optgroup, textarea) {
142
+ font: inherit;
143
+ font-feature-settings: inherit;
144
+ font-variation-settings: inherit;
145
+ letter-spacing: inherit;
146
+ color: inherit;
147
+ border-radius: 0;
148
+ background-color: transparent;
149
+ opacity: 1;
150
+ }
151
+ :where(.cortex-widget) ::placeholder {
152
+ opacity: 1;
153
+ color: color-mix(in oklab, currentcolor 50%, transparent);
154
+ }
155
+ :where(.cortex-widget) textarea {
156
+ resize: vertical;
157
+ }
158
+ }
159
+ .cortex-widget .hljs {
160
+ color: light-dark(#24292e, #c9d1d9);
161
+ background: transparent;
162
+ }
163
+ .cortex-widget .hljs-doctag,
164
+ .cortex-widget .hljs-keyword,
165
+ .cortex-widget .hljs-meta .hljs-keyword,
166
+ .cortex-widget .hljs-template-tag,
167
+ .cortex-widget .hljs-template-variable,
168
+ .cortex-widget .hljs-type,
169
+ .cortex-widget .hljs-variable.language_ {
170
+ color: light-dark(#d73a49, #ff7b72);
171
+ }
172
+ .cortex-widget .hljs-title,
173
+ .cortex-widget .hljs-title.class_,
174
+ .cortex-widget .hljs-title.class_.inherited__,
175
+ .cortex-widget .hljs-title.function_ {
176
+ color: light-dark(#6f42c1, #d2a8ff);
177
+ }
178
+ .cortex-widget .hljs-attr,
179
+ .cortex-widget .hljs-attribute,
180
+ .cortex-widget .hljs-literal,
181
+ .cortex-widget .hljs-meta,
182
+ .cortex-widget .hljs-number,
183
+ .cortex-widget .hljs-operator,
184
+ .cortex-widget .hljs-selector-attr,
185
+ .cortex-widget .hljs-selector-class,
186
+ .cortex-widget .hljs-selector-id,
187
+ .cortex-widget .hljs-variable {
188
+ color: light-dark(#005cc5, #79c0ff);
189
+ }
190
+ .cortex-widget .hljs-meta .hljs-string,
191
+ .cortex-widget .hljs-regexp,
192
+ .cortex-widget .hljs-string {
193
+ color: light-dark(#032f62, #a5d6ff);
194
+ }
195
+ .cortex-widget .hljs-built_in,
196
+ .cortex-widget .hljs-symbol {
197
+ color: light-dark(#e36209, #ffa657);
198
+ }
199
+ .cortex-widget .hljs-code,
200
+ .cortex-widget .hljs-comment,
201
+ .cortex-widget .hljs-formula {
202
+ color: light-dark(#6a737d, #8b949e);
203
+ }
204
+ .cortex-widget .hljs-name,
205
+ .cortex-widget .hljs-quote,
206
+ .cortex-widget .hljs-selector-pseudo,
207
+ .cortex-widget .hljs-selector-tag {
208
+ color: light-dark(#22863a, #7ee787);
209
+ }
210
+ .cortex-widget .hljs-subst {
211
+ color: light-dark(#24292e, #c9d1d9);
212
+ }
213
+ .cortex-widget .hljs-section {
214
+ color: light-dark(#005cc5, #1f6feb);
215
+ font-weight: bold;
216
+ }
217
+ .cortex-widget .hljs-bullet {
218
+ color: light-dark(#735c0f, #f2cc60);
219
+ }
220
+ .cortex-widget .hljs-emphasis {
221
+ font-style: italic;
222
+ }
223
+ .cortex-widget .hljs-strong {
224
+ font-weight: bold;
225
+ }
226
+ .cortex-widget .hljs-addition {
227
+ color: light-dark(#22863a, #aff5b4);
228
+ background-color: light-dark(#f0fff4, #033a16);
229
+ }
230
+ .cortex-widget .hljs-deletion {
231
+ color: light-dark(#b31d28, #ffdcd7);
232
+ background-color: light-dark(#ffeef0, #67060c);
233
+ }
234
+
235
+ .cortex-widget {
236
+ display: block;
237
+ }
238
+
239
+ .cortex-widget__container {
240
+ width: 100%;
241
+ height: 100%;
242
+ position: relative;
243
+ overflow: hidden;
244
+ }
245
+
246
+ .cortex-widget__screen {
247
+ position: absolute;
248
+ inset: 0;
249
+ display: flex;
250
+ flex-direction: column;
251
+ transition: transform 0.3s ease-out;
252
+ }
253
+
254
+ .cortex-widget__screen--active {
255
+ transform: translateX(0);
256
+ }
257
+
258
+ .cortex-widget__screen--left {
259
+ transform: translateX(-100%);
260
+ }
261
+ [dir=rtl] .cortex-widget__screen--left {
262
+ transform: translateX(100%);
263
+ }
264
+
265
+ .cortex-widget__screen--right {
266
+ transform: translateX(100%);
267
+ }
268
+ [dir=rtl] .cortex-widget__screen--right {
269
+ transform: translateX(-100%);
270
+ }
271
+
272
+ @keyframes cortex-skeleton-shimmer {
273
+ 0% {
274
+ background-position: -200% 0;
275
+ }
276
+ 100% {
277
+ background-position: 200% 0;
278
+ }
279
+ }
280
+ .cortex-skeleton {
281
+ background: linear-gradient(90deg, var(--cortex-color-border) 0%, var(--cortex-color-surface-muted) 40%, var(--cortex-color-border) 80%);
282
+ background-size: 200% 100%;
283
+ animation: cortex-skeleton-shimmer 1.8s ease-in-out infinite;
284
+ border-radius: 6px;
285
+ }
286
+
287
+ .cortex-widget__messages-skeleton {
288
+ flex: 1;
289
+ overflow: hidden;
290
+ padding: 1rem;
291
+ display: flex;
292
+ flex-direction: column;
293
+ gap: 0.5rem;
294
+ }
295
+
296
+ .cortex-widget__msg-skel {
297
+ width: 100%;
298
+ display: flex;
299
+ flex-direction: column;
300
+ }
301
+ .cortex-widget__msg-skel--user {
302
+ align-items: flex-end;
303
+ }
304
+ .cortex-widget__msg-skel--assistant {
305
+ align-items: flex-start;
306
+ }
307
+
308
+ .cortex-widget__msg-skel-bubble {
309
+ max-width: 80%;
310
+ padding: 1rem;
311
+ border-radius: calc(var(--cortex-radius) * 2);
312
+ border: 1px solid var(--cortex-color-border);
313
+ display: flex;
314
+ flex-direction: column;
315
+ gap: 0.5rem;
316
+ }
317
+ .cortex-widget__msg-skel-bubble--user {
318
+ background: var(--cortex-color-surface-subtle);
319
+ border-bottom-right-radius: 0;
320
+ }
321
+ .cortex-widget__msg-skel-bubble--assistant {
322
+ background: var(--cortex-color-surface-muted);
323
+ border-bottom-left-radius: 0;
324
+ }
325
+
326
+ .cortex-widget__msg-skel-line {
327
+ height: 0.75rem;
328
+ max-width: 100%;
329
+ }
330
+
331
+ .cortex-widget__messages {
332
+ flex: 1;
333
+ overflow: hidden;
334
+ }
335
+
336
+ @keyframes cortex-working-slide-in {
337
+ from {
338
+ opacity: 0;
339
+ transform: translateY(6px);
340
+ }
341
+ to {
342
+ opacity: 1;
343
+ transform: translateY(0);
344
+ }
345
+ }
346
+ @keyframes cortex-dot-wave {
347
+ 0%, 60%, 100% {
348
+ transform: translateY(0) scale(1);
349
+ opacity: 0.45;
350
+ }
351
+ 30% {
352
+ transform: translateY(-5px) scale(1.2);
353
+ opacity: 1;
354
+ }
355
+ }
356
+ @keyframes cortex-working-shimmer {
357
+ 0% {
358
+ background-position: -200% center;
359
+ }
360
+ 100% {
361
+ background-position: 200% center;
362
+ }
363
+ }
364
+ .cortex-widget__working {
365
+ flex-shrink: 0;
366
+ padding: 0.5rem 1rem;
367
+ display: flex;
368
+ align-items: center;
369
+ gap: 0.5rem;
370
+ animation: cortex-working-slide-in 0.25s ease-out both;
371
+ }
372
+
373
+ .cortex-widget__working-dots {
374
+ display: flex;
375
+ align-items: center;
376
+ gap: 4px;
377
+ }
378
+
379
+ .cortex-working-dot {
380
+ display: block;
381
+ width: 6px;
382
+ height: 6px;
383
+ border-radius: 9999px;
384
+ background: var(--cortex-color-success);
385
+ animation: cortex-dot-wave 1.4s ease-in-out infinite;
386
+ }
387
+ .cortex-working-dot:nth-child(2) {
388
+ animation-delay: 0.15s;
389
+ }
390
+ .cortex-working-dot:nth-child(3) {
391
+ animation-delay: 0.3s;
392
+ }
393
+
394
+ .cortex-widget__working-text {
395
+ font-size: 0.75rem;
396
+ font-weight: 500;
397
+ letter-spacing: 0.01em;
398
+ color: var(--cortex-color-success);
399
+ }
400
+
401
+ .cortex-widget__container--full {
402
+ display: flex;
403
+ flex-direction: row;
404
+ }
405
+ .cortex-widget__container--full > .cortex-widget__screen {
406
+ position: relative;
407
+ inset: auto;
408
+ transition: none;
409
+ }
410
+ .cortex-widget__container--full > .cortex-widget__screen.cortex-widget__screen--active, .cortex-widget__container--full > .cortex-widget__screen.cortex-widget__screen--left, .cortex-widget__container--full > .cortex-widget__screen.cortex-widget__screen--right {
411
+ transform: none;
412
+ }
413
+ .cortex-widget__container--full > .cortex-widget__screen:first-child {
414
+ width: 280px;
415
+ min-width: 280px;
416
+ flex-shrink: 0;
417
+ border-right: 1px solid var(--cortex-color-border);
418
+ background: var(--cortex-color-surface-subtle);
419
+ }
420
+ [dir=rtl] .cortex-widget__container--full > .cortex-widget__screen:first-child {
421
+ border-right: 0;
422
+ border-left: 1px solid var(--cortex-color-border);
423
+ }
424
+ .cortex-widget__container--full > .cortex-widget__screen:nth-child(2) {
425
+ flex: 1;
426
+ min-width: 0;
427
+ }
428
+ .cortex-widget__container--full .cortex-widget__back-btn,
429
+ .cortex-widget__container--full .cortex-widget__history-btn {
430
+ display: none;
431
+ }
432
+ .cortex-widget__container--full .cortex-widget__chat-title {
433
+ font-size: 0.875rem;
434
+ }
435
+ .cortex-widget__container--full .cortex-widget__chat-header {
436
+ background: var(--cortex-color-surface);
437
+ }
438
+ .cortex-widget__container--full .cortex-message-list {
439
+ padding: 1.5rem 2rem;
440
+ }
441
+ .cortex-widget__container--full .cortex-widget__messages-skeleton {
442
+ padding: 1.5rem 2rem;
443
+ }
444
+ .cortex-widget__container--full .cortex-widget__input-area {
445
+ padding: 0.75rem 2rem 1.25rem;
446
+ }
447
+ .cortex-widget__container--full .cortex-widget__working {
448
+ padding: 0.5rem 2rem;
449
+ }
450
+ @media (max-width: 768px) {
451
+ .cortex-widget__container--full > .cortex-widget__screen:first-child {
452
+ position: fixed;
453
+ inset: 0;
454
+ width: 280px;
455
+ min-width: 280px;
456
+ z-index: 110;
457
+ transform: translateX(-100%);
458
+ transition: transform 0.28s cubic-bezier(0.4, 0, 0.2, 1);
459
+ }
460
+ [dir=rtl] .cortex-widget__container--full > .cortex-widget__screen:first-child {
461
+ transform: translateX(100%);
462
+ border-left: 1px solid var(--cortex-color-border);
463
+ border-right: 0;
464
+ }
465
+ .cortex-widget__container--full > .cortex-widget__screen:nth-child(2) {
466
+ flex: 1;
467
+ min-width: 0;
468
+ }
469
+ .cortex-widget__container--full .cortex-widget__sidebar-toggle-btn {
470
+ flex-shrink: 0;
471
+ width: 2rem;
472
+ height: 2rem;
473
+ border-radius: calc(var(--cortex-radius) * 0.75);
474
+ display: flex;
475
+ align-items: center;
476
+ justify-content: center;
477
+ background: transparent;
478
+ border: 0;
479
+ cursor: pointer;
480
+ transition: color 0.15s, background-color 0.15s;
481
+ color: var(--cortex-color-text-secondary);
482
+ }
483
+ .cortex-widget__container--full .cortex-widget__sidebar-toggle-btn:hover {
484
+ color: var(--cortex-color-text-strong);
485
+ background: var(--cortex-color-surface-muted);
486
+ }
487
+ .cortex-widget__container--full .cortex-widget__sidebar-toggle-btn:active {
488
+ background: var(--cortex-color-border);
489
+ }
490
+ .cortex-widget__container--full .cortex-message-list {
491
+ padding: 1rem;
492
+ }
493
+ .cortex-widget__container--full .cortex-widget__messages-skeleton {
494
+ padding: 1rem;
495
+ }
496
+ .cortex-widget__container--full .cortex-widget__input-area {
497
+ padding: 0.75rem;
498
+ }
499
+ .cortex-widget__container--full .cortex-widget__working {
500
+ padding: 0.5rem 1rem;
501
+ }
502
+ }
503
+
504
+ @media (max-width: 768px) {
505
+ .cortex-widget__container--full.cortex-widget__container--sidebar-open > .cortex-widget__screen:first-child {
506
+ transform: translateX(0);
507
+ }
508
+ .cortex-widget__container--full.cortex-widget__container--sidebar-open .cortex-widget__sidebar-backdrop {
509
+ display: block;
510
+ position: fixed;
511
+ inset: 0;
512
+ z-index: 100;
513
+ background: rgba(15, 23, 42, 0.35);
514
+ backdrop-filter: blur(2px);
515
+ animation: cortex-sidebar-backdrop-in 0.2s ease-out both;
516
+ }
517
+ }
518
+
519
+ @keyframes cortex-sidebar-backdrop-in {
520
+ from {
521
+ opacity: 0;
522
+ }
523
+ to {
524
+ opacity: 1;
525
+ }
526
+ }
527
+ .cortex-widget__chat-header {
528
+ flex-shrink: 0;
529
+ height: 3rem;
530
+ padding: 0 1rem;
531
+ display: flex;
532
+ align-items: center;
533
+ gap: 0.75rem;
534
+ border-bottom: 1px solid var(--cortex-color-border);
535
+ background: var(--cortex-color-surface);
536
+ }
537
+
538
+ .cortex-widget__back-btn,
539
+ .cortex-widget__history-btn {
540
+ flex-shrink: 0;
541
+ width: 2rem;
542
+ height: 2rem;
543
+ border-radius: calc(var(--cortex-radius) * 0.75);
544
+ display: flex;
545
+ align-items: center;
546
+ justify-content: center;
547
+ background: transparent;
548
+ border: 0;
549
+ cursor: pointer;
550
+ transition: color 0.15s, background-color 0.15s;
551
+ color: var(--cortex-color-text-muted);
552
+ }
553
+ .cortex-widget__back-btn:hover,
554
+ .cortex-widget__history-btn:hover {
555
+ color: var(--cortex-color-text);
556
+ background: var(--cortex-color-surface-muted);
557
+ }
558
+
559
+ [dir=rtl] .cortex-widget__back-icon {
560
+ transform: rotate(180deg);
561
+ }
562
+
563
+ .cortex-widget__chat-title-wrap {
564
+ min-width: 0;
565
+ flex: 1;
566
+ }
567
+
568
+ .cortex-widget__chat-title {
569
+ font-family: var(--cortex-font-display, inherit);
570
+ font-size: var(--cortex-font-size);
571
+ font-weight: 500;
572
+ color: var(--cortex-color-text-strong);
573
+ overflow: hidden;
574
+ text-overflow: ellipsis;
575
+ white-space: nowrap;
576
+ margin: 0;
577
+ }
578
+
579
+ .cortex-widget__debug-btn {
580
+ flex-shrink: 0;
581
+ font-size: 0.6875rem;
582
+ font-weight: 500;
583
+ padding: 0.25rem 0.625rem;
584
+ border-radius: calc(var(--cortex-radius) * 0.75);
585
+ border: 0;
586
+ cursor: pointer;
587
+ transition: background-color 0.15s;
588
+ }
589
+ .cortex-widget__debug-btn--on {
590
+ background: light-dark(#fef3c7, #78350f);
591
+ color: light-dark(#d97706, #fbbf24);
592
+ }
593
+ .cortex-widget__debug-btn--on:hover {
594
+ background: light-dark(#fde68a, #92400e);
595
+ }
596
+ .cortex-widget__debug-btn--off {
597
+ background: var(--cortex-color-surface-muted);
598
+ color: var(--cortex-color-text-muted);
599
+ }
600
+ .cortex-widget__debug-btn--off:hover {
601
+ background: var(--cortex-color-border);
602
+ }
603
+
604
+ .cortex-widget__landing {
605
+ flex: 1;
606
+ min-height: 0;
607
+ overflow-y: auto;
608
+ display: flex;
609
+ flex-direction: column;
610
+ align-items: center;
611
+ justify-content: center;
612
+ padding: 1.25rem;
613
+ text-align: center;
614
+ }
615
+ .cortex-widget__landing .cortex-widget__input-area {
616
+ width: 100%;
617
+ max-width: 26rem;
618
+ padding: 1rem 0 0;
619
+ border-top: 0;
620
+ background: transparent;
621
+ }
622
+
623
+ .cortex-widget__landing-icon {
624
+ width: 2.5rem;
625
+ height: 2.5rem;
626
+ border-radius: var(--cortex-radius);
627
+ background: var(--cortex-color-accent-surface);
628
+ color: var(--cortex-color-accent);
629
+ display: flex;
630
+ align-items: center;
631
+ justify-content: center;
632
+ margin-bottom: 0.875rem;
633
+ }
634
+ [dir=rtl] .cortex-widget__landing-icon {
635
+ transform: scaleX(-1);
636
+ }
637
+
638
+ .cortex-widget__landing-greeting {
639
+ font-family: var(--cortex-font-display, inherit);
640
+ font-size: 1.0625rem;
641
+ font-weight: 600;
642
+ line-height: 1.3;
643
+ color: var(--cortex-color-text-heading);
644
+ margin: 0;
645
+ }
646
+
647
+ .cortex-widget__landing-chips {
648
+ display: flex;
649
+ flex-wrap: wrap;
650
+ justify-content: center;
651
+ gap: 0.5rem;
652
+ margin-top: 0.875rem;
653
+ }
654
+
655
+ .cortex-widget__landing-chip {
656
+ border: 1px solid var(--cortex-color-border);
657
+ border-radius: 999px;
658
+ background: var(--cortex-color-surface);
659
+ color: var(--cortex-color-text-strong);
660
+ font-size: 0.75rem;
661
+ font-weight: 500;
662
+ padding: 0.375rem 0.75rem;
663
+ cursor: pointer;
664
+ transition: border-color 0.15s, color 0.15s;
665
+ }
666
+ .cortex-widget__landing-chip:hover {
667
+ border-color: var(--cortex-color-accent);
668
+ color: var(--cortex-color-accent);
669
+ }
670
+
671
+ .cortex-widget__landing-recent {
672
+ width: 100%;
673
+ max-width: 26rem;
674
+ margin-top: 1rem;
675
+ display: flex;
676
+ flex-direction: column;
677
+ }
678
+
679
+ .cortex-widget__landing-recent-item {
680
+ display: flex;
681
+ align-items: center;
682
+ gap: 0.75rem;
683
+ padding: 0.4375rem 0.625rem;
684
+ border: 0;
685
+ border-radius: calc(var(--cortex-radius) * 0.75);
686
+ background: transparent;
687
+ cursor: pointer;
688
+ transition: background-color 0.15s;
689
+ }
690
+ .cortex-widget__landing-recent-item:hover {
691
+ background: var(--cortex-color-hover);
692
+ }
693
+
694
+ .cortex-widget__landing-recent-title {
695
+ flex: 1;
696
+ min-width: 0;
697
+ text-align: start;
698
+ font-size: var(--cortex-font-size);
699
+ font-weight: 500;
700
+ color: var(--cortex-color-text-strong);
701
+ overflow: hidden;
702
+ text-overflow: ellipsis;
703
+ white-space: nowrap;
704
+ margin: 0;
705
+ }
706
+
707
+ .cortex-widget__landing-recent-time {
708
+ flex-shrink: 0;
709
+ font-size: 0.6875rem;
710
+ color: var(--cortex-color-text-muted);
711
+ margin: 0;
712
+ }
713
+
714
+ cortex-chat-composer,
715
+ cortex-message-tool-call-outcome,
716
+ cortex-llm-usage-chips {
717
+ display: contents;
718
+ }
719
+
720
+ .cortex-widget__input-area {
721
+ flex-shrink: 0;
722
+ padding: 0.75rem;
723
+ background: var(--cortex-color-surface);
724
+ border-top: 1px solid var(--cortex-color-border);
725
+ }
726
+
727
+ .cortex-widget__input-box {
728
+ display: flex;
729
+ align-items: flex-end;
730
+ gap: 0.5rem;
731
+ border-radius: calc(var(--cortex-radius) * 1.5);
732
+ border: 1px solid var(--cortex-color-border);
733
+ padding: 0.375rem;
734
+ transition: border-color 0.15s, background-color 0.15s;
735
+ }
736
+ .cortex-widget__input-box--disabled {
737
+ background: var(--cortex-color-surface-muted);
738
+ }
739
+ .cortex-widget__input-box--enabled {
740
+ background: color-mix(in oklab, var(--cortex-color-surface-subtle) 45%, var(--cortex-color-surface));
741
+ }
742
+ .cortex-widget__input-box--enabled:focus-within {
743
+ border-color: var(--cortex-color-border-strong);
744
+ background: var(--cortex-color-surface);
745
+ }
746
+ .cortex-widget__input-box--dragging {
747
+ border-color: var(--cortex-color-text-heading);
748
+ border-style: dashed;
749
+ background: var(--cortex-color-surface-muted);
750
+ }
751
+
752
+ .cortex-widget__textarea {
753
+ flex: 1;
754
+ background: transparent;
755
+ resize: none;
756
+ border: 0;
757
+ outline: none;
758
+ font-size: var(--cortex-font-size);
759
+ padding: 0.375rem 0.5rem;
760
+ min-height: 28px;
761
+ max-height: calc(5.5 * var(--cortex-font-size) + 0.75rem);
762
+ overflow-y: auto;
763
+ line-height: 1.375;
764
+ color: var(--cortex-color-text-strong);
765
+ }
766
+ .cortex-widget__textarea::placeholder {
767
+ color: var(--cortex-color-text-muted);
768
+ }
769
+ .cortex-widget__textarea--disabled {
770
+ color: var(--cortex-color-text-muted);
771
+ cursor: not-allowed;
772
+ }
773
+ .cortex-widget__textarea:disabled {
774
+ cursor: not-allowed;
775
+ border: 0;
776
+ }
777
+
778
+ .cortex-widget__input-actions {
779
+ flex-shrink: 0;
780
+ display: flex;
781
+ align-items: center;
782
+ gap: 0.375rem;
783
+ }
784
+
785
+ @keyframes cortex-stop-pulse-ring {
786
+ 0% {
787
+ opacity: 0.45;
788
+ transform: scale(1);
789
+ }
790
+ 50% {
791
+ opacity: 0.15;
792
+ transform: scale(1.12);
793
+ }
794
+ 100% {
795
+ opacity: 0.45;
796
+ transform: scale(1);
797
+ }
798
+ }
799
+ @keyframes cortex-stop-fade-in {
800
+ from {
801
+ opacity: 0;
802
+ transform: scale(0.7);
803
+ }
804
+ to {
805
+ opacity: 1;
806
+ transform: scale(1);
807
+ }
808
+ }
809
+ .cortex-stop-btn {
810
+ flex-shrink: 0;
811
+ width: 2rem;
812
+ height: 2rem;
813
+ border-radius: var(--cortex-radius);
814
+ display: flex;
815
+ align-items: center;
816
+ justify-content: center;
817
+ cursor: pointer;
818
+ position: relative;
819
+ background: var(--cortex-color-danger);
820
+ color: white;
821
+ border: 0;
822
+ animation: cortex-stop-fade-in 0.2s ease-out both;
823
+ transition: background 0.15s ease;
824
+ }
825
+ .cortex-stop-btn:hover {
826
+ background: color-mix(in oklab, var(--cortex-color-danger) 85%, black);
827
+ }
828
+ .cortex-stop-btn:active {
829
+ transform: scale(0.92);
830
+ }
831
+
832
+ .cortex-stop-btn__ring {
833
+ position: absolute;
834
+ inset: 0;
835
+ border-radius: var(--cortex-radius);
836
+ background: var(--cortex-color-danger);
837
+ animation: cortex-stop-pulse-ring 2s ease-in-out infinite;
838
+ pointer-events: none;
839
+ }
840
+
841
+ .cortex-stop-btn__icon {
842
+ position: relative;
843
+ z-index: 1;
844
+ }
845
+
846
+ .cortex-widget__attach-btn {
847
+ flex-shrink: 0;
848
+ width: 2rem;
849
+ height: 2rem;
850
+ border-radius: var(--cortex-radius);
851
+ display: flex;
852
+ align-items: center;
853
+ justify-content: center;
854
+ background: transparent;
855
+ border: 0;
856
+ cursor: pointer;
857
+ transition: color 0.15s, background-color 0.15s;
858
+ color: var(--cortex-color-text-muted);
859
+ }
860
+ .cortex-widget__attach-btn:hover {
861
+ color: var(--cortex-color-text);
862
+ background: var(--cortex-color-hover);
863
+ }
864
+
865
+ .cortex-widget__file-input {
866
+ display: none;
867
+ }
868
+
869
+ .cortex-widget__send-btn {
870
+ flex-shrink: 0;
871
+ width: 2rem;
872
+ height: 2rem;
873
+ border-radius: var(--cortex-radius);
874
+ display: flex;
875
+ align-items: center;
876
+ justify-content: center;
877
+ border: 0;
878
+ transition: background-color 0.15s;
879
+ cursor: default;
880
+ }
881
+ .cortex-widget__send-btn--empty {
882
+ background: var(--cortex-color-border);
883
+ color: var(--cortex-color-text-muted);
884
+ }
885
+ .cortex-widget__send-btn--ready {
886
+ background: var(--cortex-color-primary);
887
+ color: var(--cortex-color-primary-foreground);
888
+ cursor: pointer;
889
+ }
890
+ .cortex-widget__send-btn--ready:hover {
891
+ background: color-mix(in oklab, var(--cortex-color-primary) 85%, var(--cortex-color-primary-foreground));
892
+ }
893
+
894
+ [dir=rtl] .cortex-widget__send-icon {
895
+ transform: rotate(180deg);
896
+ }
897
+
898
+ .cortex-widget__threads-header {
899
+ flex-shrink: 0;
900
+ padding: 1.25rem 1.25rem 1rem;
901
+ display: flex;
902
+ align-items: center;
903
+ gap: 0.75rem;
904
+ }
905
+ .cortex-widget__threads-header .cortex-widget__new-chat-btn {
906
+ margin-inline-start: auto;
907
+ }
908
+
909
+ .cortex-widget__threads-title {
910
+ font-family: var(--cortex-font-display, inherit);
911
+ font-size: 0.9375rem;
912
+ font-weight: 600;
913
+ color: var(--cortex-color-text-heading);
914
+ letter-spacing: -0.01em;
915
+ margin: 0;
916
+ }
917
+
918
+ .cortex-widget__threads-count {
919
+ font-size: 0.6875rem;
920
+ color: var(--cortex-color-text-muted);
921
+ margin-top: 0.125rem;
922
+ margin-bottom: 0;
923
+ }
924
+
925
+ .cortex-widget__new-chat-btn {
926
+ display: inline-flex;
927
+ align-items: center;
928
+ gap: 0.375rem;
929
+ font-size: 0.75rem;
930
+ font-weight: 500;
931
+ color: var(--cortex-color-primary-foreground);
932
+ background: var(--cortex-color-primary);
933
+ padding: 0.375rem 0.75rem;
934
+ border-radius: calc(var(--cortex-radius) * 0.75);
935
+ border: 0;
936
+ cursor: pointer;
937
+ transition: background-color 0.15s;
938
+ }
939
+ .cortex-widget__new-chat-btn:hover {
940
+ background: color-mix(in oklab, var(--cortex-color-primary) 85%, var(--cortex-color-primary-foreground));
941
+ }
942
+ .cortex-widget__new-chat-btn:active {
943
+ background: var(--cortex-color-primary);
944
+ }
945
+ .cortex-widget__new-chat-btn--empty-state {
946
+ margin-top: 0.75rem;
947
+ }
948
+
949
+ .cortex-widget__threads-list {
950
+ flex: 1;
951
+ overflow-y: auto;
952
+ padding: 0 0.75rem 0.75rem;
953
+ }
954
+
955
+ .cortex-widget__thread-skeleton {
956
+ display: flex;
957
+ align-items: center;
958
+ gap: 0.75rem;
959
+ padding: 0.75rem;
960
+ margin-bottom: 0.375rem;
961
+ border-radius: var(--cortex-radius);
962
+ border: 1px solid var(--cortex-color-border);
963
+ background: var(--cortex-color-surface);
964
+ }
965
+
966
+ .cortex-widget__thread-skeleton-icon {
967
+ flex-shrink: 0;
968
+ width: 2rem;
969
+ height: 2rem;
970
+ }
971
+
972
+ .cortex-widget__thread-skeleton-lines {
973
+ flex: 1;
974
+ display: flex;
975
+ flex-direction: column;
976
+ gap: 0.375rem;
977
+ }
978
+
979
+ .cortex-widget__thread-skeleton-line {
980
+ height: 0.875rem;
981
+ }
982
+
983
+ .cortex-widget__thread-item {
984
+ width: 100%;
985
+ text-align: start;
986
+ padding: 0.75rem;
987
+ border-radius: var(--cortex-radius);
988
+ display: flex;
989
+ align-items: center;
990
+ gap: 0.75rem;
991
+ transition: background-color 0.15s, border-color 0.15s;
992
+ cursor: pointer;
993
+ margin-bottom: 0.375rem;
994
+ border: 1px solid var(--cortex-color-border);
995
+ background: var(--cortex-color-surface);
996
+ color: var(--cortex-color-text);
997
+ }
998
+ .cortex-widget__thread-item:hover {
999
+ background: var(--cortex-color-surface-muted);
1000
+ border-color: var(--cortex-color-border-strong);
1001
+ }
1002
+ .cortex-widget__thread-item:active {
1003
+ background: color-mix(in oklab, var(--cortex-color-surface-muted) 50%, var(--cortex-color-border));
1004
+ }
1005
+ .cortex-widget__thread-item--active {
1006
+ background: color-mix(in oklab, var(--cortex-color-surface-muted) 50%, var(--cortex-color-border));
1007
+ border-color: var(--cortex-color-border-strong);
1008
+ color: var(--cortex-color-text-heading);
1009
+ }
1010
+ .cortex-widget__thread-item--active:hover {
1011
+ background: var(--cortex-color-border);
1012
+ }
1013
+ .cortex-widget__thread-item--active:active {
1014
+ background: color-mix(in oklab, var(--cortex-color-border) 50%, var(--cortex-color-border-strong));
1015
+ }
1016
+
1017
+ .cortex-widget__thread-icon {
1018
+ flex-shrink: 0;
1019
+ width: 2rem;
1020
+ height: 2rem;
1021
+ border-radius: calc(var(--cortex-radius) * 0.75);
1022
+ display: flex;
1023
+ align-items: center;
1024
+ justify-content: center;
1025
+ font-size: 0.6875rem;
1026
+ font-weight: 600;
1027
+ background: var(--cortex-color-accent-surface);
1028
+ color: var(--cortex-color-accent);
1029
+ }
1030
+ [dir=rtl] .cortex-widget__thread-icon {
1031
+ transform: scaleX(-1);
1032
+ }
1033
+ .cortex-widget__thread-icon--active {
1034
+ background: color-mix(in oklab, var(--cortex-color-accent-surface) 85%, var(--cortex-color-accent));
1035
+ }
1036
+
1037
+ .cortex-widget__thread-info {
1038
+ min-width: 0;
1039
+ flex: 1;
1040
+ }
1041
+
1042
+ .cortex-widget__thread-title-row {
1043
+ display: flex;
1044
+ align-items: center;
1045
+ gap: 0.5rem;
1046
+ min-width: 0;
1047
+ }
1048
+
1049
+ .cortex-widget__thread-title {
1050
+ font-size: var(--cortex-font-size);
1051
+ font-weight: 500;
1052
+ overflow: hidden;
1053
+ text-overflow: ellipsis;
1054
+ white-space: nowrap;
1055
+ line-height: 1.25;
1056
+ margin: 0;
1057
+ color: var(--cortex-color-text-strong);
1058
+ }
1059
+ .cortex-widget__thread-title--active {
1060
+ color: var(--cortex-color-text-heading);
1061
+ font-weight: 600;
1062
+ }
1063
+
1064
+ .cortex-widget__thread-time {
1065
+ font-size: 0.6875rem;
1066
+ color: var(--cortex-color-text-muted);
1067
+ margin-top: 0.125rem;
1068
+ margin-bottom: 0;
1069
+ overflow: hidden;
1070
+ text-overflow: ellipsis;
1071
+ white-space: nowrap;
1072
+ }
1073
+
1074
+ .cortex-widget__thread-running {
1075
+ flex-shrink: 0;
1076
+ display: inline-flex;
1077
+ align-items: center;
1078
+ gap: 0.3125rem;
1079
+ padding: 0.2rem 0.45rem;
1080
+ border-radius: 999px;
1081
+ background: var(--cortex-color-success-surface);
1082
+ color: var(--cortex-color-success);
1083
+ font-size: 0.625rem;
1084
+ font-weight: 700;
1085
+ letter-spacing: 0.02em;
1086
+ text-transform: uppercase;
1087
+ }
1088
+
1089
+ .cortex-widget__thread-running-dot {
1090
+ width: 0.375rem;
1091
+ height: 0.375rem;
1092
+ border-radius: 999px;
1093
+ background: currentColor;
1094
+ box-shadow: 0 0 0.45rem currentColor;
1095
+ animation: cortex-thread-running-pulse 1.4s ease-in-out infinite;
1096
+ }
1097
+
1098
+ @keyframes cortex-thread-running-pulse {
1099
+ 0%, 100% {
1100
+ opacity: 0.45;
1101
+ transform: scale(0.9);
1102
+ }
1103
+ 50% {
1104
+ opacity: 1;
1105
+ transform: scale(1);
1106
+ }
1107
+ }
1108
+ .cortex-widget__thread-delete {
1109
+ flex-shrink: 0;
1110
+ opacity: 0;
1111
+ width: 1.75rem;
1112
+ height: 1.75rem;
1113
+ border-radius: calc(var(--cortex-radius) * 0.75);
1114
+ display: flex;
1115
+ align-items: center;
1116
+ justify-content: center;
1117
+ cursor: pointer;
1118
+ transition: opacity 0.15s;
1119
+ background: transparent;
1120
+ border: 0;
1121
+ color: var(--cortex-color-text-muted);
1122
+ }
1123
+ .cortex-widget__thread-item:hover > .cortex-widget__thread-delete {
1124
+ opacity: 1;
1125
+ }
1126
+ .cortex-widget__thread-delete:hover {
1127
+ background: var(--cortex-color-border);
1128
+ }
1129
+ .cortex-widget__thread-delete--active {
1130
+ color: var(--cortex-color-text-secondary);
1131
+ }
1132
+ .cortex-widget__thread-delete--active:hover {
1133
+ color: var(--cortex-color-text);
1134
+ }
1135
+
1136
+ .cortex-widget__thread-arrow {
1137
+ flex-shrink: 0;
1138
+ transition: color 0.15s;
1139
+ color: var(--cortex-color-border-strong);
1140
+ }
1141
+ [dir=rtl] .cortex-widget__thread-arrow {
1142
+ transform: rotate(180deg);
1143
+ }
1144
+ .cortex-widget__thread-item:hover > .cortex-widget__thread-arrow {
1145
+ color: var(--cortex-color-text-muted);
1146
+ }
1147
+ .cortex-widget__thread-arrow--active {
1148
+ color: var(--cortex-color-text-muted);
1149
+ }
1150
+ .cortex-widget__thread-item:hover > .cortex-widget__thread-arrow--active {
1151
+ color: var(--cortex-color-text-secondary);
1152
+ }
1153
+
1154
+ .cortex-widget__threads-empty {
1155
+ display: flex;
1156
+ flex-direction: column;
1157
+ align-items: center;
1158
+ justify-content: center;
1159
+ padding: 4rem 0;
1160
+ text-align: center;
1161
+ }
1162
+
1163
+ .cortex-widget__threads-empty-icon {
1164
+ width: 2.5rem;
1165
+ height: 2.5rem;
1166
+ border-radius: var(--cortex-radius);
1167
+ background: var(--cortex-color-accent-surface);
1168
+ display: flex;
1169
+ align-items: center;
1170
+ justify-content: center;
1171
+ margin-bottom: 0.75rem;
1172
+ }
1173
+
1174
+ .cortex-widget__threads-empty-svg {
1175
+ color: var(--cortex-color-accent);
1176
+ }
1177
+
1178
+ .cortex-widget__threads-empty-title {
1179
+ font-family: var(--cortex-font-display, inherit);
1180
+ font-size: var(--cortex-font-size);
1181
+ color: var(--cortex-color-text-muted);
1182
+ font-weight: 500;
1183
+ margin: 0;
1184
+ }
1185
+
1186
+ .cortex-widget__threads-empty-subtitle {
1187
+ font-size: 0.6875rem;
1188
+ color: var(--cortex-color-text-muted);
1189
+ margin-top: 0.25rem;
1190
+ margin-bottom: 0;
1191
+ }
1192
+
1193
+ .cortex-widget__sidebar-toggle-btn {
1194
+ display: none;
1195
+ }
1196
+
1197
+ .cortex-widget__sidebar-backdrop {
1198
+ display: none;
1199
+ }
1200
+
1201
+ .cortex-message-list {
1202
+ height: 100%;
1203
+ overflow-y: auto;
1204
+ width: 100%;
1205
+ padding: 1rem;
1206
+ }
1207
+
1208
+ .cortex-message-list__content {
1209
+ display: flex;
1210
+ flex-direction: column;
1211
+ gap: 0.5rem;
1212
+ }
1213
+
1214
+ .cortex-message {
1215
+ min-width: 0;
1216
+ }
1217
+ .cortex-message:empty {
1218
+ display: none;
1219
+ }
1220
+
1221
+ .cortex-message-parts {
1222
+ width: 100%;
1223
+ display: flex;
1224
+ flex-direction: column;
1225
+ gap: 0.5rem;
1226
+ }
1227
+
1228
+ .cortex-message-actions {
1229
+ display: flex;
1230
+ align-items: center;
1231
+ gap: 0.375rem;
1232
+ margin-top: -0.25rem;
1233
+ }
1234
+ .cortex-message-actions--user {
1235
+ justify-content: flex-end;
1236
+ }
1237
+ .cortex-message-actions__time {
1238
+ font-size: 0.6875rem;
1239
+ color: var(--cortex-color-text-muted);
1240
+ opacity: 0;
1241
+ transition: opacity 150ms ease;
1242
+ }
1243
+ .cortex-message-actions:not(:has(.cortex-copy-btn)) .cortex-message-actions__time {
1244
+ opacity: 1;
1245
+ }
1246
+ .cortex-message:hover .cortex-message-actions .cortex-copy-btn__button,
1247
+ .cortex-message:hover .cortex-message-actions .cortex-message-actions__time, .cortex-message-actions:focus-within .cortex-copy-btn__button,
1248
+ .cortex-message-actions:focus-within .cortex-message-actions__time {
1249
+ opacity: 1;
1250
+ }
1251
+
1252
+ .cortex-message-debug-zone {
1253
+ display: flex;
1254
+ flex-direction: column;
1255
+ gap: 0.25rem;
1256
+ padding-top: 0.375rem;
1257
+ margin-top: 0.125rem;
1258
+ border-top: 1px dashed var(--cortex-color-border);
1259
+ }
1260
+
1261
+ .cortex-message-part {
1262
+ display: block;
1263
+ min-width: 0;
1264
+ }
1265
+ .cortex-message-part:empty {
1266
+ display: none;
1267
+ }
1268
+
1269
+ .cortex-message-part--animated {
1270
+ animation: cortex-part-fade-in-up 0.2s cubic-bezier(0.34, 1.56, 0.64, 1) both;
1271
+ }
1272
+
1273
+ @keyframes cortex-part-fade-in-up {
1274
+ from {
1275
+ opacity: 0;
1276
+ transform: translateY(30px);
1277
+ }
1278
+ to {
1279
+ opacity: 1;
1280
+ transform: translateY(0);
1281
+ }
1282
+ }
1283
+ .cortex-unhandled-type {
1284
+ text-align: center;
1285
+ font-size: 0.75rem;
1286
+ color: var(--cortex-color-text-muted);
1287
+ }
1288
+
1289
+ .cortex-text-part {
1290
+ width: 100%;
1291
+ display: flex;
1292
+ flex-direction: column;
1293
+ }
1294
+ .cortex-text-part--assistant {
1295
+ align-items: flex-start;
1296
+ }
1297
+ .cortex-text-part--user {
1298
+ align-items: flex-end;
1299
+ }
1300
+ [dir=rtl] .cortex-text-part--assistant {
1301
+ align-items: flex-start;
1302
+ }
1303
+ [dir=rtl] .cortex-text-part--user {
1304
+ align-items: flex-end;
1305
+ }
1306
+
1307
+ .cortex-text-bubble {
1308
+ max-width: 80%;
1309
+ min-width: 0;
1310
+ overflow-wrap: anywhere;
1311
+ font-size: var(--cortex-font-size);
1312
+ line-height: 1.625;
1313
+ padding: 1rem;
1314
+ border-radius: calc(var(--cortex-radius) * 2);
1315
+ border: 1px solid var(--cortex-color-border);
1316
+ color: var(--cortex-color-text-strong);
1317
+ }
1318
+ .cortex-text-bubble--assistant {
1319
+ background: var(--cortex-color-surface-muted);
1320
+ border-bottom-left-radius: 0;
1321
+ }
1322
+ [dir=rtl] .cortex-text-bubble--assistant {
1323
+ border-bottom-left-radius: calc(var(--cortex-radius) * 2);
1324
+ border-bottom-right-radius: 0;
1325
+ }
1326
+ .cortex-text-bubble--user {
1327
+ background: var(--cortex-color-user-surface);
1328
+ border-color: var(--cortex-color-user-border);
1329
+ border-bottom-right-radius: 0;
1330
+ }
1331
+ [dir=rtl] .cortex-text-bubble--user {
1332
+ border-bottom-right-radius: calc(var(--cortex-radius) * 2);
1333
+ border-bottom-left-radius: 0;
1334
+ }
1335
+ .cortex-text-bubble h1,
1336
+ .cortex-text-bubble h2,
1337
+ .cortex-text-bubble h3,
1338
+ .cortex-text-bubble h4,
1339
+ .cortex-text-bubble h5,
1340
+ .cortex-text-bubble h6 {
1341
+ margin-top: 1.25em;
1342
+ margin-bottom: 0.5em;
1343
+ font-weight: 600;
1344
+ line-height: 1.3;
1345
+ color: var(--cortex-color-text-heading);
1346
+ }
1347
+ .cortex-text-bubble h1:first-child,
1348
+ .cortex-text-bubble h2:first-child,
1349
+ .cortex-text-bubble h3:first-child,
1350
+ .cortex-text-bubble h4:first-child,
1351
+ .cortex-text-bubble h5:first-child,
1352
+ .cortex-text-bubble h6:first-child {
1353
+ margin-top: 0;
1354
+ }
1355
+ .cortex-text-bubble h1 {
1356
+ font-size: 1.25em;
1357
+ }
1358
+ .cortex-text-bubble h2 {
1359
+ font-size: 1.125em;
1360
+ }
1361
+ .cortex-text-bubble h3 {
1362
+ font-size: 1em;
1363
+ }
1364
+ .cortex-text-bubble p {
1365
+ margin-top: 0.75em;
1366
+ margin-bottom: 0.75em;
1367
+ }
1368
+ .cortex-text-bubble p:first-child {
1369
+ margin-top: 0;
1370
+ }
1371
+ .cortex-text-bubble p:last-child {
1372
+ margin-bottom: 0;
1373
+ }
1374
+ .cortex-text-bubble ul,
1375
+ .cortex-text-bubble ol {
1376
+ margin-top: 0.75em;
1377
+ margin-bottom: 0.75em;
1378
+ padding-inline-start: 1.5em;
1379
+ }
1380
+ .cortex-text-bubble ul {
1381
+ list-style-type: disc;
1382
+ }
1383
+ .cortex-text-bubble ol {
1384
+ list-style-type: decimal;
1385
+ }
1386
+ .cortex-text-bubble li {
1387
+ margin-top: 0.25em;
1388
+ margin-bottom: 0.25em;
1389
+ }
1390
+ .cortex-text-bubble code {
1391
+ font-family: var(--cortex-font-mono);
1392
+ font-size: 0.875em;
1393
+ background: var(--cortex-color-border);
1394
+ padding: 0.125em 0.375em;
1395
+ border-radius: calc(var(--cortex-radius) * 0.5);
1396
+ }
1397
+ .cortex-text-bubble pre {
1398
+ margin-top: 0.75em;
1399
+ margin-bottom: 0.75em;
1400
+ padding: 0.75em 1em;
1401
+ background: var(--cortex-color-code-surface);
1402
+ border-radius: var(--cortex-radius);
1403
+ max-width: 100%;
1404
+ overflow-x: auto;
1405
+ font-size: 0.8125em;
1406
+ line-height: 1.6;
1407
+ }
1408
+ .cortex-text-bubble pre code {
1409
+ background: transparent;
1410
+ padding: 0;
1411
+ color: var(--cortex-color-code-text);
1412
+ }
1413
+ .cortex-text-bubble blockquote {
1414
+ margin-top: 0.75em;
1415
+ margin-bottom: 0.75em;
1416
+ padding-inline-start: 1em;
1417
+ border-inline-start: 3px solid var(--cortex-color-border-strong);
1418
+ color: var(--cortex-color-text-secondary);
1419
+ font-style: italic;
1420
+ }
1421
+ .cortex-text-bubble a {
1422
+ color: var(--cortex-color-link);
1423
+ text-decoration: underline;
1424
+ }
1425
+ .cortex-text-bubble a:hover {
1426
+ color: color-mix(in oklab, var(--cortex-color-link) 80%, var(--cortex-color-text-heading));
1427
+ }
1428
+ .cortex-text-bubble table {
1429
+ width: 100%;
1430
+ border-collapse: collapse;
1431
+ margin-top: 0.75em;
1432
+ margin-bottom: 0.75em;
1433
+ font-size: 0.875em;
1434
+ }
1435
+ .cortex-text-bubble th,
1436
+ .cortex-text-bubble td {
1437
+ border: 1px solid var(--cortex-color-border);
1438
+ padding: 0.375em 0.75em;
1439
+ text-align: start;
1440
+ }
1441
+ .cortex-text-bubble th {
1442
+ background: var(--cortex-color-surface-subtle);
1443
+ font-weight: 600;
1444
+ }
1445
+ .cortex-text-bubble hr {
1446
+ margin-top: 1.5em;
1447
+ margin-bottom: 1.5em;
1448
+ border: none;
1449
+ border-top: 1px solid var(--cortex-color-border);
1450
+ }
1451
+ .cortex-text-bubble img {
1452
+ max-width: 100%;
1453
+ height: auto;
1454
+ border-radius: calc(var(--cortex-radius) * 0.75);
1455
+ }
1456
+
1457
+ .cortex-media-block {
1458
+ margin: 0.75em 0;
1459
+ border: 1px solid var(--cortex-color-border);
1460
+ border-radius: var(--cortex-radius);
1461
+ background: var(--cortex-color-surface);
1462
+ overflow: hidden;
1463
+ }
1464
+
1465
+ .cortex-media-block__head {
1466
+ display: flex;
1467
+ }
1468
+ .cortex-media-block__head[hidden] {
1469
+ display: none;
1470
+ }
1471
+ .cortex-media-block__head {
1472
+ align-items: center;
1473
+ justify-content: space-between;
1474
+ gap: 0.5rem;
1475
+ padding: 0.25rem 0.5rem 0.25rem 0.75rem;
1476
+ background: var(--cortex-color-surface-subtle);
1477
+ border-bottom: 1px solid var(--cortex-color-border);
1478
+ font-size: 0.75rem;
1479
+ color: var(--cortex-color-text-muted);
1480
+ }
1481
+
1482
+ .cortex-media-block__lang {
1483
+ font-family: var(--cortex-font-mono);
1484
+ }
1485
+
1486
+ .cortex-media-block__pending {
1487
+ display: inline-flex;
1488
+ align-items: center;
1489
+ gap: 0.375rem;
1490
+ }
1491
+ .cortex-media-block__pending::before {
1492
+ content: "";
1493
+ width: 0.625rem;
1494
+ height: 0.625rem;
1495
+ border: 1.5px solid var(--cortex-color-border-strong);
1496
+ border-top-color: var(--cortex-color-text-muted);
1497
+ border-radius: 9999px;
1498
+ animation: cortex-tool-spin 0.8s linear infinite;
1499
+ }
1500
+
1501
+ .cortex-media-block__actions {
1502
+ display: inline-flex;
1503
+ align-items: center;
1504
+ gap: 0.125rem;
1505
+ }
1506
+
1507
+ .cortex-media-block__action {
1508
+ background: transparent;
1509
+ border: 0;
1510
+ padding: 0.125rem 0.375rem;
1511
+ border-radius: calc(var(--cortex-radius) * 0.5);
1512
+ font: inherit;
1513
+ color: inherit;
1514
+ cursor: pointer;
1515
+ }
1516
+ .cortex-media-block__action:hover, .cortex-media-block__action[aria-pressed=true] {
1517
+ background: var(--cortex-color-hover);
1518
+ color: var(--cortex-color-text-strong);
1519
+ }
1520
+
1521
+ .cortex-media-block__body {
1522
+ padding: 0.75rem;
1523
+ }
1524
+ .cortex-media-block__body[hidden] {
1525
+ display: none;
1526
+ }
1527
+ .cortex-media-block__body {
1528
+ min-height: 6rem;
1529
+ overflow-x: auto;
1530
+ }
1531
+ .cortex-media-block__body svg {
1532
+ display: block;
1533
+ max-width: 100%;
1534
+ height: auto;
1535
+ }
1536
+ .cortex-media-block__body--map {
1537
+ padding: 0;
1538
+ height: 18rem;
1539
+ }
1540
+ .cortex-media-block__body--map > div {
1541
+ height: 100%;
1542
+ }
1543
+
1544
+ .cortex-media-block__error {
1545
+ margin: 0;
1546
+ font-size: 0.8125rem;
1547
+ color: var(--cortex-color-danger);
1548
+ }
1549
+
1550
+ .cortex-media-block .cortex-media-block__source {
1551
+ margin: 0;
1552
+ padding: 0.75rem;
1553
+ border-top: 1px solid var(--cortex-color-border);
1554
+ background: var(--cortex-color-surface-subtle);
1555
+ font-family: var(--cortex-font-mono);
1556
+ font-size: 0.75rem;
1557
+ line-height: 1.5;
1558
+ white-space: pre;
1559
+ overflow-x: auto;
1560
+ color: var(--cortex-color-text);
1561
+ }
1562
+
1563
+ .cortex-attachment-image {
1564
+ margin: 0.75em 0;
1565
+ }
1566
+ .cortex-attachment-image img {
1567
+ display: block;
1568
+ max-width: 100%;
1569
+ border-radius: var(--cortex-radius);
1570
+ border: 1px solid var(--cortex-color-border);
1571
+ }
1572
+
1573
+ .cortex-attachment-image__caption {
1574
+ margin: 0.25rem 0 0;
1575
+ font-size: 0.75rem;
1576
+ color: var(--cortex-color-text-muted);
1577
+ }
1578
+
1579
+ .cortex-reasoning-details {
1580
+ width: 100%;
1581
+ border-radius: var(--cortex-radius);
1582
+ border: 1px solid var(--cortex-color-border);
1583
+ background: var(--cortex-color-surface-subtle);
1584
+ overflow: hidden;
1585
+ }
1586
+
1587
+ .cortex-reasoning-details__summary {
1588
+ list-style: none;
1589
+ cursor: pointer;
1590
+ user-select: none;
1591
+ padding: 0.75rem 1rem;
1592
+ display: flex;
1593
+ align-items: center;
1594
+ gap: 0.75rem;
1595
+ }
1596
+ .cortex-reasoning-details__summary::-webkit-details-marker {
1597
+ display: none;
1598
+ }
1599
+
1600
+ .cortex-reasoning-details__header {
1601
+ display: flex;
1602
+ align-items: center;
1603
+ gap: 0.5rem;
1604
+ min-width: 0;
1605
+ flex: 1;
1606
+ }
1607
+
1608
+ .cortex-reasoning-details__icon {
1609
+ display: inline-flex;
1610
+ height: 1.5rem;
1611
+ width: 1.5rem;
1612
+ align-items: center;
1613
+ justify-content: center;
1614
+ border-radius: calc(var(--cortex-radius) * 0.5);
1615
+ background: var(--cortex-color-accent-surface);
1616
+ color: var(--cortex-color-accent);
1617
+ }
1618
+
1619
+ .cortex-reasoning-details__title-group {
1620
+ min-width: 0;
1621
+ }
1622
+
1623
+ .cortex-reasoning-details__title-row {
1624
+ display: flex;
1625
+ align-items: center;
1626
+ gap: 0.5rem;
1627
+ }
1628
+
1629
+ .cortex-reasoning-details__title {
1630
+ font-weight: 500;
1631
+ color: var(--cortex-color-text-strong);
1632
+ font-size: 0.875rem;
1633
+ }
1634
+
1635
+ .cortex-reasoning-details__badge {
1636
+ display: inline-flex;
1637
+ align-items: center;
1638
+ border-radius: calc(var(--cortex-radius) * 0.5);
1639
+ padding: 0.125rem 0.375rem;
1640
+ font-size: 0.6875rem;
1641
+ font-weight: 500;
1642
+ }
1643
+ .cortex-reasoning-details__badge--streaming {
1644
+ background: light-dark(#fef3c7, #78350f);
1645
+ color: light-dark(#b45309, #fcd34d);
1646
+ }
1647
+ .cortex-reasoning-details__badge--done {
1648
+ background: var(--cortex-color-success-border);
1649
+ color: var(--cortex-color-success);
1650
+ }
1651
+
1652
+ .cortex-reasoning-details__chevron {
1653
+ margin-inline-start: auto;
1654
+ display: inline-flex;
1655
+ height: 1.5rem;
1656
+ width: 1.5rem;
1657
+ align-items: center;
1658
+ justify-content: center;
1659
+ border-radius: calc(var(--cortex-radius) * 0.5);
1660
+ color: var(--cortex-color-text-muted);
1661
+ transition: transform 0.2s;
1662
+ }
1663
+ details[open] > summary > .cortex-reasoning-details__chevron {
1664
+ transform: rotate(180deg);
1665
+ }
1666
+
1667
+ .cortex-reasoning-details__body {
1668
+ padding: 0 1rem 1rem;
1669
+ }
1670
+
1671
+ .cortex-reasoning-details__content {
1672
+ margin-top: 0.25rem;
1673
+ border-radius: calc(var(--cortex-radius) * 0.5);
1674
+ background: var(--cortex-color-surface);
1675
+ border: 1px solid var(--cortex-color-border);
1676
+ padding: 0.75rem;
1677
+ }
1678
+
1679
+ .cortex-reasoning-details__pre {
1680
+ margin: 0;
1681
+ white-space: pre-wrap;
1682
+ overflow-wrap: break-word;
1683
+ font-family: var(--cortex-font-mono);
1684
+ font-size: 0.75rem;
1685
+ line-height: 1.625;
1686
+ color: var(--cortex-color-text-strong);
1687
+ }
1688
+
1689
+ @keyframes cortex-aborted-fade-in {
1690
+ from {
1691
+ opacity: 0;
1692
+ transform: translateY(4px);
1693
+ }
1694
+ to {
1695
+ opacity: 1;
1696
+ transform: translateY(0);
1697
+ }
1698
+ }
1699
+ .cortex-aborted-flag {
1700
+ display: flex;
1701
+ align-items: center;
1702
+ gap: 0.625rem;
1703
+ padding: 0.25rem 0;
1704
+ animation: cortex-aborted-fade-in 0.3s ease-out both;
1705
+ user-select: none;
1706
+ }
1707
+
1708
+ .cortex-aborted-flag__line {
1709
+ flex: 1;
1710
+ height: 1px;
1711
+ background: repeating-linear-gradient(90deg, #e2a36f 0px, #e2a36f 4px, transparent 4px, transparent 8px);
1712
+ opacity: 0.5;
1713
+ }
1714
+
1715
+ .cortex-aborted-flag__label {
1716
+ display: inline-flex;
1717
+ align-items: center;
1718
+ gap: 0.3125rem;
1719
+ font-family: var(--cortex-font-mono);
1720
+ font-size: 0.625rem;
1721
+ font-weight: 600;
1722
+ letter-spacing: 0.06em;
1723
+ text-transform: uppercase;
1724
+ color: light-dark(#c2824a, #e2a36f);
1725
+ }
1726
+
1727
+ .cortex-aborted-flag__icon {
1728
+ color: light-dark(#c2824a, #e2a36f);
1729
+ flex-shrink: 0;
1730
+ }
1731
+
1732
+ /*
1733
+ * A firing in the transcript. By default a small chip in the assistant column
1734
+ * with the trigger's name and when it fired; in debug mode a full-width dashed
1735
+ * block that also shows the raw payload.
1736
+ */
1737
+ .cortex-trigger-block {
1738
+ display: inline-flex;
1739
+ width: fit-content;
1740
+ padding: 0.375rem 0.75rem;
1741
+ border-radius: 999px;
1742
+ background: var(--cortex-color-accent-surface);
1743
+ color: var(--cortex-color-text-strong);
1744
+ font-size: 0.75rem;
1745
+ }
1746
+
1747
+ .cortex-trigger-block__head {
1748
+ display: flex;
1749
+ align-items: center;
1750
+ gap: 0.5rem;
1751
+ }
1752
+
1753
+ .cortex-trigger-block__icon {
1754
+ flex-shrink: 0;
1755
+ color: var(--cortex-color-accent);
1756
+ }
1757
+
1758
+ .cortex-trigger-block__name {
1759
+ font-family: var(--cortex-font-mono);
1760
+ font-weight: 600;
1761
+ }
1762
+
1763
+ .cortex-trigger-block__time {
1764
+ color: var(--cortex-color-text-secondary);
1765
+ font-size: 0.6875rem;
1766
+ }
1767
+
1768
+ .cortex-trigger-block--debug {
1769
+ display: flex;
1770
+ flex-direction: column;
1771
+ width: auto;
1772
+ gap: 0.375rem;
1773
+ padding: 0.5rem 0.75rem;
1774
+ border: 1px dashed var(--cortex-color-border-strong);
1775
+ border-radius: var(--cortex-radius);
1776
+ background: var(--cortex-color-surface-subtle);
1777
+ font-size: 0.6875rem;
1778
+ }
1779
+
1780
+ .cortex-trigger-block--debug .cortex-trigger-block__head {
1781
+ font-family: var(--cortex-font-mono);
1782
+ letter-spacing: 0.04em;
1783
+ text-transform: uppercase;
1784
+ color: var(--cortex-color-text-secondary);
1785
+ }
1786
+
1787
+ .cortex-trigger-block--debug .cortex-trigger-block__name {
1788
+ color: var(--cortex-color-text-strong);
1789
+ }
1790
+
1791
+ .cortex-trigger-block--debug .cortex-trigger-block__time {
1792
+ margin-inline-start: auto;
1793
+ font-size: inherit;
1794
+ text-transform: none;
1795
+ letter-spacing: 0;
1796
+ }
1797
+
1798
+ .cortex-trigger-block__payload {
1799
+ font-size: 0.75rem;
1800
+ }
1801
+
1802
+ .cortex-trigger-block__payload > summary {
1803
+ cursor: pointer;
1804
+ color: var(--cortex-color-text-secondary);
1805
+ user-select: none;
1806
+ }
1807
+
1808
+ .cortex-trigger-block__payload[open] > summary {
1809
+ margin-bottom: 0.25rem;
1810
+ }
1811
+
1812
+ .cortex-widget__messages-disabled {
1813
+ padding: 0.75rem 1rem;
1814
+ text-align: center;
1815
+ font-size: 0.75rem;
1816
+ color: var(--cortex-color-text-muted);
1817
+ }
1818
+
1819
+ .cortex-message-attachments {
1820
+ display: flex;
1821
+ flex-wrap: wrap;
1822
+ gap: 0.375rem;
1823
+ }
1824
+ .cortex-message-attachments--user {
1825
+ justify-content: flex-end;
1826
+ }
1827
+
1828
+ .cortex-message-attachment {
1829
+ display: inline-flex;
1830
+ align-items: center;
1831
+ gap: 0.375rem;
1832
+ max-width: 14rem;
1833
+ padding: 0.25rem 0.5rem;
1834
+ border: 1px solid var(--cortex-color-border);
1835
+ border-radius: var(--cortex-radius);
1836
+ background: var(--cortex-color-surface-subtle);
1837
+ font-size: 0.75rem;
1838
+ color: var(--cortex-color-text-strong);
1839
+ cursor: pointer;
1840
+ transition: background 0.15s;
1841
+ }
1842
+ .cortex-message-attachment:hover {
1843
+ background: var(--cortex-color-surface-muted);
1844
+ }
1845
+
1846
+ .cortex-message-attachment__name {
1847
+ overflow: hidden;
1848
+ text-overflow: ellipsis;
1849
+ white-space: nowrap;
1850
+ }
1851
+
1852
+ .cortex-message-attachment__icon,
1853
+ .cortex-message-attachment__dl-icon {
1854
+ flex-shrink: 0;
1855
+ width: 0.875rem;
1856
+ height: 0.875rem;
1857
+ color: var(--cortex-color-text-muted);
1858
+ }
1859
+
1860
+ /* ─── Debug Tool Call Card ─────────────────────────────────────────── */
1861
+ .cortex-debug-tool {
1862
+ --_accent: var(--cortex-color-border-strong);
1863
+ position: relative;
1864
+ width: 100%;
1865
+ border-radius: 10px;
1866
+ background: var(--cortex-color-surface-subtle);
1867
+ overflow: hidden;
1868
+ /* Colored left accent bar */
1869
+ }
1870
+ .cortex-debug-tool::before {
1871
+ content: "";
1872
+ position: absolute;
1873
+ inset-block: 0;
1874
+ inset-inline-start: 0;
1875
+ width: 3px;
1876
+ background: var(--_accent);
1877
+ z-index: 1;
1878
+ transition: background 200ms;
1879
+ }
1880
+ .cortex-debug-tool {
1881
+ /* State accent colors */
1882
+ }
1883
+ .cortex-debug-tool[data-state=complete] {
1884
+ --_accent: var(--cortex-color-success);
1885
+ }
1886
+ .cortex-debug-tool[data-state=error] {
1887
+ --_accent: var(--cortex-color-danger);
1888
+ }
1889
+ .cortex-debug-tool[data-state=awaiting-input], .cortex-debug-tool[data-state=input-streaming], .cortex-debug-tool[data-state=input-complete] {
1890
+ --_accent: light-dark(#d97706, #fbbf24);
1891
+ }
1892
+ .cortex-debug-tool[data-state=approval-requested], .cortex-debug-tool[data-state=approval-responded] {
1893
+ --_accent: light-dark(#7c3aed, #a78bfa);
1894
+ }
1895
+
1896
+ /* ─── Summary / Header ─────────────────────────────────────────────── */
1897
+ .cortex-debug-tool__summary {
1898
+ list-style: none;
1899
+ cursor: pointer;
1900
+ user-select: none;
1901
+ padding: 0.625rem 0.875rem 0.625rem 1.125rem;
1902
+ }
1903
+ .cortex-debug-tool__summary::-webkit-details-marker {
1904
+ display: none;
1905
+ }
1906
+
1907
+ .cortex-debug-tool__header {
1908
+ display: flex;
1909
+ align-items: flex-start;
1910
+ gap: 0.75rem;
1911
+ }
1912
+
1913
+ .cortex-debug-tool__meta {
1914
+ flex: 1;
1915
+ min-width: 0;
1916
+ }
1917
+
1918
+ .cortex-debug-tool__title-row {
1919
+ display: flex;
1920
+ align-items: center;
1921
+ gap: 0.5rem;
1922
+ min-width: 0;
1923
+ }
1924
+
1925
+ .cortex-debug-tool__name {
1926
+ font-weight: 600;
1927
+ font-size: 0.8125rem;
1928
+ color: var(--cortex-color-text-heading);
1929
+ overflow: hidden;
1930
+ text-overflow: ellipsis;
1931
+ white-space: nowrap;
1932
+ letter-spacing: -0.01em;
1933
+ }
1934
+
1935
+ .cortex-debug-tool__id-row {
1936
+ margin-top: 2px;
1937
+ font-size: 0.625rem;
1938
+ color: var(--cortex-color-text-muted);
1939
+ font-family: ui-monospace, "SF Mono", "Cascadia Code", monospace;
1940
+ word-break: break-all;
1941
+ }
1942
+
1943
+ /* ─── Status & Chevron ─────────────────────────────────────────────── */
1944
+ .cortex-debug-tool__actions {
1945
+ display: flex;
1946
+ align-items: center;
1947
+ gap: 0.375rem;
1948
+ flex-shrink: 0;
1949
+ }
1950
+
1951
+ .cortex-debug-tool__state {
1952
+ display: inline-flex;
1953
+ align-items: center;
1954
+ gap: 5px;
1955
+ font-size: 0.6875rem;
1956
+ font-weight: 500;
1957
+ padding: 2px 8px;
1958
+ border-radius: 4px;
1959
+ white-space: nowrap;
1960
+ font-family: system-ui, -apple-system, sans-serif;
1961
+ }
1962
+ .cortex-debug-tool__state--success {
1963
+ color: var(--cortex-color-success);
1964
+ background: var(--cortex-color-success-surface);
1965
+ }
1966
+ .cortex-debug-tool__state--error {
1967
+ color: var(--cortex-color-danger);
1968
+ background: light-dark(#fef2f2, #450a0a);
1969
+ }
1970
+ .cortex-debug-tool__state--approval {
1971
+ color: light-dark(#7c3aed, #a78bfa);
1972
+ background: light-dark(#f5f3ff, #2e1065);
1973
+ }
1974
+ .cortex-debug-tool__state--pending {
1975
+ color: light-dark(#b45309, #fcd34d);
1976
+ background: light-dark(#fffbeb, #451a03);
1977
+ }
1978
+
1979
+ .cortex-debug-tool__pulse {
1980
+ width: 6px;
1981
+ height: 6px;
1982
+ border-radius: 50%;
1983
+ background: light-dark(#d97706, #fbbf24);
1984
+ animation: dbg-pulse 2s ease-in-out infinite;
1985
+ }
1986
+ .cortex-debug-tool__pulse--violet {
1987
+ background: #8b5cf6;
1988
+ }
1989
+
1990
+ @keyframes dbg-pulse {
1991
+ 0%, 100% {
1992
+ opacity: 1;
1993
+ }
1994
+ 50% {
1995
+ opacity: 0.3;
1996
+ }
1997
+ }
1998
+ .cortex-debug-tool__chevron {
1999
+ display: inline-flex;
2000
+ align-items: center;
2001
+ justify-content: center;
2002
+ width: 1.5rem;
2003
+ height: 1.5rem;
2004
+ border-radius: 4px;
2005
+ color: var(--cortex-color-text-muted);
2006
+ transition: transform 200ms;
2007
+ }
2008
+ details[open] > summary .cortex-debug-tool__chevron {
2009
+ transform: rotate(180deg);
2010
+ }
2011
+
2012
+ /* ─── Body ─────────────────────────────────────────────────────────── */
2013
+ .cortex-debug-tool__body {
2014
+ padding: 0 0.875rem 0.75rem 1.125rem;
2015
+ }
2016
+
2017
+ /* ─── Sections (flat, divided by thin rules) ───────────────────────── */
2018
+ .cortex-debug-tool__section:not(:first-child) {
2019
+ border-top: 1px solid var(--cortex-color-border);
2020
+ padding-top: 0.625rem;
2021
+ margin-top: 0.625rem;
2022
+ }
2023
+
2024
+ .cortex-debug-tool__section-bar {
2025
+ display: flex;
2026
+ align-items: center;
2027
+ gap: 0.375rem;
2028
+ margin-bottom: 0.375rem;
2029
+ }
2030
+
2031
+ .cortex-debug-tool__section-label {
2032
+ font-size: 0.625rem;
2033
+ font-weight: 600;
2034
+ text-transform: uppercase;
2035
+ letter-spacing: 0.06em;
2036
+ color: var(--cortex-color-text-muted);
2037
+ font-family: system-ui, -apple-system, sans-serif;
2038
+ }
2039
+ .cortex-debug-tool__section-label--success {
2040
+ color: var(--cortex-color-success);
2041
+ }
2042
+ .cortex-debug-tool__section-label--error {
2043
+ color: var(--cortex-color-danger);
2044
+ }
2045
+ .cortex-debug-tool__section-label--approval {
2046
+ color: light-dark(#7c3aed, #a78bfa);
2047
+ }
2048
+
2049
+ .cortex-debug-tool__section-lang {
2050
+ font-size: 0.5625rem;
2051
+ color: var(--cortex-color-border-strong);
2052
+ font-family: ui-monospace, "SF Mono", monospace;
2053
+ text-transform: lowercase;
2054
+ }
2055
+
2056
+ /* ─── Content containers ───────────────────────────────────────────── */
2057
+ .cortex-debug-tool__pre {
2058
+ margin: 0;
2059
+ max-height: 20rem;
2060
+ overflow: auto;
2061
+ padding: 0.625rem 0.75rem;
2062
+ border-radius: 6px;
2063
+ background: var(--cortex-color-surface);
2064
+ font-size: 0.75rem;
2065
+ line-height: 1.3rem;
2066
+ font-family: ui-monospace, "SF Mono", "Cascadia Code", monospace;
2067
+ white-space: pre;
2068
+ overflow-wrap: break-word;
2069
+ }
2070
+
2071
+ .cortex-debug-tool__tree {
2072
+ max-height: 16rem;
2073
+ overflow: auto;
2074
+ padding: 0.625rem 0.75rem;
2075
+ border-radius: 6px;
2076
+ background: var(--cortex-color-surface);
2077
+ }
2078
+
2079
+ .cortex-debug-tool__error-pre {
2080
+ margin: 0;
2081
+ max-height: 16rem;
2082
+ overflow: auto;
2083
+ padding: 0.625rem 0.75rem;
2084
+ border-radius: 6px;
2085
+ background: light-dark(#fef2f2, #450a0a);
2086
+ color: light-dark(#991b1b, #fca5a5);
2087
+ font-size: 0.75rem;
2088
+ line-height: 1.3rem;
2089
+ font-family: ui-monospace, "SF Mono", "Cascadia Code", monospace;
2090
+ white-space: pre-wrap;
2091
+ word-break: break-word;
2092
+ }
2093
+
2094
+ .cortex-debug-tool__message {
2095
+ padding: 0.5rem 0.75rem;
2096
+ font-size: 0.75rem;
2097
+ color: var(--cortex-color-text-secondary);
2098
+ border-radius: 6px;
2099
+ background: var(--cortex-color-surface);
2100
+ }
2101
+ .cortex-debug-tool__message--approval {
2102
+ color: light-dark(#5b21b6, #c4b5fd);
2103
+ background: light-dark(#faf5ff, #3b0764);
2104
+ }
2105
+
2106
+ /* ─── Section variants ─────────────────────────────────────────────── */
2107
+ .cortex-debug-tool__section--success .cortex-debug-tool__tree {
2108
+ background: light-dark(#f0fdf4, #052e16);
2109
+ }
2110
+
2111
+ .cortex-debug-tool__section--error .cortex-debug-tool__tree {
2112
+ background: light-dark(#fef2f2, #450a0a);
2113
+ }
2114
+
2115
+ .cortex-tool-call-animated {
2116
+ display: block;
2117
+ }
2118
+
2119
+ .cortex-tool-pill {
2120
+ display: inline-flex;
2121
+ align-items: center;
2122
+ gap: 0.375rem;
2123
+ padding: 0.25rem 0;
2124
+ max-width: 100%;
2125
+ }
2126
+
2127
+ .cortex-tool-pill__icon {
2128
+ position: relative;
2129
+ width: 0.75rem;
2130
+ height: 0.75rem;
2131
+ display: flex;
2132
+ align-items: center;
2133
+ justify-content: center;
2134
+ flex-shrink: 0;
2135
+ color: var(--cortex-color-text-muted);
2136
+ }
2137
+
2138
+ .cortex-tool-pill__spinner {
2139
+ position: absolute;
2140
+ width: 0.625rem;
2141
+ height: 0.625rem;
2142
+ border: 1.5px solid var(--cortex-color-border-strong);
2143
+ border-top-color: var(--cortex-color-text-muted);
2144
+ border-radius: 9999px;
2145
+ opacity: 0;
2146
+ transition: opacity 0.2s;
2147
+ }
2148
+ .cortex-tool-pill__spinner--visible {
2149
+ opacity: 1;
2150
+ animation: cortex-tool-spin 0.8s linear infinite;
2151
+ }
2152
+
2153
+ @keyframes cortex-tool-spin {
2154
+ to {
2155
+ transform: rotate(360deg);
2156
+ }
2157
+ }
2158
+ .cortex-tool-pill__svg {
2159
+ position: absolute;
2160
+ width: 0.75rem;
2161
+ height: 0.75rem;
2162
+ opacity: 0;
2163
+ transform: scale(0.6);
2164
+ transition: opacity 0.2s, transform 0.2s;
2165
+ }
2166
+ .cortex-tool-pill__svg--visible {
2167
+ opacity: 1;
2168
+ transform: scale(1);
2169
+ }
2170
+ .cortex-tool-pill__svg--check {
2171
+ color: var(--cortex-color-success);
2172
+ }
2173
+ .cortex-tool-pill__svg--error {
2174
+ color: var(--cortex-color-danger);
2175
+ }
2176
+
2177
+ .cortex-tool-pill__title {
2178
+ font-size: 0.75rem;
2179
+ color: var(--cortex-color-text-muted);
2180
+ white-space: nowrap;
2181
+ overflow: hidden;
2182
+ text-overflow: ellipsis;
2183
+ transition: color 0.3s;
2184
+ }
2185
+ .cortex-tool-pill__title--error {
2186
+ color: var(--cortex-color-danger);
2187
+ }
2188
+ .cortex-tool-pill__title--pending {
2189
+ color: var(--cortex-color-text-muted);
2190
+ opacity: 0.6;
2191
+ }
2192
+
2193
+ .cortex-tool-pill__meta {
2194
+ font-size: 0.6875rem;
2195
+ color: var(--cortex-color-text-muted);
2196
+ opacity: 0.8;
2197
+ white-space: nowrap;
2198
+ font-variant-numeric: tabular-nums;
2199
+ }
2200
+
2201
+ .cortex-tool-pill--gated {
2202
+ border: 1px solid var(--cortex-color-border);
2203
+ border-radius: 9999px;
2204
+ background: var(--cortex-color-surface-subtle);
2205
+ padding: 0.3rem 0.75rem 0.3rem 0.65rem;
2206
+ gap: 0.6rem;
2207
+ }
2208
+
2209
+ .cortex-tool-pill--asking {
2210
+ padding-inline-end: 0.3rem;
2211
+ flex-wrap: wrap;
2212
+ }
2213
+
2214
+ .cortex-tool-pill__dot {
2215
+ width: 0.5rem;
2216
+ height: 0.5rem;
2217
+ border-radius: 9999px;
2218
+ background: var(--cortex-color-accent);
2219
+ }
2220
+
2221
+ .cortex-tool-pill--gated .cortex-tool-pill__title {
2222
+ color: var(--cortex-color-text-heading);
2223
+ white-space: normal;
2224
+ }
2225
+
2226
+ .cortex-tool-pill__actions {
2227
+ display: flex;
2228
+ gap: 0.3rem;
2229
+ margin-inline-start: 0.25rem;
2230
+ }
2231
+
2232
+ .cortex-tool-pill__action {
2233
+ border: 1px solid var(--cortex-color-border-strong);
2234
+ border-radius: 9999px;
2235
+ background: none;
2236
+ padding: 4px 11px;
2237
+ font: inherit;
2238
+ font-size: 12.5px;
2239
+ color: var(--cortex-color-text-secondary);
2240
+ cursor: pointer;
2241
+ }
2242
+ .cortex-tool-pill__action--approve {
2243
+ background: var(--cortex-color-accent);
2244
+ border-color: var(--cortex-color-accent);
2245
+ color: #fff;
2246
+ }
2247
+
2248
+ .cortex-tool-fold {
2249
+ display: block;
2250
+ align-self: flex-start;
2251
+ text-align: start;
2252
+ border: 0;
2253
+ background: none;
2254
+ padding: 0 0 0.25rem;
2255
+ margin-block-start: -0.625rem;
2256
+ margin-inline-start: 1.125rem;
2257
+ font: inherit;
2258
+ font-size: 0.75rem;
2259
+ color: var(--cortex-color-text-muted);
2260
+ cursor: pointer;
2261
+ }
2262
+ .cortex-tool-fold:hover, .cortex-tool-fold:focus-visible {
2263
+ color: var(--cortex-color-text-secondary);
2264
+ }
2265
+
2266
+ .cortex-client-tool-embed {
2267
+ border: 1px solid var(--cortex-color-border-strong);
2268
+ border-radius: 12px;
2269
+ background: var(--cortex-color-surface);
2270
+ overflow: hidden;
2271
+ max-inline-size: 480px;
2272
+ }
2273
+
2274
+ .cortex-client-tool-embed__bar {
2275
+ display: flex;
2276
+ align-items: center;
2277
+ justify-content: space-between;
2278
+ gap: 8px;
2279
+ padding: 8px 12px;
2280
+ border-block-end: 1px solid var(--cortex-color-border-strong);
2281
+ font-size: 12px;
2282
+ color: var(--cortex-color-text-muted);
2283
+ }
2284
+
2285
+ .cortex-client-tool-embed__cancel {
2286
+ border: 0;
2287
+ background: none;
2288
+ padding: 2px 4px;
2289
+ font: inherit;
2290
+ color: var(--cortex-color-text-muted);
2291
+ cursor: pointer;
2292
+ }
2293
+ .cortex-client-tool-embed__cancel:hover {
2294
+ color: var(--cortex-color-danger);
2295
+ }
2296
+
2297
+ .cortex-client-tool-embed__frame {
2298
+ display: block;
2299
+ inline-size: 100%;
2300
+ block-size: 420px;
2301
+ border: 0;
2302
+ background: var(--cortex-color-surface);
2303
+ }
2304
+
2305
+ .cortex-client-tool-embed__status {
2306
+ display: flex;
2307
+ align-items: center;
2308
+ gap: 8px;
2309
+ padding: 20px 16px;
2310
+ font-size: 13px;
2311
+ color: var(--cortex-color-text-muted);
2312
+ }
2313
+
2314
+ .cortex-client-tool-embed__retry {
2315
+ border: 1px solid var(--cortex-color-border-strong);
2316
+ border-radius: 8px;
2317
+ background: none;
2318
+ padding: 4px 10px;
2319
+ font: inherit;
2320
+ font-size: 12px;
2321
+ color: inherit;
2322
+ cursor: pointer;
2323
+ }
2324
+
2325
+ .cortex-client-tool-embed-dialog {
2326
+ border: 0;
2327
+ padding: 0;
2328
+ background: none;
2329
+ inline-size: min(560px, 100vw - 48px);
2330
+ max-inline-size: none;
2331
+ }
2332
+ .cortex-client-tool-embed-dialog::backdrop {
2333
+ background: rgba(0, 0, 0, 0.45);
2334
+ }
2335
+ .cortex-client-tool-embed-dialog .cortex-client-tool-embed {
2336
+ inline-size: 100%;
2337
+ max-inline-size: none;
2338
+ box-shadow: 0 24px 64px rgba(0, 0, 0, 0.3);
2339
+ }
2340
+ .cortex-client-tool-embed-dialog .cortex-client-tool-embed__frame {
2341
+ block-size: min(70dvh, 560px);
2342
+ }
2343
+
2344
+ .cortex-location-input {
2345
+ border: 1px solid var(--cortex-color-border-strong);
2346
+ border-radius: 12px;
2347
+ background: var(--cortex-color-surface);
2348
+ overflow: hidden;
2349
+ max-inline-size: 480px;
2350
+ }
2351
+ .cortex-location-input--settled {
2352
+ display: flex;
2353
+ gap: 10px;
2354
+ border-color: var(--cortex-color-border);
2355
+ background: var(--cortex-color-surface-subtle);
2356
+ }
2357
+
2358
+ .cortex-location-input__map {
2359
+ position: relative;
2360
+ block-size: 11rem;
2361
+ background: var(--cortex-color-surface-muted);
2362
+ }
2363
+ .cortex-location-input__map--still {
2364
+ flex: none;
2365
+ inline-size: 120px;
2366
+ block-size: 84px;
2367
+ }
2368
+
2369
+ .cortex-location-input__canvas {
2370
+ block-size: 100%;
2371
+ }
2372
+
2373
+ .cortex-location-input__still-failed {
2374
+ display: flex;
2375
+ align-items: center;
2376
+ justify-content: center;
2377
+ block-size: 100%;
2378
+ padding: 0 8px;
2379
+ font-size: 11px;
2380
+ text-align: center;
2381
+ color: var(--cortex-color-text-muted);
2382
+ }
2383
+
2384
+ .cortex-location-input__locate {
2385
+ position: absolute;
2386
+ inset-inline-end: 10px;
2387
+ inset-block-start: 10px;
2388
+ z-index: 1001;
2389
+ display: inline-flex;
2390
+ align-items: center;
2391
+ justify-content: center;
2392
+ inline-size: 30px;
2393
+ block-size: 30px;
2394
+ border: 1px solid var(--cortex-color-border-strong);
2395
+ border-radius: 8px;
2396
+ background: var(--cortex-color-surface);
2397
+ color: var(--cortex-color-text-strong);
2398
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
2399
+ cursor: pointer;
2400
+ }
2401
+ .cortex-location-input__locate svg {
2402
+ inline-size: 15px;
2403
+ block-size: 15px;
2404
+ }
2405
+ .cortex-location-input__locate:disabled {
2406
+ opacity: 0.45;
2407
+ cursor: default;
2408
+ }
2409
+
2410
+ .cortex-location-input__foot {
2411
+ display: flex;
2412
+ align-items: center;
2413
+ justify-content: space-between;
2414
+ gap: 10px;
2415
+ padding: 8px 12px;
2416
+ border-block-start: 1px solid var(--cortex-color-border-strong);
2417
+ font-size: 12px;
2418
+ }
2419
+
2420
+ .cortex-location-input__hint {
2421
+ display: inline-flex;
2422
+ align-items: center;
2423
+ gap: 6px;
2424
+ min-inline-size: 0;
2425
+ color: var(--cortex-color-text-muted);
2426
+ }
2427
+ .cortex-location-input__hint--failed {
2428
+ color: var(--cortex-color-danger);
2429
+ }
2430
+
2431
+ .cortex-location-input__spinner {
2432
+ inline-size: 0.625rem;
2433
+ block-size: 0.625rem;
2434
+ border: 1.5px solid var(--cortex-color-border-strong);
2435
+ border-top-color: var(--cortex-color-text-muted);
2436
+ border-radius: 9999px;
2437
+ animation: cortex-tool-spin 0.8s linear infinite;
2438
+ }
2439
+
2440
+ .cortex-location-input__coords {
2441
+ font-family: var(--cortex-font-mono);
2442
+ font-size: 0.75rem;
2443
+ color: var(--cortex-color-text-secondary);
2444
+ direction: ltr;
2445
+ unicode-bidi: isolate;
2446
+ }
2447
+
2448
+ .cortex-location-input__actions {
2449
+ display: flex;
2450
+ align-items: center;
2451
+ gap: 8px;
2452
+ }
2453
+
2454
+ .cortex-location-input__skip {
2455
+ border: 0;
2456
+ background: none;
2457
+ padding: 2px 4px;
2458
+ font: inherit;
2459
+ color: var(--cortex-color-text-muted);
2460
+ cursor: pointer;
2461
+ }
2462
+ .cortex-location-input__skip:hover {
2463
+ color: var(--cortex-color-danger);
2464
+ }
2465
+ .cortex-location-input__skip:disabled {
2466
+ opacity: 0.45;
2467
+ cursor: default;
2468
+ }
2469
+
2470
+ .cortex-location-input__send {
2471
+ border: 1px solid var(--cortex-color-primary);
2472
+ border-radius: 8px;
2473
+ background: var(--cortex-color-primary);
2474
+ padding: 4px 10px;
2475
+ font: inherit;
2476
+ font-size: 12px;
2477
+ color: var(--cortex-color-primary-foreground);
2478
+ cursor: pointer;
2479
+ }
2480
+ .cortex-location-input__send:disabled {
2481
+ opacity: 0.45;
2482
+ cursor: default;
2483
+ }
2484
+
2485
+ .cortex-location-input__body {
2486
+ display: flex;
2487
+ flex-direction: column;
2488
+ justify-content: center;
2489
+ gap: 2px;
2490
+ min-inline-size: 0;
2491
+ padding-block: 8px;
2492
+ padding-inline-end: 12px;
2493
+ }
2494
+
2495
+ .cortex-location-input__title {
2496
+ display: inline-flex;
2497
+ align-items: center;
2498
+ gap: 6px;
2499
+ font-size: 12px;
2500
+ color: var(--cortex-color-text-strong);
2501
+ }
2502
+ .cortex-location-input__title svg {
2503
+ inline-size: 13px;
2504
+ block-size: 13px;
2505
+ color: var(--cortex-color-success);
2506
+ }
2507
+
2508
+ .cortex-reasoning-animated {
2509
+ display: block;
2510
+ }
2511
+
2512
+ .cortex-subtle-activity {
2513
+ display: flex;
2514
+ align-items: center;
2515
+ gap: 0.375rem;
2516
+ padding: 0.25rem 0;
2517
+ width: fit-content;
2518
+ }
2519
+
2520
+ .cortex-subtle-activity__dots {
2521
+ display: flex;
2522
+ align-items: center;
2523
+ gap: 3px;
2524
+ }
2525
+
2526
+ .cortex-subtle-activity__dot {
2527
+ width: 3px;
2528
+ height: 3px;
2529
+ border-radius: 9999px;
2530
+ background: var(--cortex-color-accent);
2531
+ animation: cortex-subtle-dot-pulse 1.4s ease-in-out infinite;
2532
+ }
2533
+ .cortex-subtle-activity__dot--d1 {
2534
+ animation-delay: 200ms;
2535
+ }
2536
+ .cortex-subtle-activity__dot--d2 {
2537
+ animation-delay: 400ms;
2538
+ }
2539
+
2540
+ @keyframes cortex-subtle-dot-pulse {
2541
+ 0%, 100% {
2542
+ opacity: 0.3;
2543
+ transform: scale(0.8);
2544
+ }
2545
+ 40% {
2546
+ opacity: 1;
2547
+ transform: scale(1.3);
2548
+ }
2549
+ }
2550
+ .cortex-subtle-activity__label-mask {
2551
+ overflow: hidden;
2552
+ position: relative;
2553
+ height: 1.1em;
2554
+ }
2555
+
2556
+ .cortex-subtle-activity__label {
2557
+ display: block;
2558
+ font-size: 0.75rem;
2559
+ color: var(--cortex-color-text-muted);
2560
+ white-space: nowrap;
2561
+ line-height: 1.1em;
2562
+ }
2563
+
2564
+ .cortex-subtle-activity__label--idle,
2565
+ .cortex-subtle-activity__label--entering {
2566
+ opacity: 1;
2567
+ transform: translateY(0);
2568
+ transition: opacity 0.3s ease, transform 0.3s ease;
2569
+ }
2570
+
2571
+ .cortex-subtle-activity__label--exiting {
2572
+ opacity: 0;
2573
+ transform: translateY(-6px);
2574
+ transition: opacity 0.3s ease, transform 0.3s ease;
2575
+ }
2576
+
2577
+ .cortex-subtle-activity__label--enter-start {
2578
+ opacity: 0;
2579
+ transform: translateY(6px);
2580
+ transition: none;
2581
+ }
2582
+
2583
+ .cortex-attachment-queue {
2584
+ display: flex;
2585
+ flex-wrap: wrap;
2586
+ gap: 0.375rem;
2587
+ margin-bottom: 0.5rem;
2588
+ }
2589
+
2590
+ .cortex-attachment-chip {
2591
+ display: inline-flex;
2592
+ align-items: center;
2593
+ gap: 0.375rem;
2594
+ max-width: 14rem;
2595
+ padding-block: 0.25rem;
2596
+ padding-inline: 0.5rem 0.375rem;
2597
+ border: 1px solid var(--cortex-color-border);
2598
+ border-radius: var(--cortex-radius);
2599
+ background: var(--cortex-color-surface-subtle);
2600
+ font-size: 0.75rem;
2601
+ color: var(--cortex-color-text-strong);
2602
+ }
2603
+ .cortex-attachment-chip--error {
2604
+ border-color: var(--cortex-color-danger-border);
2605
+ background: var(--cortex-color-danger-surface);
2606
+ color: var(--cortex-color-danger);
2607
+ }
2608
+
2609
+ .cortex-attachment-chip__icon,
2610
+ .cortex-attachment-chip__spinner {
2611
+ flex-shrink: 0;
2612
+ width: 0.875rem;
2613
+ height: 0.875rem;
2614
+ color: var(--cortex-color-text-muted);
2615
+ }
2616
+
2617
+ .cortex-attachment-chip__spinner {
2618
+ animation: cortex-attachment-spin 0.8s linear infinite;
2619
+ }
2620
+
2621
+ .cortex-attachment-chip__spinner-track {
2622
+ opacity: 0.25;
2623
+ }
2624
+
2625
+ @keyframes cortex-attachment-spin {
2626
+ to {
2627
+ transform: rotate(360deg);
2628
+ }
2629
+ }
2630
+ .cortex-attachment-chip__name {
2631
+ overflow: hidden;
2632
+ text-overflow: ellipsis;
2633
+ white-space: nowrap;
2634
+ }
2635
+
2636
+ .cortex-attachment-chip__remove {
2637
+ flex-shrink: 0;
2638
+ display: flex;
2639
+ align-items: center;
2640
+ justify-content: center;
2641
+ width: 1rem;
2642
+ height: 1rem;
2643
+ padding: 0;
2644
+ border: 0;
2645
+ border-radius: 3px;
2646
+ background: transparent;
2647
+ color: currentColor;
2648
+ opacity: 0.6;
2649
+ cursor: pointer;
2650
+ }
2651
+ .cortex-attachment-chip__remove:hover {
2652
+ opacity: 1;
2653
+ background: var(--cortex-color-hover);
2654
+ }
2655
+ .cortex-attachment-chip__remove svg {
2656
+ width: 0.75rem;
2657
+ height: 0.75rem;
2658
+ }
2659
+
2660
+ /* ─── Token Usage Component ────────────────────────────────────────── */
2661
+ .cortex-token-usage {
2662
+ direction: ltr;
2663
+ display: flex;
2664
+ flex-direction: column;
2665
+ margin-top: 0.375rem;
2666
+ font-family: var(--cortex-font-mono);
2667
+ font-size: 0.6875rem;
2668
+ line-height: 1.4;
2669
+ color: var(--cortex-color-text-muted);
2670
+ user-select: none;
2671
+ }
2672
+
2673
+ /* ─── Summary row ──────────────────────────────────────────────────── */
2674
+ html[dir=rtl] .cortex-token-usage__summary {
2675
+ align-self: end;
2676
+ }
2677
+ html[dir=ltr] .cortex-token-usage__summary {
2678
+ align-self: start;
2679
+ }
2680
+ .cortex-token-usage__summary {
2681
+ display: inline-flex;
2682
+ align-items: center;
2683
+ gap: 0.625rem;
2684
+ padding: 0.3125rem 0.625rem;
2685
+ border: 1px solid transparent;
2686
+ border-radius: 6px;
2687
+ background: transparent;
2688
+ cursor: pointer;
2689
+ transition: background 150ms ease, border-color 150ms ease;
2690
+ font: inherit;
2691
+ color: inherit;
2692
+ letter-spacing: 0.01em;
2693
+ }
2694
+ .cortex-token-usage__summary:hover {
2695
+ background: var(--cortex-color-surface-subtle);
2696
+ border-color: var(--cortex-color-border);
2697
+ }
2698
+ .cortex-token-usage__summary {
2699
+ flex-wrap: wrap;
2700
+ max-width: 100%;
2701
+ text-align: start;
2702
+ }
2703
+
2704
+ .cortex-token-usage__total-number {
2705
+ font-weight: 600;
2706
+ font-variant-numeric: tabular-nums;
2707
+ color: var(--cortex-color-text-secondary);
2708
+ }
2709
+
2710
+ .cortex-token-usage__total-label {
2711
+ margin-inline-start: 3px;
2712
+ color: var(--cortex-color-text-muted);
2713
+ font-weight: 400;
2714
+ letter-spacing: 0.03em;
2715
+ }
2716
+
2717
+ .cortex-token-usage__model {
2718
+ color: var(--cortex-color-border-strong);
2719
+ font-weight: 400;
2720
+ font-size: 0.5625rem;
2721
+ letter-spacing: 0.02em;
2722
+ min-width: 0;
2723
+ max-width: 100%;
2724
+ overflow: hidden;
2725
+ text-overflow: ellipsis;
2726
+ white-space: nowrap;
2727
+ }
2728
+
2729
+ /* ─── Inline pills ─────────────────────────────────────────────────── */
2730
+ .cortex-token-usage__pills {
2731
+ display: inline-flex;
2732
+ align-items: center;
2733
+ gap: 0.5rem;
2734
+ }
2735
+
2736
+ .cortex-token-usage__pill {
2737
+ display: inline-flex;
2738
+ align-items: center;
2739
+ gap: 4px;
2740
+ font-variant-numeric: tabular-nums;
2741
+ color: var(--cortex-color-text-muted);
2742
+ }
2743
+
2744
+ .cortex-token-usage__dot {
2745
+ width: 6px;
2746
+ height: 6px;
2747
+ border-radius: 50%;
2748
+ flex-shrink: 0;
2749
+ }
2750
+ .cortex-token-usage__dot--input {
2751
+ background: light-dark(#ea580c, #fb923c);
2752
+ box-shadow: 0 0 0 2px rgba(234, 88, 12, 0.1);
2753
+ }
2754
+ .cortex-token-usage__dot--output {
2755
+ background: light-dark(#4f46e5, #818cf8);
2756
+ box-shadow: 0 0 0 2px rgba(79, 70, 229, 0.1);
2757
+ }
2758
+
2759
+ /* ─── Cache badge (summary) ────────────────────────────────────────── */
2760
+ .cortex-token-usage__cache-badge {
2761
+ font-size: 0.5625rem;
2762
+ font-weight: 600;
2763
+ color: var(--cortex-color-success);
2764
+ background: var(--cortex-color-success-surface);
2765
+ padding: 1px 6px;
2766
+ border-radius: 3px;
2767
+ font-family: system-ui, -apple-system, sans-serif;
2768
+ }
2769
+
2770
+ /* ─── Chevron ──────────────────────────────────────────────────────── */
2771
+ .cortex-token-usage__chevron {
2772
+ color: var(--cortex-color-border-strong);
2773
+ transition: transform 250ms cubic-bezier(0.4, 0, 0.2, 1);
2774
+ flex-shrink: 0;
2775
+ }
2776
+
2777
+ .cortex-token-usage--expanded .cortex-token-usage__chevron {
2778
+ transform: rotate(180deg);
2779
+ }
2780
+
2781
+ /* ─── Expandable detail panel ──────────────────────────────────────── */
2782
+ .cortex-token-usage__details {
2783
+ display: grid;
2784
+ grid-template-rows: 0fr;
2785
+ transition: grid-template-rows 250ms cubic-bezier(0.4, 0, 0.2, 1), opacity 200ms ease, margin 200ms ease;
2786
+ opacity: 0;
2787
+ margin-top: 0;
2788
+ }
2789
+
2790
+ .cortex-token-usage__details-inner {
2791
+ overflow: hidden;
2792
+ }
2793
+
2794
+ .cortex-token-usage--expanded .cortex-token-usage__details {
2795
+ grid-template-rows: 1fr;
2796
+ opacity: 1;
2797
+ margin-top: 0.375rem;
2798
+ }
2799
+
2800
+ /* ─── Two-column layout ────────────────────────────────────────────── */
2801
+ .cortex-token-usage__columns {
2802
+ display: grid;
2803
+ grid-template-columns: 1fr 1fr;
2804
+ gap: 1px;
2805
+ background: var(--cortex-color-border);
2806
+ border-radius: 8px;
2807
+ overflow: hidden;
2808
+ }
2809
+
2810
+ .cortex-token-usage__col {
2811
+ background: var(--cortex-color-surface-subtle);
2812
+ padding: 0.5rem 0.625rem;
2813
+ }
2814
+
2815
+ .cortex-token-usage__col-header {
2816
+ display: flex;
2817
+ align-items: center;
2818
+ gap: 0.375rem;
2819
+ margin-bottom: 0.375rem;
2820
+ }
2821
+
2822
+ .cortex-token-usage__col-label {
2823
+ font-weight: 600;
2824
+ font-size: 0.5625rem;
2825
+ text-transform: uppercase;
2826
+ letter-spacing: 0.06em;
2827
+ color: var(--cortex-color-text-secondary);
2828
+ font-family: system-ui, -apple-system, sans-serif;
2829
+ }
2830
+
2831
+ .cortex-token-usage__col-total {
2832
+ margin-inline-start: auto;
2833
+ font-weight: 700;
2834
+ font-variant-numeric: tabular-nums;
2835
+ color: var(--cortex-color-text-secondary);
2836
+ }
2837
+
2838
+ /* ─── Data rows ────────────────────────────────────────────────────── */
2839
+ .cortex-token-usage__rows {
2840
+ display: flex;
2841
+ flex-direction: column;
2842
+ gap: 1px;
2843
+ }
2844
+
2845
+ .cortex-token-usage__row {
2846
+ display: flex;
2847
+ align-items: baseline;
2848
+ justify-content: space-between;
2849
+ padding: 2px 0;
2850
+ padding-inline-start: calc(6px + 0.375rem);
2851
+ }
2852
+
2853
+ .cortex-token-usage__row-label {
2854
+ color: var(--cortex-color-text-muted);
2855
+ font-size: 0.625rem;
2856
+ }
2857
+
2858
+ .cortex-token-usage__row-value {
2859
+ font-variant-numeric: tabular-nums;
2860
+ color: var(--cortex-color-text-secondary);
2861
+ font-weight: 500;
2862
+ }
2863
+
2864
+ /* ─── Cache ratio bar ──────────────────────────────────────────────── */
2865
+ .cortex-token-usage__cache-bar-row {
2866
+ display: flex;
2867
+ align-items: center;
2868
+ gap: 0.5rem;
2869
+ margin-top: 0.5rem;
2870
+ padding-inline-start: calc(6px + 0.375rem);
2871
+ }
2872
+
2873
+ .cortex-token-usage__cache-bar {
2874
+ flex: 1;
2875
+ height: 3px;
2876
+ border-radius: 2px;
2877
+ background: var(--cortex-color-border);
2878
+ overflow: hidden;
2879
+ }
2880
+
2881
+ .cortex-token-usage__cache-fill {
2882
+ height: 100%;
2883
+ border-radius: 2px;
2884
+ background: linear-gradient(90deg, #10b981, var(--cortex-color-success));
2885
+ transition: width 400ms cubic-bezier(0.4, 0, 0.2, 1);
2886
+ }
2887
+
2888
+ .cortex-token-usage__cache-label {
2889
+ font-size: 0.5625rem;
2890
+ font-weight: 600;
2891
+ color: var(--cortex-color-success);
2892
+ white-space: nowrap;
2893
+ font-family: system-ui, -apple-system, sans-serif;
2894
+ }
2895
+
2896
+ /* ─── LLM Inspector ────────────────────────────────────────────────── */
2897
+ .cortex-llm-inspector {
2898
+ direction: ltr;
2899
+ display: flex;
2900
+ flex-direction: column;
2901
+ margin-top: 0.375rem;
2902
+ font-family: var(--cortex-font-mono);
2903
+ font-size: 0.6875rem;
2904
+ line-height: 1.4;
2905
+ color: var(--cortex-color-text-muted);
2906
+ user-select: none;
2907
+ }
2908
+
2909
+ /* ─── Trigger button ───────────────────────────────────────────────── */
2910
+ html[dir=rtl] .cortex-llm-inspector__trigger {
2911
+ align-self: end;
2912
+ }
2913
+ html[dir=ltr] .cortex-llm-inspector__trigger {
2914
+ align-self: start;
2915
+ }
2916
+ .cortex-llm-inspector__trigger {
2917
+ display: inline-flex;
2918
+ align-items: center;
2919
+ gap: 0.5rem;
2920
+ padding: 0.3125rem 0.625rem;
2921
+ border: 1px solid transparent;
2922
+ border-radius: 6px;
2923
+ background: transparent;
2924
+ cursor: pointer;
2925
+ transition: background 150ms ease, border-color 150ms ease;
2926
+ font: inherit;
2927
+ color: inherit;
2928
+ letter-spacing: 0.01em;
2929
+ }
2930
+ .cortex-llm-inspector__trigger:hover {
2931
+ background: var(--cortex-color-surface-subtle);
2932
+ border-color: var(--cortex-color-border);
2933
+ }
2934
+
2935
+ .cortex-llm-inspector__icon {
2936
+ color: var(--cortex-color-text-muted);
2937
+ flex-shrink: 0;
2938
+ }
2939
+
2940
+ .cortex-llm-inspector__loading {
2941
+ color: var(--cortex-color-border-strong);
2942
+ font-style: italic;
2943
+ }
2944
+
2945
+ .cortex-llm-inspector__badge {
2946
+ display: inline-flex;
2947
+ align-items: center;
2948
+ justify-content: center;
2949
+ min-width: 1.25rem;
2950
+ height: 1.25rem;
2951
+ padding: 0 0.35rem;
2952
+ border-radius: 9999px;
2953
+ background: var(--cortex-color-border);
2954
+ color: var(--cortex-color-text-secondary);
2955
+ font-size: 0.5625rem;
2956
+ font-weight: 700;
2957
+ }
2958
+
2959
+ .cortex-llm-inspector__chevron {
2960
+ color: var(--cortex-color-border-strong);
2961
+ transition: transform 250ms cubic-bezier(0.4, 0, 0.2, 1);
2962
+ flex-shrink: 0;
2963
+ }
2964
+
2965
+ .cortex-llm-inspector--open .cortex-llm-inspector__chevron {
2966
+ transform: rotate(180deg);
2967
+ }
2968
+
2969
+ /* ─── Expandable panel wrapper ─────────────────────────────────────── */
2970
+ .cortex-llm-inspector__panel-wrapper {
2971
+ display: grid;
2972
+ grid-template-rows: 0fr;
2973
+ transition: grid-template-rows 250ms cubic-bezier(0.4, 0, 0.2, 1), opacity 200ms ease, margin 200ms ease;
2974
+ opacity: 0;
2975
+ margin-top: 0;
2976
+ }
2977
+
2978
+ .cortex-llm-inspector__panel-inner {
2979
+ overflow: hidden;
2980
+ }
2981
+
2982
+ .cortex-llm-inspector--open .cortex-llm-inspector__panel-wrapper {
2983
+ grid-template-rows: 1fr;
2984
+ opacity: 1;
2985
+ margin-top: 0.375rem;
2986
+ }
2987
+
2988
+ /* ─── Panel ────────────────────────────────────────────────────────── */
2989
+ .cortex-llm-inspector__panel {
2990
+ display: flex;
2991
+ flex-direction: column;
2992
+ gap: 0.375rem;
2993
+ }
2994
+
2995
+ .cortex-llm-inspector__empty {
2996
+ padding: 0.625rem;
2997
+ color: var(--cortex-color-text-muted);
2998
+ font-style: italic;
2999
+ }
3000
+
3001
+ /* ─── Step card ────────────────────────────────────────────────────── */
3002
+ .cortex-llm-inspector__step {
3003
+ border-radius: 8px;
3004
+ background: var(--cortex-color-surface-subtle);
3005
+ overflow: hidden;
3006
+ transition: box-shadow 200ms ease;
3007
+ }
3008
+ .cortex-llm-inspector__step--expanded {
3009
+ box-shadow: 0 0 0 1px var(--cortex-color-border);
3010
+ }
3011
+
3012
+ .cortex-llm-inspector__step-header {
3013
+ display: flex;
3014
+ align-items: center;
3015
+ gap: 0.5rem;
3016
+ width: 100%;
3017
+ padding: 0.5rem 0.625rem;
3018
+ border: none;
3019
+ background: transparent;
3020
+ cursor: pointer;
3021
+ font: inherit;
3022
+ color: inherit;
3023
+ text-align: start;
3024
+ transition: background 150ms ease;
3025
+ }
3026
+ .cortex-llm-inspector__step-header:hover {
3027
+ background: rgba(0, 0, 0, 0.02);
3028
+ }
3029
+
3030
+ .cortex-llm-inspector__step-label {
3031
+ font-weight: 600;
3032
+ color: var(--cortex-color-text-secondary);
3033
+ white-space: nowrap;
3034
+ font-family: system-ui, -apple-system, sans-serif;
3035
+ }
3036
+
3037
+ .cortex-llm-inspector__step-metrics {
3038
+ display: inline-flex;
3039
+ align-items: center;
3040
+ gap: 0.625rem;
3041
+ margin-inline-start: auto;
3042
+ font-variant-numeric: tabular-nums;
3043
+ }
3044
+
3045
+ .cortex-llm-inspector__metric {
3046
+ display: inline-flex;
3047
+ align-items: center;
3048
+ gap: 3px;
3049
+ }
3050
+
3051
+ .cortex-llm-inspector__dot {
3052
+ width: 5px;
3053
+ height: 5px;
3054
+ border-radius: 50%;
3055
+ flex-shrink: 0;
3056
+ }
3057
+ .cortex-llm-inspector__dot--input {
3058
+ background: light-dark(#ea580c, #fb923c);
3059
+ box-shadow: 0 0 0 1.5px rgba(234, 88, 12, 0.12);
3060
+ }
3061
+ .cortex-llm-inspector__dot--output {
3062
+ background: light-dark(#4f46e5, #818cf8);
3063
+ box-shadow: 0 0 0 1.5px rgba(79, 70, 229, 0.12);
3064
+ }
3065
+
3066
+ .cortex-llm-inspector__cache-pct {
3067
+ font-size: 0.5625rem;
3068
+ font-weight: 600;
3069
+ color: var(--cortex-color-success);
3070
+ background: var(--cortex-color-success-surface);
3071
+ padding: 1px 5px;
3072
+ border-radius: 3px;
3073
+ font-family: system-ui, -apple-system, sans-serif;
3074
+ }
3075
+
3076
+ .cortex-llm-inspector__step-chevron {
3077
+ color: var(--cortex-color-border-strong);
3078
+ transition: transform 200ms ease;
3079
+ flex-shrink: 0;
3080
+ }
3081
+
3082
+ .cortex-llm-inspector__step--expanded .cortex-llm-inspector__step-chevron {
3083
+ transform: rotate(180deg);
3084
+ }
3085
+
3086
+ /* ─── Step body (expandable) ───────────────────────────────────────── */
3087
+ .cortex-llm-inspector__step-body-wrapper {
3088
+ display: grid;
3089
+ grid-template-rows: 0fr;
3090
+ transition: grid-template-rows 250ms cubic-bezier(0.4, 0, 0.2, 1), opacity 200ms ease;
3091
+ opacity: 0;
3092
+ }
3093
+
3094
+ .cortex-llm-inspector__step-body-inner {
3095
+ overflow: hidden;
3096
+ }
3097
+
3098
+ .cortex-llm-inspector__step--expanded .cortex-llm-inspector__step-body-wrapper {
3099
+ grid-template-rows: 1fr;
3100
+ opacity: 1;
3101
+ }
3102
+
3103
+ .cortex-llm-inspector__step-body {
3104
+ padding: 0 0.625rem 0.625rem;
3105
+ display: flex;
3106
+ flex-direction: column;
3107
+ gap: 0.5rem;
3108
+ }
3109
+
3110
+ /* ─── Usage rows (compact, replaces 4x2 grid) ─────────────────────── */
3111
+ .cortex-llm-inspector__usage-rows {
3112
+ display: flex;
3113
+ flex-direction: column;
3114
+ border-radius: 6px;
3115
+ overflow: hidden;
3116
+ background: var(--cortex-color-border);
3117
+ gap: 1px;
3118
+ }
3119
+
3120
+ .cortex-llm-inspector__usage-row {
3121
+ display: flex;
3122
+ align-items: baseline;
3123
+ gap: 0.5rem;
3124
+ padding: 0.375rem 0.625rem;
3125
+ background: var(--cortex-color-surface);
3126
+ flex-wrap: wrap;
3127
+ }
3128
+
3129
+ .cortex-llm-inspector__usage-row--total {
3130
+ background: light-dark(#fafbfc, #141414);
3131
+ }
3132
+
3133
+ .cortex-llm-inspector__usage-lbl {
3134
+ font-size: 0.5625rem;
3135
+ text-transform: uppercase;
3136
+ letter-spacing: 0.05em;
3137
+ color: var(--cortex-color-text-muted);
3138
+ font-weight: 600;
3139
+ width: 3.25rem;
3140
+ flex-shrink: 0;
3141
+ font-family: system-ui, -apple-system, sans-serif;
3142
+ }
3143
+
3144
+ .cortex-llm-inspector__usage-val {
3145
+ font-variant-numeric: tabular-nums;
3146
+ font-weight: 600;
3147
+ color: var(--cortex-color-text-secondary);
3148
+ min-width: 3rem;
3149
+ }
3150
+
3151
+ .cortex-llm-inspector__usage-row--total .cortex-llm-inspector__usage-val {
3152
+ font-weight: 700;
3153
+ color: var(--cortex-color-text-heading);
3154
+ }
3155
+
3156
+ .cortex-llm-inspector__usage-detail {
3157
+ color: var(--cortex-color-border-strong);
3158
+ font-size: 0.5625rem;
3159
+ margin-inline-start: auto;
3160
+ }
3161
+
3162
+ /* ─── Tabs (underline style) ───────────────────────────────────────── */
3163
+ .cortex-llm-inspector__tabs {
3164
+ display: flex;
3165
+ gap: 0;
3166
+ border-bottom: 1px solid var(--cortex-color-border);
3167
+ }
3168
+
3169
+ .cortex-llm-inspector__tab {
3170
+ padding: 0.375rem 0.75rem;
3171
+ border: none;
3172
+ background: transparent;
3173
+ cursor: pointer;
3174
+ font: inherit;
3175
+ color: var(--cortex-color-text-muted);
3176
+ font-weight: 500;
3177
+ position: relative;
3178
+ transition: color 150ms ease;
3179
+ font-family: system-ui, -apple-system, sans-serif;
3180
+ }
3181
+ .cortex-llm-inspector__tab:hover {
3182
+ color: var(--cortex-color-text-secondary);
3183
+ }
3184
+ .cortex-llm-inspector__tab--active {
3185
+ color: var(--cortex-color-text-heading);
3186
+ font-weight: 600;
3187
+ }
3188
+ .cortex-llm-inspector__tab--active::after {
3189
+ content: "";
3190
+ position: absolute;
3191
+ inset-inline: 0;
3192
+ bottom: -1px;
3193
+ height: 2px;
3194
+ background: var(--cortex-color-text-heading);
3195
+ border-radius: 1px 1px 0 0;
3196
+ }
3197
+
3198
+ /* ─── JSON pane ────────────────────────────────────────────────────── */
3199
+ .cortex-llm-inspector__json-pane {
3200
+ position: relative;
3201
+ max-height: 24rem;
3202
+ overflow: auto;
3203
+ padding: 0.625rem;
3204
+ background: var(--cortex-color-surface);
3205
+ border-radius: 6px;
3206
+ }
3207
+
3208
+ .cortex-llm-inspector__json-copy {
3209
+ position: sticky;
3210
+ top: 0;
3211
+ float: inline-end;
3212
+ z-index: 1;
3213
+ }
3214
+
3215
+ .cortex-json-tree {
3216
+ display: block;
3217
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
3218
+ font-size: 0.75rem;
3219
+ line-height: 1.25rem;
3220
+ user-select: text;
3221
+ white-space: pre-wrap;
3222
+ word-break: break-word;
3223
+ }
3224
+
3225
+ .cortex-json-tree__indent {
3226
+ padding-inline-start: 1.25em;
3227
+ border-inline-start: 1px solid var(--cortex-color-border);
3228
+ margin-inline-start: 0.3em;
3229
+ }
3230
+
3231
+ .cortex-json-tree__line {
3232
+ position: relative;
3233
+ }
3234
+
3235
+ .cortex-json-tree__toggle {
3236
+ cursor: pointer;
3237
+ user-select: none;
3238
+ }
3239
+ .cortex-json-tree__toggle:hover .cortex-json-tree__arrow {
3240
+ color: var(--cortex-color-text);
3241
+ }
3242
+
3243
+ .cortex-json-tree__arrow {
3244
+ display: inline-block;
3245
+ width: 1em;
3246
+ text-align: center;
3247
+ color: var(--cortex-color-text-muted);
3248
+ font-size: 0.525rem;
3249
+ transition: transform 0.15s ease;
3250
+ vertical-align: middle;
3251
+ }
3252
+ .cortex-json-tree__arrow--collapsed {
3253
+ transform: rotate(-90deg);
3254
+ }
3255
+
3256
+ .cortex-json-tree__bracket {
3257
+ color: var(--cortex-color-text-secondary);
3258
+ }
3259
+
3260
+ .cortex-json-tree__key {
3261
+ color: light-dark(#6366f1, #818cf8);
3262
+ }
3263
+
3264
+ .cortex-json-tree__colon {
3265
+ color: var(--cortex-color-text-secondary);
3266
+ }
3267
+
3268
+ .cortex-json-tree__comma {
3269
+ color: var(--cortex-color-text-muted);
3270
+ }
3271
+
3272
+ .cortex-json-tree__string {
3273
+ color: var(--cortex-color-success);
3274
+ }
3275
+
3276
+ .cortex-json-tree__number {
3277
+ color: light-dark(#2563eb, #60a5fa);
3278
+ }
3279
+
3280
+ .cortex-json-tree__boolean {
3281
+ color: light-dark(#d97706, #fbbf24);
3282
+ }
3283
+
3284
+ .cortex-json-tree__null {
3285
+ color: var(--cortex-color-text-muted);
3286
+ font-style: italic;
3287
+ }
3288
+
3289
+ .cortex-json-tree__collapsed-hint {
3290
+ display: inline-block;
3291
+ padding: 0 0.4em;
3292
+ margin: 0 0.15em;
3293
+ font-size: 0.625rem;
3294
+ line-height: 1.5;
3295
+ color: var(--cortex-color-text-muted);
3296
+ background: var(--cortex-color-surface-subtle);
3297
+ border: 1px solid var(--cortex-color-border);
3298
+ border-radius: 3px;
3299
+ font-style: italic;
3300
+ cursor: pointer;
3301
+ user-select: none;
3302
+ vertical-align: middle;
3303
+ }
3304
+ .cortex-json-tree__collapsed-hint:hover {
3305
+ color: var(--cortex-color-text-secondary);
3306
+ border-color: var(--cortex-color-border-strong);
3307
+ background: var(--cortex-color-surface-muted);
3308
+ }
3309
+
3310
+ .cortex-copy-btn {
3311
+ display: inline-flex;
3312
+ align-items: center;
3313
+ }
3314
+
3315
+ .cortex-copy-btn__button {
3316
+ display: inline-flex;
3317
+ align-items: center;
3318
+ justify-content: center;
3319
+ width: 1.375rem;
3320
+ height: 1.375rem;
3321
+ padding: 0;
3322
+ border: none;
3323
+ border-radius: 3px;
3324
+ background: transparent;
3325
+ color: var(--cortex-color-text-muted);
3326
+ cursor: pointer;
3327
+ opacity: 0;
3328
+ transition: opacity 150ms ease, color 150ms ease, background 150ms ease;
3329
+ }
3330
+ :hover > cortex-copy-button .cortex-copy-btn__button, :hover > .cortex-copy-btn .cortex-copy-btn__button, .cortex-copy-btn__button:hover, .cortex-copy-btn__button:focus-visible {
3331
+ opacity: 1;
3332
+ }
3333
+ .cortex-copy-btn__button:hover {
3334
+ background: var(--cortex-color-hover);
3335
+ color: var(--cortex-color-text);
3336
+ }
3337
+ .cortex-copy-btn__button--copied {
3338
+ opacity: 1;
3339
+ color: var(--cortex-color-success);
3340
+ pointer-events: none;
3341
+ }
3342
+ .cortex-copy-btn__button--copied:hover {
3343
+ color: var(--cortex-color-success);
3344
+ background: transparent;
3345
+ }
3346
+
3347
+ .cortex-copy-btn__icon {
3348
+ flex-shrink: 0;
3349
+ }
3350
+ .cortex-copy-btn__icon--check {
3351
+ animation: cortex-copy-pop 250ms cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
3352
+ }
3353
+
3354
+ @keyframes cortex-copy-pop {
3355
+ 0% {
3356
+ transform: scale(0.6);
3357
+ opacity: 0;
3358
+ }
3359
+ 100% {
3360
+ transform: scale(1);
3361
+ opacity: 1;
3362
+ }
3363
+ }
3364
+ @media (prefers-reduced-motion: reduce) {
3365
+ .cortex-widget *,
3366
+ .cortex-widget *::before,
3367
+ .cortex-widget *::after {
3368
+ animation-duration: 0.01ms !important;
3369
+ animation-iteration-count: 1 !important;
3370
+ transition-duration: 0.01ms !important;
3371
+ }
3372
+ }