@bjlee2024/claude-mem 13.4.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 (101) hide show
  1. package/.agents/plugins/marketplace.json +20 -0
  2. package/.codex-plugin/plugin.json +46 -0
  3. package/LICENSE +202 -0
  4. package/README.md +419 -0
  5. package/dist/npx-cli/index.js +10001 -0
  6. package/dist/opencode-plugin/index.js +67 -0
  7. package/openclaw/Dockerfile.e2e +46 -0
  8. package/openclaw/SKILL.md +462 -0
  9. package/openclaw/TESTING.md +279 -0
  10. package/openclaw/dist/index.js +15 -0
  11. package/openclaw/e2e-verify.sh +222 -0
  12. package/openclaw/install.sh +1653 -0
  13. package/openclaw/openclaw.plugin.json +98 -0
  14. package/openclaw/package.json +21 -0
  15. package/openclaw/src/index.test.ts +1124 -0
  16. package/openclaw/src/index.ts +1092 -0
  17. package/openclaw/test-e2e.sh +40 -0
  18. package/openclaw/test-install.sh +2086 -0
  19. package/openclaw/test-sse-consumer.js +98 -0
  20. package/openclaw/tsconfig.json +26 -0
  21. package/package.json +211 -0
  22. package/plugin/.claude-plugin/plugin.json +24 -0
  23. package/plugin/.codex-plugin/plugin.json +46 -0
  24. package/plugin/.mcp.json +12 -0
  25. package/plugin/hooks/bugfixes-2026-01-10.md +92 -0
  26. package/plugin/hooks/codex-hooks.json +74 -0
  27. package/plugin/hooks/hooks.json +87 -0
  28. package/plugin/modes/code--ar.json +24 -0
  29. package/plugin/modes/code--bn.json +24 -0
  30. package/plugin/modes/code--chill.json +8 -0
  31. package/plugin/modes/code--cs.json +24 -0
  32. package/plugin/modes/code--da.json +24 -0
  33. package/plugin/modes/code--de.json +24 -0
  34. package/plugin/modes/code--el.json +24 -0
  35. package/plugin/modes/code--es.json +24 -0
  36. package/plugin/modes/code--fi.json +24 -0
  37. package/plugin/modes/code--fr.json +24 -0
  38. package/plugin/modes/code--he.json +24 -0
  39. package/plugin/modes/code--hi.json +24 -0
  40. package/plugin/modes/code--hu.json +24 -0
  41. package/plugin/modes/code--id.json +24 -0
  42. package/plugin/modes/code--it.json +24 -0
  43. package/plugin/modes/code--ja.json +24 -0
  44. package/plugin/modes/code--ko.json +24 -0
  45. package/plugin/modes/code--nl.json +24 -0
  46. package/plugin/modes/code--no.json +24 -0
  47. package/plugin/modes/code--pl.json +24 -0
  48. package/plugin/modes/code--pt-br.json +24 -0
  49. package/plugin/modes/code--ro.json +24 -0
  50. package/plugin/modes/code--ru.json +24 -0
  51. package/plugin/modes/code--sv.json +24 -0
  52. package/plugin/modes/code--th.json +24 -0
  53. package/plugin/modes/code--tr.json +24 -0
  54. package/plugin/modes/code--uk.json +24 -0
  55. package/plugin/modes/code--ur.json +25 -0
  56. package/plugin/modes/code--vi.json +24 -0
  57. package/plugin/modes/code--zh.json +24 -0
  58. package/plugin/modes/code.json +139 -0
  59. package/plugin/modes/email-investigation.json +120 -0
  60. package/plugin/modes/law-study--chill.json +7 -0
  61. package/plugin/modes/law-study-CLAUDE.md +85 -0
  62. package/plugin/modes/law-study.json +120 -0
  63. package/plugin/modes/meme-tokens.json +125 -0
  64. package/plugin/package.json +46 -0
  65. package/plugin/scripts/bun-runner.js +216 -0
  66. package/plugin/scripts/context-generator.cjs +795 -0
  67. package/plugin/scripts/mcp-server.cjs +239 -0
  68. package/plugin/scripts/server-beta-service.cjs +9856 -0
  69. package/plugin/scripts/statusline-counts.js +40 -0
  70. package/plugin/scripts/version-check.js +69 -0
  71. package/plugin/scripts/worker-cli.js +19 -0
  72. package/plugin/scripts/worker-service.cjs +2368 -0
  73. package/plugin/scripts/worker-wrapper.cjs +2 -0
  74. package/plugin/skills/babysit/SKILL.md +87 -0
  75. package/plugin/skills/design-is/SKILL.md +312 -0
  76. package/plugin/skills/do/SKILL.md +45 -0
  77. package/plugin/skills/how-it-works/SKILL.md +22 -0
  78. package/plugin/skills/how-it-works/onboarding-explainer.md +17 -0
  79. package/plugin/skills/knowledge-agent/SKILL.md +80 -0
  80. package/plugin/skills/learn-codebase/SKILL.md +21 -0
  81. package/plugin/skills/make-plan/SKILL.md +67 -0
  82. package/plugin/skills/mem-search/SKILL.md +131 -0
  83. package/plugin/skills/oh-my-issues/SKILL.md +226 -0
  84. package/plugin/skills/pathfinder/SKILL.md +111 -0
  85. package/plugin/skills/smart-explore/SKILL.md +190 -0
  86. package/plugin/skills/timeline-report/SKILL.md +211 -0
  87. package/plugin/skills/version-bump/SKILL.md +68 -0
  88. package/plugin/skills/version-bump/scripts/generate_changelog.js +34 -0
  89. package/plugin/skills/weekly-digests/SKILL.md +262 -0
  90. package/plugin/skills/wowerpoint/SKILL.md +205 -0
  91. package/plugin/ui/assets/fonts/monaspace-radon-var.woff +0 -0
  92. package/plugin/ui/assets/fonts/monaspace-radon-var.woff2 +0 -0
  93. package/plugin/ui/claude-mem-logo-for-dark-mode.webp +0 -0
  94. package/plugin/ui/claude-mem-logo-stylized.png +0 -0
  95. package/plugin/ui/claude-mem-logomark.webp +0 -0
  96. package/plugin/ui/icon-thick-completed.svg +8 -0
  97. package/plugin/ui/icon-thick-investigated.svg +8 -0
  98. package/plugin/ui/icon-thick-learned.svg +12 -0
  99. package/plugin/ui/icon-thick-next-steps.svg +8 -0
  100. package/plugin/ui/viewer-bundle.js +65 -0
  101. package/plugin/ui/viewer.html +3145 -0
@@ -0,0 +1,3145 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>claude-mem viewer</title>
8
+ <link rel="icon" type="image/webp" href="claude-mem-logomark.webp">
9
+ <style>
10
+ @font-face {
11
+ font-family: 'Monaspace Radon';
12
+ src: url('assets/fonts/monaspace-radon-var.woff2') format('woff2-variations'),
13
+ url('assets/fonts/monaspace-radon-var.woff') format('woff-variations');
14
+ font-weight: 200 900;
15
+ font-display: swap;
16
+ }
17
+
18
+ /* Theme Variables - Light Mode */
19
+ :root,
20
+ [data-theme="light"] {
21
+ --color-bg-primary: #ffffff;
22
+ --color-bg-secondary: #efebe4;
23
+ --color-bg-tertiary: #f0f0f0;
24
+ --color-bg-header: #f6f8fa;
25
+ --color-bg-card: #ffffff;
26
+ --color-bg-card-hover: #f6f8fa;
27
+ --color-bg-input: #ffffff;
28
+ --color-bg-button: #0969da;
29
+ --color-bg-button-hover: #1177e6;
30
+ --color-bg-button-active: #0860ca;
31
+ --color-bg-summary: #fffbf0;
32
+ --color-bg-prompt: #f6f3fb;
33
+ --color-bg-observation: #f0f6fb;
34
+ --color-bg-stat: #f6f8fa;
35
+ --color-bg-scrollbar-track: #ffffff;
36
+ --color-bg-scrollbar-thumb: #d1d5da;
37
+ --color-bg-scrollbar-thumb-hover: #b1b5ba;
38
+
39
+ --color-border-primary: #d0d7de;
40
+ --color-border-secondary: #d8dee4;
41
+ --color-border-hover: #0969da;
42
+ --color-border-focus: #0969da;
43
+ --color-border-summary: #d4a72c;
44
+ --color-border-summary-hover: #c29d29;
45
+ --color-border-prompt: #8250df;
46
+ --color-border-prompt-hover: #6e40c9;
47
+ --color-border-observation: #0969da;
48
+ --color-border-observation-hover: #0550ae;
49
+
50
+ --color-text-primary: #2b2520;
51
+ --color-text-secondary: #5a5248;
52
+ --color-text-tertiary: #726b5f;
53
+ --color-text-muted: #8f8a7e;
54
+ --color-text-header: #2b2520;
55
+ --color-text-title: #2b2520;
56
+ --color-text-subtitle: #5a5248;
57
+ --color-text-button: #ffffff;
58
+ --color-text-summary: #8a6116;
59
+ --color-text-observation: #2b2520;
60
+ --color-text-logo: #2b2520;
61
+
62
+ --color-accent-primary: #0969da;
63
+ --color-accent-focus: #0969da;
64
+ --color-accent-success: #1a7f37;
65
+ --color-accent-error: #d1242f;
66
+ --color-accent-summary: #9a6700;
67
+ --color-accent-prompt: #8250df;
68
+ --color-accent-observation: #0550ae;
69
+
70
+ --color-type-badge-bg: rgba(9, 105, 218, 0.12);
71
+ --color-type-badge-text: #0969da;
72
+ --color-summary-badge-bg: rgba(154, 103, 0, 0.12);
73
+ --color-summary-badge-text: #9a6700;
74
+ --color-prompt-badge-bg: rgba(130, 80, 223, 0.12);
75
+ --color-prompt-badge-text: #8250df;
76
+ --color-observation-badge-bg: rgba(9, 105, 218, 0.12);
77
+ --color-observation-badge-text: #0550ae;
78
+
79
+ --color-skeleton-base: #d0d7de;
80
+ --color-skeleton-highlight: #e8ecef;
81
+
82
+ --shadow-focus: 0 0 0 2px rgba(9, 105, 218, 0.3);
83
+
84
+ /* Font families */
85
+ --font-terminal: 'Monaco', 'Menlo', 'Consolas', 'Courier New', monospace;
86
+ }
87
+
88
+ /* Theme Variables - Dark Mode */
89
+ [data-theme="dark"] {
90
+ --color-bg-primary: #1a1916;
91
+ --color-bg-secondary: #252320;
92
+ --color-bg-tertiary: #1f1d1a;
93
+ --color-bg-header: #1f1d1a;
94
+ --color-bg-card: #252320;
95
+ --color-bg-card-hover: #2d2a26;
96
+ --color-bg-input: #252320;
97
+ --color-bg-button: #0969da;
98
+ --color-bg-button-hover: #1177e6;
99
+ --color-bg-button-active: #0860ca;
100
+ --color-bg-summary: #2a2724;
101
+ --color-bg-prompt: #262033;
102
+ --color-bg-observation: #1a2332;
103
+ --color-bg-stat: #252320;
104
+ --color-bg-scrollbar-track: #1a1916;
105
+ --color-bg-scrollbar-thumb: #3a3834;
106
+ --color-bg-scrollbar-thumb-hover: #4a4540;
107
+
108
+ --color-border-primary: #3a3834;
109
+ --color-border-secondary: #3a3834;
110
+ --color-border-hover: #4a4540;
111
+ --color-border-focus: #58a6ff;
112
+ --color-border-summary: #7a6a50;
113
+ --color-border-summary-hover: #8b7960;
114
+ --color-border-prompt: #6e5b9e;
115
+ --color-border-prompt-hover: #7e6bae;
116
+ --color-border-observation: #527aa0;
117
+ --color-border-observation-hover: #6a8eb8;
118
+
119
+ --color-text-primary: #dcd6cc;
120
+ --color-text-secondary: #b8b0a4;
121
+ --color-text-tertiary: #938a7e;
122
+ --color-text-muted: #7a7266;
123
+ --color-text-header: #e8e2d8;
124
+ --color-text-title: #e8e2d8;
125
+ --color-text-subtitle: #b8b0a4;
126
+ --color-text-button: #ffffff;
127
+ --color-text-summary: #d4b888;
128
+ --color-text-observation: #a8b8c8;
129
+ --color-text-logo: #e0dad0;
130
+
131
+ --color-accent-primary: #58a6ff;
132
+ --color-accent-focus: #58a6ff;
133
+ --color-accent-success: #16c60c;
134
+ --color-accent-error: #e74856;
135
+ --color-accent-summary: #d4b888;
136
+ --color-accent-prompt: #8e7cbc;
137
+ --color-accent-observation: #79b8ff;
138
+
139
+ --color-type-badge-bg: rgba(88, 166, 255, 0.125);
140
+ --color-type-badge-text: #58a6ff;
141
+ --color-summary-badge-bg: rgba(212, 184, 136, 0.15);
142
+ --color-summary-badge-text: #d4b888;
143
+ --color-prompt-badge-bg: rgba(142, 124, 188, 0.15);
144
+ --color-prompt-badge-text: #9e8ccc;
145
+ --color-observation-badge-bg: rgba(121, 184, 255, 0.15);
146
+ --color-observation-badge-text: #79b8ff;
147
+
148
+ --color-skeleton-base: #3a3834;
149
+ --color-skeleton-highlight: #4a4540;
150
+
151
+ --shadow-focus: 0 0 0 2px rgba(88, 166, 255, 0.2);
152
+
153
+ /* Font families */
154
+ --font-terminal: 'Monaco', 'Menlo', 'Consolas', 'Courier New', monospace;
155
+ }
156
+
157
+ /* System preference default */
158
+ @media (prefers-color-scheme: light) {
159
+ :root:not([data-theme]) {
160
+ --color-bg-primary: #ffffff;
161
+ --color-bg-secondary: #f6f8fa;
162
+ --color-bg-tertiary: #f0f0f0;
163
+ --color-bg-header: #f6f8fa;
164
+ --color-bg-card: #ffffff;
165
+ --color-bg-card-hover: #f6f8fa;
166
+ --color-bg-input: #ffffff;
167
+ --color-bg-button: #0969da;
168
+ --color-bg-button-hover: #1177e6;
169
+ --color-bg-button-active: #0860ca;
170
+ --color-bg-summary: #fffbf0;
171
+ --color-bg-prompt: #f6f3fb;
172
+ --color-bg-observation: #f0f6fb;
173
+ --color-bg-stat: #f6f8fa;
174
+ --color-bg-scrollbar-track: #ffffff;
175
+ --color-bg-scrollbar-thumb: #d1d5da;
176
+ --color-bg-scrollbar-thumb-hover: #b1b5ba;
177
+
178
+ --color-border-primary: #d0d7de;
179
+ --color-border-secondary: #d8dee4;
180
+ --color-border-hover: #0969da;
181
+ --color-border-focus: #0969da;
182
+ --color-border-summary: #d4a72c;
183
+ --color-border-summary-hover: #c29d29;
184
+ --color-border-prompt: #8250df;
185
+ --color-border-prompt-hover: #6e40c9;
186
+ --color-border-observation: #0969da;
187
+ --color-border-observation-hover: #0550ae;
188
+
189
+ --color-text-primary: #24292f;
190
+ --color-text-secondary: #57606a;
191
+ --color-text-tertiary: #6e7781;
192
+ --color-text-muted: #8b949e;
193
+ --color-text-header: #24292f;
194
+ --color-text-title: #24292f;
195
+ --color-text-subtitle: #57606a;
196
+ --color-text-button: #ffffff;
197
+ --color-text-summary: #8a6116;
198
+ --color-text-observation: #24292f;
199
+ --color-text-logo: #24292f;
200
+
201
+ --color-accent-primary: #0969da;
202
+ --color-accent-focus: #0969da;
203
+ --color-accent-success: #1a7f37;
204
+ --color-accent-error: #d1242f;
205
+ --color-accent-summary: #9a6700;
206
+ --color-accent-prompt: #8250df;
207
+ --color-accent-observation: #0550ae;
208
+
209
+ --color-type-badge-bg: rgba(9, 105, 218, 0.12);
210
+ --color-type-badge-text: #0969da;
211
+ --color-summary-badge-bg: rgba(154, 103, 0, 0.12);
212
+ --color-summary-badge-text: #9a6700;
213
+ --color-prompt-badge-bg: rgba(130, 80, 223, 0.12);
214
+ --color-prompt-badge-text: #8250df;
215
+ --color-observation-badge-bg: rgba(9, 105, 218, 0.12);
216
+ --color-observation-badge-text: #0550ae;
217
+
218
+ --color-skeleton-base: #d0d7de;
219
+ --color-skeleton-highlight: #e8ecef;
220
+
221
+ --shadow-focus: 0 0 0 2px rgba(9, 105, 218, 0.3);
222
+
223
+ /* Font families */
224
+ --font-terminal: 'Monaco', 'Menlo', 'Consolas', 'Courier New', monospace;
225
+ }
226
+ }
227
+
228
+ @media (prefers-color-scheme: dark) {
229
+ :root:not([data-theme]) {
230
+ --color-bg-primary: #1e1e1e;
231
+ --color-bg-secondary: #2d2d2d;
232
+ --color-bg-tertiary: #252526;
233
+ --color-bg-header: #252526;
234
+ --color-bg-card: #2d2d2d;
235
+ --color-bg-card-hover: #333333;
236
+ --color-bg-input: #2d2d2d;
237
+ --color-bg-button: #0969da;
238
+ --color-bg-button-hover: #1177e6;
239
+ --color-bg-button-active: #0860ca;
240
+ --color-bg-summary: #3d2f00;
241
+ --color-bg-prompt: #2d1b4e;
242
+ --color-bg-observation: #1a2332;
243
+ --color-bg-stat: #2d2d2d;
244
+ --color-bg-scrollbar-track: #1e1e1e;
245
+ --color-bg-scrollbar-thumb: #424242;
246
+ --color-bg-scrollbar-thumb-hover: #4e4e4e;
247
+
248
+ --color-border-primary: #404040;
249
+ --color-border-secondary: #404040;
250
+ --color-border-hover: #505050;
251
+ --color-border-focus: #58a6ff;
252
+ --color-border-summary: #9e6a03;
253
+ --color-border-summary-hover: #ae7a13;
254
+ --color-border-prompt: #6e40c9;
255
+ --color-border-prompt-hover: #8e6cdb;
256
+ --color-border-observation: #527aa0;
257
+ --color-border-observation-hover: #6a8eb8;
258
+
259
+ --color-text-primary: #cccccc;
260
+ --color-text-secondary: #a0a0a0;
261
+ --color-text-tertiary: #6e7681;
262
+ --color-text-muted: #8b949e;
263
+ --color-text-header: #e0e0e0;
264
+ --color-text-title: #e0e0e0;
265
+ --color-text-subtitle: #a0a0a0;
266
+ --color-text-button: #ffffff;
267
+ --color-text-summary: #f2cc60;
268
+ --color-text-observation: #a8b8c8;
269
+ --color-text-logo: #dadada;
270
+
271
+ --color-accent-primary: #58a6ff;
272
+ --color-accent-focus: #58a6ff;
273
+ --color-accent-success: #16c60c;
274
+ --color-accent-error: #e74856;
275
+ --color-accent-summary: #f2cc60;
276
+ --color-accent-prompt: #8e6cdb;
277
+ --color-accent-observation: #79b8ff;
278
+
279
+ --color-type-badge-bg: rgba(88, 166, 255, 0.125);
280
+ --color-type-badge-text: #58a6ff;
281
+ --color-summary-badge-bg: rgba(242, 204, 96, 0.125);
282
+ --color-summary-badge-text: #f2cc60;
283
+ --color-prompt-badge-bg: rgba(110, 64, 201, 0.125);
284
+ --color-prompt-badge-text: #8e6cdb;
285
+ --color-observation-badge-bg: rgba(121, 184, 255, 0.15);
286
+ --color-observation-badge-text: #79b8ff;
287
+
288
+ --color-skeleton-base: #404040;
289
+ --color-skeleton-highlight: #505050;
290
+
291
+ --shadow-focus: 0 0 0 2px rgba(88, 166, 255, 0.2);
292
+
293
+ /* Font families */
294
+ --font-terminal: 'Monaco', 'Menlo', 'Consolas', 'Courier New', monospace;
295
+ }
296
+ }
297
+
298
+ * {
299
+ margin: 0;
300
+ padding: 0;
301
+ box-sizing: border-box;
302
+ }
303
+
304
+ body {
305
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Helvetica', 'Arial', sans-serif;
306
+ background: var(--color-bg-primary);
307
+ color: var(--color-text-primary);
308
+ font-size: 14px;
309
+ overflow: hidden;
310
+ }
311
+
312
+ .full-height-flex-layout {
313
+ display: flex;
314
+ height: 100%;
315
+ position: relative;
316
+ }
317
+
318
+ .main-col {
319
+ flex: 1;
320
+ display: flex;
321
+ flex-direction: column;
322
+ }
323
+
324
+ .sidebar {
325
+ position: fixed;
326
+ right: 0;
327
+ top: 0;
328
+ height: 100vh;
329
+ width: 100%;
330
+ max-width: 400px;
331
+ background: var(--color-bg-primary);
332
+ border-left: 1px solid var(--color-border-primary);
333
+ display: flex;
334
+ flex-direction: column;
335
+ transform: translate3d(100%, 0, 0);
336
+ transition: transform 0.3s ease;
337
+ z-index: 100;
338
+ will-change: transform;
339
+ }
340
+
341
+ .sidebar.open {
342
+ transform: translate3d(0, 0, 0);
343
+ }
344
+
345
+ .header {
346
+ padding: 16px 24px;
347
+ border-bottom: 1px solid var(--color-border-primary);
348
+ display: flex;
349
+ justify-content: space-between;
350
+ align-items: center;
351
+ background: linear-gradient(to bottom,
352
+ var(--color-bg-header) 0%,
353
+ var(--color-bg-primary) 100%);
354
+ backdrop-filter: blur(8px);
355
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.03);
356
+ }
357
+
358
+ .header-main {
359
+ display: flex;
360
+ align-items: center;
361
+ gap: 18px;
362
+ min-width: 0;
363
+ flex-wrap: wrap;
364
+ }
365
+
366
+ .sidebar-header {
367
+ padding: 14px 18px;
368
+ border-bottom: 1px solid var(--color-border-primary);
369
+ display: flex;
370
+ justify-content: space-between;
371
+ align-items: center;
372
+ background: var(--color-bg-header);
373
+ }
374
+
375
+ .sidebar-header h1 {
376
+ font-size: 16px;
377
+ font-weight: 500;
378
+ color: var(--color-text-header);
379
+ }
380
+
381
+ .sidebar-community-btn {
382
+ display: none;
383
+ background: var(--color-bg-card);
384
+ border: 1px solid var(--color-border-primary);
385
+ border-radius: 6px;
386
+ padding: 0 14px;
387
+ height: 36px;
388
+ cursor: pointer;
389
+ align-items: center;
390
+ justify-content: center;
391
+ color: var(--color-text-secondary);
392
+ font-size: 13px;
393
+ font-weight: 500;
394
+ text-decoration: none;
395
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
396
+ white-space: nowrap;
397
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
398
+ margin: 16px 18px;
399
+ }
400
+
401
+ .sidebar-community-btn:hover {
402
+ background: var(--color-bg-card-hover);
403
+ border-color: var(--color-border-focus);
404
+ color: var(--color-text-primary);
405
+ transform: translateY(-1px);
406
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
407
+ }
408
+
409
+ .sidebar-community-btn:active {
410
+ transform: translateY(0);
411
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
412
+ }
413
+
414
+ @media (max-width: 600px) {
415
+ .sidebar-community-btn {
416
+ display: flex;
417
+ }
418
+ }
419
+
420
+ .sidebar-project-filter {
421
+ display: none;
422
+ padding: 16px 18px;
423
+ border-bottom: 1px solid var(--color-border-primary);
424
+ }
425
+
426
+ .sidebar-project-filter label {
427
+ display: block;
428
+ margin-bottom: 8px;
429
+ font-size: 12px;
430
+ color: var(--color-text-muted);
431
+ font-family: 'Monaco', 'Menlo', 'Consolas', monospace;
432
+ font-weight: 500;
433
+ }
434
+
435
+ .sidebar-project-filter select {
436
+ width: 100%;
437
+ background: var(--color-bg-card);
438
+ border: 1px solid var(--color-border-primary);
439
+ border-radius: 6px;
440
+ padding: 0 32px 0 12px;
441
+ height: 36px;
442
+ font-size: 13px;
443
+ font-weight: 500;
444
+ color: var(--color-text-secondary);
445
+ cursor: pointer;
446
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
447
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
448
+ appearance: none;
449
+ background-image: url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 12 12' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M3 4.5L6 7.5L9 4.5' stroke='%23666' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
450
+ background-repeat: no-repeat;
451
+ background-position: right 10px center;
452
+ }
453
+
454
+ .sidebar-project-filter select:hover {
455
+ background-color: var(--color-bg-card-hover);
456
+ border-color: var(--color-border-focus);
457
+ color: var(--color-text-primary);
458
+ }
459
+
460
+ .sidebar-project-filter select:focus {
461
+ outline: none;
462
+ border-color: var(--color-border-focus);
463
+ box-shadow: 0 0 0 3px rgba(9, 105, 218, 0.1);
464
+ }
465
+
466
+ @media (max-width: 480px) {
467
+ .sidebar-project-filter {
468
+ display: block;
469
+ }
470
+ }
471
+
472
+ .sidebar-social-links {
473
+ display: none;
474
+ padding: 16px 18px;
475
+ border-bottom: 1px solid var(--color-border-primary);
476
+ gap: 8px;
477
+ justify-content: center;
478
+ }
479
+
480
+ .sidebar-social-links .icon-link {
481
+ flex: 1;
482
+ max-width: 80px;
483
+ }
484
+
485
+ @media (max-width: 768px) {
486
+ .sidebar-social-links {
487
+ display: flex;
488
+ }
489
+ }
490
+
491
+ .header h1 {
492
+ font-size: 17px;
493
+ font-weight: 500;
494
+ color: var(--color-text-header);
495
+ display: flex;
496
+ align-items: center;
497
+ gap: 12px;
498
+ line-height: 1;
499
+ }
500
+
501
+ .logomark {
502
+ height: 32px;
503
+ width: auto;
504
+ }
505
+
506
+ .logomark.spinning {
507
+ animation: spin 1.5s linear infinite;
508
+ }
509
+
510
+ .queue-bubble {
511
+ position: absolute;
512
+ top: -8px;
513
+ right: -8px;
514
+ background: var(--color-accent-primary);
515
+ color: var(--color-text-button);
516
+ font-size: 10px;
517
+ font-weight: 600;
518
+ font-family: 'Monaspace Radon', monospace;
519
+ height: 18px;
520
+ border-radius: 9px;
521
+ display: flex;
522
+ align-items: center;
523
+ justify-content: center;
524
+ padding: 0 5px;
525
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
526
+ animation: pulse 2s ease-in-out infinite;
527
+ z-index: 10;
528
+ }
529
+
530
+ @keyframes pulse {
531
+ 0%, 100% {
532
+ transform: scale(1);
533
+ }
534
+ 50% {
535
+ transform: scale(1.1);
536
+ }
537
+ }
538
+
539
+ .logo-text {
540
+ font-family: 'Monaspace Radon', monospace;
541
+ font-weight: 100;
542
+ font-size: 21px;
543
+ letter-spacing: -0.03em;
544
+ color: var(--color-text-logo);
545
+ line-height: 1;
546
+ padding-top: 1px;
547
+ }
548
+
549
+ .status {
550
+ display: flex;
551
+ align-items: center;
552
+ gap: 8px;
553
+ font-size: 13px;
554
+ }
555
+
556
+ .settings-btn,
557
+ .theme-toggle-btn {
558
+ background: var(--color-bg-card);
559
+ border: 1px solid var(--color-border-primary);
560
+ border-radius: 6px;
561
+ padding: 0;
562
+ width: 36px;
563
+ height: 36px;
564
+ cursor: pointer;
565
+ display: flex;
566
+ align-items: center;
567
+ justify-content: center;
568
+ color: var(--color-text-secondary);
569
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
570
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
571
+ }
572
+
573
+ .settings-btn:hover,
574
+ .theme-toggle-btn:hover {
575
+ background: var(--color-bg-card-hover);
576
+ border-color: var(--color-border-focus);
577
+ color: var(--color-text-primary);
578
+ transform: translateY(-1px);
579
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
580
+ }
581
+
582
+ .settings-btn.active {
583
+ background: linear-gradient(135deg, var(--color-bg-button) 0%, var(--color-accent-primary) 100%);
584
+ border-color: var(--color-bg-button);
585
+ color: var(--color-text-button);
586
+ box-shadow: 0 2px 8px rgba(9, 105, 218, 0.25);
587
+ }
588
+
589
+ .community-btn {
590
+ background: var(--color-bg-card);
591
+ border: 1px solid var(--color-border-primary);
592
+ border-radius: 6px;
593
+ padding: 0 14px;
594
+ height: 36px;
595
+ cursor: pointer;
596
+ display: flex;
597
+ align-items: center;
598
+ justify-content: center;
599
+ color: var(--color-text-secondary);
600
+ font-size: 13px;
601
+ font-weight: 500;
602
+ text-decoration: none;
603
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
604
+ white-space: nowrap;
605
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
606
+ }
607
+
608
+ .community-btn:hover {
609
+ background: var(--color-bg-card-hover);
610
+ border-color: var(--color-border-focus);
611
+ color: var(--color-text-primary);
612
+ transform: translateY(-1px);
613
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
614
+ }
615
+
616
+ .community-btn:active {
617
+ transform: translateY(0);
618
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
619
+ }
620
+
621
+ /* GitHub Stars Button - Similar to Community Button */
622
+ .github-stars-btn {
623
+ background: var(--color-bg-card);
624
+ border: 1px solid var(--color-border-primary);
625
+ border-radius: 6px;
626
+ padding: 0 14px;
627
+ height: 36px;
628
+ cursor: pointer;
629
+ display: flex;
630
+ align-items: center;
631
+ justify-content: center;
632
+ color: var(--color-text-secondary);
633
+ font-size: 13px;
634
+ font-weight: 500;
635
+ text-decoration: none;
636
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
637
+ white-space: nowrap;
638
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
639
+ }
640
+
641
+ .github-stars-btn:hover {
642
+ background: var(--color-bg-card-hover);
643
+ border-color: var(--color-border-focus);
644
+ color: var(--color-text-primary);
645
+ transform: translateY(-1px);
646
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
647
+ }
648
+
649
+ .github-stars-btn:active {
650
+ transform: translateY(0);
651
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
652
+ }
653
+
654
+ /* Stars count animation */
655
+ .stars-count {
656
+ animation: countUp 0.6s cubic-bezier(0.4, 0, 0.2, 1);
657
+ display: inline-block;
658
+ }
659
+
660
+ .stars-loading {
661
+ opacity: 0.5;
662
+ animation: pulse 1.5s ease-in-out infinite;
663
+ }
664
+
665
+ @keyframes countUp {
666
+ from {
667
+ opacity: 0;
668
+ transform: translateY(8px);
669
+ }
670
+ to {
671
+ opacity: 1;
672
+ transform: translateY(0);
673
+ }
674
+ }
675
+
676
+ .icon-link {
677
+ display: flex;
678
+ align-items: center;
679
+ justify-content: center;
680
+ width: 36px;
681
+ height: 36px;
682
+ color: var(--color-text-secondary);
683
+ background: var(--color-bg-card);
684
+ border: 1px solid var(--color-border-primary);
685
+ border-radius: 6px;
686
+ text-decoration: none;
687
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
688
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
689
+ }
690
+
691
+ .icon-link:hover {
692
+ background: var(--color-bg-card-hover);
693
+ border-color: var(--color-border-focus);
694
+ color: var(--color-text-primary);
695
+ transform: translateY(-1px);
696
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
697
+ }
698
+
699
+ .settings-icon,
700
+ .theme-toggle-btn svg {
701
+ width: 18px;
702
+ height: 18px;
703
+ }
704
+
705
+ .status-dot {
706
+ width: 8px;
707
+ height: 8px;
708
+ border-radius: 50%;
709
+ background: var(--color-accent-error);
710
+ animation: pulse 2s ease-in-out infinite;
711
+ }
712
+
713
+ .status-dot.connected {
714
+ background: var(--color-accent-success);
715
+ animation: none;
716
+ }
717
+
718
+ @keyframes pulse {
719
+
720
+ 0%,
721
+ 100% {
722
+ opacity: 1;
723
+ }
724
+
725
+ 50% {
726
+ opacity: 0.5;
727
+ }
728
+ }
729
+
730
+ select,
731
+ input,
732
+ button {
733
+ background: var(--color-bg-input);
734
+ color: var(--color-text-primary);
735
+ border: 1px solid var(--color-border-primary);
736
+ padding: 6px 12px;
737
+ font-family: inherit;
738
+ font-size: 13px;
739
+ border-radius: 4px;
740
+ transition: all 0.15s ease;
741
+ }
742
+
743
+ .status select {
744
+ background: var(--color-bg-card);
745
+ border: 1px solid var(--color-border-primary);
746
+ border-radius: 6px;
747
+ padding: 0 32px 0 12px;
748
+ height: 36px;
749
+ font-size: 13px;
750
+ font-weight: 500;
751
+ color: var(--color-text-secondary);
752
+ cursor: pointer;
753
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
754
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
755
+ appearance: none;
756
+ background-image: url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 12 12' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M3 4.5L6 7.5L9 4.5' stroke='%23666' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
757
+ background-repeat: no-repeat;
758
+ background-position: right 10px center;
759
+ max-width: 180px;
760
+ }
761
+
762
+ .status select:hover {
763
+ background-color: var(--color-bg-card-hover);
764
+ border-color: var(--color-border-focus);
765
+ color: var(--color-text-primary);
766
+ transform: translateY(-1px);
767
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
768
+ }
769
+
770
+ .status select:focus {
771
+ outline: none;
772
+ border-color: var(--color-border-focus);
773
+ box-shadow: 0 0 0 3px rgba(9, 105, 218, 0.1);
774
+ transform: translateY(-1px);
775
+ }
776
+
777
+ select:hover,
778
+ input:hover {
779
+ border-color: var(--color-border-focus);
780
+ }
781
+
782
+ select:focus,
783
+ input:focus {
784
+ outline: none;
785
+ border-color: var(--color-border-focus);
786
+ box-shadow: var(--shadow-focus);
787
+ }
788
+
789
+ button {
790
+ background: var(--color-bg-button);
791
+ color: var(--color-text-button);
792
+ border: none;
793
+ font-weight: 500;
794
+ cursor: pointer;
795
+ }
796
+
797
+ button:hover:not(:disabled) {
798
+ background: var(--color-bg-button-hover);
799
+ }
800
+
801
+ button:active:not(:disabled) {
802
+ background: var(--color-bg-button-active);
803
+ }
804
+
805
+ button:disabled {
806
+ opacity: 0.5;
807
+ cursor: not-allowed;
808
+ }
809
+
810
+ .feed {
811
+ flex: 1;
812
+ overflow-y: scroll;
813
+ height: 100vh;
814
+ padding: 24px 18px;
815
+ display: flex;
816
+ justify-content: center;
817
+ }
818
+
819
+ .feed-content {
820
+ max-width: 650px;
821
+ }
822
+
823
+ .card {
824
+ margin-bottom: 24px;
825
+ padding: 24px;
826
+ background: var(--color-bg-card);
827
+ border: 1px solid var(--color-border-primary);
828
+ border-radius: 8px;
829
+ transition: all 0.15s ease;
830
+ animation: slideIn 0.3s ease-out;
831
+ line-height: 1.7;
832
+ }
833
+
834
+ @keyframes slideIn {
835
+ from {
836
+ opacity: 0;
837
+ transform: translateY(-10px);
838
+ }
839
+
840
+ to {
841
+ opacity: 1;
842
+ transform: translateY(0);
843
+ }
844
+ }
845
+
846
+ .card:hover {
847
+ border-color: var(--color-border-hover);
848
+ }
849
+
850
+ .card-header {
851
+ display: flex;
852
+ align-items: center;
853
+ justify-content: space-between;
854
+ margin-bottom: 14px;
855
+ font-size: 12px;
856
+ color: var(--color-text-muted);
857
+ font-family: 'Monaco', 'Menlo', 'Consolas', monospace;
858
+ }
859
+
860
+ .card-header-left {
861
+ display: flex;
862
+ align-items: center;
863
+ gap: 10px;
864
+ }
865
+
866
+ .card-subheading-left {
867
+ display: flex;
868
+ align-items: center;
869
+ gap: 10px;
870
+ }
871
+
872
+ .card-subheading {
873
+ display: flex;
874
+ align-items: center;
875
+ justify-content: space-between;
876
+ margin-bottom: 14px;
877
+ font-size: 12px;
878
+ color: var(--color-text-muted);
879
+ font-family: 'Monaco', 'Menlo', 'Consolas', monospace;
880
+ }
881
+
882
+ .card-type {
883
+ padding: 2px 8px;
884
+ background: var(--color-type-badge-bg);
885
+ color: var(--color-type-badge-text);
886
+ border-radius: 3px;
887
+ font-weight: 500;
888
+ text-transform: uppercase;
889
+ font-size: 11px;
890
+ letter-spacing: 0.5px;
891
+ }
892
+
893
+ .card-source {
894
+ padding: 2px 8px;
895
+ border-radius: 999px;
896
+ font-weight: 600;
897
+ font-size: 10px;
898
+ letter-spacing: 0.04em;
899
+ text-transform: uppercase;
900
+ border: 1px solid transparent;
901
+ }
902
+
903
+ .source-claude {
904
+ background: rgba(255, 138, 61, 0.12);
905
+ color: #c25a00;
906
+ border-color: rgba(255, 138, 61, 0.22);
907
+ }
908
+
909
+ .source-codex {
910
+ background: rgba(33, 150, 243, 0.12);
911
+ color: #0f5ba7;
912
+ border-color: rgba(33, 150, 243, 0.24);
913
+ }
914
+
915
+ .source-cursor {
916
+ background: rgba(124, 58, 237, 0.12);
917
+ color: #6d28d9;
918
+ border-color: rgba(124, 58, 237, 0.24);
919
+ }
920
+
921
+ [data-theme="dark"] .source-claude {
922
+ color: #ffb067;
923
+ border-color: rgba(255, 176, 103, 0.2);
924
+ }
925
+
926
+ [data-theme="dark"] .source-codex {
927
+ color: #8fc7ff;
928
+ border-color: rgba(143, 199, 255, 0.2);
929
+ }
930
+
931
+ [data-theme="dark"] .source-cursor {
932
+ color: #c4b5fd;
933
+ border-color: rgba(196, 181, 253, 0.2);
934
+ }
935
+
936
+ .card-title {
937
+ font-size: 17px;
938
+ margin-bottom: 14px;
939
+ color: var(--color-text-title);
940
+ font-weight: 600;
941
+ line-height: 1.4;
942
+ letter-spacing: -0.01em;
943
+ }
944
+
945
+ .view-mode-toggles {
946
+ display: flex;
947
+ gap: 8px;
948
+ flex-shrink: 0;
949
+ }
950
+
951
+ .view-mode-toggle {
952
+ display: flex;
953
+ align-items: center;
954
+ gap: 4px;
955
+ background: var(--color-bg-tertiary);
956
+ border: 1px solid var(--color-border-primary);
957
+ padding: 4px 8px;
958
+ border-radius: 4px;
959
+ cursor: pointer;
960
+ color: var(--color-text-secondary);
961
+ transition: all 0.15s ease;
962
+ font-size: 11px;
963
+ font-weight: 500;
964
+ text-transform: lowercase;
965
+ font-family: 'Monaco', 'Menlo', 'Consolas', monospace;
966
+ }
967
+
968
+ .view-mode-toggle svg {
969
+ flex-shrink: 0;
970
+ opacity: 0.7;
971
+ transition: opacity 0.15s ease;
972
+ }
973
+
974
+ .view-mode-toggle:hover {
975
+ background: var(--color-bg-card-hover);
976
+ border-color: var(--color-border-hover);
977
+ color: var(--color-text-primary);
978
+ }
979
+
980
+ .view-mode-toggle:hover svg {
981
+ opacity: 1;
982
+ }
983
+
984
+ .view-mode-toggle.active {
985
+ background: var(--color-accent-primary);
986
+ border-color: var(--color-accent-primary);
987
+ color: var(--color-text-button);
988
+ }
989
+
990
+ .view-mode-toggle.active svg {
991
+ opacity: 1;
992
+ }
993
+
994
+ .view-mode-content {
995
+ margin-bottom: 12px;
996
+ }
997
+
998
+ .view-mode-content .card-subtitle {
999
+ margin-bottom: 0;
1000
+ }
1001
+
1002
+ .view-mode-content .facts-list {
1003
+ list-style: disc;
1004
+ margin: 0;
1005
+ padding-left: 20px;
1006
+ color: var(--color-text-secondary);
1007
+ font-size: 13px;
1008
+ line-height: 1.7;
1009
+ }
1010
+
1011
+ .view-mode-content .facts-list li {
1012
+ margin-bottom: 6px;
1013
+ }
1014
+
1015
+ .view-mode-content .narrative {
1016
+ max-height: 300px;
1017
+ overflow-y: auto;
1018
+ white-space: pre-wrap;
1019
+ word-wrap: break-word;
1020
+ color: var(--color-text-secondary);
1021
+ font-size: 13px;
1022
+ line-height: 1.7;
1023
+ }
1024
+
1025
+ .card-section {
1026
+ font-size: 14px;
1027
+ color: var(--color-text-subtitle);
1028
+ line-height: 1.6;
1029
+ margin-bottom: 10px;
1030
+ }
1031
+
1032
+ .card-section:last-child {
1033
+ margin-bottom: 0;
1034
+ }
1035
+
1036
+ .card-section pre {
1037
+ white-space: pre-wrap;
1038
+ font-size: 13px;
1039
+ /* word-wrap: break-word; */
1040
+ }
1041
+
1042
+ /*
1043
+ .card-section h4 {
1044
+ font-size: 12px;
1045
+ margin-bottom: 8px;
1046
+ margin-top: 16px;
1047
+ color: var(--color-text-title);
1048
+ font-weight: 500;
1049
+ } */
1050
+
1051
+ .card-meta {
1052
+ font-size: 11px;
1053
+ color: var(--color-text-tertiary);
1054
+ margin-top: 18px;
1055
+ font-family: 'Monaco', 'Menlo', 'Consolas', monospace;
1056
+ display: flex;
1057
+ flex-wrap: wrap;
1058
+ gap: 6px;
1059
+ line-height: 1.5;
1060
+ }
1061
+
1062
+ .meta-date {
1063
+ color: var(--color-text-tertiary);
1064
+ }
1065
+
1066
+ .meta-concepts {
1067
+ font-style: italic;
1068
+ color: var(--color-text-muted);
1069
+ }
1070
+
1071
+ .meta-files {
1072
+ color: var(--color-text-muted);
1073
+ font-size: 10px;
1074
+ }
1075
+
1076
+ .meta-files .file-label {
1077
+ font-weight: 500;
1078
+ color: var(--color-text-tertiary);
1079
+ }
1080
+
1081
+ /* Stack single column on narrow screens (removed - no longer using card-files) */
1082
+ @media (max-width: 600px) {}
1083
+
1084
+ /* Project badge styling */
1085
+ .card-project {
1086
+ color: var(--color-text-muted);
1087
+ }
1088
+
1089
+ /* Merged-into-parent provenance badge */
1090
+ .card-merged-badge {
1091
+ padding: 1px 6px;
1092
+ border-radius: 3px;
1093
+ font-size: 9px;
1094
+ font-weight: 500;
1095
+ letter-spacing: 0.02em;
1096
+ color: var(--color-text-muted);
1097
+ background: var(--color-type-badge-bg);
1098
+ border: 1px solid var(--color-border-primary);
1099
+ opacity: 0.85;
1100
+ }
1101
+
1102
+ .summary-card {
1103
+ border-color: var(--color-border-summary);
1104
+ background: var(--color-bg-summary);
1105
+ }
1106
+
1107
+ .summary-card:hover {
1108
+ border-color: var(--color-border-summary-hover);
1109
+ }
1110
+
1111
+ .summary-card .card-type {
1112
+ background: var(--color-summary-badge-bg);
1113
+ color: var(--color-summary-badge-text);
1114
+ }
1115
+
1116
+ .summary-card .card-title {
1117
+ color: var(--color-text-summary);
1118
+ }
1119
+
1120
+ /* Enhanced Summary Card Styles - Editorial/Archival Aesthetic */
1121
+ .summary-card {
1122
+ position: relative;
1123
+ }
1124
+
1125
+ .summary-card-header {
1126
+ margin-bottom: 24px;
1127
+ padding-bottom: 20px;
1128
+ border-bottom: 1px solid var(--color-border-summary);
1129
+ border-bottom-style: dashed;
1130
+ }
1131
+
1132
+ .summary-badge-row {
1133
+ display: flex;
1134
+ align-items: center;
1135
+ gap: 10px;
1136
+ margin-bottom: 16px;
1137
+ flex-wrap: wrap;
1138
+ }
1139
+
1140
+ .summary-badge {
1141
+ font-family: 'Monaspace Radon', 'Monaco', 'Menlo', monospace;
1142
+ font-weight: 600;
1143
+ font-size: 10px;
1144
+ text-transform: uppercase;
1145
+ padding: 4px 10px;
1146
+ border-radius: 2px;
1147
+ }
1148
+
1149
+ .summary-project-badge {
1150
+ font-family: 'Monaspace Radon', 'Monaco', 'Menlo', monospace;
1151
+ font-size: 11px;
1152
+ color: var(--color-text-muted);
1153
+ font-weight: 400;
1154
+ padding: 3px 8px;
1155
+ background: rgba(0, 0, 0, 0.03);
1156
+ border-radius: 2px;
1157
+ border: 1px solid var(--color-border-primary);
1158
+ }
1159
+
1160
+ [data-theme="dark"] .summary-project-badge {
1161
+ background: rgba(255, 255, 255, 0.03);
1162
+ }
1163
+
1164
+ .summary-title {
1165
+ font-size: 20px;
1166
+ font-weight: 600;
1167
+ line-height: 1.4;
1168
+ color: var(--color-text-summary);
1169
+ letter-spacing: -0.02em;
1170
+ margin: 0;
1171
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
1172
+ }
1173
+
1174
+ .summary-sections {
1175
+ display: flex;
1176
+ flex-direction: column;
1177
+ gap: 20px;
1178
+ margin-bottom: 24px;
1179
+ }
1180
+
1181
+ .summary-section {
1182
+ animation: summaryFadeIn 0.4s ease-out backwards;
1183
+ transition: transform 0.2s ease;
1184
+ }
1185
+
1186
+ @keyframes summaryFadeIn {
1187
+ from {
1188
+ opacity: 0;
1189
+ transform: translateY(8px);
1190
+ }
1191
+
1192
+ to {
1193
+ opacity: 1;
1194
+ transform: translateY(0);
1195
+ }
1196
+ }
1197
+
1198
+ .summary-section-header {
1199
+ display: flex;
1200
+ align-items: center;
1201
+ gap: 10px;
1202
+ margin-bottom: 10px;
1203
+ }
1204
+
1205
+ .summary-section-icon {
1206
+ position: relative;
1207
+ width: auto;
1208
+ font-size: 16px;
1209
+ line-height: 1;
1210
+ }
1211
+
1212
+ .summary-section-icon--investigated {
1213
+ height: 16px;
1214
+ }
1215
+
1216
+ .summary-section-icon--learned {
1217
+ height: 18px;
1218
+ left: -1px;
1219
+ top: -3px;
1220
+ }
1221
+
1222
+ .summary-section-icon--completed {
1223
+ height: 17px;
1224
+ }
1225
+
1226
+ .summary-section-icon--next_steps {
1227
+ height: 15px;
1228
+ }
1229
+
1230
+ .summary-section-label {
1231
+ font-size: 13px;
1232
+ font-weight: 600;
1233
+ color: var(--color-accent-summary);
1234
+ text-transform: uppercase;
1235
+ margin: 0;
1236
+ font-family: 'Monaspace Radon', 'Monaco', 'Menlo', monospace;
1237
+ }
1238
+
1239
+ .summary-section-content {
1240
+ margin-left: 26px;
1241
+ color: var(--color-text-secondary);
1242
+ font-size: 14px;
1243
+ line-height: 1.6;
1244
+ white-space: pre-wrap;
1245
+ word-wrap: break-word;
1246
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
1247
+ }
1248
+
1249
+ .summary-card-footer {
1250
+ display: flex;
1251
+ align-items: center;
1252
+ gap: 8px;
1253
+ padding-top: 16px;
1254
+ border-top: 1px solid var(--color-border-primary);
1255
+ font-family: 'Monaspace Radon', 'Monaco', 'Menlo', monospace;
1256
+ font-size: 11px;
1257
+ color: var(--color-text-tertiary);
1258
+ }
1259
+
1260
+ .summary-meta-id {
1261
+ font-weight: 500;
1262
+ color: var(--color-accent-summary);
1263
+ }
1264
+
1265
+ .summary-meta-divider {
1266
+ opacity: 0.5;
1267
+ }
1268
+
1269
+ .summary-meta-date {
1270
+ font-weight: 400;
1271
+ }
1272
+
1273
+ /* Responsive adjustments for summary cards */
1274
+ @media (max-width: 600px) {
1275
+ .summary-title {
1276
+ font-size: 18px;
1277
+ }
1278
+
1279
+ .summary-section-content {
1280
+ margin-left: 0;
1281
+ padding-left: 12px;
1282
+ font-size: 13px;
1283
+ }
1284
+
1285
+ .summary-section-header {
1286
+ gap: 8px;
1287
+ }
1288
+ }
1289
+
1290
+ .settings-section {
1291
+ padding: 18px;
1292
+ border-bottom: 1px solid var(--color-border-primary);
1293
+ }
1294
+
1295
+ .settings-section h3 {
1296
+ font-size: 14px;
1297
+ font-weight: 600;
1298
+ margin-bottom: 14px;
1299
+ color: var(--color-text-header);
1300
+ letter-spacing: 0.3px;
1301
+ }
1302
+
1303
+ .form-group {
1304
+ margin-bottom: 14px;
1305
+ }
1306
+
1307
+ .form-group label {
1308
+ display: block;
1309
+ margin-bottom: 6px;
1310
+ font-size: 12px;
1311
+ color: var(--color-text-muted);
1312
+ font-family: 'Monaco', 'Menlo', 'Consolas', monospace;
1313
+ }
1314
+
1315
+ .setting-description {
1316
+ font-size: 12px;
1317
+ color: var(--color-text-muted);
1318
+ margin-bottom: 8px;
1319
+ line-height: 1.5;
1320
+ }
1321
+
1322
+ .stats-grid {
1323
+ display: grid;
1324
+ grid-template-columns: 1fr 1fr;
1325
+ gap: 12px;
1326
+ }
1327
+
1328
+ .stat {
1329
+ padding: 10px 12px;
1330
+ background: var(--color-bg-stat);
1331
+ border: 1px solid var(--color-border-primary);
1332
+ border-radius: 4px;
1333
+ }
1334
+
1335
+ .stat-label {
1336
+ color: var(--color-text-muted);
1337
+ margin-bottom: 4px;
1338
+ font-size: 11px;
1339
+ text-transform: uppercase;
1340
+ letter-spacing: 0.5px;
1341
+ }
1342
+
1343
+ .stat-value {
1344
+ font-size: 18px;
1345
+ color: var(--color-text-header);
1346
+ font-weight: 600;
1347
+ font-family: 'Monaco', 'Menlo', 'Consolas', monospace;
1348
+ }
1349
+
1350
+ .stats-scroll {
1351
+ flex: 1;
1352
+ overflow-y: auto;
1353
+ }
1354
+
1355
+ ::-webkit-scrollbar {
1356
+ width: 10px;
1357
+ }
1358
+
1359
+ ::-webkit-scrollbar-track {
1360
+ background: var(--color-bg-scrollbar-track);
1361
+ }
1362
+
1363
+ ::-webkit-scrollbar-thumb {
1364
+ background: var(--color-bg-scrollbar-thumb);
1365
+ border-radius: 5px;
1366
+ }
1367
+
1368
+ ::-webkit-scrollbar-thumb:hover {
1369
+ background: var(--color-bg-scrollbar-thumb-hover);
1370
+ }
1371
+
1372
+ .save-status {
1373
+ margin-top: 8px;
1374
+ font-size: 12px;
1375
+ color: var(--color-text-muted);
1376
+ }
1377
+
1378
+ .prompt-card {
1379
+ border-color: var(--color-border-prompt);
1380
+ background: var(--color-bg-prompt);
1381
+ }
1382
+
1383
+ .prompt-card:hover {
1384
+ border-color: var(--color-border-prompt-hover);
1385
+ }
1386
+
1387
+ .prompt-card .card-type {
1388
+ background: var(--color-prompt-badge-bg);
1389
+ color: var(--color-prompt-badge-text);
1390
+ }
1391
+
1392
+ .observation-card {
1393
+ border-color: var(--color-border-observation);
1394
+ background: var(--color-bg-observation);
1395
+ color: var(--color-text-observation);
1396
+ }
1397
+
1398
+ .observation-card:hover {
1399
+ border-color: var(--color-border-observation-hover);
1400
+ }
1401
+
1402
+ .observation-card .card-type {
1403
+ background: var(--color-observation-badge-bg);
1404
+ color: var(--color-observation-badge-text);
1405
+ }
1406
+
1407
+ /* Welcome modal — first-launch + reusable as help via the ? button.
1408
+ Layout strategy: desktop-first, fluid type via clamp(), and squares
1409
+ built with the padding-bottom:100% trick (percentage padding resolves
1410
+ against width, so the box is always W × W regardless of content). */
1411
+ .welcome-modal-backdrop {
1412
+ position: fixed;
1413
+ inset: 0;
1414
+ z-index: 1100;
1415
+ display: flex;
1416
+ align-items: center;
1417
+ justify-content: center;
1418
+ padding: clamp(16px, 3vw, 40px);
1419
+ background: rgba(0, 0, 0, 0.15);
1420
+ animation: fadeIn 0.18s ease-out;
1421
+ overflow-y: auto;
1422
+ }
1423
+
1424
+ .welcome-modal {
1425
+ position: relative;
1426
+ width: 100%;
1427
+ max-width: clamp(560px, 70vw, 960px);
1428
+ padding: clamp(28px, 4vw, 52px) clamp(28px, 4.5vw, 60px) clamp(24px, 3vw, 40px);
1429
+ border-radius: clamp(14px, 1.4vw, 20px);
1430
+ background: color-mix(in srgb, var(--color-bg-card) 55%, transparent);
1431
+ border: 1px solid color-mix(in srgb, var(--color-border-primary) 55%, transparent);
1432
+ box-shadow:
1433
+ 0 40px 120px rgba(0, 0, 0, 0.6),
1434
+ 0 16px 48px rgba(0, 0, 0, 0.35),
1435
+ 0 0 0 1px rgba(255, 255, 255, 0.05) inset;
1436
+ animation: slideUp 0.28s cubic-bezier(0.4, 0, 0.2, 1);
1437
+ backdrop-filter: blur(28px) saturate(170%);
1438
+ -webkit-backdrop-filter: blur(28px) saturate(170%);
1439
+ }
1440
+
1441
+ .welcome-modal-dismiss {
1442
+ position: absolute;
1443
+ top: clamp(12px, 1.4vw, 18px);
1444
+ right: clamp(12px, 1.4vw, 18px);
1445
+ width: 36px;
1446
+ height: 36px;
1447
+ border-radius: 999px;
1448
+ background: color-mix(in srgb, var(--color-bg-card) 70%, transparent);
1449
+ border: 1px solid color-mix(in srgb, var(--color-border-primary) 70%, transparent);
1450
+ color: var(--color-text-secondary);
1451
+ cursor: pointer;
1452
+ display: flex;
1453
+ align-items: center;
1454
+ justify-content: center;
1455
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
1456
+ padding: 0;
1457
+ }
1458
+
1459
+ .welcome-modal-dismiss:hover {
1460
+ background: var(--color-bg-card-hover);
1461
+ border-color: var(--color-border-focus);
1462
+ color: var(--color-text-primary);
1463
+ transform: scale(1.05);
1464
+ }
1465
+
1466
+ .welcome-modal-dismiss:active {
1467
+ transform: scale(0.95);
1468
+ }
1469
+
1470
+ .welcome-modal-header {
1471
+ display: flex;
1472
+ flex-direction: column;
1473
+ align-items: center;
1474
+ text-align: center;
1475
+ gap: clamp(8px, 0.8vw, 12px);
1476
+ margin-bottom: clamp(20px, 2.4vw, 36px);
1477
+ }
1478
+
1479
+ .welcome-modal-logo {
1480
+ width: clamp(72px, 7.5vw, 104px);
1481
+ height: clamp(72px, 7.5vw, 104px);
1482
+ object-fit: contain;
1483
+ filter: drop-shadow(0 6px 20px rgba(0, 0, 0, 0.18));
1484
+ }
1485
+
1486
+ .welcome-modal-header h2 {
1487
+ margin: clamp(4px, 0.5vw, 8px) 0 0 0;
1488
+ font-size: clamp(22px, 2.4vw, 32px);
1489
+ font-weight: 600;
1490
+ color: var(--color-text-title);
1491
+ letter-spacing: -0.02em;
1492
+ line-height: 1.2;
1493
+ }
1494
+
1495
+ .welcome-modal-header p {
1496
+ margin: 0;
1497
+ font-size: clamp(13px, 1.2vw, 17px);
1498
+ color: var(--color-text-secondary);
1499
+ line-height: 1.5;
1500
+ }
1501
+
1502
+ .welcome-modal-grid {
1503
+ display: grid;
1504
+ grid-template-columns: repeat(3, 1fr);
1505
+ gap: clamp(10px, 1.2vw, 18px);
1506
+ }
1507
+
1508
+ /* True-square shell: padding-bottom:100% resolves against parent
1509
+ width, so the box is always W × W. Content is positioned absolutely
1510
+ inside so it cannot push the box taller. */
1511
+ .welcome-modal-feature {
1512
+ position: relative;
1513
+ width: 100%;
1514
+ height: 0;
1515
+ padding-bottom: 100%;
1516
+ border-radius: clamp(10px, 1vw, 14px);
1517
+ background: color-mix(in srgb, var(--color-bg-tertiary) 35%, transparent);
1518
+ border: 1px solid color-mix(in srgb, var(--color-border-primary) 50%, transparent);
1519
+ transition: border-color 0.18s ease, transform 0.18s ease, background 0.18s ease;
1520
+ }
1521
+
1522
+ .welcome-modal-feature:hover {
1523
+ border-color: var(--color-border-focus);
1524
+ transform: translateY(-2px);
1525
+ background: color-mix(in srgb, var(--color-bg-tertiary) 55%, transparent);
1526
+ }
1527
+
1528
+ .welcome-modal-feature-inner {
1529
+ position: absolute;
1530
+ inset: 0;
1531
+ display: flex;
1532
+ flex-direction: column;
1533
+ align-items: center;
1534
+ justify-content: center;
1535
+ text-align: center;
1536
+ gap: clamp(6px, 0.7vw, 12px);
1537
+ padding: clamp(14px, 1.8vw, 26px);
1538
+ }
1539
+
1540
+ .welcome-modal-feature-art {
1541
+ width: clamp(56px, 6.5vw, 96px);
1542
+ height: clamp(56px, 6.5vw, 96px);
1543
+ color: var(--color-text-tertiary);
1544
+ flex-shrink: 0;
1545
+ }
1546
+
1547
+ .welcome-modal-feature-title {
1548
+ margin: clamp(2px, 0.3vw, 6px) 0 0 0;
1549
+ font-size: clamp(14px, 1.2vw, 17px);
1550
+ font-weight: 600;
1551
+ letter-spacing: -0.01em;
1552
+ color: var(--color-text-primary);
1553
+ line-height: 1.3;
1554
+ }
1555
+
1556
+ .welcome-modal-feature-desc {
1557
+ margin: 0;
1558
+ font-size: clamp(11px, 0.9vw, 13px);
1559
+ line-height: 1.45;
1560
+ color: var(--color-text-secondary);
1561
+ }
1562
+
1563
+ .welcome-modal-footer {
1564
+ margin-top: clamp(20px, 2.2vw, 32px);
1565
+ padding-top: clamp(14px, 1.4vw, 20px);
1566
+ border-top: 1px solid color-mix(in srgb, var(--color-border-primary) 50%, transparent);
1567
+ text-align: center;
1568
+ font-size: clamp(12px, 1vw, 14px);
1569
+ color: var(--color-text-muted);
1570
+ }
1571
+
1572
+ .welcome-modal-footer a {
1573
+ color: var(--color-accent-primary);
1574
+ text-decoration: none;
1575
+ font-weight: 500;
1576
+ }
1577
+
1578
+ .welcome-modal-footer a:hover {
1579
+ text-decoration: underline;
1580
+ }
1581
+
1582
+ .welcome-modal-footer-sep {
1583
+ margin: 0 8px;
1584
+ opacity: 0.5;
1585
+ }
1586
+
1587
+ /* Below ~600px three squares get too small to read — stack to one
1588
+ column and let each block grow to natural content height. */
1589
+ @media (max-width: 600px) {
1590
+ .welcome-modal {
1591
+ max-width: 100%;
1592
+ }
1593
+
1594
+ .welcome-modal-grid {
1595
+ grid-template-columns: 1fr;
1596
+ }
1597
+
1598
+ .welcome-modal-feature {
1599
+ height: auto;
1600
+ padding-bottom: 0;
1601
+ }
1602
+
1603
+ .welcome-modal-feature-inner {
1604
+ position: static;
1605
+ padding: 22px 18px;
1606
+ }
1607
+ }
1608
+
1609
+ .card-content {
1610
+ margin-top: 14px;
1611
+ margin-bottom: 12px;
1612
+ line-height: 1.7;
1613
+ color: var(--color-text-primary);
1614
+ white-space: pre-wrap;
1615
+ word-wrap: break-word;
1616
+ }
1617
+
1618
+ .processing-indicator {
1619
+ display: inline-flex;
1620
+ align-items: center;
1621
+ gap: 6px;
1622
+ color: var(--color-accent-focus);
1623
+ font-size: 11px;
1624
+ font-weight: 500;
1625
+ margin-left: auto;
1626
+ }
1627
+
1628
+ .spinner {
1629
+ width: 12px;
1630
+ height: 12px;
1631
+ border: 2px solid var(--color-border-primary);
1632
+ border-top-color: var(--color-accent-focus);
1633
+ border-radius: 50%;
1634
+ animation: spin 0.8s linear infinite;
1635
+ }
1636
+
1637
+ @keyframes spin {
1638
+ to {
1639
+ transform: rotate(360deg);
1640
+ }
1641
+ }
1642
+
1643
+ .summary-skeleton {
1644
+ opacity: 0.7;
1645
+ }
1646
+
1647
+ .summary-skeleton .processing-indicator {
1648
+ margin-left: auto;
1649
+ }
1650
+
1651
+ .skeleton-line {
1652
+ height: 16px;
1653
+ background: linear-gradient(90deg, var(--color-skeleton-base) 25%, var(--color-skeleton-highlight) 50%, var(--color-skeleton-base) 75%);
1654
+ background-size: 200% 100%;
1655
+ animation: shimmer 1.5s infinite;
1656
+ border-radius: 4px;
1657
+ margin-bottom: 8px;
1658
+ }
1659
+
1660
+ .skeleton-title {
1661
+ height: 20px;
1662
+ width: 80%;
1663
+ margin-bottom: 10px;
1664
+ }
1665
+
1666
+ .skeleton-subtitle {
1667
+ height: 16px;
1668
+ width: 90%;
1669
+ }
1670
+
1671
+ .skeleton-subtitle.short {
1672
+ width: 60%;
1673
+ }
1674
+
1675
+ @keyframes shimmer {
1676
+ 0% {
1677
+ background-position: 200% 0;
1678
+ }
1679
+
1680
+ 100% {
1681
+ background-position: -200% 0;
1682
+ }
1683
+ }
1684
+
1685
+ /* Scroll to top button */
1686
+ .scroll-to-top {
1687
+ position: fixed;
1688
+ bottom: 24px;
1689
+ right: 24px;
1690
+ width: 48px;
1691
+ height: 48px;
1692
+ background: var(--color-bg-button);
1693
+ color: var(--color-text-button);
1694
+ border: none;
1695
+ border-radius: 24px;
1696
+ cursor: pointer;
1697
+ display: flex;
1698
+ align-items: center;
1699
+ justify-content: center;
1700
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
1701
+ transition: all 0.2s ease;
1702
+ z-index: 50;
1703
+ animation: fadeInUp 0.3s ease-out;
1704
+ }
1705
+
1706
+ .scroll-to-top:hover {
1707
+ background: var(--color-bg-button-hover);
1708
+ transform: translateY(-2px);
1709
+ box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2);
1710
+ }
1711
+
1712
+ .scroll-to-top:active {
1713
+ background: var(--color-bg-button-active);
1714
+ transform: translateY(0);
1715
+ }
1716
+
1717
+ @keyframes fadeInUp {
1718
+ from {
1719
+ opacity: 0;
1720
+ transform: translateY(10px);
1721
+ }
1722
+
1723
+ to {
1724
+ opacity: 1;
1725
+ transform: translateY(0);
1726
+ }
1727
+ }
1728
+
1729
+ /* Utility: Container */
1730
+ .container {
1731
+ width: 100%;
1732
+ max-width: 600px;
1733
+ margin: 0 auto;
1734
+ }
1735
+
1736
+ /* Tablet Responsive Styles - 481px to 768px */
1737
+ @media (max-width: 768px) and (min-width: 481px) {
1738
+ /* Header stays on one line, hide icon links to save space */
1739
+ .header {
1740
+ padding: 14px 20px;
1741
+ }
1742
+
1743
+ .header-main {
1744
+ gap: 12px;
1745
+ }
1746
+
1747
+ .status {
1748
+ gap: 6px;
1749
+ }
1750
+
1751
+ .status select {
1752
+ max-width: 160px;
1753
+ }
1754
+
1755
+ /* Hide icon links (docs, github, twitter) on tablet */
1756
+ .icon-link {
1757
+ display: none;
1758
+ }
1759
+
1760
+ /* Sidebar full width on tablet */
1761
+ .sidebar {
1762
+ }
1763
+
1764
+ /* Feed adjustments */
1765
+ .feed {
1766
+ padding: 20px 16px;
1767
+ }
1768
+
1769
+ .feed-content {
1770
+ }
1771
+
1772
+ /* Card adjustments */
1773
+ .card {
1774
+ padding: 20px;
1775
+ }
1776
+ }
1777
+
1778
+ /* Mobile & Small Tablet - 600px and below */
1779
+ @media (max-width: 600px) {
1780
+ /* Hide community button in header, will show in sidebar */
1781
+ .community-btn {
1782
+ display: none;
1783
+ }
1784
+
1785
+ /* Hide GitHub stars button on mobile */
1786
+ .github-stars-btn {
1787
+ display: none;
1788
+ }
1789
+ }
1790
+
1791
+ /* Mobile Responsive Styles - 480px and below */
1792
+ @media (max-width: 480px) {
1793
+ /* Hide project dropdown in header, will show in sidebar */
1794
+ .status select {
1795
+ display: none;
1796
+ }
1797
+
1798
+ /* Header stays on one line */
1799
+ .header {
1800
+ padding: 12px 16px;
1801
+ }
1802
+
1803
+ .header h1 {
1804
+ font-size: 15px;
1805
+ gap: 8px;
1806
+ }
1807
+
1808
+ .header-main {
1809
+ gap: 10px;
1810
+ }
1811
+
1812
+ .logomark {
1813
+ height: 28px;
1814
+ }
1815
+
1816
+ .logo-text {
1817
+ font-size: 18px;
1818
+ }
1819
+
1820
+ .status {
1821
+ display: flex;
1822
+ gap: 6px;
1823
+ overflow-x: auto;
1824
+ overflow-y: hidden;
1825
+ -webkit-overflow-scrolling: touch;
1826
+ scrollbar-width: none;
1827
+ padding-bottom: 4px;
1828
+ }
1829
+
1830
+ .status::-webkit-scrollbar {
1831
+ display: none;
1832
+ }
1833
+
1834
+ .status select {
1835
+ max-width: 140px;
1836
+ flex-shrink: 0;
1837
+ padding: 0 28px 0 10px;
1838
+ height: 32px;
1839
+ font-size: 12px;
1840
+ }
1841
+
1842
+ /* Hide icon links on mobile */
1843
+ .icon-link {
1844
+ display: none;
1845
+ }
1846
+
1847
+ .settings-btn,
1848
+ .theme-toggle-btn,
1849
+ .icon-link {
1850
+ width: 32px;
1851
+ height: 32px;
1852
+ flex-shrink: 0;
1853
+ }
1854
+
1855
+ .community-btn {
1856
+ height: 32px;
1857
+ padding: 0 12px;
1858
+ font-size: 12px;
1859
+ flex-shrink: 0;
1860
+ }
1861
+
1862
+ .community-btn svg {
1863
+ width: 12px;
1864
+ height: 12px;
1865
+ }
1866
+
1867
+ .settings-icon,
1868
+ .theme-toggle-btn svg,
1869
+ .icon-link svg {
1870
+ width: 16px;
1871
+ height: 16px;
1872
+ }
1873
+
1874
+ /* Sidebar adjustments for mobile */
1875
+ .sidebar {
1876
+ }
1877
+
1878
+ .sidebar-header {
1879
+ padding: 12px 16px;
1880
+ }
1881
+
1882
+ .settings-section {
1883
+ padding: 16px;
1884
+ }
1885
+
1886
+ /* Feed adjustments */
1887
+ .feed {
1888
+ padding: 16px 12px;
1889
+ }
1890
+
1891
+ /* Card adjustments */
1892
+ .card {
1893
+ padding: 16px;
1894
+ margin-bottom: 16px;
1895
+ }
1896
+
1897
+ .card-title {
1898
+ font-size: 15px;
1899
+ }
1900
+
1901
+ .card-header {
1902
+ flex-wrap: wrap;
1903
+ gap: 8px;
1904
+ }
1905
+
1906
+ .card-header-left {
1907
+ flex-wrap: wrap;
1908
+ }
1909
+
1910
+ /* Stats grid to single column */
1911
+ .stats-grid {
1912
+ grid-template-columns: 1fr;
1913
+ }
1914
+
1915
+ /* Form inputs full width */
1916
+ .form-group input,
1917
+ .form-group select {
1918
+ width: 100%;
1919
+ }
1920
+
1921
+ /* Scroll to top button position */
1922
+ .scroll-to-top {
1923
+ bottom: 16px;
1924
+ right: 16px;
1925
+ width: 44px;
1926
+ height: 44px;
1927
+ }
1928
+ }
1929
+
1930
+ /* Context Settings Modal - Modern Clean Design */
1931
+ .modal-backdrop {
1932
+ position: fixed;
1933
+ top: 0;
1934
+ left: 0;
1935
+ right: 0;
1936
+ bottom: 0;
1937
+ background: rgba(0, 0, 0, 0.65);
1938
+ backdrop-filter: blur(4px);
1939
+ display: flex;
1940
+ align-items: center;
1941
+ justify-content: center;
1942
+ z-index: 1000;
1943
+ animation: fadeIn 0.2s ease-out;
1944
+ padding: 20px;
1945
+ }
1946
+
1947
+ .context-settings-modal {
1948
+ background: var(--color-bg-primary);
1949
+ border: 1px solid var(--color-border-primary);
1950
+ border-radius: 12px;
1951
+ width: 100%;
1952
+ max-width: 1200px;
1953
+ height: 90vh;
1954
+ max-height: 800px;
1955
+ display: flex;
1956
+ flex-direction: column;
1957
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
1958
+ animation: slideUp 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1959
+ overflow: hidden;
1960
+ }
1961
+
1962
+ .modal-header {
1963
+ padding: 14px 20px;
1964
+ border-bottom: 1px solid var(--color-border-primary);
1965
+ background: var(--color-bg-header);
1966
+ display: flex;
1967
+ align-items: center;
1968
+ justify-content: space-between;
1969
+ gap: 16px;
1970
+ flex-shrink: 0;
1971
+ }
1972
+
1973
+ .modal-header h2 {
1974
+ margin: 0;
1975
+ font-size: 18px;
1976
+ font-weight: 600;
1977
+ color: var(--color-text-header);
1978
+ letter-spacing: -0.01em;
1979
+ flex-shrink: 0;
1980
+ }
1981
+
1982
+ .header-controls {
1983
+ display: flex;
1984
+ align-items: center;
1985
+ gap: 16px;
1986
+ flex: 1;
1987
+ justify-content: flex-end;
1988
+ }
1989
+
1990
+ .preview-selector {
1991
+ display: flex;
1992
+ align-items: center;
1993
+ gap: 8px;
1994
+ font-size: 12px;
1995
+ color: var(--color-text-secondary);
1996
+ white-space: nowrap;
1997
+ }
1998
+
1999
+ .preview-selector select:disabled {
2000
+ opacity: 0.6;
2001
+ cursor: not-allowed;
2002
+ }
2003
+
2004
+ .preview-selector select {
2005
+ background: var(--color-bg-card);
2006
+ border: 1px solid var(--color-border-primary);
2007
+ color: var(--color-text-primary);
2008
+ padding: 6px 12px;
2009
+ border-radius: 6px;
2010
+ font-size: 12px;
2011
+ font-family: inherit;
2012
+ cursor: pointer;
2013
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
2014
+ }
2015
+
2016
+ .preview-selector select:hover {
2017
+ border-color: var(--color-border-focus);
2018
+ background: var(--color-bg-card-hover);
2019
+ }
2020
+
2021
+ .preview-selector select:focus {
2022
+ outline: none;
2023
+ border-color: var(--color-accent-primary);
2024
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
2025
+ }
2026
+
2027
+ .modal-close-btn {
2028
+ background: transparent;
2029
+ border: 1px solid var(--color-border-primary);
2030
+ width: 32px;
2031
+ height: 32px;
2032
+ border-radius: 6px;
2033
+ cursor: pointer;
2034
+ display: flex;
2035
+ align-items: center;
2036
+ justify-content: center;
2037
+ color: var(--color-text-secondary);
2038
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
2039
+ padding: 0;
2040
+ }
2041
+
2042
+ .modal-close-btn:hover {
2043
+ background: var(--color-bg-card-hover);
2044
+ border-color: var(--color-border-focus);
2045
+ color: var(--color-text-primary);
2046
+ transform: scale(1.05);
2047
+ }
2048
+
2049
+ .modal-close-btn:active {
2050
+ transform: scale(0.95);
2051
+ }
2052
+
2053
+ .modal-icon-link {
2054
+ background: transparent;
2055
+ border: 1px solid var(--color-border-primary);
2056
+ width: 32px;
2057
+ height: 32px;
2058
+ border-radius: 6px;
2059
+ cursor: pointer;
2060
+ display: flex;
2061
+ align-items: center;
2062
+ justify-content: center;
2063
+ color: var(--color-text-secondary);
2064
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
2065
+ padding: 0;
2066
+ text-decoration: none;
2067
+ }
2068
+
2069
+ .modal-icon-link:hover {
2070
+ background: var(--color-bg-card-hover);
2071
+ border-color: var(--color-border-focus);
2072
+ color: var(--color-text-primary);
2073
+ transform: scale(1.05);
2074
+ }
2075
+
2076
+ .modal-icon-link:active {
2077
+ transform: scale(0.95);
2078
+ }
2079
+
2080
+ .modal-body {
2081
+ flex: 1;
2082
+ display: grid;
2083
+ grid-template-columns: 70fr 30fr;
2084
+ gap: 0;
2085
+ overflow: hidden;
2086
+ min-height: 0;
2087
+ }
2088
+
2089
+ .modal-footer {
2090
+ display: flex;
2091
+ justify-content: flex-end;
2092
+ align-items: center;
2093
+ gap: 16px;
2094
+ padding: 16px 24px;
2095
+ border-top: 1px solid var(--modal-border);
2096
+ background: var(--modal-header-bg);
2097
+ }
2098
+
2099
+ .modal-footer .save-status {
2100
+ font-size: 13px;
2101
+ }
2102
+
2103
+ .modal-footer .save-status .success {
2104
+ color: var(--success-color, #22c55e);
2105
+ }
2106
+
2107
+ .modal-footer .save-status .error {
2108
+ color: var(--error-color, #ef4444);
2109
+ }
2110
+
2111
+ .modal-footer .save-btn {
2112
+ padding: 8px 24px;
2113
+ background: var(--accent-color, #3b82f6);
2114
+ color: white;
2115
+ border: none;
2116
+ border-radius: 6px;
2117
+ font-size: 14px;
2118
+ font-weight: 500;
2119
+ cursor: pointer;
2120
+ transition: background 0.15s ease;
2121
+ }
2122
+
2123
+ .modal-footer .save-btn:hover:not(:disabled) {
2124
+ background: var(--accent-hover, #2563eb);
2125
+ }
2126
+
2127
+ .modal-footer .save-btn:disabled {
2128
+ opacity: 0.6;
2129
+ cursor: not-allowed;
2130
+ }
2131
+
2132
+ /* Preview Column - Terminal Style */
2133
+ .preview-column {
2134
+ padding: 20px;
2135
+ overflow: hidden;
2136
+ border-right: none;
2137
+ background: transparent;
2138
+ display: flex;
2139
+ flex-direction: column;
2140
+ }
2141
+
2142
+ .preview-column-header {
2143
+ padding: 16px 20px;
2144
+ background: #141414;
2145
+ border-bottom: 1px solid rgba(255, 255, 255, 0.08);
2146
+ flex-shrink: 0;
2147
+ }
2148
+
2149
+ .preview-column-header label {
2150
+ display: block;
2151
+ font-size: 11px;
2152
+ font-weight: 600;
2153
+ color: #888;
2154
+ margin-bottom: 8px;
2155
+ text-transform: uppercase;
2156
+ letter-spacing: 0.5px;
2157
+ }
2158
+
2159
+ .preview-column-header select {
2160
+ width: 100%;
2161
+ background: #0a0a0a;
2162
+ border: 1px solid rgba(255, 255, 255, 0.12);
2163
+ border-radius: 6px;
2164
+ padding: 8px 12px;
2165
+ height: 36px;
2166
+ font-size: 13px;
2167
+ font-weight: 500;
2168
+ color: #ddd;
2169
+ cursor: pointer;
2170
+ transition: all 0.2s;
2171
+ }
2172
+
2173
+ .preview-column-header select:hover {
2174
+ border-color: rgba(255, 255, 255, 0.2);
2175
+ background: #111;
2176
+ }
2177
+
2178
+ .preview-column-header select:focus {
2179
+ outline: none;
2180
+ border-color: var(--color-accent-primary);
2181
+ box-shadow: 0 0 0 3px rgba(88, 166, 255, 0.1);
2182
+ }
2183
+
2184
+ .preview-content {
2185
+ flex: 1;
2186
+ overflow-y: auto;
2187
+ padding: 20px;
2188
+ font-family: 'Monaco', 'Menlo', 'Consolas', monospace;
2189
+ font-size: 13px;
2190
+ line-height: 1.6;
2191
+ color: #ccc;
2192
+ }
2193
+
2194
+ .preview-content pre {
2195
+ margin: 0;
2196
+ white-space: pre-wrap;
2197
+ word-wrap: break-word;
2198
+ }
2199
+
2200
+ /* Settings Column */
2201
+ .settings-column {
2202
+ padding: 0;
2203
+ overflow-y: auto;
2204
+ background: var(--color-bg-primary);
2205
+ position: relative;
2206
+ }
2207
+
2208
+ /* Custom Scrollbar */
2209
+ .settings-column::-webkit-scrollbar {
2210
+ width: 8px;
2211
+ }
2212
+
2213
+ .settings-column::-webkit-scrollbar-track {
2214
+ background: transparent;
2215
+ }
2216
+
2217
+ .settings-column::-webkit-scrollbar-thumb {
2218
+ background: var(--color-bg-scrollbar-thumb);
2219
+ border-radius: 4px;
2220
+ }
2221
+
2222
+ .settings-column::-webkit-scrollbar-thumb:hover {
2223
+ background: var(--color-bg-scrollbar-thumb-hover);
2224
+ }
2225
+
2226
+ .preview-content::-webkit-scrollbar {
2227
+ width: 8px;
2228
+ }
2229
+
2230
+ .preview-content::-webkit-scrollbar-track {
2231
+ background: transparent;
2232
+ }
2233
+
2234
+ .preview-content::-webkit-scrollbar-thumb {
2235
+ background: rgba(255, 255, 255, 0.15);
2236
+ border-radius: 4px;
2237
+ }
2238
+
2239
+ .preview-content::-webkit-scrollbar-thumb:hover {
2240
+ background: rgba(255, 255, 255, 0.25);
2241
+ }
2242
+
2243
+ /* Settings Groups - Compact */
2244
+ .settings-group {
2245
+ padding: 14px 16px;
2246
+ border-bottom: 1px solid var(--color-border-primary);
2247
+ }
2248
+
2249
+ .settings-group:last-child {
2250
+ border-bottom: none;
2251
+ }
2252
+
2253
+ .settings-group h4 {
2254
+ margin: 0 0 10px 0;
2255
+ font-size: 10px;
2256
+ font-weight: 600;
2257
+ color: var(--color-text-muted);
2258
+ text-transform: uppercase;
2259
+ letter-spacing: 0.8px;
2260
+ }
2261
+
2262
+ /* Filter Chips - Compact */
2263
+ .chips-container {
2264
+ display: flex;
2265
+ flex-wrap: wrap;
2266
+ gap: 6px;
2267
+ }
2268
+
2269
+ .chip {
2270
+ display: inline-flex;
2271
+ align-items: center;
2272
+ justify-content: center;
2273
+ padding: 5px 10px;
2274
+ min-height: 28px;
2275
+ border: 1px solid var(--color-border-primary);
2276
+ border-radius: 4px;
2277
+ font-size: 11px;
2278
+ font-weight: 500;
2279
+ color: var(--color-text-secondary);
2280
+ background: var(--color-bg-card);
2281
+ cursor: pointer;
2282
+ transition: all 0.15s cubic-bezier(0.4, 0, 0.2, 1);
2283
+ user-select: none;
2284
+ }
2285
+
2286
+ .chip:hover {
2287
+ background: var(--color-bg-card-hover);
2288
+ border-color: var(--color-border-hover);
2289
+ color: var(--color-text-primary);
2290
+ transform: translateY(-1px);
2291
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
2292
+ }
2293
+
2294
+ .chip:active {
2295
+ transform: translateY(0);
2296
+ }
2297
+
2298
+ .chip.selected {
2299
+ background: linear-gradient(135deg, var(--color-bg-button) 0%, var(--color-accent-primary) 100%);
2300
+ color: white;
2301
+ border-color: var(--color-bg-button);
2302
+ box-shadow: 0 2px 8px rgba(9, 105, 218, 0.25);
2303
+ }
2304
+
2305
+ .chip.selected:hover {
2306
+ transform: translateY(-1px);
2307
+ box-shadow: 0 4px 12px rgba(9, 105, 218, 0.35);
2308
+ }
2309
+
2310
+ /* Form Controls in Modal - Compact */
2311
+ .settings-group input[type="number"],
2312
+ .settings-group select {
2313
+ width: 100%;
2314
+ background: var(--color-bg-input);
2315
+ border: 1px solid var(--color-border-primary);
2316
+ border-radius: 4px;
2317
+ padding: 6px 10px;
2318
+ height: 32px;
2319
+ font-size: 12px;
2320
+ color: var(--color-text-primary);
2321
+ transition: all 0.2s;
2322
+ margin-top: 4px;
2323
+ }
2324
+
2325
+ .settings-group input[type="number"]:hover,
2326
+ .settings-group select:hover {
2327
+ border-color: var(--color-border-hover);
2328
+ }
2329
+
2330
+ .settings-group input[type="number"]:focus,
2331
+ .settings-group select:focus {
2332
+ outline: none;
2333
+ border-color: var(--color-border-focus);
2334
+ box-shadow: 0 0 0 3px rgba(9, 105, 218, 0.1);
2335
+ }
2336
+
2337
+ .settings-group label {
2338
+ display: block;
2339
+ font-size: 11px;
2340
+ font-weight: 500;
2341
+ color: var(--color-text-primary);
2342
+ margin-bottom: 4px;
2343
+ }
2344
+
2345
+ /* Checkboxes - Compact */
2346
+ .settings-group input[type="checkbox"] {
2347
+ width: 14px;
2348
+ height: 14px;
2349
+ cursor: pointer;
2350
+ margin-right: 6px;
2351
+ accent-color: var(--color-accent-primary);
2352
+ }
2353
+
2354
+ .checkbox-group {
2355
+ display: flex;
2356
+ flex-direction: column;
2357
+ gap: 6px;
2358
+ margin-top: 4px;
2359
+ }
2360
+
2361
+ .checkbox-item {
2362
+ display: flex;
2363
+ align-items: center;
2364
+ cursor: pointer;
2365
+ padding: 4px 0;
2366
+ }
2367
+
2368
+ .checkbox-item label {
2369
+ margin: 0;
2370
+ cursor: pointer;
2371
+ font-size: 11px;
2372
+ font-weight: 500;
2373
+ color: var(--color-text-secondary);
2374
+ }
2375
+
2376
+ .checkbox-item:hover label {
2377
+ color: var(--color-text-primary);
2378
+ }
2379
+
2380
+ /* Number Input Group - Compact */
2381
+ .number-input-group {
2382
+ margin-top: 6px;
2383
+ }
2384
+
2385
+ .select-group {
2386
+ margin-top: 6px;
2387
+ }
2388
+
2389
+ .number-input-group + .number-input-group,
2390
+ .select-group + .number-input-group,
2391
+ .number-input-group + .select-group {
2392
+ margin-top: 10px;
2393
+ }
2394
+
2395
+ /* Animations */
2396
+ @keyframes fadeIn {
2397
+ from {
2398
+ opacity: 0;
2399
+ }
2400
+ to {
2401
+ opacity: 1;
2402
+ }
2403
+ }
2404
+
2405
+ @keyframes slideUp {
2406
+ from {
2407
+ opacity: 0;
2408
+ transform: translateY(30px) scale(0.98);
2409
+ }
2410
+ to {
2411
+ opacity: 1;
2412
+ transform: translateY(0) scale(1);
2413
+ }
2414
+ }
2415
+
2416
+ /* ============================================
2417
+ NEW: Collapsible Sections
2418
+ ============================================ */
2419
+ .settings-section-collapsible {
2420
+ border-bottom: 1px solid var(--color-border-primary);
2421
+ }
2422
+
2423
+ .settings-section-collapsible:last-child {
2424
+ border-bottom: none;
2425
+ }
2426
+
2427
+ .section-header-btn {
2428
+ width: 100%;
2429
+ display: flex;
2430
+ align-items: center;
2431
+ justify-content: space-between;
2432
+ padding: 14px 16px;
2433
+ background: transparent;
2434
+ border: none;
2435
+ cursor: pointer;
2436
+ text-align: left;
2437
+ transition: background 0.15s ease;
2438
+ }
2439
+
2440
+ .section-header-btn:hover {
2441
+ background: var(--color-bg-card-hover);
2442
+ }
2443
+
2444
+ .section-header-content {
2445
+ display: flex;
2446
+ flex-direction: column;
2447
+ gap: 2px;
2448
+ }
2449
+
2450
+ .section-title {
2451
+ font-size: 13px;
2452
+ font-weight: 600;
2453
+ color: var(--color-text-primary);
2454
+ letter-spacing: -0.01em;
2455
+ }
2456
+
2457
+ .section-description {
2458
+ font-size: 11px;
2459
+ color: var(--color-text-muted);
2460
+ font-weight: 400;
2461
+ }
2462
+
2463
+ .chevron-icon {
2464
+ color: var(--color-text-muted);
2465
+ transition: transform 0.2s ease;
2466
+ flex-shrink: 0;
2467
+ }
2468
+
2469
+ .chevron-icon.rotated {
2470
+ transform: rotate(180deg);
2471
+ }
2472
+
2473
+ .section-content {
2474
+ padding: 0 16px 16px 16px;
2475
+ }
2476
+
2477
+ /* ============================================
2478
+ NEW: Chip Groups with All/None
2479
+ ============================================ */
2480
+ .chip-group {
2481
+ margin-bottom: 14px;
2482
+ }
2483
+
2484
+ .chip-group:last-child {
2485
+ margin-bottom: 0;
2486
+ }
2487
+
2488
+ .chip-group-header {
2489
+ display: flex;
2490
+ align-items: center;
2491
+ justify-content: space-between;
2492
+ margin-bottom: 8px;
2493
+ }
2494
+
2495
+ .chip-group-label {
2496
+ font-size: 11px;
2497
+ font-weight: 600;
2498
+ color: var(--color-text-secondary);
2499
+ text-transform: uppercase;
2500
+ letter-spacing: 0.5px;
2501
+ }
2502
+
2503
+ .chip-group-actions {
2504
+ display: flex;
2505
+ gap: 4px;
2506
+ }
2507
+
2508
+ .chip-action {
2509
+ padding: 2px 8px;
2510
+ font-size: 10px;
2511
+ font-weight: 500;
2512
+ color: var(--color-text-muted);
2513
+ background: transparent;
2514
+ border: 1px solid var(--color-border-primary);
2515
+ border-radius: 3px;
2516
+ cursor: pointer;
2517
+ transition: all 0.15s ease;
2518
+ }
2519
+
2520
+ .chip-action:hover {
2521
+ color: var(--color-text-primary);
2522
+ border-color: var(--color-border-hover);
2523
+ background: var(--color-bg-card-hover);
2524
+ }
2525
+
2526
+ .chip-action.active {
2527
+ color: var(--color-accent-primary);
2528
+ border-color: var(--color-accent-primary);
2529
+ background: var(--color-type-badge-bg);
2530
+ }
2531
+
2532
+ /* ============================================
2533
+ NEW: Form Fields with Tooltips
2534
+ ============================================ */
2535
+ .form-field {
2536
+ margin-bottom: 12px;
2537
+ }
2538
+
2539
+ .form-field:last-child {
2540
+ margin-bottom: 0;
2541
+ }
2542
+
2543
+ .form-field-label {
2544
+ display: flex;
2545
+ align-items: center;
2546
+ gap: 6px;
2547
+ font-size: 12px;
2548
+ font-weight: 500;
2549
+ color: var(--color-text-primary);
2550
+ margin-bottom: 6px;
2551
+ }
2552
+
2553
+ .tooltip-trigger {
2554
+ display: inline-flex;
2555
+ align-items: center;
2556
+ color: var(--color-text-muted);
2557
+ cursor: help;
2558
+ transition: color 0.15s ease;
2559
+ }
2560
+
2561
+ .tooltip-trigger:hover {
2562
+ color: var(--color-accent-primary);
2563
+ }
2564
+
2565
+ .form-field input[type="number"],
2566
+ .form-field select {
2567
+ width: 100%;
2568
+ background: var(--color-bg-input);
2569
+ border: 1px solid var(--color-border-primary);
2570
+ border-radius: 6px;
2571
+ padding: 8px 12px;
2572
+ height: 36px;
2573
+ font-size: 13px;
2574
+ color: var(--color-text-primary);
2575
+ transition: all 0.15s ease;
2576
+ }
2577
+
2578
+ .form-field input[type="number"]:hover,
2579
+ .form-field select:hover {
2580
+ border-color: var(--color-border-hover);
2581
+ }
2582
+
2583
+ .form-field input[type="number"]:focus,
2584
+ .form-field select:focus {
2585
+ outline: none;
2586
+ border-color: var(--color-border-focus);
2587
+ box-shadow: 0 0 0 3px rgba(9, 105, 218, 0.1);
2588
+ }
2589
+
2590
+ /* ============================================
2591
+ NEW: Toggle Switches
2592
+ ============================================ */
2593
+ .toggle-group {
2594
+ display: flex;
2595
+ flex-direction: column;
2596
+ gap: 2px;
2597
+ }
2598
+
2599
+ .toggle-row {
2600
+ display: flex;
2601
+ align-items: center;
2602
+ justify-content: space-between;
2603
+ padding: 10px 0;
2604
+ border-bottom: 1px solid var(--color-border-secondary);
2605
+ }
2606
+
2607
+ .toggle-row:last-child {
2608
+ border-bottom: none;
2609
+ }
2610
+
2611
+ .toggle-info {
2612
+ display: flex;
2613
+ flex-direction: column;
2614
+ gap: 2px;
2615
+ flex: 1;
2616
+ min-width: 0;
2617
+ }
2618
+
2619
+ .toggle-label {
2620
+ font-size: 12px;
2621
+ font-weight: 500;
2622
+ color: var(--color-text-primary);
2623
+ cursor: pointer;
2624
+ }
2625
+
2626
+ .toggle-description {
2627
+ font-size: 11px;
2628
+ color: var(--color-text-muted);
2629
+ line-height: 1.3;
2630
+ }
2631
+
2632
+ .toggle-switch {
2633
+ position: relative;
2634
+ width: 40px;
2635
+ height: 22px;
2636
+ background: var(--color-bg-tertiary);
2637
+ border: 1px solid var(--color-border-primary);
2638
+ border-radius: 11px;
2639
+ cursor: pointer;
2640
+ transition: all 0.2s ease;
2641
+ flex-shrink: 0;
2642
+ margin-left: 12px;
2643
+ padding: 0;
2644
+ }
2645
+
2646
+ .toggle-switch:hover:not(.disabled) {
2647
+ border-color: var(--color-border-hover);
2648
+ }
2649
+
2650
+ .toggle-switch.on {
2651
+ background: var(--color-accent-primary);
2652
+ border-color: var(--color-accent-primary);
2653
+ }
2654
+
2655
+ .toggle-switch.disabled {
2656
+ opacity: 0.5;
2657
+ cursor: not-allowed;
2658
+ }
2659
+
2660
+ .toggle-knob {
2661
+ position: absolute;
2662
+ top: 2px;
2663
+ left: 2px;
2664
+ width: 16px;
2665
+ height: 16px;
2666
+ background: white;
2667
+ border-radius: 50%;
2668
+ transition: transform 0.2s ease;
2669
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
2670
+ }
2671
+
2672
+ .toggle-switch.on .toggle-knob {
2673
+ transform: translateX(18px);
2674
+ }
2675
+
2676
+ /* ============================================
2677
+ NEW: Display Subsections
2678
+ ============================================ */
2679
+ .display-subsection {
2680
+ padding: 12px 0;
2681
+ border-bottom: 1px solid var(--color-border-secondary);
2682
+ }
2683
+
2684
+ .display-subsection:first-child {
2685
+ padding-top: 0;
2686
+ }
2687
+
2688
+ .display-subsection:last-child {
2689
+ border-bottom: none;
2690
+ padding-bottom: 0;
2691
+ }
2692
+
2693
+ .subsection-label {
2694
+ display: block;
2695
+ font-size: 11px;
2696
+ font-weight: 600;
2697
+ color: var(--color-text-muted);
2698
+ text-transform: uppercase;
2699
+ letter-spacing: 0.5px;
2700
+ margin-bottom: 10px;
2701
+ }
2702
+
2703
+ /* ============================================
2704
+ Improved Chip Styles
2705
+ ============================================ */
2706
+ .chip {
2707
+ display: inline-flex;
2708
+ align-items: center;
2709
+ justify-content: center;
2710
+ padding: 6px 12px;
2711
+ min-height: 30px;
2712
+ border: 1px solid var(--color-border-primary);
2713
+ border-radius: 6px;
2714
+ font-size: 12px;
2715
+ font-weight: 500;
2716
+ color: var(--color-text-secondary);
2717
+ background: var(--color-bg-card);
2718
+ cursor: pointer;
2719
+ transition: all 0.15s cubic-bezier(0.4, 0, 0.2, 1);
2720
+ user-select: none;
2721
+ }
2722
+
2723
+ .chip:hover {
2724
+ background: var(--color-bg-card-hover);
2725
+ border-color: var(--color-accent-primary);
2726
+ color: var(--color-text-primary);
2727
+ }
2728
+
2729
+ .chip:active {
2730
+ transform: scale(0.98);
2731
+ }
2732
+
2733
+ .chip.selected {
2734
+ background: var(--color-accent-primary);
2735
+ color: white;
2736
+ border-color: var(--color-accent-primary);
2737
+ }
2738
+
2739
+ .chip.selected:hover {
2740
+ background: var(--color-bg-button-hover);
2741
+ border-color: var(--color-bg-button-hover);
2742
+ }
2743
+
2744
+ /* Console Drawer - Chrome DevTools Style */
2745
+ .console-toggle-btn {
2746
+ position: fixed;
2747
+ bottom: 20px;
2748
+ left: 20px;
2749
+ width: 48px;
2750
+ height: 48px;
2751
+ border-radius: 50%;
2752
+ background: var(--color-bg-button);
2753
+ border: none;
2754
+ color: white;
2755
+ cursor: pointer;
2756
+ display: flex;
2757
+ align-items: center;
2758
+ justify-content: center;
2759
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
2760
+ transition: all 0.2s ease;
2761
+ z-index: 999;
2762
+ }
2763
+
2764
+ .console-toggle-btn:hover {
2765
+ background: var(--color-bg-button-hover);
2766
+ transform: scale(1.05);
2767
+ box-shadow: 0 6px 16px rgba(0, 0, 0, 0.3);
2768
+ }
2769
+
2770
+ .console-toggle-btn svg {
2771
+ width: 20px;
2772
+ height: 20px;
2773
+ }
2774
+
2775
+ .console-drawer {
2776
+ position: fixed;
2777
+ bottom: 0;
2778
+ left: 0;
2779
+ right: 0;
2780
+ background: var(--color-bg-primary);
2781
+ border-top: 1px solid var(--color-border-primary);
2782
+ box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.1);
2783
+ z-index: 1000;
2784
+ display: flex;
2785
+ flex-direction: column;
2786
+ }
2787
+
2788
+ .console-resize-handle {
2789
+ position: absolute;
2790
+ top: 0;
2791
+ left: 0;
2792
+ right: 0;
2793
+ height: 6px;
2794
+ cursor: ns-resize;
2795
+ display: flex;
2796
+ align-items: center;
2797
+ justify-content: center;
2798
+ }
2799
+
2800
+ .console-resize-handle:hover .console-resize-bar {
2801
+ background: var(--color-bg-button);
2802
+ }
2803
+
2804
+ .console-resize-bar {
2805
+ width: 40px;
2806
+ height: 3px;
2807
+ border-radius: 2px;
2808
+ background: var(--color-border-primary);
2809
+ transition: background 0.2s ease;
2810
+ }
2811
+
2812
+ .console-header {
2813
+ display: flex;
2814
+ align-items: center;
2815
+ justify-content: space-between;
2816
+ padding: 8px 12px;
2817
+ border-bottom: 1px solid var(--color-border-primary);
2818
+ background: var(--color-bg-header);
2819
+ margin-top: 6px;
2820
+ }
2821
+
2822
+ .console-tabs {
2823
+ display: flex;
2824
+ gap: 4px;
2825
+ }
2826
+
2827
+ .console-tab {
2828
+ padding: 4px 12px;
2829
+ font-size: 12px;
2830
+ color: var(--color-text-secondary);
2831
+ background: transparent;
2832
+ border: none;
2833
+ cursor: pointer;
2834
+ border-bottom: 2px solid transparent;
2835
+ }
2836
+
2837
+ .console-tab.active {
2838
+ color: var(--color-text-primary);
2839
+ border-bottom-color: var(--color-bg-button);
2840
+ font-weight: 500;
2841
+ }
2842
+
2843
+ .console-controls {
2844
+ display: flex;
2845
+ align-items: center;
2846
+ gap: 8px;
2847
+ }
2848
+
2849
+ .console-auto-refresh {
2850
+ display: flex;
2851
+ align-items: center;
2852
+ gap: 4px;
2853
+ font-size: 11px;
2854
+ color: var(--color-text-secondary);
2855
+ cursor: pointer;
2856
+ user-select: none;
2857
+ }
2858
+
2859
+ .console-auto-refresh input[type="checkbox"] {
2860
+ cursor: pointer;
2861
+ }
2862
+
2863
+ .console-control-btn {
2864
+ background: transparent;
2865
+ border: none;
2866
+ color: var(--color-text-secondary);
2867
+ cursor: pointer;
2868
+ padding: 4px 8px;
2869
+ font-size: 14px;
2870
+ border-radius: 4px;
2871
+ transition: all 0.15s ease;
2872
+ }
2873
+
2874
+ .console-control-btn:hover {
2875
+ background: var(--color-bg-card-hover);
2876
+ color: var(--color-text-primary);
2877
+ }
2878
+
2879
+ .console-control-btn:disabled {
2880
+ opacity: 0.4;
2881
+ cursor: not-allowed;
2882
+ }
2883
+
2884
+ .console-clear-btn:hover {
2885
+ color: var(--color-accent-error);
2886
+ }
2887
+
2888
+ .console-content {
2889
+ flex: 1;
2890
+ overflow: auto;
2891
+ background: var(--color-bg-primary);
2892
+ }
2893
+
2894
+ .console-logs {
2895
+ margin: 0;
2896
+ padding: 8px 12px;
2897
+ font-family: 'SF Mono', 'Monaco', 'Menlo', 'Consolas', 'Courier New', monospace;
2898
+ font-size: 11px;
2899
+ line-height: 1.5;
2900
+ color: var(--color-text-primary);
2901
+ white-space: pre-wrap;
2902
+ word-wrap: break-word;
2903
+ overflow-wrap: break-word;
2904
+ }
2905
+
2906
+ .console-error {
2907
+ padding: 8px 12px;
2908
+ background: rgba(239, 68, 68, 0.08);
2909
+ border-bottom: 1px solid var(--color-accent-error);
2910
+ color: var(--color-accent-error);
2911
+ font-size: 11px;
2912
+ font-family: 'SF Mono', 'Monaco', 'Menlo', 'Consolas', 'Courier New', monospace;
2913
+ }
2914
+
2915
+ /* Console Filter Bar */
2916
+ .console-filters {
2917
+ display: flex;
2918
+ flex-wrap: wrap;
2919
+ gap: 12px;
2920
+ padding: 8px 12px;
2921
+ background: var(--color-bg-secondary);
2922
+ border-bottom: 1px solid var(--color-border-primary);
2923
+ }
2924
+
2925
+ .console-filter-section {
2926
+ display: flex;
2927
+ align-items: center;
2928
+ gap: 8px;
2929
+ flex-wrap: wrap;
2930
+ }
2931
+
2932
+ .console-filter-label {
2933
+ font-size: 10px;
2934
+ font-weight: 600;
2935
+ color: var(--color-text-muted);
2936
+ text-transform: uppercase;
2937
+ letter-spacing: 0.5px;
2938
+ white-space: nowrap;
2939
+ }
2940
+
2941
+ .console-filter-chips {
2942
+ display: flex;
2943
+ flex-wrap: wrap;
2944
+ gap: 4px;
2945
+ align-items: center;
2946
+ }
2947
+
2948
+ .console-filter-chip {
2949
+ display: inline-flex;
2950
+ align-items: center;
2951
+ gap: 4px;
2952
+ padding: 3px 8px;
2953
+ font-size: 11px;
2954
+ font-weight: 500;
2955
+ background: var(--color-bg-card);
2956
+ border: 1px solid var(--color-border-primary);
2957
+ border-radius: 4px;
2958
+ color: var(--color-text-secondary);
2959
+ cursor: pointer;
2960
+ transition: all 0.15s ease;
2961
+ white-space: nowrap;
2962
+ }
2963
+
2964
+ .console-filter-chip:hover {
2965
+ background: var(--color-bg-card-hover);
2966
+ border-color: var(--chip-color, var(--color-border-hover));
2967
+ color: var(--color-text-primary);
2968
+ }
2969
+
2970
+ .console-filter-chip.active {
2971
+ background: var(--chip-color, var(--color-accent-primary));
2972
+ border-color: var(--chip-color, var(--color-accent-primary));
2973
+ color: white;
2974
+ text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
2975
+ }
2976
+
2977
+ .console-filter-chip.active:hover {
2978
+ opacity: 0.9;
2979
+ }
2980
+
2981
+ .console-filter-action {
2982
+ display: inline-flex;
2983
+ align-items: center;
2984
+ justify-content: center;
2985
+ width: 24px;
2986
+ height: 24px;
2987
+ font-size: 12px;
2988
+ background: transparent;
2989
+ border: 1px solid var(--color-border-primary);
2990
+ border-radius: 4px;
2991
+ color: var(--color-text-muted);
2992
+ cursor: pointer;
2993
+ transition: all 0.15s ease;
2994
+ }
2995
+
2996
+ .console-filter-action:hover {
2997
+ background: var(--color-bg-card-hover);
2998
+ border-color: var(--color-border-hover);
2999
+ color: var(--color-text-primary);
3000
+ }
3001
+
3002
+ /* Log Line Styles */
3003
+ .log-line {
3004
+ display: block;
3005
+ padding: 2px 0;
3006
+ font-family: 'SF Mono', 'Monaco', 'Menlo', 'Consolas', 'Courier New', monospace;
3007
+ font-size: 11px;
3008
+ line-height: 1.5;
3009
+ white-space: pre-wrap;
3010
+ word-wrap: break-word;
3011
+ }
3012
+
3013
+ .log-line-raw {
3014
+ color: var(--color-text-secondary);
3015
+ opacity: 0.8;
3016
+ }
3017
+
3018
+ .log-line-empty {
3019
+ color: var(--color-text-muted);
3020
+ font-style: italic;
3021
+ padding: 20px 0;
3022
+ text-align: center;
3023
+ }
3024
+
3025
+ .log-timestamp {
3026
+ color: var(--color-text-muted);
3027
+ opacity: 0.7;
3028
+ }
3029
+
3030
+ .log-level {
3031
+ font-weight: 500;
3032
+ }
3033
+
3034
+ .log-component {
3035
+ font-weight: 500;
3036
+ }
3037
+
3038
+ .log-correlation {
3039
+ color: var(--color-accent-primary);
3040
+ opacity: 0.9;
3041
+ }
3042
+
3043
+ .log-message {
3044
+ color: inherit;
3045
+ }
3046
+
3047
+ /* Log Level Colors in Dark Mode */
3048
+ [data-theme="dark"] .log-line-raw {
3049
+ color: #8b949e;
3050
+ }
3051
+
3052
+ /* Responsive adjustments for filter bar */
3053
+ @media (max-width: 600px) {
3054
+ .console-filters {
3055
+ flex-direction: column;
3056
+ gap: 8px;
3057
+ padding: 6px 10px;
3058
+ }
3059
+
3060
+ .console-filter-section {
3061
+ flex-wrap: wrap;
3062
+ }
3063
+
3064
+ .console-filter-chip {
3065
+ padding: 2px 6px;
3066
+ font-size: 10px;
3067
+ }
3068
+ }
3069
+
3070
+ /* Responsive Modal */
3071
+ @media (max-width: 900px) {
3072
+ .modal-body {
3073
+ grid-template-columns: 1fr;
3074
+ }
3075
+
3076
+ .preview-column {
3077
+ display: none;
3078
+ }
3079
+ }
3080
+
3081
+ @media (max-width: 600px) {
3082
+ .modal-backdrop {
3083
+ padding: 0;
3084
+ }
3085
+
3086
+ .context-settings-modal {
3087
+ border-radius: 0;
3088
+ height: 100vh;
3089
+ max-height: none;
3090
+ }
3091
+
3092
+ .modal-header {
3093
+ padding: 12px 16px;
3094
+ gap: 12px;
3095
+ }
3096
+
3097
+ .preview-selector {
3098
+ font-size: 11px;
3099
+ gap: 6px;
3100
+ }
3101
+
3102
+ .preview-selector select {
3103
+ padding: 5px 10px;
3104
+ font-size: 11px;
3105
+ }
3106
+
3107
+ .settings-group {
3108
+ padding: 14px 16px;
3109
+ }
3110
+
3111
+ .section-header-btn {
3112
+ padding: 12px 14px;
3113
+ }
3114
+
3115
+ .section-content {
3116
+ padding: 0 14px 14px 14px;
3117
+ }
3118
+
3119
+ .toggle-row {
3120
+ padding: 8px 0;
3121
+ }
3122
+
3123
+ .toggle-switch {
3124
+ width: 36px;
3125
+ height: 20px;
3126
+ }
3127
+
3128
+ .toggle-knob {
3129
+ width: 14px;
3130
+ height: 14px;
3131
+ }
3132
+
3133
+ .toggle-switch.on .toggle-knob {
3134
+ transform: translateX(16px);
3135
+ }
3136
+ }
3137
+ </style>
3138
+ </head>
3139
+
3140
+ <body>
3141
+ <div id="root"></div>
3142
+ <script src="viewer-bundle.js"></script>
3143
+ </body>
3144
+
3145
+ </html>