@cat-factory/app 0.302.2 → 0.303.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (328) hide show
  1. package/README.md +99 -14
  2. package/app/app.config.ts +19 -10
  3. package/app/assets/css/main.css +13 -13
  4. package/app/assets/css/prose.css +22 -22
  5. package/app/assets/css/tokens.css +298 -0
  6. package/app/components/assistant/AssistantModal.vue +22 -22
  7. package/app/components/auth/AuthGate.vue +1 -1
  8. package/app/components/auth/BackendMisconfiguredScreen.vue +10 -10
  9. package/app/components/auth/LoginScreen.vue +34 -36
  10. package/app/components/auth/ResetPasswordScreen.vue +12 -12
  11. package/app/components/auth/UserMenu.vue +4 -4
  12. package/app/components/binaryCandidates/BinaryCandidatesWindow.vue +27 -25
  13. package/app/components/binaryOutput/BinaryOutputReport.vue +15 -15
  14. package/app/components/binaryOutput/StoredAssetView.vue +5 -5
  15. package/app/components/board/AddTaskModal.vue +17 -20
  16. package/app/components/board/AgentFailureCard.vue +11 -11
  17. package/app/components/board/AgentFailureHistory.vue +2 -2
  18. package/app/components/board/BoardCanvas.vue +6 -5
  19. package/app/components/board/CreateInitiativeModal.vue +8 -10
  20. package/app/components/board/DependencyConnectOverlay.vue +1 -1
  21. package/app/components/board/FailureHistoryList.vue +7 -7
  22. package/app/components/board/RecurringPipelineModal.vue +17 -17
  23. package/app/components/board/ReviewFrictionDialog.vue +6 -6
  24. package/app/components/board/StepExecutionHistory.vue +13 -13
  25. package/app/components/board/TaskDependencyEdges.vue +8 -8
  26. package/app/components/board/nodes/AgentChip.vue +10 -10
  27. package/app/components/board/nodes/BlockNode.vue +29 -29
  28. package/app/components/board/nodes/DecisionBadge.vue +2 -2
  29. package/app/components/board/nodes/EpicNode.vue +14 -10
  30. package/app/components/board/nodes/FrameSwimlanes.vue +7 -9
  31. package/app/components/board/nodes/InitiativeCard.vue +8 -8
  32. package/app/components/board/nodes/LaneGroup.vue +1 -1
  33. package/app/components/board/nodes/LaneTask.vue +2 -2
  34. package/app/components/board/nodes/ResizeGrips.vue +4 -4
  35. package/app/components/board/nodes/TaskCard.vue +18 -18
  36. package/app/components/board/nodes/TaskLane.vue +5 -5
  37. package/app/components/board/nodes/TaskPipelineMini.vue +18 -18
  38. package/app/components/bootstrap/AdoptionReviewModal.vue +29 -26
  39. package/app/components/bootstrap/BootstrapModal.vue +21 -23
  40. package/app/components/bootstrap/BootstrapRunSteps.vue +1 -1
  41. package/app/components/brainstorm/BrainstormWindow.vue +30 -33
  42. package/app/components/bugFishing/BugFishingWindow.vue +49 -49
  43. package/app/components/clarity/ClarityReviewWindow.vue +30 -30
  44. package/app/components/common/AsyncViewError.vue +5 -5
  45. package/app/components/common/ClarificationItem.vue +8 -13
  46. package/app/components/common/ConfirmDialog.vue +4 -2
  47. package/app/components/common/DescriptorFields.vue +1 -1
  48. package/app/components/common/EmptyState.vue +3 -3
  49. package/app/components/common/InterviewGateNotice.vue +7 -7
  50. package/app/components/common/KeyboardShortcutsHelp.vue +1 -1
  51. package/app/components/common/MarkdownProse.vue +14 -13
  52. package/app/components/consensus/ConsensusSessionWindow.vue +26 -26
  53. package/app/components/context/ContextAttachmentFields.vue +17 -17
  54. package/app/components/docs/DocInterviewWindow.vue +14 -14
  55. package/app/components/documents/ContextDocumentPicker.vue +17 -17
  56. package/app/components/documents/DocumentImportModal.vue +7 -7
  57. package/app/components/documents/DocumentSourceConnectModal.vue +3 -3
  58. package/app/components/documents/DocumentSyncState.vue +5 -5
  59. package/app/components/documents/DocumentTemplatesModal.vue +15 -15
  60. package/app/components/documents/RepoContextDocPicker.vue +5 -5
  61. package/app/components/documents/SpawnPreviewModal.vue +12 -12
  62. package/app/components/documents/StartFromDesignModal.vue +11 -11
  63. package/app/components/documents/TaskContextDocs.vue +5 -5
  64. package/app/components/environments/EnvSetupStepper.vue +6 -6
  65. package/app/components/environments/EnvironmentStatusPanel.vue +17 -17
  66. package/app/components/environments/steps/EnvPickStep.vue +3 -3
  67. package/app/components/environments/steps/EnvPreflightStep.vue +9 -9
  68. package/app/components/environments/steps/EnvReviewStep.vue +25 -22
  69. package/app/components/environments/steps/EnvSaveStep.vue +7 -5
  70. package/app/components/environments/steps/JourneyStepNav.vue +1 -1
  71. package/app/components/focus/BlockFocusView.vue +17 -19
  72. package/app/components/followUp/FollowUpWindow.vue +23 -23
  73. package/app/components/forkDecision/ForkDecisionWindow.vue +37 -39
  74. package/app/components/foundational/FoundationalContractSummary.vue +7 -7
  75. package/app/components/foundational/FoundationalServiceCatalogList.vue +11 -11
  76. package/app/components/foundational/FoundationalServiceManager.vue +1 -1
  77. package/app/components/foundational/FoundationalServiceRegistry.vue +13 -13
  78. package/app/components/foundational/FoundationalServiceSources.vue +13 -13
  79. package/app/components/foundational/FoundationalSuppressions.vue +7 -7
  80. package/app/components/foundational/ServiceCatalogConnection.vue +10 -10
  81. package/app/components/fragments/FragmentLibraryManager.vue +41 -44
  82. package/app/components/fragments/FragmentSelector.vue +13 -13
  83. package/app/components/fragments/GitHubDocUrlImport.vue +1 -1
  84. package/app/components/gates/GateFailingCheckList.vue +5 -5
  85. package/app/components/gates/GateResultView.vue +50 -47
  86. package/app/components/github/AddServiceFromRepoModal.vue +14 -14
  87. package/app/components/github/BranchProtectionPreflight.vue +13 -13
  88. package/app/components/github/GitHubConnect.vue +7 -7
  89. package/app/components/github/GitHubOnboarding.vue +7 -7
  90. package/app/components/github/GitHubPanel.vue +37 -40
  91. package/app/components/github/RepoTreeBrowser.vue +18 -18
  92. package/app/components/humanTest/HumanTestWindow.vue +30 -33
  93. package/app/components/initiative/InitiativePlanNotice.vue +5 -5
  94. package/app/components/initiative/InitiativePlanReview.vue +27 -29
  95. package/app/components/initiative/InitiativePlanningWindow.vue +10 -10
  96. package/app/components/initiative/InitiativeTrackerWindow.vue +71 -65
  97. package/app/components/inputGate/InputGateNotice.vue +2 -4
  98. package/app/components/judge/JudgeResultView.vue +30 -32
  99. package/app/components/kaizen/KaizenPanel.vue +40 -36
  100. package/app/components/kaizen/KaizenStepStatus.vue +21 -21
  101. package/app/components/layout/AccountAuditLog.vue +10 -10
  102. package/app/components/layout/AccountDeploymentSettings.vue +20 -20
  103. package/app/components/layout/AccountFailureKindRules.vue +13 -13
  104. package/app/components/layout/AccountFoundationalSettings.vue +1 -1
  105. package/app/components/layout/AccountFragmentSettings.vue +1 -1
  106. package/app/components/layout/AccountModelPolicySettings.vue +9 -9
  107. package/app/components/layout/AccountPlatformAlertSettings.vue +11 -11
  108. package/app/components/layout/AccountRiskPolicySettings.vue +2 -2
  109. package/app/components/layout/AccountRunCredentialSettings.vue +5 -5
  110. package/app/components/layout/AccountSkillSettings.vue +1 -1
  111. package/app/components/layout/AccountTeamSettings.vue +23 -15
  112. package/app/components/layout/AiProvidersBanner.vue +11 -8
  113. package/app/components/layout/AppearanceSwitcher.vue +108 -0
  114. package/app/components/layout/BoardSwitcher.vue +8 -11
  115. package/app/components/layout/BoardToolbar.vue +3 -3
  116. package/app/components/layout/CommandBar.vue +7 -9
  117. package/app/components/layout/ConnectionStatusBanner.vue +2 -2
  118. package/app/components/layout/DefaultTestEnvBanner.vue +5 -5
  119. package/app/components/layout/GitHubPatBanner.vue +5 -5
  120. package/app/components/layout/GitHubPatPermissionsBanner.vue +16 -10
  121. package/app/components/layout/InfraSetupBanner.vue +6 -6
  122. package/app/components/layout/IntegrationsHub.vue +15 -15
  123. package/app/components/layout/LanguageSwitcher.vue +5 -5
  124. package/app/components/layout/ModelProvidersHub.vue +13 -16
  125. package/app/components/layout/NotificationsInbox.vue +10 -10
  126. package/app/components/layout/PersonalSetupModal.vue +8 -8
  127. package/app/components/layout/ProviderConfigBanner.vue +4 -4
  128. package/app/components/layout/RolePrompt.vue +7 -7
  129. package/app/components/layout/SideBar.vue +6 -4
  130. package/app/components/layout/SpendWarningBanner.vue +17 -14
  131. package/app/components/layout/TranslationWarningBanner.vue +4 -4
  132. package/app/components/layout/UiModeSwitcher.vue +13 -13
  133. package/app/components/layout/UiRoleSwitcher.vue +8 -8
  134. package/app/components/layout/WorkspaceMembersSettings.vue +15 -11
  135. package/app/components/media/ArtifactLightbox.vue +13 -13
  136. package/app/components/media/ImageCompare.vue +31 -24
  137. package/app/components/merge/MergeEffortChips.vue +2 -2
  138. package/app/components/notifications/NotificationSettingsPanel.vue +14 -12
  139. package/app/components/observability/OutcomeFilterChips.vue +6 -6
  140. package/app/components/observability/RunFailureSummary.vue +28 -25
  141. package/app/components/observability/StepMetricsBar.vue +26 -28
  142. package/app/components/observability/StepModelActivity.vue +2 -2
  143. package/app/components/observability/ToolCallList.vue +24 -24
  144. package/app/components/outcome/OutcomeSummaryWindow.vue +47 -47
  145. package/app/components/palettes/AgentPalette.vue +8 -8
  146. package/app/components/palettes/AgentTierSelect.vue +1 -1
  147. package/app/components/palettes/PipelinePurposeSelect.vue +1 -1
  148. package/app/components/panels/AgentStepDetail.vue +52 -51
  149. package/app/components/panels/AttemptEntryHeader.vue +4 -6
  150. package/app/components/panels/DecisionModal.vue +7 -7
  151. package/app/components/panels/GenericStructuredResultView.vue +7 -7
  152. package/app/components/panels/InspectorPanel.vue +17 -17
  153. package/app/components/panels/MergerResultView.vue +19 -19
  154. package/app/components/panels/ObservabilityPanel.vue +115 -123
  155. package/app/components/panels/OperatorDashboardPanel.vue +89 -97
  156. package/app/components/panels/ReportsPanel.vue +69 -66
  157. package/app/components/panels/ReportsSpendBreakdown.vue +9 -9
  158. package/app/components/panels/ResultWindowShell.vue +38 -38
  159. package/app/components/panels/RunDetailLoadState.vue +2 -2
  160. package/app/components/panels/StepContainerStatus.vue +9 -9
  161. package/app/components/panels/StepDelegatedStatus.logic.spec.ts +135 -0
  162. package/app/components/panels/StepDelegatedStatus.logic.ts +160 -0
  163. package/app/components/panels/StepDelegatedStatus.vue +181 -0
  164. package/app/components/panels/StepEffortReport.vue +16 -15
  165. package/app/components/panels/StepFragmentAdherence.vue +14 -10
  166. package/app/components/panels/StepMetadataCard.vue +74 -45
  167. package/app/components/panels/StepReproductionReport.vue +25 -21
  168. package/app/components/panels/StepRunMeta.vue +20 -20
  169. package/app/components/panels/StepTestReport.logic.spec.ts +8 -3
  170. package/app/components/panels/StepTestReport.logic.ts +4 -4
  171. package/app/components/panels/StepTestReport.vue +28 -28
  172. package/app/components/panels/StepToolServers.vue +14 -11
  173. package/app/components/panels/StepValidationReport.vue +7 -7
  174. package/app/components/panels/inspector/ContainerSummary.vue +9 -9
  175. package/app/components/panels/inspector/DocReferenceRepos.vue +3 -3
  176. package/app/components/panels/inspector/EnvProbeReport.vue +24 -27
  177. package/app/components/panels/inspector/EpicChildren.vue +8 -12
  178. package/app/components/panels/inspector/FrontendBindingsResolved.vue +11 -11
  179. package/app/components/panels/inspector/FrontendConfig.vue +37 -41
  180. package/app/components/panels/inspector/InitiativeInspector.vue +3 -3
  181. package/app/components/panels/inspector/InspectorSection.vue +6 -6
  182. package/app/components/panels/inspector/RecurringScheduleSettings.vue +16 -19
  183. package/app/components/panels/inspector/ServiceConnections.vue +2 -2
  184. package/app/components/panels/inspector/ServiceReleaseHealthConfig.vue +2 -2
  185. package/app/components/panels/inspector/ServiceSelfTests.vue +21 -17
  186. package/app/components/panels/inspector/ServiceTestConfig.vue +51 -59
  187. package/app/components/panels/inspector/ServiceTestSecrets.vue +5 -5
  188. package/app/components/panels/inspector/ServiceTestingContext.vue +3 -3
  189. package/app/components/panels/inspector/ServiceValidationConfig.vue +2 -2
  190. package/app/components/panels/inspector/TaskAgentConfig.vue +3 -3
  191. package/app/components/panels/inspector/TaskAprioriBranches.vue +8 -5
  192. package/app/components/panels/inspector/TaskDependencies.vue +1 -1
  193. package/app/components/panels/inspector/TaskEstimateBadge.vue +11 -11
  194. package/app/components/panels/inspector/TaskExecution.vue +17 -17
  195. package/app/components/panels/inspector/TaskReviewTarget.vue +2 -2
  196. package/app/components/panels/inspector/TaskRunSettings.vue +35 -37
  197. package/app/components/panels/inspector/TaskStructure.vue +3 -3
  198. package/app/components/pipeline/AgentKindIcon.vue +1 -1
  199. package/app/components/pipeline/AgentPromptEditor.vue +17 -17
  200. package/app/components/pipeline/BinaryOutputStepPicker.vue +42 -56
  201. package/app/components/pipeline/EstimateThresholdFields.vue +4 -4
  202. package/app/components/pipeline/GateConfigFields.vue +13 -10
  203. package/app/components/pipeline/IterationCapPrompt.vue +4 -2
  204. package/app/components/pipeline/PipelineBuilder.vue +47 -55
  205. package/app/components/pipeline/PipelineHealthModal.vue +27 -29
  206. package/app/components/pipeline/PipelinePicker.vue +10 -10
  207. package/app/components/pipeline/PipelinePreview.vue +10 -10
  208. package/app/components/pipeline/PipelineProgress.vue +64 -67
  209. package/app/components/prReview/PrReviewPhaseBadge.vue +7 -7
  210. package/app/components/prReview/PrReviewWindow.vue +75 -77
  211. package/app/components/providers/AiPresetMismatchDialog.vue +5 -5
  212. package/app/components/providers/AiProviderOnboardingModal.vue +9 -9
  213. package/app/components/providers/ApiKeysSection.vue +13 -13
  214. package/app/components/providers/PersonalCredentialModal.vue +2 -2
  215. package/app/components/providers/PersonalSubscriptionSection.vue +10 -10
  216. package/app/components/providers/SignInRequiredNotice.vue +1 -1
  217. package/app/components/providers/VendorCredentialsModal.vue +10 -10
  218. package/app/components/provisioning/ProvisioningLogsDrawer.vue +13 -13
  219. package/app/components/ralph/RalphLoopResultView.vue +28 -30
  220. package/app/components/recurring/RecurrenceEditor.vue +2 -2
  221. package/app/components/requirements/RequirementsReviewWindow.vue +51 -58
  222. package/app/components/riskPolicy/RiskPolicyPicker.vue +12 -15
  223. package/app/components/riskPolicy/RiskPolicyPreview.vue +14 -14
  224. package/app/components/sandbox/SandboxPanel.vue +58 -59
  225. package/app/components/settings/AccountSettingsPanel.vue +1 -1
  226. package/app/components/settings/ApiTokensPanel.vue +10 -10
  227. package/app/components/settings/BudgetSettings.vue +18 -22
  228. package/app/components/settings/CapabilityCredentialsPanel.vue +15 -15
  229. package/app/components/settings/CloudflareHandlerSection.vue +20 -20
  230. package/app/components/settings/ComposeEnvironmentSetupSection.vue +13 -13
  231. package/app/components/settings/ConnectionTestVerdict.vue +3 -3
  232. package/app/components/settings/ConnectionWarnings.vue +1 -1
  233. package/app/components/settings/ConsensusGroupsSection.vue +27 -35
  234. package/app/components/settings/CustomManifestTypeEditor.vue +10 -10
  235. package/app/components/settings/DefaultProvisionTypeSection.vue +6 -6
  236. package/app/components/settings/InfraHandlersConfigurator.vue +24 -22
  237. package/app/components/settings/InfrastructureBackendPicker.vue +6 -6
  238. package/app/components/settings/InfrastructureWindow.vue +5 -5
  239. package/app/components/settings/IssueTrackerPanel.vue +29 -23
  240. package/app/components/settings/KubernetesEngineForm.vue +11 -11
  241. package/app/components/settings/KubernetesEnvironmentForm.vue +4 -4
  242. package/app/components/settings/LocalContainerPoolSettings.vue +6 -11
  243. package/app/components/settings/LocalModelEndpointsPanel.vue +20 -18
  244. package/app/components/settings/McpAuthorizeScreen.vue +13 -15
  245. package/app/components/settings/McpOAuthCallbackScreen.vue +16 -10
  246. package/app/components/settings/MergeClassRulesEditor.vue +6 -9
  247. package/app/components/settings/MergeRolePolicyEditor.vue +16 -16
  248. package/app/components/settings/ModelConfigurationPanel.vue +23 -30
  249. package/app/components/settings/ModelPresetHealthModal.vue +15 -13
  250. package/app/components/settings/ObservabilityConnectionPanel.vue +4 -4
  251. package/app/components/settings/OpenRouterCatalogPanel.vue +26 -19
  252. package/app/components/settings/PackageRegistriesPanel.vue +8 -8
  253. package/app/components/settings/ProviderConnectionTab.vue +8 -11
  254. package/app/components/settings/ProviderManifestEditor.vue +9 -9
  255. package/app/components/settings/ProviderPreferenceEditor.vue +8 -8
  256. package/app/components/settings/RiskPolicyCreateForm.vue +10 -10
  257. package/app/components/settings/RiskPolicyEditorRow.vue +14 -14
  258. package/app/components/settings/RiskPolicyHealthModal.vue +15 -13
  259. package/app/components/settings/RiskPolicyInheritedRow.vue +1 -1
  260. package/app/components/settings/RiskPolicyPanel.vue +10 -15
  261. package/app/components/settings/ServiceFragmentDefaultsPanel.vue +7 -7
  262. package/app/components/settings/SharedStacksPanel.vue +9 -12
  263. package/app/components/settings/TaskSourceCard.vue +4 -4
  264. package/app/components/settings/TaskTypeSuppressionsPanel.vue +6 -6
  265. package/app/components/settings/ToolServerChecklist.vue +36 -29
  266. package/app/components/settings/UsageSettings.vue +15 -15
  267. package/app/components/settings/UserSecretsSection.vue +9 -12
  268. package/app/components/settings/WorkspaceMetadataSettings.vue +5 -5
  269. package/app/components/settings/WorkspaceSettingsPanel.vue +47 -47
  270. package/app/components/skills/ReviewSkillQueue.vue +10 -10
  271. package/app/components/skills/SkillLibraryManager.vue +23 -20
  272. package/app/components/slack/SlackPanel.vue +13 -17
  273. package/app/components/spec/ServiceSpecWindow.vue +45 -42
  274. package/app/components/tasks/BugHuntModal.vue +24 -27
  275. package/app/components/tasks/ContextIssuePicker.vue +11 -11
  276. package/app/components/tasks/TaskContextIssues.vue +3 -3
  277. package/app/components/tasks/TaskImportModal.vue +7 -7
  278. package/app/components/tasks/TaskSourceConnectModal.vue +10 -8
  279. package/app/components/testing/TestReportWindow.vue +99 -82
  280. package/app/components/theme/ThemeImportModal.vue +115 -0
  281. package/app/components/tutorial/TutorialCatalogue.vue +9 -9
  282. package/app/components/tutorial/TutorialNudge.vue +5 -5
  283. package/app/components/tutorial/TutorialOverlay.vue +12 -12
  284. package/app/components/tutorial/TutorialPrompt.vue +6 -9
  285. package/app/components/vcs/GitLabConnect.vue +4 -4
  286. package/app/components/vcs/VcsConnectSurfaces.vue +2 -2
  287. package/app/components/visualConfirm/VisualConfirmationWindow.vue +36 -36
  288. package/app/composables/api/client.ts +6 -1
  289. package/app/composables/usePipelineErrorToast.ts +17 -0
  290. package/app/modular/agent-kinds.ts +24 -0
  291. package/app/pages/index.vue +5 -5
  292. package/app/plugins/theme.client.ts +125 -0
  293. package/app/spa-loading-template.html +52 -14
  294. package/app/stores/agents.ts +1 -1
  295. package/app/stores/theme.spec.ts +56 -0
  296. package/app/stores/theme.ts +87 -0
  297. package/app/types/domain.ts +19 -0
  298. package/app/types/execution.ts +4 -0
  299. package/app/utils/agentOutput.ts +1 -1
  300. package/app/utils/binaryOutput.ts +6 -6
  301. package/app/utils/bootstrapSteps.ts +14 -14
  302. package/app/utils/catalog.ts +87 -83
  303. package/app/utils/colorTint.ts +10 -0
  304. package/app/utils/failureKinds.ts +1 -0
  305. package/app/utils/observability.ts +3 -3
  306. package/app/utils/pipelineRender.ts +13 -17
  307. package/app/utils/swimlanes.ts +4 -4
  308. package/app/utils/theme/bootPalette.spec.ts +54 -0
  309. package/app/utils/theme/bootPalette.ts +108 -0
  310. package/app/utils/theme/builtins.spec.ts +38 -0
  311. package/app/utils/theme/builtins.ts +55 -0
  312. package/app/utils/theme/css.ts +162 -0
  313. package/app/utils/theme/doc.ts +353 -0
  314. package/app/utils/theme/link.ts +93 -0
  315. package/app/utils/theme/presets.ts +509 -0
  316. package/app/utils/theme/theme.spec.ts +224 -0
  317. package/i18n/locales/de.json +61 -4
  318. package/i18n/locales/en.json +70 -4
  319. package/i18n/locales/es.json +61 -4
  320. package/i18n/locales/fr.json +61 -4
  321. package/i18n/locales/he.json +61 -4
  322. package/i18n/locales/it.json +61 -4
  323. package/i18n/locales/ja.json +61 -4
  324. package/i18n/locales/pl.json +61 -4
  325. package/i18n/locales/tr.json +61 -4
  326. package/i18n/locales/uk.json +61 -4
  327. package/nuxt.config.ts +37 -11
  328. package/package.json +10 -9
@@ -309,15 +309,15 @@ async function merge(pr: GitHubPullRequest) {
309
309
  <template v-else>
310
310
  <!-- connection header -->
311
311
  <div
312
- class="flex items-center justify-between gap-2 rounded-md border border-slate-800 bg-slate-900/60 px-3 py-2"
312
+ class="flex items-center justify-between gap-2 rounded-md border border-default bg-default/60 px-3 py-2"
313
313
  >
314
314
  <div class="flex items-center gap-2 min-w-0">
315
- <UIcon :name="providerIcon" class="h-5 w-5 text-slate-300" />
315
+ <UIcon :name="providerIcon" class="h-5 w-5 text-toned" />
316
316
  <div class="min-w-0">
317
- <div class="truncate text-sm text-slate-200">
317
+ <div class="truncate text-sm text-default">
318
318
  {{ github.connection?.accountLogin }}
319
319
  </div>
320
- <div class="text-[11px] text-slate-500">{{ connectionMeta }}</div>
320
+ <div class="text-[11px] text-dimmed">{{ connectionMeta }}</div>
321
321
  </div>
322
322
  </div>
323
323
  <div class="flex items-center gap-1">
@@ -371,7 +371,7 @@ async function merge(pr: GitHubPullRequest) {
371
371
  </UButton>
372
372
  </div>
373
373
 
374
- <div v-if="github.loading" class="flex items-center gap-2 py-6 text-sm text-slate-400">
374
+ <div v-if="github.loading" class="flex items-center gap-2 py-6 text-sm text-muted">
375
375
  <UIcon name="i-lucide-loader" class="h-4 w-4 animate-spin" />
376
376
  {{ t('github.panel.loading') }}
377
377
  </div>
@@ -380,7 +380,7 @@ async function merge(pr: GitHubPullRequest) {
380
380
  <section v-else-if="tab === 'repos'" class="space-y-2">
381
381
  <!-- manage which repos this board links -->
382
382
  <div class="flex items-center justify-between">
383
- <span class="text-[11px] uppercase tracking-wide text-slate-500">
383
+ <span class="text-[11px] uppercase tracking-wide text-dimmed">
384
384
  {{ t('github.panel.linkedToBoard') }}
385
385
  </span>
386
386
  <UButton
@@ -398,23 +398,20 @@ async function merge(pr: GitHubPullRequest) {
398
398
  </UButton>
399
399
  </div>
400
400
 
401
- <div
402
- v-if="managing"
403
- class="space-y-2 rounded-md border border-slate-700 bg-slate-900/80 p-3"
404
- >
405
- <p class="text-[12px] text-slate-400">
401
+ <div v-if="managing" class="space-y-2 rounded-md border border-muted bg-default/80 p-3">
402
+ <p class="text-[12px] text-muted">
406
403
  {{
407
404
  isAppConnection ? t('vcs.panel.manageHintApp') : t('vcs.panel.manageHintToken')
408
405
  }}
409
406
  </p>
410
407
  <div
411
408
  v-if="github.loadingAvailable"
412
- class="flex items-center gap-2 py-3 text-sm text-slate-400"
409
+ class="flex items-center gap-2 py-3 text-sm text-muted"
413
410
  >
414
411
  <UIcon name="i-lucide-loader" class="h-4 w-4 animate-spin" />
415
412
  {{ t('github.panel.loadingRepos') }}
416
413
  </div>
417
- <p v-else-if="!github.availableRepos.length" class="py-2 text-sm text-slate-400">
414
+ <p v-else-if="!github.availableRepos.length" class="py-2 text-sm text-muted">
418
415
  {{
419
416
  isAppConnection
420
417
  ? t('vcs.panel.noAvailableReposApp')
@@ -426,15 +423,15 @@ async function merge(pr: GitHubPullRequest) {
426
423
  v-for="r in github.availableRepos"
427
424
  :key="r.githubId"
428
425
  type="button"
429
- class="flex w-full items-center gap-2 rounded px-2 py-1.5 text-start transition hover:bg-slate-800/60"
426
+ class="flex w-full items-center gap-2 rounded px-2 py-1.5 text-start transition hover:bg-elevated/60"
430
427
  @click="toggleSelected(r.githubId)"
431
428
  >
432
429
  <UIcon
433
430
  :name="selected.has(r.githubId) ? 'i-lucide-check-square' : 'i-lucide-square'"
434
431
  class="h-4 w-4 shrink-0"
435
- :class="selected.has(r.githubId) ? 'text-indigo-400' : 'text-slate-500'"
432
+ :class="selected.has(r.githubId) ? 'text-primary' : 'text-dimmed'"
436
433
  />
437
- <span class="truncate text-sm text-slate-200">{{ r.owner }}/{{ r.name }}</span>
434
+ <span class="truncate text-sm text-default">{{ r.owner }}/{{ r.name }}</span>
438
435
  <UBadge v-if="r.private" color="neutral" variant="subtle" size="sm">
439
436
  {{ t('github.panel.private') }}
440
437
  </UBadge>
@@ -465,7 +462,7 @@ async function merge(pr: GitHubPullRequest) {
465
462
  </div>
466
463
  </div>
467
464
 
468
- <p v-if="!github.repos.length && !managing" class="py-4 text-sm text-slate-400">
465
+ <p v-if="!github.repos.length && !managing" class="py-4 text-sm text-muted">
469
466
  {{ t('github.panel.noLinkedRepos') }}
470
467
  </p>
471
468
 
@@ -477,13 +474,13 @@ async function merge(pr: GitHubPullRequest) {
477
474
  with a control whose result is the operator's to act on. -->
478
475
  <BranchProtectionPreflight
479
476
  v-if="github.repos.length && access.canManageIntegrations.value"
480
- class="rounded-md border border-slate-800 bg-slate-900/40 p-3"
477
+ class="rounded-md border border-default bg-default/40 p-3"
481
478
  />
482
479
 
483
480
  <div
484
481
  v-for="repo in github.repos"
485
482
  :key="repo.githubId"
486
- class="rounded-md border border-slate-800 bg-slate-900/60"
483
+ class="rounded-md border border-default bg-default/60"
487
484
  >
488
485
  <div class="flex items-center justify-between gap-2 px-3 py-2">
489
486
  <button
@@ -496,9 +493,9 @@ async function merge(pr: GitHubPullRequest) {
496
493
  ? 'i-lucide-chevron-down'
497
494
  : 'i-lucide-chevron-right'
498
495
  "
499
- class="h-4 w-4 shrink-0 text-slate-500"
496
+ class="h-4 w-4 shrink-0 text-dimmed"
500
497
  />
501
- <span class="truncate text-sm text-slate-200">
498
+ <span class="truncate text-sm text-default">
502
499
  {{ repo.owner }}/{{ repo.name }}
503
500
  </span>
504
501
  <UBadge v-if="repo.private" color="neutral" variant="subtle" size="sm">
@@ -506,13 +503,13 @@ async function merge(pr: GitHubPullRequest) {
506
503
  </UBadge>
507
504
  </button>
508
505
  <div class="flex items-center gap-2">
509
- <span v-if="repo.defaultBranch" class="text-[11px] text-slate-500">
506
+ <span v-if="repo.defaultBranch" class="text-[11px] text-dimmed">
510
507
  {{ repo.defaultBranch }}
511
508
  </span>
512
509
  <ULink
513
510
  :to="github.repoUrl(repo.githubId) ?? '#'"
514
511
  target="_blank"
515
- class="text-[11px] text-indigo-400 hover:underline"
512
+ class="text-[11px] text-primary hover:underline"
516
513
  >
517
514
  {{ t('github.panel.open') }}
518
515
  </ULink>
@@ -521,21 +518,21 @@ async function merge(pr: GitHubPullRequest) {
521
518
 
522
519
  <div
523
520
  v-if="expandedRepo === repo.githubId"
524
- class="space-y-2 border-t border-slate-800 px-3 py-2"
521
+ class="space-y-2 border-t border-default px-3 py-2"
525
522
  >
526
523
  <div
527
524
  v-for="b in github.branches[repo.githubId] ?? []"
528
525
  :key="b.name"
529
526
  class="flex items-center justify-between gap-2 text-[12px]"
530
527
  >
531
- <span class="flex items-center gap-1.5 truncate text-slate-300">
532
- <UIcon name="i-lucide-git-branch" class="h-3.5 w-3.5 text-slate-500" />
528
+ <span class="flex items-center gap-1.5 truncate text-toned">
529
+ <UIcon name="i-lucide-git-branch" class="h-3.5 w-3.5 text-dimmed" />
533
530
  {{ b.name }}
534
531
  <UBadge v-if="b.protected" color="warning" variant="subtle" size="sm">
535
532
  {{ t('github.panel.protected') }}
536
533
  </UBadge>
537
534
  </span>
538
- <code class="text-[10px] text-slate-500">{{ b.headSha.slice(0, 7) }}</code>
535
+ <code class="text-[10px] text-dimmed">{{ b.headSha.slice(0, 7) }}</code>
539
536
  </div>
540
537
 
541
538
  <!-- new branch -->
@@ -591,7 +588,7 @@ async function merge(pr: GitHubPullRequest) {
591
588
 
592
589
  <div
593
590
  v-if="showPrForm"
594
- class="space-y-2 rounded-md border border-slate-700 bg-slate-900/80 p-3"
591
+ class="space-y-2 rounded-md border border-muted bg-default/80 p-3"
595
592
  >
596
593
  <UFormField :label="t('github.panel.repository')">
597
594
  <UDropdownMenu :items="repoMenu" :content="{ align: 'start' }">
@@ -635,19 +632,19 @@ async function merge(pr: GitHubPullRequest) {
635
632
  </div>
636
633
  </div>
637
634
 
638
- <p v-if="!github.pulls.length" class="py-4 text-sm text-slate-400">
635
+ <p v-if="!github.pulls.length" class="py-4 text-sm text-muted">
639
636
  {{ t(pullTerms.none) }}
640
637
  </p>
641
638
  <div
642
639
  v-for="pr in github.pulls"
643
640
  :key="`${pr.repoGithubId}-${pr.number}`"
644
- class="flex items-center justify-between gap-2 rounded-md border border-slate-800 bg-slate-900/60 px-3 py-2"
641
+ class="flex items-center justify-between gap-2 rounded-md border border-default bg-default/60 px-3 py-2"
645
642
  >
646
643
  <div class="min-w-0">
647
- <div class="truncate text-sm text-slate-200">
648
- <span class="text-slate-500">#{{ pr.number }}</span> {{ pr.title }}
644
+ <div class="truncate text-sm text-default">
645
+ <span class="text-dimmed">#{{ pr.number }}</span> {{ pr.title }}
649
646
  </div>
650
- <div class="truncate text-[11px] text-slate-500">
647
+ <div class="truncate text-[11px] text-dimmed">
651
648
  {{ github.repoFor(pr.repoGithubId)?.name }} · {{ pr.headRef }} → {{ pr.baseRef }}
652
649
  </div>
653
650
  </div>
@@ -672,7 +669,7 @@ async function merge(pr: GitHubPullRequest) {
672
669
  <ULink
673
670
  :to="github.pullUrl(pr) ?? '#'"
674
671
  target="_blank"
675
- class="text-[11px] text-indigo-400 hover:underline"
672
+ class="text-[11px] text-primary hover:underline"
676
673
  >
677
674
  {{ t('github.panel.open') }}
678
675
  </ULink>
@@ -682,19 +679,19 @@ async function merge(pr: GitHubPullRequest) {
682
679
 
683
680
  <!-- issues -->
684
681
  <section v-else class="space-y-2">
685
- <p v-if="!github.issues.length" class="py-4 text-sm text-slate-400">
682
+ <p v-if="!github.issues.length" class="py-4 text-sm text-muted">
686
683
  {{ t('github.panel.noIssues') }}
687
684
  </p>
688
685
  <div
689
686
  v-for="issue in github.issues"
690
687
  :key="`${issue.repoGithubId}-${issue.number}`"
691
- class="flex items-center justify-between gap-2 rounded-md border border-slate-800 bg-slate-900/60 px-3 py-2"
688
+ class="flex items-center justify-between gap-2 rounded-md border border-default bg-default/60 px-3 py-2"
692
689
  >
693
690
  <div class="min-w-0">
694
- <div class="truncate text-sm text-slate-200">
695
- <span class="text-slate-500">#{{ issue.number }}</span> {{ issue.title }}
691
+ <div class="truncate text-sm text-default">
692
+ <span class="text-dimmed">#{{ issue.number }}</span> {{ issue.title }}
696
693
  </div>
697
- <div class="truncate text-[11px] text-slate-500">
694
+ <div class="truncate text-[11px] text-dimmed">
698
695
  {{ github.repoFor(issue.repoGithubId)?.name }}
699
696
  <span v-if="issue.labels.length">· {{ issue.labels.join(', ') }}</span>
700
697
  </div>
@@ -710,7 +707,7 @@ async function merge(pr: GitHubPullRequest) {
710
707
  <ULink
711
708
  :to="github.issueUrl(issue) ?? '#'"
712
709
  target="_blank"
713
- class="text-[11px] text-indigo-400 hover:underline"
710
+ class="text-[11px] text-primary hover:underline"
714
711
  >
715
712
  {{ t('github.panel.open') }}
716
713
  </ULink>
@@ -179,7 +179,7 @@ watch(
179
179
  {{ t('github.repoTree.root') }}
180
180
  </UButton>
181
181
  <template v-for="crumb in breadcrumbs" :key="crumb.path">
182
- <span class="text-slate-600">/</span>
182
+ <span class="text-app-600">/</span>
183
183
  <UButton
184
184
  size="xs"
185
185
  variant="ghost"
@@ -193,14 +193,14 @@ watch(
193
193
  </div>
194
194
 
195
195
  <!-- listing -->
196
- <div class="max-h-56 overflow-auto rounded border border-slate-800">
197
- <div v-if="loading" class="p-3 text-sm text-slate-400">
196
+ <div class="max-h-56 overflow-auto rounded border border-default">
197
+ <div v-if="loading" class="p-3 text-sm text-muted">
198
198
  {{ t('github.repoTree.loading') }}
199
199
  </div>
200
- <div v-else-if="isEmpty" class="p-3 text-sm text-slate-400">
200
+ <div v-else-if="isEmpty" class="p-3 text-sm text-muted">
201
201
  {{ mode === 'dir' ? t('github.repoTree.noSubdirectories') : t('github.repoTree.empty') }}
202
202
  </div>
203
- <ul v-else class="divide-y divide-slate-800">
203
+ <ul v-else class="divide-y divide-default">
204
204
  <li
205
205
  v-for="entry in dirEntries"
206
206
  :key="entry.path"
@@ -208,22 +208,22 @@ watch(
208
208
  >
209
209
  <button
210
210
  type="button"
211
- class="flex items-center gap-2 truncate text-sm text-slate-200 hover:text-primary-400"
211
+ class="flex items-center gap-2 truncate text-sm text-default hover:text-primary"
212
212
  @click="browseTo(entry.path)"
213
213
  >
214
- <UIcon name="i-lucide-folder" class="h-4 w-4 shrink-0 text-amber-400" />
214
+ <UIcon name="i-lucide-folder" class="h-4 w-4 shrink-0 text-app-warning-400" />
215
215
  <span class="truncate">{{ entry.name }}</span>
216
216
  </button>
217
217
  <span
218
218
  v-if="clashes(entry)"
219
- class="flex shrink-0 items-center gap-1 text-xs text-amber-400"
219
+ class="flex shrink-0 items-center gap-1 text-xs text-app-warning-400"
220
220
  >
221
221
  <UIcon name="i-lucide-circle-alert" class="h-3.5 w-3.5" />
222
222
  {{ t('github.repoTree.exists') }}
223
223
  </span>
224
224
  <span
225
225
  v-else-if="mode === 'dir' && isAdded(entry.path)"
226
- class="flex shrink-0 items-center gap-1 text-xs text-slate-500"
226
+ class="flex shrink-0 items-center gap-1 text-xs text-dimmed"
227
227
  >
228
228
  <UIcon name="i-lucide-check" class="h-3.5 w-3.5" />
229
229
  {{ t('github.repoTree.added') }}
@@ -242,7 +242,7 @@ watch(
242
242
  <!-- multiple: a bulk header so a whole directory of documents is one click -->
243
243
  <li
244
244
  v-if="selectableFiles.length > 1"
245
- class="flex items-center gap-2 bg-slate-900/60 px-3 py-1.5"
245
+ class="flex items-center gap-2 bg-default/60 px-3 py-1.5"
246
246
  >
247
247
  <UCheckbox
248
248
  :model-value="allSelected"
@@ -258,7 +258,7 @@ watch(
258
258
  />
259
259
  <button
260
260
  type="button"
261
- class="text-xs text-slate-400 hover:text-primary-400"
261
+ class="text-xs text-muted hover:text-primary"
262
262
  @click="toggleAllFiles"
263
263
  >
264
264
  {{
@@ -284,18 +284,18 @@ watch(
284
284
  />
285
285
  <button
286
286
  type="button"
287
- class="flex items-center gap-2 truncate text-sm hover:text-primary-400"
288
- :class="isPicked(entry.path) ? 'text-primary-400' : 'text-slate-300'"
287
+ class="flex items-center gap-2 truncate text-sm hover:text-primary"
288
+ :class="isPicked(entry.path) ? 'text-primary' : 'text-toned'"
289
289
  :disabled="isAdded(entry.path)"
290
290
  @click="pick(entry.path)"
291
291
  >
292
- <UIcon name="i-lucide-file" class="h-4 w-4 shrink-0 text-slate-400" />
292
+ <UIcon name="i-lucide-file" class="h-4 w-4 shrink-0 text-muted" />
293
293
  <span class="truncate">{{ entry.name }}</span>
294
294
  </button>
295
295
  </div>
296
296
  <span
297
297
  v-if="isAdded(entry.path)"
298
- class="flex shrink-0 items-center gap-1 text-xs text-slate-500"
298
+ class="flex shrink-0 items-center gap-1 text-xs text-dimmed"
299
299
  >
300
300
  <UIcon name="i-lucide-check" class="h-3.5 w-3.5" />
301
301
  {{ t('github.repoTree.added') }}
@@ -303,7 +303,7 @@ watch(
303
303
  <UIcon
304
304
  v-else-if="!multiple && isPicked(entry.path)"
305
305
  name="i-lucide-check"
306
- class="h-4 w-4 shrink-0 text-primary-400"
306
+ class="h-4 w-4 shrink-0 text-primary"
307
307
  />
308
308
  </li>
309
309
  </template>
@@ -316,14 +316,14 @@ watch(
316
316
  <div v-if="placingNewDir" class="mt-2 flex items-center justify-between gap-2">
317
317
  <p
318
318
  class="min-w-0 truncate text-xs"
319
- :class="nameTakenHere ? 'text-amber-400' : 'text-slate-400'"
319
+ :class="nameTakenHere ? 'text-app-warning-400' : 'text-muted'"
320
320
  >
321
321
  <template v-if="nameTakenHere">
322
322
  {{ t('github.repoTree.nameTaken', { name: newDirName }) }}
323
323
  </template>
324
324
  <template v-else>
325
325
  {{ t('github.repoTree.newDirTarget') }}
326
- <code class="text-slate-200">{{ pickedPathFor(currentPath) }}</code>
326
+ <code class="text-default">{{ pickedPathFor(currentPath) }}</code>
327
327
  </template>
328
328
  </p>
329
329
  <UButton
@@ -65,12 +65,12 @@ const ENV_STATUS_LABEL: Record<HumanTestEnvironmentStatus, string> = {
65
65
  torn_down: 'humanTest.envStatus.tornDown',
66
66
  }
67
67
  const ENV_STATUS_COLOR: Record<HumanTestEnvironmentStatus, string> = {
68
- provisioning: 'text-amber-300',
69
- ready: 'text-emerald-300',
70
- failed: 'text-rose-300',
71
- expired: 'text-slate-400',
72
- tearing_down: 'text-slate-400',
73
- torn_down: 'text-slate-400',
68
+ provisioning: 'text-app-warning-300',
69
+ ready: 'text-app-success-300',
70
+ failed: 'text-app-error-300',
71
+ expired: 'text-muted',
72
+ tearing_down: 'text-muted',
73
+ torn_down: 'text-muted',
74
74
  }
75
75
 
76
76
  const PHASE_LABEL: Record<NonNullable<HumanTestStepState['phase']>, string> = {
@@ -150,7 +150,7 @@ const canDestroy = computed(
150
150
  <ResultWindowShell
151
151
  :open="open"
152
152
  icon="i-lucide-user-check"
153
- icon-class="bg-amber-500/15 text-amber-300"
153
+ icon-class="bg-app-warning-500/15 text-app-warning-300"
154
154
  :title="headerTitle"
155
155
  :subtitle="phase ? t(PHASE_LABEL[phase]) : t('humanTest.subtitle')"
156
156
  width="3xl"
@@ -159,7 +159,7 @@ const canDestroy = computed(
159
159
  <div class="flex min-h-0 flex-1 flex-col gap-4 overflow-y-auto px-5 py-4">
160
160
  <div
161
161
  v-if="!ht"
162
- class="flex flex-col items-center justify-center gap-2 py-10 text-center text-slate-400"
162
+ class="flex flex-col items-center justify-center gap-2 py-10 text-center text-muted"
163
163
  >
164
164
  <UIcon name="i-lucide-user-check" class="h-8 w-8 opacity-40" />
165
165
  <p class="text-sm">{{ t('humanTest.notStarted') }}</p>
@@ -167,8 +167,8 @@ const canDestroy = computed(
167
167
 
168
168
  <template v-else>
169
169
  <!-- Environment -->
170
- <section class="rounded-lg border border-slate-800 bg-slate-900/60 p-4">
171
- <h3 class="mb-2 text-[11px] font-semibold uppercase tracking-wide text-slate-500">
170
+ <section class="rounded-lg border border-default bg-default/60 p-4">
171
+ <h3 class="mb-2 text-[11px] font-semibold uppercase tracking-wide text-dimmed">
172
172
  {{ t('humanTest.environment.heading') }}
173
173
  </h3>
174
174
  <div v-if="env" class="space-y-2">
@@ -187,22 +187,22 @@ const canDestroy = computed(
187
187
  :href="env.url"
188
188
  target="_blank"
189
189
  rel="noopener"
190
- class="inline-flex items-center gap-1.5 break-all text-[13px] text-sky-300 hover:underline"
190
+ class="inline-flex items-center gap-1.5 break-all text-[13px] text-app-info-300 hover:underline"
191
191
  >
192
192
  <UIcon name="i-lucide-external-link" class="h-3.5 w-3.5 shrink-0" />
193
193
  {{ env.url }}
194
194
  </a>
195
- <p v-else class="text-[12px] italic text-slate-500">
195
+ <p v-else class="text-[12px] italic text-dimmed">
196
196
  {{ t('humanTest.environment.noUrl') }}
197
197
  </p>
198
- <p v-if="env.expiresAt" class="text-[11px] text-slate-500">
198
+ <p v-if="env.expiresAt" class="text-[11px] text-dimmed">
199
199
  {{ t('humanTest.environment.expires', { date: d(new Date(env.expiresAt), 'long') }) }}
200
200
  </p>
201
201
  </div>
202
- <p v-else class="text-[12px] text-amber-300/90">
202
+ <p v-else class="text-[12px] text-app-warning-300/90">
203
203
  {{ ht.degradedReason ?? t('humanTest.environment.none') }}
204
204
  </p>
205
- <p v-if="env && ht.degradedReason" class="mt-2 text-[12px] text-amber-300/90">
205
+ <p v-if="env && ht.degradedReason" class="mt-2 text-[12px] text-app-warning-300/90">
206
206
  {{ ht.degradedReason }}
207
207
  </p>
208
208
 
@@ -249,23 +249,20 @@ const canDestroy = computed(
249
249
  <!-- Working state -->
250
250
  <p
251
251
  v-if="working"
252
- class="flex items-center gap-2 rounded-lg border border-slate-800 bg-slate-950/40 px-3 py-2 text-[12px] text-slate-300"
252
+ class="flex items-center gap-2 rounded-lg border border-default bg-app-950/40 px-3 py-2 text-[12px] text-toned"
253
253
  >
254
- <UIcon name="i-lucide-loader" class="h-3.5 w-3.5 animate-spin text-amber-300" />
254
+ <UIcon name="i-lucide-loader" class="h-3.5 w-3.5 animate-spin text-app-warning-300" />
255
255
  {{ phase ? t(PHASE_LABEL[phase]) : '' }}
256
256
  </p>
257
257
 
258
258
  <!-- Findings / fix -->
259
- <section
260
- v-if="awaitingHuman"
261
- class="rounded-lg border border-slate-800 bg-slate-900/60 p-4"
262
- >
259
+ <section v-if="awaitingHuman" class="rounded-lg border border-default bg-default/60 p-4">
263
260
  <div class="flex items-center justify-between">
264
- <h3 class="text-[11px] font-semibold uppercase tracking-wide text-slate-500">
261
+ <h3 class="text-[11px] font-semibold uppercase tracking-wide text-dimmed">
265
262
  {{ t('humanTest.fix.heading') }}
266
263
  </h3>
267
264
  <button
268
- class="text-[12px] text-slate-400 hover:text-slate-200"
265
+ class="text-[12px] text-muted hover:text-default"
269
266
  @click="showFindings = !showFindings"
270
267
  >
271
268
  {{ showFindings ? t('humanTest.fix.cancel') : t('humanTest.fix.requestFix') }}
@@ -276,7 +273,7 @@ const canDestroy = computed(
276
273
  v-model="findings"
277
274
  rows="4"
278
275
  :placeholder="t('humanTest.fix.placeholder')"
279
- class="w-full rounded-md border border-slate-700 bg-slate-950 px-3 py-2 text-[13px] text-slate-200 placeholder:text-slate-600 focus:border-amber-500 focus:outline-none focus-visible:ring-2 focus-visible:ring-amber-500/60"
276
+ class="w-full rounded-md border border-muted bg-app-950 px-3 py-2 text-[13px] text-default placeholder:text-app-600 focus:border-app-warning-500 focus:outline-none focus-visible:ring-2 focus-visible:ring-app-warning-500/60"
280
277
  />
281
278
  <UButton
282
279
  size="sm"
@@ -295,19 +292,19 @@ const canDestroy = computed(
295
292
  <!-- Rounds history -->
296
293
  <section
297
294
  v-if="ht.rounds && ht.rounds.length"
298
- class="rounded-lg border border-slate-800 bg-slate-900/60 p-4"
295
+ class="rounded-lg border border-default bg-default/60 p-4"
299
296
  >
300
- <h3 class="mb-2 text-[11px] font-semibold uppercase tracking-wide text-slate-500">
297
+ <h3 class="mb-2 text-[11px] font-semibold uppercase tracking-wide text-dimmed">
301
298
  {{ t('humanTest.history.heading', { count: ht.attempts }, ht.attempts) }}
302
299
  </h3>
303
300
  <ol class="space-y-2">
304
301
  <li v-for="(r, i) in ht.rounds" :key="i" class="flex items-start gap-2 text-[12px]">
305
302
  <UIcon
306
303
  :name="r.kind === 'fix' ? 'i-lucide-wrench' : 'i-lucide-git-merge'"
307
- class="mt-0.5 h-3.5 w-3.5 shrink-0 text-slate-400"
304
+ class="mt-0.5 h-3.5 w-3.5 shrink-0 text-muted"
308
305
  />
309
306
  <div class="min-w-0 flex-1">
310
- <span class="text-slate-200">{{
307
+ <span class="text-default">{{
311
308
  r.kind === 'fix'
312
309
  ? t('humanTest.history.fixRequested')
313
310
  : t('humanTest.history.pulledMain')
@@ -316,10 +313,10 @@ const canDestroy = computed(
316
313
  class="ms-1.5 rounded px-1 text-[10px] uppercase"
317
314
  :class="
318
315
  r.outcome === 'completed'
319
- ? 'bg-emerald-500/15 text-emerald-300'
316
+ ? 'bg-app-success-500/15 text-app-success-300'
320
317
  : r.outcome === 'failed'
321
- ? 'bg-rose-500/15 text-rose-300'
322
- : 'bg-slate-500/15 text-slate-300'
318
+ ? 'bg-app-error-500/15 text-app-error-300'
319
+ : 'bg-app-500/15 text-toned'
323
320
  "
324
321
  >
325
322
  {{
@@ -328,7 +325,7 @@ const canDestroy = computed(
328
325
  : t('humanTest.roundOutcome.inProgress')
329
326
  }}
330
327
  </span>
331
- <p v-if="r.findings" class="leading-snug text-slate-400">{{ r.findings }}</p>
328
+ <p v-if="r.findings" class="leading-snug text-muted">{{ r.findings }}</p>
332
329
  </div>
333
330
  </li>
334
331
  </ol>
@@ -339,7 +336,7 @@ const canDestroy = computed(
339
336
  <!-- Footer: the primary confirm action -->
340
337
  <footer
341
338
  v-if="ht"
342
- class="flex items-center justify-between gap-3 border-t border-slate-800 px-5 py-3"
339
+ class="flex items-center justify-between gap-3 border-t border-default px-5 py-3"
343
340
  >
344
341
  <StepRunMeta
345
342
  v-if="step"
@@ -39,19 +39,19 @@ const { t } = useI18n()
39
39
 
40
40
  <template>
41
41
  <section
42
- class="mb-4 rounded-lg border border-amber-500/40 bg-amber-500/10 p-3.5"
42
+ class="mb-4 rounded-lg border border-app-warning-500/40 bg-app-warning-500/10 p-3.5"
43
43
  data-testid="initiative-plan-notice"
44
44
  >
45
45
  <header class="flex items-start gap-2.5">
46
- <UIcon name="i-lucide-clipboard-check" class="mt-0.5 h-4 w-4 shrink-0 text-amber-300" />
46
+ <UIcon name="i-lucide-clipboard-check" class="mt-0.5 h-4 w-4 shrink-0 text-app-warning-300" />
47
47
  <div class="min-w-0 flex-1">
48
- <h3 class="text-[13px] font-semibold text-amber-200">
48
+ <h3 class="text-[13px] font-semibold text-app-warning-200">
49
49
  {{ t('initiative.planReview.title') }}
50
50
  </h3>
51
- <p class="mt-0.5 text-[12px] leading-relaxed text-amber-100/80">
51
+ <p class="mt-0.5 text-[12px] leading-relaxed text-app-warning-100/80">
52
52
  {{ t('initiative.planReview.body') }}
53
53
  </p>
54
- <p class="mt-2 text-[12px] leading-relaxed text-amber-100/70">
54
+ <p class="mt-2 text-[12px] leading-relaxed text-app-warning-100/70">
55
55
  {{ t('initiative.planReview.noDocument') }}
56
56
  <template v-if="hasSections">
57
57
  {{ t('initiative.planReview.noDocumentSections') }}