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,555 @@
1
+ /* ==========================================================================
2
+ Selector Segmentado de Tema y Ajustes Específicos para Modo Oscuro
3
+ ========================================================================== */
4
+ .theme-switcher-group,
5
+ .lang-switcher-group {
6
+ display: grid;
7
+ grid-template-columns: 1fr 1fr;
8
+ gap: 0.4rem;
9
+ background-color: var(--bg-app);
10
+ padding: 0.25rem;
11
+ border-radius: var(--radius-md);
12
+ border: 1px solid var(--border-color);
13
+ }
14
+
15
+ .btn-theme-toggle,
16
+ .btn-lang-toggle {
17
+ display: inline-flex;
18
+ align-items: center;
19
+ justify-content: center;
20
+ gap: 0.4rem;
21
+ padding: 0.6rem 0.85rem;
22
+ border-radius: var(--radius-sm);
23
+ border: 1px solid transparent;
24
+ background-color: transparent;
25
+ color: var(--text-muted);
26
+ font-size: 0.875rem;
27
+ font-weight: 500;
28
+ cursor: pointer;
29
+ transition: all 0.15s ease;
30
+ user-select: none;
31
+ }
32
+
33
+ .btn-theme-toggle:hover,
34
+ .btn-lang-toggle:hover {
35
+ color: var(--text-main);
36
+ background-color: rgba(0, 0, 0, 0.04);
37
+ }
38
+
39
+ [data-theme="dark"] .btn-theme-toggle:hover,
40
+ [data-theme="dark"] .btn-lang-toggle:hover {
41
+ background-color: rgba(255, 255, 255, 0.06);
42
+ }
43
+
44
+ .btn-theme-toggle.active,
45
+ .btn-lang-toggle.active {
46
+ background-color: var(--bg-surface);
47
+ color: var(--primary);
48
+ border-color: var(--border-color);
49
+ font-weight: 600;
50
+ box-shadow: var(--shadow-sm);
51
+ }
52
+
53
+ [data-theme="dark"] .btn-theme-toggle.active,
54
+ [data-theme="dark"] .btn-lang-toggle.active {
55
+ background-color: #1e293b;
56
+ color: #60a5fa;
57
+ border-color: #334155;
58
+ }
59
+
60
+ [data-theme="dark"] .chat-input-container {
61
+ background-color: var(--bg-surface);
62
+ border-color: var(--border-color);
63
+ }
64
+
65
+ [data-theme="dark"] .chat-input-container:focus-within {
66
+ border-color: var(--input-border-focus);
67
+ box-shadow: 0 4px 20px -2px rgba(0, 0, 0, 0.5), 0 0 0 2px rgba(var(--primary-rgb), 0.2);
68
+ }
69
+
70
+ [data-theme="dark"] .btn-reasoning {
71
+ border-color: var(--border-color);
72
+ color: var(--text-muted);
73
+ }
74
+
75
+ [data-theme="dark"] .btn-reasoning:hover {
76
+ background-color: #1e293b;
77
+ color: var(--text-main);
78
+ border-color: #475569;
79
+ }
80
+
81
+ [data-theme="dark"] .btn-reasoning.active-on {
82
+ border-color: #6366f1;
83
+ background-color: rgba(99, 102, 241, 0.2);
84
+ color: #a5b4fc;
85
+ }
86
+
87
+ [data-theme="dark"] .btn-reasoning.active-low {
88
+ border-color: #22c55e;
89
+ background-color: rgba(34, 197, 94, 0.2);
90
+ color: #86efac;
91
+ }
92
+
93
+ [data-theme="dark"] .btn-reasoning.active-medium {
94
+ border-color: #22c55e;
95
+ background-color: rgba(34, 197, 94, 0.2);
96
+ color: #86efac;
97
+ }
98
+
99
+ [data-theme="dark"] .btn-reasoning.active-high {
100
+ border-color: #eab308;
101
+ background-color: rgba(234, 179, 8, 0.2);
102
+ color: #fef08a;
103
+ }
104
+
105
+ [data-theme="dark"] .btn-reasoning.active-xhigh {
106
+ border-color: #f43f5e;
107
+ background-color: rgba(244, 63, 94, 0.2);
108
+ color: #fda4af;
109
+ }
110
+
111
+ [data-theme="dark"] .reasoning-menu {
112
+ background-color: var(--bg-surface);
113
+ border-color: var(--border-color);
114
+ }
115
+
116
+ [data-theme="dark"] .reasoning-menu-header {
117
+ background-color: #0b1120;
118
+ border-color: var(--border-color);
119
+ color: var(--text-main);
120
+ }
121
+
122
+ [data-theme="dark"] .reasoning-menu-footer {
123
+ background-color: #0b1120;
124
+ border-color: var(--border-color);
125
+ }
126
+
127
+
128
+
129
+ [data-theme="dark"] .reasoning-option:hover {
130
+ background-color: #1e293b;
131
+ }
132
+
133
+ [data-theme="dark"] .reasoning-option.active {
134
+ background-color: rgba(255, 255, 255, 0.07);
135
+ color: var(--text-main);
136
+ border: none;
137
+ }
138
+
139
+ [data-theme="dark"] .thought-block {
140
+ background-color: rgba(11, 17, 32, 0.6);
141
+ border-color: var(--border-color);
142
+ }
143
+
144
+ [data-theme="dark"] .thought-summary {
145
+ background-color: #182238;
146
+ color: var(--text-muted);
147
+ }
148
+
149
+ [data-theme="dark"] .thought-summary:hover {
150
+ background-color: #1e2d4a;
151
+ color: var(--text-main);
152
+ }
153
+
154
+ [data-theme="dark"] .thought-content {
155
+ border-color: var(--border-color);
156
+ color: #cbd5e1;
157
+ }
158
+
159
+ [data-theme="dark"] .file-chip {
160
+ background-color: var(--bg-surface);
161
+ border-color: var(--border-color);
162
+ color: var(--text-main);
163
+ }
164
+
165
+
166
+ [data-theme="dark"] .btn-secondary {
167
+ background-color: #182238;
168
+ border-color: var(--border-color);
169
+ color: var(--text-muted);
170
+ }
171
+
172
+ [data-theme="dark"] .btn-secondary:hover {
173
+ background-color: #1e2d4a;
174
+ color: var(--text-main);
175
+ border-color: #475569;
176
+ }
177
+
178
+ [data-theme="dark"] .cookie-notice {
179
+ background-color: rgba(30, 58, 138, 0.25);
180
+ border-color: #1e40af;
181
+ color: #93c5fd;
182
+ }
183
+
184
+ [data-theme="dark"] .btn-close:hover {
185
+ background-color: #1e293b;
186
+ color: var(--text-main);
187
+ }
188
+
189
+ [data-theme="dark"] .label-hint code {
190
+ background-color: #0b1120;
191
+ color: #93c5fd;
192
+ }
193
+
194
+ [data-theme="dark"] .tool-execution-card {
195
+ border-color: #4f46e5;
196
+ background-color: #0f172a;
197
+ }
198
+
199
+ [data-theme="dark"] .tool-card-result {
200
+ background-color: #090d16;
201
+ border-top-color: var(--border-color);
202
+ color: #e2e8f0;
203
+ }
204
+
205
+ [data-theme="dark"] .tool-result-label {
206
+ color: #94a3b8;
207
+ }
208
+
209
+ /* Estadísticas de respuesta en Modo Oscuro — usando tokens semánticos */
210
+ [data-theme="dark"] .message-stats {
211
+ background-color: var(--bg-surface-elevated);
212
+ color: var(--text-secondary);
213
+ border-color: var(--border-color);
214
+ }
215
+
216
+
217
+ /* Modo Oscuro: Tarjeta de consulta web */
218
+ [data-theme="dark"] .web-request-card {
219
+ border-color: #0369a1;
220
+ background-color: #082f49;
221
+ }
222
+
223
+ [data-theme="dark"] .web-card-section.web-request-section {
224
+ background-color: #0c1829;
225
+ border-top-color: #1e3a5f;
226
+ }
227
+
228
+ [data-theme="dark"] .web-card-section.web-response-section {
229
+ background-color: #091322;
230
+ border-top-color: #1e3a5f;
231
+ }
232
+
233
+ [data-theme="dark"] .url-badge {
234
+ color: #38bdf8;
235
+ }
236
+
237
+ [data-theme="dark"] .url-badge a {
238
+ color: #38bdf8;
239
+ }
240
+
241
+ [data-theme="dark"] .web-response-body {
242
+ background-color: #030712;
243
+ color: #f1f5f9;
244
+ }
245
+
246
+ /* Modo Oscuro: Tarjeta de búsqueda web */
247
+ [data-theme="dark"] .web-search-card {
248
+ border-color: #0f766e;
249
+ background-color: #042f2e;
250
+ }
251
+
252
+ [data-theme="dark"] .search-card-header {
253
+ background: linear-gradient(135deg, #0f766e, #115e59);
254
+ }
255
+
256
+ [data-theme="dark"] .search-query-section,
257
+ [data-theme="dark"] .search-results-section {
258
+ background-color: #071f1e;
259
+ border-top-color: #115e59;
260
+ }
261
+
262
+ [data-theme="dark"] .web-search-card .query-badge {
263
+ color: #2dd4bf;
264
+ }
265
+
266
+ [data-theme="dark"] .search-result-item {
267
+ background-color: #0d2827;
268
+ border-color: #134e4a;
269
+ }
270
+
271
+ [data-theme="dark"] .search-result-item a {
272
+ color: #2dd4bf;
273
+ }
274
+
275
+ [data-theme="dark"] .search-result-snippet {
276
+ color: #99f6e4;
277
+ }
278
+
279
+ [data-theme="dark"] .setting-toggle-card {
280
+ background-color: #0c1829;
281
+ border-color: var(--border-color);
282
+ }
283
+
284
+ [data-theme="dark"] .setting-toggle-card:hover {
285
+ border-color: #334155;
286
+ }
287
+
288
+ [data-theme="dark"] .toggle-card-desc code {
289
+ background-color: #1e293b;
290
+ color: #93c5fd;
291
+ }
292
+
293
+ [data-theme="dark"] .slider {
294
+ background-color: #334155;
295
+ }
296
+
297
+ [data-theme="dark"] input:checked + .slider {
298
+ background-color: #3b82f6;
299
+ }
300
+
301
+ /* Modo Oscuro: Botón Query del Servidor y Estado */
302
+ [data-theme="dark"] .btn-query-server {
303
+ background-color: rgba(59, 130, 246, 0.15);
304
+ color: #60a5fa;
305
+ border-color: rgba(59, 130, 246, 0.3);
306
+ }
307
+
308
+ [data-theme="dark"] .btn-query-server:hover {
309
+ background-color: #2563eb;
310
+ color: #ffffff;
311
+ border-color: #3b82f6;
312
+ }
313
+
314
+ [data-theme="dark"] .server-query-status.status-loading {
315
+ background-color: #0c1f38;
316
+ border-color: #0369a1;
317
+ color: #38bdf8;
318
+ }
319
+
320
+ [data-theme="dark"] .server-query-status.status-success {
321
+ background-color: #06281e;
322
+ border-color: #059669;
323
+ color: #34d399;
324
+ }
325
+
326
+ [data-theme="dark"] .server-query-status.status-error {
327
+ background-color: #311317;
328
+ border-color: #b91c1c;
329
+ color: #f87171;
330
+ }
331
+
332
+ /* Modo Oscuro: Flecha SVG para Selects y Combos */
333
+ [data-theme="dark"] .combobox-select-helper,
334
+ [data-theme="dark"] select.form-input,
335
+ [data-theme="dark"] .form-field select {
336
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
337
+ }
338
+
339
+ /* Modo Oscuro: Menú de Razonamiento */
340
+ [data-theme="dark"] .reasoning-model-badge {
341
+ background: rgba(59, 130, 246, 0.2);
342
+ color: #93c5fd;
343
+ }
344
+
345
+ [data-theme="dark"] .reasoning-option.recommended::after {
346
+ background-color: rgba(52, 211, 153, 0.2);
347
+ color: #34d399;
348
+ }
349
+
350
+ /* ========================================================================== */
351
+ /* Correcciones de Contraste para Modo Oscuro */
352
+ /* ========================================================================== */
353
+
354
+ /* 1. Botón de toggle de visibilidad en campo API Key (ALTA PRIORIDAD) */
355
+ [data-theme="dark"] .btn-toggle-visibility {
356
+ color: var(--text-secondary);
357
+ }
358
+
359
+ [data-theme="dark"] .btn-toggle-visibility:hover {
360
+ color: var(--text-main);
361
+ background-color: rgba(255, 255, 255, 0.08);
362
+ }
363
+
364
+ /* 2. Iconos en botones de la Sidebar (MEDIA PRIORIDAD) */
365
+ [data-theme="dark"] .btn-sidebar-icon,
366
+ [data-theme="dark"] .btn-sidebar-close {
367
+ color: var(--text-secondary);
368
+ }
369
+
370
+ [data-theme="dark"] .btn-sidebar-icon:hover,
371
+ [data-theme="dark"] .btn-sidebar-close:hover {
372
+ color: var(--text-main);
373
+ }
374
+
375
+ /* 3. Iconos en botones del Header (VERIFICACIÓN) */
376
+ [data-theme="dark"] .btn-header-icon {
377
+ color: var(--text-secondary);
378
+ }
379
+
380
+ [data-theme="dark"] .btn-header-icon:hover {
381
+ color: var(--text-main);
382
+ }
383
+
384
+ /* 4. Icono de búsqueda en Sidebar (MEDIA PRIORIDAD) */
385
+ [data-theme="dark"] .sidebar-search-icon {
386
+ color: var(--text-secondary);
387
+ }
388
+
389
+ /* 5. Botones del compositor - chips (VERIFICACIÓN) */
390
+ [data-theme="dark"] .btn-composer-chip {
391
+ color: var(--text-secondary);
392
+ }
393
+
394
+ [data-theme="dark"] .btn-composer-chip:hover {
395
+ color: var(--text-main);
396
+ }
397
+
398
+ [data-theme="dark"] .btn-composer-icon-btn {
399
+ color: var(--text-secondary);
400
+ }
401
+
402
+ [data-theme="dark"] .btn-composer-icon-btn:hover {
403
+ color: var(--text-main);
404
+ }
405
+
406
+ /* 6. Botón de adjuntar archivos */
407
+ [data-theme="dark"] .btn-attach {
408
+ color: var(--text-secondary);
409
+ }
410
+
411
+ [data-theme="dark"] .btn-attach:hover {
412
+ color: var(--text-main);
413
+ }
414
+
415
+ /* 7. Mejora de contraste para elementos críticos con text-muted */
416
+ [data-theme="dark"] .file-chip-size {
417
+ color: var(--text-secondary);
418
+ }
419
+
420
+ [data-theme="dark"] .file-chip-remove {
421
+ color: var(--text-secondary);
422
+ }
423
+
424
+ [data-theme="dark"] .file-chip-remove:hover {
425
+ background-color: var(--danger);
426
+ color: white;
427
+ }
428
+
429
+ /* 8. Botones de acciones en mensajes (copiar, regenerar, eliminar) */
430
+ [data-theme="dark"] .btn-msg-action {
431
+ color: var(--text-secondary);
432
+ }
433
+
434
+ [data-theme="dark"] .btn-msg-action:hover {
435
+ color: var(--text-main);
436
+ }
437
+
438
+ /* 9. Mejora de contraste en thought-summary */
439
+ [data-theme="dark"] .thought-summary {
440
+ color: var(--text-secondary);
441
+ }
442
+
443
+ /* 10. Botones de profile header */
444
+ [data-theme="dark"] .btn-profile-header-icon {
445
+ color: var(--text-secondary);
446
+ }
447
+
448
+ [data-theme="dark"] .btn-profile-header-icon:hover {
449
+ color: var(--text-main);
450
+ }
451
+
452
+ /* 11. Botones del contexto hub y telemetría */
453
+ [data-theme="dark"] .btn-close-popover {
454
+ color: var(--text-secondary);
455
+ }
456
+
457
+ [data-theme="dark"] .btn-close-popover:hover {
458
+ color: var(--text-main);
459
+ }
460
+
461
+ /* 12. Iconos en settings items */
462
+ [data-theme="dark"] .settings-item-icon {
463
+ color: var(--text-secondary);
464
+ }
465
+
466
+ /* 13. Chevron icons en settings */
467
+ [data-theme="dark"] .settings-item-chevron {
468
+ color: var(--text-muted);
469
+ }
470
+
471
+ /* 14. Mejora del botón de cerrar reasoning menu */
472
+ [data-theme="dark"] .btn-reasoning-close {
473
+ color: var(--text-secondary);
474
+ }
475
+
476
+ [data-theme="dark"] .btn-reasoning-close:hover {
477
+ color: var(--text-main);
478
+ background-color: rgba(255, 255, 255, 0.08);
479
+ }
480
+
481
+ /* 15. Botón de envío del compositor */
482
+ [data-theme="dark"] .btn-send {
483
+ color: var(--text-secondary);
484
+ }
485
+
486
+ [data-theme="dark"] .btn-send:hover {
487
+ color: var(--text-main);
488
+ }
489
+
490
+ /* 16. Mejora general para iconos en inputs y campos de formulario */
491
+ [data-theme="dark"] .form-field .ui-icon {
492
+ color: var(--text-secondary);
493
+ }
494
+
495
+ /* 17. Botones del panel de debug */
496
+ [data-theme="dark"] .btn-debug-toggle {
497
+ color: var(--text-secondary);
498
+ }
499
+
500
+ [data-theme="dark"] .btn-debug-action {
501
+ color: var(--text-secondary);
502
+ }
503
+
504
+ [data-theme="dark"] .btn-debug-action:hover {
505
+ color: var(--text-main);
506
+ }
507
+
508
+ /* 18. Status indicator en debug con mejor contraste */
509
+ [data-theme="dark"] .debug-status-indicator.idle {
510
+ color: var(--text-secondary);
511
+ }
512
+
513
+ /* 19. Botones de cierre genéricos */
514
+ [data-theme="dark"] .btn-close-panel {
515
+ color: var(--text-secondary);
516
+ }
517
+
518
+ [data-theme="dark"] .btn-close-panel:hover {
519
+ color: var(--text-main);
520
+ }
521
+
522
+ /* 20. Mejora de labels y hints en formularios */
523
+ [data-theme="dark"] .label-hint {
524
+ color: var(--text-secondary);
525
+ }
526
+
527
+ /* 21. Placeholder en inputs para mejor legibilidad */
528
+ [data-theme="dark"] input::placeholder,
529
+ [data-theme="dark"] textarea::placeholder {
530
+ color: var(--text-muted);
531
+ opacity: 0.7;
532
+ }
533
+
534
+ /* 22. Enlaces en hints y ayuda */
535
+ [data-theme="dark"] .label-hint a {
536
+ color: var(--primary);
537
+ }
538
+
539
+ [data-theme="dark"] .label-hint a:hover {
540
+ color: var(--primary-hover);
541
+ }
542
+
543
+ /* 23. Mejora del icono en generation status */
544
+ [data-theme="dark"] .generation-status-icon {
545
+ color: var(--text-secondary);
546
+ }
547
+
548
+ /* 24. Botones de la welcome screen */
549
+ [data-theme="dark"] .welcome-help-link {
550
+ color: var(--text-secondary);
551
+ }
552
+
553
+ [data-theme="dark"] .welcome-help-link:hover {
554
+ color: var(--primary);
555
+ }
@@ -0,0 +1,165 @@
1
+ /* ==========================================================================
2
+ ZeroChat Design Tokens - Variables Semánticas y Paleta de Diseño
3
+ ========================================================================== */
4
+ :root {
5
+ /* Paleta Base y Acentos */
6
+ --primary: #2563eb;
7
+ --primary-color: #2563eb;
8
+ --primary-hover: #1d4ed8;
9
+ --primary-light: #eff6ff;
10
+ --primary-rgb: 37, 99, 235;
11
+
12
+ /* Fondos y Superficies (Modo Claro) */
13
+ --bg-app: #f8fafc;
14
+ --bg-surface: #ffffff;
15
+ --bg-surface-elevated: #ffffff;
16
+ --bg-surface-subtle: #f1f5f9;
17
+ --bg-assistant-bubble: #ffffff;
18
+ --bg-user-bubble: #2563eb;
19
+ --bg-hover: #f1f5f9;
20
+ --bg-main: #f8fafc;
21
+
22
+ /* Tipografía y Textos */
23
+ --text-main: #0f172a;
24
+ --text-secondary: #475569;
25
+ --text-muted: #64748b;
26
+ --text-user: #ffffff;
27
+
28
+ /* Bordes y Separadores */
29
+ --border-color: #e2e8f0;
30
+ --border-subtle: #edf2f7;
31
+ --border-focus: #2563eb;
32
+ --border-hover: #cbd5e1;
33
+
34
+ /* Controles de Formulario (Inputs y Combos) */
35
+ --input-bg: var(--bg-surface);
36
+ --input-bg-subtle: var(--bg-surface-subtle);
37
+ --input-border: var(--border-color);
38
+ --input-border-hover: var(--border-hover);
39
+ --input-border-focus: var(--border-focus);
40
+ --input-focus-ring: 0 0 0 3px rgba(var(--primary-rgb), 0.16);
41
+
42
+ /* Estados de Notificación / Acción */
43
+ --danger: #ef4444;
44
+ --danger-hover: #dc2626;
45
+ --danger-light: #fef2f2;
46
+ --danger-subtle: rgba(239, 68, 68, 0.12);
47
+ --success: #10b981;
48
+ --success-light: #f0fdf4;
49
+ --warning: #f59e0b;
50
+ --warning-light: #fffbeb;
51
+
52
+ /* Transiciones */
53
+ --transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1);
54
+ --transition-base: 200ms cubic-bezier(0.4, 0, 0.2, 1);
55
+
56
+ /* Scrollbars */
57
+ --scrollbar-thumb: rgba(148, 163, 184, 0.4);
58
+ --scrollbar-thumb-hover: rgba(148, 163, 184, 0.7);
59
+
60
+ /* Código y Sintaxis */
61
+ --code-bg: #f1f5f9;
62
+ --code-text: #0f172a;
63
+
64
+ /* Sombras y Elevación */
65
+ --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.04);
66
+ --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.08);
67
+ --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.08), 0 2px 4px -2px rgb(0 0 0 / 0.06);
68
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.08), 0 4px 6px -4px rgb(0 0 0 / 0.05);
69
+ --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
70
+ --shadow-composer: 0 4px 20px -2px rgba(0, 0, 0, 0.07), 0 2px 6px -1px rgba(0, 0, 0, 0.04);
71
+
72
+ /* Radios de Curvatura */
73
+ --radius-xs: 4px;
74
+ --radius-sm: 6px;
75
+ --radius-md: 8px;
76
+ --radius-lg: 12px;
77
+ --radius-xl: 16px;
78
+ --radius-2xl: 24px;
79
+ --radius-full: 9999px;
80
+
81
+ /* Tipografía Modular */
82
+ --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
83
+ --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
84
+
85
+ /* Capas Z-Index */
86
+ --z-base: 1;
87
+ --z-header: 100;
88
+ --z-sidebar: 110;
89
+ --z-modal-backdrop: 200;
90
+ --z-modal: 210;
91
+ --z-toast: 300;
92
+
93
+ /* Viewport y Layout */
94
+ --header-height: 3.5rem;
95
+ --max-content-width: 68rem;
96
+ --app-height: 100dvh;
97
+
98
+ /* Tokens para glassmorphism (rgba sobre variables) */
99
+ --bg-surface-rgb: 255, 255, 255;
100
+ --header-bg-alpha: 0.82;
101
+ }
102
+
103
+ /* ==========================================================================
104
+ Modo Oscuro (Dark Theme Tokens)
105
+ ========================================================================== */
106
+ [data-theme="dark"] {
107
+ --primary: #3b82f6;
108
+ --primary-color: #3b82f6;
109
+ --primary-hover: #60a5fa;
110
+ --primary-light: rgba(59, 130, 246, 0.18);
111
+ --primary-rgb: 59, 130, 246;
112
+
113
+ --bg-app: #090d16;
114
+ --bg-surface: #131b2e;
115
+ --bg-surface-elevated: #1a243b;
116
+ --bg-surface-subtle: #182238;
117
+ --bg-assistant-bubble: #182238;
118
+ --bg-user-bubble: #2563eb;
119
+ --bg-hover: #1e293b;
120
+ --bg-main: #090d16;
121
+
122
+ --text-user: #ffffff;
123
+ --text-main: #f1f5f9;
124
+ --text-secondary: #cbd5e1;
125
+ --text-muted: #94a3b8;
126
+
127
+ --border-color: #27354f;
128
+ --border-subtle: #1e293b;
129
+ --border-focus: #60a5fa;
130
+ --border-hover: #3b4d6b;
131
+
132
+ /* Controles de Formulario Modo Oscuro */
133
+ --input-bg: #0b1120;
134
+ --input-bg-subtle: #182238;
135
+ --input-border: var(--border-color);
136
+ --input-border-hover: var(--border-hover);
137
+ --input-border-focus: var(--border-focus);
138
+ --input-focus-ring: 0 0 0 3px rgba(var(--primary-rgb), 0.25);
139
+
140
+ --danger: #f87171;
141
+ --danger-hover: #ef4444;
142
+ --danger-light: rgba(248, 113, 113, 0.15);
143
+ --danger-subtle: rgba(248, 113, 113, 0.18);
144
+ --success: #34d399;
145
+ --success-light: rgba(52, 211, 153, 0.15);
146
+ --warning: #fbbf24;
147
+ --warning-light: rgba(251, 191, 36, 0.15);
148
+
149
+ --scrollbar-thumb: rgba(100, 116, 139, 0.4);
150
+ --scrollbar-thumb-hover: rgba(100, 116, 139, 0.7);
151
+
152
+ --code-bg: #0b1120;
153
+ --code-text: #f8fafc;
154
+
155
+ --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.25);
156
+ --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.35);
157
+ --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.45), 0 2px 4px -2px rgb(0 0 0 / 0.45);
158
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.55), 0 4px 6px -4px rgb(0 0 0 / 0.55);
159
+ --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.65), 0 8px 10px -6px rgb(0 0 0 / 0.55);
160
+ --shadow-composer: 0 4px 20px -2px rgba(0, 0, 0, 0.45), 0 2px 6px -1px rgba(0, 0, 0, 0.35);
161
+
162
+ /* Tokens para glassmorphism modo oscuro */
163
+ --bg-surface-rgb: 19, 27, 46; /* #131b2e descompuesto */
164
+ --header-bg-alpha: 0.85;
165
+ }