@pheem49/mint 1.6.3 → 1.7.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.
Files changed (63) hide show
  1. package/Cargo.lock +3 -3
  2. package/Cargo.toml +1 -1
  3. package/README.md +82 -21
  4. package/assets/Mint_CLI.png +0 -0
  5. package/assets/Mint_Desktop.png +0 -0
  6. package/assets/Mint_Web.png +0 -0
  7. package/assets/Mint_WorkSpace.png +0 -0
  8. package/assets/Setting.png +0 -0
  9. package/assets/bridges.svg +4 -0
  10. package/assets/chat.svg +3 -0
  11. package/assets/code.svg +4 -0
  12. package/assets/features.svg +3 -0
  13. package/assets/imagegen.svg +5 -0
  14. package/assets/live2d.svg +6 -0
  15. package/assets/memory.svg +5 -0
  16. package/assets/screencapture.svg +4 -0
  17. package/assets/setup.svg +3 -0
  18. package/assets/tools.svg +4 -0
  19. package/bin/mint +0 -0
  20. package/crates/mint-cli/src/agent.rs +47 -15
  21. package/crates/mint-cli/src/main.rs +534 -7
  22. package/crates/mint-cli/src/onboard.rs +134 -1
  23. package/crates/mint-cli/src/setup.rs +173 -32
  24. package/crates/mint-core/src/api_server.rs +147 -3
  25. package/crates/mint-core/src/config.rs +22 -3
  26. package/crates/mint-core/src/image_gen.rs +895 -0
  27. package/crates/mint-core/src/lib.rs +4 -0
  28. package/crates/mint-core/src/memory.rs +27 -1
  29. package/crates/mint-core/src/orchestration.rs +1 -1
  30. package/crates/mint-core/src/plugins.rs +32 -0
  31. package/crates/mint-core/tests/memory_persistence.rs +28 -0
  32. package/package.json +1 -1
  33. package/src/bin/index.js +0 -0
  34. package/src/renderer/src/agentProgress.ts +39 -0
  35. package/src/renderer/src/components/ChatPanel.tsx +547 -47
  36. package/src/renderer/src/components/DashboardSidebar.tsx +12 -4
  37. package/src/renderer/src/components/ImageStudioPanel.tsx +638 -0
  38. package/src/renderer/src/components/MintDashboard.tsx +84 -31
  39. package/src/renderer/src/components/ModelPanel.tsx +2 -2
  40. package/src/renderer/src/components/PicturesLibrary.tsx +5 -1
  41. package/src/renderer/src/components/SettingsWindow.tsx +29 -20
  42. package/src/renderer/src/components/SpotlightWindow.tsx +8 -8
  43. package/src/renderer/src/components/WorkspacePanel.tsx +1 -1
  44. package/src/renderer/src/css/image-studio.css +722 -0
  45. package/src/renderer/src/css/settings.css +13 -3
  46. package/src/renderer/src/css/styles.css +245 -43
  47. package/src/renderer/src/index.css +152 -0
  48. package/src/renderer/src/tauri.ts +148 -0
  49. package/src/renderer/src-web/App.tsx +16 -1
  50. package/src/renderer/src-web/agentProgress.ts +39 -0
  51. package/src/renderer/src-web/components/ChatPanel.tsx +568 -46
  52. package/src/renderer/src-web/components/DashboardSidebar.tsx +10 -2
  53. package/src/renderer/src-web/components/ImageStudioPanel.tsx +638 -0
  54. package/src/renderer/src-web/components/MintDashboard.tsx +65 -19
  55. package/src/renderer/src-web/components/PicturesLibrary.tsx +5 -1
  56. package/src/renderer/src-web/components/SettingsWindow.tsx +29 -20
  57. package/src/renderer/src-web/css/image-studio.css +722 -0
  58. package/src/renderer/src-web/css/settings.css +14 -4
  59. package/src/renderer/src-web/css/styles.css +292 -44
  60. package/src/renderer/src-web/index.css +152 -0
  61. package/src/renderer/src-web/tauri.ts +149 -0
  62. package/src-tauri/src/lib.rs +65 -5
  63. package/src-tauri/tauri.conf.json +1 -1
@@ -269,7 +269,7 @@ h1 {
269
269
  flex-direction: column;
270
270
  gap: 18px;
271
271
  width: 100%;
272
- max-width: 624px;
272
+ max-width: 1000px;
273
273
  margin: 0 auto;
274
274
  animation: fadeTab 0.18s ease;
275
275
  }
@@ -341,7 +341,7 @@ h1 {
341
341
 
342
342
  .form-grid.single {
343
343
  grid-template-columns: minmax(0, 1fr);
344
- max-width: 540px;
344
+ max-width: 100%;
345
345
  }
346
346
 
347
347
  .setting-row {
@@ -595,7 +595,7 @@ input:checked + .toggle-slider::before {
595
595
  .slider-stack {
596
596
  display: grid;
597
597
  gap: 16px;
598
- max-width: 660px;
598
+ max-width: 100%;
599
599
  }
600
600
 
601
601
  .slider-group {
@@ -1055,3 +1055,13 @@ kbd {
1055
1055
  grid-template-columns: minmax(0, 1fr);
1056
1056
  }
1057
1057
  }
1058
+
1059
+ .memory-field-container {
1060
+ display: flex;
1061
+ flex-direction: column;
1062
+ gap: 8px;
1063
+ width: 100%;
1064
+ align-items: flex-start;
1065
+ }
1066
+
1067
+
@@ -18,6 +18,16 @@
18
18
  --border-light: rgba(255, 255, 255, 0.11);
19
19
  --shadow: none;
20
20
  --glass-blur: none;
21
+ --status-listening: #7dd3fc;
22
+ --status-thinking: var(--accent);
23
+ --status-speaking: #22c55e;
24
+ --status-error: #ef4444;
25
+ --hover-delete: #fca5a5;
26
+ --hover-delete-bg: rgba(248, 113, 113, 0.12);
27
+ --hover-edit: #c7d2fe;
28
+ --hover-edit-bg: rgba(99, 102, 241, 0.12);
29
+ --close-btn-hover-bg: #3a2020;
30
+ --close-btn-hover-color: #ff8a8a;
21
31
  }
22
32
 
23
33
  [data-theme="light"] {
@@ -37,6 +47,16 @@
37
47
  --border: rgba(0, 0, 0, 0.06);
38
48
  --border-light: rgba(255, 255, 255, 0.6);
39
49
  --shadow: 0 8px 32px rgba(0, 0, 0, 0.08);
50
+ --status-listening: #0284c7;
51
+ --status-thinking: var(--accent);
52
+ --status-speaking: #16a34a;
53
+ --status-error: #dc2626;
54
+ --hover-delete: #dc2626;
55
+ --hover-delete-bg: rgba(220, 38, 38, 0.08);
56
+ --hover-edit: #4f46e5;
57
+ --hover-edit-bg: rgba(79, 70, 229, 0.08);
58
+ --close-btn-hover-bg: #fee2e2;
59
+ --close-btn-hover-color: #dc2626;
40
60
  }
41
61
 
42
62
  [data-theme="midnight"] {
@@ -56,6 +76,16 @@
56
76
  --border: rgba(99, 102, 241, 0.16);
57
77
  --border-light: rgba(99, 102, 241, 0.26);
58
78
  --shadow: none;
79
+ --status-listening: #7dd3fc;
80
+ --status-thinking: var(--accent);
81
+ --status-speaking: #22c55e;
82
+ --status-error: #fca5a5;
83
+ --hover-delete: #fca5a5;
84
+ --hover-delete-bg: rgba(248, 113, 113, 0.12);
85
+ --hover-edit: #c7d2fe;
86
+ --hover-edit-bg: rgba(99, 102, 241, 0.12);
87
+ --close-btn-hover-bg: #3a2020;
88
+ --close-btn-hover-color: #ff8a8a;
59
89
  }
60
90
 
61
91
  * {
@@ -107,7 +137,6 @@ body {
107
137
 
108
138
  /* Header - Drag Region */
109
139
  .drag-region {
110
- app-region: no-drag;
111
140
  -webkit-app-region: no-drag;
112
141
  min-height: 34px;
113
142
  padding: 0 8px;
@@ -124,7 +153,6 @@ body {
124
153
  }
125
154
 
126
155
  .header-content {
127
- app-region: drag;
128
156
  -webkit-app-region: drag;
129
157
  display: flex;
130
158
  align-items: center;
@@ -134,7 +162,6 @@ body {
134
162
  }
135
163
 
136
164
  .titlebar-drag-space {
137
- app-region: drag;
138
165
  -webkit-app-region: drag;
139
166
  align-self: stretch;
140
167
  min-width: 0;
@@ -165,7 +192,6 @@ h1 {
165
192
  .header-actions,
166
193
  .header-utility,
167
194
  .window-controls {
168
- app-region: no-drag;
169
195
  -webkit-app-region: no-drag;
170
196
  display: flex;
171
197
  align-items: center;
@@ -197,7 +223,6 @@ h1 {
197
223
  .clear-btn,
198
224
  .settings-btn {
199
225
  -webkit-app-region: no-drag;
200
- app-region: no-drag;
201
226
  min-width: 0;
202
227
  height: 28px;
203
228
  border: 1px solid transparent;
@@ -231,7 +256,6 @@ h1 {
231
256
  .maximize-btn,
232
257
  .minimize-btn {
233
258
  -webkit-app-region: no-drag;
234
- app-region: no-drag;
235
259
  background: transparent;
236
260
  border: none;
237
261
  color: var(--text-muted);
@@ -373,6 +397,30 @@ h1 {
373
397
  opacity: 1;
374
398
  }
375
399
 
400
+ /* pictures header actions */
401
+
402
+ .picture-refresh-btn {
403
+ -webkit-app-region: no-drag;
404
+ height: 28px;
405
+ min-width: 0;
406
+ padding: 0 8px;
407
+ display: inline-flex;
408
+ align-items: center;
409
+ justify-content: center;
410
+ gap: 8px;
411
+ border-radius: 6px;
412
+ background: transparent;
413
+ color: var(--text-muted);
414
+ border: 1px solid transparent;
415
+ cursor: pointer;
416
+ }
417
+
418
+ .picture-refresh-btn:hover {
419
+ background: color-mix(in srgb, var(--accent) 10%, transparent);
420
+ border-color: color-mix(in srgb, var(--accent) 16%, transparent);
421
+ color: var(--accent);
422
+ }
423
+
376
424
  .interaction-guide-btn:hover {
377
425
  background: rgba(34, 211, 238, 0.14);
378
426
  border-color: rgba(34, 211, 238, 0.2);
@@ -805,8 +853,9 @@ h1 {
805
853
  }
806
854
 
807
855
  .conversation-panel {
808
- flex: 0 1 460px;
809
- min-width: 400px;
856
+ /* Make conversation panel wider by default */
857
+ flex: 0 1 720px;
858
+ min-width: 600px;
810
859
  display: flex;
811
860
  flex-direction: column;
812
861
  min-height: 0;
@@ -853,7 +902,7 @@ h1 {
853
902
 
854
903
  .message {
855
904
  display: flex;
856
- max-width: 85%;
905
+ max-width: 95%;
857
906
  animation: messagePopIn 0.5s cubic-bezier(0.2, 0.9, 0.3, 1.2) forwards;
858
907
  opacity: 0;
859
908
  transform: translateY(15px) scale(0.95);
@@ -1042,24 +1091,26 @@ h1 {
1042
1091
  }
1043
1092
 
1044
1093
  .ai-message .message-bubble {
1045
- background: var(--panel-bg);
1046
- backdrop-filter: var(--glass-blur);
1047
- -webkit-backdrop-filter: var(--glass-blur);
1048
- border: 1px solid var(--border);
1049
- border-top: 1px solid var(--border-light);
1050
- border-left: 1px solid var(--border-light);
1051
- border-bottom-left-radius: 4px;
1052
- box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1);
1094
+ /* Render AI replies without a framed bubble — plain inline text */
1095
+ background: transparent;
1096
+ backdrop-filter: none;
1097
+ -webkit-backdrop-filter: none;
1098
+ border: none;
1099
+ border-radius: 0;
1100
+ box-shadow: none;
1053
1101
  color: var(--text-main);
1102
+ padding: 0; /* keep spacing handled by wrapper */
1054
1103
  }
1055
1104
 
1056
1105
  .message.ai-message.thinking-message .message-bubble {
1057
- background: color-mix(in srgb, var(--panel-bg) 75%, #000000) !important;
1058
- border-color: color-mix(in srgb, var(--accent) 30%, var(--border-light)) !important;
1059
- box-shadow: 0 4px 15px rgba(0, 0, 0, 0.25) !important;
1106
+ /* Keep thinking state unframed too */
1107
+ background: transparent !important;
1108
+ border: none !important;
1109
+ box-shadow: none !important;
1060
1110
  color: var(--text-muted) !important;
1061
1111
  backdrop-filter: none !important;
1062
1112
  -webkit-backdrop-filter: none !important;
1113
+ padding: 0 !important;
1063
1114
  }
1064
1115
 
1065
1116
 
@@ -1270,8 +1321,8 @@ h1 {
1270
1321
  .approval-card {
1271
1322
  align-items: stretch;
1272
1323
  flex-direction: column;
1273
- background: rgba(245, 158, 11, 0.12);
1274
- border-color: rgba(245, 158, 11, 0.38);
1324
+ background: transparent;
1325
+ border-color: transparent;
1275
1326
  }
1276
1327
 
1277
1328
  .approval-card[data-tier="dangerous"] {
@@ -1678,6 +1729,146 @@ h1 {
1678
1729
  line-height: 1;
1679
1730
  }
1680
1731
 
1732
+ /* ── Thinking Block ─────────────────────────────────────── */
1733
+ .thinking-block {
1734
+ margin-bottom: 6px;
1735
+ border-radius: 8px;
1736
+ border: 1px solid rgba(148, 163, 184, 0.18);
1737
+ background: rgba(148, 163, 184, 0.04);
1738
+ overflow: hidden;
1739
+ animation: agent-activity-slide-up-fade 0.25s cubic-bezier(0.16, 1, 0.3, 1) forwards;
1740
+ }
1741
+
1742
+ .thinking-block-header {
1743
+ display: flex;
1744
+ align-items: center;
1745
+ gap: 7px;
1746
+ width: 100%;
1747
+ padding: 6px 10px;
1748
+ background: transparent;
1749
+ border: 0;
1750
+ color: #94a3b8;
1751
+ font-size: 0.76rem;
1752
+ font-weight: 500;
1753
+ cursor: pointer;
1754
+ text-align: left;
1755
+ transition: background 0.15s ease, color 0.15s ease;
1756
+ user-select: none;
1757
+ }
1758
+
1759
+ .thinking-block-header:hover {
1760
+ background: rgba(148, 163, 184, 0.08);
1761
+ color: #cbd5e1;
1762
+ }
1763
+
1764
+ .thinking-block-label {
1765
+ flex: 1;
1766
+ min-width: 0;
1767
+ }
1768
+
1769
+ .thinking-block-live-dot {
1770
+ width: 6px;
1771
+ height: 6px;
1772
+ border-radius: 50%;
1773
+ background: #94a3b8;
1774
+ flex-shrink: 0;
1775
+ animation: thinkingDotPulse 1.4s ease-in-out infinite;
1776
+ }
1777
+
1778
+ @keyframes thinkingDotPulse {
1779
+ 0%, 100% {
1780
+ opacity: 0.4;
1781
+ transform: scale(0.85);
1782
+ }
1783
+ 50% {
1784
+ opacity: 1;
1785
+ transform: scale(1.1);
1786
+ }
1787
+ }
1788
+
1789
+ .thinking-block-chevron {
1790
+ color: rgba(148, 163, 184, 0.6);
1791
+ flex-shrink: 0;
1792
+ display: inline-flex;
1793
+ align-items: center;
1794
+ transition: transform 0.2s ease;
1795
+ }
1796
+
1797
+ .thinking-block-chevron.is-open {
1798
+ transform: rotate(90deg);
1799
+ }
1800
+
1801
+ .thinking-block-body {
1802
+ border-top: 1px solid rgba(148, 163, 184, 0.12);
1803
+ animation: thinkingBodyIn 0.18s ease;
1804
+ }
1805
+
1806
+ @keyframes thinkingBodyIn {
1807
+ from {
1808
+ opacity: 0;
1809
+ transform: translateY(-4px);
1810
+ }
1811
+ to {
1812
+ opacity: 1;
1813
+ transform: translateY(0);
1814
+ }
1815
+ }
1816
+
1817
+ .thinking-block-content {
1818
+ padding: 8px 12px 10px;
1819
+ font-size: 0.76rem;
1820
+ line-height: 1.6;
1821
+ color: #64748b;
1822
+ white-space: pre-wrap;
1823
+ max-height: 260px;
1824
+ overflow-y: auto;
1825
+ user-select: text;
1826
+ }
1827
+
1828
+ .thinking-block-step + .thinking-block-step {
1829
+ margin-top: 10px;
1830
+ padding-top: 10px;
1831
+ border-top: 1px dashed rgba(148, 163, 184, 0.16);
1832
+ }
1833
+
1834
+ .thinking-block-step-label {
1835
+ font-size: 0.68rem;
1836
+ font-weight: 600;
1837
+ letter-spacing: 0.02em;
1838
+ color: #94a3b8;
1839
+ margin-bottom: 4px;
1840
+ font-style: normal;
1841
+ }
1842
+
1843
+ .thinking-block-step-body {
1844
+ font-style: italic;
1845
+ }
1846
+
1847
+ .thinking-block-empty-state {
1848
+ padding: 6px 10px;
1849
+ }
1850
+
1851
+ .thinking-block-empty {
1852
+ display: block;
1853
+ font-size: 0.74rem;
1854
+ line-height: 1.5;
1855
+ color: #64748b;
1856
+ font-style: italic;
1857
+ }
1858
+
1859
+ .thinking-block-content::-webkit-scrollbar {
1860
+ width: 3px;
1861
+ }
1862
+
1863
+ .thinking-block-content::-webkit-scrollbar-track {
1864
+ background: transparent;
1865
+ }
1866
+
1867
+ .thinking-block-content::-webkit-scrollbar-thumb {
1868
+ background: rgba(148, 163, 184, 0.22);
1869
+ border-radius: 2px;
1870
+ }
1871
+
1681
1872
  /* Smart Context Toggle */
1682
1873
  .smart-context-bar {
1683
1874
  display: flex;
@@ -2172,13 +2363,13 @@ input:checked + .slider:before {
2172
2363
  }
2173
2364
 
2174
2365
  .sidebar-chat-delete:hover {
2175
- color: #fca5a5;
2176
- background: rgba(248, 113, 113, 0.12);
2366
+ color: var(--hover-delete);
2367
+ background: var(--hover-delete-bg);
2177
2368
  }
2178
2369
 
2179
2370
  .sidebar-chat-edit:hover {
2180
- color: #c7d2fe;
2181
- background: rgba(99, 102, 241, 0.12);
2371
+ color: var(--hover-edit);
2372
+ background: var(--hover-edit-bg);
2182
2373
  }
2183
2374
 
2184
2375
  .sidebar-chat-rename-input {
@@ -2270,49 +2461,49 @@ input:checked + .slider:before {
2270
2461
 
2271
2462
  .mint-status-pill[data-state="listening"],
2272
2463
  .model-activity-badge[data-state="listening"] {
2273
- color: #7dd3fc;
2464
+ color: var(--status-listening);
2274
2465
  }
2275
2466
 
2276
2467
  .mint-status-pill[data-state="listening"] .mint-status-dot,
2277
2468
  .model-activity-badge[data-state="listening"] .mint-status-dot {
2278
- background: #38bdf8;
2279
- box-shadow: 0 0 0 3px rgba(56, 189, 248, 0.16);
2469
+ background: var(--status-listening);
2470
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--status-listening) 16%, transparent);
2280
2471
  animation: mintStatusPulse 1.2s ease-in-out infinite;
2281
2472
  }
2282
2473
 
2283
2474
  .mint-status-pill[data-state="thinking"],
2284
2475
  .model-activity-badge[data-state="thinking"] {
2285
- color: #a7f3d0;
2476
+ color: var(--status-thinking);
2286
2477
  }
2287
2478
 
2288
2479
  .mint-status-pill[data-state="thinking"] .mint-status-dot,
2289
2480
  .model-activity-badge[data-state="thinking"] .mint-status-dot {
2290
- background: var(--accent);
2291
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 20%, transparent);
2481
+ background: var(--status-thinking);
2482
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--status-thinking) 20%, transparent);
2292
2483
  animation: mintStatusPulse 1s ease-in-out infinite;
2293
2484
  }
2294
2485
 
2295
2486
  .mint-status-pill[data-state="speaking"],
2296
2487
  .model-activity-badge[data-state="speaking"] {
2297
- color: #86efac;
2488
+ color: var(--status-speaking);
2298
2489
  }
2299
2490
 
2300
2491
  .mint-status-pill[data-state="speaking"] .mint-status-dot,
2301
2492
  .model-activity-badge[data-state="speaking"] .mint-status-dot {
2302
- background: #22c55e;
2303
- box-shadow: 0 0 0 3px rgba(34, 197, 94, 0.16);
2493
+ background: var(--status-speaking);
2494
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--status-speaking) 16%, transparent);
2304
2495
  animation: mintStatusPulse 0.9s ease-in-out infinite;
2305
2496
  }
2306
2497
 
2307
2498
  .mint-status-pill[data-state="error"],
2308
2499
  .model-activity-badge[data-state="error"] {
2309
- color: #fca5a5;
2500
+ color: var(--status-error);
2310
2501
  }
2311
2502
 
2312
2503
  .mint-status-pill[data-state="error"] .mint-status-dot,
2313
2504
  .model-activity-badge[data-state="error"] .mint-status-dot {
2314
- background: #ef4444;
2315
- box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.16);
2505
+ background: var(--status-error);
2506
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--status-error) 16%, transparent);
2316
2507
  }
2317
2508
 
2318
2509
  @keyframes mintStatusPulse {
@@ -3131,13 +3322,15 @@ input:checked + .slider:before {
3131
3322
 
3132
3323
  .ai-message .message-bubble,
3133
3324
  .typing-indicator {
3134
- background: var(--surface-bg);
3135
- border: 1px solid var(--border);
3136
- border-radius: 8px;
3325
+ /* Keep AI messages unframed here as well */
3326
+ background: transparent;
3327
+ border: none;
3328
+ border-radius: 0;
3137
3329
  color: var(--text-main);
3138
3330
  backdrop-filter: none;
3139
3331
  -webkit-backdrop-filter: none;
3140
3332
  box-shadow: none;
3333
+ padding: 0; /* spacing handled by wrapper */
3141
3334
  }
3142
3335
 
3143
3336
  .user-message .message-bubble {
@@ -3152,6 +3345,15 @@ input:checked + .slider:before {
3152
3345
  color: var(--accent-hover);
3153
3346
  }
3154
3347
 
3348
+ /* Force AI replies to render as plain inline text (no bubble/frame). */
3349
+ .message.ai-message .message-bubble {
3350
+ background: transparent !important;
3351
+ border: none !important;
3352
+ box-shadow: none !important;
3353
+ border-radius: 0 !important;
3354
+ padding: 0 !important;
3355
+ }
3356
+
3155
3357
  .input-area {
3156
3358
  flex: 0 0 auto;
3157
3359
  padding: 0;
@@ -3609,8 +3811,8 @@ input:checked + .slider:before {
3609
3811
  }
3610
3812
 
3611
3813
  .close-btn:hover {
3612
- background: #3a2020;
3613
- color: #ff8a8a;
3814
+ background: var(--close-btn-hover-bg);
3815
+ color: var(--close-btn-hover-color);
3614
3816
  }
3615
3817
 
3616
3818
  .assistant-workspace.layout-horizontal {
@@ -2,6 +2,7 @@
2
2
  @import './css/settings.css';
3
3
  @import './css/spotlight.css';
4
4
  @import './css/widget.css';
5
+ @import './css/image-studio.css';
5
6
 
6
7
  * {
7
8
  box-sizing: border-box;
@@ -377,3 +378,154 @@ button {
377
378
  text-align: center;
378
379
  }
379
380
  }
381
+
382
+ /* Premium Markdown Styles for Chat Messages */
383
+ .chat-inline-code {
384
+ background: rgba(16, 185, 129, 0.15);
385
+ border: 1px solid rgba(16, 185, 129, 0.25);
386
+ color: #34d399;
387
+ padding: 2px 6px;
388
+ border-radius: 6px;
389
+ font-family: 'Fira Code', 'Courier New', Courier, monospace;
390
+ font-size: 0.88em;
391
+ }
392
+
393
+ .chat-code-block-container {
394
+ display: flex;
395
+ flex-direction: column;
396
+ background: var(--input-bg, #0f172a);
397
+ border: 1px solid var(--border);
398
+ border-radius: 8px;
399
+ margin: 12px 0;
400
+ overflow: hidden;
401
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25);
402
+ }
403
+
404
+ .chat-code-block-header {
405
+ display: flex;
406
+ align-items: center;
407
+ justify-content: space-between;
408
+ background: var(--surface-bg, #1e293b);
409
+ padding: 8px 14px;
410
+ border-bottom: 1px solid var(--border);
411
+ }
412
+
413
+ .chat-code-block-lang {
414
+ color: var(--accent);
415
+ font-size: 0.78rem;
416
+ font-weight: 650;
417
+ text-transform: capitalize;
418
+ font-family: ui-sans-serif, system-ui, sans-serif;
419
+ }
420
+
421
+ .chat-code-block-actions {
422
+ display: flex;
423
+ gap: 10px;
424
+ }
425
+
426
+ .chat-code-action-btn {
427
+ background: transparent;
428
+ border: none;
429
+ color: var(--text-soft, #94a3b8);
430
+ cursor: pointer;
431
+ padding: 4px;
432
+ border-radius: 4px;
433
+ display: flex;
434
+ align-items: center;
435
+ justify-content: center;
436
+ transition: all 0.2s ease;
437
+ }
438
+
439
+ .chat-code-action-btn:hover {
440
+ background: rgba(255, 255, 255, 0.05);
441
+ color: var(--accent-hover, #34d399);
442
+ }
443
+
444
+ .chat-code-block-body {
445
+ margin: 0;
446
+ padding: 14px;
447
+ overflow-x: auto;
448
+ background: var(--input-bg, #0f172a);
449
+ }
450
+
451
+ .chat-code-block-body code {
452
+ font-family: 'Fira Code', 'Courier New', Courier, monospace;
453
+ font-size: 0.88rem;
454
+ color: var(--text-main, #e2e8f0);
455
+ line-height: 1.5;
456
+ white-space: pre;
457
+ }
458
+
459
+ .chat-ordered-list,
460
+ .chat-unordered-list {
461
+ margin: 8px 0;
462
+ padding-left: 24px;
463
+ }
464
+
465
+ .chat-ordered-list {
466
+ list-style-type: decimal;
467
+ }
468
+
469
+ .chat-unordered-list {
470
+ list-style-type: disc;
471
+ }
472
+
473
+ .chat-bold-highlight {
474
+ color: var(--accent) !important;
475
+ }
476
+
477
+ .chat-inline-code {
478
+ background: color-mix(in srgb, var(--accent) 12%, transparent);
479
+ border: 1px solid color-mix(in srgb, var(--accent) 24%, transparent);
480
+ color: var(--accent);
481
+ padding: 2px 6px;
482
+ border-radius: 4px;
483
+ font-family: 'Fira Code', 'Courier New', Courier, monospace;
484
+ font-size: 0.9em;
485
+ }
486
+
487
+ /* Premium Table Styles for Chat Panel */
488
+ .chat-table-container {
489
+ overflow-x: auto;
490
+ margin: 14px 0;
491
+ width: 100%;
492
+ border-radius: 8px;
493
+ border: 1px solid rgba(255, 255, 255, 0.12);
494
+ background: rgba(30, 41, 59, 0.35);
495
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
496
+ }
497
+
498
+ .chat-table {
499
+ width: 100%;
500
+ border-collapse: collapse;
501
+ font-size: 0.86rem;
502
+ text-align: left;
503
+ line-height: 1.5;
504
+ }
505
+
506
+ .chat-table th {
507
+ padding: 12px 16px;
508
+ font-weight: 700;
509
+ color: var(--accent);
510
+ background: rgba(255, 255, 255, 0.04);
511
+ border-bottom: 2px solid rgba(255, 255, 255, 0.15);
512
+ font-family: ui-sans-serif, system-ui, sans-serif;
513
+ }
514
+
515
+ .chat-table td {
516
+ padding: 12px 16px;
517
+ color: var(--text-main, #e2e8f0);
518
+ border-bottom: 1px solid rgba(255, 255, 255, 0.08);
519
+ }
520
+
521
+ .chat-table tbody tr {
522
+ transition: background 0.15s ease;
523
+ }
524
+
525
+ .chat-table tbody tr:hover {
526
+ background: rgba(255, 255, 255, 0.03);
527
+ }
528
+
529
+ .chat-table tbody tr:last-child td {
530
+ border-bottom: none;
531
+ }