noteconnection 1.7.0 → 1.9.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 (328) hide show
  1. package/LICENSE +674 -21
  2. package/README.md +260 -1626
  3. package/dist/src/agent_workspace.contract.parity.test.js +159 -0
  4. package/dist/src/agent_workspace.frontend.test.js +10388 -0
  5. package/dist/src/agent_workspace.locale.contract.test.js +95 -0
  6. package/dist/src/agent_workspace.runtime.behavior.test.js +5072 -0
  7. package/dist/src/android.knowledgebase.picker.contract.test.js +102 -0
  8. package/dist/src/appimage.patchelf.test.js +113 -0
  9. package/dist/src/appimage.portability.test.js +156 -0
  10. package/dist/src/backend/FileLoader.js +18 -4
  11. package/dist/src/backend/FileLoader.test.js +125 -0
  12. package/dist/src/backend/GraphBuilder.identity.test.js +86 -0
  13. package/dist/src/backend/GraphBuilder.js +66 -18
  14. package/dist/src/backend/GraphBuilder.matching.test.js +127 -0
  15. package/dist/src/backend/GraphMetrics.js +0 -3
  16. package/dist/src/backend/ResourceIdentity.js +155 -0
  17. package/dist/src/backend/ResourceIdentity.test.js +113 -0
  18. package/dist/src/backend/algorithms/CycleDetection.js +0 -1
  19. package/dist/src/backend/algorithms/HybridEngine.js +0 -3
  20. package/dist/src/backend/algorithms/LayoutEngine.js +0 -1
  21. package/dist/src/backend/algorithms/StatisticalAnalyzer.js +0 -4
  22. package/dist/src/backend/algorithms/TopologicalSort.js +0 -2
  23. package/dist/src/backend/build_dag.js +0 -1
  24. package/dist/src/capacitor.bridge.serialization.contract.test.js +3 -0
  25. package/dist/src/capacitor.runtime.contract.test.js +11 -2
  26. package/dist/src/copy.assets.contract.test.js +130 -0
  27. package/dist/src/core/Graph.js +138 -42
  28. package/dist/src/core/Graph.test.js +74 -0
  29. package/dist/src/core/NoteConnection.js +2 -2
  30. package/dist/src/core/PathBridge.js +293 -5
  31. package/dist/src/core/ResourceReference.js +17 -0
  32. package/dist/src/desktop.godot.pack.test.js +142 -0
  33. package/dist/src/desktop.runtime.graph.test.js +66 -0
  34. package/dist/src/export/WorkspaceExportBundle.js +1174 -0
  35. package/dist/src/export/WorkspaceExportBundle.test.js +1541 -0
  36. package/dist/src/export/index.js +18 -0
  37. package/dist/src/export/types.js +2 -0
  38. package/dist/src/fixrisk.issue.verifier.contract.test.js +3 -1
  39. package/dist/src/foundation.ann.runtime.contract.test.js +81 -0
  40. package/dist/src/foundation.release.evidence.contract.test.js +524 -0
  41. package/dist/src/foundation.sqlite.runtime.contract.test.js +88 -0
  42. package/dist/src/frontend/README.md +260 -1626
  43. package/dist/src/frontend/agent_workspace.js +6011 -0
  44. package/dist/src/frontend/agent_workspace_runtime.js +4434 -0
  45. package/dist/src/frontend/analysis.js +31 -4
  46. package/dist/src/frontend/app.js +2178 -62
  47. package/dist/src/frontend/focus_mode_interactions.js +33 -0
  48. package/dist/src/frontend/godot_future_path_renderer.js +540 -0
  49. package/dist/src/frontend/godot_tree_interactions.js +178 -0
  50. package/dist/src/frontend/graph_state.mjs +105 -0
  51. package/dist/src/frontend/hosted_future_path_runtime.js +157 -0
  52. package/dist/src/frontend/i18n.mjs +186 -0
  53. package/dist/src/frontend/index.html +672 -268
  54. package/dist/src/frontend/knowledge_projection_contract.js +230 -0
  55. package/dist/src/frontend/knowledge_projection_store.js +214 -0
  56. package/dist/src/frontend/layout_gpu.js +12 -4
  57. package/dist/src/frontend/libs/path_core.js +158 -42
  58. package/dist/src/frontend/locales/en.json +753 -5
  59. package/dist/src/frontend/locales/zh.json +753 -5
  60. package/dist/src/frontend/main.mjs +60 -0
  61. package/dist/src/frontend/markdown_runtime.js +827 -0
  62. package/dist/src/frontend/mobile_budget_runtime.js +33 -0
  63. package/dist/src/frontend/mobile_exact_analyzer.js +393 -0
  64. package/dist/src/frontend/mobile_identity_contract.js +221 -0
  65. package/dist/src/frontend/mobile_semantic_comparator.js +264 -0
  66. package/dist/src/frontend/notemd.css +49 -0
  67. package/dist/src/frontend/notemd.html +7 -1
  68. package/dist/src/frontend/notemd.js +64 -0
  69. package/dist/src/frontend/path.html +113 -2
  70. package/dist/src/frontend/path_app.js +2108 -130
  71. package/dist/src/frontend/path_layout.mjs +143 -0
  72. package/dist/src/frontend/path_mermaid_utils.mjs +108 -0
  73. package/dist/src/frontend/path_modules_bridge.js +486 -0
  74. package/dist/src/frontend/path_state.mjs +118 -0
  75. package/dist/src/frontend/path_styles.css +146 -0
  76. package/dist/src/frontend/path_worker_bridge.mjs +85 -0
  77. package/dist/src/frontend/reader.js +393 -33
  78. package/dist/src/frontend/runtime_bridge.js +67 -54
  79. package/dist/src/frontend/runtime_bridge.mjs +279 -0
  80. package/dist/src/frontend/settings.js +130 -12
  81. package/dist/src/frontend/simulationWorker.js +1 -1
  82. package/dist/src/frontend/source_manager.js +297 -22
  83. package/dist/src/frontend/storage_provider.js +661 -71
  84. package/dist/src/frontend/styles.css +2814 -72
  85. package/dist/src/frontend/workbench_state.mjs +101 -0
  86. package/dist/src/frontend/workspace_panes.js +10272 -0
  87. package/dist/src/frontend.locale.contract.test.js +62 -0
  88. package/dist/src/frontend.runtime.assets.contract.test.js +81 -0
  89. package/dist/src/godot.sidecar.bootstrap.contract.test.js +244 -0
  90. package/dist/src/graph.answer.operator.contract.test.js +72 -0
  91. package/dist/src/index.js +6 -2
  92. package/dist/src/index.knowledge-root.test.js +118 -0
  93. package/dist/src/indexing/IndexLifecycle.js +217 -0
  94. package/dist/src/indexing/IndexLifecycle.test.js +73 -0
  95. package/dist/src/indexing/SegmentBuilder.js +64 -0
  96. package/dist/src/indexing/UnitBuilder.js +48 -0
  97. package/dist/src/indexing/types.js +2 -0
  98. package/dist/src/knowledge.api.contract.test.js +172 -0
  99. package/dist/src/knowledge_projection.contract.test.js +134 -0
  100. package/dist/src/knowledge_projection_store.test.js +200 -0
  101. package/dist/src/learning/AnswerQualityEvaluation.js +153 -0
  102. package/dist/src/learning/AnswerQualityEvaluation.test.js +118 -0
  103. package/dist/src/learning/KnowledgeLearningPlatform.js +11181 -0
  104. package/dist/src/learning/KnowledgeLearningPlatform.persistence.test.js +745 -0
  105. package/dist/src/learning/KnowledgeLearningPlatform.program-f.test.js +99 -0
  106. package/dist/src/learning/KnowledgeLearningPlatform.test.js +3208 -0
  107. package/dist/src/learning/KnowledgeWorkspaceConversationRegression.js +2998 -0
  108. package/dist/src/learning/KnowledgeWorkspaceConversationRegression.test.js +3936 -0
  109. package/dist/src/learning/MeasurementEvidenceConflicts.test.js +78 -0
  110. package/dist/src/learning/PublicAnswerContract.test.js +85 -0
  111. package/dist/src/learning/PublicEvidenceSelection.test.js +94 -0
  112. package/dist/src/learning/PublicMeasurementDisclosure.test.js +54 -0
  113. package/dist/src/learning/agentConversationExecution.js +211 -0
  114. package/dist/src/learning/agentConversationExecution.test.js +209 -0
  115. package/dist/src/learning/agentConversationSerialization.js +266 -0
  116. package/dist/src/learning/agentConversationSerialization.test.js +165 -0
  117. package/dist/src/learning/agentResponseBudget.js +179 -0
  118. package/dist/src/learning/agentResponseBudget.test.js +97 -0
  119. package/dist/src/learning/agentWorkspaceCapabilityContracts.js +65 -0
  120. package/dist/src/learning/answerReleaseReview.js +5260 -0
  121. package/dist/src/learning/answerReleaseReview.test.js +4174 -0
  122. package/dist/src/learning/answerTaskPlan.js +473 -0
  123. package/dist/src/learning/api.js +2 -0
  124. package/dist/src/learning/conversationComposer.js +1721 -0
  125. package/dist/src/learning/conversationComposer.test.js +3220 -0
  126. package/dist/src/learning/domains/ConversationManager.js +53 -0
  127. package/dist/src/learning/domains/KnowledgeIngestor.js +238 -0
  128. package/dist/src/learning/domains/KnowledgeQuerier.js +187 -0
  129. package/dist/src/learning/domains/MasteryEngine.js +387 -0
  130. package/dist/src/learning/domains/MemoryPolicyManager.js +408 -0
  131. package/dist/src/learning/domains/QualityEvaluator.js +307 -0
  132. package/dist/src/learning/domains/TutorRouter.js +313 -0
  133. package/dist/src/learning/domains/index.js +33 -0
  134. package/dist/src/learning/domains/types.js +7 -0
  135. package/dist/src/learning/errors.js +29 -0
  136. package/dist/src/learning/evidenceContextAssembler.js +1368 -0
  137. package/dist/src/learning/evidenceContextAssembler.test.js +6332 -0
  138. package/dist/src/learning/graphAnswerCoverage.js +37 -0
  139. package/dist/src/learning/graphAnswerCoverage.test.js +93 -0
  140. package/dist/src/learning/graphAnswerCoverageCalibration.js +59 -0
  141. package/dist/src/learning/graphAnswerCoverageCalibration.test.js +46 -0
  142. package/dist/src/learning/graphAnswerFacts.js +94 -0
  143. package/dist/src/learning/graphAnswerFacts.test.js +39 -0
  144. package/dist/src/learning/graphAnswerPlan.js +908 -0
  145. package/dist/src/learning/graphAnswerPlan.test.js +907 -0
  146. package/dist/src/learning/graphAnswerQualityCalibration.js +255 -0
  147. package/dist/src/learning/graphAnswerQualityCalibration.test.js +72 -0
  148. package/dist/src/learning/graphAnswerQualityPolicy.js +30 -0
  149. package/dist/src/learning/graphClaimMatcher.js +104 -0
  150. package/dist/src/learning/graphConditionedContext.js +109 -0
  151. package/dist/src/learning/graphConditionedContext.test.js +99 -0
  152. package/dist/src/learning/graphContextAssembler.js +860 -0
  153. package/dist/src/learning/graphContextAssembler.test.js +1033 -0
  154. package/dist/src/learning/graphExpansionPolicy.js +22 -0
  155. package/dist/src/learning/graphExpansionPolicy.test.js +33 -0
  156. package/dist/src/learning/identityMetadata.test.js +26 -0
  157. package/dist/src/learning/index.js +29 -0
  158. package/dist/src/learning/mobileAnswerProjection.js +104 -0
  159. package/dist/src/learning/mobileAnswerProjection.test.js +102 -0
  160. package/dist/src/learning/queryBackend.js +1922 -0
  161. package/dist/src/learning/queryBackend.test.js +976 -0
  162. package/dist/src/learning/ragContextPack.js +356 -0
  163. package/dist/src/learning/ragContextPack.test.js +311 -0
  164. package/dist/src/learning/ragEvidenceQuality.js +96 -0
  165. package/dist/src/learning/ragEvidenceQuality.test.js +29 -0
  166. package/dist/src/learning/ragPublicText.js +101 -0
  167. package/dist/src/learning/ragPublicText.test.js +57 -0
  168. package/dist/src/learning/ragSufficiencyJudge.js +171 -0
  169. package/dist/src/learning/ragSufficiencyJudge.test.js +177 -0
  170. package/dist/src/learning/ragSufficiencyProviderJudge.js +217 -0
  171. package/dist/src/learning/ragSufficiencyProviderJudge.test.js +207 -0
  172. package/dist/src/learning/requestNormalization.js +304 -0
  173. package/dist/src/learning/requestNormalization.test.js +101 -0
  174. package/dist/src/learning/runtimeCapability.js +4677 -0
  175. package/dist/src/learning/runtimeCapability.test.js +3635 -0
  176. package/dist/src/learning/store.js +1344 -0
  177. package/dist/src/learning/store.test.js +1425 -0
  178. package/dist/src/learning/tutorAdapter.js +2 -0
  179. package/dist/src/learning/types.js +2 -0
  180. package/dist/src/learning/vectorAccelerationAdapter.js +958 -0
  181. package/dist/src/learning/vectorAccelerationAdapter.test.js +412 -0
  182. package/dist/src/learning/workspaceHydration.js +168 -0
  183. package/dist/src/learning/workspaceHydration.test.js +30 -0
  184. package/dist/src/lfs.asset.policy.contract.test.js +153 -0
  185. package/dist/src/license.policy.contract.test.js +71 -0
  186. package/dist/src/markdown/MarkdownGateway.js +4 -0
  187. package/dist/src/markdown/MarkdownGateway.test.js +59 -0
  188. package/dist/src/memory/MemoryGovernance.js +74 -0
  189. package/dist/src/memory/MemoryGovernance.test.js +46 -0
  190. package/dist/src/memory/types.js +2 -0
  191. package/dist/src/mermaid.frontend.guard.contract.test.js +77 -0
  192. package/dist/src/middleware/SseResponseWriter.js +122 -0
  193. package/dist/src/middleware/SseResponseWriter.test.js +54 -0
  194. package/dist/src/middleware/auth.js +38 -0
  195. package/dist/src/middleware/auth.test.js +33 -0
  196. package/dist/src/middleware/body-parser.js +45 -0
  197. package/dist/src/middleware/cors.js +44 -0
  198. package/dist/src/middleware/index.js +22 -0
  199. package/dist/src/middleware/request-trace.js +96 -0
  200. package/dist/src/mobile.android.evidence.contract.test.js +146 -0
  201. package/dist/src/mobile.android.signing.contract.test.js +66 -0
  202. package/dist/src/mobile.artifact.contract.test.js +144 -0
  203. package/dist/src/mobile.budget.contract.test.js +90 -0
  204. package/dist/src/mobile.canonical-id.readiness.test.js +54 -0
  205. package/dist/src/mobile.graph.parity.contract.test.js +207 -0
  206. package/dist/src/mobile.identity.contract.test.js +66 -0
  207. package/dist/src/mobile.identity.corpus.manifest.test.js +72 -0
  208. package/dist/src/mobile.identity.corpus.test.js +40 -0
  209. package/dist/src/mobile.native.recovery.contract.test.js +64 -0
  210. package/dist/src/mobile.pipeline.test.js +11 -1
  211. package/dist/src/mobile.profile.contract.test.js +225 -0
  212. package/dist/src/mobile.semantic.parity.test.js +92 -0
  213. package/dist/src/mobile_exact_analyzer.test.js +113 -0
  214. package/dist/src/notemd/AppConfigToml.js +6 -4
  215. package/dist/src/notemd/ContentGenerator.js +4 -9
  216. package/dist/src/notemd/FileProcessor.js +4 -9
  217. package/dist/src/notemd/MermaidProcessor.js +400 -50
  218. package/dist/src/notemd/NotemdService.js +506 -26
  219. package/dist/src/notemd/PromptManager.js +15 -0
  220. package/dist/src/notemd/Translator.js +4 -9
  221. package/dist/src/notemd/cli/commands.js +357 -0
  222. package/dist/src/notemd/cli/dispatcher.js +225 -0
  223. package/dist/src/notemd/cli/index.js +169 -0
  224. package/dist/src/notemd/cli/parser.js +68 -0
  225. package/dist/src/notemd/cli/types.js +2 -0
  226. package/dist/src/notemd/constants.js +43 -0
  227. package/dist/src/notemd/diagram/diagramGenerationService.js +78 -0
  228. package/dist/src/notemd/diagram/diagramSpec.js +79 -0
  229. package/dist/src/notemd/diagram/diagramSpecResponseParser.js +131 -0
  230. package/dist/src/notemd/diagram/intent.js +95 -0
  231. package/dist/src/notemd/diagram/planner.js +71 -0
  232. package/dist/src/notemd/diagram/prompts/diagramSpecPrompt.js +42 -0
  233. package/dist/src/notemd/diagram/types.js +18 -0
  234. package/dist/src/notemd/index.js +26 -0
  235. package/dist/src/notemd/operations/capabilityManifest.js +23 -0
  236. package/dist/src/notemd/operations/cliContracts.js +17 -0
  237. package/dist/src/notemd/operations/configProfileCommands.js +85 -0
  238. package/dist/src/notemd/operations/registry.contract.test.js +95 -0
  239. package/dist/src/notemd/operations/registry.js +991 -0
  240. package/dist/src/notemd/operations/types.js +2 -0
  241. package/dist/src/notemd/progressReporter.js +9 -0
  242. package/dist/src/notemd/providerDiagnostics.js +220 -0
  243. package/dist/src/notemd/providerProfiles.js +42 -0
  244. package/dist/src/notemd/providerTemplates.js +231 -0
  245. package/dist/src/notemd/search/DuckDuckGoProvider.js +39 -0
  246. package/dist/src/notemd/search/SearchManager.js +13 -0
  247. package/dist/src/notemd/search/SearchProvider.js +2 -0
  248. package/dist/src/notemd/search/TavilyProvider.js +44 -0
  249. package/dist/src/notemd.agent.manifest.test.js +85 -0
  250. package/dist/src/notemd.api.contract.test.js +14 -1
  251. package/dist/src/notemd.app_config_toml.test.js +2 -1
  252. package/dist/src/notemd.batch.workflow.test.js +117 -0
  253. package/dist/src/notemd.cli.e2e.test.js +136 -0
  254. package/dist/src/notemd.core.test.js +51 -0
  255. package/dist/src/notemd.diagram.pipeline.test.js +233 -0
  256. package/dist/src/notemd.providerTemplates.test.js +34 -0
  257. package/dist/src/notemd.server.integration.test.js +262 -39
  258. package/dist/src/notemd.workflow.pipeline.test.js +162 -0
  259. package/dist/src/pathbridge.handshake.contract.test.js +45 -2
  260. package/dist/src/pathbridge.host-adapter.contract.test.js +133 -0
  261. package/dist/src/pathcore.bundle.contract.test.js +8 -0
  262. package/dist/src/pathmode.background.contract.test.js +69 -0
  263. package/dist/src/pathmode.settings.api.contract.test.js +9 -0
  264. package/dist/src/pkg.sidecar.contract.test.js +9 -3
  265. package/dist/src/platform/ExportProfile.js +86 -0
  266. package/dist/src/platform/MobileBudget.js +11 -0
  267. package/dist/src/platform/PlatformCapabilities.js +59 -0
  268. package/dist/src/platform/PlatformCapabilities.test.js +36 -0
  269. package/dist/src/platform/RenderMaterializer.js +33 -0
  270. package/dist/src/platform/RenderMaterializer.test.js +32 -0
  271. package/dist/src/query_backend.external_http.integration.test.js +410 -0
  272. package/dist/src/reader_renderer.js +404 -3
  273. package/dist/src/reader_renderer.test.js +87 -0
  274. package/dist/src/release.godot.mirror.contract.test.js +97 -0
  275. package/dist/src/resources/ResourceRegistry.js +263 -0
  276. package/dist/src/resources/ResourceRegistry.test.js +97 -0
  277. package/dist/src/resources/types.js +2 -0
  278. package/dist/src/routes/agentWorkspaceDiagnostics.js +173 -0
  279. package/dist/src/routes/index.js +19 -0
  280. package/dist/src/routes/knowledge.js +981 -0
  281. package/dist/src/routes/knowledgePayload.js +185 -0
  282. package/dist/src/routes/knowledgePayload.test.js +53 -0
  283. package/dist/src/routes/markdown.js +295 -0
  284. package/dist/src/routes/notemd.js +1321 -0
  285. package/dist/src/routes/registry.contract.test.js +133 -0
  286. package/dist/src/routes/registry.shadow.contract.test.js +22 -0
  287. package/dist/src/routes/render.js +248 -0
  288. package/dist/src/routes/runtimeRunbookRouteOps.js +149 -0
  289. package/dist/src/routes/runtimeRunbookRouteOps.test.js +194 -0
  290. package/dist/src/routes/settings.js +6 -0
  291. package/dist/src/routes/staticFiles.js +94 -0
  292. package/dist/src/routes/types.js +2 -0
  293. package/dist/src/runtime.capabilities.test.js +18 -2
  294. package/dist/src/runtime.transport.adapter.contract.test.js +81 -0
  295. package/dist/src/server.js +10342 -1325
  296. package/dist/src/server.migration.test.js +584 -10
  297. package/dist/src/server.port.fallback.contract.test.js +63 -0
  298. package/dist/src/session/SessionStateStore.js +81 -0
  299. package/dist/src/session/SessionStateStore.test.js +58 -0
  300. package/dist/src/session/types.js +2 -0
  301. package/dist/src/settings.runtime.contract.test.js +50 -0
  302. package/dist/src/shared/types.contract.test.js +107 -0
  303. package/dist/src/shared/types.js +22 -0
  304. package/dist/src/sidecar.build.lock.contract.test.js +201 -0
  305. package/dist/src/sidecar.freshness.contract.test.js +184 -0
  306. package/dist/src/sidecar.replacement.boundary.contract.test.js +131 -0
  307. package/dist/src/sidecar.supply.readiness.contract.test.js +155 -0
  308. package/dist/src/simulation.worker.offline.test.js +104 -0
  309. package/dist/src/source_manager.loadflow.test.js +46 -0
  310. package/dist/src/startup.layout.snapshot.contract.test.js +57 -0
  311. package/dist/src/storage.provider.capacitor.content.contract.test.js +4 -1
  312. package/dist/src/storage.provider.contract.test.js +152 -1
  313. package/dist/src/tauri.frontend.build.contract.test.js +68 -0
  314. package/dist/src/tauri.sidecar.cleanup.contract.test.js +21 -0
  315. package/dist/src/tauri.window.evidence.execution.test.js +68 -0
  316. package/dist/src/utils/RuntimePaths.js +10 -13
  317. package/dist/src/utils/RuntimePaths.test.js +27 -0
  318. package/dist/src/utils/platform.js +153 -0
  319. package/dist/src/windows.installer.build.test.js +109 -0
  320. package/dist/src/windows.installer.payload.test.js +76 -0
  321. package/dist/src/windows.installer.runtime.test.js +69 -0
  322. package/dist/src/workflows/WorkflowArtifactStore.js +96 -0
  323. package/dist/src/workflows/WorkflowArtifactStore.test.js +80 -0
  324. package/dist/src/workflows/types.js +2 -0
  325. package/dist/src/workspace/WorkspaceRegistry.js +135 -0
  326. package/dist/src/workspace/WorkspaceRegistry.test.js +29 -0
  327. package/dist/src/workspace/types.js +2 -0
  328. package/package.json +80 -15
@@ -697,6 +697,30 @@ div.tooltip {
697
697
  overflow: hidden;
698
698
  }
699
699
 
700
+ .settings-modal-overlay {
701
+ align-items: flex-start;
702
+ overflow-y: auto;
703
+ padding: 24px 16px;
704
+ box-sizing: border-box;
705
+ }
706
+
707
+ .modal-content-settings {
708
+ width: min(680px, 92vw);
709
+ max-width: 680px;
710
+ max-height: min(88vh, 860px);
711
+ margin: auto;
712
+ border-radius: 18px;
713
+ background:
714
+ linear-gradient(180deg, rgba(44, 51, 63, 0.98), rgba(28, 33, 42, 0.98));
715
+ border: 1px solid rgba(140, 156, 176, 0.22);
716
+ box-shadow: 0 22px 64px rgba(0, 0, 0, 0.45);
717
+ }
718
+
719
+ .modal-content-agent-settings {
720
+ width: min(760px, 94vw);
721
+ max-width: 760px;
722
+ }
723
+
700
724
  .modal-header {
701
725
  padding: 15px;
702
726
  background: #333;
@@ -729,6 +753,78 @@ div.tooltip {
729
753
  color: #e0e0e0;
730
754
  }
731
755
 
756
+ .settings-modal-body {
757
+ padding: 16px 18px 18px;
758
+ overflow-y: auto;
759
+ min-height: 0;
760
+ }
761
+
762
+ .settings-modal-subtitle {
763
+ margin: 6px 0 0;
764
+ color: #a8b4c3;
765
+ font-size: 0.9rem;
766
+ line-height: 1.45;
767
+ max-width: 54ch;
768
+ }
769
+
770
+ .settings-page-grid {
771
+ display: grid;
772
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
773
+ gap: 14px;
774
+ align-content: start;
775
+ }
776
+
777
+ .settings-page-grid-single {
778
+ grid-template-columns: minmax(0, 1fr);
779
+ }
780
+
781
+ .settings-card {
782
+ background: rgba(255, 255, 255, 0.03);
783
+ border: 1px solid rgba(255, 255, 255, 0.08);
784
+ border-radius: 16px;
785
+ padding: 14px;
786
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.02);
787
+ }
788
+
789
+ .settings-card-accent {
790
+ background:
791
+ linear-gradient(180deg, rgba(97, 218, 251, 0.06), rgba(116, 66, 16, 0.08)),
792
+ rgba(255, 255, 255, 0.03);
793
+ border-color: rgba(97, 218, 251, 0.14);
794
+ }
795
+
796
+ .settings-card-wide {
797
+ min-width: 0;
798
+ }
799
+
800
+ .settings-card-callout {
801
+ display: flex;
802
+ min-height: 100%;
803
+ flex-direction: column;
804
+ gap: 10px;
805
+ justify-content: space-between;
806
+ }
807
+
808
+ .settings-card-kicker {
809
+ font-size: 0.74rem;
810
+ letter-spacing: 0.08em;
811
+ text-transform: uppercase;
812
+ color: #8ecae6;
813
+ }
814
+
815
+ .settings-card-title {
816
+ margin: 0;
817
+ font-size: 1.08rem;
818
+ color: #f7fbff;
819
+ }
820
+
821
+ .settings-card-copy {
822
+ margin: 0;
823
+ color: #b8c2cf;
824
+ font-size: 0.9rem;
825
+ line-height: 1.5;
826
+ }
827
+
732
828
  .settings-group {
733
829
  margin-bottom: 20px;
734
830
  }
@@ -742,12 +838,17 @@ div.tooltip {
742
838
  padding-bottom: 5px;
743
839
  }
744
840
 
841
+ .settings-card .settings-group:last-child {
842
+ margin-bottom: 0;
843
+ }
844
+
745
845
  .setting-item {
746
846
  display: flex;
747
847
  align-items: center;
748
848
  justify-content: space-between;
749
849
  margin-bottom: 10px;
750
850
  font-size: 0.9rem;
851
+ gap: 12px;
751
852
  }
752
853
 
753
854
  .setting-item label {
@@ -766,6 +867,43 @@ div.tooltip {
766
867
  color: #61dafb;
767
868
  }
768
869
 
870
+ .setting-item-stack {
871
+ display: flex;
872
+ flex-direction: column;
873
+ align-items: stretch;
874
+ }
875
+
876
+ .setting-item-stack > label {
877
+ flex: none;
878
+ }
879
+
880
+ .settings-toggle {
881
+ display: flex;
882
+ align-items: center;
883
+ gap: 10px;
884
+ cursor: pointer;
885
+ }
886
+
887
+ .settings-select,
888
+ .settings-text-input,
889
+ .settings-number {
890
+ width: 100%;
891
+ background: rgba(14, 18, 24, 0.86);
892
+ color: #f8fbff;
893
+ border: 1px solid rgba(255, 255, 255, 0.14);
894
+ border-radius: 10px;
895
+ padding: 8px 10px;
896
+ box-sizing: border-box;
897
+ }
898
+
899
+ .settings-number {
900
+ width: 72px;
901
+ }
902
+
903
+ .settings-select-grow {
904
+ flex: 1 1 220px;
905
+ }
906
+
769
907
  .modal-footer {
770
908
  padding: 15px;
771
909
  background: #333;
@@ -775,6 +913,22 @@ div.tooltip {
775
913
  gap: 10px;
776
914
  }
777
915
 
916
+ .modal-footer-settings {
917
+ position: sticky;
918
+ bottom: 0;
919
+ z-index: 1;
920
+ background: rgba(33, 39, 49, 0.98);
921
+ border-top: 1px solid rgba(255, 255, 255, 0.08);
922
+ }
923
+
924
+ .settings-breadcrumb-row {
925
+ margin-bottom: 10px;
926
+ }
927
+
928
+ .btn-inline-nav {
929
+ padding-inline: 10px;
930
+ }
931
+
778
932
  .btn {
779
933
  padding: 6px 12px;
780
934
  border-radius: 4px;
@@ -879,6 +1033,7 @@ div.tooltip {
879
1033
  display: flex;
880
1034
  flex-direction: column;
881
1035
  overflow: hidden;
1036
+ min-height: 0;
882
1037
  transition: all 0.3s ease;
883
1038
  }
884
1039
 
@@ -944,6 +1099,76 @@ div.tooltip {
944
1099
  font-family: "Segoe UI", sans-serif;
945
1100
  line-height: 1.6;
946
1101
  flex: 1;
1102
+ min-height: 0;
1103
+ }
1104
+
1105
+ .reading-layout {
1106
+ display: flex;
1107
+ flex: 1;
1108
+ min-height: 0;
1109
+ overflow: hidden;
1110
+ }
1111
+
1112
+ .reading-main {
1113
+ display: flex;
1114
+ flex: 1 1 auto;
1115
+ flex-direction: column;
1116
+ min-width: 0;
1117
+ min-height: 0;
1118
+ }
1119
+
1120
+ .reading-diagnostics {
1121
+ display: flex;
1122
+ flex-wrap: wrap;
1123
+ gap: 8px;
1124
+ padding: 8px 18px 0;
1125
+ flex-shrink: 0;
1126
+ }
1127
+
1128
+ .reading-diagnostics-item {
1129
+ display: inline-flex;
1130
+ align-items: center;
1131
+ min-height: 24px;
1132
+ padding: 2px 8px;
1133
+ border-radius: 999px;
1134
+ background: rgba(60, 60, 60, 0.9);
1135
+ color: #cfd8e3;
1136
+ font-size: 0.78rem;
1137
+ }
1138
+
1139
+ .reading-outline {
1140
+ width: 240px;
1141
+ min-width: 200px;
1142
+ max-width: 280px;
1143
+ border-left: 1px solid #333;
1144
+ background: rgba(20, 20, 20, 0.82);
1145
+ display: flex;
1146
+ flex-direction: column;
1147
+ flex-shrink: 0;
1148
+ min-height: 0;
1149
+ }
1150
+
1151
+ .reading-outline-header {
1152
+ padding: 14px 16px 10px;
1153
+ color: #8ddcff;
1154
+ font-size: 0.82rem;
1155
+ font-weight: 700;
1156
+ letter-spacing: 0.04em;
1157
+ text-transform: uppercase;
1158
+ border-bottom: 1px solid #2e2e2e;
1159
+ }
1160
+
1161
+ .reading-outline-body {
1162
+ flex: 1;
1163
+ min-height: 0;
1164
+ overflow-y: auto;
1165
+ padding: 10px 12px 14px;
1166
+ }
1167
+
1168
+ .reading-outline-empty {
1169
+ color: #8c99a7;
1170
+ font-size: 0.82rem;
1171
+ line-height: 1.5;
947
1172
  }
948
1173
 
949
1174
  /* Content Styling */
@@ -1080,89 +1305,2606 @@ div.tooltip {
1080
1305
  background: #9b2c2c;
1081
1306
  }
1082
1307
 
1083
- /* --- Mobile Responsiveness (v0.9.2) --- */
1084
- @media (max-width: 768px) {
1085
- .notemd-embed-shell {
1086
- width: 100vw;
1087
- height: 100vh;
1088
- border-radius: 0;
1089
- border: none;
1090
- }
1308
+ .mermaid-render-failed {
1309
+ border-style: dashed;
1310
+ border-color: rgba(245, 158, 11, 0.65);
1311
+ background: rgba(36, 22, 6, 0.92);
1312
+ }
1091
1313
 
1092
- .notemd-embed-header {
1093
- height: 52px;
1094
- padding: 0 10px;
1095
- }
1314
+ .mermaid-render-notice {
1315
+ display: flex;
1316
+ flex-direction: column;
1317
+ gap: 8px;
1318
+ color: #f5f0e6;
1319
+ font-size: 0.92rem;
1320
+ }
1096
1321
 
1097
- .notemd-embed-close {
1098
- padding: 6px 10px;
1099
- }
1322
+ .mermaid-render-notice-title {
1323
+ font-weight: 700;
1324
+ color: #f6c453;
1325
+ }
1100
1326
 
1101
- .notemd-embed-frame {
1102
- height: calc(100% - 52px);
1103
- }
1327
+ .mermaid-render-notice-summary {
1328
+ color: #d6ccb8;
1329
+ line-height: 1.4;
1330
+ }
1104
1331
 
1105
- /* 1. Main Controls: Collapsible or Compact */
1106
- #controls {
1107
- width: 40px;
1108
- height: 40px;
1109
- overflow: hidden;
1110
- padding: 0;
1111
- border-radius: 50%;
1112
- transition: all 0.3s ease;
1113
- background: rgba(45, 45, 45, 0.95)
1114
- url('data:image/svg+xml;utf8,<svg fill="white" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/></svg>')
1115
- no-repeat center;
1116
- background-size: 24px;
1117
- cursor: pointer;
1118
- }
1332
+ .mermaid-render-notice-details {
1333
+ color: #cfc6b4;
1334
+ }
1119
1335
 
1120
- #controls.expanded {
1121
- width: 85%;
1122
- height: auto;
1123
- max-height: 80vh;
1124
- overflow-y: auto;
1125
- border-radius: 8px;
1126
- padding: 15px;
1127
- background: rgba(45, 45, 45, 0.98);
1128
- }
1336
+ .mermaid-render-notice-details summary {
1337
+ cursor: pointer;
1338
+ color: #f0d899;
1339
+ }
1129
1340
 
1130
- /* Hide internal elements when collapsed */
1131
- #controls:not(.expanded) > * {
1132
- opacity: 0;
1133
- pointer-events: none;
1134
- }
1341
+ .mermaid-render-notice-code {
1342
+ margin: 8px 0 0;
1343
+ max-height: 180px;
1344
+ overflow: auto;
1345
+ white-space: pre-wrap;
1346
+ word-break: break-word;
1347
+ font-size: 0.8rem;
1348
+ line-height: 1.45;
1349
+ padding: 10px;
1350
+ border-radius: 8px;
1351
+ background: rgba(0, 0, 0, 0.28);
1352
+ border: 1px solid rgba(255, 255, 255, 0.08);
1353
+ }
1135
1354
 
1136
- /* 2. Focus Mode Controls */
1137
- #focus-exit-btn {
1138
- top: auto;
1139
- bottom: 20px; /* Move to bottom for easier thumb reach */
1140
- width: 90%;
1141
- left: 50%;
1142
- flex-direction: column;
1143
- gap: 10px;
1144
- padding: 15px;
1145
- }
1355
+ .mermaid-inline-guard {
1356
+ display: flex;
1357
+ flex-direction: column;
1358
+ gap: 6px;
1359
+ margin: 10px 0;
1360
+ padding: 10px 12px;
1361
+ border-radius: 10px;
1362
+ border: 1px dashed rgba(245, 158, 11, 0.55);
1363
+ background: rgba(34, 24, 10, 0.88);
1364
+ color: #f3e7d3;
1365
+ }
1146
1366
 
1147
- #focus-exit-btn span {
1148
- font-size: 1.1rem;
1149
- text-align: center;
1150
- }
1367
+ .mermaid-inline-guard-title {
1368
+ font-weight: 700;
1369
+ color: #f6c453;
1370
+ }
1151
1371
 
1152
- #focus-exit-btn div {
1153
- width: 100%;
1154
- justify-content: space-between;
1155
- }
1372
+ .mermaid-inline-guard-summary {
1373
+ font-size: 0.86rem;
1374
+ line-height: 1.4;
1375
+ color: #e2d1b5;
1376
+ }
1156
1377
 
1157
- #focus-exit-btn button {
1158
- width: 100%;
1159
- padding: 10px;
1160
- }
1378
+ .mermaid-inline-guard-detail {
1379
+ font-size: 0.78rem;
1380
+ line-height: 1.35;
1381
+ color: #c9bea8;
1382
+ word-break: break-word;
1383
+ }
1161
1384
 
1162
- /* 3. Reading Window */
1163
- .reading-box.window-mode {
1164
- width: 95%;
1165
- height: 90%;
1385
+ .mermaid-error-toast-stack {
1386
+ position: fixed;
1387
+ right: 18px;
1388
+ bottom: 18px;
1389
+ z-index: 3400;
1390
+ display: flex;
1391
+ flex-direction: column;
1392
+ gap: 10px;
1393
+ align-items: flex-end;
1394
+ pointer-events: none;
1395
+ }
1396
+
1397
+ .mermaid-error-toast {
1398
+ width: min(420px, calc(100vw - 32px));
1399
+ padding: 12px 14px;
1400
+ border-radius: 12px;
1401
+ border: 1px solid rgba(245, 158, 11, 0.42);
1402
+ background: rgba(17, 12, 6, 0.94);
1403
+ box-shadow: 0 12px 32px rgba(0, 0, 0, 0.35);
1404
+ color: #f4ead7;
1405
+ pointer-events: none;
1406
+ }
1407
+
1408
+ .mermaid-error-toast-title {
1409
+ font-weight: 700;
1410
+ color: #f6c453;
1411
+ margin-bottom: 4px;
1412
+ }
1413
+
1414
+ .mermaid-error-toast-summary {
1415
+ font-size: 0.84rem;
1416
+ color: #e4d6ba;
1417
+ line-height: 1.35;
1418
+ }
1419
+
1420
+ .mermaid-error-toast-detail {
1421
+ margin-top: 6px;
1422
+ font-size: 0.74rem;
1423
+ color: #cdbfa6;
1424
+ line-height: 1.3;
1425
+ word-break: break-word;
1426
+ }
1427
+
1428
+ .settings-inline-row {
1429
+ display: flex;
1430
+ gap: 10px;
1431
+ align-items: center;
1432
+ flex-wrap: wrap;
1433
+ }
1434
+
1435
+ .settings-helper-block {
1436
+ margin-top: 8px;
1437
+ font-size: 0.78rem;
1438
+ line-height: 1.45;
1439
+ color: #aeb7c3;
1440
+ }
1441
+
1442
+ .settings-helper-code {
1443
+ font-family: Consolas, "Courier New", monospace;
1444
+ color: #d4dee8;
1445
+ word-break: break-all;
1446
+ }
1447
+
1448
+ .agent-workspace-backdrop {
1449
+ position: fixed;
1450
+ inset: 0;
1451
+ background: rgba(5, 7, 11, 0.58);
1452
+ backdrop-filter: blur(4px);
1453
+ z-index: 2590;
1454
+ opacity: 0;
1455
+ pointer-events: none;
1456
+ transition: opacity 0.24s ease;
1457
+ }
1458
+
1459
+ .agent-workspace-drawer {
1460
+ position: fixed;
1461
+ top: 14px;
1462
+ right: 14px;
1463
+ bottom: 14px;
1464
+ width: min(1100px, calc(100vw - 28px));
1465
+ transform: translateX(calc(100% + 24px));
1466
+ opacity: 0;
1467
+ pointer-events: none;
1468
+ transition:
1469
+ transform 0.26s ease,
1470
+ opacity 0.22s ease;
1471
+ z-index: 2600;
1472
+ }
1473
+
1474
+ body.agent-workspace-open .agent-workspace-backdrop {
1475
+ opacity: 1;
1476
+ pointer-events: auto;
1477
+ }
1478
+
1479
+ body.agent-workspace-open .agent-workspace-drawer {
1480
+ transform: translateX(0);
1481
+ opacity: 1;
1482
+ pointer-events: auto;
1483
+ }
1484
+
1485
+ .agent-workspace-drawer-frame {
1486
+ display: flex;
1487
+ flex-direction: column;
1488
+ width: 100%;
1489
+ height: 100%;
1490
+ min-height: 0;
1491
+ border-radius: 18px;
1492
+ overflow: hidden;
1493
+ background: rgba(11, 15, 21, 0.98);
1494
+ border: 1px solid rgba(97, 218, 251, 0.16);
1495
+ box-shadow:
1496
+ 0 18px 48px rgba(0, 0, 0, 0.42),
1497
+ 0 0 0 1px rgba(255, 255, 255, 0.03) inset;
1498
+ }
1499
+
1500
+ .agent-workspace-drawer-toolbar {
1501
+ display: grid;
1502
+ grid-template-columns: minmax(180px, 1fr) auto;
1503
+ align-items: center;
1504
+ gap: 12px;
1505
+ padding: 14px 18px;
1506
+ border-bottom: 1px solid rgba(255, 255, 255, 0.08);
1507
+ background:
1508
+ linear-gradient(135deg, rgba(116, 66, 16, 0.28), rgba(44, 82, 130, 0.22)),
1509
+ rgba(8, 11, 16, 0.92);
1510
+ }
1511
+
1512
+ .agent-workspace-drawer-heading {
1513
+ display: flex;
1514
+ flex-direction: column;
1515
+ gap: 3px;
1516
+ min-width: 0;
1517
+ }
1518
+
1519
+ .agent-workspace-drawer-title {
1520
+ color: #f7fafc;
1521
+ font-size: 1rem;
1522
+ font-weight: 700;
1523
+ }
1524
+
1525
+ .agent-workspace-drawer-subtitle {
1526
+ color: #aeb9c6;
1527
+ font-size: 0.82rem;
1528
+ }
1529
+
1530
+ .agent-workspace-drawer-close {
1531
+ justify-self: end;
1532
+ border: 1px solid rgba(255, 255, 255, 0.12);
1533
+ background: rgba(255, 255, 255, 0.04);
1534
+ color: #edf2f7;
1535
+ border-radius: 999px;
1536
+ padding: 8px 14px;
1537
+ cursor: pointer;
1538
+ }
1539
+
1540
+ .agent-workspace-shell {
1541
+ flex: 1;
1542
+ min-height: 0;
1543
+ display: grid;
1544
+ grid-template-columns: minmax(320px, 0.92fr) minmax(360px, 1.08fr);
1545
+ gap: 16px;
1546
+ padding: 16px;
1547
+ align-content: start;
1548
+ overflow-x: hidden;
1549
+ overflow-y: auto;
1550
+ overscroll-behavior: contain;
1551
+ scrollbar-gutter: stable;
1552
+ }
1553
+
1554
+ .agent-chat-pane,
1555
+ .agent-side-work-area,
1556
+ .agent-workspace-pane {
1557
+ min-height: 0;
1558
+ }
1559
+
1560
+ .agent-chat-pane,
1561
+ .agent-workspace-pane {
1562
+ background: rgba(255, 255, 255, 0.03);
1563
+ border: 1px solid rgba(255, 255, 255, 0.08);
1564
+ border-radius: 16px;
1565
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.16);
1566
+ }
1567
+
1568
+ .agent-chat-pane {
1569
+ display: flex;
1570
+ flex-direction: column;
1571
+ height: calc(100vh - 142px);
1572
+ padding: 16px;
1573
+ gap: 12px;
1574
+ overflow-x: hidden;
1575
+ overflow-y: auto;
1576
+ overscroll-behavior: contain;
1577
+ scrollbar-gutter: stable;
1578
+ }
1579
+
1580
+ .agent-chat-pane > * {
1581
+ flex-shrink: 0;
1582
+ }
1583
+
1584
+ .agent-pane-header,
1585
+ .agent-workspace-pane-header {
1586
+ display: flex;
1587
+ align-items: flex-start;
1588
+ justify-content: space-between;
1589
+ gap: 12px;
1590
+ }
1591
+
1592
+ .agent-pane-header h3,
1593
+ .agent-workspace-pane-header h4 {
1594
+ margin: 0;
1595
+ color: #f8fbff;
1596
+ }
1597
+
1598
+ .agent-pane-subtitle {
1599
+ color: #a6b4c3;
1600
+ font-size: 0.82rem;
1601
+ }
1602
+
1603
+ .agent-pane-field {
1604
+ display: flex;
1605
+ flex-direction: column;
1606
+ gap: 6px;
1607
+ }
1608
+
1609
+ .agent-scope-control,
1610
+ .agent-pane-field,
1611
+ .agent-pane-actions,
1612
+ .agent-api-status {
1613
+ flex: 0 0 auto;
1614
+ }
1615
+
1616
+ .agent-scope-control {
1617
+ display: grid;
1618
+ grid-template-columns: minmax(0, 1fr);
1619
+ gap: 6px;
1620
+ padding: 10px;
1621
+ border: 1px solid rgba(148, 163, 184, 0.18);
1622
+ border-radius: 8px;
1623
+ background: rgba(15, 23, 42, 0.92);
1624
+ backdrop-filter: blur(8px);
1625
+ }
1626
+
1627
+ .agent-scope-control--toolbar {
1628
+ grid-template-columns: auto minmax(0, 1fr);
1629
+ align-items: center;
1630
+ gap: 6px 10px;
1631
+ min-width: 0;
1632
+ padding: 8px 10px;
1633
+ background: rgba(2, 6, 12, 0.5);
1634
+ }
1635
+
1636
+ .agent-scope-control--workspace {
1637
+ grid-template-columns: minmax(94px, auto) minmax(0, 1fr);
1638
+ align-items: center;
1639
+ gap: 6px 10px;
1640
+ }
1641
+
1642
+ .agent-scope-control label {
1643
+ color: #dbeafe;
1644
+ font-size: 0.8rem;
1645
+ font-weight: 700;
1646
+ }
1647
+
1648
+ .agent-scope-control select {
1649
+ width: 100%;
1650
+ min-height: 44px;
1651
+ border: 1px solid rgba(125, 211, 252, 0.22);
1652
+ border-radius: 8px;
1653
+ background: rgba(2, 6, 12, 0.82);
1654
+ color: #f8fbff;
1655
+ padding: 9px 10px;
1656
+ box-sizing: border-box;
1657
+ }
1658
+
1659
+ .agent-scope-control--toolbar select {
1660
+ min-height: 38px;
1661
+ padding: 7px 9px;
1662
+ }
1663
+
1664
+ .agent-scope-summary {
1665
+ min-height: 18px;
1666
+ color: #93c5fd;
1667
+ font-size: 0.78rem;
1668
+ line-height: 1.35;
1669
+ overflow-wrap: anywhere;
1670
+ }
1671
+
1672
+ .agent-scope-control--toolbar .agent-scope-summary {
1673
+ grid-column: 1 / -1;
1674
+ min-height: 16px;
1675
+ font-size: 0.74rem;
1676
+ }
1677
+
1678
+ .agent-scope-control--workspace .agent-scope-summary {
1679
+ grid-column: 2;
1680
+ }
1681
+
1682
+ .agent-answer-language-control {
1683
+ display: flex;
1684
+ align-items: center;
1685
+ gap: 8px;
1686
+ margin: 8px 0 12px;
1687
+ color: var(--text-secondary, #9aa4b2);
1688
+ font-size: 0.78rem;
1689
+ }
1690
+
1691
+ .agent-answer-language-control select {
1692
+ min-width: 108px;
1693
+ padding: 4px 8px;
1694
+ border: 1px solid var(--border-subtle, #3d4652);
1695
+ border-radius: 4px;
1696
+ background: var(--surface-input, #1c232d);
1697
+ color: var(--text-primary, #e8edf3);
1698
+ }
1699
+
1700
+ .agent-answer-language-summary {
1701
+ color: var(--text-muted, #758195);
1702
+ }
1703
+
1704
+ .agent-response-mode-control {
1705
+ display: flex;
1706
+ align-items: center;
1707
+ gap: 8px;
1708
+ margin: 8px 0 12px;
1709
+ color: var(--text-secondary, #9aa4b2);
1710
+ font-size: 0.78rem;
1711
+ }
1712
+
1713
+ .agent-response-mode-control select {
1714
+ min-width: 112px;
1715
+ padding: 4px 8px;
1716
+ border: 1px solid var(--border-subtle, #3d4652);
1717
+ border-radius: 4px;
1718
+ background: var(--surface-input, #1c232d);
1719
+ color: var(--text-primary, #e8edf3);
1720
+ }
1721
+
1722
+ .agent-response-mode-summary {
1723
+ color: var(--text-muted, #758195);
1724
+ overflow-wrap: anywhere;
1725
+ }
1726
+
1727
+ .agent-response-budget-control {
1728
+ display: flex;
1729
+ align-items: center;
1730
+ gap: 8px;
1731
+ margin: 8px 0 12px;
1732
+ color: var(--text-secondary, #9aa4b2);
1733
+ font-size: 0.78rem;
1734
+ }
1735
+
1736
+ .agent-response-budget-control select {
1737
+ min-width: 132px;
1738
+ padding: 4px 8px;
1739
+ border: 1px solid var(--border-subtle, #3d4652);
1740
+ border-radius: 4px;
1741
+ background: var(--surface-input, #1c232d);
1742
+ color: var(--text-primary, #e8edf3);
1743
+ }
1744
+
1745
+ .agent-response-budget-summary {
1746
+ color: var(--text-muted, #758195);
1747
+ overflow-wrap: anywhere;
1748
+ }
1749
+
1750
+ .agent-chat-structured-answer-next-actions-toggle {
1751
+ width: 26px;
1752
+ height: 26px;
1753
+ min-width: 26px;
1754
+ margin: 8px 0 0 auto;
1755
+ padding: 0;
1756
+ border: 1px solid var(--border-subtle, #3d4652);
1757
+ border-radius: 50%;
1758
+ background: var(--surface-raised, #252e3a);
1759
+ color: var(--text-primary, #e8edf3);
1760
+ cursor: pointer;
1761
+ line-height: 24px;
1762
+ text-align: center;
1763
+ }
1764
+
1765
+ .agent-chat-structured-answer-next-actions-toggle:hover,
1766
+ .agent-chat-structured-answer-next-actions-toggle:focus-visible {
1767
+ border-color: var(--accent, #6ea8fe);
1768
+ outline: none;
1769
+ }
1770
+
1771
+ .agent-chat-structured-answer-next-actions {
1772
+ margin-top: 8px;
1773
+ padding-top: 8px;
1774
+ border-top: 1px solid var(--border-subtle, #3d4652);
1775
+ }
1776
+
1777
+ .agent-pane-field label {
1778
+ color: #cbd5e1;
1779
+ font-size: 0.84rem;
1780
+ }
1781
+
1782
+ .agent-pane-field input,
1783
+ .agent-pane-field textarea {
1784
+ width: 100%;
1785
+ border-radius: 12px;
1786
+ border: 1px solid rgba(255, 255, 255, 0.12);
1787
+ background: rgba(2, 6, 12, 0.66);
1788
+ color: #edf2f7;
1789
+ padding: 10px 12px;
1790
+ box-sizing: border-box;
1791
+ }
1792
+
1793
+ .agent-pane-field textarea {
1794
+ resize: vertical;
1795
+ min-height: 92px;
1796
+ }
1797
+
1798
+ .agent-pane-actions,
1799
+ .agent-pane-controls {
1800
+ display: flex;
1801
+ gap: 8px;
1802
+ flex-wrap: wrap;
1803
+ align-items: center;
1804
+ justify-content: flex-end;
1805
+ }
1806
+
1807
+ .agent-pane-actions button,
1808
+ .agent-pane-controls button,
1809
+ #btn-agent-workspace-send,
1810
+ #btn-open-agent-workspace {
1811
+ min-height: 44px;
1812
+ border: 1px solid rgba(255, 255, 255, 0.12);
1813
+ border-radius: 12px;
1814
+ cursor: pointer;
1815
+ }
1816
+
1817
+ .agent-pane-controls button {
1818
+ background: rgba(2, 6, 12, 0.52);
1819
+ color: #dbeafe;
1820
+ padding: 8px 12px;
1821
+ }
1822
+
1823
+ .agent-pane-controls button:hover,
1824
+ .agent-pane-controls button:focus-visible {
1825
+ border-color: rgba(125, 211, 252, 0.42);
1826
+ background: rgba(14, 116, 144, 0.2);
1827
+ outline: 2px solid rgba(125, 211, 252, 0.34);
1828
+ outline-offset: 2px;
1829
+ }
1830
+
1831
+ .agent-pane-close-button {
1832
+ width: 44px;
1833
+ padding: 0;
1834
+ border-radius: 999px;
1835
+ font-size: 1.15rem;
1836
+ line-height: 1;
1837
+ }
1838
+
1839
+ #btn-agent-workspace-send {
1840
+ background: linear-gradient(135deg, #2c5282, #744210);
1841
+ color: #fff8ed;
1842
+ padding: 10px 14px;
1843
+ }
1844
+
1845
+ .agent-api-status {
1846
+ min-height: 34px;
1847
+ display: flex;
1848
+ align-items: center;
1849
+ gap: 8px;
1850
+ padding: 7px 9px;
1851
+ border: 1px solid rgba(148, 163, 184, 0.18);
1852
+ border-radius: 8px;
1853
+ background: rgba(15, 23, 42, 0.46);
1854
+ color: #cbd5e1;
1855
+ font-size: 0.78rem;
1856
+ line-height: 1.35;
1857
+ }
1858
+
1859
+ .agent-api-status-dot {
1860
+ width: 8px;
1861
+ height: 8px;
1862
+ flex: 0 0 auto;
1863
+ border-radius: 999px;
1864
+ background: #94a3b8;
1865
+ }
1866
+
1867
+ .agent-api-status-label {
1868
+ color: #f8fbff;
1869
+ font-weight: 700;
1870
+ }
1871
+
1872
+ .agent-api-status-detail {
1873
+ min-width: 0;
1874
+ color: #9fb0c2;
1875
+ overflow-wrap: anywhere;
1876
+ }
1877
+
1878
+ .agent-api-status[data-api-state="pending"] .agent-api-status-dot {
1879
+ background: #facc15;
1880
+ }
1881
+
1882
+ .agent-api-status[data-api-state="ok"] .agent-api-status-dot {
1883
+ background: #22c55e;
1884
+ }
1885
+
1886
+ .agent-api-status[data-api-state="error"] {
1887
+ border-color: rgba(248, 113, 113, 0.34);
1888
+ }
1889
+
1890
+ .agent-api-status[data-api-state="error"] .agent-api-status-dot {
1891
+ background: #f87171;
1892
+ }
1893
+
1894
+ .agent-chat-messages,
1895
+ .agent-knowledge-points,
1896
+ .agent-workspace-pane-body {
1897
+ min-height: 0;
1898
+ overflow: auto;
1899
+ }
1900
+
1901
+ .agent-chat-messages {
1902
+ /* The transcript owns spare height even when optional controls are inserted. */
1903
+ flex: 1 0 240px;
1904
+ min-height: 128px;
1905
+ display: flex;
1906
+ flex-direction: column;
1907
+ gap: 10px;
1908
+ padding-right: 6px;
1909
+ overflow-y: auto;
1910
+ overscroll-behavior: contain;
1911
+ }
1912
+
1913
+ .agent-chat-message {
1914
+ padding: 10px 12px;
1915
+ border-radius: 14px;
1916
+ line-height: 1.48;
1917
+ white-space: pre-wrap;
1918
+ word-break: break-word;
1919
+ }
1920
+
1921
+ .agent-chat-message-rendered {
1922
+ white-space: normal;
1923
+ }
1924
+
1925
+ .agent-chat-message-user {
1926
+ align-self: flex-end;
1927
+ max-width: 92%;
1928
+ background: rgba(44, 82, 130, 0.34);
1929
+ color: #e2e8f0;
1930
+ }
1931
+
1932
+ .agent-chat-message-assistant,
1933
+ .agent-chat-message-system {
1934
+ align-self: stretch;
1935
+ background: rgba(255, 255, 255, 0.04);
1936
+ color: #edf2f7;
1937
+ }
1938
+
1939
+ .agent-chat-render-block + .agent-chat-render-block {
1940
+ margin-top: 12px;
1941
+ }
1942
+
1943
+ .agent-chat-markdown {
1944
+ color: #edf2f7;
1945
+ line-height: 1.62;
1946
+ white-space: normal;
1947
+ }
1948
+
1949
+ .agent-chat-markdown > :first-child {
1950
+ margin-top: 0;
1951
+ }
1952
+
1953
+ .agent-chat-markdown > :last-child {
1954
+ margin-bottom: 0;
1955
+ }
1956
+
1957
+ .agent-chat-markdown p {
1958
+ margin: 0.85rem 0;
1959
+ }
1960
+
1961
+ .agent-chat-markdown ul,
1962
+ .agent-chat-markdown ol {
1963
+ margin: 0.85rem 0;
1964
+ padding-left: 1.4rem;
1965
+ }
1966
+
1967
+ .agent-chat-markdown li + li {
1968
+ margin-top: 0.3rem;
1969
+ }
1970
+
1971
+ .agent-chat-markdown pre {
1972
+ margin: 0.85rem 0;
1973
+ padding: 12px 14px;
1974
+ border-radius: 12px;
1975
+ background: rgba(8, 12, 18, 0.92);
1976
+ overflow: auto;
1977
+ border: 1px solid rgba(255, 255, 255, 0.08);
1978
+ }
1979
+
1980
+ .agent-chat-markdown code {
1981
+ font-family: "Cascadia Code", "JetBrains Mono", Consolas, monospace;
1982
+ }
1983
+
1984
+ .agent-chat-markdown p code,
1985
+ .agent-chat-markdown li code,
1986
+ .agent-chat-markdown td code {
1987
+ padding: 2px 6px;
1988
+ border-radius: 8px;
1989
+ background: rgba(255, 255, 255, 0.08);
1990
+ }
1991
+
1992
+ .agent-chat-markdown blockquote {
1993
+ margin: 0.95rem 0;
1994
+ padding: 0.7rem 0.95rem;
1995
+ border-left: 3px solid rgba(97, 218, 251, 0.48);
1996
+ background: rgba(255, 255, 255, 0.04);
1997
+ border-radius: 0 10px 10px 0;
1998
+ color: #d8e2eb;
1999
+ }
2000
+
2001
+ .agent-chat-markdown table {
2002
+ width: 100%;
2003
+ border-collapse: collapse;
2004
+ margin: 1rem 0;
2005
+ font-size: 0.92rem;
2006
+ }
2007
+
2008
+ .agent-chat-markdown th,
2009
+ .agent-chat-markdown td {
2010
+ padding: 8px 10px;
2011
+ border: 1px solid rgba(255, 255, 255, 0.08);
2012
+ text-align: left;
2013
+ vertical-align: top;
2014
+ }
2015
+
2016
+ .agent-chat-markdown th {
2017
+ background: rgba(255, 255, 255, 0.06);
2018
+ }
2019
+
2020
+ .agent-chat-markdown img {
2021
+ max-width: 100%;
2022
+ border-radius: 10px;
2023
+ }
2024
+
2025
+ .agent-chat-inline-card,
2026
+ .agent-chat-inline-artifact {
2027
+ border-radius: 12px;
2028
+ border: 1px solid rgba(255, 255, 255, 0.08);
2029
+ background: rgba(8, 12, 18, 0.86);
2030
+ padding: 12px 14px;
2031
+ }
2032
+
2033
+ .agent-chat-inline-card-title,
2034
+ .agent-chat-inline-artifact-title {
2035
+ font-weight: 700;
2036
+ color: #f8fbff;
2037
+ }
2038
+
2039
+ .agent-chat-inline-card-summary,
2040
+ .agent-chat-inline-artifact-summary {
2041
+ margin-top: 6px;
2042
+ color: #c3cfdb;
2043
+ }
2044
+
2045
+ .agent-chat-structured-answer-card {
2046
+ display: grid;
2047
+ gap: 12px;
2048
+ background:
2049
+ linear-gradient(180deg, rgba(18, 26, 38, 0.94) 0%, rgba(8, 12, 18, 0.88) 100%);
2050
+ border-color: rgba(143, 226, 247, 0.18);
2051
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04);
2052
+ }
2053
+
2054
+ .agent-chat-structured-answer-direct {
2055
+ margin-top: 0;
2056
+ padding: 12px 14px;
2057
+ border-radius: 12px;
2058
+ background:
2059
+ linear-gradient(135deg, rgba(14, 116, 144, 0.22) 0%, rgba(30, 41, 59, 0.18) 100%);
2060
+ border: 1px solid rgba(125, 211, 252, 0.22);
2061
+ color: #f8fbff;
2062
+ font-size: 0.96rem;
2063
+ line-height: 1.62;
2064
+ font-weight: 600;
2065
+ }
2066
+
2067
+ .agent-chat-structured-answer-section {
2068
+ margin-top: 0;
2069
+ padding: 12px 14px;
2070
+ border-radius: 12px;
2071
+ border: 1px solid rgba(255, 255, 255, 0.06);
2072
+ background: rgba(255, 255, 255, 0.025);
2073
+ }
2074
+
2075
+ .agent-chat-structured-answer-section h1,
2076
+ .agent-chat-structured-answer-section h2,
2077
+ .agent-chat-structured-answer-section h3 {
2078
+ margin-top: 0;
2079
+ }
2080
+
2081
+ .agent-chat-structured-answer-section > :last-child {
2082
+ margin-bottom: 0;
2083
+ }
2084
+
2085
+ .agent-chat-structured-answer-overview {
2086
+ border-left: 3px solid rgba(148, 163, 184, 0.7);
2087
+ }
2088
+
2089
+ .agent-chat-structured-answer-explanation {
2090
+ border-left: 3px solid rgba(125, 211, 252, 0.78);
2091
+ background:
2092
+ linear-gradient(180deg, rgba(14, 116, 144, 0.08) 0%, rgba(255, 255, 255, 0.02) 100%);
2093
+ }
2094
+
2095
+ .agent-chat-structured-answer-evidence {
2096
+ border-left: 3px solid rgba(34, 197, 94, 0.78);
2097
+ background:
2098
+ linear-gradient(180deg, rgba(21, 128, 61, 0.1) 0%, rgba(255, 255, 255, 0.02) 100%);
2099
+ }
2100
+
2101
+ .agent-chat-structured-answer-next-actions {
2102
+ border-left: 3px solid rgba(245, 158, 11, 0.82);
2103
+ background:
2104
+ linear-gradient(180deg, rgba(146, 64, 14, 0.12) 0%, rgba(255, 255, 255, 0.02) 100%);
2105
+ }
2106
+
2107
+ .agent-chat-inline-card-list {
2108
+ list-style: none;
2109
+ margin: 10px 0 0;
2110
+ padding: 0;
2111
+ display: flex;
2112
+ flex-direction: column;
2113
+ gap: 10px;
2114
+ }
2115
+
2116
+ .agent-chat-inline-card-item {
2117
+ padding: 10px 12px;
2118
+ border-radius: 10px;
2119
+ background: rgba(255, 255, 255, 0.03);
2120
+ }
2121
+
2122
+ .agent-chat-inline-card-item-title {
2123
+ font-weight: 600;
2124
+ color: #eef4fb;
2125
+ }
2126
+
2127
+ .agent-chat-inline-artifact-details {
2128
+ margin-top: 10px;
2129
+ }
2130
+
2131
+ .agent-chat-inline-artifact-details summary {
2132
+ cursor: pointer;
2133
+ color: #8fe2f7;
2134
+ }
2135
+
2136
+ .agent-chat-inline-artifact-frame {
2137
+ width: 100%;
2138
+ min-height: 280px;
2139
+ margin-top: 10px;
2140
+ border: 1px solid rgba(255, 255, 255, 0.08);
2141
+ border-radius: 10px;
2142
+ background: #ffffff;
2143
+ }
2144
+
2145
+ .agent-chat-message-card {
2146
+ padding: 0;
2147
+ background: transparent;
2148
+ border: none;
2149
+ }
2150
+
2151
+ .agent-chat-card,
2152
+ .agent-pane-block {
2153
+ border-radius: 14px;
2154
+ border: 1px solid rgba(255, 255, 255, 0.08);
2155
+ background: rgba(10, 14, 20, 0.88);
2156
+ padding: 14px;
2157
+ }
2158
+
2159
+ .agent-chat-card-title,
2160
+ .agent-pane-title {
2161
+ font-weight: 700;
2162
+ color: #f8fbff;
2163
+ }
2164
+
2165
+ .agent-chat-card-summary,
2166
+ .agent-pane-summary,
2167
+ .agent-pane-meta,
2168
+ .agent-chat-card-list-meta {
2169
+ color: #c3cfdb;
2170
+ }
2171
+
2172
+ .agent-chat-card-section-title {
2173
+ margin-top: 12px;
2174
+ margin-bottom: 8px;
2175
+ color: #e5ecf4;
2176
+ font-weight: 600;
2177
+ }
2178
+
2179
+ .agent-pane-section-title {
2180
+ margin-top: 12px;
2181
+ margin-bottom: 8px;
2182
+ color: #e5ecf4;
2183
+ font-weight: 600;
2184
+ }
2185
+
2186
+ .agent-chat-card-list,
2187
+ .agent-pane-list {
2188
+ margin: 0;
2189
+ padding-left: 0;
2190
+ list-style: none;
2191
+ display: flex;
2192
+ flex-direction: column;
2193
+ gap: 10px;
2194
+ }
2195
+
2196
+ .agent-chat-card-list-item,
2197
+ .agent-pane-list-item {
2198
+ display: flex;
2199
+ gap: 10px;
2200
+ align-items: flex-start;
2201
+ padding: 10px 12px;
2202
+ border-radius: 12px;
2203
+ background: rgba(255, 255, 255, 0.03);
2204
+ }
2205
+
2206
+ .agent-pane-list-index {
2207
+ min-width: 24px;
2208
+ height: 24px;
2209
+ display: inline-flex;
2210
+ align-items: center;
2211
+ justify-content: center;
2212
+ border-radius: 999px;
2213
+ background: rgba(97, 218, 251, 0.12);
2214
+ color: #8fe2f7;
2215
+ font-size: 0.8rem;
2216
+ }
2217
+
2218
+ .agent-knowledge-points {
2219
+ min-height: 0;
2220
+ max-height: min(200px, 24vh);
2221
+ display: flex;
2222
+ flex-direction: column;
2223
+ gap: 10px;
2224
+ padding-right: 6px;
2225
+ overflow-y: auto;
2226
+ overscroll-behavior: contain;
2227
+ scrollbar-gutter: stable;
2228
+ }
2229
+
2230
+ .agent-chat-input-field textarea {
2231
+ min-height: 76px;
2232
+ max-height: min(150px, 22vh);
2233
+ }
2234
+
2235
+ .agent-knowledge-list-header {
2236
+ flex: 0 0 auto;
2237
+ position: sticky;
2238
+ top: 0;
2239
+ z-index: 2;
2240
+ display: flex;
2241
+ align-items: center;
2242
+ justify-content: space-between;
2243
+ gap: 10px;
2244
+ min-height: 44px;
2245
+ padding: 2px 0 6px;
2246
+ background: #111820;
2247
+ }
2248
+
2249
+ .agent-knowledge-list-title {
2250
+ color: #dbeafe;
2251
+ font-size: 0.82rem;
2252
+ font-weight: 800;
2253
+ }
2254
+
2255
+ .agent-knowledge-help {
2256
+ position: relative;
2257
+ flex: 0 0 auto;
2258
+ }
2259
+
2260
+ .agent-knowledge-help-button {
2261
+ width: 44px;
2262
+ min-height: 44px;
2263
+ border: 1px solid rgba(125, 211, 252, 0.26);
2264
+ border-radius: 999px;
2265
+ background: rgba(2, 6, 12, 0.64);
2266
+ color: #bae6fd;
2267
+ cursor: pointer;
2268
+ font-size: 1rem;
2269
+ font-weight: 800;
2270
+ line-height: 1;
2271
+ }
2272
+
2273
+ .agent-knowledge-help-button:hover,
2274
+ .agent-knowledge-help-button:focus-visible,
2275
+ .agent-knowledge-help[data-open="true"] .agent-knowledge-help-button {
2276
+ border-color: rgba(125, 211, 252, 0.58);
2277
+ background: rgba(14, 116, 144, 0.26);
2278
+ outline: 2px solid rgba(125, 211, 252, 0.36);
2279
+ outline-offset: 2px;
2280
+ }
2281
+
2282
+ .agent-knowledge-help-popover {
2283
+ position: absolute;
2284
+ right: 0;
2285
+ top: calc(100% + 8px);
2286
+ z-index: 10;
2287
+ width: min(320px, 70vw);
2288
+ padding: 10px 12px;
2289
+ border: 1px solid rgba(125, 211, 252, 0.26);
2290
+ border-radius: 8px;
2291
+ background: rgba(2, 6, 12, 0.96);
2292
+ box-shadow: 0 16px 36px rgba(0, 0, 0, 0.32);
2293
+ color: #dbeafe;
2294
+ font-size: 0.82rem;
2295
+ line-height: 1.5;
2296
+ }
2297
+
2298
+ .agent-knowledge-help-popover[hidden] {
2299
+ display: none !important;
2300
+ }
2301
+
2302
+ .agent-knowledge-card {
2303
+ position: relative;
2304
+ padding: 0;
2305
+ border: 1px solid rgba(148, 163, 184, 0.18);
2306
+ border-radius: 8px;
2307
+ background: rgba(15, 23, 42, 0.42);
2308
+ overflow: visible;
2309
+ }
2310
+
2311
+ .agent-knowledge-card-header {
2312
+ display: grid;
2313
+ grid-template-columns: minmax(0, 1fr) 44px;
2314
+ align-items: stretch;
2315
+ gap: 4px;
2316
+ }
2317
+
2318
+ .agent-knowledge-file-button {
2319
+ width: 100%;
2320
+ min-width: 0;
2321
+ min-height: 44px;
2322
+ display: flex;
2323
+ align-items: center;
2324
+ justify-content: flex-start;
2325
+ gap: 8px;
2326
+ border: 0;
2327
+ border-radius: 8px;
2328
+ background: transparent;
2329
+ color: #f8fbff;
2330
+ cursor: pointer;
2331
+ font-size: 0.9rem;
2332
+ font-weight: 700;
2333
+ line-height: 1.35;
2334
+ padding: 10px 12px;
2335
+ text-align: left;
2336
+ white-space: normal;
2337
+ overflow-wrap: anywhere;
2338
+ }
2339
+
2340
+ .agent-knowledge-menu-button {
2341
+ width: 44px;
2342
+ min-width: 44px;
2343
+ min-height: 44px;
2344
+ display: inline-flex;
2345
+ align-items: center;
2346
+ justify-content: center;
2347
+ border: 0;
2348
+ border-radius: 8px;
2349
+ background: transparent;
2350
+ color: #bae6fd;
2351
+ cursor: pointer;
2352
+ font-size: 1rem;
2353
+ font-weight: 800;
2354
+ line-height: 1;
2355
+ }
2356
+
2357
+ .agent-knowledge-card[data-selected="true"] .agent-knowledge-file-button,
2358
+ .agent-knowledge-card[data-selected="true"] .agent-knowledge-menu-button,
2359
+ .agent-knowledge-file-button:hover,
2360
+ .agent-knowledge-file-button:focus-visible,
2361
+ .agent-knowledge-file-button[aria-expanded="true"],
2362
+ .agent-knowledge-menu-button:hover,
2363
+ .agent-knowledge-menu-button:focus-visible,
2364
+ .agent-knowledge-menu-button[aria-expanded="true"] {
2365
+ background: rgba(125, 211, 252, 0.1);
2366
+ outline: 1px solid rgba(125, 211, 252, 0.28);
2367
+ outline-offset: -1px;
2368
+ }
2369
+
2370
+ .agent-knowledge-source-path {
2371
+ display: none;
2372
+ padding: 0 12px 10px;
2373
+ color: #93a4b8;
2374
+ font-size: 0.76rem;
2375
+ line-height: 1.4;
2376
+ overflow-wrap: anywhere;
2377
+ }
2378
+
2379
+ .agent-knowledge-actions {
2380
+ display: grid;
2381
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2382
+ gap: 6px;
2383
+ padding: 0 8px 8px;
2384
+ }
2385
+
2386
+ .agent-knowledge-actions .agent-knowledge-action-button {
2387
+ min-width: 0;
2388
+ min-height: 44px;
2389
+ border: 1px solid rgba(125, 211, 252, 0.2);
2390
+ border-radius: 8px;
2391
+ background: rgba(15, 23, 42, 0.52);
2392
+ color: #c7e8ff;
2393
+ cursor: pointer;
2394
+ font-size: 0.78rem;
2395
+ font-weight: 700;
2396
+ line-height: 1.2;
2397
+ padding: 8px 10px;
2398
+ text-align: center;
2399
+ overflow-wrap: anywhere;
2400
+ }
2401
+
2402
+ .agent-knowledge-actions .agent-knowledge-action-button:hover,
2403
+ .agent-knowledge-actions .agent-knowledge-action-button:focus-visible {
2404
+ background: rgba(14, 116, 144, 0.2);
2405
+ border-color: rgba(125, 211, 252, 0.38);
2406
+ outline: 2px solid rgba(125, 211, 252, 0.28);
2407
+ outline-offset: 1px;
2408
+ }
2409
+
2410
+ .agent-knowledge-actions .agent-knowledge-action-button:disabled {
2411
+ cursor: not-allowed;
2412
+ opacity: 0.46;
2413
+ }
2414
+
2415
+ .agent-knowledge-action-menu {
2416
+ position: absolute;
2417
+ right: 8px;
2418
+ top: calc(100% - 4px);
2419
+ z-index: 6;
2420
+ display: grid;
2421
+ gap: 6px;
2422
+ min-width: 172px;
2423
+ padding: 8px;
2424
+ border: 1px solid rgba(125, 211, 252, 0.26);
2425
+ border-radius: 8px;
2426
+ background: rgba(2, 6, 12, 0.96);
2427
+ box-shadow: 0 16px 36px rgba(0, 0, 0, 0.34);
2428
+ }
2429
+
2430
+ .agent-knowledge-action-menu[hidden] {
2431
+ display: none !important;
2432
+ }
2433
+
2434
+ .agent-knowledge-action-menu button {
2435
+ width: 100%;
2436
+ min-height: 40px;
2437
+ border: 1px solid rgba(148, 163, 184, 0.22);
2438
+ border-radius: 8px;
2439
+ background: rgba(15, 23, 42, 0.74);
2440
+ color: #dbeafe;
2441
+ cursor: pointer;
2442
+ padding: 8px 10px;
2443
+ text-align: left;
2444
+ white-space: nowrap;
2445
+ }
2446
+
2447
+ .agent-knowledge-action-menu button:hover,
2448
+ .agent-knowledge-action-menu button:focus-visible {
2449
+ background: rgba(14, 116, 144, 0.22);
2450
+ border-color: rgba(125, 211, 252, 0.38);
2451
+ }
2452
+
2453
+ .agent-knowledge-action-menu button:disabled {
2454
+ cursor: not-allowed;
2455
+ opacity: 0.46;
2456
+ }
2457
+
2458
+ .agent-knowledge-preview[hidden] {
2459
+ display: none !important;
2460
+ }
2461
+
2462
+ .agent-knowledge-preview {
2463
+ padding: 0 12px 12px;
2464
+ }
2465
+
2466
+ .agent-knowledge-rendered-markdown,
2467
+ .agent-knowledge-preview-loading,
2468
+ .agent-knowledge-preview-fallback {
2469
+ border: 1px solid rgba(148, 163, 184, 0.16);
2470
+ border-radius: 8px;
2471
+ background: rgba(2, 6, 12, 0.46);
2472
+ padding: 12px;
2473
+ }
2474
+
2475
+ .agent-knowledge-rendered-markdown {
2476
+ color: #dbe7f3;
2477
+ font-size: 0.88rem;
2478
+ line-height: 1.6;
2479
+ }
2480
+
2481
+ .agent-knowledge-rendered-markdown :is(h1, h2, h3, h4, h5, h6) {
2482
+ color: #f8fbff;
2483
+ }
2484
+
2485
+ .agent-knowledge-preview-loading,
2486
+ .agent-knowledge-preview-fallback {
2487
+ color: #cbd5e1;
2488
+ font-size: 0.84rem;
2489
+ line-height: 1.55;
2490
+ }
2491
+
2492
+ .agent-knowledge-preview-fallback-text {
2493
+ color: #dbe7f3;
2494
+ }
2495
+
2496
+ .agent-knowledge-preview-path {
2497
+ margin-top: 8px;
2498
+ color: #93a4b8;
2499
+ font-size: 0.76rem;
2500
+ line-height: 1.35;
2501
+ overflow-wrap: anywhere;
2502
+ }
2503
+
2504
+ .agent-knowledge-empty,
2505
+ .agent-pane-empty {
2506
+ padding: 14px;
2507
+ border-radius: 12px;
2508
+ border: 1px dashed rgba(255, 255, 255, 0.12);
2509
+ color: #a9b6c4;
2510
+ background: rgba(255, 255, 255, 0.02);
2511
+ }
2512
+
2513
+ .agent-knowledge-hit-list {
2514
+ margin-top: 10px;
2515
+ display: grid;
2516
+ gap: 8px;
2517
+ }
2518
+
2519
+ .agent-knowledge-hit-heading {
2520
+ color: #cbd5e1;
2521
+ font-size: 0.78rem;
2522
+ font-weight: 700;
2523
+ text-transform: uppercase;
2524
+ letter-spacing: 0;
2525
+ }
2526
+
2527
+ .agent-knowledge-hit {
2528
+ padding: 8px 10px;
2529
+ border: 1px solid rgba(148, 163, 184, 0.18);
2530
+ border-radius: 8px;
2531
+ background: rgba(15, 23, 42, 0.46);
2532
+ }
2533
+
2534
+ .agent-knowledge-hit-title {
2535
+ color: #f8fbff;
2536
+ font-size: 0.84rem;
2537
+ font-weight: 700;
2538
+ }
2539
+
2540
+ .agent-knowledge-hit-snippet {
2541
+ margin-top: 4px;
2542
+ color: #dbe7f3;
2543
+ font-size: 0.82rem;
2544
+ line-height: 1.48;
2545
+ }
2546
+
2547
+ .agent-knowledge-hit-meta {
2548
+ margin-top: 5px;
2549
+ color: #93a4b8;
2550
+ font-size: 0.76rem;
2551
+ line-height: 1.35;
2552
+ }
2553
+
2554
+ .agent-focus-hit-list {
2555
+ margin-top: 14px;
2556
+ display: grid;
2557
+ gap: 10px;
2558
+ }
2559
+
2560
+ .agent-focus-hit-heading {
2561
+ color: #dbeafe;
2562
+ font-size: 0.8rem;
2563
+ font-weight: 700;
2564
+ }
2565
+
2566
+ .agent-focus-relation-map {
2567
+ display: grid;
2568
+ gap: 8px;
2569
+ border: 1px solid rgba(125, 211, 252, 0.18);
2570
+ border-radius: 8px;
2571
+ background: rgba(14, 116, 144, 0.1);
2572
+ padding: 10px 12px;
2573
+ }
2574
+
2575
+ .agent-focus-relation-map--focus-mode {
2576
+ gap: 0;
2577
+ border-color: rgba(148, 163, 184, 0.16);
2578
+ background: transparent;
2579
+ padding: 0;
2580
+ }
2581
+
2582
+ .agent-focus-relation-map--focus-mode .agent-focus-mode-preview {
2583
+ min-height: min(72vh, 760px);
2584
+ }
2585
+
2586
+ .agent-focus-relation-kinds {
2587
+ color: #93c5fd;
2588
+ font-size: 0.76rem;
2589
+ line-height: 1.35;
2590
+ }
2591
+
2592
+ .agent-focus-relation-graph {
2593
+ position: relative;
2594
+ min-height: 220px;
2595
+ overflow: hidden;
2596
+ border: 1px solid rgba(148, 163, 184, 0.18);
2597
+ border-radius: 8px;
2598
+ background: rgba(2, 6, 12, 0.34);
2599
+ }
2600
+
2601
+ .agent-focus-relation-graph-lines {
2602
+ position: absolute;
2603
+ inset: 0;
2604
+ width: 100%;
2605
+ height: 100%;
2606
+ }
2607
+
2608
+ .agent-focus-relation-graph-edge {
2609
+ stroke: rgba(125, 211, 252, 0.42);
2610
+ stroke-width: 0.9;
2611
+ vector-effect: non-scaling-stroke;
2612
+ }
2613
+
2614
+ .agent-focus-relation-graph-lines marker path {
2615
+ fill: rgba(125, 211, 252, 0.72);
2616
+ }
2617
+
2618
+ .agent-focus-relation-graph-node {
2619
+ position: absolute;
2620
+ max-width: min(38%, 190px);
2621
+ transform: translate(-50%, -50%);
2622
+ border: 1px solid rgba(148, 163, 184, 0.28);
2623
+ border-radius: 8px;
2624
+ background: rgba(15, 23, 42, 0.96);
2625
+ color: #dbeafe;
2626
+ font-size: 0.72rem;
2627
+ font-weight: 650;
2628
+ line-height: 1.25;
2629
+ padding: 7px 9px;
2630
+ text-align: center;
2631
+ overflow: hidden;
2632
+ text-overflow: ellipsis;
2633
+ overflow-wrap: anywhere;
2634
+ display: -webkit-box;
2635
+ -webkit-box-orient: vertical;
2636
+ -webkit-line-clamp: 2;
2637
+ }
2638
+
2639
+ .agent-focus-relation-graph-node--anchor {
2640
+ border-color: rgba(251, 191, 36, 0.62);
2641
+ background: rgba(120, 53, 15, 0.88);
2642
+ color: #fef3c7;
2643
+ }
2644
+
2645
+ .agent-focus-relation-graph-node--source {
2646
+ border-color: rgba(45, 212, 191, 0.44);
2647
+ }
2648
+
2649
+ .agent-focus-relation-graph-node--target {
2650
+ border-color: rgba(248, 113, 113, 0.44);
2651
+ }
2652
+
2653
+ .agent-focus-relation-graph-node--incoming {
2654
+ border-color: rgba(45, 212, 191, 0.44);
2655
+ }
2656
+
2657
+ .agent-focus-relation-graph-node--outgoing {
2658
+ border-color: rgba(248, 113, 113, 0.44);
2659
+ }
2660
+
2661
+ .agent-focus-relation-graph-node--related {
2662
+ border-color: rgba(147, 197, 253, 0.34);
2663
+ }
2664
+
2665
+ .agent-focus-mode-preview {
2666
+ position: relative;
2667
+ min-height: 320px;
2668
+ overflow: hidden;
2669
+ border: 1px solid rgba(148, 163, 184, 0.18);
2670
+ border-radius: 8px;
2671
+ background: #202020;
2672
+ isolation: isolate;
2673
+ }
2674
+
2675
+ .agent-focus-mode-preview--hosted {
2676
+ border: 0;
2677
+ border-radius: 0;
2678
+ }
2679
+
2680
+ .agent-focus-mode-hosted-shell {
2681
+ position: relative;
2682
+ min-height: min(58vh, 640px);
2683
+ overflow: hidden;
2684
+ border-radius: 8px;
2685
+ background: #202020;
2686
+ isolation: isolate;
2687
+ }
2688
+
2689
+ .agent-focus-mode-viewport {
2690
+ position: relative;
2691
+ min-height: min(58vh, 640px);
2692
+ overflow: hidden;
2693
+ cursor: grab;
2694
+ touch-action: none;
2695
+ }
2696
+
2697
+ .agent-focus-mode-viewport.is-panning {
2698
+ cursor: grabbing;
2699
+ }
2700
+
2701
+ .agent-focus-mode-viewport .agent-focus-mode-preview--hosted {
2702
+ min-height: inherit;
2703
+ height: 100%;
2704
+ transform:
2705
+ translate(var(--agent-focus-pan-x, 0px), var(--agent-focus-pan-y, 0px))
2706
+ scale(var(--agent-focus-zoom, 1));
2707
+ transform-origin: 0 0;
2708
+ will-change: transform;
2709
+ }
2710
+
2711
+ .agent-focus-mode-pane-controls {
2712
+ position: absolute;
2713
+ top: 8px;
2714
+ right: 8px;
2715
+ z-index: 12;
2716
+ display: inline-flex;
2717
+ align-items: center;
2718
+ gap: 6px;
2719
+ padding: 4px;
2720
+ border: 1px solid rgba(148, 163, 184, 0.18);
2721
+ border-radius: 8px;
2722
+ background: rgba(2, 6, 12, 0.72);
2723
+ backdrop-filter: blur(8px);
2724
+ }
2725
+
2726
+ .agent-focus-mode-icon-button {
2727
+ appearance: none;
2728
+ display: inline-flex;
2729
+ align-items: center;
2730
+ justify-content: center;
2731
+ width: 32px;
2732
+ height: 32px;
2733
+ border: 1px solid rgba(125, 211, 252, 0.26);
2734
+ border-radius: 8px;
2735
+ background: rgba(15, 23, 42, 0.82);
2736
+ color: #dbeafe;
2737
+ cursor: pointer;
2738
+ font-size: 1rem;
2739
+ font-weight: 900;
2740
+ line-height: 1;
2741
+ }
2742
+
2743
+ .agent-focus-mode-icon-button:hover {
2744
+ border-color: rgba(125, 211, 252, 0.54);
2745
+ background: rgba(30, 64, 175, 0.58);
2746
+ }
2747
+
2748
+ .agent-focus-mode-icon-button:focus {
2749
+ outline: none;
2750
+ }
2751
+
2752
+ .agent-focus-mode-icon-button:focus-visible {
2753
+ outline: 2px solid rgba(125, 211, 252, 0.95);
2754
+ outline-offset: 2px;
2755
+ }
2756
+
2757
+ .agent-focus-mode-history-control {
2758
+ position: relative;
2759
+ }
2760
+
2761
+ .agent-focus-mode-history-menu {
2762
+ position: absolute;
2763
+ top: calc(100% + 6px);
2764
+ right: 0;
2765
+ display: grid;
2766
+ gap: 2px;
2767
+ width: min(220px, 54vw);
2768
+ max-height: min(260px, 42vh);
2769
+ overflow: auto;
2770
+ border: 1px solid rgba(148, 163, 184, 0.22);
2771
+ border-radius: 8px;
2772
+ background: rgba(15, 23, 42, 0.96);
2773
+ box-shadow: 0 18px 36px rgba(0, 0, 0, 0.28);
2774
+ padding: 6px;
2775
+ }
2776
+
2777
+ .agent-focus-mode-history-menu[hidden] {
2778
+ display: none;
2779
+ }
2780
+
2781
+ .agent-focus-mode-history-item {
2782
+ appearance: none;
2783
+ min-width: 0;
2784
+ border: 0;
2785
+ border-radius: 6px;
2786
+ background: transparent;
2787
+ color: #dbeafe;
2788
+ cursor: pointer;
2789
+ font-size: 0.78rem;
2790
+ font-weight: 750;
2791
+ line-height: 1.25;
2792
+ overflow: hidden;
2793
+ padding: 7px 8px;
2794
+ text-align: left;
2795
+ text-overflow: ellipsis;
2796
+ white-space: nowrap;
2797
+ }
2798
+
2799
+ .agent-focus-mode-history-item:hover,
2800
+ .agent-focus-mode-history-item[data-agent-focus-history-current="true"] {
2801
+ background: rgba(37, 99, 235, 0.28);
2802
+ }
2803
+
2804
+ .agent-focus-mode-history-empty {
2805
+ color: #94a3b8;
2806
+ font-size: 0.76rem;
2807
+ line-height: 1.35;
2808
+ padding: 7px 8px;
2809
+ }
2810
+
2811
+ .agent-focus-mode-context {
2812
+ position: absolute;
2813
+ inset: 0;
2814
+ z-index: 0;
2815
+ opacity: 0.34;
2816
+ filter: grayscale(0.4);
2817
+ }
2818
+
2819
+ .agent-focus-mode-context-node {
2820
+ position: absolute;
2821
+ transform: translate(-50%, -50%);
2822
+ color: rgba(203, 213, 225, 0.32);
2823
+ font-size: 0.72rem;
2824
+ white-space: nowrap;
2825
+ }
2826
+
2827
+ .agent-focus-mode-context-node--projection {
2828
+ display: inline-flex;
2829
+ align-items: center;
2830
+ gap: 5px;
2831
+ max-width: 190px;
2832
+ color: rgba(203, 213, 225, 0.34);
2833
+ font-size: 0.64rem;
2834
+ line-height: 1.15;
2835
+ }
2836
+
2837
+ .agent-focus-mode-context-dot {
2838
+ display: inline-block;
2839
+ width: 9px;
2840
+ height: 9px;
2841
+ flex: 0 0 auto;
2842
+ border-radius: 999px;
2843
+ background: rgba(148, 163, 184, 0.46);
2844
+ box-shadow: 0 0 0 2px rgba(148, 163, 184, 0.12);
2845
+ }
2846
+
2847
+ .agent-focus-mode-context-label {
2848
+ min-width: 0;
2849
+ overflow: hidden;
2850
+ text-overflow: ellipsis;
2851
+ white-space: nowrap;
2852
+ }
2853
+
2854
+ .agent-focus-mode-toolbar {
2855
+ position: absolute;
2856
+ left: 14px;
2857
+ right: 14px;
2858
+ top: 12px;
2859
+ z-index: 6;
2860
+ display: flex;
2861
+ align-items: center;
2862
+ justify-content: space-between;
2863
+ gap: 12px;
2864
+ min-height: 52px;
2865
+ border: 1px solid rgba(103, 232, 249, 0.36);
2866
+ border-radius: 8px;
2867
+ background: rgba(32, 32, 32, 0.82);
2868
+ box-shadow: 0 12px 28px rgba(0, 0, 0, 0.18);
2869
+ color: #dbeafe;
2870
+ padding: 10px 14px;
2871
+ pointer-events: none;
2872
+ }
2873
+
2874
+ .agent-focus-mode-toolbar-node {
2875
+ display: grid;
2876
+ gap: 2px;
2877
+ min-width: 0;
2878
+ }
2879
+
2880
+ .agent-focus-mode-toolbar-title {
2881
+ min-width: 0;
2882
+ color: #61dafb;
2883
+ font-size: 0.95rem;
2884
+ font-weight: 900;
2885
+ line-height: 1.18;
2886
+ overflow: hidden;
2887
+ text-overflow: ellipsis;
2888
+ white-space: nowrap;
2889
+ }
2890
+
2891
+ .agent-focus-mode-toolbar-stats {
2892
+ color: #aeb8c5;
2893
+ font-size: 0.72rem;
2894
+ font-weight: 700;
2895
+ line-height: 1.2;
2896
+ white-space: nowrap;
2897
+ }
2898
+
2899
+ .agent-focus-mode-toolbar-controls {
2900
+ display: flex;
2901
+ align-items: center;
2902
+ justify-content: flex-end;
2903
+ flex-wrap: wrap;
2904
+ gap: 8px;
2905
+ }
2906
+
2907
+ .agent-focus-mode-toolbar-control {
2908
+ display: inline-flex;
2909
+ align-items: center;
2910
+ min-height: 28px;
2911
+ border: 1px solid rgba(148, 163, 184, 0.22);
2912
+ border-radius: 6px;
2913
+ background: rgba(15, 23, 42, 0.48);
2914
+ color: #cbd5e1;
2915
+ font-size: 0.72rem;
2916
+ font-weight: 750;
2917
+ line-height: 1.2;
2918
+ padding: 5px 8px;
2919
+ white-space: nowrap;
2920
+ }
2921
+
2922
+ .agent-focus-mode-lines {
2923
+ position: absolute;
2924
+ inset: 0;
2925
+ z-index: 1;
2926
+ width: 100%;
2927
+ height: 100%;
2928
+ }
2929
+
2930
+ .agent-focus-mode-preview--edge-hidden .agent-focus-mode-lines {
2931
+ display: none;
2932
+ }
2933
+
2934
+ .agent-focus-mode-edge {
2935
+ stroke: rgba(226, 232, 240, 0.2);
2936
+ stroke-width: 1;
2937
+ vector-effect: non-scaling-stroke;
2938
+ }
2939
+
2940
+ .agent-focus-mode-edge--incoming {
2941
+ stroke: rgba(248, 113, 113, 0.38);
2942
+ }
2943
+
2944
+ .agent-focus-mode-edge--outgoing {
2945
+ stroke: rgba(45, 212, 191, 0.4);
2946
+ }
2947
+
2948
+ .agent-focus-mode-edge--associated {
2949
+ stroke: rgba(203, 213, 225, 0.24);
2950
+ }
2951
+
2952
+ .agent-focus-mode-cluster-label {
2953
+ position: absolute;
2954
+ left: 50%;
2955
+ z-index: 3;
2956
+ transform: translateX(-50%);
2957
+ color: #67e8f9;
2958
+ font-size: 1.02rem;
2959
+ font-weight: 900;
2960
+ letter-spacing: 0;
2961
+ text-shadow: 0 0 18px rgba(34, 211, 238, 0.24);
2962
+ white-space: nowrap;
2963
+ }
2964
+
2965
+ .agent-focus-mode-cluster-label--continue {
2966
+ top: 10px;
2967
+ }
2968
+
2969
+ .agent-focus-mode-cluster-label--support {
2970
+ bottom: 14px;
2971
+ }
2972
+
2973
+ .agent-focus-mode-cluster {
2974
+ position: absolute;
2975
+ inset: 0;
2976
+ z-index: 2;
2977
+ pointer-events: none;
2978
+ }
2979
+
2980
+ .agent-focus-mode-node {
2981
+ position: absolute;
2982
+ transform: translate(-50%, -50%);
2983
+ box-sizing: border-box;
2984
+ display: inline-flex;
2985
+ align-items: center;
2986
+ justify-content: center;
2987
+ max-width: min(30%, 136px);
2988
+ min-width: 44px;
2989
+ min-height: 44px;
2990
+ border: 2px solid rgba(255, 255, 255, 0.8);
2991
+ border-radius: 999px;
2992
+ color: #f8fbff;
2993
+ font-size: 0.8rem;
2994
+ font-weight: 700;
2995
+ line-height: 1.2;
2996
+ padding: 6px 12px;
2997
+ text-align: center;
2998
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.38);
2999
+ overflow-wrap: anywhere;
3000
+ }
3001
+
3002
+ button.agent-focus-mode-node {
3003
+ appearance: none;
3004
+ cursor: pointer;
3005
+ pointer-events: auto;
3006
+ transition:
3007
+ border-color 180ms ease,
3008
+ box-shadow 180ms ease,
3009
+ filter 180ms ease;
3010
+ }
3011
+
3012
+ button.agent-focus-mode-node:hover {
3013
+ filter: brightness(1.08);
3014
+ }
3015
+
3016
+ button.agent-focus-mode-node:focus {
3017
+ outline: none;
3018
+ }
3019
+
3020
+ button.agent-focus-mode-node:focus-visible {
3021
+ outline: 2px solid rgba(125, 211, 252, 0.95);
3022
+ outline-offset: 3px;
3023
+ }
3024
+
3025
+ button.agent-focus-mode-node:active {
3026
+ filter: brightness(0.96);
3027
+ }
3028
+
3029
+ .agent-focus-mode-node--anchor {
3030
+ z-index: 4;
3031
+ width: 78px;
3032
+ min-height: 78px;
3033
+ padding: 8px;
3034
+ border-color: rgba(255, 255, 255, 0.9);
3035
+ background: #ffd60a;
3036
+ box-shadow:
3037
+ 0 0 0 18px rgba(255, 214, 10, 0.1),
3038
+ 0 0 0 36px rgba(255, 214, 10, 0.04);
3039
+ color: #1f1300;
3040
+ font-size: 0.74rem;
3041
+ }
3042
+
3043
+ .agent-focus-mode-node--continue {
3044
+ background: #2dd4bf;
3045
+ }
3046
+
3047
+ .agent-focus-mode-node--support {
3048
+ background: #fb7185;
3049
+ }
3050
+
3051
+ .agent-focus-mode-preview--projection {
3052
+ min-height: min(72vh, 760px);
3053
+ background:
3054
+ radial-gradient(circle at 50% 50%, rgba(255, 214, 10, 0.08), transparent 34%),
3055
+ #202020;
3056
+ }
3057
+
3058
+ .agent-focus-mode-viewport .agent-focus-mode-preview--projection {
3059
+ min-height: inherit;
3060
+ }
3061
+
3062
+ .agent-focus-mode-cluster-label--projection {
3063
+ bottom: auto;
3064
+ color: rgba(103, 232, 249, 0.92);
3065
+ font-size: 0.92rem;
3066
+ }
3067
+
3068
+ .agent-focus-mode-node--projection {
3069
+ width: 44px;
3070
+ min-width: 44px;
3071
+ height: 44px;
3072
+ min-height: 44px;
3073
+ max-width: none;
3074
+ border: 0;
3075
+ background: transparent;
3076
+ color: #e5e7eb;
3077
+ padding: 0;
3078
+ overflow: visible;
3079
+ text-shadow: none;
3080
+ }
3081
+
3082
+ .agent-focus-mode-node--projection:hover .agent-focus-mode-node-dot,
3083
+ .agent-focus-mode-node--projection:focus-visible .agent-focus-mode-node-dot {
3084
+ box-shadow:
3085
+ 0 0 0 4px rgba(125, 211, 252, 0.22),
3086
+ 0 0 18px rgba(125, 211, 252, 0.24);
3087
+ }
3088
+
3089
+ .agent-focus-mode-node-dot {
3090
+ position: absolute;
3091
+ left: 50%;
3092
+ top: 50%;
3093
+ width: 16px;
3094
+ height: 16px;
3095
+ border-radius: 999px;
3096
+ transform: translate(-50%, -50%);
3097
+ background: #94a3b8;
3098
+ border: 1.5px solid rgba(255, 255, 255, 0.72);
3099
+ }
3100
+
3101
+ .agent-focus-mode-node-label {
3102
+ position: absolute;
3103
+ left: 50%;
3104
+ top: calc(50% + 15px);
3105
+ width: max-content;
3106
+ max-width: 150px;
3107
+ transform: translateX(-50%);
3108
+ color: #cbd5e1;
3109
+ font-size: 0.72rem;
3110
+ font-weight: 600;
3111
+ line-height: 1.2;
3112
+ white-space: nowrap;
3113
+ overflow: hidden;
3114
+ text-overflow: ellipsis;
3115
+ text-align: center;
3116
+ pointer-events: none;
3117
+ }
3118
+
3119
+ .agent-focus-mode-node--projection.agent-focus-mode-node--anchor {
3120
+ width: 72px;
3121
+ min-width: 72px;
3122
+ height: 72px;
3123
+ min-height: 72px;
3124
+ background: transparent;
3125
+ color: #fef3c7;
3126
+ box-shadow: none;
3127
+ }
3128
+
3129
+ .agent-focus-mode-node--projection.agent-focus-mode-node--anchor .agent-focus-mode-node-dot {
3130
+ width: 50px;
3131
+ height: 50px;
3132
+ background: #ffd700;
3133
+ border: 3px solid rgba(255, 255, 255, 0.92);
3134
+ box-shadow:
3135
+ 0 0 0 14px rgba(255, 215, 0, 0.11),
3136
+ 0 0 0 28px rgba(255, 215, 0, 0.05);
3137
+ }
3138
+
3139
+ .agent-focus-mode-node--projection.agent-focus-mode-node--anchor .agent-focus-mode-node-label {
3140
+ top: calc(50% + 31px);
3141
+ color: #ffffff;
3142
+ font-size: 0.84rem;
3143
+ font-weight: 800;
3144
+ max-width: 180px;
3145
+ }
3146
+
3147
+ .agent-focus-mode-node--projection.agent-focus-mode-node--outgoing .agent-focus-mode-node-dot {
3148
+ background: #4ecdc4;
3149
+ }
3150
+
3151
+ .agent-focus-mode-node--projection.agent-focus-mode-node--incoming .agent-focus-mode-node-dot {
3152
+ background: #ff6b6b;
3153
+ }
3154
+
3155
+ .agent-focus-mode-node--projection.agent-focus-mode-node--associated .agent-focus-mode-node-dot,
3156
+ .agent-focus-mode-node--projection.agent-focus-mode-node--related .agent-focus-mode-node-dot {
3157
+ background: #a3a3a3;
3158
+ }
3159
+
3160
+ .agent-focus-relation-nodes {
3161
+ display: flex;
3162
+ flex-wrap: wrap;
3163
+ gap: 6px;
3164
+ }
3165
+
3166
+ .agent-focus-relation-node {
3167
+ max-width: 100%;
3168
+ border: 1px solid rgba(148, 163, 184, 0.22);
3169
+ border-radius: 999px;
3170
+ background: rgba(2, 6, 12, 0.42);
3171
+ color: #dbeafe;
3172
+ font-size: 0.74rem;
3173
+ line-height: 1.2;
3174
+ padding: 5px 8px;
3175
+ overflow-wrap: anywhere;
3176
+ }
3177
+
3178
+ .agent-focus-relation-node--anchor {
3179
+ border-color: rgba(251, 191, 36, 0.5);
3180
+ color: #fef3c7;
3181
+ }
3182
+
3183
+ .agent-focus-relation-edges {
3184
+ margin: 0;
3185
+ padding: 0;
3186
+ list-style: none;
3187
+ display: grid;
3188
+ gap: 6px;
3189
+ }
3190
+
3191
+ .agent-focus-relation-edge,
3192
+ .agent-focus-relation-empty {
3193
+ display: flex;
3194
+ flex-wrap: wrap;
3195
+ gap: 6px;
3196
+ align-items: center;
3197
+ color: #cbd5e1;
3198
+ font-size: 0.76rem;
3199
+ line-height: 1.35;
3200
+ }
3201
+
3202
+ .agent-focus-relation-kind {
3203
+ border-radius: 999px;
3204
+ background: rgba(125, 211, 252, 0.14);
3205
+ color: #bae6fd;
3206
+ padding: 2px 7px;
3207
+ }
3208
+
3209
+ .agent-focus-relation-confidence {
3210
+ color: #93a4b8;
3211
+ }
3212
+
3213
+ .agent-focus-hit {
3214
+ border: 1px solid rgba(125, 211, 252, 0.2);
3215
+ border-left: 3px solid #7dd3fc;
3216
+ border-radius: 8px;
3217
+ background: rgba(14, 116, 144, 0.12);
3218
+ padding: 10px 12px;
3219
+ }
3220
+
3221
+ .agent-focus-hit-title {
3222
+ color: #f8fbff;
3223
+ font-size: 0.86rem;
3224
+ font-weight: 700;
3225
+ }
3226
+
3227
+ .agent-focus-hit-snippet {
3228
+ margin-top: 5px;
3229
+ color: #dbeafe;
3230
+ font-size: 0.84rem;
3231
+ line-height: 1.52;
3232
+ }
3233
+
3234
+ .agent-focus-hit-meta {
3235
+ margin-top: 6px;
3236
+ color: #93c5fd;
3237
+ font-size: 0.76rem;
3238
+ line-height: 1.35;
3239
+ overflow-wrap: anywhere;
3240
+ }
3241
+
3242
+ .agent-pane-block--graph-focus {
3243
+ display: grid;
3244
+ gap: 12px;
3245
+ }
3246
+
3247
+ .agent-pane-block--focus-runtime {
3248
+ padding: 0;
3249
+ border: 0;
3250
+ background: transparent;
3251
+ }
3252
+
3253
+ .agent-focus-rendered-markdown {
3254
+ color: #dbe7f3;
3255
+ font-size: 0.9rem;
3256
+ line-height: 1.62;
3257
+ }
3258
+
3259
+ .agent-focus-rendered-markdown :is(h1, h2, h3, h4, h5, h6) {
3260
+ color: #f8fbff;
3261
+ }
3262
+
3263
+ .agent-knowledge-rendered-markdown [data-agent-focus-highlight="true"],
3264
+ .agent-knowledge-rendered-markdown .agent-focus-match,
3265
+ .agent-focus-rendered-markdown [data-agent-focus-highlight="true"],
3266
+ .agent-focus-rendered-markdown .agent-focus-match {
3267
+ background: rgba(125, 211, 252, 0.14);
3268
+ box-shadow: inset 3px 0 0 rgba(125, 211, 252, 0.55);
3269
+ border-radius: 4px;
3270
+ padding-inline: 6px;
3271
+ }
3272
+
3273
+ .agent-focus-inline-highlight {
3274
+ background: rgba(251, 191, 36, 0.28);
3275
+ color: inherit;
3276
+ border-radius: 3px;
3277
+ box-shadow: inset 0 -1px 0 rgba(251, 191, 36, 0.48);
3278
+ padding-inline: 1px;
3279
+ }
3280
+
3281
+ .agent-knowledge-rendered-markdown [data-agent-focus-primary-highlight="true"],
3282
+ .agent-focus-rendered-markdown [data-agent-focus-primary-highlight="true"] {
3283
+ outline: 1px solid rgba(251, 191, 36, 0.46);
3284
+ outline-offset: 2px;
3285
+ }
3286
+
3287
+ .agent-side-work-area {
3288
+ display: grid;
3289
+ grid-template-columns: 1fr;
3290
+ align-content: start;
3291
+ gap: 16px;
3292
+ min-height: 0;
3293
+ overflow: auto;
3294
+ padding-right: 6px;
3295
+ }
3296
+
3297
+ .agent-workspace-pane {
3298
+ display: none;
3299
+ flex-direction: column;
3300
+ padding: 14px;
3301
+ }
3302
+
3303
+ .agent-workspace-pane[data-open="true"] {
3304
+ display: flex;
3305
+ }
3306
+
3307
+ .agent-workspace-pane-body {
3308
+ flex: 1;
3309
+ margin-top: 12px;
3310
+ }
3311
+
3312
+ .agent-focus-pane-reader {
3313
+ display: grid;
3314
+ gap: 10px;
3315
+ min-height: 220px;
3316
+ border: 1px solid rgba(148, 163, 184, 0.2);
3317
+ border-radius: 8px;
3318
+ background: rgba(2, 6, 12, 0.44);
3319
+ overflow: hidden;
3320
+ }
3321
+
3322
+ .agent-focus-pane-reader[hidden] {
3323
+ display: none;
3324
+ }
3325
+
3326
+ .agent-focus-pane-reader-header {
3327
+ display: flex;
3328
+ align-items: center;
3329
+ justify-content: space-between;
3330
+ gap: 12px;
3331
+ min-height: 52px;
3332
+ padding: 8px 10px 8px 14px;
3333
+ border-bottom: 1px solid rgba(148, 163, 184, 0.14);
3334
+ background: rgba(15, 23, 42, 0.54);
3335
+ }
3336
+
3337
+ .agent-focus-pane-reader-title {
3338
+ min-width: 0;
3339
+ color: #f8fbff;
3340
+ font-size: 0.92rem;
3341
+ font-weight: 800;
3342
+ line-height: 1.25;
3343
+ overflow-wrap: anywhere;
3344
+ }
3345
+
3346
+ .agent-focus-pane-reader-body {
3347
+ min-height: 0;
3348
+ max-height: min(48vh, 520px);
3349
+ overflow: auto;
3350
+ padding: 12px 14px 14px;
3351
+ }
3352
+
3353
+ .agent-focus-pane-reader-markdown {
3354
+ color: #dbe7f3;
3355
+ font-size: 0.9rem;
3356
+ line-height: 1.62;
3357
+ }
3358
+
3359
+ .agent-learning-path-pending {
3360
+ display: grid;
3361
+ gap: 10px;
3362
+ align-content: start;
3363
+ min-height: 180px;
3364
+ padding: 14px;
3365
+ border: 1px solid rgba(125, 211, 252, 0.22);
3366
+ border-radius: 8px;
3367
+ background: rgba(14, 116, 144, 0.12);
3368
+ color: #dbeafe;
3369
+ }
3370
+
3371
+ .agent-learning-path-pending-title {
3372
+ color: #f8fbff;
3373
+ font-size: 0.96rem;
3374
+ font-weight: 800;
3375
+ }
3376
+
3377
+ .agent-learning-path-pending-copy {
3378
+ color: #c7e9f6;
3379
+ font-size: 0.86rem;
3380
+ line-height: 1.5;
3381
+ }
3382
+
3383
+ .agent-learning-path-pending-meta {
3384
+ display: flex;
3385
+ flex-wrap: wrap;
3386
+ gap: 6px;
3387
+ }
3388
+
3389
+ .agent-learning-path-pending-meta span {
3390
+ max-width: 100%;
3391
+ border: 1px solid rgba(148, 163, 184, 0.22);
3392
+ border-radius: 999px;
3393
+ background: rgba(2, 6, 12, 0.42);
3394
+ color: #bae6fd;
3395
+ font-size: 0.74rem;
3396
+ line-height: 1.25;
3397
+ padding: 4px 8px;
3398
+ overflow-wrap: anywhere;
3399
+ }
3400
+
3401
+ .agent-godot-future-path-shell {
3402
+ display: grid;
3403
+ gap: 12px;
3404
+ min-height: 280px;
3405
+ align-content: start;
3406
+ }
3407
+
3408
+ .agent-godot-future-path-header {
3409
+ display: flex;
3410
+ align-items: start;
3411
+ justify-content: space-between;
3412
+ gap: 12px;
3413
+ }
3414
+
3415
+ .agent-godot-future-path-title {
3416
+ min-width: 0;
3417
+ color: #f8fbff;
3418
+ font-size: 0.95rem;
3419
+ font-weight: 800;
3420
+ line-height: 1.25;
3421
+ overflow-wrap: anywhere;
3422
+ }
3423
+
3424
+ .agent-godot-future-path-status {
3425
+ border: 1px solid rgba(125, 211, 252, 0.2);
3426
+ border-radius: 8px;
3427
+ background: rgba(14, 116, 144, 0.12);
3428
+ color: #c7e9f6;
3429
+ font-size: 0.84rem;
3430
+ line-height: 1.45;
3431
+ padding: 10px 12px;
3432
+ }
3433
+
3434
+ .agent-godot-future-path-viewport {
3435
+ position: relative;
3436
+ min-height: min(58vh, 620px);
3437
+ overflow: auto;
3438
+ cursor: grab;
3439
+ border: 1px solid rgba(148, 163, 184, 0.18);
3440
+ border-radius: 8px;
3441
+ background:
3442
+ linear-gradient(180deg, rgba(15, 23, 42, 0.82), rgba(2, 6, 12, 0.92)),
3443
+ #0b1120;
3444
+ isolation: isolate;
3445
+ touch-action: none;
3446
+ }
3447
+
3448
+ .agent-godot-future-path-viewport.is-panning {
3449
+ cursor: grabbing;
3450
+ }
3451
+
3452
+ .agent-godot-future-path-surface {
3453
+ position: relative;
3454
+ min-width: 100%;
3455
+ min-height: min(58vh, 620px);
3456
+ overflow: visible;
3457
+ isolation: isolate;
3458
+ transform:
3459
+ translate(var(--godot-tree-pan-x, 0px), var(--godot-tree-pan-y, 0px))
3460
+ scale(var(--godot-tree-zoom, 1));
3461
+ transform-origin: 0 0;
3462
+ }
3463
+
3464
+ .agent-godot-future-path-lines {
3465
+ position: absolute;
3466
+ inset: 0;
3467
+ z-index: 1;
3468
+ width: 100%;
3469
+ height: 100%;
3470
+ }
3471
+
3472
+ .agent-godot-future-path-edge {
3473
+ fill: none;
3474
+ stroke: rgba(128, 128, 153, 0.5);
3475
+ stroke-width: 2;
3476
+ vector-effect: non-scaling-stroke;
3477
+ }
3478
+
3479
+ .agent-godot-future-path-edge--active {
3480
+ stroke: rgba(178, 242, 255, 0.82);
3481
+ stroke-width: 2.4;
3482
+ }
3483
+
3484
+ .agent-godot-future-path-hull {
3485
+ display: none;
3486
+ fill: rgba(255, 255, 255, 0.07);
3487
+ stroke: rgba(76, 175, 80, 0.62);
3488
+ stroke-width: 2;
3489
+ vector-effect: non-scaling-stroke;
3490
+ }
3491
+
3492
+ .agent-godot-future-path-hull--active {
3493
+ display: block;
3494
+ }
3495
+
3496
+ .agent-godot-future-path-node {
3497
+ appearance: none;
3498
+ position: absolute;
3499
+ z-index: 2;
3500
+ transform: translate(-50%, -50%);
3501
+ box-sizing: border-box;
3502
+ display: inline-flex;
3503
+ align-items: center;
3504
+ justify-content: center;
3505
+ width: 140px;
3506
+ min-width: 140px;
3507
+ height: 50px;
3508
+ min-height: 50px;
3509
+ border: 0;
3510
+ border-radius: 25px;
3511
+ background: rgba(128, 128, 153, 0.94);
3512
+ color: #ffffff;
3513
+ cursor: pointer;
3514
+ font-size: 0.82rem;
3515
+ font-weight: 750;
3516
+ line-height: 1.22;
3517
+ padding: 6px 10px;
3518
+ text-align: center;
3519
+ overflow: visible;
3520
+ white-space: normal;
3521
+ word-break: normal;
3522
+ overflow-wrap: normal;
3523
+ hyphens: none;
3524
+ transition:
3525
+ border-color 180ms ease,
3526
+ box-shadow 180ms ease,
3527
+ filter 180ms ease;
3528
+ }
3529
+
3530
+ .agent-godot-future-path-node:hover {
3531
+ box-shadow:
3532
+ 0 0 0 3px rgba(125, 211, 252, 0.24),
3533
+ 0 0 18px rgba(125, 211, 252, 0.2);
3534
+ filter: brightness(1.08);
3535
+ }
3536
+
3537
+ .agent-godot-future-path-node:focus {
3538
+ outline: none;
3539
+ }
3540
+
3541
+ .agent-godot-future-path-node:focus-visible {
3542
+ outline: 2px solid rgba(125, 211, 252, 0.95);
3543
+ outline-offset: 3px;
3544
+ }
3545
+
3546
+ .agent-godot-future-path-node:active {
3547
+ filter: brightness(0.96);
3548
+ }
3549
+
3550
+ .agent-godot-future-path-node--spine {
3551
+ box-shadow: inset 0 0 0 2px rgba(255, 214, 0, 0.62);
3552
+ }
3553
+
3554
+ .agent-godot-future-path-node--tributary {
3555
+ background: rgba(128, 128, 153, 0.78);
3556
+ }
3557
+
3558
+ .agent-godot-future-path-node--current {
3559
+ z-index: 3;
3560
+ background: rgba(0, 204, 230, 0.96);
3561
+ color: #ffffff;
3562
+ box-shadow: inset 0 0 0 2px rgba(0, 204, 230, 0.82);
3563
+ }
3564
+
3565
+ .agent-godot-future-path-node--completed {
3566
+ background: rgba(255, 214, 0, 0.96);
3567
+ color: #111827;
3568
+ }
3569
+
3570
+ .agent-godot-future-path-node--expanded {
3571
+ box-shadow:
3572
+ inset 0 0 0 2px rgba(255, 214, 0, 0.62),
3573
+ 0 0 0 20px rgba(255, 214, 0, 0.1),
3574
+ 0 0 0 34px rgba(255, 214, 0, 0.05);
3575
+ }
3576
+
3577
+ .agent-godot-future-path-node--current.agent-godot-future-path-node--expanded {
3578
+ box-shadow:
3579
+ inset 0 0 0 2px rgba(0, 204, 230, 0.82),
3580
+ 0 0 0 20px rgba(0, 204, 230, 0.1),
3581
+ 0 0 0 34px rgba(0, 204, 230, 0.05);
3582
+ }
3583
+
3584
+ .agent-godot-future-path-node--dimmed {
3585
+ opacity: 0.28;
3586
+ }
3587
+
3588
+ .agent-godot-future-path-node--selected {
3589
+ filter: brightness(1.12);
3590
+ box-shadow:
3591
+ inset 0 0 0 2px rgba(125, 211, 252, 0.68),
3592
+ 0 0 0 4px rgba(125, 211, 252, 0.2);
3593
+ }
3594
+
3595
+ .agent-godot-future-path-node-label {
3596
+ display: flex;
3597
+ flex-direction: column;
3598
+ align-items: center;
3599
+ justify-content: center;
3600
+ max-width: 120px;
3601
+ max-height: 38px;
3602
+ overflow: hidden;
3603
+ text-overflow: ellipsis;
3604
+ white-space: normal;
3605
+ word-break: keep-all;
3606
+ overflow-wrap: normal;
3607
+ hyphens: none;
3608
+ }
3609
+
3610
+ .agent-godot-future-path-node-label-line {
3611
+ display: block;
3612
+ max-width: 120px;
3613
+ overflow: hidden;
3614
+ text-overflow: ellipsis;
3615
+ white-space: nowrap;
3616
+ }
3617
+
3618
+ .agent-godot-future-path-node-badge {
3619
+ position: absolute;
3620
+ left: 50%;
3621
+ bottom: -10px;
3622
+ display: inline-flex;
3623
+ align-items: center;
3624
+ justify-content: center;
3625
+ width: 20px;
3626
+ height: 20px;
3627
+ transform: translateX(-50%);
3628
+ border-radius: 999px;
3629
+ border: 1.5px solid rgba(204, 204, 204, 0.82);
3630
+ background: rgba(38, 38, 38, 1);
3631
+ color: #ffffff;
3632
+ font-size: 0.86rem;
3633
+ font-weight: 900;
3634
+ }
3635
+
3636
+ .agent-godot-future-path-node-popover {
3637
+ position: absolute;
3638
+ left: calc(100% + 10px);
3639
+ top: 50%;
3640
+ z-index: 5;
3641
+ display: grid;
3642
+ gap: 3px;
3643
+ min-width: 180px;
3644
+ max-width: 260px;
3645
+ transform: translateY(-50%);
3646
+ border: 1px solid rgba(96, 165, 250, 0.46);
3647
+ border-radius: 8px;
3648
+ background: rgba(15, 23, 42, 0.94);
3649
+ box-shadow: 0 14px 32px rgba(0, 0, 0, 0.32);
3650
+ color: #dbeafe;
3651
+ font-size: 0.72rem;
3652
+ font-weight: 650;
3653
+ line-height: 1.3;
3654
+ opacity: 0;
3655
+ padding: 9px 10px;
3656
+ pointer-events: none;
3657
+ text-align: left;
3658
+ transition: opacity 160ms ease;
3659
+ white-space: normal;
3660
+ }
3661
+
3662
+ .agent-godot-future-path-node-popover strong {
3663
+ color: #67e8f9;
3664
+ font-size: 0.76rem;
3665
+ }
3666
+
3667
+ .agent-godot-future-path-node:hover .agent-godot-future-path-node-popover,
3668
+ .agent-godot-future-path-node:focus-visible .agent-godot-future-path-node-popover {
3669
+ opacity: 1;
3670
+ }
3671
+
3672
+ body[data-agent-workspace-promotion="graph-focus"] #agent-learning-path-pane,
3673
+ body[data-agent-workspace-promotion="graph-focus"] #agent-evidence-pane,
3674
+ body[data-agent-workspace-promotion="evidence"] #agent-graph-focus-pane,
3675
+ body[data-agent-workspace-promotion="evidence"] #agent-learning-path-pane,
3676
+ body[data-agent-workspace-promotion="learning-path"] #agent-graph-focus-pane {
3677
+ display: none !important;
3678
+ }
3679
+
3680
+ body[data-agent-workspace-promotion="graph-focus"] #agent-graph-focus-pane,
3681
+ body[data-agent-workspace-promotion="evidence"] #agent-evidence-pane,
3682
+ body[data-agent-workspace-promotion="learning-path"] #agent-learning-path-pane {
3683
+ display: flex !important;
3684
+ min-height: calc(100vh - 170px);
3685
+ }
3686
+
3687
+ #agent-workspace-api-status[data-agent-inspectable="true"] {
3688
+ cursor: pointer;
3689
+ }
3690
+
3691
+ @media (max-width: 1180px) {
3692
+ .agent-workspace-shell {
3693
+ grid-template-columns: 1fr;
3694
+ align-content: start;
3695
+ overflow-x: hidden;
3696
+ overflow-y: auto;
3697
+ }
3698
+
3699
+ .agent-chat-pane {
3700
+ height: auto;
3701
+ }
3702
+
3703
+ .agent-side-work-area {
3704
+ overflow: visible;
3705
+ padding-right: 0;
3706
+ }
3707
+ }
3708
+
3709
+ @media (max-width: 768px) {
3710
+ .agent-workspace-drawer {
3711
+ top: 8px;
3712
+ right: 8px;
3713
+ bottom: 8px;
3714
+ width: calc(100vw - 16px);
3715
+ }
3716
+
3717
+ .agent-workspace-drawer-toolbar {
3718
+ grid-template-columns: minmax(0, 1fr) auto;
3719
+ padding: 12px 14px;
3720
+ }
3721
+
3722
+ .agent-scope-control--workspace {
3723
+ grid-template-columns: minmax(0, 1fr);
3724
+ }
3725
+
3726
+ .agent-scope-control--workspace .agent-scope-summary {
3727
+ grid-column: 1;
3728
+ }
3729
+
3730
+ .agent-workspace-shell {
3731
+ padding: 12px;
3732
+ gap: 12px;
3733
+ }
3734
+
3735
+ .agent-focus-mode-preview {
3736
+ min-height: 300px;
3737
+ }
3738
+
3739
+ .agent-focus-mode-cluster-label {
3740
+ font-size: 0.9rem;
3741
+ }
3742
+
3743
+ .agent-focus-mode-node {
3744
+ max-width: 112px;
3745
+ font-size: 0.72rem;
3746
+ padding: 6px 10px;
3747
+ }
3748
+
3749
+ .agent-focus-mode-node--anchor {
3750
+ width: 68px;
3751
+ min-height: 68px;
3752
+ padding: 7px;
3753
+ }
3754
+
3755
+ .agent-focus-mode-node--projection {
3756
+ width: 44px;
3757
+ min-width: 44px;
3758
+ height: 44px;
3759
+ min-height: 44px;
3760
+ max-width: none;
3761
+ padding: 0;
3762
+ }
3763
+
3764
+ .agent-focus-mode-node--projection.agent-focus-mode-node--anchor {
3765
+ width: 72px;
3766
+ min-width: 72px;
3767
+ height: 72px;
3768
+ min-height: 72px;
3769
+ padding: 0;
3770
+ }
3771
+
3772
+ }
3773
+
3774
+ /* --- Mobile Responsiveness (v0.9.2) --- */
3775
+ @media (max-width: 768px) {
3776
+ .settings-modal-overlay {
3777
+ padding: 10px 8px;
3778
+ }
3779
+
3780
+ .modal-content-settings,
3781
+ .modal-content-agent-settings {
3782
+ width: 100%;
3783
+ max-width: none;
3784
+ max-height: calc(100vh - 20px);
3785
+ border-radius: 14px;
3786
+ }
3787
+
3788
+ .settings-modal-body {
3789
+ padding: 14px;
3790
+ }
3791
+
3792
+ .settings-page-grid {
3793
+ grid-template-columns: minmax(0, 1fr);
3794
+ }
3795
+
3796
+ .setting-item {
3797
+ flex-direction: column;
3798
+ align-items: stretch;
3799
+ }
3800
+
3801
+ .setting-item input[type="range"] {
3802
+ margin: 0;
3803
+ }
3804
+
3805
+ .modal-footer-settings {
3806
+ flex-wrap: wrap;
3807
+ justify-content: stretch;
3808
+ }
3809
+
3810
+ .modal-footer-settings .btn {
3811
+ flex: 1 1 100%;
3812
+ }
3813
+
3814
+ .notemd-embed-shell {
3815
+ width: 100vw;
3816
+ height: 100vh;
3817
+ border-radius: 0;
3818
+ border: none;
3819
+ }
3820
+
3821
+ .notemd-embed-header {
3822
+ height: 52px;
3823
+ padding: 0 10px;
3824
+ }
3825
+
3826
+ .notemd-embed-close {
3827
+ padding: 6px 10px;
3828
+ }
3829
+
3830
+ .notemd-embed-frame {
3831
+ height: calc(100% - 52px);
3832
+ }
3833
+
3834
+ /* 1. Main Controls: Collapsible or Compact */
3835
+ #controls {
3836
+ width: 40px;
3837
+ height: 40px;
3838
+ overflow: hidden;
3839
+ padding: 0;
3840
+ border-radius: 50%;
3841
+ transition: all 0.3s ease;
3842
+ background: rgba(45, 45, 45, 0.95)
3843
+ url('data:image/svg+xml;utf8,<svg fill="white" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/></svg>')
3844
+ no-repeat center;
3845
+ background-size: 24px;
3846
+ cursor: pointer;
3847
+ }
3848
+
3849
+ #controls.expanded {
3850
+ width: 85%;
3851
+ height: auto;
3852
+ max-height: 80vh;
3853
+ overflow-y: auto;
3854
+ border-radius: 8px;
3855
+ padding: 15px;
3856
+ background: rgba(45, 45, 45, 0.98);
3857
+ }
3858
+
3859
+ /* Hide internal elements when collapsed */
3860
+ #controls:not(.expanded) > * {
3861
+ opacity: 0;
3862
+ pointer-events: none;
3863
+ }
3864
+
3865
+ /* 2. Focus Mode Controls */
3866
+ #focus-exit-btn {
3867
+ top: auto;
3868
+ bottom: 20px; /* Move to bottom for easier thumb reach */
3869
+ width: 90%;
3870
+ left: 50%;
3871
+ flex-direction: column;
3872
+ gap: 10px;
3873
+ padding: 15px;
3874
+ }
3875
+
3876
+ #focus-exit-btn span {
3877
+ font-size: 1.1rem;
3878
+ text-align: center;
3879
+ }
3880
+
3881
+ #focus-exit-btn div {
3882
+ width: 100%;
3883
+ justify-content: space-between;
3884
+ }
3885
+
3886
+ #focus-exit-btn button {
3887
+ width: 100%;
3888
+ padding: 10px;
3889
+ }
3890
+
3891
+ /* 3. Reading Window */
3892
+ .reading-box.window-mode {
3893
+ width: 95%;
3894
+ height: 90%;
3895
+ }
3896
+
3897
+ .reading-layout {
3898
+ flex-direction: column;
3899
+ }
3900
+
3901
+ .reading-outline {
3902
+ width: 100%;
3903
+ max-width: none;
3904
+ min-width: 0;
3905
+ max-height: 180px;
3906
+ border-left: none;
3907
+ border-top: 1px solid #333;
1166
3908
  }
1167
3909
 
1168
3910
  /* 4. Top Bar Adjustments */