@199-bio/engram 0.8.0 → 0.10.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.
- package/.env.example +5 -0
- package/boba-prompt.md +107 -0
- package/dist/consolidation/consolidator.d.ts.map +1 -1
- package/dist/consolidation/plan.d.ts.map +1 -0
- package/dist/index.js +170 -9
- package/dist/retrieval/hybrid.d.ts.map +1 -1
- package/dist/storage/database.d.ts.map +1 -1
- package/dist/transport/http.d.ts.map +1 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/web/chat-handler.d.ts.map +1 -1
- package/nixpacks.toml +11 -0
- package/package.json +2 -1
- package/railway.json +13 -0
- package/src/consolidation/consolidator.ts +381 -29
- package/src/consolidation/plan.ts +444 -0
- package/src/index.ts +181 -10
- package/src/retrieval/hybrid.ts +69 -5
- package/src/storage/database.ts +358 -38
- package/src/transport/http.ts +111 -0
- package/src/transport/index.ts +24 -0
- package/src/web/chat-handler.ts +116 -70
- package/src/web/static/app.js +612 -360
- package/src/web/static/index.html +377 -130
- package/src/web/static/style.css +1249 -672
package/src/web/static/style.css
CHANGED
|
@@ -1,31 +1,131 @@
|
|
|
1
|
-
/* Engram Web Interface
|
|
2
|
-
*
|
|
1
|
+
/* Engram Web Interface - Liquid Glass Design
|
|
2
|
+
* Inspired by macOS 26 Liquid Glass aesthetic
|
|
3
|
+
* Light/Dark mode with glassmorphism, blur effects, and modern UI
|
|
3
4
|
*/
|
|
4
5
|
|
|
6
|
+
/* ============ Design Tokens ============ */
|
|
5
7
|
:root {
|
|
6
|
-
/*
|
|
7
|
-
--bg-
|
|
8
|
-
--bg-
|
|
9
|
-
--bg-
|
|
10
|
-
--
|
|
11
|
-
--
|
|
12
|
-
--
|
|
13
|
-
|
|
14
|
-
--
|
|
15
|
-
--
|
|
16
|
-
--
|
|
17
|
-
--
|
|
18
|
-
|
|
19
|
-
--
|
|
20
|
-
--
|
|
21
|
-
--
|
|
22
|
-
--
|
|
23
|
-
|
|
24
|
-
--
|
|
25
|
-
--
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
8
|
+
/* Light Mode Colors */
|
|
9
|
+
--bg-base: #f5f5f7;
|
|
10
|
+
--bg-elevated: rgba(255, 255, 255, 0.72);
|
|
11
|
+
--bg-glass: rgba(255, 255, 255, 0.6);
|
|
12
|
+
--bg-glass-hover: rgba(255, 255, 255, 0.8);
|
|
13
|
+
--bg-solid: #ffffff;
|
|
14
|
+
--bg-input: rgba(255, 255, 255, 0.9);
|
|
15
|
+
|
|
16
|
+
--text-primary: #1d1d1f;
|
|
17
|
+
--text-secondary: #6e6e73;
|
|
18
|
+
--text-tertiary: #86868b;
|
|
19
|
+
--text-inverse: #ffffff;
|
|
20
|
+
|
|
21
|
+
--accent: #0071e3;
|
|
22
|
+
--accent-hover: #0077ed;
|
|
23
|
+
--accent-subtle: rgba(0, 113, 227, 0.12);
|
|
24
|
+
--accent-glow: rgba(0, 113, 227, 0.3);
|
|
25
|
+
|
|
26
|
+
--success: #34c759;
|
|
27
|
+
--success-subtle: rgba(52, 199, 89, 0.12);
|
|
28
|
+
--warning: #ff9f0a;
|
|
29
|
+
--warning-subtle: rgba(255, 159, 10, 0.12);
|
|
30
|
+
--danger: #ff3b30;
|
|
31
|
+
--danger-subtle: rgba(255, 59, 48, 0.12);
|
|
32
|
+
|
|
33
|
+
--border: rgba(0, 0, 0, 0.06);
|
|
34
|
+
--border-strong: rgba(0, 0, 0, 0.1);
|
|
35
|
+
--divider: rgba(0, 0, 0, 0.04);
|
|
36
|
+
|
|
37
|
+
--shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.04);
|
|
38
|
+
--shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.06);
|
|
39
|
+
--shadow-md: 0 4px 16px rgba(0, 0, 0, 0.08);
|
|
40
|
+
--shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.12);
|
|
41
|
+
--shadow-xl: 0 16px 48px rgba(0, 0, 0, 0.16);
|
|
42
|
+
--shadow-glow: 0 0 24px var(--accent-glow);
|
|
43
|
+
|
|
44
|
+
--blur-sm: 8px;
|
|
45
|
+
--blur-md: 16px;
|
|
46
|
+
--blur-lg: 24px;
|
|
47
|
+
--blur-xl: 40px;
|
|
48
|
+
|
|
49
|
+
--radius-sm: 8px;
|
|
50
|
+
--radius-md: 12px;
|
|
51
|
+
--radius-lg: 16px;
|
|
52
|
+
--radius-xl: 24px;
|
|
53
|
+
--radius-full: 9999px;
|
|
54
|
+
|
|
55
|
+
--transition-fast: 0.15s cubic-bezier(0.4, 0, 0.2, 1);
|
|
56
|
+
--transition-normal: 0.25s cubic-bezier(0.4, 0, 0.2, 1);
|
|
57
|
+
--transition-slow: 0.4s cubic-bezier(0.4, 0, 0.2, 1);
|
|
58
|
+
|
|
59
|
+
--font-sans: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", system-ui, sans-serif;
|
|
60
|
+
--font-mono: "SF Mono", ui-monospace, Menlo, Monaco, monospace;
|
|
61
|
+
|
|
62
|
+
--sidebar-width: 260px;
|
|
63
|
+
--header-height: 64px;
|
|
64
|
+
--chat-width: 400px;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/* Dark Mode */
|
|
68
|
+
[data-theme="dark"] {
|
|
69
|
+
--bg-base: #1c1c1e;
|
|
70
|
+
--bg-elevated: rgba(44, 44, 46, 0.72);
|
|
71
|
+
--bg-glass: rgba(44, 44, 46, 0.6);
|
|
72
|
+
--bg-glass-hover: rgba(58, 58, 60, 0.8);
|
|
73
|
+
--bg-solid: #2c2c2e;
|
|
74
|
+
--bg-input: rgba(58, 58, 60, 0.9);
|
|
75
|
+
|
|
76
|
+
--text-primary: #f5f5f7;
|
|
77
|
+
--text-secondary: #a1a1a6;
|
|
78
|
+
--text-tertiary: #8e8e93;
|
|
79
|
+
--text-inverse: #1d1d1f;
|
|
80
|
+
|
|
81
|
+
--accent: #0a84ff;
|
|
82
|
+
--accent-hover: #409cff;
|
|
83
|
+
--accent-subtle: rgba(10, 132, 255, 0.2);
|
|
84
|
+
--accent-glow: rgba(10, 132, 255, 0.4);
|
|
85
|
+
|
|
86
|
+
--success: #30d158;
|
|
87
|
+
--success-subtle: rgba(48, 209, 88, 0.2);
|
|
88
|
+
--warning: #ffd60a;
|
|
89
|
+
--warning-subtle: rgba(255, 214, 10, 0.2);
|
|
90
|
+
--danger: #ff453a;
|
|
91
|
+
--danger-subtle: rgba(255, 69, 58, 0.2);
|
|
92
|
+
|
|
93
|
+
--border: rgba(255, 255, 255, 0.08);
|
|
94
|
+
--border-strong: rgba(255, 255, 255, 0.12);
|
|
95
|
+
--divider: rgba(255, 255, 255, 0.05);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/* System preference detection */
|
|
99
|
+
@media (prefers-color-scheme: dark) {
|
|
100
|
+
:root:not([data-theme="light"]) {
|
|
101
|
+
--bg-base: #1c1c1e;
|
|
102
|
+
--bg-elevated: rgba(44, 44, 46, 0.72);
|
|
103
|
+
--bg-glass: rgba(44, 44, 46, 0.6);
|
|
104
|
+
--bg-glass-hover: rgba(58, 58, 60, 0.8);
|
|
105
|
+
--bg-solid: #2c2c2e;
|
|
106
|
+
--bg-input: rgba(58, 58, 60, 0.9);
|
|
107
|
+
--text-primary: #f5f5f7;
|
|
108
|
+
--text-secondary: #a1a1a6;
|
|
109
|
+
--text-tertiary: #8e8e93;
|
|
110
|
+
--text-inverse: #1d1d1f;
|
|
111
|
+
--accent: #0a84ff;
|
|
112
|
+
--accent-hover: #409cff;
|
|
113
|
+
--accent-subtle: rgba(10, 132, 255, 0.2);
|
|
114
|
+
--accent-glow: rgba(10, 132, 255, 0.4);
|
|
115
|
+
--success: #30d158;
|
|
116
|
+
--success-subtle: rgba(48, 209, 88, 0.2);
|
|
117
|
+
--warning: #ffd60a;
|
|
118
|
+
--warning-subtle: rgba(255, 214, 10, 0.2);
|
|
119
|
+
--danger: #ff453a;
|
|
120
|
+
--danger-subtle: rgba(255, 69, 58, 0.2);
|
|
121
|
+
--border: rgba(255, 255, 255, 0.08);
|
|
122
|
+
--border-strong: rgba(255, 255, 255, 0.12);
|
|
123
|
+
--divider: rgba(255, 255, 255, 0.05);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/* ============ Reset & Base ============ */
|
|
128
|
+
*, *::before, *::after {
|
|
29
129
|
box-sizing: border-box;
|
|
30
130
|
margin: 0;
|
|
31
131
|
padding: 0;
|
|
@@ -33,452 +133,923 @@
|
|
|
33
133
|
|
|
34
134
|
html {
|
|
35
135
|
font-size: 16px;
|
|
136
|
+
-webkit-font-smoothing: antialiased;
|
|
137
|
+
-moz-osx-font-smoothing: grayscale;
|
|
36
138
|
}
|
|
37
139
|
|
|
38
140
|
body {
|
|
39
|
-
font-family:
|
|
40
|
-
background: var(--bg-
|
|
141
|
+
font-family: var(--font-sans);
|
|
142
|
+
background: var(--bg-base);
|
|
41
143
|
color: var(--text-primary);
|
|
42
|
-
line-height: 1.
|
|
144
|
+
line-height: 1.5;
|
|
43
145
|
min-height: 100vh;
|
|
146
|
+
overflow-x: hidden;
|
|
147
|
+
transition: background-color var(--transition-normal), color var(--transition-normal);
|
|
44
148
|
}
|
|
45
149
|
|
|
46
|
-
/* Typography */
|
|
47
|
-
h1, h2, h3, h4 {
|
|
48
|
-
font-weight:
|
|
150
|
+
/* ============ Typography ============ */
|
|
151
|
+
h1, h2, h3, h4, h5, h6 {
|
|
152
|
+
font-weight: 600;
|
|
153
|
+
letter-spacing: -0.025em;
|
|
154
|
+
line-height: 1.2;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
h1 { font-size: 2rem; }
|
|
158
|
+
h2 { font-size: 1.5rem; }
|
|
159
|
+
h3 { font-size: 1.125rem; }
|
|
160
|
+
h4 { font-size: 1rem; }
|
|
161
|
+
|
|
162
|
+
/* ============ Layout Container ============ */
|
|
163
|
+
.app-container {
|
|
164
|
+
display: flex;
|
|
165
|
+
min-height: 100vh;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/* ============ Sidebar ============ */
|
|
169
|
+
.sidebar {
|
|
170
|
+
position: fixed;
|
|
171
|
+
top: 0;
|
|
172
|
+
left: 0;
|
|
173
|
+
width: var(--sidebar-width);
|
|
174
|
+
height: 100vh;
|
|
175
|
+
background: var(--bg-glass);
|
|
176
|
+
backdrop-filter: blur(var(--blur-xl)) saturate(180%);
|
|
177
|
+
-webkit-backdrop-filter: blur(var(--blur-xl)) saturate(180%);
|
|
178
|
+
border-right: 1px solid var(--border);
|
|
179
|
+
display: flex;
|
|
180
|
+
flex-direction: column;
|
|
181
|
+
z-index: 100;
|
|
182
|
+
transition: transform var(--transition-normal), width var(--transition-normal);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
.sidebar.collapsed {
|
|
186
|
+
width: 72px;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
.sidebar.collapsed .sidebar-brand span,
|
|
190
|
+
.sidebar.collapsed .nav-label,
|
|
191
|
+
.sidebar.collapsed .sidebar-footer-content {
|
|
192
|
+
opacity: 0;
|
|
193
|
+
visibility: hidden;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
.sidebar-brand {
|
|
197
|
+
display: flex;
|
|
198
|
+
align-items: center;
|
|
199
|
+
gap: 12px;
|
|
200
|
+
padding: 20px 20px 16px;
|
|
201
|
+
border-bottom: 1px solid var(--divider);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
.sidebar-brand .logo {
|
|
205
|
+
width: 32px;
|
|
206
|
+
height: 32px;
|
|
207
|
+
background: linear-gradient(135deg, var(--accent) 0%, #5856d6 100%);
|
|
208
|
+
border-radius: var(--radius-md);
|
|
209
|
+
display: flex;
|
|
210
|
+
align-items: center;
|
|
211
|
+
justify-content: center;
|
|
212
|
+
flex-shrink: 0;
|
|
213
|
+
box-shadow: var(--shadow-sm), inset 0 1px 0 rgba(255,255,255,0.2);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
.sidebar-brand .logo svg {
|
|
217
|
+
width: 18px;
|
|
218
|
+
height: 18px;
|
|
219
|
+
color: white;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
.sidebar-brand span {
|
|
223
|
+
font-size: 1.125rem;
|
|
224
|
+
font-weight: 700;
|
|
49
225
|
letter-spacing: -0.02em;
|
|
226
|
+
background: linear-gradient(135deg, var(--text-primary) 0%, var(--text-secondary) 100%);
|
|
227
|
+
-webkit-background-clip: text;
|
|
228
|
+
-webkit-text-fill-color: transparent;
|
|
229
|
+
background-clip: text;
|
|
230
|
+
transition: opacity var(--transition-fast);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
.sidebar-nav {
|
|
234
|
+
flex: 1;
|
|
235
|
+
padding: 16px 12px;
|
|
236
|
+
overflow-y: auto;
|
|
50
237
|
}
|
|
51
238
|
|
|
52
|
-
|
|
53
|
-
|
|
239
|
+
.nav-section {
|
|
240
|
+
margin-bottom: 24px;
|
|
54
241
|
}
|
|
55
242
|
|
|
56
|
-
|
|
57
|
-
font-size:
|
|
243
|
+
.nav-section-title {
|
|
244
|
+
font-size: 0.6875rem;
|
|
245
|
+
font-weight: 600;
|
|
246
|
+
text-transform: uppercase;
|
|
247
|
+
letter-spacing: 0.08em;
|
|
248
|
+
color: var(--text-tertiary);
|
|
249
|
+
padding: 0 8px;
|
|
250
|
+
margin-bottom: 8px;
|
|
58
251
|
}
|
|
59
252
|
|
|
60
|
-
|
|
61
|
-
|
|
253
|
+
.sidebar.collapsed .nav-section-title {
|
|
254
|
+
opacity: 0;
|
|
255
|
+
height: 0;
|
|
256
|
+
margin: 0;
|
|
257
|
+
overflow: hidden;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
.nav-item {
|
|
62
261
|
display: flex;
|
|
63
262
|
align-items: center;
|
|
64
|
-
gap:
|
|
65
|
-
padding:
|
|
66
|
-
|
|
67
|
-
|
|
263
|
+
gap: 12px;
|
|
264
|
+
padding: 10px 12px;
|
|
265
|
+
border-radius: var(--radius-md);
|
|
266
|
+
color: var(--text-secondary);
|
|
267
|
+
text-decoration: none;
|
|
268
|
+
font-size: 0.9375rem;
|
|
269
|
+
font-weight: 500;
|
|
270
|
+
cursor: pointer;
|
|
271
|
+
border: none;
|
|
272
|
+
background: transparent;
|
|
273
|
+
width: 100%;
|
|
274
|
+
text-align: left;
|
|
275
|
+
transition: all var(--transition-fast);
|
|
276
|
+
position: relative;
|
|
68
277
|
}
|
|
69
278
|
|
|
70
|
-
|
|
279
|
+
.nav-item:hover {
|
|
280
|
+
background: var(--bg-glass-hover);
|
|
71
281
|
color: var(--text-primary);
|
|
72
|
-
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
.nav-item.active {
|
|
285
|
+
background: var(--accent-subtle);
|
|
286
|
+
color: var(--accent);
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
.nav-item.active::before {
|
|
290
|
+
content: '';
|
|
291
|
+
position: absolute;
|
|
292
|
+
left: 0;
|
|
293
|
+
top: 50%;
|
|
294
|
+
transform: translateY(-50%);
|
|
295
|
+
width: 3px;
|
|
296
|
+
height: 20px;
|
|
297
|
+
background: var(--accent);
|
|
298
|
+
border-radius: 0 3px 3px 0;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
.nav-item svg {
|
|
302
|
+
width: 20px;
|
|
303
|
+
height: 20px;
|
|
304
|
+
flex-shrink: 0;
|
|
305
|
+
opacity: 0.8;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
.nav-item.active svg {
|
|
309
|
+
opacity: 1;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
.nav-label {
|
|
313
|
+
white-space: nowrap;
|
|
314
|
+
transition: opacity var(--transition-fast);
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
.nav-badge {
|
|
318
|
+
margin-left: auto;
|
|
319
|
+
font-size: 0.6875rem;
|
|
73
320
|
font-weight: 600;
|
|
74
|
-
|
|
321
|
+
padding: 2px 8px;
|
|
322
|
+
background: var(--accent);
|
|
323
|
+
color: white;
|
|
324
|
+
border-radius: var(--radius-full);
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
.sidebar-footer {
|
|
328
|
+
padding: 16px;
|
|
329
|
+
border-top: 1px solid var(--divider);
|
|
75
330
|
}
|
|
76
331
|
|
|
77
|
-
|
|
332
|
+
.sidebar-stats {
|
|
78
333
|
display: flex;
|
|
79
|
-
|
|
334
|
+
flex-direction: column;
|
|
335
|
+
gap: 8px;
|
|
336
|
+
padding: 12px;
|
|
337
|
+
background: var(--bg-glass);
|
|
338
|
+
border-radius: var(--radius-md);
|
|
339
|
+
font-size: 0.75rem;
|
|
80
340
|
}
|
|
81
341
|
|
|
82
|
-
.
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
342
|
+
.stat-row {
|
|
343
|
+
display: flex;
|
|
344
|
+
justify-content: space-between;
|
|
345
|
+
color: var(--text-tertiary);
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
.stat-row span:last-child {
|
|
349
|
+
font-weight: 600;
|
|
89
350
|
color: var(--text-secondary);
|
|
351
|
+
font-variant-numeric: tabular-nums;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
.sidebar-toggle {
|
|
355
|
+
position: absolute;
|
|
356
|
+
top: 20px;
|
|
357
|
+
right: -12px;
|
|
358
|
+
width: 24px;
|
|
359
|
+
height: 24px;
|
|
360
|
+
background: var(--bg-solid);
|
|
361
|
+
border: 1px solid var(--border-strong);
|
|
362
|
+
border-radius: var(--radius-full);
|
|
363
|
+
display: flex;
|
|
364
|
+
align-items: center;
|
|
365
|
+
justify-content: center;
|
|
90
366
|
cursor: pointer;
|
|
91
|
-
|
|
367
|
+
box-shadow: var(--shadow-sm);
|
|
368
|
+
transition: all var(--transition-fast);
|
|
369
|
+
z-index: 10;
|
|
92
370
|
}
|
|
93
371
|
|
|
94
|
-
.
|
|
95
|
-
|
|
96
|
-
|
|
372
|
+
.sidebar-toggle:hover {
|
|
373
|
+
background: var(--bg-glass-hover);
|
|
374
|
+
transform: scale(1.1);
|
|
97
375
|
}
|
|
98
376
|
|
|
99
|
-
.
|
|
377
|
+
.sidebar-toggle svg {
|
|
378
|
+
width: 14px;
|
|
379
|
+
height: 14px;
|
|
380
|
+
color: var(--text-secondary);
|
|
381
|
+
transition: transform var(--transition-fast);
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
.sidebar.collapsed .sidebar-toggle svg {
|
|
385
|
+
transform: rotate(180deg);
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
/* ============ Main Content Area ============ */
|
|
389
|
+
.main-wrapper {
|
|
390
|
+
flex: 1;
|
|
391
|
+
margin-left: var(--sidebar-width);
|
|
392
|
+
transition: margin-left var(--transition-normal);
|
|
393
|
+
display: flex;
|
|
394
|
+
flex-direction: column;
|
|
395
|
+
min-height: 100vh;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
body.sidebar-collapsed .main-wrapper {
|
|
399
|
+
margin-left: 72px;
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
/* ============ Header ============ */
|
|
403
|
+
.header {
|
|
404
|
+
position: sticky;
|
|
405
|
+
top: 0;
|
|
406
|
+
height: var(--header-height);
|
|
407
|
+
background: var(--bg-glass);
|
|
408
|
+
backdrop-filter: blur(var(--blur-lg)) saturate(180%);
|
|
409
|
+
-webkit-backdrop-filter: blur(var(--blur-lg)) saturate(180%);
|
|
410
|
+
border-bottom: 1px solid var(--border);
|
|
411
|
+
display: flex;
|
|
412
|
+
align-items: center;
|
|
413
|
+
padding: 0 24px;
|
|
414
|
+
gap: 16px;
|
|
415
|
+
z-index: 50;
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
.header-title {
|
|
419
|
+
font-size: 1.25rem;
|
|
420
|
+
font-weight: 600;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
.header-search {
|
|
424
|
+
flex: 1;
|
|
425
|
+
max-width: 400px;
|
|
426
|
+
position: relative;
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
.header-search input {
|
|
430
|
+
width: 100%;
|
|
431
|
+
padding: 10px 16px 10px 40px;
|
|
432
|
+
background: var(--bg-input);
|
|
433
|
+
border: 1px solid var(--border);
|
|
434
|
+
border-radius: var(--radius-full);
|
|
435
|
+
font-family: inherit;
|
|
436
|
+
font-size: 0.875rem;
|
|
100
437
|
color: var(--text-primary);
|
|
101
|
-
|
|
102
|
-
border-color: var(--border);
|
|
103
|
-
box-shadow: 0 1px 2px var(--shadow);
|
|
438
|
+
transition: all var(--transition-fast);
|
|
104
439
|
}
|
|
105
440
|
|
|
106
|
-
.
|
|
441
|
+
.header-search input:focus {
|
|
442
|
+
outline: none;
|
|
443
|
+
border-color: var(--accent);
|
|
444
|
+
box-shadow: 0 0 0 3px var(--accent-subtle);
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
.header-search input::placeholder {
|
|
448
|
+
color: var(--text-tertiary);
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
.header-search svg {
|
|
452
|
+
position: absolute;
|
|
453
|
+
left: 14px;
|
|
454
|
+
top: 50%;
|
|
455
|
+
transform: translateY(-50%);
|
|
456
|
+
width: 16px;
|
|
457
|
+
height: 16px;
|
|
458
|
+
color: var(--text-tertiary);
|
|
459
|
+
pointer-events: none;
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
.header-actions {
|
|
463
|
+
display: flex;
|
|
464
|
+
align-items: center;
|
|
465
|
+
gap: 8px;
|
|
107
466
|
margin-left: auto;
|
|
108
|
-
font-size: 0.8125rem;
|
|
109
|
-
color: var(--text-muted);
|
|
110
|
-
font-variant-numeric: tabular-nums;
|
|
111
467
|
}
|
|
112
468
|
|
|
113
|
-
/*
|
|
114
|
-
.
|
|
469
|
+
/* Icon Button */
|
|
470
|
+
.icon-btn {
|
|
471
|
+
width: 40px;
|
|
472
|
+
height: 40px;
|
|
115
473
|
display: flex;
|
|
116
474
|
align-items: center;
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
475
|
+
justify-content: center;
|
|
476
|
+
background: var(--bg-glass);
|
|
477
|
+
border: 1px solid var(--border);
|
|
478
|
+
border-radius: var(--radius-md);
|
|
479
|
+
cursor: pointer;
|
|
480
|
+
color: var(--text-secondary);
|
|
481
|
+
transition: all var(--transition-fast);
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
.icon-btn:hover {
|
|
485
|
+
background: var(--bg-glass-hover);
|
|
486
|
+
color: var(--text-primary);
|
|
487
|
+
border-color: var(--border-strong);
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
.icon-btn.active {
|
|
491
|
+
background: var(--accent-subtle);
|
|
492
|
+
color: var(--accent);
|
|
493
|
+
border-color: var(--accent);
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
.icon-btn svg {
|
|
497
|
+
width: 20px;
|
|
498
|
+
height: 20px;
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
/* Status Indicator */
|
|
502
|
+
.status-indicator {
|
|
503
|
+
display: flex;
|
|
504
|
+
align-items: center;
|
|
505
|
+
gap: 8px;
|
|
506
|
+
padding: 8px 14px;
|
|
507
|
+
background: var(--bg-glass);
|
|
508
|
+
border: 1px solid var(--border);
|
|
509
|
+
border-radius: var(--radius-full);
|
|
510
|
+
font-size: 0.8125rem;
|
|
511
|
+
font-weight: 500;
|
|
512
|
+
color: var(--text-secondary);
|
|
513
|
+
transition: all var(--transition-fast);
|
|
125
514
|
}
|
|
126
515
|
|
|
127
|
-
.
|
|
516
|
+
.status-dot {
|
|
128
517
|
width: 8px;
|
|
129
518
|
height: 8px;
|
|
130
519
|
border-radius: 50%;
|
|
131
|
-
background: var(--text-
|
|
132
|
-
transition: all var(--transition);
|
|
133
|
-
flex-shrink: 0;
|
|
520
|
+
background: var(--text-tertiary);
|
|
521
|
+
transition: all var(--transition-fast);
|
|
134
522
|
}
|
|
135
523
|
|
|
136
|
-
.
|
|
524
|
+
.status-indicator.connected {
|
|
137
525
|
background: var(--success-subtle);
|
|
138
526
|
border-color: var(--success);
|
|
527
|
+
color: var(--success);
|
|
139
528
|
}
|
|
140
529
|
|
|
141
|
-
.
|
|
530
|
+
.status-indicator.connected .status-dot {
|
|
142
531
|
background: var(--success);
|
|
143
|
-
box-shadow: 0 0
|
|
532
|
+
box-shadow: 0 0 8px var(--success);
|
|
144
533
|
}
|
|
145
534
|
|
|
146
|
-
.
|
|
147
|
-
color: var(--success);
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
.api-status.disconnected {
|
|
535
|
+
.status-indicator.disconnected {
|
|
151
536
|
background: var(--danger-subtle);
|
|
152
537
|
border-color: var(--danger);
|
|
538
|
+
color: var(--danger);
|
|
153
539
|
}
|
|
154
540
|
|
|
155
|
-
.
|
|
541
|
+
.status-indicator.disconnected .status-dot {
|
|
156
542
|
background: var(--danger);
|
|
157
|
-
box-shadow: 0 0 6px var(--danger);
|
|
158
543
|
}
|
|
159
544
|
|
|
160
|
-
.
|
|
161
|
-
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
.api-status.checking .api-dot {
|
|
165
|
-
background: var(--accent);
|
|
166
|
-
animation: pulse 1s infinite;
|
|
545
|
+
.status-indicator.checking .status-dot {
|
|
546
|
+
animation: pulse 1.5s ease-in-out infinite;
|
|
167
547
|
}
|
|
168
548
|
|
|
169
549
|
@keyframes pulse {
|
|
170
|
-
0%, 100% { opacity: 1; }
|
|
171
|
-
50% { opacity: 0.
|
|
550
|
+
0%, 100% { opacity: 1; transform: scale(1); }
|
|
551
|
+
50% { opacity: 0.5; transform: scale(0.85); }
|
|
172
552
|
}
|
|
173
553
|
|
|
174
|
-
/* Main
|
|
554
|
+
/* ============ Main Content ============ */
|
|
175
555
|
main {
|
|
176
|
-
|
|
556
|
+
flex: 1;
|
|
557
|
+
padding: 24px;
|
|
558
|
+
max-width: 1200px;
|
|
559
|
+
width: 100%;
|
|
177
560
|
margin: 0 auto;
|
|
178
|
-
padding: 2rem;
|
|
179
561
|
}
|
|
180
562
|
|
|
181
563
|
.view {
|
|
182
564
|
display: none;
|
|
565
|
+
animation: fadeIn 0.3s ease;
|
|
183
566
|
}
|
|
184
567
|
|
|
185
568
|
.view.active {
|
|
186
569
|
display: block;
|
|
187
570
|
}
|
|
188
571
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
gap: 0.5rem;
|
|
193
|
-
margin-bottom: 1.5rem;
|
|
572
|
+
@keyframes fadeIn {
|
|
573
|
+
from { opacity: 0; transform: translateY(8px); }
|
|
574
|
+
to { opacity: 1; transform: translateY(0); }
|
|
194
575
|
}
|
|
195
576
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
577
|
+
/* ============ Cards ============ */
|
|
578
|
+
.card {
|
|
579
|
+
background: var(--bg-glass);
|
|
580
|
+
backdrop-filter: blur(var(--blur-md));
|
|
581
|
+
-webkit-backdrop-filter: blur(var(--blur-md));
|
|
201
582
|
border: 1px solid var(--border);
|
|
202
|
-
border-radius: var(--radius);
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
transition: all var(--transition);
|
|
583
|
+
border-radius: var(--radius-lg);
|
|
584
|
+
padding: 20px;
|
|
585
|
+
transition: all var(--transition-fast);
|
|
206
586
|
}
|
|
207
587
|
|
|
208
|
-
.
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
box-shadow: 0 0 0 2px var(--accent-subtle);
|
|
588
|
+
.card:hover {
|
|
589
|
+
border-color: var(--border-strong);
|
|
590
|
+
box-shadow: var(--shadow-md);
|
|
212
591
|
}
|
|
213
592
|
|
|
214
|
-
.
|
|
215
|
-
|
|
593
|
+
.card-header {
|
|
594
|
+
display: flex;
|
|
595
|
+
align-items: center;
|
|
596
|
+
justify-content: space-between;
|
|
597
|
+
margin-bottom: 16px;
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
.card-title {
|
|
601
|
+
font-size: 1rem;
|
|
602
|
+
font-weight: 600;
|
|
216
603
|
}
|
|
217
604
|
|
|
218
|
-
|
|
219
|
-
|
|
605
|
+
.card-content {
|
|
606
|
+
color: var(--text-secondary);
|
|
607
|
+
font-size: 0.9375rem;
|
|
608
|
+
line-height: 1.6;
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
/* ============ Buttons ============ */
|
|
612
|
+
.btn {
|
|
613
|
+
display: inline-flex;
|
|
614
|
+
align-items: center;
|
|
615
|
+
justify-content: center;
|
|
616
|
+
gap: 8px;
|
|
617
|
+
padding: 10px 20px;
|
|
220
618
|
font-family: inherit;
|
|
221
|
-
font-size: 0.
|
|
222
|
-
font-weight:
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
color: var(--bg-primary);
|
|
226
|
-
border: 1px solid transparent;
|
|
227
|
-
border-radius: var(--radius);
|
|
619
|
+
font-size: 0.875rem;
|
|
620
|
+
font-weight: 600;
|
|
621
|
+
border-radius: var(--radius-md);
|
|
622
|
+
border: none;
|
|
228
623
|
cursor: pointer;
|
|
229
|
-
transition: all var(--transition);
|
|
624
|
+
transition: all var(--transition-fast);
|
|
625
|
+
white-space: nowrap;
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
.btn svg {
|
|
629
|
+
width: 16px;
|
|
630
|
+
height: 16px;
|
|
230
631
|
}
|
|
231
632
|
|
|
232
|
-
|
|
233
|
-
background: var(--
|
|
633
|
+
.btn-primary {
|
|
634
|
+
background: var(--accent);
|
|
635
|
+
color: white;
|
|
636
|
+
box-shadow: var(--shadow-sm), inset 0 1px 0 rgba(255,255,255,0.15);
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
.btn-primary:hover {
|
|
640
|
+
background: var(--accent-hover);
|
|
234
641
|
transform: translateY(-1px);
|
|
235
|
-
box-shadow: 0
|
|
642
|
+
box-shadow: var(--shadow-md), inset 0 1px 0 rgba(255,255,255,0.15);
|
|
236
643
|
}
|
|
237
644
|
|
|
238
|
-
|
|
645
|
+
.btn-primary:active {
|
|
239
646
|
transform: translateY(0);
|
|
240
|
-
box-shadow:
|
|
647
|
+
box-shadow: var(--shadow-xs);
|
|
241
648
|
}
|
|
242
649
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
box-shadow: none;
|
|
650
|
+
.btn-secondary {
|
|
651
|
+
background: var(--bg-glass);
|
|
652
|
+
color: var(--text-primary);
|
|
653
|
+
border: 1px solid var(--border);
|
|
248
654
|
}
|
|
249
655
|
|
|
250
|
-
.
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
margin-bottom: 1.5rem;
|
|
656
|
+
.btn-secondary:hover {
|
|
657
|
+
background: var(--bg-glass-hover);
|
|
658
|
+
border-color: var(--border-strong);
|
|
254
659
|
}
|
|
255
660
|
|
|
256
|
-
|
|
257
|
-
background:
|
|
661
|
+
.btn-ghost {
|
|
662
|
+
background: transparent;
|
|
663
|
+
color: var(--text-secondary);
|
|
258
664
|
}
|
|
259
665
|
|
|
260
|
-
|
|
261
|
-
background: var(--
|
|
666
|
+
.btn-ghost:hover {
|
|
667
|
+
background: var(--bg-glass);
|
|
668
|
+
color: var(--text-primary);
|
|
262
669
|
}
|
|
263
670
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
671
|
+
.btn-danger {
|
|
672
|
+
background: var(--danger);
|
|
673
|
+
color: white;
|
|
267
674
|
}
|
|
268
675
|
|
|
269
|
-
.
|
|
270
|
-
|
|
676
|
+
.btn-danger:hover {
|
|
677
|
+
background: #e6352b;
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
.btn-sm {
|
|
681
|
+
padding: 6px 12px;
|
|
682
|
+
font-size: 0.8125rem;
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
.btn-lg {
|
|
686
|
+
padding: 14px 28px;
|
|
687
|
+
font-size: 1rem;
|
|
688
|
+
border-radius: var(--radius-lg);
|
|
689
|
+
}
|
|
690
|
+
|
|
691
|
+
.btn:disabled {
|
|
692
|
+
opacity: 0.5;
|
|
693
|
+
cursor: not-allowed;
|
|
694
|
+
transform: none !important;
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
/* ============ Form Elements ============ */
|
|
698
|
+
.form-group {
|
|
699
|
+
margin-bottom: 20px;
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
.form-label {
|
|
703
|
+
display: block;
|
|
271
704
|
font-size: 0.875rem;
|
|
272
|
-
|
|
705
|
+
font-weight: 500;
|
|
706
|
+
color: var(--text-secondary);
|
|
707
|
+
margin-bottom: 8px;
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
.form-input {
|
|
711
|
+
width: 100%;
|
|
712
|
+
padding: 12px 16px;
|
|
713
|
+
background: var(--bg-input);
|
|
273
714
|
border: 1px solid var(--border);
|
|
274
|
-
|
|
715
|
+
border-radius: var(--radius-md);
|
|
716
|
+
font-family: inherit;
|
|
717
|
+
font-size: 0.9375rem;
|
|
275
718
|
color: var(--text-primary);
|
|
276
|
-
|
|
719
|
+
transition: all var(--transition-fast);
|
|
277
720
|
}
|
|
278
721
|
|
|
279
|
-
.
|
|
722
|
+
.form-input:focus {
|
|
280
723
|
outline: none;
|
|
281
724
|
border-color: var(--accent);
|
|
725
|
+
box-shadow: 0 0 0 3px var(--accent-subtle);
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
.form-input::placeholder {
|
|
729
|
+
color: var(--text-tertiary);
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
textarea.form-input {
|
|
733
|
+
min-height: 120px;
|
|
734
|
+
resize: vertical;
|
|
735
|
+
line-height: 1.6;
|
|
736
|
+
}
|
|
737
|
+
|
|
738
|
+
.form-select {
|
|
739
|
+
appearance: none;
|
|
740
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236e6e73' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
|
|
741
|
+
background-repeat: no-repeat;
|
|
742
|
+
background-position: right 12px center;
|
|
743
|
+
padding-right: 40px;
|
|
744
|
+
cursor: pointer;
|
|
745
|
+
}
|
|
746
|
+
|
|
747
|
+
.form-range {
|
|
748
|
+
width: 100%;
|
|
749
|
+
height: 4px;
|
|
750
|
+
background: var(--border);
|
|
751
|
+
border-radius: var(--radius-full);
|
|
752
|
+
appearance: none;
|
|
753
|
+
cursor: pointer;
|
|
754
|
+
}
|
|
755
|
+
|
|
756
|
+
.form-range::-webkit-slider-thumb {
|
|
757
|
+
appearance: none;
|
|
758
|
+
width: 20px;
|
|
759
|
+
height: 20px;
|
|
760
|
+
background: var(--accent);
|
|
761
|
+
border-radius: 50%;
|
|
762
|
+
cursor: pointer;
|
|
763
|
+
box-shadow: var(--shadow-sm);
|
|
764
|
+
transition: transform var(--transition-fast);
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
.form-range::-webkit-slider-thumb:hover {
|
|
768
|
+
transform: scale(1.15);
|
|
769
|
+
}
|
|
770
|
+
|
|
771
|
+
/* Input Group */
|
|
772
|
+
.input-group {
|
|
773
|
+
display: flex;
|
|
774
|
+
gap: 8px;
|
|
775
|
+
}
|
|
776
|
+
|
|
777
|
+
.input-group .form-input {
|
|
778
|
+
flex: 1;
|
|
779
|
+
}
|
|
780
|
+
|
|
781
|
+
/* ============ Toolbar ============ */
|
|
782
|
+
.toolbar {
|
|
783
|
+
display: flex;
|
|
784
|
+
align-items: center;
|
|
785
|
+
gap: 12px;
|
|
786
|
+
margin-bottom: 24px;
|
|
787
|
+
flex-wrap: wrap;
|
|
788
|
+
}
|
|
789
|
+
|
|
790
|
+
.toolbar-group {
|
|
791
|
+
display: flex;
|
|
792
|
+
align-items: center;
|
|
793
|
+
gap: 8px;
|
|
794
|
+
}
|
|
795
|
+
|
|
796
|
+
.toolbar-divider {
|
|
797
|
+
width: 1px;
|
|
798
|
+
height: 24px;
|
|
799
|
+
background: var(--border);
|
|
800
|
+
margin: 0 4px;
|
|
282
801
|
}
|
|
283
802
|
|
|
284
|
-
/* List
|
|
803
|
+
/* ============ List Items ============ */
|
|
285
804
|
.list {
|
|
286
805
|
display: flex;
|
|
287
806
|
flex-direction: column;
|
|
288
|
-
gap:
|
|
807
|
+
gap: 12px;
|
|
289
808
|
}
|
|
290
809
|
|
|
291
810
|
.list-item {
|
|
292
|
-
background: var(--bg-
|
|
811
|
+
background: var(--bg-glass);
|
|
812
|
+
backdrop-filter: blur(var(--blur-sm));
|
|
813
|
+
-webkit-backdrop-filter: blur(var(--blur-sm));
|
|
293
814
|
border: 1px solid var(--border);
|
|
294
|
-
border-radius: var(--radius);
|
|
295
|
-
padding:
|
|
296
|
-
transition: all var(--transition);
|
|
815
|
+
border-radius: var(--radius-lg);
|
|
816
|
+
padding: 20px;
|
|
817
|
+
transition: all var(--transition-fast);
|
|
818
|
+
cursor: default;
|
|
297
819
|
}
|
|
298
820
|
|
|
299
821
|
.list-item:hover {
|
|
300
|
-
border-color: var(--border-
|
|
301
|
-
box-shadow:
|
|
822
|
+
border-color: var(--border-strong);
|
|
823
|
+
box-shadow: var(--shadow-md);
|
|
824
|
+
transform: translateY(-1px);
|
|
825
|
+
}
|
|
826
|
+
|
|
827
|
+
.list-item.clickable {
|
|
828
|
+
cursor: pointer;
|
|
302
829
|
}
|
|
303
830
|
|
|
831
|
+
/* Memory Item */
|
|
304
832
|
.memory-item .content {
|
|
305
|
-
font-size:
|
|
833
|
+
font-size: 0.9375rem;
|
|
306
834
|
line-height: 1.7;
|
|
307
|
-
|
|
835
|
+
color: var(--text-primary);
|
|
836
|
+
margin-bottom: 16px;
|
|
308
837
|
white-space: pre-wrap;
|
|
309
838
|
}
|
|
310
839
|
|
|
311
840
|
.memory-item .meta {
|
|
312
841
|
display: flex;
|
|
313
|
-
|
|
842
|
+
flex-wrap: wrap;
|
|
843
|
+
gap: 16px;
|
|
314
844
|
font-size: 0.8125rem;
|
|
315
|
-
color: var(--text-
|
|
845
|
+
color: var(--text-tertiary);
|
|
316
846
|
}
|
|
317
847
|
|
|
318
|
-
.memory-item .meta
|
|
848
|
+
.memory-item .meta-item {
|
|
319
849
|
display: flex;
|
|
320
850
|
align-items: center;
|
|
321
|
-
gap:
|
|
851
|
+
gap: 6px;
|
|
852
|
+
}
|
|
853
|
+
|
|
854
|
+
.memory-item .meta-item svg {
|
|
855
|
+
width: 14px;
|
|
856
|
+
height: 14px;
|
|
857
|
+
opacity: 0.7;
|
|
322
858
|
}
|
|
323
859
|
|
|
324
860
|
.memory-item .actions {
|
|
325
861
|
display: flex;
|
|
326
|
-
gap:
|
|
327
|
-
margin-top:
|
|
328
|
-
padding-top:
|
|
329
|
-
border-top: 1px solid var(--
|
|
862
|
+
gap: 8px;
|
|
863
|
+
margin-top: 16px;
|
|
864
|
+
padding-top: 16px;
|
|
865
|
+
border-top: 1px solid var(--divider);
|
|
330
866
|
}
|
|
331
867
|
|
|
332
|
-
.
|
|
868
|
+
.score-badge {
|
|
869
|
+
display: inline-flex;
|
|
870
|
+
align-items: center;
|
|
871
|
+
padding: 4px 10px;
|
|
872
|
+
background: var(--accent-subtle);
|
|
873
|
+
color: var(--accent);
|
|
333
874
|
font-size: 0.75rem;
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
.memory-item .actions button:hover {
|
|
340
|
-
background: var(--border);
|
|
341
|
-
color: var(--text-primary);
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
.memory-item .actions .delete-btn:hover {
|
|
345
|
-
background: var(--danger);
|
|
346
|
-
color: white;
|
|
875
|
+
font-weight: 600;
|
|
876
|
+
border-radius: var(--radius-full);
|
|
877
|
+
font-variant-numeric: tabular-nums;
|
|
347
878
|
}
|
|
348
879
|
|
|
349
|
-
/* Entity
|
|
880
|
+
/* Entity Item */
|
|
350
881
|
.entity-item {
|
|
351
882
|
cursor: pointer;
|
|
352
883
|
}
|
|
353
884
|
|
|
354
|
-
.entity-item .name {
|
|
885
|
+
.entity-item .entity-name {
|
|
355
886
|
font-size: 1rem;
|
|
356
|
-
font-weight:
|
|
357
|
-
margin-bottom:
|
|
887
|
+
font-weight: 600;
|
|
888
|
+
margin-bottom: 4px;
|
|
358
889
|
}
|
|
359
890
|
|
|
360
|
-
.entity-item .type {
|
|
891
|
+
.entity-item .entity-type {
|
|
892
|
+
display: inline-flex;
|
|
893
|
+
align-items: center;
|
|
894
|
+
gap: 6px;
|
|
361
895
|
font-size: 0.8125rem;
|
|
362
|
-
color: var(--text-
|
|
896
|
+
color: var(--text-tertiary);
|
|
363
897
|
text-transform: capitalize;
|
|
364
898
|
}
|
|
365
899
|
|
|
366
|
-
|
|
900
|
+
.entity-item .entity-type svg {
|
|
901
|
+
width: 14px;
|
|
902
|
+
height: 14px;
|
|
903
|
+
}
|
|
904
|
+
|
|
905
|
+
/* ============ Empty State ============ */
|
|
906
|
+
.empty-state {
|
|
907
|
+
display: flex;
|
|
908
|
+
flex-direction: column;
|
|
909
|
+
align-items: center;
|
|
910
|
+
justify-content: center;
|
|
911
|
+
padding: 60px 24px;
|
|
912
|
+
text-align: center;
|
|
913
|
+
}
|
|
914
|
+
|
|
915
|
+
.empty-state svg {
|
|
916
|
+
width: 64px;
|
|
917
|
+
height: 64px;
|
|
918
|
+
color: var(--text-tertiary);
|
|
919
|
+
margin-bottom: 16px;
|
|
920
|
+
opacity: 0.5;
|
|
921
|
+
}
|
|
922
|
+
|
|
923
|
+
.empty-state h3 {
|
|
924
|
+
font-size: 1.125rem;
|
|
925
|
+
margin-bottom: 8px;
|
|
926
|
+
color: var(--text-secondary);
|
|
927
|
+
}
|
|
928
|
+
|
|
929
|
+
.empty-state p {
|
|
930
|
+
color: var(--text-tertiary);
|
|
931
|
+
font-size: 0.9375rem;
|
|
932
|
+
max-width: 300px;
|
|
933
|
+
}
|
|
934
|
+
|
|
935
|
+
/* ============ Load More ============ */
|
|
936
|
+
.load-more-container {
|
|
937
|
+
display: flex;
|
|
938
|
+
justify-content: center;
|
|
939
|
+
padding: 24px 0;
|
|
940
|
+
}
|
|
941
|
+
|
|
942
|
+
/* ============ Graph Container ============ */
|
|
367
943
|
#graph-container {
|
|
368
944
|
width: 100%;
|
|
369
|
-
height:
|
|
370
|
-
background: var(--bg-
|
|
945
|
+
height: 500px;
|
|
946
|
+
background: var(--bg-glass);
|
|
947
|
+
backdrop-filter: blur(var(--blur-sm));
|
|
371
948
|
border: 1px solid var(--border);
|
|
949
|
+
border-radius: var(--radius-lg);
|
|
950
|
+
overflow: hidden;
|
|
372
951
|
}
|
|
373
952
|
|
|
374
|
-
/* Modal */
|
|
953
|
+
/* ============ Modal ============ */
|
|
375
954
|
.modal {
|
|
376
955
|
position: fixed;
|
|
377
956
|
inset: 0;
|
|
378
|
-
background: rgba(0, 0, 0, 0.
|
|
957
|
+
background: rgba(0, 0, 0, 0.5);
|
|
958
|
+
backdrop-filter: blur(4px);
|
|
379
959
|
display: flex;
|
|
380
960
|
align-items: center;
|
|
381
961
|
justify-content: center;
|
|
382
|
-
padding:
|
|
962
|
+
padding: 24px;
|
|
963
|
+
z-index: 200;
|
|
964
|
+
animation: modalFadeIn 0.2s ease;
|
|
383
965
|
}
|
|
384
966
|
|
|
385
967
|
.modal.hidden {
|
|
386
968
|
display: none;
|
|
387
969
|
}
|
|
388
970
|
|
|
971
|
+
@keyframes modalFadeIn {
|
|
972
|
+
from { opacity: 0; }
|
|
973
|
+
to { opacity: 1; }
|
|
974
|
+
}
|
|
975
|
+
|
|
389
976
|
.modal-content {
|
|
390
|
-
background: var(--bg-
|
|
977
|
+
background: var(--bg-solid);
|
|
391
978
|
border: 1px solid var(--border);
|
|
392
|
-
|
|
979
|
+
border-radius: var(--radius-xl);
|
|
980
|
+
padding: 28px;
|
|
393
981
|
width: 100%;
|
|
394
|
-
max-width:
|
|
395
|
-
max-height:
|
|
982
|
+
max-width: 560px;
|
|
983
|
+
max-height: 85vh;
|
|
396
984
|
overflow-y: auto;
|
|
985
|
+
box-shadow: var(--shadow-xl);
|
|
986
|
+
animation: modalSlideIn 0.25s cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
397
987
|
}
|
|
398
988
|
|
|
399
|
-
|
|
400
|
-
|
|
989
|
+
@keyframes modalSlideIn {
|
|
990
|
+
from { opacity: 0; transform: scale(0.95) translateY(10px); }
|
|
991
|
+
to { opacity: 1; transform: scale(1) translateY(0); }
|
|
401
992
|
}
|
|
402
993
|
|
|
403
|
-
.modal-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
padding: 0.75rem 1rem;
|
|
409
|
-
border: 1px solid var(--border);
|
|
410
|
-
background: var(--bg-secondary);
|
|
411
|
-
color: var(--text-primary);
|
|
412
|
-
resize: vertical;
|
|
413
|
-
}
|
|
414
|
-
|
|
415
|
-
.modal-content textarea:focus,
|
|
416
|
-
.modal-content input:focus {
|
|
417
|
-
outline: none;
|
|
418
|
-
border-color: var(--accent);
|
|
994
|
+
.modal-header {
|
|
995
|
+
display: flex;
|
|
996
|
+
align-items: center;
|
|
997
|
+
justify-content: space-between;
|
|
998
|
+
margin-bottom: 24px;
|
|
419
999
|
}
|
|
420
1000
|
|
|
421
|
-
.
|
|
422
|
-
|
|
423
|
-
gap: 1.5rem;
|
|
424
|
-
margin-top: 1rem;
|
|
1001
|
+
.modal-header h2 {
|
|
1002
|
+
font-size: 1.25rem;
|
|
425
1003
|
}
|
|
426
1004
|
|
|
427
|
-
.
|
|
1005
|
+
.modal-close {
|
|
1006
|
+
width: 32px;
|
|
1007
|
+
height: 32px;
|
|
428
1008
|
display: flex;
|
|
429
1009
|
align-items: center;
|
|
430
|
-
|
|
431
|
-
|
|
1010
|
+
justify-content: center;
|
|
1011
|
+
background: var(--bg-glass);
|
|
1012
|
+
border: none;
|
|
1013
|
+
border-radius: var(--radius-full);
|
|
1014
|
+
cursor: pointer;
|
|
432
1015
|
color: var(--text-secondary);
|
|
1016
|
+
transition: all var(--transition-fast);
|
|
433
1017
|
}
|
|
434
1018
|
|
|
435
|
-
.
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
font-size: 0.875rem;
|
|
1019
|
+
.modal-close:hover {
|
|
1020
|
+
background: var(--danger-subtle);
|
|
1021
|
+
color: var(--danger);
|
|
439
1022
|
}
|
|
440
1023
|
|
|
441
|
-
.
|
|
442
|
-
width:
|
|
1024
|
+
.modal-close svg {
|
|
1025
|
+
width: 16px;
|
|
1026
|
+
height: 16px;
|
|
443
1027
|
}
|
|
444
1028
|
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
min-width: 2rem;
|
|
1029
|
+
.modal-body {
|
|
1030
|
+
margin-bottom: 24px;
|
|
448
1031
|
}
|
|
449
1032
|
|
|
450
|
-
.modal-
|
|
1033
|
+
.modal-footer {
|
|
451
1034
|
display: flex;
|
|
452
1035
|
justify-content: flex-end;
|
|
453
|
-
gap:
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
border-top: 1px solid var(--border);
|
|
1036
|
+
gap: 12px;
|
|
1037
|
+
padding-top: 20px;
|
|
1038
|
+
border-top: 1px solid var(--divider);
|
|
457
1039
|
}
|
|
458
1040
|
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
background: var(--bg-tertiary);
|
|
462
|
-
color: var(--text-secondary);
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
#modal-cancel:hover,
|
|
466
|
-
#entity-modal-close:hover {
|
|
467
|
-
background: var(--border);
|
|
468
|
-
color: var(--text-primary);
|
|
469
|
-
}
|
|
470
|
-
|
|
471
|
-
/* Entity detail modal */
|
|
472
|
-
#entity-modal-body {
|
|
473
|
-
font-size: 0.9375rem;
|
|
1041
|
+
.modal-wide {
|
|
1042
|
+
max-width: 720px;
|
|
474
1043
|
}
|
|
475
1044
|
|
|
1045
|
+
/* Entity Modal */
|
|
476
1046
|
#entity-modal-body h3 {
|
|
477
|
-
font-size: 0.
|
|
478
|
-
|
|
1047
|
+
font-size: 0.75rem;
|
|
1048
|
+
font-weight: 600;
|
|
479
1049
|
text-transform: uppercase;
|
|
480
|
-
letter-spacing: 0.
|
|
481
|
-
|
|
1050
|
+
letter-spacing: 0.08em;
|
|
1051
|
+
color: var(--text-tertiary);
|
|
1052
|
+
margin: 24px 0 12px;
|
|
482
1053
|
}
|
|
483
1054
|
|
|
484
1055
|
#entity-modal-body h3:first-child {
|
|
@@ -487,99 +1058,40 @@ button:disabled {
|
|
|
487
1058
|
|
|
488
1059
|
#entity-modal-body ul {
|
|
489
1060
|
list-style: none;
|
|
490
|
-
padding: 0;
|
|
491
1061
|
}
|
|
492
1062
|
|
|
493
1063
|
#entity-modal-body li {
|
|
494
|
-
padding:
|
|
495
|
-
border-bottom: 1px solid var(--
|
|
1064
|
+
padding: 12px 0;
|
|
1065
|
+
border-bottom: 1px solid var(--divider);
|
|
1066
|
+
font-size: 0.9375rem;
|
|
1067
|
+
color: var(--text-secondary);
|
|
496
1068
|
}
|
|
497
1069
|
|
|
498
1070
|
#entity-modal-body li:last-child {
|
|
499
1071
|
border-bottom: none;
|
|
500
1072
|
}
|
|
501
1073
|
|
|
502
|
-
/*
|
|
503
|
-
.empty-state {
|
|
504
|
-
text-align: center;
|
|
505
|
-
padding: 3rem 2rem;
|
|
506
|
-
color: var(--text-muted);
|
|
507
|
-
font-style: italic;
|
|
508
|
-
}
|
|
509
|
-
|
|
510
|
-
/* Load more button */
|
|
511
|
-
.load-more-container {
|
|
512
|
-
display: flex;
|
|
513
|
-
justify-content: center;
|
|
514
|
-
padding: 1.5rem 0;
|
|
515
|
-
}
|
|
516
|
-
|
|
517
|
-
.load-more-btn {
|
|
518
|
-
background: var(--bg-tertiary);
|
|
519
|
-
color: var(--text-secondary);
|
|
520
|
-
padding: 0.75rem 2rem;
|
|
521
|
-
font-size: 0.875rem;
|
|
522
|
-
}
|
|
523
|
-
|
|
524
|
-
.load-more-btn:hover {
|
|
525
|
-
background: var(--border);
|
|
526
|
-
color: var(--text-primary);
|
|
527
|
-
}
|
|
528
|
-
|
|
529
|
-
/* Score badge */
|
|
530
|
-
.score {
|
|
531
|
-
display: inline-block;
|
|
532
|
-
font-size: 0.6875rem;
|
|
533
|
-
padding: 0.125rem 0.375rem;
|
|
534
|
-
background: var(--bg-tertiary);
|
|
535
|
-
color: var(--text-muted);
|
|
536
|
-
font-variant-numeric: tabular-nums;
|
|
537
|
-
}
|
|
538
|
-
|
|
539
|
-
/* Chat toggle button */
|
|
540
|
-
.chat-toggle {
|
|
541
|
-
margin-left: auto;
|
|
542
|
-
background: var(--accent);
|
|
543
|
-
font-size: 0.75rem;
|
|
544
|
-
font-weight: 600;
|
|
545
|
-
padding: 0.5rem 1rem;
|
|
546
|
-
letter-spacing: 0.02em;
|
|
547
|
-
}
|
|
548
|
-
|
|
549
|
-
.chat-toggle:hover {
|
|
550
|
-
background: var(--accent-hover);
|
|
551
|
-
}
|
|
552
|
-
|
|
553
|
-
.chat-toggle.active {
|
|
554
|
-
background: var(--text-primary);
|
|
555
|
-
}
|
|
556
|
-
|
|
557
|
-
.chat-toggle.disabled {
|
|
558
|
-
background: var(--text-muted);
|
|
559
|
-
cursor: not-allowed;
|
|
560
|
-
opacity: 0.6;
|
|
561
|
-
}
|
|
562
|
-
|
|
563
|
-
/* Chat panel */
|
|
1074
|
+
/* ============ Chat Panel ============ */
|
|
564
1075
|
.chat-panel {
|
|
565
1076
|
position: fixed;
|
|
566
1077
|
top: 0;
|
|
567
1078
|
right: 0;
|
|
568
|
-
width:
|
|
1079
|
+
width: var(--chat-width);
|
|
569
1080
|
height: 100vh;
|
|
570
|
-
background: var(--bg-
|
|
1081
|
+
background: var(--bg-glass);
|
|
1082
|
+
backdrop-filter: blur(var(--blur-xl)) saturate(180%);
|
|
1083
|
+
-webkit-backdrop-filter: blur(var(--blur-xl)) saturate(180%);
|
|
571
1084
|
border-left: 1px solid var(--border);
|
|
572
1085
|
display: flex;
|
|
573
1086
|
flex-direction: column;
|
|
574
|
-
|
|
575
|
-
z-index: 100;
|
|
1087
|
+
z-index: 150;
|
|
576
1088
|
transform: translateX(0);
|
|
577
|
-
transition: transform
|
|
1089
|
+
transition: transform var(--transition-normal);
|
|
1090
|
+
box-shadow: var(--shadow-xl);
|
|
578
1091
|
}
|
|
579
1092
|
|
|
580
1093
|
.chat-panel.hidden {
|
|
581
1094
|
transform: translateX(100%);
|
|
582
|
-
visibility: hidden;
|
|
583
1095
|
pointer-events: none;
|
|
584
1096
|
}
|
|
585
1097
|
|
|
@@ -587,167 +1099,163 @@ button:disabled {
|
|
|
587
1099
|
display: flex;
|
|
588
1100
|
align-items: center;
|
|
589
1101
|
justify-content: space-between;
|
|
590
|
-
padding:
|
|
591
|
-
background: var(--bg-secondary);
|
|
1102
|
+
padding: 16px 20px;
|
|
592
1103
|
border-bottom: 1px solid var(--border);
|
|
1104
|
+
background: var(--bg-glass);
|
|
593
1105
|
}
|
|
594
1106
|
|
|
595
1107
|
.chat-header h3 {
|
|
596
|
-
font-size:
|
|
1108
|
+
font-size: 1rem;
|
|
597
1109
|
font-weight: 600;
|
|
598
|
-
letter-spacing: -0.01em;
|
|
599
|
-
}
|
|
600
|
-
|
|
601
|
-
.chat-actions {
|
|
602
1110
|
display: flex;
|
|
603
1111
|
align-items: center;
|
|
604
|
-
gap:
|
|
1112
|
+
gap: 8px;
|
|
605
1113
|
}
|
|
606
1114
|
|
|
607
|
-
.chat-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
background: var(--bg-tertiary);
|
|
612
|
-
color: var(--text-secondary);
|
|
613
|
-
border-radius: var(--radius);
|
|
614
|
-
}
|
|
615
|
-
|
|
616
|
-
.chat-actions button:hover {
|
|
617
|
-
background: var(--border);
|
|
618
|
-
color: var(--text-primary);
|
|
619
|
-
transform: none;
|
|
620
|
-
box-shadow: none;
|
|
621
|
-
}
|
|
622
|
-
|
|
623
|
-
#chat-close {
|
|
624
|
-
font-size: 1.125rem;
|
|
625
|
-
padding: 0.25rem 0.5rem;
|
|
626
|
-
line-height: 1;
|
|
627
|
-
background: transparent;
|
|
628
|
-
color: var(--text-muted);
|
|
1115
|
+
.chat-header h3 svg {
|
|
1116
|
+
width: 20px;
|
|
1117
|
+
height: 20px;
|
|
1118
|
+
color: var(--accent);
|
|
629
1119
|
}
|
|
630
1120
|
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
1121
|
+
.chat-actions {
|
|
1122
|
+
display: flex;
|
|
1123
|
+
gap: 8px;
|
|
634
1124
|
}
|
|
635
1125
|
|
|
636
1126
|
.chat-messages {
|
|
637
1127
|
flex: 1;
|
|
638
1128
|
overflow-y: auto;
|
|
639
|
-
padding:
|
|
1129
|
+
padding: 20px;
|
|
640
1130
|
display: flex;
|
|
641
1131
|
flex-direction: column;
|
|
642
|
-
gap:
|
|
1132
|
+
gap: 16px;
|
|
643
1133
|
}
|
|
644
1134
|
|
|
645
1135
|
.chat-message {
|
|
646
|
-
|
|
647
|
-
|
|
1136
|
+
max-width: 85%;
|
|
1137
|
+
padding: 14px 18px;
|
|
1138
|
+
font-size: 0.9375rem;
|
|
648
1139
|
line-height: 1.6;
|
|
649
|
-
|
|
650
|
-
|
|
1140
|
+
border-radius: var(--radius-lg);
|
|
1141
|
+
animation: messageIn 0.2s ease;
|
|
1142
|
+
}
|
|
1143
|
+
|
|
1144
|
+
@keyframes messageIn {
|
|
1145
|
+
from { opacity: 0; transform: translateY(8px); }
|
|
1146
|
+
to { opacity: 1; transform: translateY(0); }
|
|
651
1147
|
}
|
|
652
1148
|
|
|
653
1149
|
.chat-message.user {
|
|
654
1150
|
background: var(--accent);
|
|
655
1151
|
color: white;
|
|
656
1152
|
align-self: flex-end;
|
|
657
|
-
|
|
1153
|
+
border-bottom-right-radius: 4px;
|
|
1154
|
+
box-shadow: var(--shadow-sm);
|
|
658
1155
|
}
|
|
659
1156
|
|
|
660
1157
|
.chat-message.assistant {
|
|
661
|
-
background: var(--bg-
|
|
1158
|
+
background: var(--bg-solid);
|
|
662
1159
|
border: 1px solid var(--border);
|
|
663
1160
|
align-self: flex-start;
|
|
1161
|
+
border-bottom-left-radius: 4px;
|
|
664
1162
|
}
|
|
665
1163
|
|
|
666
1164
|
.chat-message p {
|
|
667
|
-
margin: 0 0
|
|
1165
|
+
margin: 0 0 8px;
|
|
668
1166
|
}
|
|
669
1167
|
|
|
670
1168
|
.chat-message p:last-child {
|
|
671
1169
|
margin-bottom: 0;
|
|
672
1170
|
}
|
|
673
1171
|
|
|
674
|
-
.chat-message
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
margin: 0.25rem 0;
|
|
681
|
-
font-size: 0.875rem;
|
|
682
|
-
color: var(--text-secondary);
|
|
1172
|
+
.chat-message code {
|
|
1173
|
+
font-family: var(--font-mono);
|
|
1174
|
+
font-size: 0.8125rem;
|
|
1175
|
+
background: var(--bg-glass);
|
|
1176
|
+
padding: 2px 6px;
|
|
1177
|
+
border-radius: 4px;
|
|
683
1178
|
}
|
|
684
1179
|
|
|
685
|
-
.chat-message.user
|
|
686
|
-
|
|
1180
|
+
.chat-message.user code {
|
|
1181
|
+
background: rgba(255, 255, 255, 0.2);
|
|
687
1182
|
}
|
|
688
1183
|
|
|
689
1184
|
.chat-message pre {
|
|
690
|
-
background: var(--bg-
|
|
691
|
-
padding:
|
|
692
|
-
|
|
1185
|
+
background: var(--bg-base);
|
|
1186
|
+
padding: 12px;
|
|
1187
|
+
border-radius: var(--radius-sm);
|
|
693
1188
|
overflow-x: auto;
|
|
694
|
-
|
|
695
|
-
font-size: 0.8125rem;
|
|
1189
|
+
margin: 8px 0;
|
|
696
1190
|
}
|
|
697
1191
|
|
|
698
|
-
.chat-message
|
|
699
|
-
background:
|
|
700
|
-
|
|
701
|
-
color: var(--text-muted);
|
|
702
|
-
font-style: italic;
|
|
1192
|
+
.chat-message pre code {
|
|
1193
|
+
background: none;
|
|
1194
|
+
padding: 0;
|
|
703
1195
|
}
|
|
704
1196
|
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
1197
|
+
.chat-message ul {
|
|
1198
|
+
margin: 8px 0;
|
|
1199
|
+
padding-left: 20px;
|
|
1200
|
+
}
|
|
1201
|
+
|
|
1202
|
+
.chat-message li {
|
|
1203
|
+
margin: 4px 0;
|
|
708
1204
|
}
|
|
709
1205
|
|
|
1206
|
+
/* Streaming indicator */
|
|
710
1207
|
.chat-message.streaming::after {
|
|
711
1208
|
content: '';
|
|
712
1209
|
display: inline-block;
|
|
713
|
-
width:
|
|
714
|
-
height:
|
|
1210
|
+
width: 8px;
|
|
1211
|
+
height: 16px;
|
|
715
1212
|
background: var(--accent);
|
|
716
|
-
margin-left:
|
|
717
|
-
|
|
1213
|
+
margin-left: 4px;
|
|
1214
|
+
border-radius: 2px;
|
|
1215
|
+
animation: blink 0.8s steps(2) infinite;
|
|
718
1216
|
vertical-align: text-bottom;
|
|
719
1217
|
}
|
|
720
1218
|
|
|
721
1219
|
@keyframes blink {
|
|
722
|
-
0%,
|
|
723
|
-
|
|
1220
|
+
0%, 100% { opacity: 1; }
|
|
1221
|
+
50% { opacity: 0; }
|
|
724
1222
|
}
|
|
725
1223
|
|
|
726
|
-
/* Tool indicator in streaming */
|
|
727
1224
|
.tool-indicator {
|
|
728
|
-
display:
|
|
729
|
-
|
|
730
|
-
|
|
1225
|
+
display: flex;
|
|
1226
|
+
align-items: center;
|
|
1227
|
+
gap: 8px;
|
|
1228
|
+
font-size: 0.8125rem;
|
|
1229
|
+
color: var(--text-tertiary);
|
|
731
1230
|
font-style: italic;
|
|
732
|
-
padding:
|
|
1231
|
+
padding: 8px 0;
|
|
733
1232
|
border-top: 1px dashed var(--border);
|
|
734
|
-
margin-top:
|
|
1233
|
+
margin-top: 8px;
|
|
1234
|
+
}
|
|
1235
|
+
|
|
1236
|
+
.tool-indicator svg {
|
|
1237
|
+
width: 14px;
|
|
1238
|
+
height: 14px;
|
|
1239
|
+
animation: spin 1.5s linear infinite;
|
|
735
1240
|
}
|
|
736
1241
|
|
|
737
|
-
|
|
738
|
-
|
|
1242
|
+
@keyframes spin {
|
|
1243
|
+
from { transform: rotate(0deg); }
|
|
1244
|
+
to { transform: rotate(360deg); }
|
|
739
1245
|
}
|
|
740
1246
|
|
|
741
1247
|
.chat-status {
|
|
742
|
-
padding:
|
|
1248
|
+
padding: 8px 20px;
|
|
743
1249
|
font-size: 0.75rem;
|
|
744
|
-
color: var(--text-muted);
|
|
745
1250
|
text-align: center;
|
|
1251
|
+
color: var(--text-tertiary);
|
|
1252
|
+
background: var(--bg-glass);
|
|
1253
|
+
border-top: 1px solid var(--divider);
|
|
746
1254
|
}
|
|
747
1255
|
|
|
748
1256
|
.chat-status.error {
|
|
1257
|
+
background: var(--danger-subtle);
|
|
749
1258
|
color: var(--danger);
|
|
750
|
-
background: rgba(220, 38, 38, 0.1);
|
|
751
1259
|
}
|
|
752
1260
|
|
|
753
1261
|
.chat-status:empty {
|
|
@@ -756,243 +1264,239 @@ button:disabled {
|
|
|
756
1264
|
|
|
757
1265
|
.chat-input-form {
|
|
758
1266
|
display: flex;
|
|
759
|
-
gap:
|
|
760
|
-
padding:
|
|
761
|
-
background: var(--bg-
|
|
1267
|
+
gap: 12px;
|
|
1268
|
+
padding: 16px 20px;
|
|
1269
|
+
background: var(--bg-glass);
|
|
762
1270
|
border-top: 1px solid var(--border);
|
|
763
1271
|
}
|
|
764
1272
|
|
|
765
1273
|
.chat-input-form input {
|
|
766
1274
|
flex: 1;
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
padding: 0.5rem 0.75rem;
|
|
1275
|
+
padding: 12px 16px;
|
|
1276
|
+
background: var(--bg-input);
|
|
770
1277
|
border: 1px solid var(--border);
|
|
771
|
-
border-radius: var(--radius);
|
|
772
|
-
|
|
1278
|
+
border-radius: var(--radius-full);
|
|
1279
|
+
font-family: inherit;
|
|
1280
|
+
font-size: 0.9375rem;
|
|
773
1281
|
color: var(--text-primary);
|
|
774
|
-
transition:
|
|
1282
|
+
transition: all var(--transition-fast);
|
|
775
1283
|
}
|
|
776
1284
|
|
|
777
1285
|
.chat-input-form input:focus {
|
|
778
1286
|
outline: none;
|
|
779
1287
|
border-color: var(--accent);
|
|
780
|
-
box-shadow: 0 0 0
|
|
1288
|
+
box-shadow: 0 0 0 3px var(--accent-subtle);
|
|
781
1289
|
}
|
|
782
1290
|
|
|
783
|
-
.chat-input-form input
|
|
784
|
-
|
|
785
|
-
color: var(--text-muted);
|
|
786
|
-
cursor: not-allowed;
|
|
1291
|
+
.chat-input-form input::placeholder {
|
|
1292
|
+
color: var(--text-tertiary);
|
|
787
1293
|
}
|
|
788
1294
|
|
|
789
|
-
.chat-input-form input
|
|
790
|
-
|
|
1295
|
+
.chat-input-form input:disabled {
|
|
1296
|
+
background: var(--bg-glass);
|
|
1297
|
+
color: var(--text-tertiary);
|
|
1298
|
+
cursor: not-allowed;
|
|
791
1299
|
}
|
|
792
1300
|
|
|
793
1301
|
.chat-input-form button {
|
|
1302
|
+
width: 44px;
|
|
1303
|
+
height: 44px;
|
|
1304
|
+
display: flex;
|
|
1305
|
+
align-items: center;
|
|
1306
|
+
justify-content: center;
|
|
794
1307
|
background: var(--accent);
|
|
795
|
-
|
|
1308
|
+
border: none;
|
|
1309
|
+
border-radius: var(--radius-full);
|
|
1310
|
+
cursor: pointer;
|
|
1311
|
+
color: white;
|
|
1312
|
+
transition: all var(--transition-fast);
|
|
796
1313
|
}
|
|
797
1314
|
|
|
798
|
-
.chat-input-form button:hover {
|
|
1315
|
+
.chat-input-form button:hover:not(:disabled) {
|
|
799
1316
|
background: var(--accent-hover);
|
|
1317
|
+
transform: scale(1.05);
|
|
800
1318
|
}
|
|
801
1319
|
|
|
802
1320
|
.chat-input-form button:disabled {
|
|
803
|
-
background: var(--text-
|
|
804
|
-
|
|
805
|
-
|
|
1321
|
+
background: var(--text-tertiary);
|
|
1322
|
+
cursor: not-allowed;
|
|
1323
|
+
}
|
|
1324
|
+
|
|
1325
|
+
.chat-input-form button svg {
|
|
1326
|
+
width: 20px;
|
|
1327
|
+
height: 20px;
|
|
806
1328
|
}
|
|
807
1329
|
|
|
808
|
-
/* Adjust main
|
|
809
|
-
body.chat-open main {
|
|
810
|
-
margin-right:
|
|
1330
|
+
/* Adjust main when chat open */
|
|
1331
|
+
body.chat-open .main-wrapper {
|
|
1332
|
+
margin-right: var(--chat-width);
|
|
811
1333
|
}
|
|
812
1334
|
|
|
813
|
-
/* Consolidation View */
|
|
1335
|
+
/* ============ Consolidation View ============ */
|
|
814
1336
|
.consolidation-header {
|
|
815
1337
|
display: flex;
|
|
816
1338
|
justify-content: space-between;
|
|
817
1339
|
align-items: center;
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
1340
|
+
padding: 24px;
|
|
1341
|
+
background: var(--bg-glass);
|
|
1342
|
+
backdrop-filter: blur(var(--blur-sm));
|
|
821
1343
|
border: 1px solid var(--border);
|
|
1344
|
+
border-radius: var(--radius-lg);
|
|
1345
|
+
margin-bottom: 24px;
|
|
822
1346
|
}
|
|
823
1347
|
|
|
824
|
-
.consolidation-
|
|
1348
|
+
.consolidation-stats {
|
|
825
1349
|
display: flex;
|
|
826
|
-
gap:
|
|
827
|
-
font-size: 0.9375rem;
|
|
1350
|
+
gap: 32px;
|
|
828
1351
|
}
|
|
829
1352
|
|
|
830
|
-
.
|
|
831
|
-
|
|
1353
|
+
.stat-block {
|
|
1354
|
+
text-align: center;
|
|
832
1355
|
}
|
|
833
1356
|
|
|
834
|
-
.
|
|
1357
|
+
.stat-value {
|
|
1358
|
+
font-size: 2rem;
|
|
1359
|
+
font-weight: 700;
|
|
835
1360
|
color: var(--text-primary);
|
|
836
|
-
font-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
#run-consolidation-btn {
|
|
840
|
-
background: var(--accent);
|
|
841
|
-
}
|
|
842
|
-
|
|
843
|
-
#run-consolidation-btn:hover {
|
|
844
|
-
background: var(--accent-hover);
|
|
1361
|
+
font-variant-numeric: tabular-nums;
|
|
1362
|
+
line-height: 1;
|
|
845
1363
|
}
|
|
846
1364
|
|
|
847
|
-
|
|
848
|
-
|
|
1365
|
+
.stat-label {
|
|
1366
|
+
font-size: 0.75rem;
|
|
1367
|
+
color: var(--text-tertiary);
|
|
1368
|
+
text-transform: uppercase;
|
|
1369
|
+
letter-spacing: 0.05em;
|
|
1370
|
+
margin-top: 4px;
|
|
849
1371
|
}
|
|
850
1372
|
|
|
851
1373
|
.consolidation-sections {
|
|
852
1374
|
display: flex;
|
|
853
1375
|
flex-direction: column;
|
|
854
|
-
gap:
|
|
1376
|
+
gap: 32px;
|
|
1377
|
+
}
|
|
1378
|
+
|
|
1379
|
+
.section-header {
|
|
1380
|
+
display: flex;
|
|
1381
|
+
align-items: center;
|
|
1382
|
+
gap: 12px;
|
|
1383
|
+
margin-bottom: 16px;
|
|
855
1384
|
}
|
|
856
1385
|
|
|
857
|
-
.
|
|
858
|
-
|
|
1386
|
+
.section-header h2 {
|
|
1387
|
+
font-size: 1.125rem;
|
|
859
1388
|
}
|
|
860
1389
|
|
|
861
1390
|
.section-desc {
|
|
862
1391
|
font-size: 0.875rem;
|
|
863
|
-
color: var(--text-
|
|
864
|
-
margin-
|
|
1392
|
+
color: var(--text-tertiary);
|
|
1393
|
+
margin-top: 4px;
|
|
865
1394
|
}
|
|
866
1395
|
|
|
867
|
-
/* Contradiction
|
|
1396
|
+
/* Contradiction Item */
|
|
868
1397
|
.contradiction-item {
|
|
869
|
-
background: var(--bg-
|
|
1398
|
+
background: var(--bg-glass);
|
|
870
1399
|
border: 1px solid var(--border);
|
|
871
|
-
border-left:
|
|
872
|
-
|
|
1400
|
+
border-left: 4px solid var(--danger);
|
|
1401
|
+
border-radius: var(--radius-lg);
|
|
1402
|
+
padding: 20px;
|
|
873
1403
|
}
|
|
874
1404
|
|
|
875
1405
|
.contradiction-item .description {
|
|
876
1406
|
font-size: 1rem;
|
|
877
|
-
line-height: 1.6;
|
|
878
|
-
margin-bottom: 1rem;
|
|
879
1407
|
font-weight: 500;
|
|
1408
|
+
margin-bottom: 16px;
|
|
880
1409
|
}
|
|
881
1410
|
|
|
882
|
-
.
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
.contradiction-item .memory-quote {
|
|
890
|
-
padding: 0.75rem 1rem;
|
|
891
|
-
background: var(--bg-tertiary);
|
|
892
|
-
font-size: 0.875rem;
|
|
893
|
-
line-height: 1.5;
|
|
1411
|
+
.memory-quote {
|
|
1412
|
+
padding: 16px;
|
|
1413
|
+
background: var(--bg-base);
|
|
1414
|
+
border-radius: var(--radius-md);
|
|
1415
|
+
font-size: 0.9375rem;
|
|
1416
|
+
line-height: 1.6;
|
|
894
1417
|
color: var(--text-secondary);
|
|
1418
|
+
margin-bottom: 12px;
|
|
895
1419
|
}
|
|
896
1420
|
|
|
897
|
-
.
|
|
1421
|
+
.memory-quote .date {
|
|
898
1422
|
display: block;
|
|
899
1423
|
font-size: 0.75rem;
|
|
900
|
-
color: var(--text-
|
|
901
|
-
margin-top:
|
|
1424
|
+
color: var(--text-tertiary);
|
|
1425
|
+
margin-top: 8px;
|
|
902
1426
|
}
|
|
903
1427
|
|
|
904
|
-
.
|
|
905
|
-
display: inline-
|
|
1428
|
+
.entity-tag {
|
|
1429
|
+
display: inline-flex;
|
|
1430
|
+
align-items: center;
|
|
1431
|
+
gap: 4px;
|
|
1432
|
+
padding: 4px 10px;
|
|
1433
|
+
background: var(--bg-glass);
|
|
1434
|
+
border-radius: var(--radius-full);
|
|
906
1435
|
font-size: 0.75rem;
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
color: var(--text-muted);
|
|
910
|
-
margin-bottom: 0.75rem;
|
|
911
|
-
}
|
|
912
|
-
|
|
913
|
-
.contradiction-item .actions {
|
|
914
|
-
padding-top: 1rem;
|
|
915
|
-
border-top: 1px solid var(--border);
|
|
916
|
-
}
|
|
917
|
-
|
|
918
|
-
.contradiction-item .actions button {
|
|
919
|
-
font-size: 0.8125rem;
|
|
920
|
-
padding: 0.5rem 1rem;
|
|
921
|
-
background: var(--text-primary);
|
|
922
|
-
color: var(--bg-primary);
|
|
1436
|
+
color: var(--text-secondary);
|
|
1437
|
+
margin-bottom: 16px;
|
|
923
1438
|
}
|
|
924
1439
|
|
|
925
|
-
/* Digest
|
|
1440
|
+
/* Digest Item */
|
|
926
1441
|
.digest-level {
|
|
927
|
-
margin-bottom:
|
|
1442
|
+
margin-bottom: 24px;
|
|
928
1443
|
}
|
|
929
1444
|
|
|
930
1445
|
.level-header {
|
|
931
1446
|
display: flex;
|
|
932
1447
|
align-items: center;
|
|
933
|
-
gap:
|
|
934
|
-
|
|
935
|
-
font-weight: 500;
|
|
936
|
-
margin-bottom: 0.25rem;
|
|
1448
|
+
gap: 12px;
|
|
1449
|
+
margin-bottom: 16px;
|
|
937
1450
|
}
|
|
938
1451
|
|
|
939
1452
|
.level-badge {
|
|
940
|
-
display:
|
|
1453
|
+
display: flex;
|
|
941
1454
|
align-items: center;
|
|
942
1455
|
justify-content: center;
|
|
943
|
-
width:
|
|
944
|
-
height:
|
|
1456
|
+
width: 28px;
|
|
1457
|
+
height: 28px;
|
|
945
1458
|
background: var(--accent);
|
|
946
1459
|
color: white;
|
|
947
|
-
font-size: 0.
|
|
948
|
-
font-weight:
|
|
949
|
-
border-radius:
|
|
1460
|
+
font-size: 0.75rem;
|
|
1461
|
+
font-weight: 700;
|
|
1462
|
+
border-radius: var(--radius-sm);
|
|
950
1463
|
}
|
|
951
1464
|
|
|
952
|
-
.level-
|
|
953
|
-
font-size:
|
|
954
|
-
font-weight:
|
|
955
|
-
color: var(--text-muted);
|
|
1465
|
+
.level-title {
|
|
1466
|
+
font-size: 1rem;
|
|
1467
|
+
font-weight: 600;
|
|
956
1468
|
}
|
|
957
1469
|
|
|
958
|
-
.level-
|
|
1470
|
+
.level-count {
|
|
959
1471
|
font-size: 0.8125rem;
|
|
960
|
-
color: var(--text-
|
|
961
|
-
margin-bottom: 1rem;
|
|
1472
|
+
color: var(--text-tertiary);
|
|
962
1473
|
}
|
|
963
1474
|
|
|
964
1475
|
.digest-list {
|
|
965
1476
|
display: flex;
|
|
966
1477
|
flex-direction: column;
|
|
967
|
-
gap:
|
|
1478
|
+
gap: 12px;
|
|
968
1479
|
}
|
|
969
1480
|
|
|
970
|
-
/* Digest item */
|
|
971
1481
|
.digest-item {
|
|
972
|
-
background: var(--bg-
|
|
1482
|
+
background: var(--bg-glass);
|
|
973
1483
|
border: 1px solid var(--border);
|
|
974
|
-
|
|
1484
|
+
border-radius: var(--radius-lg);
|
|
1485
|
+
padding: 20px;
|
|
975
1486
|
}
|
|
976
1487
|
|
|
977
1488
|
.digest-item[data-level="3"] {
|
|
978
|
-
border-left:
|
|
1489
|
+
border-left: 4px solid var(--warning);
|
|
979
1490
|
}
|
|
980
1491
|
|
|
981
1492
|
.digest-item[data-level="2"] {
|
|
982
|
-
border-left:
|
|
1493
|
+
border-left: 4px solid var(--success);
|
|
983
1494
|
}
|
|
984
1495
|
|
|
985
1496
|
.digest-item .content {
|
|
986
|
-
font-size:
|
|
1497
|
+
font-size: 0.9375rem;
|
|
987
1498
|
line-height: 1.7;
|
|
988
|
-
margin-bottom:
|
|
989
|
-
}
|
|
990
|
-
|
|
991
|
-
.digest-item .meta {
|
|
992
|
-
display: flex;
|
|
993
|
-
gap: 1.5rem;
|
|
994
|
-
font-size: 0.8125rem;
|
|
995
|
-
color: var(--text-muted);
|
|
1499
|
+
margin-bottom: 12px;
|
|
996
1500
|
}
|
|
997
1501
|
|
|
998
1502
|
.digest-item .topic {
|
|
@@ -1000,208 +1504,281 @@ body.chat-open main {
|
|
|
1000
1504
|
color: var(--accent);
|
|
1001
1505
|
}
|
|
1002
1506
|
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
.modal-wide .memory-quote {
|
|
1009
|
-
padding: 0.75rem 1rem;
|
|
1010
|
-
background: var(--bg-secondary);
|
|
1011
|
-
font-size: 0.875rem;
|
|
1012
|
-
line-height: 1.5;
|
|
1013
|
-
margin-bottom: 0.75rem;
|
|
1014
|
-
border: 1px solid var(--border);
|
|
1015
|
-
}
|
|
1016
|
-
|
|
1017
|
-
.modal-wide .memory-quote .date {
|
|
1018
|
-
display: block;
|
|
1019
|
-
font-size: 0.75rem;
|
|
1020
|
-
color: var(--text-muted);
|
|
1021
|
-
margin-top: 0.375rem;
|
|
1507
|
+
.digest-item .meta {
|
|
1508
|
+
display: flex;
|
|
1509
|
+
gap: 16px;
|
|
1510
|
+
font-size: 0.8125rem;
|
|
1511
|
+
color: var(--text-tertiary);
|
|
1022
1512
|
}
|
|
1023
1513
|
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
font-size: 0.875rem;
|
|
1028
|
-
color: var(--text-secondary);
|
|
1514
|
+
/* ============ Settings View ============ */
|
|
1515
|
+
.settings-container {
|
|
1516
|
+
max-width: 640px;
|
|
1029
1517
|
}
|
|
1030
1518
|
|
|
1031
|
-
.
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
font-family: inherit;
|
|
1035
|
-
font-size: 0.9375rem;
|
|
1036
|
-
padding: 0.75rem 1rem;
|
|
1519
|
+
.settings-section {
|
|
1520
|
+
background: var(--bg-glass);
|
|
1521
|
+
backdrop-filter: blur(var(--blur-sm));
|
|
1037
1522
|
border: 1px solid var(--border);
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1523
|
+
border-radius: var(--radius-lg);
|
|
1524
|
+
padding: 24px;
|
|
1525
|
+
margin-bottom: 20px;
|
|
1041
1526
|
}
|
|
1042
1527
|
|
|
1043
|
-
.
|
|
1044
|
-
|
|
1045
|
-
|
|
1528
|
+
.settings-section-header {
|
|
1529
|
+
display: flex;
|
|
1530
|
+
align-items: center;
|
|
1531
|
+
justify-content: space-between;
|
|
1532
|
+
margin-bottom: 20px;
|
|
1046
1533
|
}
|
|
1047
1534
|
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1535
|
+
.settings-section h3 {
|
|
1536
|
+
font-size: 1rem;
|
|
1537
|
+
font-weight: 600;
|
|
1538
|
+
display: flex;
|
|
1539
|
+
align-items: center;
|
|
1540
|
+
gap: 10px;
|
|
1052
1541
|
}
|
|
1053
1542
|
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1543
|
+
.settings-section h3 svg {
|
|
1544
|
+
width: 20px;
|
|
1545
|
+
height: 20px;
|
|
1546
|
+
color: var(--text-tertiary);
|
|
1057
1547
|
}
|
|
1058
1548
|
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1549
|
+
.status-badge {
|
|
1550
|
+
display: inline-flex;
|
|
1551
|
+
align-items: center;
|
|
1552
|
+
gap: 6px;
|
|
1553
|
+
padding: 4px 12px;
|
|
1554
|
+
font-size: 0.75rem;
|
|
1555
|
+
font-weight: 600;
|
|
1556
|
+
border-radius: var(--radius-full);
|
|
1557
|
+
background: var(--bg-glass);
|
|
1558
|
+
color: var(--text-tertiary);
|
|
1062
1559
|
}
|
|
1063
1560
|
|
|
1064
|
-
.
|
|
1065
|
-
background: var(--
|
|
1066
|
-
|
|
1067
|
-
border-radius: var(--radius);
|
|
1068
|
-
padding: 1.5rem;
|
|
1069
|
-
margin-bottom: 1.5rem;
|
|
1561
|
+
.status-badge.configured {
|
|
1562
|
+
background: var(--success-subtle);
|
|
1563
|
+
color: var(--success);
|
|
1070
1564
|
}
|
|
1071
1565
|
|
|
1072
|
-
.
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
margin-bottom: 0.5rem;
|
|
1566
|
+
.status-badge.not-configured {
|
|
1567
|
+
background: var(--danger-subtle);
|
|
1568
|
+
color: var(--danger);
|
|
1076
1569
|
}
|
|
1077
1570
|
|
|
1078
1571
|
.settings-row {
|
|
1079
1572
|
display: flex;
|
|
1080
1573
|
align-items: center;
|
|
1081
|
-
gap:
|
|
1082
|
-
margin:
|
|
1574
|
+
gap: 16px;
|
|
1575
|
+
margin-bottom: 16px;
|
|
1576
|
+
}
|
|
1577
|
+
|
|
1578
|
+
.settings-row:last-child {
|
|
1579
|
+
margin-bottom: 0;
|
|
1083
1580
|
}
|
|
1084
1581
|
|
|
1085
1582
|
.settings-row label {
|
|
1086
1583
|
font-size: 0.875rem;
|
|
1584
|
+
font-weight: 500;
|
|
1087
1585
|
color: var(--text-secondary);
|
|
1088
1586
|
min-width: 80px;
|
|
1089
1587
|
}
|
|
1090
1588
|
|
|
1091
|
-
.
|
|
1589
|
+
.settings-actions {
|
|
1092
1590
|
display: flex;
|
|
1093
|
-
|
|
1094
|
-
|
|
1591
|
+
gap: 12px;
|
|
1592
|
+
margin-top: 20px;
|
|
1593
|
+
padding-top: 20px;
|
|
1594
|
+
border-top: 1px solid var(--divider);
|
|
1095
1595
|
}
|
|
1096
1596
|
|
|
1097
|
-
.
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
border: 1px solid var(--border);
|
|
1103
|
-
border-radius: var(--radius);
|
|
1104
|
-
background: var(--bg-primary);
|
|
1105
|
-
color: var(--text-primary);
|
|
1597
|
+
.help-text {
|
|
1598
|
+
font-size: 0.8125rem;
|
|
1599
|
+
color: var(--text-tertiary);
|
|
1600
|
+
margin-top: 16px;
|
|
1601
|
+
line-height: 1.6;
|
|
1106
1602
|
}
|
|
1107
1603
|
|
|
1108
|
-
.
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
box-shadow: 0 0 0 2px var(--accent-subtle);
|
|
1604
|
+
.help-text a {
|
|
1605
|
+
color: var(--accent);
|
|
1606
|
+
text-decoration: none;
|
|
1112
1607
|
}
|
|
1113
1608
|
|
|
1114
|
-
.
|
|
1115
|
-
|
|
1116
|
-
background: var(--bg-tertiary);
|
|
1117
|
-
color: var(--text-secondary);
|
|
1118
|
-
font-size: 0.875rem;
|
|
1609
|
+
.help-text a:hover {
|
|
1610
|
+
text-decoration: underline;
|
|
1119
1611
|
}
|
|
1120
1612
|
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1613
|
+
/* ============ Theme Toggle ============ */
|
|
1614
|
+
.theme-toggle {
|
|
1615
|
+
position: relative;
|
|
1616
|
+
width: 64px;
|
|
1617
|
+
height: 32px;
|
|
1618
|
+
background: var(--bg-glass);
|
|
1619
|
+
border: 1px solid var(--border);
|
|
1620
|
+
border-radius: var(--radius-full);
|
|
1621
|
+
cursor: pointer;
|
|
1622
|
+
padding: 4px;
|
|
1623
|
+
display: flex;
|
|
1624
|
+
align-items: center;
|
|
1625
|
+
justify-content: space-between;
|
|
1626
|
+
transition: all var(--transition-fast);
|
|
1125
1627
|
}
|
|
1126
1628
|
|
|
1127
|
-
.
|
|
1128
|
-
|
|
1129
|
-
color: white !important;
|
|
1629
|
+
.theme-toggle:hover {
|
|
1630
|
+
border-color: var(--border-strong);
|
|
1130
1631
|
}
|
|
1131
1632
|
|
|
1132
|
-
.
|
|
1133
|
-
|
|
1633
|
+
.theme-toggle .toggle-icon {
|
|
1634
|
+
width: 20px;
|
|
1635
|
+
height: 20px;
|
|
1636
|
+
display: flex;
|
|
1637
|
+
align-items: center;
|
|
1638
|
+
justify-content: center;
|
|
1639
|
+
color: var(--text-tertiary);
|
|
1640
|
+
z-index: 1;
|
|
1641
|
+
transition: color var(--transition-fast);
|
|
1134
1642
|
}
|
|
1135
1643
|
|
|
1136
|
-
.
|
|
1137
|
-
|
|
1138
|
-
|
|
1644
|
+
.theme-toggle .toggle-icon svg {
|
|
1645
|
+
width: 14px;
|
|
1646
|
+
height: 14px;
|
|
1139
1647
|
}
|
|
1140
1648
|
|
|
1141
|
-
.
|
|
1142
|
-
|
|
1143
|
-
|
|
1649
|
+
.theme-toggle .toggle-slider {
|
|
1650
|
+
position: absolute;
|
|
1651
|
+
top: 3px;
|
|
1652
|
+
left: 3px;
|
|
1653
|
+
width: 26px;
|
|
1654
|
+
height: 26px;
|
|
1655
|
+
background: var(--accent);
|
|
1656
|
+
border-radius: 50%;
|
|
1657
|
+
transition: transform var(--transition-normal);
|
|
1658
|
+
box-shadow: var(--shadow-sm);
|
|
1144
1659
|
}
|
|
1145
1660
|
|
|
1146
|
-
.
|
|
1147
|
-
|
|
1148
|
-
font-size: 0.75rem;
|
|
1149
|
-
font-weight: 500;
|
|
1150
|
-
padding: 0.25rem 0.625rem;
|
|
1151
|
-
border-radius: var(--radius);
|
|
1152
|
-
background: var(--bg-tertiary);
|
|
1153
|
-
color: var(--text-muted);
|
|
1661
|
+
[data-theme="dark"] .theme-toggle .toggle-slider {
|
|
1662
|
+
transform: translateX(32px);
|
|
1154
1663
|
}
|
|
1155
1664
|
|
|
1156
|
-
.
|
|
1157
|
-
|
|
1158
|
-
color: var(--success);
|
|
1665
|
+
.theme-toggle .toggle-icon.sun {
|
|
1666
|
+
color: var(--accent);
|
|
1159
1667
|
}
|
|
1160
1668
|
|
|
1161
|
-
.
|
|
1162
|
-
|
|
1163
|
-
color: var(--danger);
|
|
1669
|
+
[data-theme="dark"] .theme-toggle .toggle-icon.sun {
|
|
1670
|
+
color: var(--text-tertiary);
|
|
1164
1671
|
}
|
|
1165
1672
|
|
|
1166
|
-
.
|
|
1167
|
-
|
|
1168
|
-
color: var(--text-muted);
|
|
1169
|
-
margin-top: 1rem;
|
|
1673
|
+
[data-theme="dark"] .theme-toggle .toggle-icon.moon {
|
|
1674
|
+
color: var(--accent);
|
|
1170
1675
|
}
|
|
1171
1676
|
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1677
|
+
/* ============ Scrollbar ============ */
|
|
1678
|
+
::-webkit-scrollbar {
|
|
1679
|
+
width: 8px;
|
|
1680
|
+
height: 8px;
|
|
1175
1681
|
}
|
|
1176
1682
|
|
|
1177
|
-
|
|
1178
|
-
|
|
1683
|
+
::-webkit-scrollbar-track {
|
|
1684
|
+
background: transparent;
|
|
1685
|
+
}
|
|
1686
|
+
|
|
1687
|
+
::-webkit-scrollbar-thumb {
|
|
1688
|
+
background: var(--border-strong);
|
|
1689
|
+
border-radius: var(--radius-full);
|
|
1690
|
+
}
|
|
1691
|
+
|
|
1692
|
+
::-webkit-scrollbar-thumb:hover {
|
|
1693
|
+
background: var(--text-tertiary);
|
|
1179
1694
|
}
|
|
1180
1695
|
|
|
1181
|
-
/* Responsive */
|
|
1182
|
-
@media (max-width:
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
gap: 1rem;
|
|
1186
|
-
padding: 1rem;
|
|
1696
|
+
/* ============ Responsive ============ */
|
|
1697
|
+
@media (max-width: 1024px) {
|
|
1698
|
+
.sidebar {
|
|
1699
|
+
transform: translateX(-100%);
|
|
1187
1700
|
}
|
|
1188
1701
|
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
order: 3;
|
|
1702
|
+
.sidebar.open {
|
|
1703
|
+
transform: translateX(0);
|
|
1192
1704
|
}
|
|
1193
1705
|
|
|
1194
|
-
.
|
|
1195
|
-
margin-left: 0;
|
|
1706
|
+
.main-wrapper {
|
|
1707
|
+
margin-left: 0 !important;
|
|
1708
|
+
}
|
|
1709
|
+
|
|
1710
|
+
.chat-panel {
|
|
1196
1711
|
width: 100%;
|
|
1712
|
+
max-width: 400px;
|
|
1713
|
+
}
|
|
1714
|
+
|
|
1715
|
+
body.chat-open .main-wrapper {
|
|
1716
|
+
margin-right: 0;
|
|
1717
|
+
}
|
|
1718
|
+
}
|
|
1719
|
+
|
|
1720
|
+
@media (max-width: 768px) {
|
|
1721
|
+
.header {
|
|
1722
|
+
padding: 0 16px;
|
|
1723
|
+
}
|
|
1724
|
+
|
|
1725
|
+
.header-search {
|
|
1726
|
+
display: none;
|
|
1197
1727
|
}
|
|
1198
1728
|
|
|
1199
1729
|
main {
|
|
1200
|
-
padding:
|
|
1730
|
+
padding: 16px;
|
|
1731
|
+
}
|
|
1732
|
+
|
|
1733
|
+
.consolidation-header {
|
|
1734
|
+
flex-direction: column;
|
|
1735
|
+
gap: 16px;
|
|
1736
|
+
align-items: stretch;
|
|
1201
1737
|
}
|
|
1202
1738
|
|
|
1203
|
-
.
|
|
1739
|
+
.consolidation-stats {
|
|
1740
|
+
justify-content: space-around;
|
|
1741
|
+
}
|
|
1742
|
+
|
|
1743
|
+
.toolbar {
|
|
1744
|
+
flex-direction: column;
|
|
1745
|
+
align-items: stretch;
|
|
1746
|
+
}
|
|
1747
|
+
|
|
1748
|
+
.toolbar-group {
|
|
1749
|
+
justify-content: space-between;
|
|
1750
|
+
}
|
|
1751
|
+
|
|
1752
|
+
.modal-content {
|
|
1753
|
+
padding: 20px;
|
|
1754
|
+
margin: 16px;
|
|
1755
|
+
max-height: calc(100vh - 32px);
|
|
1756
|
+
}
|
|
1757
|
+
}
|
|
1758
|
+
|
|
1759
|
+
@media (max-width: 480px) {
|
|
1760
|
+
.memory-item .meta {
|
|
1761
|
+
flex-direction: column;
|
|
1762
|
+
gap: 8px;
|
|
1763
|
+
}
|
|
1764
|
+
|
|
1765
|
+
.settings-row {
|
|
1204
1766
|
flex-direction: column;
|
|
1205
|
-
|
|
1767
|
+
align-items: stretch;
|
|
1768
|
+
gap: 8px;
|
|
1769
|
+
}
|
|
1770
|
+
|
|
1771
|
+
.settings-row label {
|
|
1772
|
+
min-width: auto;
|
|
1206
1773
|
}
|
|
1207
1774
|
}
|
|
1775
|
+
|
|
1776
|
+
/* ============ Utility Classes ============ */
|
|
1777
|
+
.hidden { display: none !important; }
|
|
1778
|
+
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); border: 0; }
|
|
1779
|
+
.text-muted { color: var(--text-tertiary); }
|
|
1780
|
+
.text-accent { color: var(--accent); }
|
|
1781
|
+
.text-success { color: var(--success); }
|
|
1782
|
+
.text-danger { color: var(--danger); }
|
|
1783
|
+
.font-mono { font-family: var(--font-mono); }
|
|
1784
|
+
.truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|