claude-memory-layer 1.0.30 → 1.0.32

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 (338) hide show
  1. package/README.md +12 -5
  2. package/dist/cli/index.js +4 -3
  3. package/dist/cli/index.js.map +2 -2
  4. package/dist/core/index.js +3 -2
  5. package/dist/core/index.js.map +2 -2
  6. package/dist/hooks/post-tool-use.js +3 -2
  7. package/dist/hooks/post-tool-use.js.map +2 -2
  8. package/dist/hooks/semantic-daemon.js +3 -2
  9. package/dist/hooks/semantic-daemon.js.map +2 -2
  10. package/dist/hooks/session-end.js +3 -2
  11. package/dist/hooks/session-end.js.map +2 -2
  12. package/dist/hooks/session-start.js +3 -2
  13. package/dist/hooks/session-start.js.map +2 -2
  14. package/dist/hooks/stop.js +3 -2
  15. package/dist/hooks/stop.js.map +2 -2
  16. package/dist/hooks/user-prompt-submit.js +3 -2
  17. package/dist/hooks/user-prompt-submit.js.map +2 -2
  18. package/dist/index.js +3 -2
  19. package/dist/index.js.map +2 -2
  20. package/dist/mcp/index.js +3 -2
  21. package/dist/mcp/index.js.map +2 -2
  22. package/dist/server/api/index.js +3 -2
  23. package/dist/server/api/index.js.map +2 -2
  24. package/dist/server/index.js +3 -2
  25. package/dist/server/index.js.map +2 -2
  26. package/dist/services/memory-service.js +3 -2
  27. package/dist/services/memory-service.js.map +2 -2
  28. package/package.json +10 -3
  29. package/scripts/postinstall-embedding-backend.cjs +18 -16
  30. package/AGENTS.md +0 -71
  31. package/CLAUDE.md +0 -30
  32. package/HANDOFF.md +0 -92
  33. package/Memo.txt +0 -558
  34. package/benchmarks/replay/anonymized-real-sessions.json +0 -48
  35. package/config/kpi-thresholds.json +0 -7
  36. package/context.md +0 -636
  37. package/docs/ARCHITECTURE_COMPARISON_AND_RECOMMENDATIONS.md +0 -627
  38. package/docs/HERMES_MEMORY_INGESTION_ANALYSIS.md +0 -440
  39. package/docs/MCP_MEMORY_SERVICE_COMPARATIVE_REVIEW.md +0 -271
  40. package/docs/MEMORY_USEFULNESS_AUDIT.md +0 -371
  41. package/docs/MEMORY_USEFULNESS_AUDIT_RAW.json +0 -80
  42. package/docs/MEMSEARCH_PROJECT_STRUCTURE_ANALYSIS.md +0 -333
  43. package/docs/MEMU_ADOPTION.md +0 -40
  44. package/docs/OPERATIONS.md +0 -18
  45. package/docs/PRODUCT_VALIDATION_MATRIX.md +0 -82
  46. package/docs/PROJECT_STRUCTURE_ANALYSIS.md +0 -421
  47. package/docs/REFACTORING_MILESTONES_AND_ISSUES.md +0 -501
  48. package/docs/REFACTORING_PLAN_THIN_CORE.md +0 -414
  49. package/docs/REFERENCE_PROJECT_ANALYSES.md +0 -25
  50. package/docs/SUPERLOCALMEMORY_PROJECT_STRUCTURE_ANALYSIS.md +0 -452
  51. package/docs/TARGET_ARCHITECTURE_AND_FOLDER_STRUCTURE.md +0 -446
  52. package/docs/architecture/comparison-index.md +0 -47
  53. package/docs/reports/codex-real-data-validation-20260505T040447Z.md +0 -46
  54. package/plan.md +0 -1642
  55. package/scripts/build.ts +0 -159
  56. package/scripts/bump-patch-version.sh +0 -18
  57. package/scripts/delete-unknown-projects.js +0 -154
  58. package/scripts/fix-sync-gap.js +0 -32
  59. package/scripts/generate-session-qrels.ts +0 -126
  60. package/scripts/heartbeat-memory-orchestrator.sh +0 -28
  61. package/scripts/replay-retrieval-benchmark.ts +0 -69
  62. package/scripts/report-sync-gap.js +0 -26
  63. package/scripts/review-queue-auto-resolve.js +0 -21
  64. package/scripts/sync-gap-auto-heal.sh +0 -17
  65. package/spec.md +0 -624
  66. package/specs/20260207-dashboard-upgrade/context.md +0 -38
  67. package/specs/20260207-dashboard-upgrade/spec.md +0 -96
  68. package/specs/citations-system/context.md +0 -243
  69. package/specs/citations-system/plan.md +0 -495
  70. package/specs/citations-system/spec.md +0 -371
  71. package/specs/endless-mode/context.md +0 -305
  72. package/specs/endless-mode/plan.md +0 -620
  73. package/specs/endless-mode/spec.md +0 -455
  74. package/specs/entity-edge-model/context.md +0 -401
  75. package/specs/entity-edge-model/plan.md +0 -459
  76. package/specs/entity-edge-model/spec.md +0 -391
  77. package/specs/evidence-aligner-v2/context.md +0 -401
  78. package/specs/evidence-aligner-v2/plan.md +0 -303
  79. package/specs/evidence-aligner-v2/spec.md +0 -312
  80. package/specs/mcp-desktop-integration/context.md +0 -278
  81. package/specs/mcp-desktop-integration/plan.md +0 -550
  82. package/specs/mcp-desktop-integration/spec.md +0 -494
  83. package/specs/memory-utilization-improvements/context.md +0 -145
  84. package/specs/memory-utilization-improvements/plan.md +0 -361
  85. package/specs/memory-utilization-improvements/spec.md +0 -361
  86. package/specs/post-tool-use-hook/context.md +0 -319
  87. package/specs/post-tool-use-hook/plan.md +0 -469
  88. package/specs/post-tool-use-hook/spec.md +0 -364
  89. package/specs/private-tags/context.md +0 -288
  90. package/specs/private-tags/plan.md +0 -412
  91. package/specs/private-tags/spec.md +0 -345
  92. package/specs/progressive-disclosure/context.md +0 -346
  93. package/specs/progressive-disclosure/plan.md +0 -663
  94. package/specs/progressive-disclosure/spec.md +0 -415
  95. package/specs/selective-tool-observation/context.md +0 -100
  96. package/specs/selective-tool-observation/plan.md +0 -158
  97. package/specs/selective-tool-observation/spec.md +0 -127
  98. package/specs/task-entity-system/context.md +0 -297
  99. package/specs/task-entity-system/plan.md +0 -301
  100. package/specs/task-entity-system/spec.md +0 -314
  101. package/specs/thin-core-refactor/context.md +0 -275
  102. package/specs/thin-core-refactor/plan.md +0 -536
  103. package/specs/thin-core-refactor/spec.md +0 -465
  104. package/specs/vector-outbox-v2/context.md +0 -470
  105. package/specs/vector-outbox-v2/plan.md +0 -562
  106. package/specs/vector-outbox-v2/spec.md +0 -466
  107. package/specs/web-viewer-ui/context.md +0 -384
  108. package/specs/web-viewer-ui/plan.md +0 -797
  109. package/specs/web-viewer-ui/spec.md +0 -516
  110. package/src/adapters/claude/capture/index.ts +0 -3
  111. package/src/adapters/claude/context/index.ts +0 -3
  112. package/src/adapters/claude/hooks/index.ts +0 -21
  113. package/src/adapters/claude/hooks/post-tool-use.ts +0 -239
  114. package/src/adapters/claude/hooks/prompt-injection-policy.ts +0 -104
  115. package/src/adapters/claude/hooks/semantic-daemon-client.ts +0 -209
  116. package/src/adapters/claude/hooks/semantic-daemon.ts +0 -283
  117. package/src/adapters/claude/hooks/session-end.ts +0 -59
  118. package/src/adapters/claude/hooks/session-start.ts +0 -73
  119. package/src/adapters/claude/hooks/stop.ts +0 -128
  120. package/src/adapters/claude/hooks/user-prompt-submit.ts +0 -361
  121. package/src/adapters/claude/index.ts +0 -4
  122. package/src/adapters/claude/transcript/index.ts +0 -4
  123. package/src/adapters/claude/transcript/transcript-reader.ts +0 -57
  124. package/src/adapters/claude/transcript/turn-reconstructor.ts +0 -65
  125. package/src/apps/cli/claude-settings-hooks.ts +0 -138
  126. package/src/apps/cli/codex-import-runner.ts +0 -125
  127. package/src/apps/cli/codex-validation-output.ts +0 -95
  128. package/src/apps/cli/hermes-import-runner.ts +0 -130
  129. package/src/apps/cli/hermes-validation-output.ts +0 -91
  130. package/src/apps/cli/index.ts +0 -1735
  131. package/src/apps/cli/mcp-install.ts +0 -106
  132. package/src/apps/cli/retrieval-disclosure-output.ts +0 -196
  133. package/src/apps/dashboard/assets/js/bootstrap.js +0 -244
  134. package/src/apps/dashboard/assets/js/chat.js +0 -373
  135. package/src/apps/dashboard/assets/js/disclosure.js +0 -232
  136. package/src/apps/dashboard/assets/js/modals.js +0 -298
  137. package/src/apps/dashboard/assets/js/overview.js +0 -655
  138. package/src/apps/dashboard/assets/js/state.js +0 -72
  139. package/src/apps/dashboard/assets/js/views.js +0 -468
  140. package/src/apps/dashboard/index.html +0 -543
  141. package/src/apps/dashboard/index.ts +0 -3
  142. package/src/apps/dashboard/style.css +0 -1750
  143. package/src/apps/index.ts +0 -5
  144. package/src/apps/server/api/chat.ts +0 -244
  145. package/src/apps/server/api/citations.ts +0 -105
  146. package/src/apps/server/api/events.ts +0 -137
  147. package/src/apps/server/api/health.ts +0 -53
  148. package/src/apps/server/api/index.ts +0 -26
  149. package/src/apps/server/api/projects.ts +0 -74
  150. package/src/apps/server/api/search.ts +0 -184
  151. package/src/apps/server/api/sessions.ts +0 -115
  152. package/src/apps/server/api/stats.ts +0 -723
  153. package/src/apps/server/api/turns.ts +0 -143
  154. package/src/apps/server/api/utils.ts +0 -65
  155. package/src/apps/server/index.ts +0 -111
  156. package/src/cli/index.ts +0 -3
  157. package/src/cli/retrieval-disclosure-output.ts +0 -2
  158. package/src/compat/index.ts +0 -5
  159. package/src/core/canonical-key.ts +0 -186
  160. package/src/core/citation-generator.ts +0 -63
  161. package/src/core/consolidated-store.ts +0 -356
  162. package/src/core/consolidation-worker.ts +0 -493
  163. package/src/core/context-formatter.ts +0 -276
  164. package/src/core/continuity-manager.ts +0 -341
  165. package/src/core/db-wrapper.ts +0 -64
  166. package/src/core/derive/fact-deriver.ts +0 -170
  167. package/src/core/derive/index.ts +0 -2
  168. package/src/core/derive/summary-deriver.ts +0 -76
  169. package/src/core/edge-repo.ts +0 -333
  170. package/src/core/embedder.ts +0 -4
  171. package/src/core/engine/embedding-maintenance-service.ts +0 -187
  172. package/src/core/engine/endless-memory-services.ts +0 -4
  173. package/src/core/engine/index.ts +0 -19
  174. package/src/core/engine/memory-engine-services.ts +0 -170
  175. package/src/core/engine/memory-ingest-service.ts +0 -317
  176. package/src/core/engine/memory-query-service.ts +0 -173
  177. package/src/core/engine/memory-runtime-service.ts +0 -162
  178. package/src/core/engine/memory-service-composition.ts +0 -231
  179. package/src/core/engine/retrieval-analytics-service.ts +0 -181
  180. package/src/core/engine/retrieval-disclosure-service.ts +0 -420
  181. package/src/core/engine/retrieval-orchestrator.ts +0 -377
  182. package/src/core/engine/retrieval-services.ts +0 -176
  183. package/src/core/engine/shared-memory-services.ts +0 -4
  184. package/src/core/entity-repo.ts +0 -349
  185. package/src/core/event-store.ts +0 -779
  186. package/src/core/evidence-aligner.ts +0 -635
  187. package/src/core/external-market-context.ts +0 -582
  188. package/src/core/graduation-worker.ts +0 -171
  189. package/src/core/graduation.ts +0 -377
  190. package/src/core/index.ts +0 -64
  191. package/src/core/ingest-interceptor.ts +0 -80
  192. package/src/core/markdown-mirror.ts +0 -70
  193. package/src/core/matcher.ts +0 -208
  194. package/src/core/md-mirror.ts +0 -92
  195. package/src/core/metadata-extractor.ts +0 -203
  196. package/src/core/model/memory-fact.ts +0 -30
  197. package/src/core/model/memory-rule.ts +0 -14
  198. package/src/core/model/memory-summary.ts +0 -21
  199. package/src/core/model/raw-event.ts +0 -28
  200. package/src/core/model/retrieval-result.ts +0 -35
  201. package/src/core/mongo-sync-config.ts +0 -165
  202. package/src/core/mongo-sync-worker.ts +0 -381
  203. package/src/core/privacy/filter.ts +0 -190
  204. package/src/core/privacy/index.ts +0 -20
  205. package/src/core/privacy/tag-parser.ts +0 -145
  206. package/src/core/product-validation-matrix.ts +0 -314
  207. package/src/core/progressive-retriever.ts +0 -414
  208. package/src/core/registry/project-path.ts +0 -54
  209. package/src/core/registry/session-registry.ts +0 -69
  210. package/src/core/replay-evaluator.ts +0 -625
  211. package/src/core/retrieval-benchmark.ts +0 -117
  212. package/src/core/retrieval-quality.ts +0 -109
  213. package/src/core/retriever.ts +0 -800
  214. package/src/core/session-qrels.ts +0 -360
  215. package/src/core/shared-event-store.ts +0 -114
  216. package/src/core/shared-promoter.ts +0 -249
  217. package/src/core/shared-store.ts +0 -289
  218. package/src/core/shared-vector-store.ts +0 -203
  219. package/src/core/sqlite-event-store.ts +0 -1846
  220. package/src/core/sqlite-wrapper.ts +0 -116
  221. package/src/core/sync-worker.ts +0 -228
  222. package/src/core/tag-taxonomy.ts +0 -51
  223. package/src/core/task/blocker-resolver.ts +0 -333
  224. package/src/core/task/index.ts +0 -9
  225. package/src/core/task/task-matcher.ts +0 -240
  226. package/src/core/task/task-projector.ts +0 -358
  227. package/src/core/task/task-resolver.ts +0 -421
  228. package/src/core/turn-state.ts +0 -207
  229. package/src/core/types.ts +0 -952
  230. package/src/core/vector-outbox.ts +0 -299
  231. package/src/core/vector-store.ts +0 -231
  232. package/src/core/vector-worker.ts +0 -521
  233. package/src/core/working-set-store.ts +0 -257
  234. package/src/extensions/endless-memory/endless-memory-services.ts +0 -350
  235. package/src/extensions/endless-memory/index.ts +0 -1
  236. package/src/extensions/index.ts +0 -5
  237. package/src/extensions/mcp/handlers.ts +0 -960
  238. package/src/extensions/mcp/index.ts +0 -48
  239. package/src/extensions/mcp/tools.ts +0 -252
  240. package/src/extensions/shared-memory/index.ts +0 -1
  241. package/src/extensions/shared-memory/shared-memory-services.ts +0 -211
  242. package/src/extensions/vector/embedder.ts +0 -233
  243. package/src/extensions/vector/index.ts +0 -1
  244. package/src/hooks/post-tool-use.ts +0 -9
  245. package/src/hooks/semantic-daemon-client.ts +0 -1
  246. package/src/hooks/semantic-daemon.ts +0 -11
  247. package/src/hooks/session-end.ts +0 -9
  248. package/src/hooks/session-start.ts +0 -9
  249. package/src/hooks/stop.ts +0 -9
  250. package/src/hooks/user-prompt-submit.ts +0 -9
  251. package/src/index.ts +0 -13
  252. package/src/mcp/handlers.ts +0 -2
  253. package/src/mcp/index.ts +0 -4
  254. package/src/mcp/tools.ts +0 -2
  255. package/src/server/api/chat.ts +0 -2
  256. package/src/server/api/citations.ts +0 -2
  257. package/src/server/api/events.ts +0 -2
  258. package/src/server/api/health.ts +0 -2
  259. package/src/server/api/index.ts +0 -2
  260. package/src/server/api/projects.ts +0 -2
  261. package/src/server/api/search.ts +0 -2
  262. package/src/server/api/sessions.ts +0 -2
  263. package/src/server/api/stats.ts +0 -2
  264. package/src/server/api/turns.ts +0 -2
  265. package/src/server/api/utils.ts +0 -2
  266. package/src/server/index.ts +0 -2
  267. package/src/services/bootstrap-organizer.ts +0 -463
  268. package/src/services/codex-session-history-importer.ts +0 -966
  269. package/src/services/hermes-session-history-importer.ts +0 -733
  270. package/src/services/memory-service-config.ts +0 -36
  271. package/src/services/memory-service-registry.ts +0 -150
  272. package/src/services/memory-service.ts +0 -688
  273. package/src/services/session-history-importer.ts +0 -629
  274. package/tests/README.md +0 -23
  275. package/tests/adapters/claude/claude-semantic-daemon-adapter.test.ts +0 -54
  276. package/tests/adapters/claude/claude-transcript-reconstructor.test.ts +0 -98
  277. package/tests/adapters/claude-hook-prompt-injection-policy.test.ts +0 -99
  278. package/tests/apps/app-layer-boundary.test.ts +0 -48
  279. package/tests/apps/claude-settings-hooks.test.ts +0 -107
  280. package/tests/apps/cli-disclosure-output.test.ts +0 -212
  281. package/tests/apps/codex-import-runner.test.ts +0 -99
  282. package/tests/apps/codex-validation-output.test.ts +0 -100
  283. package/tests/apps/hermes-import-runner.test.ts +0 -99
  284. package/tests/apps/mcp-install-command.test.ts +0 -59
  285. package/tests/apps/package-build-entrypoints.test.ts +0 -30
  286. package/tests/apps/postinstall-embedding-backend.test.ts +0 -175
  287. package/tests/apps/search-api-disclosure.test.ts +0 -162
  288. package/tests/apps/stats-api-lightweight.test.ts +0 -67
  289. package/tests/apps/ui-disclosure-output.test.ts +0 -140
  290. package/tests/core/bootstrap-organizer.test.ts +0 -111
  291. package/tests/core/canonical-key.test.ts +0 -101
  292. package/tests/core/codex-session-history-importer-validation.test.ts +0 -185
  293. package/tests/core/consolidation-worker.test.ts +0 -75
  294. package/tests/core/embedding-maintenance-service.test.ts +0 -282
  295. package/tests/core/evidence-aligner.test.ts +0 -152
  296. package/tests/core/external-market-context.test.ts +0 -209
  297. package/tests/core/fact-deriver.test.ts +0 -79
  298. package/tests/core/hermes-session-history-importer-validation.test.ts +0 -609
  299. package/tests/core/ingest-interceptor.test.ts +0 -38
  300. package/tests/core/markdown-mirror.test.ts +0 -85
  301. package/tests/core/matcher.test.ts +0 -112
  302. package/tests/core/md-mirror.test.ts +0 -50
  303. package/tests/core/memory-engine-services.test.ts +0 -240
  304. package/tests/core/memory-ingest-service.test.ts +0 -296
  305. package/tests/core/memory-query-service.test.ts +0 -129
  306. package/tests/core/memory-runtime-service.test.ts +0 -201
  307. package/tests/core/memory-service-composition.test.ts +0 -192
  308. package/tests/core/memory-service-config.test.ts +0 -41
  309. package/tests/core/memory-service-facade.test.ts +0 -30
  310. package/tests/core/memory-service-registry.test.ts +0 -206
  311. package/tests/core/product-validation-matrix.test.ts +0 -61
  312. package/tests/core/project-registry.test.ts +0 -78
  313. package/tests/core/replay-evaluator.test.ts +0 -181
  314. package/tests/core/retrieval-analytics-service.test.ts +0 -210
  315. package/tests/core/retrieval-benchmark.test.ts +0 -93
  316. package/tests/core/retrieval-disclosure-service.test.ts +0 -264
  317. package/tests/core/retrieval-orchestrator.test.ts +0 -403
  318. package/tests/core/retrieval-quality.test.ts +0 -31
  319. package/tests/core/retrieval-services.test.ts +0 -185
  320. package/tests/core/retriever-fallback-chain.test.ts +0 -223
  321. package/tests/core/retriever-strategy-scope.test.ts +0 -164
  322. package/tests/core/retriever.memu-adoption.test.ts +0 -122
  323. package/tests/core/session-history-importer-filter.test.ts +0 -78
  324. package/tests/core/session-qrels.test.ts +0 -250
  325. package/tests/core/sqlite-event-store-replication.test.ts +0 -127
  326. package/tests/core/summary-deriver.test.ts +0 -66
  327. package/tests/extensions/embedder-warning-suppression.test.ts +0 -83
  328. package/tests/extensions/endless-memory-extension-boundary.test.ts +0 -17
  329. package/tests/extensions/endless-memory-services.test.ts +0 -325
  330. package/tests/extensions/mcp-context-tools.test.ts +0 -905
  331. package/tests/extensions/mcp-extension-boundary.test.ts +0 -21
  332. package/tests/extensions/mcp-package-build.test.ts +0 -22
  333. package/tests/extensions/mcp-project-aware-tools.test.ts +0 -102
  334. package/tests/extensions/shared-memory-extension-boundary.test.ts +0 -24
  335. package/tests/extensions/shared-memory-services.test.ts +0 -309
  336. package/tests/extensions/vector-extension-boundary.test.ts +0 -21
  337. package/tsconfig.json +0 -24
  338. package/vitest.config.ts +0 -15
@@ -1,1750 +0,0 @@
1
- /*
2
- Theme: Deep Space (Premium Dark Mode)
3
- Font: Outfit
4
- */
5
- @import url('https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&display=swap');
6
-
7
- :root {
8
- /* Core Palette */
9
- --bg-dark: #05050A; /* Deepest black/blue */
10
- --bg-panel: #0F1019; /* Slightly lighter for panels */
11
- --bg-card: rgba(22, 23, 35, 0.7); /* Glassy card background */
12
-
13
- /* Accents */
14
- --accent-primary: #7B61FF; /* Soft Electric Purple */
15
- --accent-secondary: #00F0FF; /* Cyber Blue */
16
- --accent-glow: rgba(123, 97, 255, 0.4);
17
-
18
- /* Status Colors */
19
- --success: #00E396;
20
- --warning: #FEB019;
21
- --error: #FF4560;
22
-
23
- /* Text */
24
- --text-primary: #FFFFFF;
25
- --text-secondary: #8B9BB4;
26
- --text-muted: #53627C;
27
-
28
- /* Borders & Effects */
29
- --border-subtle: rgba(255, 255, 255, 0.08);
30
- --glass-border: 1px solid rgba(255, 255, 255, 0.05);
31
- --glass-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.3);
32
- --backdrop-blur: blur(12px);
33
-
34
- /* Spacing */
35
- --sidebar-width: 260px;
36
- --header-height: 80px;
37
- }
38
-
39
- * {
40
- margin: 0;
41
- padding: 0;
42
- box-sizing: border-box;
43
- }
44
-
45
- body {
46
- font-family: 'Outfit', sans-serif;
47
- background-color: var(--bg-dark);
48
- color: var(--text-primary);
49
- min-height: 100vh;
50
- overflow-x: hidden;
51
- background-image:
52
- radial-gradient(circle at 10% 10%, rgba(123, 97, 255, 0.05) 0%, transparent 40%),
53
- radial-gradient(circle at 90% 90%, rgba(0, 240, 255, 0.05) 0%, transparent 40%);
54
- }
55
-
56
- /* Scrollbar */
57
- ::-webkit-scrollbar {
58
- width: 6px;
59
- height: 6px;
60
- }
61
- ::-webkit-scrollbar-track {
62
- background: var(--bg-dark);
63
- }
64
- ::-webkit-scrollbar-thumb {
65
- background: var(--border-subtle);
66
- border-radius: 3px;
67
- }
68
- ::-webkit-scrollbar-thumb:hover {
69
- background: var(--text-muted);
70
- }
71
-
72
- /* Layout */
73
- .app-container {
74
- display: flex;
75
- min-height: 100vh;
76
- }
77
-
78
- /* Sidebar */
79
- .sidebar {
80
- width: var(--sidebar-width);
81
- background: var(--bg-panel);
82
- border-right: var(--glass-border);
83
- padding: 24px;
84
- display: flex;
85
- flex-direction: column;
86
- position: fixed;
87
- height: 100vh;
88
- z-index: 100;
89
- transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
90
- }
91
-
92
- .logo-area {
93
- display: flex;
94
- align-items: center;
95
- gap: 12px;
96
- margin-bottom: 40px;
97
- padding-left: 12px;
98
- }
99
-
100
- .logo-icon {
101
- font-size: 24px;
102
- filter: drop-shadow(0 0 8px var(--accent-glow));
103
- }
104
-
105
- .logo-text {
106
- font-size: 20px;
107
- font-weight: 700;
108
- background: linear-gradient(135deg, #FFF 0%, #A5B4FC 100%);
109
- -webkit-background-clip: text;
110
- -webkit-text-fill-color: transparent;
111
- }
112
-
113
- .project-selector {
114
- margin-bottom: 24px;
115
- padding: 0 8px;
116
- }
117
-
118
- .project-label {
119
- display: flex;
120
- align-items: center;
121
- gap: 6px;
122
- font-size: 11px;
123
- font-weight: 500;
124
- color: var(--text-muted);
125
- text-transform: uppercase;
126
- letter-spacing: 0.5px;
127
- margin-bottom: 8px;
128
- }
129
-
130
- .project-dropdown {
131
- width: 100%;
132
- padding: 10px 12px;
133
- background: var(--bg-card);
134
- color: var(--text-primary);
135
- border: 1px solid var(--border-subtle);
136
- border-radius: 8px;
137
- font-family: 'Outfit', sans-serif;
138
- font-size: 13px;
139
- cursor: pointer;
140
- appearance: none;
141
- -webkit-appearance: none;
142
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238B9BB4' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
143
- background-repeat: no-repeat;
144
- background-position: right 12px center;
145
- transition: border-color 0.2s, box-shadow 0.2s;
146
- }
147
-
148
- .project-dropdown:hover {
149
- border-color: var(--accent-primary);
150
- }
151
-
152
- .project-dropdown:focus {
153
- outline: none;
154
- border-color: var(--accent-primary);
155
- box-shadow: 0 0 0 3px var(--accent-glow);
156
- }
157
-
158
- .project-dropdown option {
159
- background: var(--bg-panel);
160
- color: var(--text-primary);
161
- padding: 8px;
162
- }
163
-
164
- .nav-menu {
165
- list-style: none;
166
- display: flex;
167
- flex-direction: column;
168
- gap: 8px;
169
- }
170
-
171
- .nav-item {
172
- display: flex;
173
- align-items: center;
174
- gap: 12px;
175
- padding: 14px 16px;
176
- border-radius: 12px;
177
- color: var(--text-secondary);
178
- text-decoration: none;
179
- font-weight: 500;
180
- transition: all 0.2s ease;
181
- cursor: pointer;
182
- }
183
-
184
- .nav-item:hover {
185
- background: rgba(255, 255, 255, 0.03);
186
- color: var(--text-primary);
187
- }
188
-
189
- .nav-item.active {
190
- background: rgba(123, 97, 255, 0.1);
191
- color: var(--accent-primary);
192
- border: 1px solid rgba(123, 97, 255, 0.1);
193
- }
194
-
195
- .nav-item i {
196
- font-size: 1.2rem;
197
- }
198
-
199
- /* Main Content */
200
- .main-content {
201
- flex: 1;
202
- margin-left: var(--sidebar-width);
203
- padding: 32px 40px;
204
- }
205
-
206
- /* Header */
207
- .top-header {
208
- display: flex;
209
- justify-content: space-between;
210
- align-items: center;
211
- margin-bottom: 32px;
212
- }
213
-
214
- .page-title h1 {
215
- font-size: 28px;
216
- font-weight: 600;
217
- letter-spacing: -0.5px;
218
- }
219
-
220
- .page-title p {
221
- color: var(--text-secondary);
222
- font-size: 14px;
223
- margin-top: 4px;
224
- }
225
-
226
- .header-actions {
227
- display: flex;
228
- gap: 16px;
229
- align-items: center;
230
- }
231
-
232
- .btn {
233
- display: flex;
234
- align-items: center;
235
- gap: 8px;
236
- padding: 10px 20px;
237
- border-radius: 10px;
238
- font-family: inherit;
239
- font-weight: 600;
240
- font-size: 14px;
241
- cursor: pointer;
242
- transition: all 0.2s ease;
243
- border: none;
244
- outline: none;
245
- }
246
-
247
- .btn-primary {
248
- background: linear-gradient(135deg, var(--accent-primary) 0%, #6343E0 100%);
249
- color: white;
250
- box-shadow: 0 4px 12px var(--accent-glow);
251
- }
252
-
253
- .btn-primary:hover {
254
- transform: translateY(-2px);
255
- box-shadow: 0 6px 16px var(--accent-glow);
256
- }
257
-
258
- .btn-secondary {
259
- background: rgba(255, 255, 255, 0.05);
260
- color: var(--text-primary);
261
- border: 1px solid rgba(255, 255, 255, 0.1);
262
- }
263
-
264
- .btn-secondary:hover {
265
- background: rgba(255, 255, 255, 0.1);
266
- }
267
-
268
- .search-wrapper {
269
- position: relative;
270
- width: 300px;
271
- }
272
-
273
- .search-wrapper i {
274
- position: absolute;
275
- left: 14px;
276
- top: 50%;
277
- transform: translateY(-50%);
278
- color: var(--text-secondary);
279
- }
280
-
281
- .search-input {
282
- width: 100%;
283
- padding: 12px 14px 12px 40px;
284
- background: var(--bg-panel);
285
- border: var(--glass-border);
286
- border-radius: 10px;
287
- color: var(--text-primary);
288
- font-family: inherit;
289
- transition: all 0.2s;
290
- }
291
-
292
- .search-input:focus {
293
- outline: none;
294
- border-color: var(--accent-primary);
295
- box-shadow: 0 0 0 2px rgba(123, 97, 255, 0.1);
296
- }
297
-
298
- /* Stats Grid */
299
- .stats-grid {
300
- display: grid;
301
- grid-template-columns: repeat(4, 1fr);
302
- gap: 24px;
303
- margin-bottom: 32px;
304
- }
305
-
306
- .stat-card {
307
- background: var(--bg-card);
308
- backdrop-filter: var(--backdrop-blur);
309
- border: var(--glass-border);
310
- padding: 24px;
311
- border-radius: 16px;
312
- position: relative;
313
- overflow: hidden;
314
- transition: transform 0.2s;
315
- }
316
-
317
- .stat-card:hover {
318
- transform: translateY(-4px);
319
- }
320
-
321
- .stat-card::before {
322
- content: '';
323
- position: absolute;
324
- top: 0;
325
- left: 0;
326
- width: 100%;
327
- height: 4px;
328
- background: linear-gradient(90deg, var(--accent-primary), transparent);
329
- opacity: 0.5;
330
- }
331
-
332
- .kpi-grid .stat-card .stat-value {
333
- font-size: 28px;
334
- }
335
- .kpi-grid .stat-card .stat-label {
336
- font-size: 12px;
337
- }
338
- .kpi-delta {
339
- font-size: 11px;
340
- margin-top: -4px;
341
- margin-bottom: 8px;
342
- color: var(--text-muted);
343
- font-weight: 600;
344
- }
345
- .kpi-delta.good { color: var(--success); }
346
- .kpi-delta.bad { color: var(--error); }
347
- .kpi-delta.neutral { color: var(--text-muted); }
348
-
349
- .stat-value {
350
- font-size: 36px;
351
- font-weight: 700;
352
- margin-bottom: 8px;
353
- background: linear-gradient(180deg, #FFF 0%, #E0E0E0 100%);
354
- -webkit-background-clip: text;
355
- -webkit-text-fill-color: transparent;
356
- }
357
-
358
- .stat-label {
359
- color: var(--text-secondary);
360
- font-size: 13px;
361
- text-transform: uppercase;
362
- letter-spacing: 1px;
363
- display: flex;
364
- align-items: center;
365
- gap: 8px;
366
- }
367
-
368
- /* Content Grid */
369
- .dashboard-grid {
370
- display: grid;
371
- grid-template-columns: 2fr 1fr;
372
- gap: 24px;
373
- }
374
-
375
- /* Card Common */
376
- .card {
377
- background: var(--bg-card);
378
- border: var(--glass-border);
379
- border-radius: 16px;
380
- padding: 24px;
381
- margin-bottom: 24px;
382
- }
383
-
384
- .card-header {
385
- display: flex;
386
- justify-content: space-between;
387
- align-items: center;
388
- margin-bottom: 20px;
389
- }
390
-
391
- .card-title {
392
- font-size: 18px;
393
- font-weight: 600;
394
- display: flex;
395
- align-items: center;
396
- gap: 10px;
397
- }
398
-
399
- .card-title i {
400
- color: var(--accent-primary);
401
- }
402
-
403
- /* Memory Pipeline */
404
- .pipeline-container {
405
- position: relative;
406
- padding: 20px 0;
407
- }
408
-
409
- .pipeline-steps {
410
- display: flex;
411
- justify-content: space-between;
412
- position: relative;
413
- }
414
-
415
- .pipeline-steps::before {
416
- content: '';
417
- position: absolute;
418
- top: 50%;
419
- left: 0;
420
- width: 100%;
421
- height: 2px;
422
- background: var(--bg-panel);
423
- z-index: 0;
424
- transform: translateY(-50%);
425
- }
426
-
427
- .p-step {
428
- position: relative;
429
- z-index: 1;
430
- background: var(--bg-panel);
431
- border: 1px solid var(--border-subtle);
432
- padding: 12px 24px;
433
- border-radius: 12px;
434
- display: flex;
435
- flex-direction: column;
436
- align-items: center;
437
- gap: 6px;
438
- cursor: pointer;
439
- transition: all 0.3s;
440
- min-width: 120px;
441
- }
442
-
443
- .p-step.active {
444
- background: rgba(123, 97, 255, 0.1);
445
- border-color: var(--accent-primary);
446
- box-shadow: 0 0 20px rgba(123, 97, 255, 0.15);
447
- }
448
-
449
- .p-step-name {
450
- font-weight: 600;
451
- font-size: 14px;
452
- }
453
-
454
- .p-step-count {
455
- font-size: 12px;
456
- color: var(--text-secondary);
457
- }
458
-
459
- .p-step.active .p-step-name {
460
- color: var(--accent-primary);
461
- }
462
-
463
- .p-step.active .p-step-count {
464
- color: var(--text-primary);
465
- }
466
-
467
- /* Event List */
468
- .event-list {
469
- display: flex;
470
- flex-direction: column;
471
- gap: 12px;
472
- max-height: 500px;
473
- overflow-y: auto;
474
- padding-right: 8px;
475
- }
476
-
477
- .event-item {
478
- background: rgba(255, 255, 255, 0.02);
479
- border: 1px solid transparent;
480
- padding: 16px;
481
- border-radius: 10px;
482
- transition: all 0.2s;
483
- }
484
-
485
- .event-item:hover {
486
- background: rgba(255, 255, 255, 0.04);
487
- border-color: var(--border-subtle);
488
- }
489
-
490
- .event-header {
491
- display: flex;
492
- justify-content: space-between;
493
- margin-bottom: 8px;
494
- }
495
-
496
- .event-type-badge {
497
- font-size: 11px;
498
- padding: 4px 8px;
499
- border-radius: 6px;
500
- font-weight: 600;
501
- text-transform: uppercase;
502
- }
503
-
504
- .type-user { background: rgba(59, 130, 246, 0.2); color: #60A5FA; }
505
- .type-user-prompt { background: rgba(59, 130, 246, 0.2); color: #60A5FA; }
506
- .type-agent { background: rgba(16, 185, 129, 0.2); color: #34D399; }
507
- .type-agent-response { background: rgba(16, 185, 129, 0.2); color: #34D399; }
508
- .type-tool { background: rgba(245, 158, 11, 0.2); color: #FBBF24; }
509
- .type-tool-observation { background: rgba(245, 158, 11, 0.2); color: #FBBF24; }
510
- .type-system { background: rgba(139, 92, 246, 0.2); color: #A78BFA; }
511
-
512
- .event-time {
513
- font-size: 12px;
514
- color: var(--text-muted);
515
- }
516
-
517
- .event-content {
518
- font-size: 14px;
519
- color: var(--text-secondary);
520
- line-height: 1.5;
521
- display: -webkit-box;
522
- -webkit-line-clamp: 2;
523
- -webkit-box-orient: vertical;
524
- overflow: hidden;
525
- }
526
-
527
- /* Shared Items */
528
- .shared-list {
529
- display: flex;
530
- flex-direction: column;
531
- gap: 12px;
532
- }
533
-
534
- .shared-item {
535
- display: flex;
536
- align-items: center;
537
- justify-content: space-between;
538
- padding: 16px;
539
- background: var(--bg-panel);
540
- border-radius: 10px;
541
- }
542
-
543
- .shared-info {
544
- display: flex;
545
- align-items: center;
546
- gap: 12px;
547
- }
548
-
549
- .shared-icon {
550
- width: 40px;
551
- height: 40px;
552
- background: rgba(255, 255, 255, 0.05);
553
- border-radius: 8px;
554
- display: flex;
555
- align-items: center;
556
- justify-content: center;
557
- font-size: 18px;
558
- }
559
-
560
- .shared-count {
561
- font-family: monospace;
562
- font-size: 16px;
563
- font-weight: 700;
564
- color: var(--accent-secondary);
565
- }
566
-
567
- /* Sort Controls */
568
- .sort-controls {
569
- display: flex;
570
- align-items: center;
571
- gap: 6px;
572
- padding: 8px 16px;
573
- border-bottom: 1px solid rgba(255,255,255,0.05);
574
- }
575
- .sort-label {
576
- font-size: 11px;
577
- color: var(--text-muted);
578
- text-transform: uppercase;
579
- letter-spacing: 0.5px;
580
- margin-right: 4px;
581
- }
582
- .sort-btn {
583
- font-size: 12px;
584
- padding: 4px 10px;
585
- border-radius: 6px;
586
- border: 1px solid rgba(255,255,255,0.08);
587
- background: transparent;
588
- color: var(--text-secondary);
589
- cursor: pointer;
590
- transition: all 0.2s;
591
- font-family: inherit;
592
- }
593
- .sort-btn:hover {
594
- border-color: var(--accent-primary);
595
- color: var(--text-primary);
596
- }
597
- .sort-btn.active {
598
- background: rgba(123, 97, 255, 0.15);
599
- border-color: var(--accent-primary);
600
- color: var(--accent-primary);
601
- font-weight: 600;
602
- }
603
- .sort-btn:disabled {
604
- opacity: 0.35;
605
- cursor: not-allowed;
606
- }
607
-
608
- /* Access Badge */
609
- .access-badge {
610
- font-size: 11px;
611
- padding: 3px 8px;
612
- border-radius: 6px;
613
- background: rgba(0, 240, 255, 0.1);
614
- color: var(--accent-secondary);
615
- display: flex;
616
- align-items: center;
617
- gap: 4px;
618
- font-weight: 600;
619
- }
620
-
621
- .adherence-badge {
622
- font-size: 10px;
623
- padding: 3px 7px;
624
- border-radius: 6px;
625
- font-weight: 700;
626
- text-transform: uppercase;
627
- letter-spacing: 0.2px;
628
- }
629
- .adherence-checked {
630
- background: rgba(52, 211, 153, 0.14);
631
- color: #34D399;
632
- }
633
- .adherence-skipped {
634
- background: rgba(148, 163, 184, 0.14);
635
- color: #94A3B8;
636
- }
637
-
638
- /* Section Label */
639
- .section-label {
640
- font-size: 12px;
641
- color: var(--text-secondary);
642
- margin-bottom: 12px;
643
- text-transform: uppercase;
644
- letter-spacing: 1px;
645
- font-weight: 600;
646
- }
647
-
648
- /* Graduation Bar */
649
- .grad-bar-row {
650
- display: flex;
651
- align-items: center;
652
- gap: 10px;
653
- margin-bottom: 8px;
654
- }
655
- .grad-bar-label {
656
- width: 24px;
657
- font-size: 12px;
658
- font-weight: 600;
659
- }
660
- .grad-bar-track {
661
- flex: 1;
662
- height: 6px;
663
- background: rgba(255,255,255,0.05);
664
- border-radius: 3px;
665
- overflow: hidden;
666
- }
667
- .grad-bar-fill {
668
- height: 100%;
669
- border-radius: 3px;
670
- transition: width 0.5s;
671
- }
672
- .grad-bar-value {
673
- font-size: 12px;
674
- color: var(--text-secondary);
675
- min-width: 70px;
676
- text-align: right;
677
- }
678
-
679
- /* Endless Mode */
680
- .endless-card {
681
- background: linear-gradient(135deg, rgba(16, 16, 24, 0.6) 0%, rgba(20, 20, 30, 0.6) 100%);
682
- position: relative;
683
- overflow: hidden;
684
- }
685
-
686
- .endless-card::after {
687
- content: '';
688
- position: absolute;
689
- top: 0;
690
- right: 0;
691
- width: 150px;
692
- height: 150px;
693
- background: radial-gradient(circle, rgba(123, 97, 255, 0.1) 0%, transparent 70%);
694
- pointer-events: none;
695
- }
696
-
697
- .status-dot {
698
- width: 8px;
699
- height: 8px;
700
- border-radius: 50%;
701
- background: var(--text-muted);
702
- box-shadow: 0 0 0 2px rgba(255,255,255,0.05);
703
- }
704
-
705
- .status-dot.active {
706
- background: var(--success);
707
- box-shadow: 0 0 0 4px rgba(0, 227, 150, 0.1);
708
- animation: pulse 2s infinite;
709
- }
710
-
711
- @keyframes pulse {
712
- 0% { box-shadow: 0 0 0 0 rgba(0, 227, 150, 0.4); }
713
- 70% { box-shadow: 0 0 0 10px rgba(0, 227, 150, 0); }
714
- 100% { box-shadow: 0 0 0 0 rgba(0, 227, 150, 0); }
715
- }
716
-
717
- /* Chart Container Overrides */
718
- .apexcharts-tooltip {
719
- background: var(--bg-panel) !important;
720
- border-color: var(--border-subtle) !important;
721
- color: var(--text-primary) !important;
722
- box-shadow: var(--glass-shadow) !important;
723
- }
724
-
725
- .apexcharts-tooltip-title {
726
- background: var(--bg-dark) !important;
727
- border-bottom: 1px solid var(--border-subtle) !important;
728
- font-family: 'Outfit', sans-serif !important;
729
- }
730
-
731
- .apexcharts-text {
732
- fill: var(--text-muted) !important;
733
- font-family: 'Outfit', sans-serif !important;
734
- }
735
-
736
- .apexcharts-gridline {
737
- stroke: var(--border-subtle) !important;
738
- }
739
-
740
- /* Mobile Responsive */
741
- @media (max-width: 1024px) {
742
- .sidebar {
743
- transform: translateX(-100%);
744
- }
745
-
746
- .sidebar.mobile-open {
747
- transform: translateX(0);
748
- }
749
-
750
- .main-content {
751
- margin-left: 0;
752
- padding: 20px;
753
- }
754
- .stats-grid {
755
- grid-template-columns: repeat(2, 1fr);
756
- }
757
- .dashboard-grid {
758
- grid-template-columns: 1fr;
759
- }
760
- }
761
-
762
- @media (max-width: 600px) {
763
- .stats-grid {
764
- grid-template-columns: 1fr;
765
- }
766
- .pipeline-steps {
767
- flex-direction: column;
768
- gap: 12px;
769
- }
770
- .pipeline-steps::before {
771
- display: none;
772
- }
773
- .p-step {
774
- width: 100%;
775
- flex-direction: row;
776
- justify-content: space-between;
777
- }
778
- }
779
-
780
- /* ==========================================
781
- Page Views
782
- ========================================== */
783
- .page-view {
784
- display: none;
785
- }
786
- .page-view.active {
787
- display: block;
788
- animation: viewFadeIn 0.25s ease;
789
- }
790
- @keyframes viewFadeIn {
791
- from { opacity: 0; transform: translateY(8px); }
792
- to { opacity: 1; transform: translateY(0); }
793
- }
794
-
795
- /* Stat Card Clickable */
796
- .stat-card[data-stat] {
797
- cursor: pointer;
798
- }
799
- .stat-card[data-stat]:active {
800
- transform: translateY(0) scale(0.98);
801
- }
802
-
803
- /* ==========================================
804
- Modal System
805
- ========================================== */
806
- .modal-overlay {
807
- position: fixed;
808
- inset: 0;
809
- z-index: 1000;
810
- background: rgba(0, 0, 0, 0.7);
811
- backdrop-filter: blur(4px);
812
- display: flex;
813
- align-items: center;
814
- justify-content: center;
815
- animation: modalOverlayIn 0.2s ease;
816
- }
817
- @keyframes modalOverlayIn {
818
- from { opacity: 0; }
819
- to { opacity: 1; }
820
- }
821
-
822
- .modal-container {
823
- background: var(--bg-panel);
824
- border: var(--glass-border);
825
- border-radius: 16px;
826
- width: 90%;
827
- max-width: 640px;
828
- max-height: 85vh;
829
- display: flex;
830
- flex-direction: column;
831
- box-shadow: 0 24px 64px rgba(0, 0, 0, 0.5);
832
- animation: modalSlideIn 0.25s ease;
833
- }
834
- .modal-container.modal-lg {
835
- max-width: 900px;
836
- }
837
- @keyframes modalSlideIn {
838
- from { opacity: 0; transform: translateY(16px) scale(0.97); }
839
- to { opacity: 1; transform: translateY(0) scale(1); }
840
- }
841
-
842
- .modal-header {
843
- display: flex;
844
- align-items: center;
845
- justify-content: space-between;
846
- padding: 20px 24px;
847
- border-bottom: 1px solid var(--border-subtle);
848
- flex-shrink: 0;
849
- }
850
- .modal-title {
851
- font-size: 18px;
852
- font-weight: 600;
853
- display: flex;
854
- align-items: center;
855
- gap: 10px;
856
- }
857
- .modal-close-btn {
858
- width: 36px;
859
- height: 36px;
860
- border: none;
861
- background: rgba(255, 255, 255, 0.05);
862
- color: var(--text-secondary);
863
- border-radius: 8px;
864
- cursor: pointer;
865
- display: flex;
866
- align-items: center;
867
- justify-content: center;
868
- font-size: 18px;
869
- transition: all 0.2s;
870
- }
871
- .modal-close-btn:hover {
872
- background: rgba(255, 255, 255, 0.1);
873
- color: var(--text-primary);
874
- }
875
- .modal-body {
876
- padding: 24px;
877
- overflow-y: auto;
878
- flex: 1;
879
- min-height: 0;
880
- }
881
-
882
- /* Modal Content Styles */
883
- .modal-meta {
884
- display: flex;
885
- gap: 12px;
886
- flex-wrap: wrap;
887
- margin-bottom: 20px;
888
- }
889
- .modal-meta-item {
890
- display: flex;
891
- align-items: center;
892
- gap: 6px;
893
- font-size: 13px;
894
- color: var(--text-secondary);
895
- padding: 6px 12px;
896
- background: rgba(255, 255, 255, 0.03);
897
- border-radius: 8px;
898
- border: 1px solid var(--border-subtle);
899
- }
900
- .modal-meta-item i {
901
- color: var(--accent-primary);
902
- font-size: 14px;
903
- }
904
- .modal-content-block {
905
- background: var(--bg-dark);
906
- border: 1px solid var(--border-subtle);
907
- border-radius: 10px;
908
- padding: 20px;
909
- font-size: 14px;
910
- line-height: 1.7;
911
- color: var(--text-secondary);
912
- white-space: pre-wrap;
913
- word-break: break-word;
914
- max-height: 400px;
915
- overflow-y: auto;
916
- }
917
- .modal-section-title {
918
- font-size: 13px;
919
- font-weight: 600;
920
- color: var(--text-secondary);
921
- text-transform: uppercase;
922
- letter-spacing: 0.5px;
923
- margin: 24px 0 12px;
924
- }
925
- .modal-context-list {
926
- display: flex;
927
- flex-direction: column;
928
- gap: 8px;
929
- }
930
- .modal-context-item {
931
- display: flex;
932
- align-items: flex-start;
933
- gap: 10px;
934
- padding: 12px;
935
- background: rgba(255, 255, 255, 0.02);
936
- border-radius: 8px;
937
- border: 1px solid transparent;
938
- cursor: pointer;
939
- transition: all 0.2s;
940
- }
941
- .modal-context-item:hover {
942
- background: rgba(255, 255, 255, 0.04);
943
- border-color: var(--border-subtle);
944
- }
945
-
946
- /* List Modal Items */
947
- .modal-list-item {
948
- display: flex;
949
- align-items: center;
950
- justify-content: space-between;
951
- padding: 16px;
952
- background: rgba(255, 255, 255, 0.02);
953
- border-radius: 10px;
954
- border: 1px solid transparent;
955
- margin-bottom: 8px;
956
- cursor: pointer;
957
- transition: all 0.2s;
958
- }
959
- .modal-list-item:hover {
960
- background: rgba(255, 255, 255, 0.04);
961
- border-color: var(--border-subtle);
962
- }
963
- .modal-list-info {
964
- flex: 1;
965
- min-width: 0;
966
- }
967
- .modal-list-info .title {
968
- font-size: 14px;
969
- font-weight: 500;
970
- color: var(--text-primary);
971
- margin-bottom: 4px;
972
- }
973
- .modal-list-info .subtitle {
974
- font-size: 12px;
975
- color: var(--text-muted);
976
- }
977
- .modal-list-badge {
978
- font-size: 13px;
979
- font-weight: 600;
980
- padding: 6px 12px;
981
- border-radius: 8px;
982
- background: rgba(123, 97, 255, 0.1);
983
- color: var(--accent-primary);
984
- white-space: nowrap;
985
- margin-left: 12px;
986
- }
987
- .modal-list-empty {
988
- text-align: center;
989
- padding: 40px;
990
- color: var(--text-muted);
991
- font-size: 14px;
992
- }
993
-
994
- /* ==========================================
995
- Knowledge Graph View
996
- ========================================== */
997
- .kg-grid {
998
- display: grid;
999
- grid-template-columns: 1fr 1fr;
1000
- gap: 24px;
1001
- }
1002
- .kg-memory-card {
1003
- background: var(--bg-card);
1004
- border: var(--glass-border);
1005
- border-radius: 12px;
1006
- padding: 20px;
1007
- cursor: pointer;
1008
- transition: all 0.2s;
1009
- }
1010
- .kg-memory-card:hover {
1011
- transform: translateY(-2px);
1012
- border-color: var(--accent-primary);
1013
- box-shadow: 0 8px 24px rgba(123, 97, 255, 0.1);
1014
- }
1015
- .kg-memory-rank {
1016
- font-size: 12px;
1017
- font-weight: 700;
1018
- color: var(--accent-primary);
1019
- margin-bottom: 8px;
1020
- }
1021
- .kg-memory-summary {
1022
- font-size: 14px;
1023
- color: var(--text-secondary);
1024
- line-height: 1.5;
1025
- margin-bottom: 12px;
1026
- display: -webkit-box;
1027
- -webkit-line-clamp: 3;
1028
- -webkit-box-orient: vertical;
1029
- overflow: hidden;
1030
- }
1031
- .kg-memory-meta {
1032
- display: flex;
1033
- gap: 12px;
1034
- font-size: 12px;
1035
- color: var(--text-muted);
1036
- }
1037
- .kg-memory-meta span {
1038
- display: flex;
1039
- align-items: center;
1040
- gap: 4px;
1041
- }
1042
- .kg-topic-list {
1043
- display: flex;
1044
- flex-wrap: wrap;
1045
- gap: 8px;
1046
- margin-bottom: 12px;
1047
- }
1048
- .kg-topic-tag {
1049
- font-size: 11px;
1050
- padding: 4px 10px;
1051
- border-radius: 6px;
1052
- background: rgba(0, 240, 255, 0.1);
1053
- color: var(--accent-secondary);
1054
- font-weight: 500;
1055
- }
1056
-
1057
- /* ==========================================
1058
- Memory Banks View
1059
- ========================================== */
1060
- .mb-level-tabs {
1061
- display: flex;
1062
- gap: 8px;
1063
- margin-bottom: 24px;
1064
- }
1065
- .mb-level-tab {
1066
- padding: 10px 20px;
1067
- border-radius: 10px;
1068
- border: 1px solid var(--border-subtle);
1069
- background: transparent;
1070
- color: var(--text-secondary);
1071
- font-family: inherit;
1072
- font-size: 14px;
1073
- font-weight: 500;
1074
- cursor: pointer;
1075
- transition: all 0.2s;
1076
- }
1077
- .mb-level-tab:hover {
1078
- border-color: var(--accent-primary);
1079
- color: var(--text-primary);
1080
- }
1081
- .mb-level-tab.active {
1082
- background: rgba(123, 97, 255, 0.1);
1083
- border-color: var(--accent-primary);
1084
- color: var(--accent-primary);
1085
- font-weight: 600;
1086
- }
1087
- .mb-level-tab .tab-count {
1088
- font-size: 11px;
1089
- opacity: 0.7;
1090
- margin-left: 6px;
1091
- }
1092
- .mb-event-list {
1093
- display: flex;
1094
- flex-direction: column;
1095
- gap: 10px;
1096
- }
1097
- .mb-event-card {
1098
- background: var(--bg-card);
1099
- border: var(--glass-border);
1100
- border-radius: 12px;
1101
- padding: 16px 20px;
1102
- cursor: pointer;
1103
- transition: all 0.2s;
1104
- }
1105
- .mb-event-card:hover {
1106
- border-color: var(--accent-primary);
1107
- background: rgba(255, 255, 255, 0.03);
1108
- }
1109
- .mb-event-header {
1110
- display: flex;
1111
- justify-content: space-between;
1112
- align-items: center;
1113
- margin-bottom: 8px;
1114
- }
1115
- .mb-event-content {
1116
- font-size: 14px;
1117
- color: var(--text-secondary);
1118
- line-height: 1.5;
1119
- display: -webkit-box;
1120
- -webkit-line-clamp: 2;
1121
- -webkit-box-orient: vertical;
1122
- overflow: hidden;
1123
- }
1124
-
1125
- /* ==========================================
1126
- Configuration View
1127
- ========================================== */
1128
- .cfg-grid {
1129
- display: grid;
1130
- grid-template-columns: 1fr 1fr;
1131
- gap: 24px;
1132
- }
1133
- .cfg-section {
1134
- background: var(--bg-card);
1135
- border: var(--glass-border);
1136
- border-radius: 16px;
1137
- padding: 24px;
1138
- }
1139
- .cfg-section-title {
1140
- font-size: 16px;
1141
- font-weight: 600;
1142
- margin-bottom: 20px;
1143
- display: flex;
1144
- align-items: center;
1145
- gap: 10px;
1146
- }
1147
- .cfg-section-title i {
1148
- color: var(--accent-primary);
1149
- }
1150
- .cfg-row {
1151
- display: flex;
1152
- justify-content: space-between;
1153
- align-items: center;
1154
- padding: 12px 0;
1155
- border-bottom: 1px solid var(--border-subtle);
1156
- }
1157
- .cfg-row:last-child {
1158
- border-bottom: none;
1159
- }
1160
- .cfg-row-label {
1161
- font-size: 14px;
1162
- color: var(--text-secondary);
1163
- }
1164
- .cfg-row-value {
1165
- font-size: 14px;
1166
- font-weight: 600;
1167
- color: var(--text-primary);
1168
- font-family: monospace;
1169
- }
1170
-
1171
- /* Modal responsive */
1172
- @media (max-width: 768px) {
1173
- .modal-container {
1174
- width: 95%;
1175
- max-height: 90vh;
1176
- }
1177
- .modal-container.modal-lg {
1178
- max-width: 95%;
1179
- }
1180
- .kg-grid {
1181
- grid-template-columns: 1fr;
1182
- }
1183
- .cfg-grid {
1184
- grid-template-columns: 1fr;
1185
- }
1186
- }
1187
-
1188
- /* ==========================================
1189
- Chat Panel
1190
- ========================================== */
1191
- .chat-panel {
1192
- position: fixed;
1193
- top: 0;
1194
- right: 0;
1195
- width: min(800px, 50vw);
1196
- height: 100vh;
1197
- background: var(--bg-panel);
1198
- border-left: var(--glass-border);
1199
- box-shadow: -8px 0 32px rgba(0, 0, 0, 0.3);
1200
- z-index: 500;
1201
- display: flex;
1202
- flex-direction: column;
1203
- transform: translateX(100%);
1204
- transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1205
- }
1206
- .chat-panel.open {
1207
- transform: translateX(0);
1208
- }
1209
-
1210
- .chat-header {
1211
- display: flex;
1212
- align-items: center;
1213
- justify-content: space-between;
1214
- padding: 16px 20px;
1215
- border-bottom: 1px solid var(--border-subtle);
1216
- flex-shrink: 0;
1217
- }
1218
- .chat-title {
1219
- font-size: 16px;
1220
- font-weight: 600;
1221
- display: flex;
1222
- align-items: center;
1223
- gap: 8px;
1224
- }
1225
- .chat-title i {
1226
- color: var(--accent-primary);
1227
- font-size: 20px;
1228
- }
1229
-
1230
- .chat-messages {
1231
- flex: 1;
1232
- overflow-y: auto;
1233
- padding: 20px;
1234
- display: flex;
1235
- flex-direction: column;
1236
- gap: 16px;
1237
- }
1238
-
1239
- /* Welcome */
1240
- .chat-welcome {
1241
- text-align: center;
1242
- padding: 40px 20px;
1243
- color: var(--text-muted);
1244
- }
1245
- .chat-welcome-icon { font-size: 48px; margin-bottom: 16px; }
1246
- .chat-welcome-title { font-size: 16px; font-weight: 600; color: var(--text-secondary); margin-bottom: 8px; }
1247
- .chat-welcome-text { font-size: 13px; line-height: 1.6; }
1248
-
1249
- /* Message bubbles */
1250
- .chat-msg {
1251
- max-width: 85%;
1252
- padding: 12px 16px;
1253
- border-radius: 12px;
1254
- font-size: 14px;
1255
- line-height: 1.6;
1256
- word-break: break-word;
1257
- }
1258
- .chat-msg.user {
1259
- align-self: flex-end;
1260
- background: rgba(123, 97, 255, 0.15);
1261
- border: 1px solid rgba(123, 97, 255, 0.2);
1262
- color: var(--text-primary);
1263
- }
1264
- .chat-msg.assistant {
1265
- align-self: flex-start;
1266
- background: rgba(255, 255, 255, 0.03);
1267
- border: 1px solid var(--border-subtle);
1268
- color: var(--text-secondary);
1269
- }
1270
-
1271
- /* Markdown in assistant messages */
1272
- .chat-msg.assistant code {
1273
- background: rgba(0, 0, 0, 0.3);
1274
- padding: 2px 6px;
1275
- border-radius: 4px;
1276
- font-size: 13px;
1277
- font-family: monospace;
1278
- }
1279
- .chat-msg.assistant pre {
1280
- background: var(--bg-dark);
1281
- border: 1px solid var(--border-subtle);
1282
- border-radius: 8px;
1283
- padding: 12px;
1284
- overflow-x: auto;
1285
- margin: 8px 0;
1286
- }
1287
- .chat-msg.assistant pre code {
1288
- background: none;
1289
- padding: 0;
1290
- }
1291
- .chat-msg.assistant strong { color: var(--text-primary); }
1292
- .chat-msg.assistant em { color: var(--accent-secondary); }
1293
-
1294
- /* Streaming cursor */
1295
- .chat-msg.streaming::after {
1296
- content: '\25CA';
1297
- animation: blink 1s step-end infinite;
1298
- color: var(--accent-primary);
1299
- margin-left: 2px;
1300
- }
1301
- @keyframes blink { 50% { opacity: 0; } }
1302
-
1303
- /* Loading dots */
1304
- .chat-loading {
1305
- align-self: flex-start;
1306
- display: flex;
1307
- gap: 6px;
1308
- padding: 16px;
1309
- }
1310
- .chat-loading-dot {
1311
- width: 8px;
1312
- height: 8px;
1313
- border-radius: 50%;
1314
- background: var(--text-muted);
1315
- animation: chatBounce 1.4s ease-in-out infinite;
1316
- }
1317
- .chat-loading-dot:nth-child(2) { animation-delay: 0.2s; }
1318
- .chat-loading-dot:nth-child(3) { animation-delay: 0.4s; }
1319
- @keyframes chatBounce {
1320
- 0%, 80%, 100% { transform: scale(0.6); opacity: 0.4; }
1321
- 40% { transform: scale(1); opacity: 1; }
1322
- }
1323
-
1324
- /* Input area */
1325
- .chat-input-area {
1326
- padding: 16px 20px;
1327
- border-top: 1px solid var(--border-subtle);
1328
- flex-shrink: 0;
1329
- }
1330
- .chat-input-wrapper {
1331
- display: flex;
1332
- gap: 8px;
1333
- align-items: flex-end;
1334
- }
1335
- .chat-input {
1336
- flex: 1;
1337
- resize: none;
1338
- padding: 12px 16px;
1339
- background: var(--bg-card);
1340
- border: 1px solid var(--border-subtle);
1341
- border-radius: 12px;
1342
- color: var(--text-primary);
1343
- font-family: 'Outfit', sans-serif;
1344
- font-size: 14px;
1345
- line-height: 1.4;
1346
- max-height: 120px;
1347
- overflow-y: auto;
1348
- transition: border-color 0.2s;
1349
- }
1350
- .chat-input:focus {
1351
- outline: none;
1352
- border-color: var(--accent-primary);
1353
- box-shadow: 0 0 0 2px rgba(123, 97, 255, 0.1);
1354
- }
1355
- .chat-input::placeholder { color: var(--text-muted); }
1356
-
1357
- .chat-send-btn {
1358
- width: 44px;
1359
- height: 44px;
1360
- border-radius: 12px;
1361
- border: none;
1362
- background: var(--accent-primary);
1363
- color: white;
1364
- font-size: 18px;
1365
- cursor: pointer;
1366
- display: flex;
1367
- align-items: center;
1368
- justify-content: center;
1369
- transition: all 0.2s;
1370
- flex-shrink: 0;
1371
- }
1372
- .chat-send-btn:hover:not(:disabled) {
1373
- background: #6343E0;
1374
- transform: scale(1.05);
1375
- }
1376
- .chat-send-btn:disabled {
1377
- opacity: 0.4;
1378
- cursor: not-allowed;
1379
- }
1380
-
1381
- .chat-input-hint {
1382
- font-size: 11px;
1383
- color: var(--text-muted);
1384
- margin-top: 8px;
1385
- padding: 0 4px;
1386
- }
1387
-
1388
- /* Sidebar chat toggle */
1389
- .sidebar-bottom {
1390
- margin-top: auto;
1391
- padding-top: 24px;
1392
- }
1393
- .chat-toggle-btn {
1394
- display: flex;
1395
- align-items: center;
1396
- gap: 12px;
1397
- width: 100%;
1398
- padding: 14px 16px;
1399
- border-radius: 12px;
1400
- border: 1px solid rgba(123, 97, 255, 0.2);
1401
- background: rgba(123, 97, 255, 0.05);
1402
- color: var(--accent-primary);
1403
- font-family: 'Outfit', sans-serif;
1404
- font-size: 14px;
1405
- font-weight: 600;
1406
- cursor: pointer;
1407
- transition: all 0.2s;
1408
- }
1409
- .chat-toggle-btn:hover {
1410
- background: rgba(123, 97, 255, 0.15);
1411
- border-color: var(--accent-primary);
1412
- }
1413
- .chat-toggle-btn i { font-size: 1.2rem; }
1414
-
1415
- /* Chat history list */
1416
- .chat-history-view {
1417
- flex: 1;
1418
- overflow-y: auto;
1419
- padding: 16px 20px;
1420
- display: none;
1421
- flex-direction: column;
1422
- gap: 8px;
1423
- }
1424
- .chat-history-view.active {
1425
- display: flex;
1426
- }
1427
- .chat-messages.hidden {
1428
- display: none;
1429
- }
1430
- .chat-history-item {
1431
- padding: 12px 16px;
1432
- background: var(--bg-card);
1433
- border: 1px solid var(--border-subtle);
1434
- border-radius: 10px;
1435
- cursor: pointer;
1436
- transition: all 0.2s;
1437
- }
1438
- .chat-history-item:hover {
1439
- border-color: var(--accent-primary);
1440
- background: rgba(123, 97, 255, 0.05);
1441
- }
1442
- .chat-history-item-title {
1443
- font-size: 14px;
1444
- font-weight: 500;
1445
- color: var(--text-primary);
1446
- white-space: nowrap;
1447
- overflow: hidden;
1448
- text-overflow: ellipsis;
1449
- }
1450
- .chat-history-item-meta {
1451
- display: flex;
1452
- justify-content: space-between;
1453
- align-items: center;
1454
- margin-top: 6px;
1455
- font-size: 12px;
1456
- color: var(--text-muted);
1457
- }
1458
- .chat-history-item-delete {
1459
- background: none;
1460
- border: none;
1461
- color: var(--text-muted);
1462
- cursor: pointer;
1463
- padding: 2px 6px;
1464
- border-radius: 4px;
1465
- font-size: 14px;
1466
- transition: all 0.2s;
1467
- }
1468
- .chat-history-item-delete:hover {
1469
- color: var(--error);
1470
- background: rgba(255, 69, 96, 0.1);
1471
- }
1472
- .chat-history-empty {
1473
- text-align: center;
1474
- padding: 40px 20px;
1475
- color: var(--text-muted);
1476
- font-size: 13px;
1477
- }
1478
-
1479
- /* Chat header tabs */
1480
- .chat-header-tabs {
1481
- display: flex;
1482
- gap: 4px;
1483
- }
1484
- .chat-header-tab {
1485
- padding: 6px 14px;
1486
- border-radius: 8px;
1487
- border: 1px solid var(--border-subtle);
1488
- background: transparent;
1489
- color: var(--text-muted);
1490
- font-family: 'Outfit', sans-serif;
1491
- font-size: 13px;
1492
- font-weight: 500;
1493
- cursor: pointer;
1494
- transition: all 0.2s;
1495
- }
1496
- .chat-header-tab.active {
1497
- background: rgba(123, 97, 255, 0.1);
1498
- border-color: var(--accent-primary);
1499
- color: var(--accent-primary);
1500
- }
1501
- .chat-header-tab:hover:not(.active) {
1502
- border-color: var(--text-muted);
1503
- color: var(--text-secondary);
1504
- }
1505
-
1506
- /* New chat button */
1507
- .chat-new-btn {
1508
- background: none;
1509
- border: 1px solid var(--border-subtle);
1510
- color: var(--text-muted);
1511
- cursor: pointer;
1512
- padding: 6px 10px;
1513
- border-radius: 8px;
1514
- font-size: 16px;
1515
- transition: all 0.2s;
1516
- display: flex;
1517
- align-items: center;
1518
- justify-content: center;
1519
- }
1520
- .chat-new-btn:hover {
1521
- color: var(--accent-secondary);
1522
- border-color: var(--accent-secondary);
1523
- }
1524
-
1525
- /* Chat responsive */
1526
- @media (max-width: 768px) {
1527
- .chat-panel { width: 100%; }
1528
- }
1529
-
1530
- /* Progressive Retrieval Disclosure */
1531
- .disclosure-card {
1532
- margin-top: 24px;
1533
- }
1534
-
1535
- .disclosure-controls,
1536
- .disclosure-search-row,
1537
- .disclosure-layout,
1538
- .disclosure-result-head,
1539
- .disclosure-reasons,
1540
- .disclosure-context-item {
1541
- display: flex;
1542
- gap: 8px;
1543
- align-items: center;
1544
- }
1545
-
1546
- .disclosure-controls {
1547
- flex-wrap: wrap;
1548
- justify-content: flex-end;
1549
- }
1550
-
1551
- .disclosure-toggle {
1552
- font-size: 12px;
1553
- color: var(--text-muted);
1554
- display: inline-flex;
1555
- gap: 6px;
1556
- align-items: center;
1557
- }
1558
-
1559
- .project-dropdown.compact {
1560
- width: 92px;
1561
- padding: 7px 10px;
1562
- font-size: 12px;
1563
- }
1564
-
1565
- .search-input.compact {
1566
- width: 70px;
1567
- padding-left: 10px;
1568
- }
1569
-
1570
- .disclosure-search-row {
1571
- align-items: stretch;
1572
- margin-bottom: 8px;
1573
- }
1574
-
1575
- .disclosure-search-wrapper {
1576
- flex: 1;
1577
- }
1578
-
1579
- .disclosure-status {
1580
- min-height: 18px;
1581
- font-size: 12px;
1582
- color: var(--text-muted);
1583
- margin-bottom: 10px;
1584
- }
1585
-
1586
- .disclosure-layout {
1587
- align-items: stretch;
1588
- gap: 12px;
1589
- }
1590
-
1591
- .disclosure-results,
1592
- .disclosure-drilldown {
1593
- flex: 1;
1594
- min-width: 0;
1595
- display: flex;
1596
- flex-direction: column;
1597
- gap: 8px;
1598
- }
1599
-
1600
- .disclosure-drilldown {
1601
- background: rgba(0, 0, 0, 0.14);
1602
- border: 1px solid rgba(255, 255, 255, 0.06);
1603
- border-radius: 12px;
1604
- padding: 12px;
1605
- }
1606
-
1607
- .disclosure-empty {
1608
- color: var(--text-muted);
1609
- font-size: 13px;
1610
- text-align: center;
1611
- padding: 18px;
1612
- }
1613
-
1614
- .disclosure-empty.compact {
1615
- text-align: left;
1616
- padding: 6px 0;
1617
- }
1618
-
1619
- .disclosure-meta {
1620
- font-size: 11px;
1621
- color: var(--text-muted);
1622
- padding: 0 2px 4px;
1623
- }
1624
-
1625
- .disclosure-result {
1626
- width: 100%;
1627
- text-align: left;
1628
- border: 1px solid rgba(255, 255, 255, 0.06);
1629
- background: rgba(255, 255, 255, 0.025);
1630
- border-radius: 12px;
1631
- color: var(--text-secondary);
1632
- padding: 10px;
1633
- cursor: pointer;
1634
- transition: all 0.18s ease;
1635
- }
1636
-
1637
- .disclosure-result:hover,
1638
- .disclosure-result.active {
1639
- border-color: var(--accent-primary);
1640
- background: rgba(123, 97, 255, 0.10);
1641
- }
1642
-
1643
- .disclosure-result-head {
1644
- justify-content: space-between;
1645
- margin-bottom: 6px;
1646
- }
1647
-
1648
- .disclosure-score {
1649
- font-size: 11px;
1650
- color: var(--text-muted);
1651
- }
1652
-
1653
- .disclosure-title {
1654
- font-size: 13px;
1655
- font-weight: 600;
1656
- color: var(--text-primary);
1657
- margin-bottom: 4px;
1658
- overflow: hidden;
1659
- text-overflow: ellipsis;
1660
- white-space: nowrap;
1661
- }
1662
-
1663
- .disclosure-snippet {
1664
- font-size: 12px;
1665
- color: var(--text-secondary);
1666
- display: -webkit-box;
1667
- -webkit-line-clamp: 2;
1668
- -webkit-box-orient: vertical;
1669
- overflow: hidden;
1670
- margin-bottom: 8px;
1671
- }
1672
-
1673
- .disclosure-reasons {
1674
- flex-wrap: wrap;
1675
- }
1676
-
1677
- .disclosure-source-ref {
1678
- display: flex;
1679
- flex-direction: column;
1680
- gap: 6px;
1681
- margin-bottom: 6px;
1682
- }
1683
-
1684
- .disclosure-provenance {
1685
- display: grid;
1686
- grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
1687
- gap: 5px 8px;
1688
- margin: 7px 0 9px;
1689
- padding: 8px;
1690
- border: 1px solid rgba(0, 240, 255, 0.12);
1691
- border-radius: 10px;
1692
- background: rgba(0, 240, 255, 0.035);
1693
- }
1694
-
1695
- .disclosure-provenance-row {
1696
- min-width: 0;
1697
- }
1698
-
1699
- .disclosure-provenance-key {
1700
- display: block;
1701
- color: var(--text-muted);
1702
- font-size: 9px;
1703
- text-transform: uppercase;
1704
- letter-spacing: 0.4px;
1705
- margin-bottom: 2px;
1706
- }
1707
-
1708
- .disclosure-provenance-value {
1709
- display: block;
1710
- color: var(--text-secondary);
1711
- font-size: 11px;
1712
- overflow-wrap: anywhere;
1713
- }
1714
-
1715
- .disclosure-chip {
1716
- font-size: 10px;
1717
- color: var(--text-muted);
1718
- border: 1px solid rgba(255, 255, 255, 0.08);
1719
- background: rgba(255, 255, 255, 0.035);
1720
- border-radius: 999px;
1721
- padding: 3px 7px;
1722
- }
1723
-
1724
- .disclosure-layer + .disclosure-layer {
1725
- margin-top: 14px;
1726
- }
1727
-
1728
- .disclosure-context-list {
1729
- display: flex;
1730
- flex-direction: column;
1731
- gap: 6px;
1732
- margin-bottom: 10px;
1733
- }
1734
-
1735
- .disclosure-context-item {
1736
- align-items: flex-start;
1737
- font-size: 12px;
1738
- color: var(--text-secondary);
1739
- background: rgba(255, 255, 255, 0.025);
1740
- border-radius: 8px;
1741
- padding: 7px;
1742
- }
1743
-
1744
- @media (max-width: 1100px) {
1745
- .disclosure-layout,
1746
- .disclosure-search-row {
1747
- flex-direction: column;
1748
- }
1749
- }
1750
-