zerochat 7.3.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. zerochat-7.3.0.dist-info/METADATA +70 -0
  2. zerochat-7.3.0.dist-info/RECORD +130 -0
  3. zerochat-7.3.0.dist-info/WHEEL +5 -0
  4. zerochat-7.3.0.dist-info/entry_points.txt +2 -0
  5. zerochat-7.3.0.dist-info/licenses/LICENSE +34 -0
  6. zerochat-7.3.0.dist-info/top_level.txt +2 -0
  7. zerochat.py +2004 -0
  8. zerochat_runtime/__init__.py +1 -0
  9. zerochat_runtime/assets/css/base.css +199 -0
  10. zerochat_runtime/assets/css/components/composer.css +1258 -0
  11. zerochat_runtime/assets/css/components/debug.css +777 -0
  12. zerochat_runtime/assets/css/components/header.css +97 -0
  13. zerochat_runtime/assets/css/components/icons.css +39 -0
  14. zerochat_runtime/assets/css/components/markdown.css +685 -0
  15. zerochat_runtime/assets/css/components/messages.css +473 -0
  16. zerochat_runtime/assets/css/components/modals.css +1319 -0
  17. zerochat_runtime/assets/css/components/sidebar.css +622 -0
  18. zerochat_runtime/assets/css/components/tools.css +1223 -0
  19. zerochat_runtime/assets/css/layout.css +171 -0
  20. zerochat_runtime/assets/css/print.css +120 -0
  21. zerochat_runtime/assets/css/styles.css +18 -0
  22. zerochat_runtime/assets/css/theme-overrides.css +555 -0
  23. zerochat_runtime/assets/css/tokens.css +165 -0
  24. zerochat_runtime/assets/help/architecture.html +247 -0
  25. zerochat_runtime/assets/help/composer.html +134 -0
  26. zerochat_runtime/assets/help/conversations.html +105 -0
  27. zerochat_runtime/assets/help/debug.html +108 -0
  28. zerochat_runtime/assets/help/en/architecture.html +247 -0
  29. zerochat_runtime/assets/help/en/composer.html +134 -0
  30. zerochat_runtime/assets/help/en/conversations.html +104 -0
  31. zerochat_runtime/assets/help/en/debug.html +105 -0
  32. zerochat_runtime/assets/help/en/gemini-free.html +39 -0
  33. zerochat_runtime/assets/help/en/index.html +191 -0
  34. zerochat_runtime/assets/help/en/learning.html +71 -0
  35. zerochat_runtime/assets/help/en/mcp.html +143 -0
  36. zerochat_runtime/assets/help/en/openrouter-free.html +39 -0
  37. zerochat_runtime/assets/help/en/profiles.html +173 -0
  38. zerochat_runtime/assets/help/en/rag.html +130 -0
  39. zerochat_runtime/assets/help/en/reasoning-telemetry.html +108 -0
  40. zerochat_runtime/assets/help/en/tools-agent.html +133 -0
  41. zerochat_runtime/assets/help/en/webllm.html +355 -0
  42. zerochat_runtime/assets/help/gemini-free.html +39 -0
  43. zerochat_runtime/assets/help/help.css +604 -0
  44. zerochat_runtime/assets/help/help.js +51 -0
  45. zerochat_runtime/assets/help/index.html +194 -0
  46. zerochat_runtime/assets/help/learning.html +71 -0
  47. zerochat_runtime/assets/help/mcp.html +143 -0
  48. zerochat_runtime/assets/help/openrouter-free.html +39 -0
  49. zerochat_runtime/assets/help/profiles.html +174 -0
  50. zerochat_runtime/assets/help/rag.html +130 -0
  51. zerochat_runtime/assets/help/reasoning-telemetry.html +111 -0
  52. zerochat_runtime/assets/help/tools-agent.html +133 -0
  53. zerochat_runtime/assets/help/webllm.html +359 -0
  54. zerochat_runtime/assets/js/agent-core.js +1553 -0
  55. zerochat_runtime/assets/js/api.js +844 -0
  56. zerochat_runtime/assets/js/app.js +2558 -0
  57. zerochat_runtime/assets/js/attachments.js +220 -0
  58. zerochat_runtime/assets/js/charts.js +338 -0
  59. zerochat_runtime/assets/js/chat-engine.js +566 -0
  60. zerochat_runtime/assets/js/config-store.js +207 -0
  61. zerochat_runtime/assets/js/context-manager.js +584 -0
  62. zerochat_runtime/assets/js/conversation-service.js +484 -0
  63. zerochat_runtime/assets/js/cookies.js +688 -0
  64. zerochat_runtime/assets/js/data-reset-service.js +136 -0
  65. zerochat_runtime/assets/js/debug.js +508 -0
  66. zerochat_runtime/assets/js/defaults.js +16 -0
  67. zerochat_runtime/assets/js/export.js +179 -0
  68. zerochat_runtime/assets/js/file-parser.js +2088 -0
  69. zerochat_runtime/assets/js/generation-controller.js +417 -0
  70. zerochat_runtime/assets/js/i18n.js +1483 -0
  71. zerochat_runtime/assets/js/icons.js +156 -0
  72. zerochat_runtime/assets/js/ingestionEngine.js +436 -0
  73. zerochat_runtime/assets/js/markdown.js +588 -0
  74. zerochat_runtime/assets/js/mcp.js +1271 -0
  75. zerochat_runtime/assets/js/message-turns.js +62 -0
  76. zerochat_runtime/assets/js/profile-backup.js +118 -0
  77. zerochat_runtime/assets/js/profile-export-bundle.js +481 -0
  78. zerochat_runtime/assets/js/profile-repository.js +213 -0
  79. zerochat_runtime/assets/js/providers-webllm.js +486 -0
  80. zerochat_runtime/assets/js/providers.js +1560 -0
  81. zerochat_runtime/assets/js/rag-index.js +295 -0
  82. zerochat_runtime/assets/js/rag-service.js +530 -0
  83. zerochat_runtime/assets/js/rag-ui.js +997 -0
  84. zerochat_runtime/assets/js/ragStorage.js +676 -0
  85. zerochat_runtime/assets/js/sandbox.js +449 -0
  86. zerochat_runtime/assets/js/state.js +704 -0
  87. zerochat_runtime/assets/js/storage-db.js +144 -0
  88. zerochat_runtime/assets/js/tool-cards.js +330 -0
  89. zerochat_runtime/assets/js/tool-security.js +653 -0
  90. zerochat_runtime/assets/js/tools/README.md +50 -0
  91. zerochat_runtime/assets/js/tools/builtin/agent-checkpoint.tool.js +212 -0
  92. zerochat_runtime/assets/js/tools/builtin/download-pdf.tool.js +111 -0
  93. zerochat_runtime/assets/js/tools/builtin/execute-javascript.tool.js +219 -0
  94. zerochat_runtime/assets/js/tools/builtin/fetch-web-page.tool.js +112 -0
  95. zerochat_runtime/assets/js/tools/builtin/list-documents.tool.js +117 -0
  96. zerochat_runtime/assets/js/tools/builtin/read-knowledge-chunk.tool.js +129 -0
  97. zerochat_runtime/assets/js/tools/builtin/read-knowledge-image.tool.js +95 -0
  98. zerochat_runtime/assets/js/tools/builtin/render-chart.tool.js +90 -0
  99. zerochat_runtime/assets/js/tools/builtin/search-knowledge-base.tool.js +124 -0
  100. zerochat_runtime/assets/js/tools/builtin/search-web.tool.js +125 -0
  101. zerochat_runtime/assets/js/tools/tool-manifest.js +53 -0
  102. zerochat_runtime/assets/js/tools/tool-runtime.js +77 -0
  103. zerochat_runtime/assets/js/ui-composer.js +319 -0
  104. zerochat_runtime/assets/js/ui-conversation.js +655 -0
  105. zerochat_runtime/assets/js/ui-dialogs.js +132 -0
  106. zerochat_runtime/assets/js/ui-generation-status.js +119 -0
  107. zerochat_runtime/assets/js/ui-inspector.js +804 -0
  108. zerochat_runtime/assets/js/ui-mcp.js +604 -0
  109. zerochat_runtime/assets/js/ui-profiles.js +824 -0
  110. zerochat_runtime/assets/js/ui-reasoning.js +146 -0
  111. zerochat_runtime/assets/js/ui-settings.js +825 -0
  112. zerochat_runtime/assets/js/ui-shell.js +215 -0
  113. zerochat_runtime/assets/js/ui-sidebar.js +429 -0
  114. zerochat_runtime/assets/js/ui-telemetry.js +404 -0
  115. zerochat_runtime/assets/js/ui-transfer.js +262 -0
  116. zerochat_runtime/assets/js/utils.js +216 -0
  117. zerochat_runtime/assets/js/vendor/orama.browser.js +11 -0
  118. zerochat_runtime/assets/js/web-browser.js +569 -0
  119. zerochat_runtime/assets/js/web-search.js +519 -0
  120. zerochat_runtime/assets/manifest.webmanifest +20 -0
  121. zerochat_runtime/assets/services/dummy_mcp/dummy_mcp_server.py +47 -0
  122. zerochat_runtime/assets/services/dummy_mcp/service.json +22 -0
  123. zerochat_runtime/assets/services/lsp/installer.json +9 -0
  124. zerochat_runtime/assets/services/lsp/service.json +22 -0
  125. zerochat_runtime/assets/services/memory/installer.json +9 -0
  126. zerochat_runtime/assets/services/memory/service.json +24 -0
  127. zerochat_runtime/assets/services/playwright/installer.json +10 -0
  128. zerochat_runtime/assets/services/playwright/service.json +39 -0
  129. zerochat_runtime/assets/sw.js +164 -0
  130. zerochat_runtime/assets/zerochat.html +671 -0
@@ -0,0 +1,1223 @@
1
+ /* ==========================================================================
2
+ Tarjetas de Gráficos Nativos en SVG (ChatCharts)
3
+ ========================================================================== */
4
+ .chat-chart-card {
5
+ margin-top: 0.85rem;
6
+ overflow: hidden;
7
+ animation: fadeIn 0.2s ease-out;
8
+ }
9
+
10
+ .chat-chart-header {
11
+ display: flex;
12
+ align-items: center;
13
+ justify-content: space-between;
14
+ margin-bottom: 0.5rem;
15
+ }
16
+
17
+ .chat-chart-title {
18
+ display: flex;
19
+ align-items: center;
20
+ gap: 0.45rem;
21
+ font-size: 0.95rem;
22
+ color: var(--text-main);
23
+ }
24
+
25
+ .chat-chart-badge {
26
+ font-size: 0.675rem;
27
+ font-weight: 700;
28
+ text-transform: uppercase;
29
+ padding: 0.15rem 0.45rem;
30
+ border-radius: var(--radius-sm);
31
+ background: rgba(59, 130, 246, 0.15);
32
+ color: #3b82f6;
33
+ border: 1px solid rgba(59, 130, 246, 0.3);
34
+ }
35
+
36
+ .chat-chart-description {
37
+ font-size: 0.825rem;
38
+ color: var(--text-muted);
39
+ margin-bottom: 0.75rem;
40
+ line-height: 1.45;
41
+ }
42
+
43
+ .chart-legend-top {
44
+ display: flex;
45
+ flex-wrap: wrap;
46
+ gap: 0.75rem;
47
+ margin-bottom: 0.6rem;
48
+ font-size: 0.775rem;
49
+ }
50
+
51
+ .chart-legend-item {
52
+ display: inline-flex;
53
+ align-items: center;
54
+ gap: 0.35rem;
55
+ color: var(--text-main);
56
+ }
57
+
58
+ .chart-legend-dot {
59
+ width: 10px;
60
+ height: 10px;
61
+ border-radius: 2px;
62
+ }
63
+
64
+ .chat-chart-body {
65
+ width: 100%;
66
+ display: flex;
67
+ justify-content: center;
68
+ align-items: center;
69
+ }
70
+
71
+ .chat-chart-svg {
72
+ filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.05));
73
+ transition: all 0.2s ease;
74
+ }
75
+
76
+ .chart-bar-group rect {
77
+ transition: opacity 0.15s ease, transform 0.15s ease;
78
+ cursor: pointer;
79
+ }
80
+
81
+ .chart-bar-group:hover rect {
82
+ opacity: 0.85;
83
+ }
84
+
85
+
86
+
87
+ /* ==========================================================================
88
+ Estilos del Provider Inspector
89
+ ========================================================================== */
90
+ .inspector-intro-card {
91
+ margin-bottom: 0.5rem;
92
+ }
93
+
94
+ .inspector-intro-header {
95
+ display: flex;
96
+ align-items: flex-start;
97
+ gap: 0.75rem;
98
+ }
99
+
100
+ .inspector-intro-icon {
101
+ font-size: 1.5rem;
102
+ line-height: 1;
103
+ }
104
+
105
+ .inspector-header-meta {
106
+ display: flex;
107
+ flex-wrap: wrap;
108
+ gap: 0.75rem;
109
+ background-color: var(--bg-surface);
110
+ border: 1px solid var(--border-color);
111
+ border-radius: var(--radius-md);
112
+ padding: 0.75rem 1rem;
113
+ margin-bottom: 1rem;
114
+ font-size: 0.825rem;
115
+ }
116
+
117
+ .inspector-meta-item {
118
+ display: flex;
119
+ flex-direction: column;
120
+ gap: 0.15rem;
121
+ min-width: 140px;
122
+ }
123
+
124
+ .inspector-meta-item .meta-label {
125
+ font-size: 0.7rem;
126
+ font-weight: 600;
127
+ text-transform: uppercase;
128
+ color: var(--text-muted);
129
+ }
130
+
131
+ .inspector-meta-item .meta-value {
132
+ font-weight: 500;
133
+ color: var(--text-main);
134
+ word-break: break-all;
135
+ }
136
+
137
+ .inspector-cap-grid {
138
+ display: grid;
139
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
140
+ gap: 0.65rem;
141
+ margin-top: 0.5rem;
142
+ }
143
+
144
+ .inspector-cap-card {
145
+ background-color: var(--bg-surface);
146
+ border: 1px solid var(--border-color);
147
+ border-radius: var(--radius-md);
148
+ padding: 0.75rem 0.85rem;
149
+ display: flex;
150
+ flex-direction: column;
151
+ gap: 0.35rem;
152
+ transition: all 0.15s ease;
153
+ }
154
+
155
+ .inspector-cap-card:hover {
156
+ border-color: #cbd5e1;
157
+ box-shadow: var(--shadow-sm);
158
+ }
159
+
160
+ .cap-card-header {
161
+ display: flex;
162
+ align-items: center;
163
+ justify-content: space-between;
164
+ gap: 0.5rem;
165
+ }
166
+
167
+ .cap-card-title {
168
+ font-size: 0.825rem;
169
+ font-weight: 600;
170
+ color: var(--text-main);
171
+ }
172
+
173
+ .cap-card-detail {
174
+ font-size: 0.75rem;
175
+ color: var(--text-muted);
176
+ line-height: 1.35;
177
+ }
178
+
179
+ .cap-badge {
180
+ font-size: 0.675rem;
181
+ font-weight: 600;
182
+ text-transform: uppercase;
183
+ padding: 0.2rem 0.45rem;
184
+ border-radius: var(--radius-sm);
185
+ display: inline-flex;
186
+ align-items: center;
187
+ gap: 0.25rem;
188
+ letter-spacing: 0.02em;
189
+ }
190
+
191
+ .cap-badge-confirmed {
192
+ background-color: rgba(16, 185, 129, 0.12);
193
+ color: #059669;
194
+ border: 1px solid rgba(16, 185, 129, 0.25);
195
+ }
196
+
197
+ .cap-badge-inferred {
198
+ background-color: rgba(139, 92, 246, 0.12);
199
+ color: #7c3aed;
200
+ border: 1px solid rgba(139, 92, 246, 0.25);
201
+ }
202
+
203
+ .cap-badge-declared {
204
+ background-color: rgba(59, 130, 246, 0.12);
205
+ color: #2563eb;
206
+ border: 1px solid rgba(59, 130, 246, 0.25);
207
+ }
208
+
209
+ .cap-badge-unsupported {
210
+ background-color: rgba(239, 68, 68, 0.1);
211
+ color: #dc2626;
212
+ border: 1px solid rgba(239, 68, 68, 0.2);
213
+ }
214
+
215
+ .cap-badge-unknown {
216
+ background-color: rgba(107, 114, 128, 0.1);
217
+ color: #6b7280;
218
+ border: 1px solid rgba(107, 114, 128, 0.2);
219
+ }
220
+
221
+ /* ==========================================================================
222
+ Estilos del Gestor MCP (mcp-proxy)
223
+ ========================================================================== */
224
+ .mcp-setup-modal {
225
+ max-width: 680px;
226
+ width: 92vw;
227
+ }
228
+
229
+ .mcp-status-card,
230
+ .mcp-config-card,
231
+ .mcp-instructions-card,
232
+ .mcp-servers-card {
233
+ margin-bottom: 0.85rem;
234
+ }
235
+
236
+ .mcp-bootstrap-card {
237
+ margin-top: 1rem;
238
+ padding: 0.9rem 1rem;
239
+ background: var(--bg-surface-elevated, var(--bg-surface));
240
+ border: 1px solid var(--border-color);
241
+ border-radius: var(--radius-md);
242
+ }
243
+
244
+ .mcp-bootstrap-header {
245
+ display: flex;
246
+ align-items: center;
247
+ gap: 0.55rem;
248
+ color: var(--text-main);
249
+ }
250
+
251
+ .mcp-bootstrap-header .ui-icon {
252
+ color: var(--primary);
253
+ }
254
+
255
+ .mcp-bootstrap-help {
256
+ display: inline-block;
257
+ margin-top: 0.7rem;
258
+ color: var(--primary);
259
+ font-size: 0.82rem;
260
+ font-weight: 600;
261
+ }
262
+
263
+ .mcp-status-header {
264
+ display: flex;
265
+ align-items: center;
266
+ justify-content: space-between;
267
+ gap: 0.85rem;
268
+ flex-wrap: nowrap;
269
+ }
270
+
271
+ .mcp-title-group {
272
+ display: flex;
273
+ align-items: center;
274
+ gap: 0.65rem;
275
+ min-width: 0;
276
+ white-space: nowrap;
277
+ }
278
+
279
+ .mcp-header-icon {
280
+ font-size: 1.4rem;
281
+ line-height: 1;
282
+ color: var(--primary);
283
+ flex-shrink: 0;
284
+ margin-top: 0.1rem;
285
+ }
286
+
287
+ .mcp-status-actions {
288
+ display: flex;
289
+ align-items: center;
290
+ gap: 0.6rem;
291
+ flex-wrap: nowrap;
292
+ white-space: nowrap;
293
+ }
294
+
295
+ .mcp-status-badge {
296
+ display: inline-flex;
297
+ align-items: center;
298
+ gap: 0.4rem;
299
+ font-size: 0.75rem;
300
+ font-weight: 600;
301
+ padding: 0.25rem 0.65rem;
302
+ border-radius: var(--radius-full, 9999px);
303
+ border: 1px solid transparent;
304
+ transition: all 0.2s ease;
305
+ }
306
+
307
+ .mcp-status-dot {
308
+ width: 7px;
309
+ height: 7px;
310
+ border-radius: 50%;
311
+ background-color: currentColor;
312
+ }
313
+
314
+ .mcp-status-disconnected {
315
+ background-color: rgba(100, 116, 139, 0.12);
316
+ color: var(--text-muted);
317
+ border-color: var(--border-color);
318
+ }
319
+
320
+ .mcp-status-connecting {
321
+ background-color: rgba(234, 179, 8, 0.14);
322
+ color: #ca8a04;
323
+ border-color: rgba(234, 179, 8, 0.3);
324
+ }
325
+
326
+ .mcp-status-connected {
327
+ background-color: rgba(34, 197, 94, 0.14);
328
+ color: #16a34a;
329
+ border-color: rgba(34, 197, 94, 0.3);
330
+ }
331
+
332
+ .mcp-status-error {
333
+ background-color: rgba(239, 68, 68, 0.12);
334
+ color: #dc2626;
335
+ border-color: rgba(239, 68, 68, 0.3);
336
+ }
337
+
338
+ .btn-mcp-action {
339
+ gap: 0.4rem;
340
+ font-size: 0.8rem;
341
+ padding: 0.4rem 0.75rem;
342
+ }
343
+
344
+ .mcp-server-details {
345
+ display: inline-flex;
346
+ align-items: center;
347
+ gap: 0.4rem;
348
+ font-size: 0.75rem;
349
+ font-weight: 500;
350
+ color: var(--text-secondary);
351
+ background-color: var(--bg-surface-subtle);
352
+ border: 1px solid var(--border-color);
353
+ padding: 0.15rem 0.55rem;
354
+ border-radius: var(--radius-full, 9999px);
355
+ white-space: nowrap;
356
+ line-height: 1.3;
357
+ }
358
+
359
+ .mcp-detail-item {
360
+ display: inline-flex;
361
+ align-items: center;
362
+ }
363
+
364
+ .mcp-error-message {
365
+ display: flex;
366
+ align-items: center;
367
+ gap: 0.5rem;
368
+ margin-top: 0.75rem;
369
+ padding: 0.55rem 0.75rem;
370
+ border-radius: var(--radius-sm);
371
+ background-color: rgba(239, 68, 68, 0.08);
372
+ border-left: 3px solid #ef4444;
373
+ color: #b91c1c;
374
+ font-size: 0.78rem;
375
+ line-height: 1.4;
376
+ }
377
+
378
+ [data-theme="dark"] .mcp-error-message {
379
+ background-color: rgba(239, 68, 68, 0.15);
380
+ color: #fca5a5;
381
+ }
382
+
383
+ .mcp-fields-grid {
384
+ display: grid;
385
+ grid-template-columns: 1fr 1fr;
386
+ gap: 0.75rem;
387
+ }
388
+
389
+ @media (max-width: 640px) {
390
+ .mcp-fields-grid {
391
+ grid-template-columns: 1fr;
392
+ }
393
+ }
394
+
395
+ .mcp-endpoint-row {
396
+ display: flex;
397
+ align-items: center;
398
+ gap: 0.45rem;
399
+ margin-top: 0.6rem;
400
+ font-size: 0.75rem;
401
+ }
402
+
403
+ .mcp-endpoint-preview {
404
+ font-family: var(--font-mono, monospace);
405
+ font-size: 0.75rem;
406
+ background-color: var(--bg-hover);
407
+ padding: 0.15rem 0.45rem;
408
+ border-radius: var(--radius-sm);
409
+ border: 1px solid var(--border-color);
410
+ color: var(--text-main);
411
+ }
412
+
413
+ .mcp-instructions-header {
414
+ display: flex;
415
+ align-items: flex-start;
416
+ gap: 0.6rem;
417
+ }
418
+
419
+ .mcp-instructions-icon {
420
+ color: var(--primary);
421
+ line-height: 1;
422
+ flex-shrink: 0;
423
+ margin-top: 0.1rem;
424
+ }
425
+
426
+ .mcp-download-actions {
427
+ display: flex;
428
+ align-items: center;
429
+ gap: 0.6rem;
430
+ margin: 0.75rem 0 0.5rem 0;
431
+ flex-wrap: wrap;
432
+ }
433
+
434
+ .btn-mcp-download {
435
+ display: inline-flex;
436
+ align-items: center;
437
+ gap: 0.5rem;
438
+ font-size: 0.85rem;
439
+ font-weight: 500;
440
+ padding: 0.5rem 1rem;
441
+ }
442
+
443
+ .mcp-command-wrapper {
444
+ display: flex;
445
+ flex-direction: column;
446
+ gap: 0.45rem;
447
+ margin-top: 0.5rem;
448
+ }
449
+
450
+ .mcp-command-box {
451
+ background-color: #0f172a;
452
+ color: #f8fafc;
453
+ padding: 0.85rem 1rem;
454
+ border-radius: var(--radius-md);
455
+ font-family: var(--font-mono, monospace);
456
+ font-size: 0.775rem;
457
+ line-height: 1.45;
458
+ overflow-x: auto;
459
+ white-space: pre-wrap;
460
+ word-break: break-all;
461
+ border: 1px solid var(--border-color);
462
+ margin: 0;
463
+ }
464
+
465
+ [data-theme="dark"] .mcp-command-box {
466
+ background-color: #020617;
467
+ border-color: #1e293b;
468
+ }
469
+
470
+ .btn-copy-mcp-cmd {
471
+ align-self: flex-start;
472
+ display: inline-flex;
473
+ align-items: center;
474
+ gap: 0.4rem;
475
+ font-size: 0.78rem;
476
+ padding: 0.35rem 0.75rem;
477
+ }
478
+
479
+ .btn-copied {
480
+ color: var(--success) !important;
481
+ border-color: var(--success) !important;
482
+ }
483
+
484
+ .spinning {
485
+ animation: spin 1s linear infinite;
486
+ }
487
+
488
+ /* ==========================================================================
489
+ Contenedor de Herramientas MCP y Switches de Activación
490
+ ========================================================================== */
491
+ .mcp-tools-container {
492
+ display: flex;
493
+ flex-direction: column;
494
+ gap: 0.75rem;
495
+ margin-top: 0.5rem;
496
+ }
497
+
498
+ .mcp-tools-header {
499
+ display: flex;
500
+ align-items: center;
501
+ justify-content: space-between;
502
+ margin-bottom: 0.25rem;
503
+ }
504
+
505
+ .mcp-tools-title {
506
+ font-size: 0.85rem;
507
+ font-weight: 600;
508
+ color: var(--text-main);
509
+ display: flex;
510
+ align-items: center;
511
+ gap: 0.45rem;
512
+ }
513
+
514
+ .mcp-tools-counter {
515
+ font-size: 0.725rem;
516
+ font-weight: 500;
517
+ color: var(--text-muted);
518
+ background-color: var(--bg-hover);
519
+ padding: 0.15rem 0.5rem;
520
+ border-radius: var(--radius-full, 9999px);
521
+ border: 1px solid var(--border-color);
522
+ }
523
+
524
+ .mcp-tools-list {
525
+ display: flex;
526
+ flex-direction: column;
527
+ gap: 0.65rem;
528
+ }
529
+
530
+ .mcp-tool-card {
531
+ display: flex;
532
+ align-items: center;
533
+ justify-content: space-between;
534
+ gap: 0.85rem;
535
+ padding: 0.75rem 0.95rem;
536
+ box-shadow: var(--shadow-sm);
537
+ transition: border-color 0.15s ease;
538
+ }
539
+
540
+ .mcp-tool-card:hover {
541
+ border-color: var(--primary);
542
+ }
543
+
544
+ .mcp-tool-info {
545
+ flex: 1;
546
+ min-width: 0;
547
+ }
548
+
549
+ .mcp-tool-title-row {
550
+ display: flex;
551
+ align-items: center;
552
+ gap: 0.45rem;
553
+ margin-bottom: 0.2rem;
554
+ flex-wrap: wrap;
555
+ }
556
+
557
+ .mcp-tool-icon {
558
+ color: var(--primary);
559
+ display: inline-flex;
560
+ align-items: center;
561
+ flex-shrink: 0;
562
+ }
563
+
564
+ .mcp-tool-name {
565
+ font-size: 0.84rem;
566
+ font-weight: 600;
567
+ color: var(--text-main);
568
+ font-family: var(--font-mono, monospace);
569
+ }
570
+
571
+ .mcp-tool-badge {
572
+ font-size: 0.65rem;
573
+ font-weight: 600;
574
+ text-transform: uppercase;
575
+ letter-spacing: 0.03em;
576
+ padding: 0.1rem 0.4rem;
577
+ border-radius: var(--radius-sm);
578
+ background-color: rgba(99, 102, 241, 0.12);
579
+ color: #6366f1;
580
+ border: 1px solid rgba(99, 102, 241, 0.25);
581
+ }
582
+
583
+ [data-theme="dark"] .mcp-tool-badge {
584
+ background-color: rgba(99, 102, 241, 0.2);
585
+ color: #a5b4fc;
586
+ }
587
+
588
+ .mcp-tool-desc {
589
+ font-size: 0.75rem;
590
+ color: var(--text-muted);
591
+ line-height: 1.35;
592
+ margin: 0;
593
+ }
594
+
595
+ .mcp-tool-params {
596
+ display: flex;
597
+ align-items: center;
598
+ gap: 0.35rem;
599
+ margin-top: 0.35rem;
600
+ flex-wrap: wrap;
601
+ }
602
+
603
+ .mcp-tools-empty {
604
+ padding: 1.25rem 1rem;
605
+ text-align: center;
606
+ color: var(--text-muted);
607
+ font-size: 0.8rem;
608
+ background-color: var(--bg-surface);
609
+ border: 1px dashed var(--border-color);
610
+ border-radius: var(--radius-md);
611
+ display: flex;
612
+ flex-direction: column;
613
+ align-items: center;
614
+ gap: 0.5rem;
615
+ }
616
+
617
+ /* Tarjetas de Ejecución MCP en el Chat */
618
+ .mcp-card-server-tag {
619
+ font-size: 0.68rem;
620
+ color: var(--text-muted);
621
+ background: var(--bg-hover);
622
+ padding: 0.1rem 0.35rem;
623
+ border-radius: var(--radius-sm);
624
+ margin-left: 0.35rem;
625
+ border: 1px solid var(--border-color);
626
+ }
627
+
628
+ .mcp-input-summary {
629
+ padding: 0.35rem 0.75rem;
630
+ font-size: 0.75rem;
631
+ background: var(--bg-surface);
632
+ border-bottom: 1px solid var(--border-color);
633
+ }
634
+
635
+ /* ==========================================================================
636
+ Autorización de Ejecución de Tools y Seguridad MCP
637
+ ========================================================================== */
638
+ .tool-card-badge.status-pending-auth {
639
+ background: rgba(245, 158, 11, 0.15);
640
+ color: #d97706;
641
+ border: 1px solid rgba(245, 158, 11, 0.35);
642
+ animation: pulseAuth 2s infinite ease-in-out;
643
+ }
644
+
645
+ [data-theme="dark"] .tool-card-badge.status-pending-auth {
646
+ background: rgba(245, 158, 11, 0.22);
647
+ color: #fbbf24;
648
+ border-color: rgba(245, 158, 11, 0.45);
649
+ }
650
+
651
+ @keyframes pulseAuth {
652
+ 0%, 100% { opacity: 1; }
653
+ 50% { opacity: 0.7; }
654
+ }
655
+
656
+ .tool-card-auth-prompt {
657
+ background: var(--bg-surface);
658
+ border: 1px solid rgba(245, 158, 11, 0.3);
659
+ border-radius: var(--radius-md);
660
+ padding: 0.85rem 1rem;
661
+ margin: 0.5rem;
662
+ display: flex;
663
+ flex-direction: column;
664
+ gap: 0.65rem;
665
+ }
666
+
667
+ .tool-auth-header {
668
+ display: flex;
669
+ flex-direction: column;
670
+ gap: 0.25rem;
671
+ }
672
+
673
+ .tool-auth-title-row {
674
+ display: flex;
675
+ align-items: center;
676
+ gap: 0.45rem;
677
+ font-size: 0.875rem;
678
+ color: var(--text-main);
679
+ }
680
+
681
+ .tool-auth-shield-icon {
682
+ color: #d97706;
683
+ display: inline-flex;
684
+ }
685
+
686
+ [data-theme="dark"] .tool-auth-shield-icon {
687
+ color: #fbbf24;
688
+ }
689
+
690
+ .tool-auth-desc {
691
+ font-size: 0.78rem;
692
+ color: var(--text-muted);
693
+ margin: 0;
694
+ line-height: 1.4;
695
+ }
696
+
697
+ .tool-auth-actions {
698
+ display: flex;
699
+ flex-wrap: wrap;
700
+ align-items: center;
701
+ gap: 0.5rem;
702
+ margin-top: 0.25rem;
703
+ }
704
+
705
+ .btn-auth-action {
706
+ display: inline-flex;
707
+ align-items: center;
708
+ gap: 0.35rem;
709
+ padding: 0.35rem 0.65rem;
710
+ font-size: 0.78rem;
711
+ font-weight: 500;
712
+ border-radius: var(--radius-sm);
713
+ cursor: pointer;
714
+ transition: background 0.15s ease, border-color 0.15s ease, transform 0.1s ease;
715
+ border: 1px solid transparent;
716
+ }
717
+
718
+ .btn-auth-action:active {
719
+ transform: scale(0.97);
720
+ }
721
+
722
+ .btn-auth-allow-once {
723
+ background: var(--bg-hover);
724
+ color: var(--text-main);
725
+ border-color: var(--border-color);
726
+ }
727
+
728
+ .btn-auth-allow-once:hover {
729
+ background: var(--border-color);
730
+ }
731
+
732
+ .btn-auth-allow-always {
733
+ background: var(--primary);
734
+ color: #fff;
735
+ border-color: var(--primary);
736
+ }
737
+
738
+ .btn-auth-allow-always:hover {
739
+ filter: brightness(1.1);
740
+ }
741
+
742
+ .btn-auth-deny {
743
+ background: rgba(239, 68, 68, 0.1);
744
+ color: #ef4444;
745
+ border-color: rgba(239, 68, 68, 0.25);
746
+ }
747
+
748
+ .btn-auth-deny:hover {
749
+ background: rgba(239, 68, 68, 0.18);
750
+ border-color: rgba(239, 68, 68, 0.4);
751
+ }
752
+
753
+ [data-theme="dark"] .btn-auth-deny {
754
+ background: rgba(239, 68, 68, 0.18);
755
+ color: #fca5a5;
756
+ border-color: rgba(239, 68, 68, 0.35);
757
+ }
758
+
759
+ .tool-auth-denied-notice {
760
+ padding: 0.75rem 1rem;
761
+ font-size: 0.8rem;
762
+ color: #ef4444;
763
+ background: rgba(239, 68, 68, 0.06);
764
+ border-radius: var(--radius-sm);
765
+ border-left: 3px solid #ef4444;
766
+ margin: 0.5rem;
767
+ }
768
+
769
+ [data-theme="dark"] .tool-auth-denied-notice {
770
+ color: #fca5a5;
771
+ background: rgba(239, 68, 68, 0.12);
772
+ }
773
+
774
+ /* Badges de autorización en lista MCP */
775
+ .mcp-auth-badge {
776
+ font-size: 0.65rem;
777
+ font-weight: 600;
778
+ padding: 0.05rem 0.35rem;
779
+ border-radius: var(--radius-sm);
780
+ letter-spacing: 0.02em;
781
+ }
782
+
783
+ .mcp-auth-badge.status-allowed {
784
+ background: rgba(16, 185, 129, 0.12);
785
+ color: #10b981;
786
+ border: 1px solid rgba(16, 185, 129, 0.25);
787
+ }
788
+
789
+ [data-theme="dark"] .mcp-auth-badge.status-allowed {
790
+ background: rgba(16, 185, 129, 0.2);
791
+ color: #6ee7b7;
792
+ }
793
+
794
+ .mcp-auth-badge.status-denied {
795
+ background: rgba(239, 68, 68, 0.1);
796
+ color: #ef4444;
797
+ border: 1px solid rgba(239, 68, 68, 0.25);
798
+ }
799
+
800
+ [data-theme="dark"] .mcp-auth-badge.status-denied {
801
+ background: rgba(239, 68, 68, 0.2);
802
+ color: #fca5a5;
803
+ }
804
+
805
+ .mcp-auth-badge.status-ask {
806
+ background: rgba(245, 158, 11, 0.12);
807
+ color: #d97706;
808
+ border: 1px solid rgba(245, 158, 11, 0.25);
809
+ }
810
+
811
+ [data-theme="dark"] .mcp-auth-badge.status-ask {
812
+ background: rgba(245, 158, 11, 0.2);
813
+ color: #fbbf24;
814
+ }
815
+
816
+ /* Selectores interactivos de autorización en lista MCP */
817
+ .mcp-auth-select {
818
+ font-size: 0.7rem;
819
+ font-weight: 600;
820
+ padding: 0.12rem 1.1rem 0.12rem 0.45rem;
821
+ border-radius: var(--radius-sm);
822
+ letter-spacing: 0.01em;
823
+ cursor: pointer;
824
+ appearance: none;
825
+ -webkit-appearance: none;
826
+ background-repeat: no-repeat;
827
+ background-position: right 0.3rem center;
828
+ background-size: 0.6rem;
829
+ border: 1px solid transparent;
830
+ transition: all 0.15s ease;
831
+ line-height: 1.2;
832
+ }
833
+
834
+ .mcp-auth-select:focus,
835
+ .mcp-auth-select:focus-visible {
836
+ outline: none;
837
+ box-shadow: var(--input-focus-ring);
838
+ }
839
+
840
+ .mcp-auth-select.status-allowed {
841
+ background-color: rgba(16, 185, 129, 0.12);
842
+ color: #059669;
843
+ border-color: rgba(16, 185, 129, 0.3);
844
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%23059669' stroke-width='2.5'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
845
+ }
846
+
847
+ [data-theme="dark"] .mcp-auth-select.status-allowed {
848
+ background-color: rgba(16, 185, 129, 0.2);
849
+ color: #6ee7b7;
850
+ border-color: rgba(16, 185, 129, 0.35);
851
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%236ee7b7' stroke-width='2.5'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
852
+ }
853
+
854
+ .mcp-auth-select.status-denied {
855
+ background-color: rgba(239, 68, 68, 0.1);
856
+ color: #dc2626;
857
+ border-color: rgba(239, 68, 68, 0.3);
858
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%23dc2626' stroke-width='2.5'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
859
+ }
860
+
861
+ [data-theme="dark"] .mcp-auth-select.status-denied {
862
+ background-color: rgba(239, 68, 68, 0.2);
863
+ color: #fca5a5;
864
+ border-color: rgba(239, 68, 68, 0.35);
865
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%23fca5a5' stroke-width='2.5'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
866
+ }
867
+
868
+ .mcp-auth-select.status-ask {
869
+ background-color: rgba(245, 158, 11, 0.12);
870
+ color: #d97706;
871
+ border-color: rgba(245, 158, 11, 0.3);
872
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%23d97706' stroke-width='2.5'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
873
+ }
874
+
875
+ [data-theme="dark"] .mcp-auth-select.status-ask {
876
+ background-color: rgba(245, 158, 11, 0.2);
877
+ color: #fbbf24;
878
+ border-color: rgba(245, 158, 11, 0.35);
879
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%23fbbf24' stroke-width='2.5'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
880
+ }
881
+
882
+ .mcp-auth-select option {
883
+ background-color: var(--bg-surface);
884
+ color: var(--text-main);
885
+ font-weight: 500;
886
+ }
887
+
888
+ /* Tarjeta de Seguridad en el modal de MCP */
889
+ .mcp-security-card {
890
+ background: var(--bg-surface);
891
+ border: 1px solid var(--border-color);
892
+ border-radius: var(--radius-md);
893
+ padding: 1rem;
894
+ margin-bottom: 1rem;
895
+ display: flex;
896
+ flex-direction: column;
897
+ gap: 0.85rem;
898
+ }
899
+
900
+ .mcp-security-header {
901
+ display: flex;
902
+ align-items: flex-start;
903
+ gap: 0.65rem;
904
+ }
905
+
906
+ .mcp-security-icon {
907
+ color: var(--primary);
908
+ display: inline-flex;
909
+ margin-top: 0.1rem;
910
+ }
911
+
912
+ .mcp-policy-options {
913
+ display: flex;
914
+ flex-direction: column;
915
+ gap: 0.5rem;
916
+ background: var(--bg-hover);
917
+ padding: 0.75rem;
918
+ border-radius: var(--radius-sm);
919
+ border: 1px solid var(--border-color);
920
+ }
921
+
922
+ .mcp-policy-option {
923
+ display: flex;
924
+ align-items: flex-start;
925
+ gap: 0.65rem;
926
+ cursor: pointer;
927
+ user-select: none;
928
+ }
929
+
930
+ .mcp-policy-option input[type="radio"] {
931
+ margin-top: 0.2rem;
932
+ cursor: pointer;
933
+ }
934
+
935
+ .mcp-policy-text strong {
936
+ display: block;
937
+ font-size: 0.825rem;
938
+ color: var(--text-main);
939
+ }
940
+
941
+ .mcp-policy-text .label-hint {
942
+ font-size: 0.75rem;
943
+ margin-top: 0.1rem;
944
+ }
945
+
946
+ .mcp-saved-auths-section {
947
+ display: flex;
948
+ flex-direction: column;
949
+ gap: 0.4rem;
950
+ }
951
+
952
+ .mcp-saved-auths-header {
953
+ display: flex;
954
+ align-items: center;
955
+ justify-content: space-between;
956
+ }
957
+
958
+ .btn-text-action {
959
+ background: none;
960
+ border: none;
961
+ color: var(--primary);
962
+ font-size: 0.75rem;
963
+ font-weight: 500;
964
+ cursor: pointer;
965
+ padding: 0.1rem 0.35rem;
966
+ border-radius: var(--radius-sm);
967
+ }
968
+
969
+ .btn-text-action:hover {
970
+ text-decoration: underline;
971
+ }
972
+
973
+ .mcp-saved-auths-list {
974
+ display: flex;
975
+ flex-direction: column;
976
+ gap: 0.35rem;
977
+ max-height: 140px;
978
+ overflow-y: auto;
979
+ }
980
+
981
+ .mcp-auth-item {
982
+ display: flex;
983
+ align-items: center;
984
+ justify-content: space-between;
985
+ padding: 0.35rem 0.65rem;
986
+ background: var(--bg-hover);
987
+ border: 1px solid var(--border-color);
988
+ border-radius: var(--radius-sm);
989
+ font-size: 0.78rem;
990
+ }
991
+
992
+ .mcp-auth-item-info {
993
+ display: flex;
994
+ align-items: center;
995
+ gap: 0.5rem;
996
+ }
997
+
998
+ .mcp-auth-item-name {
999
+ color: var(--text-main);
1000
+ font-family: var(--font-mono, monospace);
1001
+ font-size: 0.75rem;
1002
+ }
1003
+
1004
+ .btn-revoke-auth {
1005
+ display: inline-flex;
1006
+ align-items: center;
1007
+ gap: 0.25rem;
1008
+ padding: 0.15rem 0.45rem;
1009
+ font-size: 0.72rem;
1010
+ background: transparent;
1011
+ color: var(--text-muted);
1012
+ border: 1px solid var(--border-color);
1013
+ border-radius: var(--radius-sm);
1014
+ cursor: pointer;
1015
+ transition: all 0.15s ease;
1016
+ }
1017
+
1018
+ .btn-revoke-auth:hover {
1019
+ color: #ef4444;
1020
+ border-color: rgba(239, 68, 68, 0.3);
1021
+ background: rgba(239, 68, 68, 0.08);
1022
+ }
1023
+
1024
+ .mcp-auth-constraint-tag {
1025
+ font-size: 0.65rem;
1026
+ font-family: var(--font-mono, monospace);
1027
+ padding: 0.1rem 0.35rem;
1028
+ background: var(--bg-surface);
1029
+ border: 1px dashed var(--border-color);
1030
+ border-radius: var(--radius-sm);
1031
+ color: var(--text-muted);
1032
+ max-width: 160px;
1033
+ overflow: hidden;
1034
+ text-overflow: ellipsis;
1035
+ white-space: nowrap;
1036
+ }
1037
+
1038
+ .mcp-setup-modal-body {
1039
+ padding: 1.25rem;
1040
+ }
1041
+
1042
+ .mcp-section-hint {
1043
+ margin-top: 0.15rem;
1044
+ }
1045
+
1046
+ .btn-mcp-clear-auths {
1047
+ display: none;
1048
+ }
1049
+
1050
+ .mcp-cmd-row {
1051
+ display: flex;
1052
+ gap: 0.5rem;
1053
+ align-items: center;
1054
+ width: 100%;
1055
+ }
1056
+
1057
+ .mcp-cmd-box-flex {
1058
+ flex: 1;
1059
+ margin: 0;
1060
+ }
1061
+
1062
+ .mcp-modal-footer-end {
1063
+ margin-left: auto;
1064
+ }
1065
+
1066
+ .mcp-servers-card {
1067
+ background: var(--bg-surface-elevated, var(--bg-surface));
1068
+ border: 1px solid var(--border-color);
1069
+ border-radius: var(--radius-md);
1070
+ padding: 0.85rem 1rem;
1071
+ }
1072
+
1073
+ .mcp-servers-header {
1074
+ display: flex;
1075
+ align-items: center;
1076
+ gap: 0.65rem;
1077
+ margin-bottom: 0.75rem;
1078
+ }
1079
+
1080
+ .mcp-external-host-actions {
1081
+ display: flex;
1082
+ align-items: center;
1083
+ gap: 0.6rem;
1084
+ margin-left: auto;
1085
+ white-space: nowrap;
1086
+ }
1087
+
1088
+ .mcp-bootstrap-status {
1089
+ margin: -0.35rem 0 0.75rem;
1090
+ }
1091
+
1092
+ .mcp-servers-icon {
1093
+ color: var(--primary);
1094
+ display: inline-flex;
1095
+ margin-top: 0.15rem;
1096
+ flex-shrink: 0;
1097
+ }
1098
+
1099
+ .mcp-servers-list {
1100
+ display: flex;
1101
+ flex-direction: column;
1102
+ gap: 0.5rem;
1103
+ }
1104
+
1105
+ .mcp-server-item {
1106
+ display: flex;
1107
+ align-items: center;
1108
+ justify-content: space-between;
1109
+ gap: 0.75rem;
1110
+ padding: 0.65rem 0.85rem;
1111
+ background: var(--bg-surface);
1112
+ border: 1px solid var(--border-color);
1113
+ border-radius: var(--radius-sm);
1114
+ }
1115
+
1116
+ .mcp-server-info {
1117
+ display: flex;
1118
+ flex-direction: column;
1119
+ gap: 0.2rem;
1120
+ flex: 1;
1121
+ min-width: 0;
1122
+ }
1123
+
1124
+ .mcp-server-title-row {
1125
+ display: flex;
1126
+ align-items: center;
1127
+ gap: 0.5rem;
1128
+ flex-wrap: wrap;
1129
+ }
1130
+
1131
+ .mcp-server-name {
1132
+ font-weight: 600;
1133
+ font-size: 0.88rem;
1134
+ color: var(--text-main);
1135
+ }
1136
+
1137
+ .mcp-server-badge {
1138
+ font-size: 0.7rem;
1139
+ font-weight: 500;
1140
+ padding: 0.1rem 0.45rem;
1141
+ border-radius: 9999px;
1142
+ line-height: 1.2;
1143
+ }
1144
+
1145
+ .mcp-server-badge.status-running {
1146
+ background: rgba(16, 185, 129, 0.15);
1147
+ color: #10b981;
1148
+ border: 1px solid rgba(16, 185, 129, 0.3);
1149
+ }
1150
+
1151
+ .mcp-server-badge.status-starting,
1152
+ .mcp-server-badge.status-installing {
1153
+ background: rgba(245, 158, 11, 0.15);
1154
+ color: #f59e0b;
1155
+ border: 1px solid rgba(245, 158, 11, 0.3);
1156
+ }
1157
+
1158
+ .mcp-server-badge.status-stopped {
1159
+ background: rgba(100, 116, 139, 0.15);
1160
+ color: var(--text-muted);
1161
+ border: 1px solid rgba(100, 116, 139, 0.3);
1162
+ }
1163
+
1164
+ .mcp-server-badge.status-error,
1165
+ .mcp-server-badge.status-needs_attention {
1166
+ background: rgba(239, 68, 68, 0.15);
1167
+ color: #ef4444;
1168
+ border: 1px solid rgba(239, 68, 68, 0.3);
1169
+ }
1170
+
1171
+ .mcp-server-tool-count {
1172
+ font-size: 0.7rem;
1173
+ color: var(--text-muted);
1174
+ font-family: var(--font-mono, monospace);
1175
+ }
1176
+
1177
+ .mcp-server-desc {
1178
+ font-size: 0.78rem;
1179
+ color: var(--text-muted);
1180
+ margin: 0;
1181
+ }
1182
+
1183
+ .mcp-server-error {
1184
+ font-size: 0.75rem;
1185
+ color: #ef4444;
1186
+ margin: 0.2rem 0 0 0;
1187
+ }
1188
+
1189
+ .mcp-server-actions {
1190
+ flex-shrink: 0;
1191
+ }
1192
+
1193
+ .btn-mcp-server-toggle {
1194
+ font-size: 0.78rem;
1195
+ padding: 0.3rem 0.65rem;
1196
+ border-radius: var(--radius-sm);
1197
+ cursor: pointer;
1198
+ }
1199
+
1200
+ .mcp-server-options {
1201
+ margin-top: 0.5rem;
1202
+ display: flex;
1203
+ flex-direction: column;
1204
+ gap: 0.4rem;
1205
+ }
1206
+
1207
+ .mcp-server-option-row {
1208
+ display: flex;
1209
+ align-items: center;
1210
+ gap: 0.6rem;
1211
+ }
1212
+
1213
+ .mcp-server-option-meta {
1214
+ display: flex;
1215
+ flex-direction: column;
1216
+ gap: 0.1rem;
1217
+ }
1218
+
1219
+ .mcp-server-option-label {
1220
+ font-size: 0.8rem;
1221
+ font-weight: 500;
1222
+ color: var(--text-primary);
1223
+ }