agentic-orchestrator 0.1.27 → 0.2.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 (837) hide show
  1. package/.claude/settings.local.json +46 -1
  2. package/.cortexrc +28 -0
  3. package/.github/agents/copilot-instructions.md +29 -0
  4. package/.github/copilot-instructions.md +93 -0
  5. package/.vscode/settings.json +13 -0
  6. package/.vscode/tms.code-snippets +223 -0
  7. package/AGENTS.md +72 -1
  8. package/Agentic-Orchestrator.iml +12 -11
  9. package/CLAUDE.md +72 -1
  10. package/CONSTITUTION.md +504 -0
  11. package/FUTURE-ENHANCEMENTS.md +85 -0
  12. package/NEXT-TASKS.md +25 -0
  13. package/PROMPTS.md +161 -0
  14. package/README.md +126 -29
  15. package/agentic/orchestrator/agents.yaml +4 -3
  16. package/agentic/orchestrator/defaults/policy.defaults.yaml +39 -3
  17. package/agentic/orchestrator/gates.yaml +15 -3
  18. package/agentic/orchestrator/policy.yaml +47 -3
  19. package/agentic/orchestrator/prompts/builder.system.md +69 -20
  20. package/agentic/orchestrator/prompts/planner-intake.system.md +149 -0
  21. package/agentic/orchestrator/prompts/planner.system.md +113 -40
  22. package/agentic/orchestrator/prompts/qa.system.md +73 -18
  23. package/agentic/orchestrator/prompts/reconciler.system.md +119 -0
  24. package/agentic/orchestrator/schemas/agents.schema.json +89 -1
  25. package/agentic/orchestrator/schemas/execution-control.schema.json +242 -0
  26. package/agentic/orchestrator/schemas/index.schema.json +234 -0
  27. package/agentic/orchestrator/schemas/intake.review.schema.json +82 -0
  28. package/agentic/orchestrator/schemas/organizer-ordering-artifact.schema.json +75 -0
  29. package/agentic/orchestrator/schemas/plan.schema.json +44 -0
  30. package/agentic/orchestrator/schemas/policy.schema.json +238 -9
  31. package/agentic/orchestrator/schemas/policy.user.schema.json +129 -1
  32. package/agentic/orchestrator/schemas/spec.manifest.bootstrap.schema.json +101 -0
  33. package/agentic/orchestrator/schemas/spec.manifest.verified.schema.json +80 -0
  34. package/agentic/orchestrator/schemas/state.schema.json +298 -3
  35. package/agentic/orchestrator/tools/catalog.json +145 -15
  36. package/agentic/orchestrator/tools/schemas/input/doctor.run.input.schema.json +18 -0
  37. package/agentic/orchestrator/tools/schemas/input/evidence.latest.input.schema.json +4 -0
  38. package/agentic/orchestrator/tools/schemas/input/evidence.verify_chain.input.schema.json +13 -0
  39. package/agentic/orchestrator/tools/schemas/input/feature.intake_submit.input.schema.json +11 -0
  40. package/agentic/orchestrator/tools/schemas/input/feature.question_answer.input.schema.json +15 -0
  41. package/agentic/orchestrator/tools/schemas/input/feature.question_create.input.schema.json +21 -0
  42. package/agentic/orchestrator/tools/schemas/input/feature.question_list.input.schema.json +13 -0
  43. package/agentic/orchestrator/tools/schemas/input/feature.ready_to_merge.input.schema.json +5 -0
  44. package/agentic/orchestrator/tools/schemas/input/feature.send_message.input.schema.json +1 -1
  45. package/agentic/orchestrator/tools/schemas/input/replay.timeline_get.input.schema.json +32 -0
  46. package/agentic/orchestrator/tools/schemas/input/repo.conflict_abort.input.schema.json +16 -0
  47. package/agentic/orchestrator/tools/schemas/input/repo.conflict_files.input.schema.json +16 -0
  48. package/agentic/orchestrator/tools/schemas/input/repo.reconcile_mainline.input.schema.json +37 -0
  49. package/agentic/orchestrator/tools/schemas/input/repo.resolve_conflict.input.schema.json +40 -0
  50. package/agentic/orchestrator/tools/schemas/input/runtime.execution_request_list.input.schema.json +7 -0
  51. package/agentic/orchestrator/tools/schemas/input/runtime.execution_request_submit.input.schema.json +25 -0
  52. package/agentic/orchestrator/tools/schemas/output/doctor.run.output.schema.json +34 -0
  53. package/agentic/orchestrator/tools/schemas/output/evidence.verify_chain.output.schema.json +23 -0
  54. package/agentic/orchestrator/tools/schemas/output/feature.get_context.output.schema.json +62 -2
  55. package/agentic/orchestrator/tools/schemas/output/feature.intake_submit.output.schema.json +24 -0
  56. package/agentic/orchestrator/tools/schemas/output/feature.question_answer.output.schema.json +21 -0
  57. package/agentic/orchestrator/tools/schemas/output/feature.question_create.output.schema.json +12 -0
  58. package/agentic/orchestrator/tools/schemas/output/feature.question_list.output.schema.json +14 -0
  59. package/agentic/orchestrator/tools/schemas/output/feature.ready_to_merge.output.schema.json +31 -0
  60. package/agentic/orchestrator/tools/schemas/output/feature.send_message.output.schema.json +8 -18
  61. package/agentic/orchestrator/tools/schemas/output/replay.timeline_get.output.schema.json +64 -0
  62. package/agentic/orchestrator/tools/schemas/output/repo.conflict_abort.output.schema.json +16 -0
  63. package/agentic/orchestrator/tools/schemas/output/repo.conflict_files.output.schema.json +22 -0
  64. package/agentic/orchestrator/tools/schemas/output/repo.reconcile_mainline.output.schema.json +61 -0
  65. package/agentic/orchestrator/tools/schemas/output/repo.resolve_conflict.output.schema.json +19 -0
  66. package/agentic/orchestrator/tools/schemas/output/report.dashboard.output.schema.json +26 -0
  67. package/agentic/orchestrator/tools/schemas/output/runtime.execution_request_list.output.schema.json +17 -0
  68. package/agentic/orchestrator/tools/schemas/output/runtime.execution_request_submit.output.schema.json +24 -0
  69. package/agentic/orchestrator/tools.md +13 -0
  70. package/apps/control-plane/scripts/validate-mcp-contracts.ts +1 -1
  71. package/apps/control-plane/src/application/kernel-tool-wiring.ts +140 -2
  72. package/apps/control-plane/src/application/services/activity-monitor-service.ts +44 -1
  73. package/apps/control-plane/src/application/services/bootstrap-manifest-generator-service.ts +251 -0
  74. package/apps/control-plane/src/application/services/checkpoint-service.ts +87 -27
  75. package/apps/control-plane/src/application/services/collision-override-service.ts +906 -0
  76. package/apps/control-plane/src/application/services/collision-queue-service.ts +129 -38
  77. package/apps/control-plane/src/application/services/cost-tracking-service.ts +94 -0
  78. package/apps/control-plane/src/application/services/execution-control-service.ts +599 -0
  79. package/apps/control-plane/src/application/services/feature-deletion-service.ts +37 -1
  80. package/apps/control-plane/src/application/services/feature-lifecycle-service.ts +182 -4
  81. package/apps/control-plane/src/application/services/feature-send-message-service.ts +17 -8
  82. package/apps/control-plane/src/application/services/feature-state-service.ts +191 -6
  83. package/apps/control-plane/src/application/services/gate-service.ts +121 -2
  84. package/apps/control-plane/src/application/services/git-reconciliation-service.ts +1591 -0
  85. package/apps/control-plane/src/application/services/intake-service.ts +1468 -0
  86. package/apps/control-plane/src/application/services/merge-service.ts +308 -17
  87. package/apps/control-plane/src/application/services/notifier-service.ts +3 -1
  88. package/apps/control-plane/src/application/services/performance-analytics-service.ts +75 -0
  89. package/apps/control-plane/src/application/services/plan-service.ts +336 -20
  90. package/apps/control-plane/src/application/services/question-service.ts +693 -0
  91. package/apps/control-plane/src/application/services/reactions-service.ts +73 -17
  92. package/apps/control-plane/src/application/services/replay-timeline-service.ts +295 -0
  93. package/apps/control-plane/src/application/services/reporting-service.ts +194 -10
  94. package/apps/control-plane/src/application/services/run-lease-service.ts +121 -5
  95. package/apps/control-plane/src/application/services/worktree-watchdog-service.ts +95 -8
  96. package/apps/control-plane/src/application/tools/tool-metadata.ts +7 -0
  97. package/apps/control-plane/src/application/usage-types.ts +138 -0
  98. package/apps/control-plane/src/cli/add-command-handler.ts +162 -0
  99. package/apps/control-plane/src/cli/answer-command-handler.ts +113 -0
  100. package/apps/control-plane/src/cli/attach-command-handler.ts +12 -3
  101. package/apps/control-plane/src/cli/cli-argument-parser.ts +133 -11
  102. package/apps/control-plane/src/cli/collision-command-handler.ts +113 -0
  103. package/apps/control-plane/src/cli/command-catalog.ts +479 -0
  104. package/apps/control-plane/src/cli/complete-command-handler.ts +23 -0
  105. package/apps/control-plane/src/cli/completion-command-handler.ts +25 -0
  106. package/apps/control-plane/src/cli/completion-resolver.ts +319 -0
  107. package/apps/control-plane/src/cli/completion-shell-renderer.ts +58 -0
  108. package/apps/control-plane/src/cli/dashboard-command-handler.ts +110 -1
  109. package/apps/control-plane/src/cli/dashboard-runtime-runner.ts +1036 -0
  110. package/apps/control-plane/src/cli/dashboard-runtime.ts +31 -0
  111. package/apps/control-plane/src/cli/help-command-handler.ts +17 -185
  112. package/apps/control-plane/src/cli/init-command-handler.ts +51 -6
  113. package/apps/control-plane/src/cli/merge-command-handler.ts +200 -0
  114. package/apps/control-plane/src/cli/questions-command-handler.ts +70 -0
  115. package/apps/control-plane/src/cli/replay-command-handler.ts +98 -0
  116. package/apps/control-plane/src/cli/resume-command-handler.ts +252 -18
  117. package/apps/control-plane/src/cli/retry-command-handler.ts +229 -17
  118. package/apps/control-plane/src/cli/retry-resume-decision.ts +75 -0
  119. package/apps/control-plane/src/cli/rollback-command-handler.ts +4 -2
  120. package/apps/control-plane/src/cli/run-command-handler.ts +35 -1
  121. package/apps/control-plane/src/cli/spec-ingestion-service.ts +45 -55
  122. package/apps/control-plane/src/cli/spec-preparation.ts +114 -0
  123. package/apps/control-plane/src/cli/spec-utils.ts +90 -11
  124. package/apps/control-plane/src/cli/status-command-handler.ts +122 -0
  125. package/apps/control-plane/src/cli/types.ts +41 -3
  126. package/apps/control-plane/src/core/collisions.ts +150 -31
  127. package/apps/control-plane/src/core/constants.ts +18 -1
  128. package/apps/control-plane/src/core/error-codes.ts +39 -0
  129. package/apps/control-plane/src/core/execution-control.ts +56 -0
  130. package/apps/control-plane/src/core/feature-resume-phase.ts +118 -0
  131. package/apps/control-plane/src/core/gate-freshness.ts +359 -0
  132. package/apps/control-plane/src/core/gate-log-extractor.ts +97 -0
  133. package/apps/control-plane/src/core/gates.ts +90 -1
  134. package/apps/control-plane/src/core/intake-artifacts.ts +295 -0
  135. package/apps/control-plane/src/core/kernel-types.ts +11 -0
  136. package/apps/control-plane/src/core/kernel.ts +604 -16
  137. package/apps/control-plane/src/core/mainline-conflict.ts +22 -0
  138. package/apps/control-plane/src/core/merge-repair.ts +149 -0
  139. package/apps/control-plane/src/core/path-layout.ts +46 -2
  140. package/apps/control-plane/src/core/path-rules.ts +11 -3
  141. package/apps/control-plane/src/core/plan-submit-recovery.ts +130 -0
  142. package/apps/control-plane/src/core/questions.ts +49 -0
  143. package/apps/control-plane/src/core/runtime-sessions.ts +4 -0
  144. package/apps/control-plane/src/core/schemas.ts +40 -1
  145. package/apps/control-plane/src/core/tool-caller.ts +25 -1
  146. package/apps/control-plane/src/core/utils/index-normalizer.ts +25 -4
  147. package/apps/control-plane/src/core/worktree-diff.ts +66 -0
  148. package/apps/control-plane/src/index.ts +29 -1
  149. package/apps/control-plane/src/interfaces/cli/bootstrap.ts +300 -6
  150. package/apps/control-plane/src/mcp/kernel-tool-executor.ts +17 -0
  151. package/apps/control-plane/src/mcp/tool-runtime.ts +63 -4
  152. package/apps/control-plane/src/providers/api-worker-provider.ts +62 -15
  153. package/apps/control-plane/src/providers/cli-worker-provider.ts +1037 -61
  154. package/apps/control-plane/src/providers/output-parsers/generic-output-parser.ts +99 -1
  155. package/apps/control-plane/src/providers/output-parsers/types.ts +2 -0
  156. package/apps/control-plane/src/providers/provider-defaults.ts +116 -7
  157. package/apps/control-plane/src/providers/providers.ts +225 -21
  158. package/apps/control-plane/src/providers/worker-provider-factory.ts +26 -2
  159. package/apps/control-plane/src/supervisor/artifact-stager.ts +52 -0
  160. package/apps/control-plane/src/supervisor/build-wave-executor.ts +477 -166
  161. package/apps/control-plane/src/supervisor/execution-enrollment-service.ts +408 -0
  162. package/apps/control-plane/src/supervisor/organizer-enrollment-scheduler.ts +117 -0
  163. package/apps/control-plane/src/supervisor/organizer-sidecar-service.ts +394 -0
  164. package/apps/control-plane/src/supervisor/plan-conformance-scorer.ts +2 -5
  165. package/apps/control-plane/src/supervisor/planner-phase.ts +85 -0
  166. package/apps/control-plane/src/supervisor/planning-wave-executor.ts +993 -64
  167. package/apps/control-plane/src/supervisor/prompt-bundle-loader.ts +20 -1
  168. package/apps/control-plane/src/supervisor/qa-wave-executor.ts +384 -177
  169. package/apps/control-plane/src/supervisor/run-coordinator.ts +801 -43
  170. package/apps/control-plane/src/supervisor/runtime.ts +485 -9
  171. package/apps/control-plane/src/supervisor/session-orchestrator.ts +220 -1
  172. package/apps/control-plane/src/supervisor/types.ts +152 -1
  173. package/apps/control-plane/src/supervisor/worker-decision-loop.ts +1030 -92
  174. package/apps/control-plane/test/activity-monitor.spec.ts +76 -0
  175. package/apps/control-plane/test/add-command-handler.spec.ts +189 -0
  176. package/apps/control-plane/test/application/services/feature-state-service.spec.ts +208 -0
  177. package/apps/control-plane/test/artifact-stager.spec.ts +93 -0
  178. package/apps/control-plane/test/batch-operations.spec.ts +58 -0
  179. package/apps/control-plane/test/bootstrap-edge-cases.spec.ts +50 -2
  180. package/apps/control-plane/test/bootstrap-manifest-generator-service.spec.ts +99 -0
  181. package/apps/control-plane/test/bootstrap.spec.ts +177 -4
  182. package/apps/control-plane/test/checkpoint-service.spec.ts +977 -29
  183. package/apps/control-plane/test/cli-argument-parser.spec.ts +119 -0
  184. package/apps/control-plane/test/cli-helpers.spec.ts +1202 -12
  185. package/apps/control-plane/test/cli.unit.spec.ts +797 -16
  186. package/apps/control-plane/test/collision-command-handler.spec.ts +182 -0
  187. package/apps/control-plane/test/collision-override-service.spec.ts +878 -0
  188. package/apps/control-plane/test/collision-queue.spec.ts +430 -2
  189. package/apps/control-plane/test/collisions.spec.ts +209 -1
  190. package/apps/control-plane/test/core-utils.spec.ts +61 -0
  191. package/apps/control-plane/test/cost-tracking.spec.ts +224 -0
  192. package/apps/control-plane/test/dashboard-api.integration.spec.ts +185 -5
  193. package/apps/control-plane/test/dashboard-client.spec.ts +948 -0
  194. package/apps/control-plane/test/dashboard-command.spec.ts +138 -6
  195. package/apps/control-plane/test/dashboard-runtime-runner.spec.ts +1550 -0
  196. package/apps/control-plane/test/dashboard-runtime.spec.ts +138 -0
  197. package/apps/control-plane/test/dashboard-ui-utils.spec.ts +56 -12
  198. package/apps/control-plane/test/dependency-scheduler.spec.ts +7 -1
  199. package/apps/control-plane/test/env-file.spec.ts +76 -0
  200. package/apps/control-plane/test/execution-control-service.spec.ts +535 -0
  201. package/apps/control-plane/test/execution-enrollment-service.spec.ts +648 -0
  202. package/apps/control-plane/test/feature-lifecycle.spec.ts +126 -0
  203. package/apps/control-plane/test/feature-resume-phase.spec.ts +164 -0
  204. package/apps/control-plane/test/feature-send-message-service.spec.ts +161 -0
  205. package/apps/control-plane/test/feature-state-service.spec.ts +295 -0
  206. package/apps/control-plane/test/fs.spec.ts +80 -0
  207. package/apps/control-plane/test/gate-freshness.spec.ts +590 -0
  208. package/apps/control-plane/test/gate-log-extractor.spec.ts +170 -0
  209. package/apps/control-plane/test/gates.spec.ts +108 -0
  210. package/apps/control-plane/test/git-reconciliation-service.spec.ts +2307 -0
  211. package/apps/control-plane/test/helpers.ts +65 -0
  212. package/apps/control-plane/test/incremental-gates.spec.ts +271 -0
  213. package/apps/control-plane/test/index-normalizer.spec.ts +98 -0
  214. package/apps/control-plane/test/init-wizard.spec.ts +17 -0
  215. package/apps/control-plane/test/intake-artifacts.spec.ts +203 -0
  216. package/apps/control-plane/test/intake-service.spec.ts +3176 -0
  217. package/apps/control-plane/test/kernel-collision-replay.spec.ts +3 -2
  218. package/apps/control-plane/test/kernel-tool-executor.spec.ts +77 -0
  219. package/apps/control-plane/test/kernel-tool-wiring.spec.ts +279 -0
  220. package/apps/control-plane/test/kernel.branches.spec.ts +15 -2
  221. package/apps/control-plane/test/kernel.coverage.spec.ts +7 -3
  222. package/apps/control-plane/test/kernel.coverage2.spec.ts +731 -2
  223. package/apps/control-plane/test/kernel.spec.ts +464 -2
  224. package/apps/control-plane/test/mainline-conflict.spec.ts +66 -0
  225. package/apps/control-plane/test/mcp-helpers.spec.ts +79 -0
  226. package/apps/control-plane/test/mcp.spec.ts +177 -13
  227. package/apps/control-plane/test/merge-command-handler.spec.ts +531 -0
  228. package/apps/control-plane/test/merge-service.spec.ts +570 -4
  229. package/apps/control-plane/test/notifier-service.spec.ts +26 -0
  230. package/apps/control-plane/test/organizer-enrollment-scheduler.spec.ts +340 -0
  231. package/apps/control-plane/test/organizer-ordering-artifact.spec.ts +95 -0
  232. package/apps/control-plane/test/organizer-sidecar-service.spec.ts +468 -0
  233. package/apps/control-plane/test/output-loop-detector.spec.ts +6 -0
  234. package/apps/control-plane/test/path-layout.spec.ts +70 -0
  235. package/apps/control-plane/test/path-normalizers.spec.ts +41 -0
  236. package/apps/control-plane/test/performance-analytics.spec.ts +124 -0
  237. package/apps/control-plane/test/plan-conformance-scorer.spec.ts +53 -0
  238. package/apps/control-plane/test/plan-service.spec.ts +686 -4
  239. package/apps/control-plane/test/planning-wave-executor.spec.ts +3272 -86
  240. package/apps/control-plane/test/policy-loader-service.spec.ts +5 -0
  241. package/apps/control-plane/test/prompt-overlay.spec.ts +65 -0
  242. package/apps/control-plane/test/provider-command-runner-epipe.spec.ts +64 -0
  243. package/apps/control-plane/test/providers/api-worker-provider.spec.ts +129 -0
  244. package/apps/control-plane/test/providers/cli-worker-provider.spec.ts +148 -0
  245. package/apps/control-plane/test/providers/usage-types.spec.ts +98 -0
  246. package/apps/control-plane/test/providers.spec.ts +293 -16
  247. package/apps/control-plane/test/question-command-handlers.spec.ts +156 -0
  248. package/apps/control-plane/test/question-service.spec.ts +1119 -0
  249. package/apps/control-plane/test/reactions.spec.ts +114 -0
  250. package/apps/control-plane/test/replay-command-handler.spec.ts +144 -0
  251. package/apps/control-plane/test/replay-timeline-service.spec.ts +459 -0
  252. package/apps/control-plane/test/response.spec.ts +31 -0
  253. package/apps/control-plane/test/resume-command.spec.ts +786 -9
  254. package/apps/control-plane/test/retry-resume-decision.spec.ts +133 -0
  255. package/apps/control-plane/test/rollback-command-handler.spec.ts +334 -0
  256. package/apps/control-plane/test/rollback-command.spec.ts +120 -0
  257. package/apps/control-plane/test/run-coordinator.spec.ts +3141 -364
  258. package/apps/control-plane/test/schemas/state.schema.spec.ts +71 -0
  259. package/apps/control-plane/test/service-retry-paths.spec.ts +112 -0
  260. package/apps/control-plane/test/services.spec.ts +472 -2
  261. package/apps/control-plane/test/session-management.spec.ts +346 -1
  262. package/apps/control-plane/test/spec-ingestion.spec.ts +102 -28
  263. package/apps/control-plane/test/spec-preparation.spec.ts +182 -0
  264. package/apps/control-plane/test/supervisor-collaborators.spec.ts +191 -3
  265. package/apps/control-plane/test/supervisor.calltool.spec.ts +198 -0
  266. package/apps/control-plane/test/supervisor.spec.ts +95 -16
  267. package/apps/control-plane/test/supervisor.unit.spec.ts +385 -18
  268. package/apps/control-plane/test/tool-runtime.spec.ts +122 -0
  269. package/apps/control-plane/test/worker-decision-loop.spec.ts +3479 -476
  270. package/apps/control-plane/test/worker-execution-policy.spec.ts +1416 -6
  271. package/apps/control-plane/test/worker-provider-adapters.spec.ts +1894 -37
  272. package/apps/control-plane/test/worker-provider-factory.spec.ts +81 -0
  273. package/apps/control-plane/test/worktree-watchdog-service.spec.ts +125 -0
  274. package/apps/control-plane/vitest.config.ts +5 -0
  275. package/config/agentic/orchestrator/agents.yaml +23 -2
  276. package/config/agentic/orchestrator/gates.yaml +24 -7
  277. package/config/agentic/orchestrator/policy.yaml +23 -1
  278. package/config/agentic/orchestrator/prompts/builder.system.md +69 -20
  279. package/config/agentic/orchestrator/prompts/organizer.system.md +85 -0
  280. package/config/agentic/orchestrator/prompts/overrides/builder.claude.md +28 -0
  281. package/config/agentic/orchestrator/prompts/overrides/builder.codex.md +28 -0
  282. package/config/agentic/orchestrator/prompts/overrides/planner.claude.md +20 -0
  283. package/config/agentic/orchestrator/prompts/overrides/planner.codex.md +20 -0
  284. package/config/agentic/orchestrator/prompts/planner-intake.system.md +149 -0
  285. package/config/agentic/orchestrator/prompts/planner.system.md +113 -40
  286. package/config/agentic/orchestrator/prompts/qa.system.md +75 -18
  287. package/config/agentic/orchestrator/prompts/reconciler.system.md +119 -0
  288. package/dist/apps/control-plane/application/kernel-tool-wiring.d.ts +26 -2
  289. package/dist/apps/control-plane/application/kernel-tool-wiring.js +40 -2
  290. package/dist/apps/control-plane/application/kernel-tool-wiring.js.map +1 -1
  291. package/dist/apps/control-plane/application/services/activity-monitor-service.js +37 -1
  292. package/dist/apps/control-plane/application/services/activity-monitor-service.js.map +1 -1
  293. package/dist/apps/control-plane/application/services/bootstrap-manifest-generator-service.d.ts +4 -0
  294. package/dist/apps/control-plane/application/services/bootstrap-manifest-generator-service.js +188 -0
  295. package/dist/apps/control-plane/application/services/bootstrap-manifest-generator-service.js.map +1 -0
  296. package/dist/apps/control-plane/application/services/checkpoint-service.d.ts +5 -0
  297. package/dist/apps/control-plane/application/services/checkpoint-service.js +69 -24
  298. package/dist/apps/control-plane/application/services/checkpoint-service.js.map +1 -1
  299. package/dist/apps/control-plane/application/services/collision-override-service.d.ts +139 -0
  300. package/dist/apps/control-plane/application/services/collision-override-service.js +568 -0
  301. package/dist/apps/control-plane/application/services/collision-override-service.js.map +1 -0
  302. package/dist/apps/control-plane/application/services/collision-queue-service.d.ts +15 -0
  303. package/dist/apps/control-plane/application/services/collision-queue-service.js +92 -33
  304. package/dist/apps/control-plane/application/services/collision-queue-service.js.map +1 -1
  305. package/dist/apps/control-plane/application/services/cost-tracking-service.d.ts +11 -0
  306. package/dist/apps/control-plane/application/services/cost-tracking-service.js +75 -0
  307. package/dist/apps/control-plane/application/services/cost-tracking-service.js.map +1 -1
  308. package/dist/apps/control-plane/application/services/execution-control-service.d.ts +75 -0
  309. package/dist/apps/control-plane/application/services/execution-control-service.js +421 -0
  310. package/dist/apps/control-plane/application/services/execution-control-service.js.map +1 -0
  311. package/dist/apps/control-plane/application/services/feature-deletion-service.d.ts +1 -0
  312. package/dist/apps/control-plane/application/services/feature-deletion-service.js +23 -1
  313. package/dist/apps/control-plane/application/services/feature-deletion-service.js.map +1 -1
  314. package/dist/apps/control-plane/application/services/feature-lifecycle-service.d.ts +24 -1
  315. package/dist/apps/control-plane/application/services/feature-lifecycle-service.js +132 -3
  316. package/dist/apps/control-plane/application/services/feature-lifecycle-service.js.map +1 -1
  317. package/dist/apps/control-plane/application/services/feature-send-message-service.js +16 -8
  318. package/dist/apps/control-plane/application/services/feature-send-message-service.js.map +1 -1
  319. package/dist/apps/control-plane/application/services/feature-state-service.d.ts +36 -0
  320. package/dist/apps/control-plane/application/services/feature-state-service.js +163 -6
  321. package/dist/apps/control-plane/application/services/feature-state-service.js.map +1 -1
  322. package/dist/apps/control-plane/application/services/gate-service.d.ts +2 -1
  323. package/dist/apps/control-plane/application/services/gate-service.js +95 -5
  324. package/dist/apps/control-plane/application/services/gate-service.js.map +1 -1
  325. package/dist/apps/control-plane/application/services/git-reconciliation-service.d.ts +92 -0
  326. package/dist/apps/control-plane/application/services/git-reconciliation-service.js +1097 -0
  327. package/dist/apps/control-plane/application/services/git-reconciliation-service.js.map +1 -0
  328. package/dist/apps/control-plane/application/services/intake-service.d.ts +63 -0
  329. package/dist/apps/control-plane/application/services/intake-service.js +1050 -0
  330. package/dist/apps/control-plane/application/services/intake-service.js.map +1 -0
  331. package/dist/apps/control-plane/application/services/merge-service.d.ts +5 -1
  332. package/dist/apps/control-plane/application/services/merge-service.js +233 -18
  333. package/dist/apps/control-plane/application/services/merge-service.js.map +1 -1
  334. package/dist/apps/control-plane/application/services/notifier-service.d.ts +1 -1
  335. package/dist/apps/control-plane/application/services/notifier-service.js +1 -0
  336. package/dist/apps/control-plane/application/services/notifier-service.js.map +1 -1
  337. package/dist/apps/control-plane/application/services/performance-analytics-service.d.ts +11 -0
  338. package/dist/apps/control-plane/application/services/performance-analytics-service.js +59 -0
  339. package/dist/apps/control-plane/application/services/performance-analytics-service.js.map +1 -1
  340. package/dist/apps/control-plane/application/services/plan-service.d.ts +5 -0
  341. package/dist/apps/control-plane/application/services/plan-service.js +254 -15
  342. package/dist/apps/control-plane/application/services/plan-service.js.map +1 -1
  343. package/dist/apps/control-plane/application/services/question-service.d.ts +72 -0
  344. package/dist/apps/control-plane/application/services/question-service.js +507 -0
  345. package/dist/apps/control-plane/application/services/question-service.js.map +1 -0
  346. package/dist/apps/control-plane/application/services/reactions-service.d.ts +2 -0
  347. package/dist/apps/control-plane/application/services/reactions-service.js +60 -17
  348. package/dist/apps/control-plane/application/services/reactions-service.js.map +1 -1
  349. package/dist/apps/control-plane/application/services/replay-timeline-service.d.ts +39 -0
  350. package/dist/apps/control-plane/application/services/replay-timeline-service.js +205 -0
  351. package/dist/apps/control-plane/application/services/replay-timeline-service.js.map +1 -0
  352. package/dist/apps/control-plane/application/services/reporting-service.d.ts +59 -0
  353. package/dist/apps/control-plane/application/services/reporting-service.js +121 -9
  354. package/dist/apps/control-plane/application/services/reporting-service.js.map +1 -1
  355. package/dist/apps/control-plane/application/services/run-lease-service.d.ts +20 -0
  356. package/dist/apps/control-plane/application/services/run-lease-service.js +81 -4
  357. package/dist/apps/control-plane/application/services/run-lease-service.js.map +1 -1
  358. package/dist/apps/control-plane/application/services/worktree-watchdog-service.d.ts +10 -0
  359. package/dist/apps/control-plane/application/services/worktree-watchdog-service.js +65 -8
  360. package/dist/apps/control-plane/application/services/worktree-watchdog-service.js.map +1 -1
  361. package/dist/apps/control-plane/application/tools/tool-metadata.js +7 -0
  362. package/dist/apps/control-plane/application/tools/tool-metadata.js.map +1 -1
  363. package/dist/apps/control-plane/application/usage-types.d.ts +65 -0
  364. package/dist/apps/control-plane/application/usage-types.js +75 -0
  365. package/dist/apps/control-plane/application/usage-types.js.map +1 -0
  366. package/dist/apps/control-plane/cli/add-command-handler.d.ts +18 -0
  367. package/dist/apps/control-plane/cli/add-command-handler.js +110 -0
  368. package/dist/apps/control-plane/cli/add-command-handler.js.map +1 -0
  369. package/dist/apps/control-plane/cli/answer-command-handler.d.ts +8 -0
  370. package/dist/apps/control-plane/cli/answer-command-handler.js +96 -0
  371. package/dist/apps/control-plane/cli/answer-command-handler.js.map +1 -0
  372. package/dist/apps/control-plane/cli/attach-command-handler.js +8 -3
  373. package/dist/apps/control-plane/cli/attach-command-handler.js.map +1 -1
  374. package/dist/apps/control-plane/cli/cli-argument-parser.js +131 -11
  375. package/dist/apps/control-plane/cli/cli-argument-parser.js.map +1 -1
  376. package/dist/apps/control-plane/cli/collision-command-handler.d.ts +8 -0
  377. package/dist/apps/control-plane/cli/collision-command-handler.js +90 -0
  378. package/dist/apps/control-plane/cli/collision-command-handler.js.map +1 -0
  379. package/dist/apps/control-plane/cli/command-catalog.d.ts +21 -0
  380. package/dist/apps/control-plane/cli/command-catalog.js +416 -0
  381. package/dist/apps/control-plane/cli/command-catalog.js.map +1 -0
  382. package/dist/apps/control-plane/cli/complete-command-handler.d.ts +15 -0
  383. package/dist/apps/control-plane/cli/complete-command-handler.js +26 -0
  384. package/dist/apps/control-plane/cli/complete-command-handler.js.map +1 -0
  385. package/dist/apps/control-plane/cli/completion-command-handler.d.ts +8 -0
  386. package/dist/apps/control-plane/cli/completion-command-handler.js +20 -0
  387. package/dist/apps/control-plane/cli/completion-command-handler.js.map +1 -0
  388. package/dist/apps/control-plane/cli/completion-resolver.d.ts +1 -0
  389. package/dist/apps/control-plane/cli/completion-resolver.js +250 -0
  390. package/dist/apps/control-plane/cli/completion-resolver.js.map +1 -0
  391. package/dist/apps/control-plane/cli/completion-shell-renderer.d.ts +3 -0
  392. package/dist/apps/control-plane/cli/completion-shell-renderer.js +53 -0
  393. package/dist/apps/control-plane/cli/completion-shell-renderer.js.map +1 -0
  394. package/dist/apps/control-plane/cli/dashboard-command-handler.d.ts +1 -0
  395. package/dist/apps/control-plane/cli/dashboard-command-handler.js +83 -1
  396. package/dist/apps/control-plane/cli/dashboard-command-handler.js.map +1 -1
  397. package/dist/apps/control-plane/cli/dashboard-runtime-runner.d.ts +81 -0
  398. package/dist/apps/control-plane/cli/dashboard-runtime-runner.js +724 -0
  399. package/dist/apps/control-plane/cli/dashboard-runtime-runner.js.map +1 -0
  400. package/dist/apps/control-plane/cli/dashboard-runtime.d.ts +1 -0
  401. package/dist/apps/control-plane/cli/dashboard-runtime.js +26 -0
  402. package/dist/apps/control-plane/cli/dashboard-runtime.js.map +1 -0
  403. package/dist/apps/control-plane/cli/help-command-handler.js +13 -172
  404. package/dist/apps/control-plane/cli/help-command-handler.js.map +1 -1
  405. package/dist/apps/control-plane/cli/init-command-handler.js +51 -6
  406. package/dist/apps/control-plane/cli/init-command-handler.js.map +1 -1
  407. package/dist/apps/control-plane/cli/merge-command-handler.d.ts +8 -0
  408. package/dist/apps/control-plane/cli/merge-command-handler.js +139 -0
  409. package/dist/apps/control-plane/cli/merge-command-handler.js.map +1 -0
  410. package/dist/apps/control-plane/cli/questions-command-handler.d.ts +8 -0
  411. package/dist/apps/control-plane/cli/questions-command-handler.js +59 -0
  412. package/dist/apps/control-plane/cli/questions-command-handler.js.map +1 -0
  413. package/dist/apps/control-plane/cli/replay-command-handler.d.ts +15 -0
  414. package/dist/apps/control-plane/cli/replay-command-handler.js +55 -0
  415. package/dist/apps/control-plane/cli/replay-command-handler.js.map +1 -0
  416. package/dist/apps/control-plane/cli/resume-command-handler.d.ts +2 -0
  417. package/dist/apps/control-plane/cli/resume-command-handler.js +196 -19
  418. package/dist/apps/control-plane/cli/resume-command-handler.js.map +1 -1
  419. package/dist/apps/control-plane/cli/retry-command-handler.js +202 -16
  420. package/dist/apps/control-plane/cli/retry-command-handler.js.map +1 -1
  421. package/dist/apps/control-plane/cli/retry-resume-decision.d.ts +26 -0
  422. package/dist/apps/control-plane/cli/retry-resume-decision.js +61 -0
  423. package/dist/apps/control-plane/cli/retry-resume-decision.js.map +1 -0
  424. package/dist/apps/control-plane/cli/rollback-command-handler.js +3 -2
  425. package/dist/apps/control-plane/cli/rollback-command-handler.js.map +1 -1
  426. package/dist/apps/control-plane/cli/run-command-handler.js +26 -2
  427. package/dist/apps/control-plane/cli/run-command-handler.js.map +1 -1
  428. package/dist/apps/control-plane/cli/spec-ingestion-service.d.ts +2 -0
  429. package/dist/apps/control-plane/cli/spec-ingestion-service.js +37 -48
  430. package/dist/apps/control-plane/cli/spec-ingestion-service.js.map +1 -1
  431. package/dist/apps/control-plane/cli/spec-preparation.d.ts +14 -0
  432. package/dist/apps/control-plane/cli/spec-preparation.js +81 -0
  433. package/dist/apps/control-plane/cli/spec-preparation.js.map +1 -0
  434. package/dist/apps/control-plane/cli/spec-utils.d.ts +4 -0
  435. package/dist/apps/control-plane/cli/spec-utils.js +70 -11
  436. package/dist/apps/control-plane/cli/spec-utils.js.map +1 -1
  437. package/dist/apps/control-plane/cli/status-command-handler.js +69 -0
  438. package/dist/apps/control-plane/cli/status-command-handler.js.map +1 -1
  439. package/dist/apps/control-plane/cli/types.d.ts +41 -4
  440. package/dist/apps/control-plane/cli/types.js +9 -1
  441. package/dist/apps/control-plane/cli/types.js.map +1 -1
  442. package/dist/apps/control-plane/core/collisions.d.ts +37 -19
  443. package/dist/apps/control-plane/core/collisions.js +87 -12
  444. package/dist/apps/control-plane/core/collisions.js.map +1 -1
  445. package/dist/apps/control-plane/core/constants.d.ts +17 -1
  446. package/dist/apps/control-plane/core/constants.js +18 -1
  447. package/dist/apps/control-plane/core/constants.js.map +1 -1
  448. package/dist/apps/control-plane/core/error-codes.d.ts +39 -0
  449. package/dist/apps/control-plane/core/error-codes.js +39 -0
  450. package/dist/apps/control-plane/core/error-codes.js.map +1 -1
  451. package/dist/apps/control-plane/core/execution-control.d.ts +45 -0
  452. package/dist/apps/control-plane/core/execution-control.js +2 -0
  453. package/dist/apps/control-plane/core/execution-control.js.map +1 -0
  454. package/dist/apps/control-plane/core/feature-resume-phase.d.ts +3 -0
  455. package/dist/apps/control-plane/core/feature-resume-phase.js +88 -0
  456. package/dist/apps/control-plane/core/feature-resume-phase.js.map +1 -0
  457. package/dist/apps/control-plane/core/gate-freshness.d.ts +48 -0
  458. package/dist/apps/control-plane/core/gate-freshness.js +267 -0
  459. package/dist/apps/control-plane/core/gate-freshness.js.map +1 -0
  460. package/dist/apps/control-plane/core/gate-log-extractor.d.ts +22 -0
  461. package/dist/apps/control-plane/core/gate-log-extractor.js +66 -0
  462. package/dist/apps/control-plane/core/gate-log-extractor.js.map +1 -0
  463. package/dist/apps/control-plane/core/gates.d.ts +11 -2
  464. package/dist/apps/control-plane/core/gates.js +67 -3
  465. package/dist/apps/control-plane/core/gates.js.map +1 -1
  466. package/dist/apps/control-plane/core/intake-artifacts.d.ts +109 -0
  467. package/dist/apps/control-plane/core/intake-artifacts.js +143 -0
  468. package/dist/apps/control-plane/core/intake-artifacts.js.map +1 -0
  469. package/dist/apps/control-plane/core/kernel-types.d.ts +8 -0
  470. package/dist/apps/control-plane/core/kernel.d.ts +256 -8
  471. package/dist/apps/control-plane/core/kernel.js +400 -14
  472. package/dist/apps/control-plane/core/kernel.js.map +1 -1
  473. package/dist/apps/control-plane/core/mainline-conflict.d.ts +7 -0
  474. package/dist/apps/control-plane/core/mainline-conflict.js +20 -0
  475. package/dist/apps/control-plane/core/mainline-conflict.js.map +1 -0
  476. package/dist/apps/control-plane/core/merge-repair.d.ts +35 -0
  477. package/dist/apps/control-plane/core/merge-repair.js +99 -0
  478. package/dist/apps/control-plane/core/merge-repair.js.map +1 -0
  479. package/dist/apps/control-plane/core/path-layout.d.ts +10 -0
  480. package/dist/apps/control-plane/core/path-layout.js +32 -2
  481. package/dist/apps/control-plane/core/path-layout.js.map +1 -1
  482. package/dist/apps/control-plane/core/path-rules.js +9 -3
  483. package/dist/apps/control-plane/core/path-rules.js.map +1 -1
  484. package/dist/apps/control-plane/core/plan-submit-recovery.d.ts +22 -0
  485. package/dist/apps/control-plane/core/plan-submit-recovery.js +78 -0
  486. package/dist/apps/control-plane/core/plan-submit-recovery.js.map +1 -0
  487. package/dist/apps/control-plane/core/questions.d.ts +40 -0
  488. package/dist/apps/control-plane/core/questions.js +2 -0
  489. package/dist/apps/control-plane/core/questions.js.map +1 -0
  490. package/dist/apps/control-plane/core/runtime-sessions.d.ts +4 -0
  491. package/dist/apps/control-plane/core/schemas.d.ts +2 -0
  492. package/dist/apps/control-plane/core/schemas.js +31 -1
  493. package/dist/apps/control-plane/core/schemas.js.map +1 -1
  494. package/dist/apps/control-plane/core/tool-caller.d.ts +18 -1
  495. package/dist/apps/control-plane/core/utils/index-normalizer.js +17 -4
  496. package/dist/apps/control-plane/core/utils/index-normalizer.js.map +1 -1
  497. package/dist/apps/control-plane/core/worktree-diff.d.ts +4 -0
  498. package/dist/apps/control-plane/core/worktree-diff.js +52 -0
  499. package/dist/apps/control-plane/core/worktree-diff.js.map +1 -0
  500. package/dist/apps/control-plane/index.d.ts +10 -2
  501. package/dist/apps/control-plane/index.js +9 -2
  502. package/dist/apps/control-plane/index.js.map +1 -1
  503. package/dist/apps/control-plane/interfaces/cli/bootstrap.js +236 -6
  504. package/dist/apps/control-plane/interfaces/cli/bootstrap.js.map +1 -1
  505. package/dist/apps/control-plane/mcp/kernel-tool-executor.js +16 -0
  506. package/dist/apps/control-plane/mcp/kernel-tool-executor.js.map +1 -1
  507. package/dist/apps/control-plane/mcp/tool-runtime.d.ts +5 -0
  508. package/dist/apps/control-plane/mcp/tool-runtime.js +40 -5
  509. package/dist/apps/control-plane/mcp/tool-runtime.js.map +1 -1
  510. package/dist/apps/control-plane/providers/api-worker-provider.d.ts +2 -2
  511. package/dist/apps/control-plane/providers/api-worker-provider.js +40 -9
  512. package/dist/apps/control-plane/providers/api-worker-provider.js.map +1 -1
  513. package/dist/apps/control-plane/providers/cli-worker-provider.d.ts +59 -3
  514. package/dist/apps/control-plane/providers/cli-worker-provider.js +758 -46
  515. package/dist/apps/control-plane/providers/cli-worker-provider.js.map +1 -1
  516. package/dist/apps/control-plane/providers/output-parsers/generic-output-parser.js +91 -1
  517. package/dist/apps/control-plane/providers/output-parsers/generic-output-parser.js.map +1 -1
  518. package/dist/apps/control-plane/providers/output-parsers/types.d.ts +2 -0
  519. package/dist/apps/control-plane/providers/provider-defaults.d.ts +12 -0
  520. package/dist/apps/control-plane/providers/provider-defaults.js +103 -7
  521. package/dist/apps/control-plane/providers/provider-defaults.js.map +1 -1
  522. package/dist/apps/control-plane/providers/providers.d.ts +50 -4
  523. package/dist/apps/control-plane/providers/providers.js +145 -14
  524. package/dist/apps/control-plane/providers/providers.js.map +1 -1
  525. package/dist/apps/control-plane/providers/worker-provider-factory.d.ts +2 -0
  526. package/dist/apps/control-plane/providers/worker-provider-factory.js +8 -1
  527. package/dist/apps/control-plane/providers/worker-provider-factory.js.map +1 -1
  528. package/dist/apps/control-plane/supervisor/artifact-stager.d.ts +5 -0
  529. package/dist/apps/control-plane/supervisor/artifact-stager.js +45 -0
  530. package/dist/apps/control-plane/supervisor/artifact-stager.js.map +1 -0
  531. package/dist/apps/control-plane/supervisor/build-wave-executor.d.ts +24 -1
  532. package/dist/apps/control-plane/supervisor/build-wave-executor.js +362 -150
  533. package/dist/apps/control-plane/supervisor/build-wave-executor.js.map +1 -1
  534. package/dist/apps/control-plane/supervisor/execution-enrollment-service.d.ts +41 -0
  535. package/dist/apps/control-plane/supervisor/execution-enrollment-service.js +311 -0
  536. package/dist/apps/control-plane/supervisor/execution-enrollment-service.js.map +1 -0
  537. package/dist/apps/control-plane/supervisor/organizer-enrollment-scheduler.d.ts +15 -0
  538. package/dist/apps/control-plane/supervisor/organizer-enrollment-scheduler.js +93 -0
  539. package/dist/apps/control-plane/supervisor/organizer-enrollment-scheduler.js.map +1 -0
  540. package/dist/apps/control-plane/supervisor/organizer-sidecar-service.d.ts +44 -0
  541. package/dist/apps/control-plane/supervisor/organizer-sidecar-service.js +311 -0
  542. package/dist/apps/control-plane/supervisor/organizer-sidecar-service.js.map +1 -0
  543. package/dist/apps/control-plane/supervisor/plan-conformance-scorer.js +2 -5
  544. package/dist/apps/control-plane/supervisor/plan-conformance-scorer.js.map +1 -1
  545. package/dist/apps/control-plane/supervisor/planner-phase.d.ts +3 -0
  546. package/dist/apps/control-plane/supervisor/planner-phase.js +70 -0
  547. package/dist/apps/control-plane/supervisor/planner-phase.js.map +1 -0
  548. package/dist/apps/control-plane/supervisor/planning-wave-executor.d.ts +42 -0
  549. package/dist/apps/control-plane/supervisor/planning-wave-executor.js +753 -55
  550. package/dist/apps/control-plane/supervisor/planning-wave-executor.js.map +1 -1
  551. package/dist/apps/control-plane/supervisor/prompt-bundle-loader.js +19 -1
  552. package/dist/apps/control-plane/supervisor/prompt-bundle-loader.js.map +1 -1
  553. package/dist/apps/control-plane/supervisor/qa-wave-executor.d.ts +21 -0
  554. package/dist/apps/control-plane/supervisor/qa-wave-executor.js +287 -156
  555. package/dist/apps/control-plane/supervisor/qa-wave-executor.js.map +1 -1
  556. package/dist/apps/control-plane/supervisor/run-coordinator.d.ts +33 -1
  557. package/dist/apps/control-plane/supervisor/run-coordinator.js +631 -39
  558. package/dist/apps/control-plane/supervisor/run-coordinator.js.map +1 -1
  559. package/dist/apps/control-plane/supervisor/runtime.d.ts +84 -0
  560. package/dist/apps/control-plane/supervisor/runtime.js +393 -3
  561. package/dist/apps/control-plane/supervisor/runtime.js.map +1 -1
  562. package/dist/apps/control-plane/supervisor/session-orchestrator.d.ts +54 -0
  563. package/dist/apps/control-plane/supervisor/session-orchestrator.js +176 -1
  564. package/dist/apps/control-plane/supervisor/session-orchestrator.js.map +1 -1
  565. package/dist/apps/control-plane/supervisor/types.d.ts +142 -1
  566. package/dist/apps/control-plane/supervisor/types.js.map +1 -1
  567. package/dist/apps/control-plane/supervisor/worker-decision-loop.d.ts +68 -2
  568. package/dist/apps/control-plane/supervisor/worker-decision-loop.js +723 -89
  569. package/dist/apps/control-plane/supervisor/worker-decision-loop.js.map +1 -1
  570. package/docs/core/ARCHITECTURE.md +227 -0
  571. package/docs/core/DECISIONS.md +94 -0
  572. package/docs/core/DOMAIN-LOGIC.md +60 -0
  573. package/docs/core/PATTERNS.md +201 -0
  574. package/docs/core/TROUBLESHOOTING.md +347 -0
  575. package/docs/core/intentgraph-dependencies.json +39860 -0
  576. package/docs/core/intentgraph.index.json +46580 -0
  577. package/docs/plans/2026-03-10-gate-failure-targeted-repair-design.md +224 -0
  578. package/docs/plans/2026-03-10-gate-failure-targeted-repair.md +1032 -0
  579. package/docs/superpowers/plans/2026-03-16-provider-cli-config.md +743 -0
  580. package/docs/superpowers/plans/2026-03-23-reconcile-divergence-fix.md +777 -0
  581. package/docs/superpowers/plans/2026-03-28-ordering-agent-implementation.md +1754 -0
  582. package/docs/superpowers/plans/2026-03-29-drop-zone-and-provider-optimization.md +1108 -0
  583. package/docs/superpowers/plans/2026-03-29-merge-target-feature-branch.md +685 -0
  584. package/docs/superpowers/plans/2026-03-29-organizer-sidecar-runtime-loop.md +1289 -0
  585. package/docs/superpowers/specs/2026-03-23-reconcile-divergence-fix-design.md +118 -0
  586. package/docs/superpowers/specs/2026-03-28-ordering-agent-spec-audit-design.md +50 -0
  587. package/docs/superpowers/specs/2026-03-29-drop-zone-and-provider-optimization-design.md +254 -0
  588. package/docs/superpowers/specs/2026-03-29-merge-target-feature-branch-design.md +152 -0
  589. package/docs/superpowers/specs/2026-03-29-organizer-sidecar-runtime-loop-design.md +225 -0
  590. package/package.json +3 -2
  591. package/packages/web-dashboard/package.json +2 -1
  592. package/packages/web-dashboard/src/app/analytics/page.tsx +36 -2
  593. package/packages/web-dashboard/src/app/api/actions/route.ts +274 -63
  594. package/packages/web-dashboard/src/app/api/actions/status/route.ts +35 -0
  595. package/packages/web-dashboard/src/app/api/analytics/provider/route.ts +18 -0
  596. package/packages/web-dashboard/src/app/api/collisions/approve/route.ts +58 -0
  597. package/packages/web-dashboard/src/app/api/features/[id]/checkpoint-diff/route.ts +36 -0
  598. package/packages/web-dashboard/src/app/api/features/[id]/checkpoints/route.ts +29 -0
  599. package/packages/web-dashboard/src/app/api/features/[id]/conflicts/abort/route.ts +29 -0
  600. package/packages/web-dashboard/src/app/api/features/[id]/conflicts/files/route.ts +30 -0
  601. package/packages/web-dashboard/src/app/api/features/[id]/conflicts/resolve/route.ts +51 -0
  602. package/packages/web-dashboard/src/app/api/features/[id]/conflicts/route.ts +75 -0
  603. package/packages/web-dashboard/src/app/api/features/[id]/diff/route.ts +16 -2
  604. package/packages/web-dashboard/src/app/api/features/[id]/files/route.ts +26 -0
  605. package/packages/web-dashboard/src/app/api/features/[id]/gate-history/route.ts +27 -0
  606. package/packages/web-dashboard/src/app/api/features/[id]/genealogy/route.ts +26 -0
  607. package/packages/web-dashboard/src/app/api/features/[id]/history/run/[runId]/route.ts +20 -0
  608. package/packages/web-dashboard/src/app/api/features/[id]/history/runs/route.ts +34 -0
  609. package/packages/web-dashboard/src/app/api/features/[id]/intake-workspace/route.ts +20 -0
  610. package/packages/web-dashboard/src/app/api/features/[id]/live-output/route.ts +74 -0
  611. package/packages/web-dashboard/src/app/api/features/[id]/plan/amend/route.ts +21 -0
  612. package/packages/web-dashboard/src/app/api/features/[id]/plan-progress/route.ts +20 -0
  613. package/packages/web-dashboard/src/app/api/features/[id]/planner-artifacts/[artifact]/route.ts +78 -0
  614. package/packages/web-dashboard/src/app/api/features/[id]/planner-lifecycle/route.ts +20 -0
  615. package/packages/web-dashboard/src/app/api/features/[id]/planning-workspace/route.ts +20 -0
  616. package/packages/web-dashboard/src/app/api/features/[id]/questions/[questionId]/answer/route.ts +27 -0
  617. package/packages/web-dashboard/src/app/api/features/[id]/questions/route.ts +18 -0
  618. package/packages/web-dashboard/src/app/api/features/[id]/review/route.ts +14 -7
  619. package/packages/web-dashboard/src/app/api/features/[id]/route.ts +57 -2
  620. package/packages/web-dashboard/src/app/api/features/[id]/spec/route.ts +30 -0
  621. package/packages/web-dashboard/src/app/api/features/[id]/triage/route.ts +83 -0
  622. package/packages/web-dashboard/src/app/api/features/[id]/worker-events/route.ts +40 -0
  623. package/packages/web-dashboard/src/app/api/launch/preview/route.ts +86 -0
  624. package/packages/web-dashboard/src/app/api/launch/submit/route.ts +180 -0
  625. package/packages/web-dashboard/src/app/api/mainline/status/route.ts +74 -0
  626. package/packages/web-dashboard/src/app/api/merge-queue/route.ts +13 -0
  627. package/packages/web-dashboard/src/app/api/policy/budget/route.ts +14 -0
  628. package/packages/web-dashboard/src/app/api/projects/route.ts +11 -7
  629. package/packages/web-dashboard/src/app/api/reconciler/queue/route.ts +47 -0
  630. package/packages/web-dashboard/src/app/api/run/route.ts +26 -2
  631. package/packages/web-dashboard/src/app/api/runtime/events/route.ts +227 -0
  632. package/packages/web-dashboard/src/app/api/runtime/operations/route.ts +269 -0
  633. package/packages/web-dashboard/src/app/api/runtime/questions/route.ts +11 -0
  634. package/packages/web-dashboard/src/app/api/runtime/runs/route.ts +80 -0
  635. package/packages/web-dashboard/src/app/api/status/route.ts +4 -2
  636. package/packages/web-dashboard/src/app/feature/[id]/page.tsx +32 -42
  637. package/packages/web-dashboard/src/app/globals.css +34 -3
  638. package/packages/web-dashboard/src/app/launch/page.tsx +357 -0
  639. package/packages/web-dashboard/src/app/layout.tsx +23 -1
  640. package/packages/web-dashboard/src/app/page.tsx +263 -272
  641. package/packages/web-dashboard/src/components/dashboard/attention-strip.tsx +52 -0
  642. package/packages/web-dashboard/src/components/dashboard/collision-approval-drawer.tsx +185 -0
  643. package/packages/web-dashboard/src/components/dashboard/command-center-header.tsx +102 -0
  644. package/packages/web-dashboard/src/components/dashboard/mainline-status-banner.tsx +84 -0
  645. package/packages/web-dashboard/src/components/dashboard/merged-archive.tsx +36 -0
  646. package/packages/web-dashboard/src/components/dashboard/prioritized-queues.tsx +98 -0
  647. package/packages/web-dashboard/src/components/dashboard/reconciler-queue-card.tsx +115 -0
  648. package/packages/web-dashboard/src/components/dashboard/secondary-diagnostics-rail.tsx +48 -0
  649. package/packages/web-dashboard/src/components/dashboard/task-filter-bar.tsx +74 -0
  650. package/packages/web-dashboard/src/components/dashboard/triage-drawer.tsx +455 -0
  651. package/packages/web-dashboard/src/components/diff-viewer.tsx +19 -3
  652. package/packages/web-dashboard/src/components/evidence-viewer.tsx +65 -51
  653. package/packages/web-dashboard/src/components/feature-card.tsx +90 -7
  654. package/packages/web-dashboard/src/components/feature-cost-panel.tsx +112 -11
  655. package/packages/web-dashboard/src/components/feature-list-view.tsx +25 -4
  656. package/packages/web-dashboard/src/components/features/runtime-inspector/EventsTimelineView.tsx +260 -0
  657. package/packages/web-dashboard/src/components/features/runtime-inspector/OperationsListView.tsx +172 -0
  658. package/packages/web-dashboard/src/components/features/runtime-inspector/RuntimeInspectorPanel.tsx +896 -0
  659. package/packages/web-dashboard/src/components/filter-bar.tsx +7 -39
  660. package/packages/web-dashboard/src/components/focus/ActionableRiskList.tsx +46 -0
  661. package/packages/web-dashboard/src/components/focus/AgentRolePerformanceCard.tsx +200 -0
  662. package/packages/web-dashboard/src/components/focus/BlockedGuidanceBanner.tsx +149 -0
  663. package/packages/web-dashboard/src/components/focus/CheckpointInspector.tsx +123 -0
  664. package/packages/web-dashboard/src/components/focus/CheckpointRail.tsx +118 -0
  665. package/packages/web-dashboard/src/components/focus/CheckpointScrubber.tsx +249 -0
  666. package/packages/web-dashboard/src/components/focus/CollisionApprovalBanner.tsx +192 -0
  667. package/packages/web-dashboard/src/components/focus/CollisionRadar.tsx +136 -0
  668. package/packages/web-dashboard/src/components/focus/ConflictStatusCard.tsx +52 -0
  669. package/packages/web-dashboard/src/components/focus/ContextSidebar.tsx +108 -0
  670. package/packages/web-dashboard/src/components/focus/DiagnosisPanel.tsx +68 -0
  671. package/packages/web-dashboard/src/components/focus/FeatureDecisionBanner.tsx +68 -0
  672. package/packages/web-dashboard/src/components/focus/FeatureQuestionAnswerPanel.tsx +167 -0
  673. package/packages/web-dashboard/src/components/focus/FocusHeader.tsx +54 -0
  674. package/packages/web-dashboard/src/components/focus/FocusLayout.tsx +283 -0
  675. package/packages/web-dashboard/src/components/focus/GateFlakinessSummary.tsx +144 -0
  676. package/packages/web-dashboard/src/components/focus/GenealogyTree.tsx +34 -0
  677. package/packages/web-dashboard/src/components/focus/HeroBlock.tsx +67 -0
  678. package/packages/web-dashboard/src/components/focus/LiveAgentConsole.tsx +277 -0
  679. package/packages/web-dashboard/src/components/focus/MergeQueueCard.tsx +78 -0
  680. package/packages/web-dashboard/src/components/focus/OperationalSummaryCard.tsx +227 -0
  681. package/packages/web-dashboard/src/components/focus/PinnedActions.tsx +96 -0
  682. package/packages/web-dashboard/src/components/focus/PlanAmendmentPanel.tsx +250 -0
  683. package/packages/web-dashboard/src/components/focus/PlanProgressPanel.tsx +133 -0
  684. package/packages/web-dashboard/src/components/focus/PlannerArtifactViewer.tsx +158 -0
  685. package/packages/web-dashboard/src/components/focus/PlannerLifecycleHeader.tsx +141 -0
  686. package/packages/web-dashboard/src/components/focus/ProgressSnapshotCard.tsx +113 -0
  687. package/packages/web-dashboard/src/components/focus/RecentMaterialChanges.tsx +69 -0
  688. package/packages/web-dashboard/src/components/focus/RoleLogViewer.tsx +436 -0
  689. package/packages/web-dashboard/src/components/focus/RunHistoryBrowser.tsx +62 -0
  690. package/packages/web-dashboard/src/components/focus/SpecViewer.tsx +172 -0
  691. package/packages/web-dashboard/src/components/focus/TabBar.tsx +33 -0
  692. package/packages/web-dashboard/src/components/focus/UsageBurnChart.tsx +212 -0
  693. package/packages/web-dashboard/src/components/focus/VerificationSummaryCard.tsx +122 -0
  694. package/packages/web-dashboard/src/components/focus/tabs/ChangesTab.tsx +325 -0
  695. package/packages/web-dashboard/src/components/focus/tabs/ConflictsTab.tsx +395 -0
  696. package/packages/web-dashboard/src/components/focus/tabs/GatesQaTab.tsx +38 -0
  697. package/packages/web-dashboard/src/components/focus/tabs/HistoryTab.tsx +213 -0
  698. package/packages/web-dashboard/src/components/focus/tabs/IntakeTab.tsx +429 -0
  699. package/packages/web-dashboard/src/components/focus/tabs/OverviewTab.tsx +217 -0
  700. package/packages/web-dashboard/src/components/focus/tabs/PlanningTab.tsx +390 -0
  701. package/packages/web-dashboard/src/components/focus/tabs/ReviewTab.tsx +497 -0
  702. package/packages/web-dashboard/src/components/focus/tabs/RuntimeTab.tsx +213 -0
  703. package/packages/web-dashboard/src/components/focus/tabs/TranscriptTab.tsx +315 -0
  704. package/packages/web-dashboard/src/components/gate-results.tsx +2 -2
  705. package/packages/web-dashboard/src/components/human-input-panel.tsx +33 -57
  706. package/packages/web-dashboard/src/components/kanban-board.tsx +4 -0
  707. package/packages/web-dashboard/src/components/launch/launch-draft-card.tsx +131 -0
  708. package/packages/web-dashboard/src/components/plan-viewer.tsx +147 -69
  709. package/packages/web-dashboard/src/components/quick-launch-panel.tsx +20 -47
  710. package/packages/web-dashboard/src/components/summary-bar.tsx +30 -76
  711. package/packages/web-dashboard/src/lib/aop-client.ts +2484 -36
  712. package/packages/web-dashboard/src/lib/blocked-state-guidance.ts +475 -0
  713. package/packages/web-dashboard/src/lib/collision-radar.ts +136 -0
  714. package/packages/web-dashboard/src/lib/dashboard-action-states.ts +204 -0
  715. package/packages/web-dashboard/src/lib/dashboard-runtime-client.ts +439 -0
  716. package/packages/web-dashboard/src/lib/dashboard-utils.ts +179 -18
  717. package/packages/web-dashboard/src/lib/drop-zone-utils.ts +92 -0
  718. package/packages/web-dashboard/src/lib/focus-detail-derivations.ts +958 -0
  719. package/packages/web-dashboard/src/lib/focus-view.ts +300 -0
  720. package/packages/web-dashboard/src/lib/health-diagnosis.ts +356 -0
  721. package/packages/web-dashboard/src/lib/launch-contracts.ts +77 -0
  722. package/packages/web-dashboard/src/lib/launch-markdown.ts +107 -0
  723. package/packages/web-dashboard/src/lib/launch-page-preview.ts +89 -0
  724. package/packages/web-dashboard/src/lib/live-feed.ts +1 -1
  725. package/packages/web-dashboard/src/lib/multi-project-config.ts +33 -0
  726. package/packages/web-dashboard/src/lib/orchestrator-tools.ts +845 -59
  727. package/packages/web-dashboard/src/lib/planner-workspace.ts +1285 -0
  728. package/packages/web-dashboard/src/lib/review-contracts.ts +5 -3
  729. package/packages/web-dashboard/src/lib/runtime-files.ts +285 -0
  730. package/packages/web-dashboard/src/lib/tool-catalog.ts +51 -0
  731. package/packages/web-dashboard/src/lib/types.ts +731 -3
  732. package/packages/web-dashboard/src/lib/usage-burn.ts +175 -0
  733. package/packages/web-dashboard/src/lib/worktree-diff.ts +128 -0
  734. package/packages/web-dashboard/src/styles/dashboard.module.css +1742 -459
  735. package/packages/web-dashboard/test/api/actions/route.spec.ts +675 -0
  736. package/packages/web-dashboard/test/api/features/diff.route.spec.ts +57 -0
  737. package/packages/web-dashboard/test/api/features/feature.route.spec.ts +99 -0
  738. package/packages/web-dashboard/test/api/features/live-output.route.spec.ts +123 -0
  739. package/packages/web-dashboard/test/api/features/plan-amend.route.spec.ts +95 -0
  740. package/packages/web-dashboard/test/api/features/planner-workspaces.route.spec.ts +162 -0
  741. package/packages/web-dashboard/test/api/features/question-answer.route.spec.ts +99 -0
  742. package/packages/web-dashboard/test/api/features/triage.route.spec.ts +195 -0
  743. package/packages/web-dashboard/test/api/launch/preview.route.spec.ts +149 -0
  744. package/packages/web-dashboard/test/api/launch/submit.route.spec.ts +382 -0
  745. package/packages/web-dashboard/test/api/runtime/events/route.spec.ts +164 -0
  746. package/packages/web-dashboard/test/api/runtime/operations/route.spec.ts +156 -0
  747. package/packages/web-dashboard/test/api/runtime/runs/route.spec.ts +112 -0
  748. package/packages/web-dashboard/test/components/changes-tab.spec.tsx +76 -0
  749. package/packages/web-dashboard/test/components/command-center-root.spec.tsx +87 -0
  750. package/packages/web-dashboard/test/components/diagnosis-panel.spec.tsx +59 -0
  751. package/packages/web-dashboard/test/components/feature-card.spec.tsx +45 -0
  752. package/packages/web-dashboard/test/components/focus-layout.spec.tsx +299 -0
  753. package/packages/web-dashboard/test/components/gate-results.spec.tsx +39 -0
  754. package/packages/web-dashboard/test/components/gates-qa-tab.spec.tsx +118 -0
  755. package/packages/web-dashboard/test/components/human-input-panel.spec.tsx +54 -0
  756. package/packages/web-dashboard/test/components/intake-tab.spec.tsx +210 -0
  757. package/packages/web-dashboard/test/components/kanban-board.spec.tsx +35 -0
  758. package/packages/web-dashboard/test/components/launch-draft-card.spec.tsx +54 -0
  759. package/packages/web-dashboard/test/components/launch-page.spec.tsx +79 -0
  760. package/packages/web-dashboard/test/components/overview-tab.spec.tsx +236 -0
  761. package/packages/web-dashboard/test/components/planning-tab.spec.tsx +202 -0
  762. package/packages/web-dashboard/test/components/review-tab.spec.tsx +169 -0
  763. package/packages/web-dashboard/test/components/role-log-viewer.spec.ts +42 -0
  764. package/packages/web-dashboard/test/components/runtime-inspector.spec.tsx +22 -0
  765. package/packages/web-dashboard/test/components/runtime-tab.spec.tsx +133 -0
  766. package/packages/web-dashboard/test/components/transcript-tab.spec.tsx +46 -0
  767. package/packages/web-dashboard/test/components/triage-drawer.spec.tsx +159 -0
  768. package/packages/web-dashboard/test/lib/aop-client.spec.ts +235 -0
  769. package/packages/web-dashboard/test/lib/dashboard-runtime-client.spec.ts +144 -0
  770. package/packages/web-dashboard/test/lib/focus-detail-derivations.spec.ts +314 -0
  771. package/packages/web-dashboard/test/lib/focus-view.spec.ts +248 -0
  772. package/packages/web-dashboard/test/lib/health-diagnosis.spec.ts +277 -0
  773. package/packages/web-dashboard/test/lib/launch-markdown.spec.ts +36 -0
  774. package/packages/web-dashboard/test/lib/multi-project-config.spec.ts +54 -0
  775. package/packages/web-dashboard/test/lib/orchestrator-tools.spec.ts +352 -0
  776. package/packages/web-dashboard/test/lib/planner-workspace.spec.ts +289 -0
  777. package/packages/web-dashboard/test/lib/worktree-diff.spec.ts +119 -0
  778. package/packages/web-dashboard/vitest.config.ts +2 -0
  779. package/spec-files/completed/agentic_orchestrator_add_feature_to_active_execution_spec.md +557 -0
  780. package/spec-files/completed/agentic_orchestrator_dashboard_command_center_redesign_spec.md +1147 -0
  781. package/spec-files/completed/agentic_orchestrator_execution_mode_spec.md +18 -16
  782. package/spec-files/completed/agentic_orchestrator_feature_focus_view_track_a_spec.md +672 -0
  783. package/spec-files/completed/agentic_orchestrator_feature_focus_view_track_b_spec.md +794 -0
  784. package/spec-files/completed/agentic_orchestrator_feature_focus_view_track_c_decision_centric_remediation_spec.md +1037 -0
  785. package/spec-files/completed/agentic_orchestrator_feature_focus_view_ux_redesign_spec.md +1432 -0
  786. package/spec-files/completed/agentic_orchestrator_focus_plan_tab_intake_planning_workspace_spec.md +921 -0
  787. package/spec-files/completed/agentic_orchestrator_intentional_collision_override_spec.md +584 -0
  788. package/spec-files/completed/agentic_orchestrator_interactive_planning_intake_and_requirements_verification_spec.md +1185 -0
  789. package/spec-files/completed/agentic_orchestrator_reactive_execution_enrollment_spec.md +864 -0
  790. package/spec-files/{outstanding → completed}/agentic_orchestrator_runtime_inspection_spec.md +92 -19
  791. package/spec-files/completed/agentic_orchestrator_scope_aware_run_lease_spec.md +408 -0
  792. package/spec-files/completed/git-reconciliation-engine.md +827 -0
  793. package/spec-files/outstanding/agentic_orchestrator_dashboard_quick_launch_and_control_surface_spec.md +331 -0
  794. package/spec-files/outstanding/agentic_orchestrator_enterprise_governance_dashboard_spec.md +16 -6
  795. package/spec-files/outstanding/agentic_orchestrator_evidence_integrity_doctor_spec.md +60 -9
  796. package/spec-files/outstanding/agentic_orchestrator_focus_plan_tab_execution_contract_workspace_spec.md +616 -0
  797. package/spec-files/outstanding/agentic_orchestrator_headless_standby_dashboard_runtime_spec.md +310 -0
  798. package/spec-files/outstanding/agentic_orchestrator_human_input_interaction_protocol_spec.md +175 -72
  799. package/spec-files/outstanding/agentic_orchestrator_interactive_rename_cleanup_spec.md +197 -0
  800. package/spec-files/outstanding/agentic_orchestrator_interactive_resume_and_reconciliation_disposition_spec.md +412 -0
  801. package/spec-files/outstanding/agentic_orchestrator_knowledge_canary_spec.md +166 -137
  802. package/spec-files/outstanding/agentic_orchestrator_observability_replay_spec.md +3 -3
  803. package/spec-files/outstanding/agentic_orchestrator_phase_specific_agent_profiles_and_token_telemetry_spec.md +303 -0
  804. package/spec-files/outstanding/agentic_orchestrator_planning_review_quality_spec.md +18 -5
  805. package/spec-files/outstanding/agentic_orchestrator_policy_stratification_spec.md +225 -0
  806. package/spec-files/outstanding/agentic_orchestrator_quality_adoption_execution_spec.md +77 -50
  807. package/spec-files/outstanding/agentic_orchestrator_ready_to_merge_branch_handoff_spec.md +724 -0
  808. package/spec-files/outstanding/agentic_orchestrator_remove_deterministic_mode_spec.md +263 -0
  809. package/spec-files/outstanding/agentic_orchestrator_request_more_context_and_dashboard_human_input_spec.md +456 -0
  810. package/spec-files/outstanding/agentic_orchestrator_spec_coverage_and_reconciliation_enforcement_spec.md +1411 -0
  811. package/spec-files/outstanding/agentic_orchestrator_spec_ordering_agent_spec.md +370 -0
  812. package/spec-files/outstanding/shadow_workspace_implementation_spec.md +1 -1
  813. package/spec-files/progress.md +2045 -87
  814. package/specs/001-runtime-inspection/checklists/requirements.md +35 -0
  815. package/specs/001-runtime-inspection/design.md +338 -0
  816. package/specs/001-runtime-inspection/spec.md +95 -0
  817. package/specs/002-scope-aware-lease/checklists/requirements.md +35 -0
  818. package/specs/002-scope-aware-lease/contracts/lease-registry.schema.json +101 -0
  819. package/specs/002-scope-aware-lease/data-model.md +236 -0
  820. package/specs/002-scope-aware-lease/plan.md +766 -0
  821. package/specs/002-scope-aware-lease/quickstart.md +150 -0
  822. package/specs/002-scope-aware-lease/research.md +135 -0
  823. package/specs/002-scope-aware-lease/spec.md +128 -0
  824. package/specs/002-scope-aware-lease/tasks.md +767 -0
  825. package/tsconfig.json +1 -1
  826. package/vitest.config.ts +28 -0
  827. package/ARCHITECTURE_ADHERENCE_ANALYSIS.md +0 -871
  828. package/packages/web-dashboard/next-env.d.ts +0 -6
  829. package/packages/web-dashboard/src/components/detail-panel.tsx +0 -1124
  830. package/packages/web-dashboard/src/components/review-workspace.tsx +0 -1162
  831. /package/spec-files/{outstanding → completed}/agentic_orchestrator_artifact_database_publishing_spec.md +0 -0
  832. /package/spec-files/{outstanding → completed}/agentic_orchestrator_cli_shell_tab_completion_spec.md +0 -0
  833. /package/spec-files/{outstanding → completed}/agentic_orchestrator_dashboard_diff_and_agent_console_spec.md +0 -0
  834. /package/spec-files/{outstanding → completed}/agentic_orchestrator_performance_improvements_spec.md +0 -0
  835. /package/spec-files/{outstanding → completed}/agentic_orchestrator_persistent_worker_runtime_spec.md +0 -0
  836. /package/spec-files/{outstanding → completed}/agentic_orchestrator_provider_auth_bootstrap_spec.md +0 -0
  837. /package/spec-files/{outstanding → completed}/agentic_orchestrator_real_worker_provider_execution_spec.md +0 -0
@@ -1,560 +1,1607 @@
1
- .dashboardRoot {
2
- --color-planning: #2f7de1;
3
- --color-building: #d27a2c;
4
- --color-qa: #b1952f;
5
- --color-ready: #209f6f;
6
- --color-blocked: #c83d47;
7
- --color-merged: #6b7f96;
8
- --bg-page: radial-gradient(circle at top left, #1d253f 0%, #0b1023 48%, #060911 100%);
9
- --bg-card: rgba(9, 17, 37, 0.92);
10
- --bg-panel: rgba(17, 27, 50, 0.92);
11
- --bg-elevated: rgba(25, 37, 67, 0.92);
12
- --text-primary: #eff5ff;
13
- --text-muted: #9baec8;
14
- --border-weak: #2a3a5c;
15
- --border-strong: #4d648d;
16
- --shadow-soft: 0 16px 36px rgba(2, 8, 20, 0.35);
17
-
1
+ .appShell {
18
2
  min-height: 100vh;
19
- max-width: 1780px;
20
- margin: 0 auto;
21
- padding: 1.25rem;
22
- overflow-x: hidden;
23
- overflow-x: clip;
24
- background: var(--bg-page);
25
- color: var(--text-primary);
26
- font-family: 'IBM Plex Sans', 'Segoe UI', 'Helvetica Neue', sans-serif;
3
+ display: flex;
4
+ flex-direction: column;
5
+ background: linear-gradient(180deg, #f8fbfc 0%, #eff2f3 100%);
27
6
  }
28
7
 
29
- .topBar {
8
+ .wrapAnywhere {
9
+ min-width: 0;
10
+ overflow-wrap: anywhere;
11
+ word-break: break-word;
12
+ }
13
+
14
+ .operationalSummaryCard,
15
+ .progressSnapshotCard,
16
+ .focusDecisionBanner,
17
+ .progressTaskPanel,
18
+ .runHistoryRow,
19
+ .logViewerRow,
20
+ .specViewerToc,
21
+ .specViewerContent {
22
+ min-width: 0;
23
+ }
24
+
25
+ .operationalMetaGrid,
26
+ .progressSnapshotStats,
27
+ .focusOverviewGrid,
28
+ .specViewerLayout,
29
+ .logViewerLayout,
30
+ .planWorkspace {
31
+ display: grid;
32
+ gap: 0.75rem;
33
+ }
34
+
35
+ .operationalMetaGrid {
36
+ grid-template-columns: repeat(2, minmax(0, 1fr));
37
+ }
38
+
39
+ .summaryMetricCard,
40
+ .focusOverviewCard,
41
+ .progressTaskPanel,
42
+ .logViewerContent,
43
+ .specViewerToc,
44
+ .specViewerContent {
45
+ border: 1px solid rgba(15, 23, 42, 0.12);
46
+ border-radius: 0.9rem;
47
+ padding: 0.75rem;
48
+ background: rgba(255, 255, 255, 0.75);
49
+ }
50
+
51
+ .summaryMetricCard {
30
52
  display: flex;
53
+ flex-direction: column;
31
54
  justify-content: space-between;
32
- align-items: center;
33
- gap: 1rem;
34
- margin-bottom: 1rem;
55
+ gap: 0.4rem;
56
+ min-height: 5rem;
35
57
  }
36
58
 
37
- .titleBlock {
59
+ .focusOverviewGrid {
60
+ grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
61
+ align-items: stretch;
62
+ }
63
+
64
+ .focusOverviewCard {
38
65
  display: flex;
39
66
  flex-direction: column;
40
- gap: 0.25rem;
67
+ justify-content: space-between;
68
+ gap: 0.45rem;
69
+ min-height: 5rem;
41
70
  }
42
71
 
43
- .pageTitle {
44
- font-size: clamp(1.55rem, 3vw, 2rem);
45
- letter-spacing: 0.02em;
72
+ .focusOverviewCard strong {
73
+ display: block;
74
+ margin: 0;
75
+ font-size: 1rem;
76
+ line-height: 1.4;
77
+ color: var(--text-primary);
46
78
  }
47
79
 
48
- .pageSubtitle {
80
+ .summaryMetricLabel {
49
81
  color: var(--text-muted);
50
- font-size: 0.78rem;
82
+ font-size: 0.72rem;
83
+ letter-spacing: 0.02em;
51
84
  text-transform: uppercase;
52
- letter-spacing: 0.08em;
53
85
  }
54
86
 
55
- .metaControls {
87
+ .summaryMetricValue {
88
+ display: block;
89
+ margin: 0;
90
+ font-size: 0.98rem;
91
+ line-height: 1.4;
92
+ color: var(--text-primary);
93
+ }
94
+
95
+ .operationalNarrative {
96
+ margin: 0;
97
+ font-size: 0.95rem;
98
+ line-height: 1.55;
99
+ overflow-wrap: anywhere;
100
+ }
101
+
102
+ .progressSnapshotStats {
103
+ grid-template-columns: repeat(2, minmax(0, 1fr));
104
+ align-items: stretch;
105
+ }
106
+
107
+ .progressSnapshotNarrative {
108
+ margin: 0;
109
+ font-size: 0.88rem;
110
+ line-height: 1.45;
111
+ color: var(--text-primary);
112
+ overflow-wrap: anywhere;
113
+ }
114
+
115
+ .focusDecisionBanner {
116
+ border: 1px solid rgba(15, 23, 42, 0.12);
117
+ }
118
+
119
+ .focusDecisionBannerReady {
120
+ background: linear-gradient(135deg, rgba(216, 245, 224, 0.9), rgba(255, 255, 255, 0.95));
121
+ }
122
+
123
+ .focusDecisionBannerRisk {
124
+ background: linear-gradient(135deg, rgba(255, 242, 204, 0.9), rgba(255, 255, 255, 0.95));
125
+ }
126
+
127
+ .focusDecisionBannerBlocked {
128
+ background: linear-gradient(135deg, rgba(252, 225, 225, 0.92), rgba(255, 255, 255, 0.95));
129
+ }
130
+
131
+ .focusDecisionBannerNeutral {
132
+ background: linear-gradient(135deg, rgba(232, 238, 245, 0.92), rgba(255, 255, 255, 0.95));
133
+ }
134
+
135
+ .focusDecisionHeadline {
56
136
  display: flex;
57
137
  align-items: center;
58
- gap: 0.65rem;
138
+ justify-content: space-between;
139
+ gap: 0.75rem;
59
140
  flex-wrap: wrap;
60
- justify-content: flex-end;
61
141
  }
62
142
 
63
- .label {
64
- color: var(--text-muted);
65
- font-size: 0.75rem;
143
+ .collapsibleSummary {
144
+ display: flex;
145
+ align-items: flex-start;
146
+ justify-content: space-between;
147
+ gap: 0.85rem;
148
+ cursor: pointer;
66
149
  }
67
150
 
68
- .select,
69
- .input,
70
- .textarea,
71
- .filterSearch,
72
- .actionSelect {
73
- background: rgba(11, 20, 42, 0.95);
151
+ .collapsibleSummaryTitleGroup {
152
+ min-width: 0;
153
+ display: grid;
154
+ gap: 0.18rem;
155
+ }
156
+
157
+ .collapsibleSummaryHeading {
158
+ font-size: 0.84rem;
159
+ font-weight: 700;
74
160
  color: var(--text-primary);
75
- border: 1px solid var(--border-weak);
76
- border-radius: 0.55rem;
77
- padding: 0.46rem 0.6rem;
78
- font: inherit;
79
161
  }
80
162
 
81
- .select:focus,
82
- .input:focus,
83
- .textarea:focus,
84
- .filterSearch:focus,
85
- .actionSelect:focus,
86
- .cardButton:focus-visible,
87
- .button:focus-visible,
88
- .linkButton:focus-visible,
89
- .summaryTile:focus-visible,
90
- .filterToggle:focus-visible {
91
- outline: 2px solid #7fc6ff;
92
- outline-offset: 1px;
163
+ .collapsibleSummaryDetail {
164
+ margin: 0;
165
+ font-size: 0.78rem;
166
+ line-height: 1.45;
167
+ color: var(--text-muted);
93
168
  }
94
169
 
95
- .connectionDot {
96
- width: 0.62rem;
97
- height: 0.62rem;
98
- border-radius: 999px;
170
+ .collapsibleSummaryMeta {
171
+ display: inline-flex;
172
+ align-items: center;
173
+ gap: 0.35rem;
174
+ flex-wrap: wrap;
99
175
  }
100
176
 
101
- .connected {
102
- background: #1fce8f;
103
- box-shadow: 0 0 0 0.2rem rgba(31, 206, 143, 0.2);
177
+ .collapsibleBody {
178
+ display: grid;
179
+ gap: 0.75rem;
104
180
  }
105
181
 
106
- .disconnected {
107
- background: #ea5264;
108
- box-shadow: 0 0 0 0.2rem rgba(234, 82, 100, 0.2);
182
+ .operatorConsoleCallout {
183
+ border-color: var(--border-accent);
184
+ background:
185
+ linear-gradient(135deg, rgba(255, 250, 235, 0.92), rgba(255, 255, 255, 0.95)),
186
+ rgba(255, 255, 255, 0.94);
109
187
  }
110
188
 
111
- .summaryBar {
189
+ .operatorConsoleActions {
190
+ display: flex;
191
+ gap: 0.45rem;
192
+ flex-wrap: wrap;
193
+ }
194
+
195
+ .specViewerLayout,
196
+ .logViewerLayout {
197
+ grid-template-columns: minmax(13rem, 0.32fr) minmax(0, 1fr);
198
+ align-items: start;
199
+ }
200
+
201
+ .planWorkspace {
202
+ grid-template-columns: minmax(0, 1.15fr) minmax(18rem, 0.85fr);
203
+ align-items: start;
204
+ }
205
+
206
+ .plannerStepper,
207
+ .plannerArtifactTabs {
112
208
  display: grid;
113
- grid-template-columns: repeat(6, minmax(0, 1fr));
114
- gap: 0.65rem;
115
- margin-bottom: 0.75rem;
209
+ gap: 0.75rem;
116
210
  }
117
211
 
118
- .summaryTile {
212
+ .plannerStepper {
213
+ grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
214
+ }
215
+
216
+ .plannerStepCard,
217
+ .plannerQueueItem,
218
+ .inlineQuestionPanel {
219
+ border: 1px solid rgba(15, 23, 42, 0.12);
220
+ border-radius: 0.9rem;
221
+ background: rgba(255, 255, 255, 0.78);
222
+ padding: 0.75rem;
223
+ }
224
+
225
+ .plannerArtifactTabs {
226
+ grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
227
+ }
228
+
229
+ .plannerQueueItem {
230
+ display: grid;
231
+ gap: 0.55rem;
232
+ }
233
+
234
+ .inlineQuestionPanel {
235
+ display: grid;
236
+ gap: 0.75rem;
237
+ }
238
+
239
+ .specViewerToc {
240
+ position: sticky;
241
+ top: 1rem;
242
+ align-self: start;
243
+ }
244
+
245
+ .specViewerContent {
246
+ overflow: hidden;
247
+ }
248
+
249
+ .markdownPreview {
250
+ display: grid;
251
+ gap: 0.75rem;
252
+ font-size: 0.9rem;
253
+ line-height: 1.65;
254
+ color: var(--text-primary);
255
+ }
256
+
257
+ .markdownPreview h2,
258
+ .markdownPreview h3,
259
+ .markdownPreview h4 {
260
+ margin: 0;
261
+ scroll-margin-top: 6rem;
262
+ }
263
+
264
+ .markdownPreview p,
265
+ .markdownPreview ul,
266
+ .markdownPreview ol,
267
+ .markdownPreview blockquote,
268
+ .markdownPreview pre,
269
+ .markdownPreview hr {
270
+ margin: 0;
271
+ }
272
+
273
+ .markdownPreview ul,
274
+ .markdownPreview ol {
275
+ padding-left: 1.25rem;
276
+ }
277
+
278
+ .preformattedBlock {
279
+ margin: 0;
280
+ padding: 0.85rem;
119
281
  border: 1px solid var(--border-weak);
120
282
  border-radius: 0.75rem;
121
- background: linear-gradient(145deg, rgba(24, 34, 60, 0.95), rgba(10, 16, 34, 0.9));
122
- color: var(--text-primary);
123
- text-decoration: none;
124
- padding: 0.75rem;
125
- text-align: left;
126
- box-shadow: var(--shadow-soft);
127
- cursor: pointer;
283
+ background: rgba(250, 251, 252, 0.94);
284
+ font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
285
+ font-size: 0.79rem;
286
+ line-height: 1.55;
287
+ overflow: auto;
288
+ white-space: pre-wrap;
289
+ overflow-wrap: anywhere;
128
290
  }
129
291
 
130
- .summaryTile:hover {
131
- border-color: #7b9ed1;
292
+ .markdownPreview li {
293
+ overflow-wrap: anywhere;
132
294
  }
133
295
 
134
- .summaryTileActive {
135
- border-color: #87d0ff;
136
- background: linear-gradient(145deg, rgba(34, 50, 87, 0.98), rgba(11, 24, 51, 0.95));
296
+ .markdownPreview blockquote {
297
+ border-left: 3px solid rgba(91, 173, 178, 0.36);
298
+ padding-left: 0.9rem;
299
+ color: var(--text-on-accent);
137
300
  }
138
301
 
139
- .summaryTileAlert {
140
- border-color: rgba(234, 82, 100, 0.7);
141
- background: linear-gradient(145deg, rgba(70, 24, 34, 0.94), rgba(36, 11, 18, 0.95));
302
+ .markdownPreview hr {
303
+ border: 0;
304
+ border-top: 1px solid rgba(15, 23, 42, 0.12);
142
305
  }
143
306
 
144
- .summaryTileAlert.summaryTileActive {
145
- border-color: rgba(255, 139, 154, 0.95);
307
+ .markdownPreview pre {
308
+ overflow: auto;
309
+ padding: 0.8rem;
310
+ border: 1px solid rgba(15, 23, 42, 0.12);
311
+ border-radius: 0.8rem;
312
+ background: rgba(248, 250, 252, 0.92);
146
313
  }
147
314
 
148
- .summaryValue {
315
+ .markdownPreview code {
316
+ font-family: 'IBM Plex Mono', 'Fira Code', monospace;
317
+ font-size: 0.84em;
318
+ background: rgba(239, 242, 243, 0.92);
319
+ border-radius: 0.3rem;
320
+ padding: 0.1rem 0.25rem;
321
+ }
322
+
323
+ .markdownPreview pre code {
149
324
  display: block;
150
- font-size: 1.2rem;
325
+ padding: 0;
326
+ background: transparent;
327
+ white-space: pre-wrap;
328
+ word-break: break-word;
329
+ }
330
+
331
+ .markdownPreview :global(.markdownTableWrapper) {
332
+ max-width: 100%;
333
+ overflow-x: auto;
334
+ }
335
+
336
+ .markdownPreview table {
337
+ width: 100%;
338
+ min-width: 28rem;
339
+ border-collapse: collapse;
340
+ font-size: 0.82rem;
341
+ }
342
+
343
+ .markdownPreview th,
344
+ .markdownPreview td {
345
+ border: 1px solid rgba(15, 23, 42, 0.12);
346
+ padding: 0.45rem 0.55rem;
347
+ text-align: left;
348
+ vertical-align: top;
349
+ }
350
+
351
+ .markdownPreview th {
352
+ background: rgba(239, 248, 255, 0.8);
151
353
  font-weight: 700;
152
354
  }
153
355
 
154
- .summaryLabel {
155
- color: var(--text-muted);
156
- font-size: 0.75rem;
356
+ .logViewerList,
357
+ .focusSidebar .planList {
358
+ min-width: 0;
157
359
  }
158
360
 
159
- .sparklinePoint {
160
- fill: rgba(127, 198, 255, 0.01);
161
- stroke: transparent;
361
+ .logViewerList {
362
+ display: grid;
363
+ gap: 0.5rem;
162
364
  }
163
365
 
164
- .filterBar {
165
- border: 1px solid var(--border-weak);
166
- border-radius: 0.78rem;
167
- background: rgba(8, 14, 31, 0.88);
168
- box-shadow: var(--shadow-soft);
169
- padding: 0.75rem;
170
- margin-bottom: 1rem;
366
+ .runHistoryRow,
367
+ .logViewerRow {
171
368
  display: flex;
172
- flex-direction: column;
173
- gap: 0.65rem;
369
+ align-items: center;
370
+ justify-content: space-between;
371
+ gap: 0.75rem;
372
+ width: 100%;
373
+ border: 1px solid rgba(15, 23, 42, 0.12);
374
+ border-radius: 0.9rem;
375
+ background: rgba(255, 255, 255, 0.75);
376
+ padding: 0.75rem;
377
+ text-align: left;
174
378
  }
175
379
 
176
- .filterRow {
380
+ .runHistoryRowActive,
381
+ .logViewerRowActive {
382
+ border-color: var(--border-strong);
383
+ background: rgba(239, 248, 255, 0.98);
384
+ box-shadow: 0 0 0 2px rgba(91, 173, 178, 0.18);
385
+ }
386
+
387
+ .planTaskDetails summary {
177
388
  display: flex;
178
- flex-wrap: wrap;
179
389
  align-items: center;
180
- gap: 0.5rem;
390
+ gap: 0.75rem;
391
+ flex-wrap: wrap;
392
+ }
393
+
394
+ @media (max-width: 900px) {
395
+ .specViewerLayout,
396
+ .planWorkspace,
397
+ .logViewerLayout {
398
+ grid-template-columns: minmax(0, 1fr);
399
+ }
400
+
401
+ .specViewerToc {
402
+ position: static;
403
+ }
404
+ }
405
+
406
+ .appBody {
407
+ flex: 1 1 auto;
408
+ }
409
+
410
+ .appFooter {
411
+ width: min(1780px, calc(100% - 2rem));
412
+ margin: 0 auto 1rem;
413
+ }
414
+
415
+ .footerLinks {
416
+ display: flex;
417
+ justify-content: flex-end;
418
+ gap: 0.5rem;
419
+ padding: 0 1.25rem;
420
+ }
421
+
422
+ .dashboardRoot {
423
+ --color-planning: #28b2ff;
424
+ --color-intake: #5badb2;
425
+ --color-building: #f8be2d;
426
+ --color-qa: #ffa62b;
427
+ --color-ready: #0f766e;
428
+ --color-blocked: #b42318;
429
+ --color-merged: #596873;
430
+ --bg-page:
431
+ radial-gradient(circle at 15% 20%, rgba(91, 173, 178, 0.12), transparent 28%),
432
+ radial-gradient(circle at 85% 0%, rgba(248, 190, 45, 0.1), transparent 30%),
433
+ linear-gradient(180deg, #f8fbfc 0%, #eff2f3 100%);
434
+ --bg-card: rgba(255, 255, 255, 0.94);
435
+ --bg-panel: rgba(255, 255, 255, 0.96);
436
+ --bg-elevated: rgba(239, 248, 255, 0.92);
437
+ --bg-muted: rgba(239, 242, 243, 0.94);
438
+ --bg-hover: rgba(91, 173, 178, 0.12);
439
+ --text-primary: #1c2f3d;
440
+ --text-muted: #596873;
441
+ --text-on-accent: #032658;
442
+ --border-weak: rgba(28, 47, 61, 0.1);
443
+ --border-strong: rgba(91, 173, 178, 0.32);
444
+ --border-accent: rgba(248, 190, 45, 0.42);
445
+ --shadow-soft: 0 10px 30px rgba(28, 47, 61, 0.1);
446
+ --shadow-toolbar: 0 4px 20px rgba(91, 173, 178, 0.16);
447
+
448
+ min-height: 100vh;
449
+ max-width: 1780px;
450
+ margin: 0 auto;
451
+ padding: 1.25rem;
452
+ overflow-x: hidden;
453
+ overflow-x: clip;
454
+ background: var(--bg-page);
455
+ color: var(--text-primary);
456
+ font-family:
457
+ 'Roboto',
458
+ 'Inter',
459
+ 'Segoe UI',
460
+ system-ui,
461
+ -apple-system,
462
+ sans-serif;
463
+ }
464
+
465
+ .topBar {
466
+ display: flex;
467
+ justify-content: space-between;
468
+ align-items: center;
469
+ gap: 1rem;
470
+ margin-bottom: 1rem;
471
+ }
472
+
473
+ .commandCenterHeader {
474
+ display: flex;
475
+ justify-content: space-between;
476
+ gap: 1rem;
477
+ align-items: flex-start;
478
+ margin-bottom: 0.9rem;
479
+ }
480
+
481
+ .commandCenterHeading {
482
+ display: flex;
483
+ flex-direction: column;
484
+ gap: 0.25rem;
485
+ }
486
+
487
+ .commandCenterActions {
488
+ display: flex;
489
+ flex-direction: column;
490
+ gap: 0.5rem;
491
+ align-items: flex-end;
492
+ }
493
+
494
+ .projectPicker {
495
+ display: flex;
496
+ align-items: center;
497
+ gap: 0.55rem;
498
+ flex-wrap: wrap;
499
+ justify-content: flex-end;
500
+ }
501
+
502
+ .eyebrow {
503
+ color: #4a9a9f;
504
+ font-size: 0.72rem;
505
+ letter-spacing: 0.12em;
506
+ text-transform: uppercase;
507
+ }
508
+
509
+ .titleBlock {
510
+ display: flex;
511
+ flex-direction: column;
512
+ gap: 0.25rem;
513
+ }
514
+
515
+ .pageTitle {
516
+ font-size: clamp(1.55rem, 3vw, 2rem);
517
+ letter-spacing: 0.02em;
518
+ }
519
+
520
+ .pageSubtitle {
521
+ color: var(--text-muted);
522
+ font-size: 0.78rem;
523
+ text-transform: uppercase;
524
+ letter-spacing: 0.08em;
525
+ }
526
+
527
+ .metaControls {
528
+ display: flex;
529
+ align-items: center;
530
+ gap: 0.65rem;
531
+ flex-wrap: wrap;
532
+ justify-content: flex-end;
533
+ }
534
+
535
+ .label {
536
+ color: var(--text-muted);
537
+ font-size: 0.75rem;
538
+ }
539
+
540
+ .select,
541
+ .input,
542
+ .textarea,
543
+ .filterSearch,
544
+ .actionSelect {
545
+ background: rgba(255, 255, 255, 0.92);
546
+ color: var(--text-primary);
547
+ border: 1px solid var(--border-weak);
548
+ border-radius: 0.55rem;
549
+ padding: 0.46rem 0.6rem;
550
+ font: inherit;
551
+ box-shadow: inset 0 1px 2px rgba(28, 47, 61, 0.04);
552
+ }
553
+
554
+ .select:focus,
555
+ .input:focus,
556
+ .textarea:focus,
557
+ .filterSearch:focus,
558
+ .actionSelect:focus,
559
+ .cardButton:focus-visible,
560
+ .button:focus-visible,
561
+ .linkButton:focus-visible,
562
+ .summaryTile:focus-visible,
563
+ .filterToggle:focus-visible {
564
+ outline: 2px solid var(--color-primary, #5badb2);
565
+ outline-offset: 1px;
566
+ }
567
+
568
+ .connectionDot {
569
+ width: 0.62rem;
570
+ height: 0.62rem;
571
+ border-radius: 999px;
572
+ }
573
+
574
+ .connected {
575
+ background: var(--color-ready);
576
+ box-shadow: 0 0 0 0.2rem rgba(15, 118, 110, 0.18);
577
+ }
578
+
579
+ .disconnected {
580
+ background: var(--color-blocked);
581
+ box-shadow: 0 0 0 0.2rem rgba(180, 35, 24, 0.14);
582
+ }
583
+
584
+ .summaryBar {
585
+ display: grid;
586
+ grid-template-columns: repeat(4, minmax(0, 1fr));
587
+ gap: 0.65rem;
588
+ margin-bottom: 0.75rem;
589
+ }
590
+
591
+ .attentionStrip {
592
+ display: grid;
593
+ grid-template-columns: repeat(7, minmax(0, 1fr));
594
+ gap: 0.55rem;
595
+ margin-bottom: 0.75rem;
596
+ }
597
+
598
+ .attentionCard {
599
+ border: 1px solid var(--border-weak);
600
+ border-radius: 0.8rem;
601
+ background: rgba(255, 255, 255, 0.94);
602
+ box-shadow: var(--shadow-soft);
603
+ text-align: left;
604
+ padding: 0.7rem;
605
+ cursor: pointer;
606
+ }
607
+
608
+ .attentionCardActive {
609
+ border-color: rgba(248, 190, 45, 0.55);
610
+ background: rgba(248, 190, 45, 0.14);
611
+ }
612
+
613
+ .summaryTile {
614
+ border: 1px solid var(--border-weak);
615
+ border-radius: 0.75rem;
616
+ background: linear-gradient(145deg, rgba(255, 255, 255, 0.98), rgba(239, 248, 255, 0.94));
617
+ color: var(--text-primary);
618
+ text-decoration: none;
619
+ padding: 0.75rem;
620
+ text-align: left;
621
+ box-shadow: var(--shadow-soft);
622
+ cursor: pointer;
623
+ }
624
+
625
+ .summaryTile:hover {
626
+ border-color: var(--border-strong);
627
+ transform: translateY(-2px);
628
+ }
629
+
630
+ .summaryTileActive {
631
+ border-color: var(--color-planning);
632
+ background: linear-gradient(145deg, rgba(239, 248, 255, 1), rgba(181, 227, 230, 0.5));
633
+ }
634
+
635
+ .summaryTileAlert {
636
+ border-color: rgba(180, 35, 24, 0.28);
637
+ background: linear-gradient(145deg, rgba(255, 245, 244, 0.98), rgba(255, 233, 229, 0.94));
638
+ }
639
+
640
+ .summaryTileAlert.summaryTileActive {
641
+ border-color: rgba(180, 35, 24, 0.45);
642
+ }
643
+
644
+ .summaryValue {
645
+ display: block;
646
+ font-size: 1.2rem;
647
+ font-weight: 700;
648
+ }
649
+
650
+ .summaryLabel {
651
+ color: var(--text-muted);
652
+ font-size: 0.75rem;
653
+ }
654
+
655
+ .sparklinePoint {
656
+ fill: rgba(40, 178, 255, 0.04);
657
+ stroke: transparent;
658
+ }
659
+
660
+ .filterBar {
661
+ border: 1px solid var(--border-weak);
662
+ border-radius: 0.78rem;
663
+ background: rgba(255, 255, 255, 0.84);
664
+ box-shadow: var(--shadow-soft);
665
+ padding: 0.75rem;
666
+ margin-bottom: 1rem;
667
+ display: flex;
668
+ flex-direction: column;
669
+ gap: 0.65rem;
670
+ backdrop-filter: blur(10px);
671
+ }
672
+
673
+ .filterRow {
674
+ display: flex;
675
+ flex-wrap: wrap;
676
+ align-items: center;
677
+ gap: 0.5rem;
678
+ }
679
+
680
+ .filterSearch {
681
+ min-width: min(24rem, 100%);
682
+ flex: 1;
683
+ }
684
+
685
+ .filterGroup {
686
+ display: flex;
687
+ flex-wrap: wrap;
688
+ gap: 0.35rem;
689
+ }
690
+
691
+ .filterToggle {
692
+ border: 1px solid var(--border-weak);
693
+ border-radius: 999px;
694
+ background: rgba(255, 255, 255, 0.9);
695
+ color: var(--text-primary);
696
+ font-size: 0.72rem;
697
+ padding: 0.2rem 0.6rem;
698
+ cursor: pointer;
699
+ }
700
+
701
+ .filterToggleOn {
702
+ border-color: rgba(91, 173, 178, 0.42);
703
+ background: rgba(91, 173, 178, 0.14);
704
+ color: #1c2f3d;
705
+ }
706
+
707
+ .filterToggleDanger.filterToggleOn {
708
+ border-color: rgba(180, 35, 24, 0.28);
709
+ background: rgba(180, 35, 24, 0.08);
710
+ color: #7b241c;
711
+ }
712
+
713
+ .layout {
714
+ display: grid;
715
+ grid-template-columns: minmax(0, 2.2fr) minmax(22rem, 1fr);
716
+ gap: 0.95rem;
717
+ }
718
+
719
+ .commandCenterLayout {
720
+ display: grid;
721
+ grid-template-columns: minmax(0, 1.8fr) minmax(18rem, 0.95fr);
722
+ gap: 0.9rem;
723
+ align-items: start;
724
+ }
725
+
726
+ .commandCenterMain {
727
+ display: flex;
728
+ flex-direction: column;
729
+ gap: 0.8rem;
730
+ }
731
+
732
+ .commandCenterRail {
733
+ display: flex;
734
+ flex-direction: column;
735
+ gap: 0.75rem;
736
+ min-width: 0;
737
+ }
738
+
739
+ .operatorGrid {
740
+ display: grid;
741
+ grid-template-columns: repeat(2, minmax(0, 1fr));
742
+ gap: 0.65rem;
743
+ margin-bottom: 0.75rem;
744
+ }
745
+
746
+ .focusHeader {
747
+ display: flex;
748
+ justify-content: space-between;
749
+ align-items: flex-start;
750
+ gap: 0.8rem;
751
+ margin-bottom: 0.9rem;
752
+ }
753
+
754
+ .focusLayout {
755
+ display: grid;
756
+ grid-template-columns: minmax(0, 1fr);
757
+ }
758
+
759
+ .focusView {
760
+ display: flex;
761
+ flex-direction: column;
762
+ gap: 0.85rem;
763
+ }
764
+
765
+ .focusShell {
766
+ display: grid;
767
+ grid-template-columns: minmax(18rem, 24rem) minmax(0, 1fr);
768
+ gap: 0.85rem;
769
+ align-items: start;
770
+ }
771
+
772
+ .focusSidebar {
773
+ position: sticky;
774
+ top: 0.75rem;
775
+ display: flex;
776
+ flex-direction: column;
777
+ gap: 0.75rem;
778
+ }
779
+
780
+ .focusMain {
781
+ min-width: 0;
782
+ display: flex;
783
+ flex-direction: column;
784
+ gap: 0.75rem;
785
+ }
786
+
787
+ .focusHeroBlock {
788
+ background:
789
+ linear-gradient(145deg, rgba(255, 255, 255, 0.98), rgba(239, 248, 255, 0.96)),
790
+ rgba(255, 255, 255, 0.96);
791
+ }
792
+
793
+ .focusHeroHeader {
794
+ display: flex;
795
+ justify-content: space-between;
796
+ gap: 0.65rem;
797
+ align-items: flex-start;
798
+ }
799
+
800
+ .focusHeroMetaGrid {
801
+ display: grid;
802
+ grid-template-columns: repeat(2, minmax(0, 1fr));
803
+ gap: 0.45rem;
804
+ }
805
+
806
+ .focusHeroMetaCard {
807
+ border: 1px solid var(--border-weak);
808
+ border-radius: 0.62rem;
809
+ background: rgba(255, 255, 255, 0.92);
810
+ padding: 0.5rem;
811
+ display: flex;
812
+ flex-direction: column;
813
+ gap: 0.15rem;
814
+ }
815
+
816
+ .focusTabBar {
817
+ display: flex;
818
+ gap: 0.35rem;
819
+ overflow-x: auto;
820
+ padding-bottom: 0.2rem;
821
+ }
822
+
823
+ .focusTabButton {
824
+ border: 1px solid var(--border-weak);
825
+ border-radius: 999px;
826
+ background: rgba(255, 255, 255, 0.96);
827
+ color: var(--text-muted);
828
+ cursor: pointer;
829
+ font: inherit;
830
+ font-size: 0.74rem;
831
+ font-weight: 600;
832
+ padding: 0.42rem 0.7rem;
833
+ white-space: nowrap;
834
+ }
835
+
836
+ .focusTabButtonActive {
837
+ border-color: var(--border-strong);
838
+ background: rgba(239, 248, 255, 0.98);
839
+ color: var(--text-primary);
840
+ box-shadow: var(--shadow-toolbar);
841
+ }
842
+
843
+ .focusTabPanels {
844
+ display: flex;
845
+ flex-direction: column;
846
+ gap: 0.75rem;
847
+ }
848
+
849
+ .focusTabPanel {
850
+ min-width: 0;
851
+ }
852
+
853
+ .focusTabStack {
854
+ display: flex;
855
+ flex-direction: column;
856
+ gap: 0.75rem;
857
+ }
858
+
859
+ .focusPinnedActionGrid {
860
+ display: flex;
861
+ flex-direction: column;
862
+ gap: 0.35rem;
863
+ }
864
+
865
+ .focusDiagnosisPanel {
866
+ gap: 0.6rem;
867
+ }
868
+
869
+ .focusDiagnosisCauseList {
870
+ display: flex;
871
+ flex-direction: column;
872
+ gap: 0.55rem;
873
+ }
874
+
875
+ .focusDiagnosisCause {
876
+ border: 1px solid var(--border-weak);
877
+ border-radius: 0.58rem;
878
+ background: rgba(255, 255, 255, 0.94);
879
+ padding: 0.5rem;
880
+ display: flex;
881
+ flex-direction: column;
882
+ gap: 0.35rem;
883
+ }
884
+
885
+ .kanbanGrid {
886
+ display: grid;
887
+ grid-template-columns: repeat(3, minmax(14rem, 1fr));
888
+ gap: 0.75rem;
889
+ align-items: stretch;
890
+ }
891
+
892
+ .column {
893
+ border: 1px solid var(--border-weak);
894
+ border-radius: 0.85rem;
895
+ background: rgba(255, 255, 255, 0.76);
896
+ min-height: 12rem;
897
+ max-height: calc(100vh - 16rem);
898
+ overflow: hidden;
899
+ display: flex;
900
+ flex-direction: column;
901
+ box-shadow: var(--shadow-soft);
902
+ backdrop-filter: blur(10px);
903
+ }
904
+
905
+ .columnHeader {
906
+ position: sticky;
907
+ top: 0;
908
+ z-index: 2;
909
+ display: flex;
910
+ justify-content: space-between;
911
+ align-items: center;
912
+ padding: 0.62rem 0.7rem;
913
+ border-bottom: 1px solid var(--border-weak);
914
+ background: rgba(239, 248, 255, 0.96);
915
+ }
916
+
917
+ .columnHeaderTitle {
918
+ font-size: 0.78rem;
919
+ letter-spacing: 0.04em;
920
+ text-transform: uppercase;
921
+ }
922
+
923
+ .columnHeaderCount {
924
+ color: var(--text-muted);
925
+ font-size: 0.72rem;
926
+ }
927
+
928
+ .columnBody {
929
+ overflow-y: auto;
930
+ padding: 0.55rem;
931
+ display: flex;
932
+ flex-direction: column;
933
+ gap: 0.45rem;
934
+ }
935
+
936
+ .emptyState {
937
+ border: 1px dashed rgba(91, 173, 178, 0.28);
938
+ border-radius: 0.65rem;
939
+ background: rgba(239, 248, 255, 0.72);
940
+ padding: 0.75rem;
941
+ font-size: 0.76rem;
942
+ color: var(--text-muted);
943
+ text-align: center;
944
+ }
945
+
946
+ .cardButton {
947
+ appearance: none;
948
+ border: 1px solid var(--border-weak);
949
+ border-left-width: 0.34rem;
950
+ border-radius: 0.65rem;
951
+ background: var(--bg-card);
952
+ color: var(--text-primary);
953
+ padding: 0.55rem;
954
+ text-align: left;
955
+ cursor: pointer;
956
+ display: flex;
957
+ flex-direction: column;
958
+ gap: 0.42rem;
959
+ }
960
+
961
+ .cardButton:hover {
962
+ border-color: var(--border-strong);
963
+ box-shadow: var(--shadow-soft);
964
+ }
965
+
966
+ .cardSelected {
967
+ border-color: rgba(91, 173, 178, 0.38);
968
+ box-shadow: 0 0 0 1px rgba(91, 173, 178, 0.2);
969
+ }
970
+
971
+ .cardFocused {
972
+ box-shadow: 0 0 0 2px rgba(248, 190, 45, 0.26);
973
+ }
974
+
975
+ .cardIntake {
976
+ border-left-color: var(--color-intake);
977
+ }
978
+
979
+ .cardPlanning {
980
+ border-left-color: var(--color-planning);
981
+ }
982
+
983
+ .cardBuilding {
984
+ border-left-color: var(--color-building);
985
+ }
986
+
987
+ .cardQa {
988
+ border-left-color: var(--color-qa);
989
+ }
990
+
991
+ .cardReadyToMerge {
992
+ border-left-color: var(--color-ready);
993
+ }
994
+
995
+ .cardBlocked {
996
+ border-left-color: var(--color-blocked);
997
+ }
998
+
999
+ .cardMerged {
1000
+ border-left-color: var(--color-merged);
1001
+ }
1002
+
1003
+ .cardActivePulse {
1004
+ animation: cardPulse 1.6s ease-in-out infinite;
1005
+ }
1006
+
1007
+ .cardMuted {
1008
+ opacity: 0.82;
1009
+ }
1010
+
1011
+ @keyframes cardPulse {
1012
+ 0% {
1013
+ box-shadow: inset 0 0 0 0 rgba(91, 173, 178, 0.08);
1014
+ }
1015
+ 50% {
1016
+ box-shadow: inset 0 0 0 5px rgba(248, 190, 45, 0.16);
1017
+ }
1018
+ 100% {
1019
+ box-shadow: inset 0 0 0 0 rgba(91, 173, 178, 0.08);
1020
+ }
1021
+ }
1022
+
1023
+ .cardHeadline {
1024
+ display: flex;
1025
+ justify-content: space-between;
1026
+ gap: 0.35rem;
1027
+ align-items: flex-start;
1028
+ }
1029
+
1030
+ .cardFeatureId {
1031
+ font-weight: 600;
1032
+ font-size: 0.78rem;
1033
+ letter-spacing: 0.02em;
1034
+ word-break: break-word;
1035
+ }
1036
+
1037
+ .cardMeta {
1038
+ display: flex;
1039
+ align-items: center;
1040
+ gap: 0.35rem;
1041
+ flex-wrap: wrap;
1042
+ color: var(--text-muted);
1043
+ font-size: 0.69rem;
1044
+ }
1045
+
1046
+ .cardBlockedHint {
1047
+ margin-top: 0.2rem;
1048
+ padding-top: 0.15rem;
1049
+ }
1050
+
1051
+ .activityDot {
1052
+ width: 0.52rem;
1053
+ height: 0.52rem;
1054
+ border-radius: 999px;
1055
+ }
1056
+
1057
+ .activityDotActive {
1058
+ background: var(--color-ready);
1059
+ }
1060
+
1061
+ .activityDotIdle {
1062
+ background: var(--color-building);
1063
+ }
1064
+
1065
+ .activityDotWaitingInput {
1066
+ background: var(--color-planning);
1067
+ }
1068
+
1069
+ .activityDotBlocked {
1070
+ background: var(--color-blocked);
1071
+ }
1072
+
1073
+ .activityDotExited {
1074
+ background: var(--color-merged);
1075
+ }
1076
+
1077
+ .activityDotUnknown {
1078
+ background: rgba(89, 104, 115, 0.68);
1079
+ }
1080
+
1081
+ .badgeRow {
1082
+ display: flex;
1083
+ flex-wrap: wrap;
1084
+ gap: 0.28rem;
1085
+ }
1086
+
1087
+ .badge {
1088
+ border: 1px solid var(--border-weak);
1089
+ border-radius: 999px;
1090
+ background: rgba(255, 255, 255, 0.92);
1091
+ color: var(--text-muted);
1092
+ font-size: 0.64rem;
1093
+ padding: 0.1rem 0.38rem;
1094
+ text-transform: uppercase;
1095
+ letter-spacing: 0.04em;
1096
+ }
1097
+
1098
+ .badgePass {
1099
+ border-color: rgba(15, 118, 110, 0.24);
1100
+ background: rgba(15, 118, 110, 0.08);
1101
+ color: #0f766e;
1102
+ }
1103
+
1104
+ .badgeFail {
1105
+ border-color: rgba(180, 35, 24, 0.22);
1106
+ background: rgba(180, 35, 24, 0.08);
1107
+ color: #b42318;
1108
+ }
1109
+
1110
+ .badgePending {
1111
+ border-color: rgba(248, 190, 45, 0.32);
1112
+ background: rgba(248, 190, 45, 0.14);
1113
+ color: #926600;
1114
+ }
1115
+
1116
+ .badgeNeutral {
1117
+ color: var(--text-muted);
1118
+ }
1119
+
1120
+ .detailPanel {
1121
+ border: 1px solid var(--border-weak);
1122
+ border-radius: 0.9rem;
1123
+ background: var(--bg-panel);
1124
+ box-shadow: var(--shadow-soft);
1125
+ padding: 0.95rem;
1126
+ display: flex;
1127
+ flex-direction: column;
1128
+ gap: 0.8rem;
1129
+ max-height: calc(100vh - 6rem);
1130
+ overflow-y: auto;
1131
+ }
1132
+
1133
+ .panelPlaceholder {
1134
+ border: 1px dashed rgba(91, 173, 178, 0.28);
1135
+ border-radius: 0.7rem;
1136
+ padding: 1rem;
1137
+ color: var(--text-muted);
1138
+ text-align: center;
1139
+ font-size: 0.85rem;
1140
+ }
1141
+
1142
+ .panelHeader {
1143
+ display: flex;
1144
+ justify-content: space-between;
1145
+ gap: 0.5rem;
1146
+ align-items: flex-start;
1147
+ }
1148
+
1149
+ .panelTitle {
1150
+ font-size: 1.05rem;
1151
+ font-weight: 700;
1152
+ word-break: break-word;
1153
+ }
1154
+
1155
+ .closeButton {
1156
+ background: transparent;
1157
+ color: var(--text-muted);
1158
+ border: 1px solid var(--border-weak);
1159
+ border-radius: 0.45rem;
1160
+ cursor: pointer;
1161
+ font-size: 0.72rem;
1162
+ padding: 0.2rem 0.45rem;
1163
+ }
1164
+
1165
+ .metaText {
1166
+ color: var(--text-muted);
1167
+ font-size: 0.75rem;
1168
+ }
1169
+
1170
+ .inlinePulse {
1171
+ display: inline-flex;
1172
+ align-items: center;
1173
+ gap: 0.3rem;
1174
+ }
1175
+
1176
+ .inlinePulse::before {
1177
+ content: '';
1178
+ width: 0.5rem;
1179
+ height: 0.5rem;
1180
+ border-radius: 999px;
1181
+ background: var(--color-ready);
1182
+ animation: dotPulse 1.4s ease-in-out infinite;
1183
+ }
1184
+
1185
+ @keyframes dotPulse {
1186
+ 0% {
1187
+ transform: scale(1);
1188
+ opacity: 0.9;
1189
+ }
1190
+ 50% {
1191
+ transform: scale(1.35);
1192
+ opacity: 0.4;
1193
+ }
1194
+ 100% {
1195
+ transform: scale(1);
1196
+ opacity: 0.9;
1197
+ }
1198
+ }
1199
+
1200
+ .section {
1201
+ border: 1px solid var(--border-weak);
1202
+ border-radius: 0.72rem;
1203
+ background: rgba(255, 255, 255, 0.88);
1204
+ padding: 0.7rem;
1205
+ display: flex;
1206
+ flex-direction: column;
1207
+ gap: 0.45rem;
1208
+ box-shadow: var(--shadow-soft);
181
1209
  }
182
1210
 
183
- .filterSearch {
184
- min-width: min(24rem, 100%);
185
- flex: 1;
1211
+ .rolePerformanceGrid {
1212
+ display: grid;
1213
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1214
+ gap: 0.65rem;
186
1215
  }
187
1216
 
188
- .filterGroup {
189
- display: flex;
190
- flex-wrap: wrap;
191
- gap: 0.35rem;
1217
+ .rolePerformanceCard {
1218
+ padding: 0.75rem;
1219
+ gap: 0.55rem;
192
1220
  }
193
1221
 
194
- .filterToggle {
195
- border: 1px solid var(--border-weak);
196
- border-radius: 999px;
197
- background: rgba(9, 18, 40, 0.95);
198
- color: var(--text-primary);
199
- font-size: 0.72rem;
200
- padding: 0.2rem 0.6rem;
201
- cursor: pointer;
1222
+ .rolePerformancePlanner {
1223
+ border-color: rgba(40, 178, 255, 0.26);
202
1224
  }
203
1225
 
204
- .filterToggleOn {
205
- border-color: #7fd2ff;
206
- background: rgba(12, 45, 80, 0.9);
207
- color: #d4ecff;
1226
+ .rolePerformanceBuilder {
1227
+ border-color: rgba(248, 190, 45, 0.34);
208
1228
  }
209
1229
 
210
- .filterToggleDanger.filterToggleOn {
211
- border-color: #f3949f;
212
- background: rgba(95, 24, 37, 0.9);
213
- color: #ffd0d6;
1230
+ .rolePerformanceQa {
1231
+ border-color: rgba(255, 166, 43, 0.34);
214
1232
  }
215
1233
 
216
- .layout {
217
- display: grid;
218
- grid-template-columns: minmax(0, 2.2fr) minmax(22rem, 1fr);
219
- gap: 0.95rem;
1234
+ .rolePerformanceSummary {
1235
+ list-style: none;
1236
+ display: flex;
1237
+ justify-content: space-between;
1238
+ align-items: center;
1239
+ gap: 0.6rem;
1240
+ cursor: pointer;
220
1241
  }
221
1242
 
222
- .operatorGrid {
223
- display: grid;
224
- grid-template-columns: repeat(2, minmax(0, 1fr));
225
- gap: 0.65rem;
226
- margin-bottom: 0.75rem;
1243
+ .rolePerformanceSummary::-webkit-details-marker {
1244
+ display: none;
227
1245
  }
228
1246
 
229
- .focusHeader {
1247
+ .rolePerformanceIdentity {
230
1248
  display: flex;
231
- justify-content: space-between;
232
- align-items: flex-start;
233
- gap: 0.8rem;
234
- margin-bottom: 0.9rem;
1249
+ align-items: center;
1250
+ gap: 0.45rem;
1251
+ min-width: 0;
235
1252
  }
236
1253
 
237
- .focusLayout {
238
- display: grid;
239
- grid-template-columns: minmax(0, 1fr);
1254
+ .rolePerformanceLabel {
1255
+ font-size: 0.86rem;
1256
+ word-break: break-word;
240
1257
  }
241
1258
 
242
- .kanbanGrid {
243
- display: grid;
244
- grid-template-columns: repeat(3, minmax(14rem, 1fr));
245
- gap: 0.75rem;
246
- align-items: stretch;
1259
+ .rolePerformanceMetricList {
1260
+ display: flex;
1261
+ flex-direction: column;
1262
+ gap: 0.55rem;
247
1263
  }
248
1264
 
249
- .column {
250
- border: 1px solid var(--border-weak);
251
- border-radius: 0.85rem;
252
- background: rgba(10, 19, 40, 0.9);
253
- min-height: 12rem;
254
- max-height: calc(100vh - 16rem);
255
- overflow: hidden;
1265
+ .rolePerformanceMetric {
256
1266
  display: flex;
257
1267
  flex-direction: column;
1268
+ gap: 0.22rem;
1269
+ border-top: 1px solid var(--border-weak);
1270
+ padding-top: 0.45rem;
258
1271
  }
259
1272
 
260
- .columnHeader {
261
- position: sticky;
262
- top: 0;
263
- z-index: 2;
1273
+ .rolePerformanceMetric:first-child {
1274
+ border-top: 0;
1275
+ padding-top: 0;
1276
+ }
1277
+
1278
+ .rolePerformanceMetricHeader {
264
1279
  display: flex;
265
1280
  justify-content: space-between;
1281
+ gap: 0.5rem;
266
1282
  align-items: center;
267
- padding: 0.62rem 0.7rem;
268
- border-bottom: 1px solid var(--border-weak);
269
- background: rgba(16, 29, 55, 0.97);
270
1283
  }
271
1284
 
272
- .columnHeaderTitle {
1285
+ .rolePerformanceMetricLabel {
1286
+ font-size: 0.75rem;
1287
+ font-weight: 600;
1288
+ }
1289
+
1290
+ .rolePerformanceMetricValues {
1291
+ display: flex;
1292
+ justify-content: space-between;
1293
+ gap: 0.5rem;
1294
+ align-items: baseline;
273
1295
  font-size: 0.78rem;
274
- letter-spacing: 0.04em;
275
- text-transform: uppercase;
276
1296
  }
277
1297
 
278
- .columnHeaderCount {
279
- color: var(--text-muted);
280
- font-size: 0.72rem;
1298
+ .rolePerformanceTrack {
1299
+ position: relative;
1300
+ height: 0.55rem;
1301
+ border-radius: 999px;
1302
+ background: rgba(28, 47, 61, 0.08);
1303
+ overflow: hidden;
281
1304
  }
282
1305
 
283
- .columnBody {
284
- overflow-y: auto;
285
- padding: 0.55rem;
286
- display: flex;
287
- flex-direction: column;
288
- gap: 0.45rem;
1306
+ .rolePerformanceActualBar {
1307
+ position: absolute;
1308
+ inset: 0 auto 0 0;
1309
+ background: linear-gradient(90deg, rgba(248, 190, 45, 0.92), rgba(255, 166, 43, 0.92));
1310
+ border-radius: 999px;
289
1311
  }
290
1312
 
291
- .emptyState {
292
- border: 1px dashed rgba(108, 133, 177, 0.45);
293
- border-radius: 0.65rem;
294
- background: rgba(8, 14, 30, 0.65);
295
- padding: 0.75rem;
296
- font-size: 0.76rem;
297
- color: var(--text-muted);
298
- text-align: center;
1313
+ .rolePerformanceAverageBar {
1314
+ position: absolute;
1315
+ inset: 0 auto 0 0;
1316
+ background: rgba(91, 173, 178, 0.28);
1317
+ border-right: 1px solid rgba(28, 47, 61, 0.22);
1318
+ border-radius: 999px;
299
1319
  }
300
1320
 
301
- .cardButton {
302
- appearance: none;
303
- border: 1px solid var(--border-weak);
304
- border-left-width: 0.34rem;
305
- border-radius: 0.65rem;
306
- background: var(--bg-card);
307
- color: var(--text-primary);
308
- padding: 0.55rem;
309
- text-align: left;
310
- cursor: pointer;
1321
+ .collisionRadarList {
1322
+ list-style: none;
311
1323
  display: flex;
312
1324
  flex-direction: column;
313
- gap: 0.42rem;
1325
+ gap: 0.55rem;
1326
+ padding: 0;
1327
+ margin: 0;
314
1328
  }
315
1329
 
316
- .cardButton:hover {
317
- border-color: #678ec5;
1330
+ .collisionRadarItem {
1331
+ display: flex;
1332
+ flex-direction: column;
1333
+ gap: 0.35rem;
1334
+ border-left: 2px solid var(--border-weak);
1335
+ border-radius: 0.55rem;
1336
+ background: rgba(239, 248, 255, 0.44);
1337
+ padding: 0.28rem 0.45rem 0.28rem 0.65rem;
318
1338
  }
319
1339
 
320
- .cardSelected {
321
- border-color: #8ed8ff;
322
- box-shadow: 0 0 0 1px rgba(142, 216, 255, 0.35);
1340
+ .collisionRadarItem[data-risk='high'] {
1341
+ border-left-color: rgba(180, 35, 24, 0.5);
1342
+ background: rgba(255, 245, 244, 0.82);
323
1343
  }
324
1344
 
325
- .cardFocused {
326
- box-shadow: 0 0 0 2px rgba(172, 223, 255, 0.5);
1345
+ .collisionRadarItem[data-risk='medium'] {
1346
+ border-left-color: rgba(248, 190, 45, 0.5);
1347
+ background: rgba(255, 250, 235, 0.88);
327
1348
  }
328
1349
 
329
- .cardPlanning {
330
- border-left-color: var(--color-planning);
1350
+ .collisionRadarItem[data-risk='low'] {
1351
+ border-left-color: rgba(91, 173, 178, 0.35);
1352
+ background: rgba(239, 248, 255, 0.72);
331
1353
  }
332
1354
 
333
- .cardBuilding {
334
- border-left-color: var(--color-building);
1355
+ .collisionRadarSummaryBadge {
1356
+ white-space: nowrap;
335
1357
  }
336
1358
 
337
- .cardQa {
338
- border-left-color: var(--color-qa);
1359
+ .collisionRadarRow {
1360
+ display: flex;
1361
+ justify-content: space-between;
1362
+ align-items: flex-start;
1363
+ gap: 0.6rem;
339
1364
  }
340
1365
 
341
- .cardReadyToMerge {
342
- border-left-color: var(--color-ready);
1366
+ .collisionRadarPath {
1367
+ min-width: 0;
1368
+ word-break: break-all;
1369
+ font-family: 'IBM Plex Mono', 'Fira Code', monospace;
1370
+ font-size: 0.75rem;
343
1371
  }
344
1372
 
345
- .cardBlocked {
346
- border-left-color: var(--color-blocked);
1373
+ .collisionRadarCompeting {
1374
+ display: flex;
1375
+ flex-wrap: wrap;
1376
+ gap: 0.35rem;
347
1377
  }
348
1378
 
349
- .cardMerged {
350
- border-left-color: var(--color-merged);
1379
+ .usageBurnSparkline {
1380
+ width: 100%;
1381
+ height: 2.75rem;
351
1382
  }
352
1383
 
353
- .cardActivePulse {
354
- animation: cardPulse 1.6s ease-in-out infinite;
1384
+ .usageBurnActual {
1385
+ stroke: rgba(91, 173, 178, 0.92);
1386
+ stroke-width: 2;
355
1387
  }
356
1388
 
357
- @keyframes cardPulse {
358
- 0% {
359
- box-shadow: inset 0 0 0 0 rgba(121, 204, 255, 0.1);
360
- }
361
- 50% {
362
- box-shadow: inset 0 0 0 5px rgba(121, 204, 255, 0.22);
363
- }
364
- 100% {
365
- box-shadow: inset 0 0 0 0 rgba(121, 204, 255, 0.1);
366
- }
1389
+ .usageBurnProjected {
1390
+ stroke: rgba(248, 190, 45, 0.95);
1391
+ stroke-width: 2;
1392
+ stroke-dasharray: 4 3;
367
1393
  }
368
1394
 
369
- .cardHeadline {
370
- display: flex;
371
- justify-content: space-between;
372
- gap: 0.35rem;
373
- align-items: flex-start;
1395
+ .usageBurnOutput {
1396
+ margin: 0;
1397
+ border-radius: 0.58rem;
1398
+ background: rgba(239, 248, 255, 0.82);
1399
+ border: 1px solid var(--border-weak);
1400
+ padding: 0.6rem;
1401
+ overflow-x: auto;
1402
+ white-space: pre-wrap;
1403
+ font-family: 'IBM Plex Mono', 'Fira Code', monospace;
1404
+ font-size: 0.73rem;
374
1405
  }
375
1406
 
376
- .cardFeatureId {
377
- font-weight: 600;
378
- font-size: 0.78rem;
379
- letter-spacing: 0.02em;
380
- word-break: break-word;
1407
+ .liveConsoleOutput {
1408
+ max-height: 28rem;
1409
+ overflow-y: auto;
1410
+ scroll-behavior: smooth;
381
1411
  }
382
1412
 
383
- .cardMeta {
1413
+ .transcriptTurnList {
384
1414
  display: flex;
385
- align-items: center;
386
- gap: 0.35rem;
387
- flex-wrap: wrap;
388
- color: var(--text-muted);
389
- font-size: 0.69rem;
1415
+ flex-direction: column;
1416
+ gap: 0.65rem;
390
1417
  }
391
1418
 
392
- .activityDot {
393
- width: 0.52rem;
394
- height: 0.52rem;
395
- border-radius: 999px;
1419
+ .transcriptTurn {
1420
+ border-left-width: 0.28rem;
396
1421
  }
397
1422
 
398
- .activityDotActive {
399
- background: #2fd099;
1423
+ .transcriptTurnHeader {
1424
+ display: flex;
1425
+ justify-content: space-between;
1426
+ align-items: flex-start;
1427
+ gap: 0.75rem;
400
1428
  }
401
1429
 
402
- .activityDotIdle {
403
- background: #f2b85d;
1430
+ .transcriptText {
1431
+ margin: 0;
1432
+ white-space: pre-wrap;
1433
+ line-height: 1.45;
404
1434
  }
405
1435
 
406
- .activityDotWaitingInput {
407
- background: #61baf0;
1436
+ .prioritizedQueues {
1437
+ display: grid;
1438
+ grid-template-columns: repeat(4, minmax(0, 1fr));
1439
+ gap: 0.65rem;
408
1440
  }
409
1441
 
410
- .activityDotBlocked {
411
- background: #e25965;
1442
+ .queueModule {
1443
+ border: 1px solid var(--border-weak);
1444
+ border-radius: 0.72rem;
1445
+ background: rgba(255, 255, 255, 0.88);
1446
+ padding: 0.7rem;
1447
+ display: flex;
1448
+ flex-direction: column;
1449
+ gap: 0.45rem;
1450
+ box-shadow: var(--shadow-soft);
412
1451
  }
413
1452
 
414
- .activityDotExited {
415
- background: #808ea5;
1453
+ .queueItem {
1454
+ display: flex;
1455
+ justify-content: space-between;
1456
+ gap: 0.5rem;
1457
+ border: 1px solid var(--border-weak);
1458
+ border-radius: 0.55rem;
1459
+ background: rgba(239, 248, 255, 0.7);
1460
+ color: var(--text-primary);
1461
+ padding: 0.45rem 0.55rem;
1462
+ text-decoration: none;
416
1463
  }
417
1464
 
418
- .activityDotUnknown {
419
- background: #546380;
1465
+ .launchDraftList {
1466
+ display: flex;
1467
+ flex-direction: column;
1468
+ gap: 0.85rem;
420
1469
  }
421
1470
 
422
- .badgeRow {
1471
+ .launchDraftCard {
1472
+ border: 1px solid var(--border-weak);
1473
+ border-radius: 0.9rem;
1474
+ background: rgba(255, 255, 255, 0.95);
1475
+ padding: 0.95rem;
1476
+ box-shadow: var(--shadow-soft);
423
1477
  display: flex;
424
- flex-wrap: wrap;
425
- gap: 0.28rem;
1478
+ flex-direction: column;
1479
+ gap: 0.8rem;
426
1480
  }
427
1481
 
428
- .badge {
1482
+ .launchDraftGrid {
1483
+ display: grid;
1484
+ grid-template-columns: minmax(0, 1.2fr) minmax(18rem, 1fr);
1485
+ gap: 0.8rem;
1486
+ }
1487
+
1488
+ .launchPreview {
429
1489
  border: 1px solid var(--border-weak);
430
- border-radius: 999px;
431
- background: rgba(11, 20, 43, 0.9);
432
- color: var(--text-muted);
433
- font-size: 0.64rem;
434
- padding: 0.1rem 0.38rem;
435
- text-transform: uppercase;
436
- letter-spacing: 0.04em;
1490
+ border-radius: 0.72rem;
1491
+ background: rgba(239, 248, 255, 0.7);
1492
+ padding: 0.8rem;
1493
+ min-height: 14rem;
1494
+ overflow: auto;
437
1495
  }
438
1496
 
439
- .badgePass {
440
- border-color: rgba(39, 182, 117, 0.7);
441
- color: #8af2bf;
1497
+ .launchPreview:not(.markdownPreview) h2,
1498
+ .launchPreview:not(.markdownPreview) h3,
1499
+ .launchPreview:not(.markdownPreview) h4 {
1500
+ margin-bottom: 0.45rem;
442
1501
  }
443
1502
 
444
- .badgeFail {
445
- border-color: rgba(235, 90, 108, 0.7);
446
- color: #ffbac2;
1503
+ .launchPreview:not(.markdownPreview) p,
1504
+ .launchPreview:not(.markdownPreview) ul,
1505
+ .launchPreview:not(.markdownPreview) blockquote,
1506
+ .launchPreview:not(.markdownPreview) pre {
1507
+ margin-bottom: 0.55rem;
447
1508
  }
448
1509
 
449
- .badgePending {
450
- border-color: rgba(236, 196, 101, 0.65);
451
- color: #ffe2a6;
1510
+ .launchPreview:not(.markdownPreview) blockquote {
1511
+ border-left: 0.25rem solid rgba(91, 173, 178, 0.4);
1512
+ padding-left: 0.55rem;
1513
+ color: var(--text-muted);
1514
+ }
1515
+
1516
+ .launchPreview:not(.markdownPreview) pre {
1517
+ padding: 0.65rem;
1518
+ border-radius: 0.55rem;
1519
+ background: rgba(28, 47, 61, 0.94);
1520
+ color: #f8fbfc;
1521
+ overflow: auto;
1522
+ }
1523
+
1524
+ .visuallyHidden {
1525
+ position: absolute;
1526
+ width: 1px;
1527
+ height: 1px;
1528
+ padding: 0;
1529
+ margin: -1px;
1530
+ overflow: hidden;
1531
+ clip: rect(0, 0, 0, 0);
1532
+ white-space: nowrap;
1533
+ border: 0;
452
1534
  }
453
1535
 
454
- .badgeNeutral {
455
- color: #b7c6da;
1536
+ .diagnosticsRail {
1537
+ display: flex;
1538
+ flex-direction: column;
1539
+ gap: 0.7rem;
456
1540
  }
457
1541
 
458
- .detailPanel {
1542
+ .triageDrawer {
1543
+ position: sticky;
1544
+ top: 0.75rem;
1545
+ width: 100%;
1546
+ max-height: calc(100vh - 1.5rem);
1547
+ overflow-y: auto;
459
1548
  border: 1px solid var(--border-weak);
460
1549
  border-radius: 0.9rem;
461
- background: var(--bg-panel);
462
- box-shadow: var(--shadow-soft);
1550
+ background: rgba(255, 255, 255, 0.98);
1551
+ box-shadow: 0 20px 50px rgba(28, 47, 61, 0.18);
463
1552
  padding: 0.95rem;
464
1553
  display: flex;
465
1554
  flex-direction: column;
466
1555
  gap: 0.8rem;
467
- max-height: calc(100vh - 6rem);
468
- overflow-y: auto;
469
- }
470
-
471
- .panelPlaceholder {
472
- border: 1px dashed rgba(124, 153, 196, 0.45);
473
- border-radius: 0.7rem;
474
- padding: 1rem;
475
- color: var(--text-muted);
476
- text-align: center;
477
- font-size: 0.85rem;
478
- }
479
-
480
- .panelHeader {
481
- display: flex;
482
- justify-content: space-between;
483
- gap: 0.5rem;
484
- align-items: flex-start;
485
- }
486
-
487
- .panelTitle {
488
- font-size: 1.05rem;
489
- font-weight: 700;
490
- word-break: break-word;
491
1556
  }
492
1557
 
493
- .closeButton {
494
- background: transparent;
495
- color: var(--text-muted);
1558
+ .mergedArchive {
496
1559
  border: 1px solid var(--border-weak);
497
- border-radius: 0.45rem;
498
- cursor: pointer;
499
- font-size: 0.72rem;
500
- padding: 0.2rem 0.45rem;
501
- }
502
-
503
- .metaText {
504
- color: var(--text-muted);
505
- font-size: 0.75rem;
1560
+ border-radius: 0.72rem;
1561
+ background: rgba(255, 255, 255, 0.88);
1562
+ padding: 0.7rem;
1563
+ box-shadow: var(--shadow-soft);
506
1564
  }
507
1565
 
508
- .inlinePulse {
509
- display: inline-flex;
510
- align-items: center;
511
- gap: 0.3rem;
1566
+ .archiveList {
1567
+ display: flex;
1568
+ flex-direction: column;
1569
+ gap: 0.35rem;
1570
+ margin-top: 0.55rem;
512
1571
  }
513
1572
 
514
- .inlinePulse::before {
515
- content: '';
516
- width: 0.5rem;
517
- height: 0.5rem;
518
- border-radius: 999px;
519
- background: #2fd099;
520
- animation: dotPulse 1.4s ease-in-out infinite;
1573
+ .archiveItem {
1574
+ display: flex;
1575
+ justify-content: space-between;
1576
+ gap: 0.5rem;
1577
+ text-decoration: none;
1578
+ color: var(--text-primary);
1579
+ border-bottom: 1px solid rgba(28, 47, 61, 0.06);
1580
+ padding-bottom: 0.35rem;
521
1581
  }
522
1582
 
523
- @keyframes dotPulse {
524
- 0% {
525
- transform: scale(1);
526
- opacity: 0.9;
527
- }
528
- 50% {
529
- transform: scale(1.35);
530
- opacity: 0.4;
531
- }
532
- 100% {
533
- transform: scale(1);
534
- opacity: 0.9;
535
- }
1583
+ .advancedFilters {
1584
+ border-top: 1px solid rgba(28, 47, 61, 0.06);
1585
+ padding-top: 0.55rem;
536
1586
  }
537
1587
 
538
- .section {
539
- border: 1px solid var(--border-weak);
540
- border-radius: 0.72rem;
541
- background: rgba(11, 19, 40, 0.86);
542
- padding: 0.7rem;
1588
+ .advancedFilterGrid {
543
1589
  display: flex;
544
1590
  flex-direction: column;
545
- gap: 0.45rem;
1591
+ gap: 0.65rem;
1592
+ margin-top: 0.45rem;
546
1593
  }
547
1594
 
548
1595
  .sectionTitle {
549
1596
  font-size: 0.75rem;
550
- color: #cadcf5;
1597
+ color: var(--text-muted);
551
1598
  text-transform: uppercase;
552
1599
  letter-spacing: 0.05em;
553
1600
  }
554
1601
 
555
1602
  .sectionSummary {
556
1603
  cursor: pointer;
557
- color: #c9ddf9;
1604
+ color: #4a9a9f;
558
1605
  font-weight: 600;
559
1606
  }
560
1607
 
@@ -599,15 +1646,15 @@
599
1646
  }
600
1647
 
601
1648
  .listRow:hover {
602
- background: rgba(34, 53, 89, 0.45);
1649
+ background: rgba(91, 173, 178, 0.08);
603
1650
  }
604
1651
 
605
1652
  .listRowSelected {
606
- background: rgba(20, 62, 88, 0.6);
1653
+ background: rgba(239, 248, 255, 0.96);
607
1654
  }
608
1655
 
609
1656
  .listRowFocused {
610
- outline: 2px solid rgba(127, 198, 255, 0.7);
1657
+ outline: 2px solid rgba(91, 173, 178, 0.35);
611
1658
  outline-offset: -2px;
612
1659
  }
613
1660
 
@@ -638,7 +1685,7 @@
638
1685
  min-width: 9.8rem;
639
1686
  border: 1px solid var(--border-weak);
640
1687
  border-radius: 0.55rem;
641
- background: rgba(8, 16, 35, 0.97);
1688
+ background: rgba(255, 255, 255, 0.98);
642
1689
  box-shadow: var(--shadow-soft);
643
1690
  padding: 0.2rem;
644
1691
  display: flex;
@@ -662,7 +1709,7 @@
662
1709
  .listActionMenuItem:hover,
663
1710
  .listActionMenuItem:focus-visible {
664
1711
  border-color: var(--border-strong);
665
- background: rgba(27, 45, 81, 0.88);
1712
+ background: rgba(91, 173, 178, 0.12);
666
1713
  outline: none;
667
1714
  }
668
1715
 
@@ -675,7 +1722,7 @@
675
1722
 
676
1723
  .table th {
677
1724
  color: var(--text-muted);
678
- background: rgba(14, 24, 48, 0.9);
1725
+ background: rgba(239, 248, 255, 0.9);
679
1726
  }
680
1727
 
681
1728
  .planList,
@@ -694,7 +1741,7 @@
694
1741
  .evidenceRow {
695
1742
  border: 1px solid var(--border-weak);
696
1743
  border-radius: 0.55rem;
697
- background: rgba(10, 18, 38, 0.88);
1744
+ background: rgba(255, 255, 255, 0.92);
698
1745
  padding: 0.45rem;
699
1746
  }
700
1747
 
@@ -710,14 +1757,14 @@
710
1757
  .planTreeBranch {
711
1758
  border: 1px solid var(--border-weak);
712
1759
  border-radius: 0.55rem;
713
- background: rgba(10, 18, 38, 0.78);
1760
+ background: rgba(239, 248, 255, 0.72);
714
1761
  padding: 0.4rem;
715
1762
  }
716
1763
 
717
1764
  .planTreeLeaf {
718
1765
  border: 1px solid var(--border-weak);
719
1766
  border-radius: 0.55rem;
720
- background: rgba(10, 18, 38, 0.88);
1767
+ background: rgba(255, 255, 255, 0.92);
721
1768
  padding: 0.35rem 0.45rem;
722
1769
  display: flex;
723
1770
  align-items: center;
@@ -782,27 +1829,31 @@
782
1829
  }
783
1830
 
784
1831
  .stepDone {
785
- border-color: rgba(39, 182, 117, 0.7);
786
- color: #8af2bf;
1832
+ border-color: rgba(15, 118, 110, 0.22);
1833
+ background: rgba(15, 118, 110, 0.08);
1834
+ color: #0f766e;
787
1835
  }
788
1836
 
789
1837
  .stepRunning {
790
- border-color: rgba(110, 187, 247, 0.8);
791
- color: #bde6ff;
1838
+ border-color: rgba(40, 178, 255, 0.22);
1839
+ background: rgba(40, 178, 255, 0.08);
1840
+ color: #0b73ac;
792
1841
  }
793
1842
 
794
1843
  .stepBlocked {
795
- border-color: rgba(235, 90, 108, 0.7);
796
- color: #ffbac2;
1844
+ border-color: rgba(180, 35, 24, 0.22);
1845
+ background: rgba(180, 35, 24, 0.08);
1846
+ color: #b42318;
797
1847
  }
798
1848
 
799
1849
  .stepReady {
800
- border-color: rgba(236, 196, 101, 0.7);
801
- color: #ffe2a6;
1850
+ border-color: rgba(248, 190, 45, 0.32);
1851
+ background: rgba(248, 190, 45, 0.14);
1852
+ color: #926600;
802
1853
  }
803
1854
 
804
1855
  .stepUnknown {
805
- color: #b7c6da;
1856
+ color: var(--text-muted);
806
1857
  }
807
1858
 
808
1859
  .diffContainer,
@@ -810,7 +1861,7 @@
810
1861
  .evidenceContent {
811
1862
  border: 1px solid var(--border-weak);
812
1863
  border-radius: 0.58rem;
813
- background: rgba(6, 11, 25, 0.9);
1864
+ background: rgba(255, 255, 255, 0.95);
814
1865
  }
815
1866
 
816
1867
  .diffContainer {
@@ -823,15 +1874,15 @@
823
1874
  position: sticky;
824
1875
  top: 0;
825
1876
  z-index: 1;
826
- background: rgba(19, 31, 59, 0.95);
1877
+ background: rgba(239, 248, 255, 0.96);
827
1878
  border-bottom: 1px solid var(--border-weak);
828
1879
  padding: 0.4rem 0.6rem;
829
1880
  font-weight: 600;
830
1881
  }
831
1882
 
832
1883
  .diffHunkHeader {
833
- color: #8cbce5;
834
- background: rgba(8, 15, 32, 0.9);
1884
+ color: #4a9a9f;
1885
+ background: rgba(239, 242, 243, 0.9);
835
1886
  }
836
1887
 
837
1888
  .diffLine {
@@ -840,7 +1891,7 @@
840
1891
  align-items: center;
841
1892
  column-gap: 0.4rem;
842
1893
  padding: 0.08rem 0.35rem;
843
- border-bottom: 1px solid rgba(28, 45, 81, 0.45);
1894
+ border-bottom: 1px solid rgba(28, 47, 61, 0.08);
844
1895
  }
845
1896
 
846
1897
  .diffLine:last-child {
@@ -848,7 +1899,7 @@
848
1899
  }
849
1900
 
850
1901
  .diffNumber {
851
- color: #7186a8;
1902
+ color: rgba(89, 104, 115, 0.68);
852
1903
  text-align: right;
853
1904
  user-select: none;
854
1905
  }
@@ -860,19 +1911,19 @@
860
1911
  }
861
1912
 
862
1913
  .diffLineAdd {
863
- background: rgba(17, 85, 58, 0.38);
1914
+ background: rgba(15, 118, 110, 0.08);
864
1915
  }
865
1916
 
866
1917
  .diffLineDel {
867
- background: rgba(100, 30, 43, 0.42);
1918
+ background: rgba(180, 35, 24, 0.08);
868
1919
  }
869
1920
 
870
1921
  .diffLineMeta {
871
- color: #8ca6ca;
1922
+ color: var(--text-muted);
872
1923
  }
873
1924
 
874
1925
  .diffLineContext {
875
- color: #d9e9ff;
1926
+ color: var(--text-primary);
876
1927
  }
877
1928
 
878
1929
  .preContent,
@@ -895,36 +1946,39 @@
895
1946
  .linkButton {
896
1947
  border: 1px solid var(--border-weak);
897
1948
  border-radius: 0.55rem;
898
- background: rgba(20, 34, 63, 0.95);
899
- color: var(--text-primary);
1949
+ background: rgba(255, 255, 255, 0.94);
1950
+ color: #4a9a9f;
900
1951
  cursor: pointer;
901
1952
  padding: 0.43rem 0.6rem;
902
1953
  font-size: 0.75rem;
1954
+ font-weight: 600;
903
1955
  text-decoration: none;
904
1956
  display: inline-flex;
905
1957
  align-items: center;
906
1958
  justify-content: center;
1959
+ box-shadow: 0 6px 18px rgba(28, 47, 61, 0.06);
907
1960
  }
908
1961
 
909
1962
  .button:hover,
910
1963
  .linkButton:hover {
911
- border-color: #86b5ed;
1964
+ border-color: var(--border-strong);
1965
+ background: rgba(91, 173, 178, 0.08);
912
1966
  }
913
1967
 
914
1968
  .buttonDanger {
915
- border-color: rgba(231, 94, 111, 0.75);
916
- background: rgba(85, 24, 37, 0.9);
917
- color: #ffd6dc;
1969
+ border-color: rgba(180, 35, 24, 0.18);
1970
+ background: rgba(255, 245, 244, 0.96);
1971
+ color: #b42318;
918
1972
  }
919
1973
 
920
1974
  .buttonSuccess {
921
- border-color: rgba(46, 178, 122, 0.75);
922
- background: rgba(18, 75, 52, 0.9);
923
- color: #d4ffe8;
1975
+ border-color: rgba(91, 173, 178, 0.24);
1976
+ background: #5badb2;
1977
+ color: #ffffff;
924
1978
  }
925
1979
 
926
1980
  .buttonGhost {
927
- background: rgba(8, 15, 33, 0.88);
1981
+ background: rgba(239, 248, 255, 0.72);
928
1982
  }
929
1983
 
930
1984
  .button:disabled {
@@ -933,10 +1987,10 @@
933
1987
  }
934
1988
 
935
1989
  .banner {
936
- border: 1px solid rgba(242, 190, 89, 0.7);
1990
+ border: 1px solid rgba(248, 190, 45, 0.32);
937
1991
  border-radius: 0.62rem;
938
- background: rgba(71, 52, 16, 0.84);
939
- color: #ffe4a4;
1992
+ background: rgba(248, 190, 45, 0.14);
1993
+ color: var(--text-on-accent);
940
1994
  padding: 0.5rem 0.62rem;
941
1995
  font-size: 0.74rem;
942
1996
  }
@@ -945,7 +1999,7 @@
945
1999
  position: sticky;
946
2000
  bottom: 0;
947
2001
  z-index: 4;
948
- border-color: rgba(134, 181, 237, 0.7);
2002
+ border-color: var(--border-strong);
949
2003
  }
950
2004
 
951
2005
  .reviewWorkspace {
@@ -978,9 +2032,11 @@
978
2032
  }
979
2033
 
980
2034
  .reviewTitleWrap {
981
- display: inline-flex;
982
- align-items: center;
983
- gap: 0.45rem;
2035
+ width: 100%;
2036
+ display: flex;
2037
+ align-items: flex-start;
2038
+ justify-content: space-between;
2039
+ gap: 0.65rem;
984
2040
  flex-wrap: wrap;
985
2041
  }
986
2042
 
@@ -991,23 +2047,23 @@
991
2047
  font-size: 0.62rem;
992
2048
  letter-spacing: 0.04em;
993
2049
  text-transform: uppercase;
994
- color: #d8e9ff;
2050
+ color: var(--text-primary);
995
2051
  }
996
2052
 
997
2053
  .trustBadgeStructured {
998
- border-color: rgba(85, 154, 242, 0.7);
999
- background: rgba(17, 43, 80, 0.8);
2054
+ border-color: rgba(40, 178, 255, 0.2);
2055
+ background: rgba(40, 178, 255, 0.08);
1000
2056
  }
1001
2057
 
1002
2058
  .trustBadgeDerived {
1003
- border-color: rgba(137, 158, 189, 0.65);
1004
- background: rgba(21, 31, 50, 0.8);
2059
+ border-color: rgba(89, 104, 115, 0.16);
2060
+ background: rgba(239, 242, 243, 0.92);
1005
2061
  }
1006
2062
 
1007
2063
  .trustBadgeRaw {
1008
- border-color: rgba(237, 187, 93, 0.8);
1009
- background: rgba(73, 52, 16, 0.84);
1010
- color: #ffe7b3;
2064
+ border-color: rgba(248, 190, 45, 0.32);
2065
+ background: rgba(248, 190, 45, 0.14);
2066
+ color: var(--text-on-accent);
1011
2067
  }
1012
2068
 
1013
2069
  .trustLabelRow {
@@ -1027,7 +2083,7 @@
1027
2083
  .reviewDiffRegion {
1028
2084
  border: 1px solid var(--border-weak);
1029
2085
  border-radius: 0.62rem;
1030
- background: rgba(8, 14, 30, 0.95);
2086
+ background: rgba(255, 255, 255, 0.95);
1031
2087
  max-height: 28rem;
1032
2088
  overflow: auto;
1033
2089
  padding: 0.25rem;
@@ -1039,25 +2095,25 @@
1039
2095
 
1040
2096
  .reviewDiffHtml :global(.d2h-file-header),
1041
2097
  .reviewDiffHtml :global(.d2h-file-list-title) {
1042
- background: rgba(19, 31, 59, 0.95);
1043
- color: #dcecff;
2098
+ background: rgba(239, 248, 255, 0.96);
2099
+ color: var(--text-primary);
1044
2100
  }
1045
2101
 
1046
2102
  .reviewDiffHtml :global(.d2h-file-wrapper),
1047
2103
  .reviewDiffHtml :global(.d2h-file-list-wrapper),
1048
2104
  .reviewDiffHtml :global(.d2h-diff-table) {
1049
- background: rgba(9, 16, 34, 0.92);
1050
- color: #dcecff;
2105
+ background: rgba(255, 255, 255, 0.96);
2106
+ color: var(--text-primary);
1051
2107
  }
1052
2108
 
1053
2109
  .reviewDiffHtml :global(.d2h-code-line del),
1054
2110
  .reviewDiffHtml :global(.d2h-code-side-line del) {
1055
- background: rgba(151, 38, 54, 0.4);
2111
+ background: rgba(180, 35, 24, 0.08);
1056
2112
  }
1057
2113
 
1058
2114
  .reviewDiffHtml :global(.d2h-code-line ins),
1059
2115
  .reviewDiffHtml :global(.d2h-code-side-line ins) {
1060
- background: rgba(31, 121, 79, 0.42);
2116
+ background: rgba(15, 118, 110, 0.08);
1061
2117
  }
1062
2118
 
1063
2119
  .reviewMonacoWrap {
@@ -1078,7 +2134,7 @@
1078
2134
  .reviewLogEntry {
1079
2135
  border: 1px solid var(--border-weak);
1080
2136
  border-radius: 0.52rem;
1081
- background: rgba(10, 18, 38, 0.9);
2137
+ background: rgba(255, 255, 255, 0.92);
1082
2138
  padding: 0.38rem;
1083
2139
  display: grid;
1084
2140
  grid-template-columns: auto auto auto 1fr;
@@ -1095,7 +2151,7 @@
1095
2151
  .reviewRoleBadge {
1096
2152
  border: 1px solid var(--border-strong);
1097
2153
  border-radius: 999px;
1098
- background: rgba(14, 30, 57, 0.9);
2154
+ background: rgba(239, 248, 255, 0.92);
1099
2155
  padding: 0.02rem 0.35rem;
1100
2156
  text-transform: uppercase;
1101
2157
  font-size: 0.64rem;
@@ -1112,7 +2168,7 @@
1112
2168
  .reviewTranscriptEntry {
1113
2169
  border: 1px solid var(--border-weak);
1114
2170
  border-radius: 0.52rem;
1115
- background: rgba(10, 18, 38, 0.9);
2171
+ background: rgba(255, 255, 255, 0.92);
1116
2172
  padding: 0.4rem;
1117
2173
  font-size: 0.72rem;
1118
2174
  }
@@ -1128,7 +2184,7 @@
1128
2184
  .reviewTimelineEntry {
1129
2185
  border: 1px solid var(--border-weak);
1130
2186
  border-radius: 0.52rem;
1131
- background: rgba(10, 18, 38, 0.9);
2187
+ background: rgba(255, 255, 255, 0.92);
1132
2188
  padding: 0.35rem 0.45rem;
1133
2189
  font-size: 0.72rem;
1134
2190
  display: flex;
@@ -1138,8 +2194,8 @@
1138
2194
  }
1139
2195
 
1140
2196
  .reviewSessionRowActive {
1141
- border-color: rgba(113, 206, 157, 0.8);
1142
- background: rgba(15, 35, 34, 0.92);
2197
+ border-color: rgba(15, 118, 110, 0.24);
2198
+ background: rgba(15, 118, 110, 0.08);
1143
2199
  }
1144
2200
 
1145
2201
  .reviewSessionIdentity {
@@ -1155,17 +2211,17 @@
1155
2211
  padding: 0.06rem 0.35rem;
1156
2212
  font-size: 0.63rem;
1157
2213
  text-transform: uppercase;
1158
- color: #d6e9ff;
2214
+ color: var(--text-primary);
1159
2215
  }
1160
2216
 
1161
2217
  .reviewSessionMarker {
1162
- border: 1px solid rgba(84, 193, 140, 0.78);
2218
+ border: 1px solid rgba(15, 118, 110, 0.24);
1163
2219
  border-radius: 999px;
1164
2220
  padding: 0.06rem 0.35rem;
1165
2221
  font-size: 0.63rem;
1166
2222
  text-transform: uppercase;
1167
- color: #b8ffd8;
1168
- background: rgba(17, 74, 52, 0.8);
2223
+ color: #0f766e;
2224
+ background: rgba(15, 118, 110, 0.08);
1169
2225
  }
1170
2226
 
1171
2227
  .reviewSessionValue {
@@ -1181,7 +2237,7 @@
1181
2237
  position: fixed;
1182
2238
  inset: 0;
1183
2239
  z-index: 48;
1184
- background: rgba(4, 10, 22, 0.92);
2240
+ background: rgba(28, 47, 61, 0.18);
1185
2241
  padding: 0.65rem;
1186
2242
  }
1187
2243
 
@@ -1189,7 +2245,7 @@
1189
2245
  height: 100%;
1190
2246
  border: 1px solid var(--border-strong);
1191
2247
  border-radius: 0.7rem;
1192
- background: rgba(6, 13, 27, 0.98);
2248
+ background: rgba(255, 255, 255, 0.98);
1193
2249
  padding: 0.65rem;
1194
2250
  display: flex;
1195
2251
  flex-direction: column;
@@ -1202,6 +2258,124 @@
1202
2258
  flex-wrap: wrap;
1203
2259
  }
1204
2260
 
2261
+ .runtimeConsoleSection {
2262
+ border-color: var(--border-accent);
2263
+ background: linear-gradient(135deg, rgba(239, 248, 255, 0.96), rgba(255, 255, 255, 0.95));
2264
+ }
2265
+
2266
+ .runtimeInspectorHeader {
2267
+ display: grid;
2268
+ gap: 0.75rem;
2269
+ }
2270
+
2271
+ .runtimeInspectorSummaryGrid {
2272
+ display: grid;
2273
+ grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
2274
+ gap: 0.75rem;
2275
+ }
2276
+
2277
+ .runtimeEntryCard {
2278
+ display: grid;
2279
+ gap: 0.7rem;
2280
+ padding: 0.75rem;
2281
+ }
2282
+
2283
+ .runtimeEntryHeader {
2284
+ display: flex;
2285
+ align-items: flex-start;
2286
+ justify-content: space-between;
2287
+ gap: 0.75rem;
2288
+ flex-wrap: wrap;
2289
+ }
2290
+
2291
+ .runtimeEntryTitle {
2292
+ display: grid;
2293
+ gap: 0.25rem;
2294
+ min-width: 0;
2295
+ }
2296
+
2297
+ .runtimeEntryMetaGrid {
2298
+ display: grid;
2299
+ grid-template-columns: repeat(auto-fit, minmax(9.5rem, 1fr));
2300
+ gap: 0.5rem;
2301
+ }
2302
+
2303
+ .runtimeEntryMetaItem {
2304
+ border: 1px solid var(--border-weak);
2305
+ border-radius: 0.6rem;
2306
+ background: rgba(248, 250, 252, 0.92);
2307
+ padding: 0.55rem 0.6rem;
2308
+ min-width: 0;
2309
+ }
2310
+
2311
+ .runtimeEntryMetaItem strong {
2312
+ display: block;
2313
+ margin-top: 0.2rem;
2314
+ font-size: 0.86rem;
2315
+ line-height: 1.35;
2316
+ overflow-wrap: anywhere;
2317
+ }
2318
+
2319
+ .logViewerToolbar {
2320
+ display: flex;
2321
+ align-items: center;
2322
+ justify-content: space-between;
2323
+ gap: 0.75rem;
2324
+ flex-wrap: wrap;
2325
+ }
2326
+
2327
+ .logModeSwitch {
2328
+ display: inline-flex;
2329
+ gap: 0.3rem;
2330
+ flex-wrap: wrap;
2331
+ }
2332
+
2333
+ .logPrettyList {
2334
+ display: flex;
2335
+ flex-direction: column;
2336
+ gap: 0.55rem;
2337
+ }
2338
+
2339
+ .logPrettyEntry {
2340
+ border: 1px solid var(--border-weak);
2341
+ border-radius: 0.75rem;
2342
+ background: rgba(248, 250, 252, 0.86);
2343
+ padding: 0.7rem;
2344
+ display: grid;
2345
+ gap: 0.55rem;
2346
+ }
2347
+
2348
+ .logPrettyHeader {
2349
+ display: flex;
2350
+ align-items: flex-start;
2351
+ justify-content: space-between;
2352
+ gap: 0.65rem;
2353
+ flex-wrap: wrap;
2354
+ }
2355
+
2356
+ .logPrettyTitle {
2357
+ display: grid;
2358
+ gap: 0.22rem;
2359
+ min-width: 0;
2360
+ }
2361
+
2362
+ .logPrettyBody {
2363
+ margin: 0;
2364
+ font-size: 0.84rem;
2365
+ line-height: 1.55;
2366
+ color: var(--text-primary);
2367
+ white-space: pre-wrap;
2368
+ overflow-wrap: anywhere;
2369
+ }
2370
+
2371
+ .historyArchivePager {
2372
+ display: flex;
2373
+ align-items: center;
2374
+ justify-content: space-between;
2375
+ gap: 0.65rem;
2376
+ flex-wrap: wrap;
2377
+ }
2378
+
1205
2379
  .runtimeInspectorTabs {
1206
2380
  display: inline-flex;
1207
2381
  flex-wrap: wrap;
@@ -1212,7 +2386,7 @@
1212
2386
  .runtimeInspectorTab {
1213
2387
  border: 1px solid var(--border-strong);
1214
2388
  border-radius: 0.5rem;
1215
- background: rgba(10, 18, 38, 0.92);
2389
+ background: rgba(255, 255, 255, 0.92);
1216
2390
  color: var(--text-muted);
1217
2391
  font-size: 0.7rem;
1218
2392
  padding: 0.2rem 0.5rem;
@@ -1220,9 +2394,9 @@
1220
2394
  }
1221
2395
 
1222
2396
  .runtimeInspectorTabActive {
1223
- border-color: rgba(117, 169, 255, 0.78);
1224
- color: #d8e8ff;
1225
- background: rgba(23, 39, 74, 0.92);
2397
+ border-color: rgba(91, 173, 178, 0.38);
2398
+ color: var(--text-primary);
2399
+ background: rgba(239, 248, 255, 0.96);
1226
2400
  }
1227
2401
 
1228
2402
  .inspectorPanel {
@@ -1242,9 +2416,9 @@
1242
2416
  }
1243
2417
 
1244
2418
  .collisionPanel {
1245
- border: 1px solid rgba(245, 123, 136, 0.55);
2419
+ border: 1px solid rgba(180, 35, 24, 0.18);
1246
2420
  border-radius: 0.84rem;
1247
- background: rgba(56, 17, 28, 0.86);
2421
+ background: rgba(255, 245, 244, 0.92);
1248
2422
  padding: 0.8rem;
1249
2423
  margin-top: 0.8rem;
1250
2424
  }
@@ -1264,9 +2438,9 @@
1264
2438
  }
1265
2439
 
1266
2440
  .collisionItem {
1267
- border: 1px solid rgba(220, 104, 122, 0.45);
2441
+ border: 1px solid rgba(180, 35, 24, 0.16);
1268
2442
  border-radius: 0.62rem;
1269
- background: rgba(30, 10, 16, 0.75);
2443
+ background: rgba(255, 255, 255, 0.8);
1270
2444
  padding: 0.5rem;
1271
2445
  display: flex;
1272
2446
  flex-direction: column;
@@ -1297,7 +2471,7 @@
1297
2471
  width: 100%;
1298
2472
  height: 0.45rem;
1299
2473
  border-radius: 999px;
1300
- background: rgba(31, 47, 76, 0.95);
2474
+ background: rgba(239, 242, 243, 0.96);
1301
2475
  overflow: hidden;
1302
2476
  }
1303
2477
 
@@ -1306,15 +2480,15 @@
1306
2480
  }
1307
2481
 
1308
2482
  .scoreGood {
1309
- background: linear-gradient(90deg, #21a674, #7ae0b2);
2483
+ background: linear-gradient(90deg, #0f766e, #5badb2);
1310
2484
  }
1311
2485
 
1312
2486
  .scoreWarn {
1313
- background: linear-gradient(90deg, #b08729, #f4cf6d);
2487
+ background: linear-gradient(90deg, #d48b00, #f8be2d);
1314
2488
  }
1315
2489
 
1316
2490
  .scoreBad {
1317
- background: linear-gradient(90deg, #a53a4a, #f27b89);
2491
+ background: linear-gradient(90deg, #b42318, #ff8c7c);
1318
2492
  }
1319
2493
 
1320
2494
  .toastStack {
@@ -1331,7 +2505,7 @@
1331
2505
  min-width: 15rem;
1332
2506
  max-width: 24rem;
1333
2507
  border-radius: 0.65rem;
1334
- border: 1px solid rgba(91, 122, 165, 0.7);
2508
+ border: 1px solid var(--border-weak);
1335
2509
  box-shadow: var(--shadow-soft);
1336
2510
  padding: 0.55rem 0.65rem;
1337
2511
  font-size: 0.75rem;
@@ -1342,25 +2516,25 @@
1342
2516
  }
1343
2517
 
1344
2518
  .toastSuccess {
1345
- background: rgba(22, 84, 57, 0.95);
1346
- border-color: rgba(61, 190, 129, 0.8);
2519
+ background: rgba(235, 248, 246, 0.98);
2520
+ border-color: rgba(15, 118, 110, 0.2);
1347
2521
  }
1348
2522
 
1349
2523
  .toastError {
1350
- background: rgba(98, 29, 42, 0.95);
1351
- border-color: rgba(232, 103, 122, 0.8);
2524
+ background: rgba(255, 245, 244, 0.98);
2525
+ border-color: rgba(180, 35, 24, 0.18);
1352
2526
  }
1353
2527
 
1354
2528
  .toastInfo {
1355
- background: rgba(25, 56, 101, 0.95);
1356
- border-color: rgba(106, 172, 245, 0.8);
2529
+ background: rgba(239, 248, 255, 0.98);
2530
+ border-color: rgba(40, 178, 255, 0.18);
1357
2531
  }
1358
2532
 
1359
2533
  .toastDismiss {
1360
2534
  background: transparent;
1361
- border: 1px solid rgba(194, 216, 245, 0.45);
2535
+ border: 1px solid var(--border-weak);
1362
2536
  border-radius: 0.42rem;
1363
- color: #ecf5ff;
2537
+ color: var(--text-primary);
1364
2538
  cursor: pointer;
1365
2539
  padding: 0.06rem 0.35rem;
1366
2540
  font-size: 0.66rem;
@@ -1370,7 +2544,7 @@
1370
2544
  position: fixed;
1371
2545
  inset: 0;
1372
2546
  z-index: 80;
1373
- background: rgba(3, 7, 17, 0.72);
2547
+ background: rgba(28, 47, 61, 0.18);
1374
2548
  display: grid;
1375
2549
  place-items: center;
1376
2550
  padding: 1rem;
@@ -1380,7 +2554,7 @@
1380
2554
  width: min(30rem, 100%);
1381
2555
  border: 1px solid var(--border-strong);
1382
2556
  border-radius: 0.8rem;
1383
- background: rgba(12, 20, 39, 0.98);
2557
+ background: rgba(255, 255, 255, 0.98);
1384
2558
  box-shadow: var(--shadow-soft);
1385
2559
  padding: 0.9rem;
1386
2560
  display: flex;
@@ -1409,6 +2583,17 @@
1409
2583
  grid-template-columns: 1fr;
1410
2584
  }
1411
2585
 
2586
+ .commandCenterLayout,
2587
+ .prioritizedQueues,
2588
+ .attentionStrip,
2589
+ .launchDraftGrid {
2590
+ grid-template-columns: 1fr;
2591
+ }
2592
+
2593
+ .rolePerformanceGrid {
2594
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2595
+ }
2596
+
1412
2597
  .reviewWorkspace {
1413
2598
  grid-template-columns: 1fr;
1414
2599
  }
@@ -1431,6 +2616,10 @@
1431
2616
  grid-template-columns: 1fr;
1432
2617
  }
1433
2618
 
2619
+ .prioritizedQueues {
2620
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2621
+ }
2622
+
1434
2623
  .runtimeInspectorCompareGrid {
1435
2624
  grid-template-columns: 1fr;
1436
2625
  }
@@ -1440,12 +2629,31 @@
1440
2629
  }
1441
2630
  }
1442
2631
 
2632
+ @media (max-width: 900px) {
2633
+ .focusShell {
2634
+ grid-template-columns: 1fr;
2635
+ }
2636
+
2637
+ .focusSidebar {
2638
+ position: static;
2639
+ }
2640
+ }
2641
+
1443
2642
  @media (max-width: 680px) {
1444
2643
  .topBar {
1445
2644
  flex-direction: column;
1446
2645
  align-items: flex-start;
1447
2646
  }
1448
2647
 
2648
+ .commandCenterHeader {
2649
+ flex-direction: column;
2650
+ }
2651
+
2652
+ .commandCenterActions {
2653
+ width: 100%;
2654
+ align-items: flex-start;
2655
+ }
2656
+
1449
2657
  .metaControls {
1450
2658
  justify-content: flex-start;
1451
2659
  }
@@ -1455,10 +2663,20 @@
1455
2663
  }
1456
2664
 
1457
2665
  .summaryBar,
1458
- .kanbanGrid {
2666
+ .kanbanGrid,
2667
+ .rolePerformanceGrid {
2668
+ grid-template-columns: 1fr;
2669
+ }
2670
+
2671
+ .prioritizedQueues {
1459
2672
  grid-template-columns: 1fr;
1460
2673
  }
1461
2674
 
2675
+ .triageDrawer {
2676
+ position: static;
2677
+ max-height: none;
2678
+ }
2679
+
1462
2680
  .actionGrid {
1463
2681
  grid-template-columns: 1fr;
1464
2682
  }
@@ -1490,6 +2708,16 @@
1490
2708
  }
1491
2709
  }
1492
2710
 
2711
+ @media (max-width: 600px) {
2712
+ .focusHeroMetaGrid {
2713
+ grid-template-columns: 1fr;
2714
+ }
2715
+
2716
+ .focusTabBar {
2717
+ margin-inline: -0.1rem;
2718
+ }
2719
+ }
2720
+
1493
2721
  @media (max-width: 420px) {
1494
2722
  .dashboardRoot {
1495
2723
  padding: 0.7rem;
@@ -1500,6 +2728,11 @@
1500
2728
  gap: 0.45rem;
1501
2729
  }
1502
2730
 
2731
+ .projectPicker {
2732
+ width: 100%;
2733
+ justify-content: flex-start;
2734
+ }
2735
+
1503
2736
  .inlineActions {
1504
2737
  width: 100%;
1505
2738
  flex-wrap: wrap;
@@ -1576,4 +2809,54 @@
1576
2809
  flex-direction: column-reverse;
1577
2810
  align-items: stretch;
1578
2811
  }
2812
+
2813
+ .footerLinks {
2814
+ justify-content: stretch;
2815
+ padding: 0;
2816
+ }
2817
+ }
2818
+
2819
+ @keyframes spinSmall {
2820
+ to {
2821
+ transform: rotate(360deg);
2822
+ }
2823
+ }
2824
+
2825
+ .spinnerSmall {
2826
+ display: inline-block;
2827
+ width: 0.85rem;
2828
+ height: 0.85rem;
2829
+ border: 2px solid var(--border, #d1d5db);
2830
+ border-top-color: var(--text-link, #3b82f6);
2831
+ border-radius: 50%;
2832
+ animation: spinSmall 0.8s linear infinite;
2833
+ }
2834
+
2835
+ .dropZoneOverlay {
2836
+ position: fixed;
2837
+ inset: 0;
2838
+ z-index: 100;
2839
+ display: flex;
2840
+ flex-direction: column;
2841
+ align-items: center;
2842
+ justify-content: center;
2843
+ background: rgba(45, 106, 79, 0.1);
2844
+ border: 3px dashed var(--accent-green, #2d6a4f);
2845
+ border-radius: 1rem;
2846
+ margin: 0.75rem;
2847
+ pointer-events: none;
2848
+ backdrop-filter: blur(2px);
2849
+ }
2850
+
2851
+ .dropZoneOverlay h2 {
2852
+ font-size: 1.35rem;
2853
+ font-weight: 600;
2854
+ color: var(--accent-green, #4ade80);
2855
+ margin: 0;
2856
+ }
2857
+
2858
+ .dropZoneOverlay p {
2859
+ font-size: 0.9rem;
2860
+ color: var(--text-muted, #888);
2861
+ margin: 0.5rem 0 0;
1579
2862
  }