@dsdenes/devboard 0.1.559 → 0.1.562

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 (323) hide show
  1. package/AGENTS.md +59 -0
  2. package/README.md +2497 -26
  3. package/bin/devboard.mjs +352 -118
  4. package/client/App.svelte +523 -0
  5. package/client/FeedbackOverlay.svelte +1125 -0
  6. package/client/FlowMode.svelte +1015 -0
  7. package/client/app.css +3922 -0
  8. package/client/env.d.ts +23 -0
  9. package/client/lib/commands.ts +836 -0
  10. package/client/lib/components/ActivityBar.svelte +295 -0
  11. package/client/lib/components/AdrTable.svelte +241 -0
  12. package/client/lib/components/CommandPalette.svelte +198 -0
  13. package/client/lib/components/ConceptKind.svelte +66 -0
  14. package/client/lib/components/ConfirmDialog.svelte +62 -0
  15. package/client/lib/components/DataTable.svelte +243 -0
  16. package/client/lib/components/DetailSplit.svelte +68 -0
  17. package/client/lib/components/DiscoverOverview.svelte +898 -0
  18. package/client/lib/components/DiscoverWorkspace.svelte +437 -0
  19. package/client/lib/components/DraftsPage.svelte +186 -0
  20. package/client/lib/components/GoalWorkspace.svelte +1042 -0
  21. package/client/lib/components/IssuesAgentFocus.svelte +117 -0
  22. package/client/lib/components/IssuesAgentLog.svelte +50 -0
  23. package/client/lib/components/IssuesQuestion.svelte +95 -0
  24. package/client/lib/components/IssuesWorkspace.svelte +577 -0
  25. package/client/lib/components/MermaidDiagram.svelte +89 -0
  26. package/client/lib/components/MonacoEditor.svelte +190 -0
  27. package/client/lib/components/NotificationRegion.svelte +195 -0
  28. package/client/lib/components/PaneHandle.svelte +25 -0
  29. package/client/lib/components/ScoutIssues.svelte +215 -0
  30. package/client/lib/components/ScoutWorkspace.svelte +180 -0
  31. package/client/lib/components/Sidebar.svelte +622 -0
  32. package/client/lib/components/StatusBar.svelte +118 -0
  33. package/client/lib/components/Terminal.svelte +193 -0
  34. package/client/lib/components/WatchdogWorkspace.svelte +537 -0
  35. package/client/lib/components/ui/button.svelte +56 -0
  36. package/client/lib/components/ui/icon-button.svelte +56 -0
  37. package/client/lib/components/ui/input.svelte +19 -0
  38. package/client/lib/components/ui/page-header.svelte +120 -0
  39. package/client/lib/components/ui/stage-track.svelte +141 -0
  40. package/client/lib/components/watchdog-indicator.svelte +189 -0
  41. package/client/lib/connection.svelte.ts +210 -0
  42. package/client/lib/dependency-diagram.test.ts +90 -0
  43. package/client/lib/dependency-diagram.ts +75 -0
  44. package/client/lib/discover-format.test.ts +265 -0
  45. package/client/lib/discover-format.ts +394 -0
  46. package/client/lib/discover.svelte.ts +412 -0
  47. package/client/lib/draft-format.test.ts +48 -0
  48. package/client/lib/draft-format.ts +13 -0
  49. package/client/lib/flow-save.test.ts +148 -0
  50. package/client/lib/flow.svelte.ts +445 -0
  51. package/client/lib/goal-reconnect.test.ts +282 -0
  52. package/client/lib/goal.svelte.ts +652 -0
  53. package/client/lib/issues.svelte.ts +439 -0
  54. package/client/lib/layout.svelte.ts +234 -0
  55. package/client/lib/notification-issue.test.ts +53 -0
  56. package/client/lib/notification-issue.ts +27 -0
  57. package/client/lib/notifications.svelte.ts +62 -0
  58. package/client/lib/poll-status.test.ts +141 -0
  59. package/client/lib/poll-status.ts +88 -0
  60. package/client/lib/record-status.test.ts +19 -0
  61. package/client/lib/record-status.ts +25 -0
  62. package/client/lib/scout.svelte.ts +164 -0
  63. package/client/lib/skill-document.test.ts +77 -0
  64. package/client/lib/skill-document.ts +57 -0
  65. package/client/lib/status-tone.test.ts +40 -0
  66. package/client/lib/status-tone.ts +33 -0
  67. package/client/lib/types.ts +578 -0
  68. package/client/lib/utils.ts +6 -0
  69. package/client/lib/viewport.svelte.ts +20 -0
  70. package/client/lib/watchdog.svelte.ts +69 -0
  71. package/client/main.ts +7 -0
  72. package/dist/apple-touch-icon.png +0 -0
  73. package/dist/assets/abnfDiagram-VCTEODGH-CmBSMArZ.js +1 -0
  74. package/dist/assets/arc-BZgCSX2H.js +1 -0
  75. package/dist/assets/architecture-7GRP2DOG-CF9MHlfo.js +1 -0
  76. package/dist/assets/architectureDiagram-5GKGNRK7-DzWB6xiQ.js +36 -0
  77. package/dist/assets/array-BifhSqXX.js +1 -0
  78. package/dist/assets/blockDiagram-I7D4REHJ-BtmGJ0hn.js +129 -0
  79. package/dist/assets/c4Diagram-7LVT6UL2-D5CHrrRX.js +38 -0
  80. package/dist/assets/channel-CgM4lcUW.js +1 -0
  81. package/dist/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
  82. package/dist/assets/chunk-4HAMMTFA-DeIufjFl.js +62 -0
  83. package/dist/assets/chunk-5VM5RSS4-ZNzvKenW.js +15 -0
  84. package/dist/assets/chunk-75Z2AOVW-DbtzyKUg.js +2 -0
  85. package/dist/assets/chunk-DU6HZSFF-C0fdbx3K.js +127 -0
  86. package/dist/assets/chunk-F27PBJKO-HObL2IvF.js +1 -0
  87. package/dist/assets/chunk-FOHPRMQF-DD4dKubD.js +161 -0
  88. package/dist/assets/chunk-GMAD6QVW-fg8wvtPY.js +72 -0
  89. package/dist/assets/chunk-GVQU2GXP-C0TaHOrD.js +1 -0
  90. package/dist/assets/chunk-IMKFNOWR-BVoIdx20.js +231 -0
  91. package/dist/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
  92. package/dist/assets/chunk-L3NEJ4N5-B_kmqfk5.js +1 -0
  93. package/dist/assets/chunk-OSK3NFVY-DO0vhxHH.js +10 -0
  94. package/dist/assets/chunk-P2QGCYS3-CjljLvFj.js +1 -0
  95. package/dist/assets/chunk-POPQ4Y6H-BU0C7tw6.js +1 -0
  96. package/dist/assets/chunk-PWAF6VOD-Dn0OjBt0.js +1 -0
  97. package/dist/assets/chunk-SHT3W25Y-CMCZE2xx.js +168 -0
  98. package/dist/assets/chunk-SVP7TREG-BIRmRy_W.js +88 -0
  99. package/dist/assets/chunk-TICWLB2K-C1bc2CDE.js +206 -0
  100. package/dist/assets/chunk-XXDRQBXY-Cc38QUmR.js +1 -0
  101. package/dist/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
  102. package/dist/assets/classDiagram-ZZMXUADV-BDh5w6Nc.js +1 -0
  103. package/dist/assets/classDiagram-v2-VYDZK3BY-BDh5w6Nc.js +1 -0
  104. package/dist/assets/cose-bilkent-JH36ORCC-B7pU7qhM.js +1 -0
  105. package/dist/assets/cynefin-OW5HDTMX-76dswSqS.js +1 -0
  106. package/dist/assets/cynefinDiagram-5FMLGOSQ-2kS4q01d.js +62 -0
  107. package/dist/assets/cytoscape.esm-BegBNzOV.js +321 -0
  108. package/dist/assets/dagre-D7JM2Yhv.js +1 -0
  109. package/dist/assets/dagre-GXQ25YYZ-B5Y21TQM.js +4 -0
  110. package/dist/assets/defaultLocale-BFoDCU3G.js +1 -0
  111. package/dist/assets/diagram-S7CK7UJ4-CY6td7Et.js +30 -0
  112. package/dist/assets/diagram-UQ7AKVKN-DmDqnGZf.js +41 -0
  113. package/dist/assets/diagram-VSXAHHWV-KGLWOOcE.js +3 -0
  114. package/dist/assets/diagram-VX7I27RA-D5syUraJ.js +24 -0
  115. package/dist/assets/diagram-Z3DM3KII-Dtrbs1Om.js +24 -0
  116. package/dist/assets/dist-Dce-2YbA.js +1 -0
  117. package/dist/assets/ebnfDiagram-PWID7BFC-CQpJLtU3.js +1 -0
  118. package/dist/assets/editor.worker-BmdWdrHZ.js +33 -0
  119. package/dist/assets/erDiagram-RLTQ6QDP-cMTzKLu_.js +99 -0
  120. package/dist/assets/eventmodeling-NTZA5JFV-CMzLdNaL.js +1 -0
  121. package/dist/assets/flowDiagram-HODETNUW-BMUajB-G.js +1 -0
  122. package/dist/assets/ganttDiagram-EL5Y4UJY-DseBS5Fs.js +292 -0
  123. package/dist/assets/gitGraph-4MIJSDKK-CUQZRpxJ.js +1 -0
  124. package/dist/assets/gitGraphDiagram-WWUBYQGX-CfMfsJ3b.js +106 -0
  125. package/dist/assets/graphlib-DS17s2tU.js +1 -0
  126. package/dist/assets/index-ByQ-XX38.css +1 -0
  127. package/dist/assets/index-CIf5TpfY.js +214 -0
  128. package/dist/assets/info-A6RAGUB7-D3nAKZ8M.js +1 -0
  129. package/dist/assets/infoDiagram-27XIBGKW-zu1O0WOy.js +2 -0
  130. package/dist/assets/init-C-OQMol4.js +1 -0
  131. package/dist/assets/ishikawaDiagram-5VMMS53U-DKC7BO9p.js +70 -0
  132. package/dist/assets/journeyDiagram-3NMN7TZE-Ld5mXse7.js +139 -0
  133. package/dist/assets/kanban-definition-UXKFOSKX-CH7_QlHL.js +89 -0
  134. package/dist/assets/katex-DJhrJSbw.js +257 -0
  135. package/dist/assets/line-N9XiCREw.js +1 -0
  136. package/dist/assets/linear-C9hnqmJv.js +1 -0
  137. package/dist/assets/mermaid-parser.core-DgPwV5Bh.js +7 -0
  138. package/dist/assets/mermaid.core-BKqynXLR.js +44 -0
  139. package/dist/assets/mindmap-definition-YA3MSWOX-DkiL-wiW.js +96 -0
  140. package/dist/assets/monaco-DjpsE8to.css +1 -0
  141. package/dist/assets/monaco-DqzJaNIe.js +908 -0
  142. package/dist/assets/ordinal-BDEzSJ7C.js +1 -0
  143. package/dist/assets/packet-AYTQ26CC-DuMTvpEJ.js +1 -0
  144. package/dist/assets/path-fybaL0A-.js +1 -0
  145. package/dist/assets/pegDiagram-XKGWAZYB-DvMl_xSe.js +1 -0
  146. package/dist/assets/pie-WAS4IAKB-Da0xPaD8.js +1 -0
  147. package/dist/assets/pieDiagram-E7YTZNPT-amANNRJY.js +39 -0
  148. package/dist/assets/quadrantDiagram-AXDQQJYC-BrgvDMnk.js +7 -0
  149. package/dist/assets/radar-RG4KPBEZ-Dz3Ih5-N.js +1 -0
  150. package/dist/assets/railroad-74A4TZTK-CKMW-IV2.js +1 -0
  151. package/dist/assets/railroad-abnf-HS5TGJTU-ChqmSWSF.js +1 -0
  152. package/dist/assets/railroad-ebnf-LZEXJU2U-V3R4fFdb.js +1 -0
  153. package/dist/assets/railroad-peg-WCYAUIDC-B-RuhUQW.js +1 -0
  154. package/dist/assets/railroadDiagram-O6MQD6OU-FjG-6OLu.js +1 -0
  155. package/dist/assets/requirementDiagram-BXWQKSXE-Cnj8RfE4.js +84 -0
  156. package/dist/assets/rolldown-runtime-XKyaHtl9.js +1 -0
  157. package/dist/assets/rough.esm-Dy-Kn_BL.js +1 -0
  158. package/dist/assets/sankeyDiagram-P5KCCOFB-DMu1fnEh.js +40 -0
  159. package/dist/assets/sequenceDiagram-WJ2MYXX4-CtCtaRpW.js +162 -0
  160. package/dist/assets/sizeCapture-INFHLROL-3uHXrFqA.js +1 -0
  161. package/dist/assets/src-CGp3bfio.js +1 -0
  162. package/dist/assets/stateDiagram-D77RDMKH-xcJbLNhz.js +1 -0
  163. package/dist/assets/stateDiagram-v2-MP3YSRHH-DYHrQmJJ.js +1 -0
  164. package/dist/assets/swimlanes-42K2YHIH-BwLln_ga.js +1 -0
  165. package/dist/assets/swimlanesDiagram-VR7AAH4N-BcDfUQ0A.js +8 -0
  166. package/dist/assets/timeline-definition-24CTP7MA-ucNGsUUz.js +120 -0
  167. package/dist/assets/treeView-Q6P3EWNA-3uOomRue.js +1 -0
  168. package/dist/assets/treemap-WGGIJYW6-iGK7vwID.js +1 -0
  169. package/dist/assets/vennDiagram-4TSXK5OY-B9LgGe16.js +34 -0
  170. package/dist/assets/wardley-WFR3VGLG-FupMOf6k.js +1 -0
  171. package/dist/assets/wardleyDiagram-VM6X3IG4-CGZdEXM2.js +78 -0
  172. package/dist/assets/xterm-BrP-ENHg.css +1 -0
  173. package/dist/assets/xterm-C8zLTNGk.js +16 -0
  174. package/dist/assets/xychartDiagram-S5SC5T6Z-DafZrSBJ.js +7 -0
  175. package/dist/favicon.ico +0 -0
  176. package/dist/favicon.svg +6 -0
  177. package/dist/index.html +34 -0
  178. package/extensions/implement-goal-issue.ts +368 -0
  179. package/extensions/implement-next-epic.ts +835 -0
  180. package/index.html +28 -0
  181. package/install.sh +111 -0
  182. package/issues/control.ts +91 -0
  183. package/issues/guards.ts +12 -0
  184. package/issues/ledger.ts +122 -0
  185. package/issues/legacy.ts +68 -0
  186. package/issues/lock.ts +305 -0
  187. package/issues/paths.ts +76 -0
  188. package/issues/preflight.ts +189 -0
  189. package/issues/repository.ts +203 -0
  190. package/issues/scout/actions.ts +255 -0
  191. package/issues/scout/control.ts +80 -0
  192. package/issues/scout/github.ts +358 -0
  193. package/issues/scout/paths.ts +129 -0
  194. package/issues/scout/preflight.ts +277 -0
  195. package/issues/scout/recommendation.ts +400 -0
  196. package/issues/scout/scan.ts +143 -0
  197. package/issues/scout/state.ts +448 -0
  198. package/issues/scout/worker.ts +1282 -0
  199. package/issues/state.ts +584 -0
  200. package/issues/tracker.ts +271 -0
  201. package/issues/worker.ts +1065 -0
  202. package/lib/dependencies.ts +61 -0
  203. package/lib/forge-auth.ts +953 -0
  204. package/lib/forge.ts +141 -0
  205. package/lib/gitea.ts +709 -0
  206. package/lib/github-release.ts +318 -0
  207. package/lib/inventory.test.ts +79 -0
  208. package/lib/inventory.ts +53 -0
  209. package/lib/release.test.ts +269 -0
  210. package/lib/release.ts +801 -0
  211. package/omp/commands/adr-resolve.md +8 -0
  212. package/omp/commands/discover.md +6 -0
  213. package/omp/commands/epic-next.md +8 -0
  214. package/omp/commands/flow-change.md +8 -0
  215. package/omp/commands/flow-goal.md +8 -0
  216. package/omp/commands/flow-implement.md +8 -0
  217. package/omp/commands/flow-widget.md +8 -0
  218. package/omp/commands/goal-draft.md +8 -0
  219. package/omp/commands/goal-outcome.md +8 -0
  220. package/omp/commands/implement-issue.md +8 -0
  221. package/omp/commands/prepare-skills.md +6 -0
  222. package/omp/commands/scout-recommendations.md +8 -0
  223. package/omp/commands/setup-devboard.md +24 -0
  224. package/omp/config.yml +12 -0
  225. package/omp/extensions/implement-goal-issue.ts +2 -0
  226. package/omp/extensions/implement-next-epic.ts +2 -0
  227. package/omp/mcp.json +9 -0
  228. package/package.json +86 -7
  229. package/prompts/adr-resolve.md +130 -0
  230. package/prompts/discover.md +541 -0
  231. package/prompts/epic-next.md +533 -0
  232. package/prompts/flow-change.md +76 -0
  233. package/prompts/flow-goal.md +126 -0
  234. package/prompts/flow-implement.md +103 -0
  235. package/prompts/flow-widget.md +54 -0
  236. package/prompts/goal-draft.md +147 -0
  237. package/prompts/goal-outcome.md +87 -0
  238. package/prompts/implement-issue.md +66 -0
  239. package/prompts/prepare-skills.md +142 -0
  240. package/prompts/scout-recommendations.md +143 -0
  241. package/public/apple-touch-icon.png +0 -0
  242. package/public/favicon.ico +0 -0
  243. package/public/favicon.svg +6 -0
  244. package/server/acp.ts +540 -0
  245. package/server/activity.test.ts +96 -0
  246. package/server/activity.ts +48 -0
  247. package/server/app.test.ts +882 -0
  248. package/server/app.ts +6179 -0
  249. package/server/ask.test.ts +543 -0
  250. package/server/ask.ts +589 -0
  251. package/server/dependencies.test.ts +118 -0
  252. package/server/discover-remote.test.ts +1602 -0
  253. package/server/discover-sheet.test.ts +176 -0
  254. package/server/discover.test.ts +1510 -0
  255. package/server/discover.ts +3198 -0
  256. package/server/feedback.test.ts +458 -0
  257. package/server/feedback.ts +369 -0
  258. package/server/fixtures/adr-source.ts +71 -0
  259. package/server/fixtures/hang-download.ts +14 -0
  260. package/server/fixtures/stub-agent.ts +1870 -0
  261. package/server/fixtures/stub-forge.ts +141 -0
  262. package/server/fixtures/stub-gh.ts +57 -0
  263. package/server/flow-pr.test.ts +976 -0
  264. package/server/flow.test.ts +1632 -0
  265. package/server/flow.ts +2655 -0
  266. package/server/forge-pr.ts +387 -0
  267. package/server/goal-creation.test.ts +957 -0
  268. package/server/goal-draft.test.ts +348 -0
  269. package/server/goal-drafts.ts +449 -0
  270. package/server/goal-proposal.test.ts +479 -0
  271. package/server/goal-proposal.ts +232 -0
  272. package/server/goal-revision.test.ts +613 -0
  273. package/server/goal-slug.test.ts +56 -0
  274. package/server/goal-slug.ts +96 -0
  275. package/server/goal.ts +20 -0
  276. package/server/index.ts +147 -0
  277. package/server/issue-close.test.ts +100 -0
  278. package/server/issue-close.ts +178 -0
  279. package/server/issues.test.ts +167 -0
  280. package/server/issues.ts +479 -0
  281. package/server/journal.test.ts +350 -0
  282. package/server/journal.ts +329 -0
  283. package/server/lifecycle-pause.test.ts +1795 -0
  284. package/server/lifecycle.test.ts +1879 -0
  285. package/server/parallel-lifecycle.test.ts +1029 -0
  286. package/server/persistence-restart.test.ts +723 -0
  287. package/server/persistence.test.ts +1935 -0
  288. package/server/records.test.ts +180 -0
  289. package/server/records.ts +99 -0
  290. package/server/reset-implementation.test.ts +997 -0
  291. package/server/run.test.ts +611 -0
  292. package/server/scout.test.ts +877 -0
  293. package/server/scout.ts +459 -0
  294. package/server/skills-preparation.test.ts +1073 -0
  295. package/server/state.ts +249 -0
  296. package/server/tracker.ts +369 -0
  297. package/server/updates.test.ts +444 -0
  298. package/server/updates.ts +198 -0
  299. package/server/version.test.ts +140 -0
  300. package/server/version.ts +151 -0
  301. package/server/watchdog.ts +389 -0
  302. package/svelte.config.js +5 -0
  303. package/templates/host-AGENTS.md +235 -0
  304. package/tsconfig.json +21 -0
  305. package/vite.config.ts +21 -0
  306. package/watchdog/cleanup-main.ts +98 -0
  307. package/watchdog/cleanup.ts +301 -0
  308. package/watchdog/collect.ts +311 -0
  309. package/watchdog/coordinator.ts +397 -0
  310. package/watchdog/delivery.ts +107 -0
  311. package/watchdog/discovery.ts +209 -0
  312. package/watchdog/findings.ts +211 -0
  313. package/watchdog/github.ts +189 -0
  314. package/watchdog/history.ts +138 -0
  315. package/watchdog/install.ts +103 -0
  316. package/watchdog/ledger.ts +188 -0
  317. package/watchdog/lock.ts +63 -0
  318. package/watchdog/main.ts +106 -0
  319. package/watchdog/status.ts +71 -0
  320. package/watchdog/systemd.ts +96 -0
  321. package/watchdog/uninstall.ts +30 -0
  322. package/watchdog/units/devboard-watchdog.service +9 -0
  323. package/watchdog/units/devboard-watchdog.timer +10 -0
package/client/app.css ADDED
@@ -0,0 +1,3922 @@
1
+ @import "tailwindcss";
2
+ @import "tw-animate-css";
3
+
4
+ :root,
5
+ :root[data-theme="dark"] {
6
+ color-scheme: dark;
7
+ --background: #0d1117;
8
+ --surface: #161b22;
9
+ --surface-raised: #1c2128;
10
+ --foreground: #e6edf3;
11
+ --text: var(--foreground);
12
+ --muted-foreground: #8b949e;
13
+ --muted: var(--muted-foreground);
14
+ --border: #30363d;
15
+ --border-subtle: #21262d;
16
+ --border-strong: #6e7681;
17
+ --ring: #58a6ff;
18
+ --primary: #1f6feb;
19
+ --primary-hover: #388bfd;
20
+ --primary-foreground: #ffffff;
21
+ --secondary: #21262d;
22
+ --secondary-hover: #30363d;
23
+ --accent: #58a6ff;
24
+ --accent-surface: #16233a;
25
+ --destructive: #da3633;
26
+ --destructive-foreground: #ffffff;
27
+ --success: #3fb950;
28
+ --success-surface: #16251b;
29
+ --warning: #d29922;
30
+ --warning-surface: #2b2411;
31
+ --error: #ff7b72;
32
+ --error-surface: #2b1513;
33
+ --row-hover: #1b2129;
34
+ --terminal-background: #0d1117;
35
+ --activity-bar: #0a0d12;
36
+ --badge-pending: #d29922;
37
+ --badge-stale: #d29922;
38
+ --font-sans:
39
+ ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial,
40
+ sans-serif;
41
+ --font-mono:
42
+ ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;
43
+ --selection-background: #264f78;
44
+ }
45
+
46
+ :root[data-theme="light"] {
47
+ color-scheme: light;
48
+ --background: #ffffff;
49
+ --surface: #f6f8fa;
50
+ --surface-raised: #ffffff;
51
+ --foreground: #1f2328;
52
+ --text: var(--foreground);
53
+ --muted-foreground: #57606a;
54
+ --muted: var(--muted-foreground);
55
+ --border: #d0d7de;
56
+ --border-subtle: #eaeef2;
57
+ --border-strong: #6e7781;
58
+ --ring: #0969da;
59
+ --primary: #0969da;
60
+ --primary-hover: #0550ae;
61
+ --primary-foreground: #ffffff;
62
+ --secondary: #f6f8fa;
63
+ --secondary-hover: #eaeef2;
64
+ --accent: #0969da;
65
+ --accent-surface: #eef4ff;
66
+ --destructive: #cf222e;
67
+ --destructive-foreground: #ffffff;
68
+ --success: #1a7f37;
69
+ --success-surface: #f0f7f2;
70
+ --warning: #9a6700;
71
+ --warning-surface: #fff8e5;
72
+ --error: #cf222e;
73
+ --error-surface: #fdf2f1;
74
+ --row-hover: #f6f8fa;
75
+ --terminal-background: #ffffff;
76
+ --activity-bar: #f6f8fa;
77
+ --badge-pending: #9a6700;
78
+ --badge-stale: #9a6700;
79
+ --selection-background: #b6d7ff;
80
+ --flow-contract-border: #0969da;
81
+ --flow-contract-surface: #eef4ff;
82
+ --flow-entity-border: #8250df;
83
+ --flow-entity-surface: #f6f1ff;
84
+ --flow-naming-border: #1a7f37;
85
+ --flow-naming-surface: #eaf6ed;
86
+ --flow-data-border: #9a6700;
87
+ --flow-data-surface: #fff8e5;
88
+ --flow-dependency-border: #1f7a8c;
89
+ --flow-dependency-surface: #eef8f9;
90
+ --flow-irreversible-border: #b42318;
91
+ --flow-irreversible-surface: #fdf2f1;
92
+ --flow-structure-border: #656d76;
93
+ --flow-structure-surface: #f0f2f4;
94
+ }
95
+
96
+ /* Keeps form controls and scrollbars readable when the OS prefers dark while
97
+ the application theme itself is explicit. */
98
+ @media (prefers-color-scheme: dark) {
99
+ :root:not([data-theme="light"]) {
100
+ color-scheme: dark;
101
+ }
102
+ }
103
+
104
+ :root[data-theme="dark"] {
105
+ --flow-contract-border: #58a6ff;
106
+ --flow-contract-surface: #16233a;
107
+ --flow-entity-border: #bc8cff;
108
+ --flow-entity-surface: #241a33;
109
+ --flow-naming-border: #3fb950;
110
+ --flow-naming-surface: #16251b;
111
+ --flow-data-border: #e3b341;
112
+ --flow-data-surface: #2b2411;
113
+ --flow-dependency-border: #6cb6c8;
114
+ --flow-dependency-surface: #13292c;
115
+ --flow-irreversible-border: #ff7b72;
116
+ --flow-irreversible-surface: #2b1513;
117
+ --flow-structure-border: #9aa4ae;
118
+ --flow-structure-surface: #22272c;
119
+ }
120
+
121
+ * {
122
+ box-sizing: border-box;
123
+ }
124
+
125
+ html,
126
+ body {
127
+ height: 100%;
128
+ margin: 0;
129
+ overflow: hidden;
130
+ }
131
+
132
+ body {
133
+ background: var(--background);
134
+ color: var(--foreground);
135
+ font-family: var(--font-sans);
136
+ font-size: 13px;
137
+ line-height: 1.45;
138
+ }
139
+
140
+ #app {
141
+ height: 100dvh;
142
+ overflow: hidden;
143
+ }
144
+
145
+ ::selection {
146
+ background: var(--selection-background);
147
+ }
148
+
149
+ :where(button, [role="tab"], a, input, textarea, select, [tabindex]):focus-visible {
150
+ outline: 2px solid var(--ring);
151
+ outline-offset: 1px;
152
+ }
153
+
154
+ .mono,
155
+ code,
156
+ pre,
157
+ kbd {
158
+ font-family: var(--font-mono);
159
+ font-size: 12px;
160
+ }
161
+
162
+ .muted {
163
+ color: var(--muted-foreground);
164
+ }
165
+
166
+ .app-shell {
167
+ display: flex;
168
+ flex-direction: column;
169
+ height: 100dvh;
170
+ overflow: hidden;
171
+ width: 100%;
172
+ }
173
+
174
+ .shell-main {
175
+ display: flex;
176
+ flex: 1;
177
+ min-height: 0;
178
+ min-width: 0;
179
+ width: 100%;
180
+ }
181
+
182
+ .activity-bar {
183
+ align-items: center;
184
+ background: var(--activity-bar);
185
+ border-right: 1px solid var(--border);
186
+ display: flex;
187
+ flex-direction: column;
188
+ flex: 0 0 72px;
189
+ gap: 4px;
190
+ padding: 8px 0;
191
+ width: 72px;
192
+ }
193
+
194
+ .activity-tab {
195
+ align-items: center;
196
+ background: transparent;
197
+ border: 1px solid transparent;
198
+ border-radius: 4px;
199
+ color: var(--muted-foreground);
200
+ cursor: pointer;
201
+ display: flex;
202
+ flex-direction: column;
203
+ gap: 4px;
204
+ height: 52px;
205
+ justify-content: center;
206
+ padding: 6px 4px;
207
+ position: relative;
208
+ width: 64px;
209
+ }
210
+
211
+ .activity-tab__label {
212
+ font-size: 10px;
213
+ font-weight: 700;
214
+ letter-spacing: 0.06em;
215
+ line-height: 1;
216
+ text-transform: uppercase;
217
+ }
218
+
219
+ .activity-tab:hover {
220
+ background: var(--secondary);
221
+ color: var(--foreground);
222
+ }
223
+
224
+ .activity-tab[aria-selected="true"] {
225
+ background: var(--secondary);
226
+ border-color: var(--border-strong);
227
+ color: var(--foreground);
228
+ }
229
+
230
+ .activity-tab[aria-selected="true"]::before {
231
+ background: var(--accent);
232
+ border-radius: 0 2px 2px 0;
233
+ content: "";
234
+ height: 24px;
235
+ left: -5px;
236
+ position: absolute;
237
+ top: 14px;
238
+ width: 2px;
239
+ }
240
+
241
+ .activity-tab svg {
242
+ height: 18px;
243
+ width: 18px;
244
+ }
245
+
246
+ .activity-bar__modes {
247
+ align-items: center;
248
+ display: flex;
249
+ flex-direction: column;
250
+ gap: 4px;
251
+ width: 100%;
252
+ }
253
+
254
+ .activity-bar__actions {
255
+ align-items: center;
256
+ border-top: 1px solid var(--border);
257
+ display: flex;
258
+ flex-direction: column;
259
+ gap: 4px;
260
+ margin-top: auto;
261
+ padding-top: 8px;
262
+ width: 100%;
263
+ }
264
+
265
+ .activity-bar__action {
266
+ position: relative;
267
+ }
268
+
269
+ /* The armed issue action reads as selected: accent surface, border, icon, and
270
+ a rail bar matching an active mode tab. */
271
+ .activity-bar__action[aria-pressed="true"]::before {
272
+ background: var(--accent);
273
+ border-radius: 0 2px 2px 0;
274
+ content: "";
275
+ height: 16px;
276
+ left: -5px;
277
+ position: absolute;
278
+ top: 50%;
279
+ transform: translateY(-50%);
280
+ width: 2px;
281
+ }
282
+
283
+ .activity-bar__unread {
284
+ background: var(--error);
285
+ border: 1px solid var(--activity-bar);
286
+ border-radius: 999px;
287
+ height: 6px;
288
+ position: absolute;
289
+ right: 4px;
290
+ top: 4px;
291
+ width: 6px;
292
+ }
293
+
294
+ .activity-tab__state {
295
+ border: 1px solid var(--activity-bar);
296
+ border-radius: 999px;
297
+ height: 6px;
298
+ position: absolute;
299
+ right: 6px;
300
+ top: 6px;
301
+ width: 6px;
302
+ }
303
+
304
+ .activity-tab__state[data-state="running"] {
305
+ background: var(--accent);
306
+ }
307
+
308
+ .activity-tab__state[data-state="attention"],
309
+ .activity-tab__state[data-state="stale"] {
310
+ background: var(--warning);
311
+ }
312
+
313
+ .activity-tab__state[data-state="idle"] {
314
+ background: var(--border-strong);
315
+ }
316
+
317
+ .pane-fill {
318
+ display: flex;
319
+ height: 100%;
320
+ min-height: 0;
321
+ min-width: 0;
322
+ width: 100%;
323
+ }
324
+
325
+ .sidebar {
326
+ background: var(--surface);
327
+ border-right: 1px solid var(--border);
328
+ display: flex;
329
+ flex-direction: column;
330
+ height: 100%;
331
+ min-width: 0;
332
+ overflow: hidden;
333
+ width: 100%;
334
+ }
335
+
336
+ .sidebar__body {
337
+ flex: 1;
338
+ min-height: 0;
339
+ overflow: auto;
340
+ padding: 6px;
341
+ }
342
+
343
+ .sidebar-group {
344
+ margin-bottom: 10px;
345
+ }
346
+
347
+ .sidebar-group__title {
348
+ align-items: center;
349
+ color: var(--muted-foreground);
350
+ display: flex;
351
+ font-size: 10px;
352
+ font-weight: 700;
353
+ gap: 6px;
354
+ justify-content: space-between;
355
+ letter-spacing: 0.08em;
356
+ padding: 2px 4px 4px;
357
+ text-transform: uppercase;
358
+ }
359
+
360
+ .sidebar-item {
361
+ align-items: center;
362
+ background: transparent;
363
+ border: 1px solid transparent;
364
+ border-radius: 3px;
365
+ color: var(--foreground);
366
+ cursor: pointer;
367
+ display: flex;
368
+ font-size: 12px;
369
+ gap: 6px;
370
+ min-height: 24px;
371
+ padding: 2px 6px;
372
+ text-align: left;
373
+ width: 100%;
374
+ }
375
+
376
+ .sidebar-item:hover {
377
+ background: var(--secondary);
378
+ }
379
+
380
+ .sidebar-item[aria-current="true"] {
381
+ background: var(--accent-surface);
382
+ border-color: var(--border-strong);
383
+ }
384
+
385
+ .sidebar-item__label {
386
+ flex: 1;
387
+ min-width: 0;
388
+ overflow: hidden;
389
+ text-overflow: ellipsis;
390
+ white-space: nowrap;
391
+ }
392
+
393
+ .sidebar-item__meta {
394
+ color: var(--muted-foreground);
395
+ flex: 0 0 auto;
396
+ font-family: var(--font-mono);
397
+ font-size: 10px;
398
+ }
399
+
400
+ .sidebar-item__meta[data-tone="warning"] {
401
+ color: var(--warning);
402
+ }
403
+
404
+ .sidebar-item__meta[data-tone="error"] {
405
+ color: var(--error);
406
+ }
407
+
408
+ .sidebar-group--separated {
409
+ border-top: 1px solid var(--border-subtle);
410
+ margin-top: 10px;
411
+ padding-top: 6px;
412
+ }
413
+
414
+ .sidebar-empty {
415
+ color: var(--muted-foreground);
416
+ font-size: 11px;
417
+ padding: 4px 6px;
418
+ }
419
+
420
+ .badge {
421
+ border: 1px solid var(--border-strong);
422
+ border-radius: 999px;
423
+ color: var(--muted-foreground);
424
+ display: inline-flex;
425
+ font-size: 10px;
426
+ font-weight: 600;
427
+ gap: 3px;
428
+ line-height: 1;
429
+ padding: 2px 6px;
430
+ white-space: nowrap;
431
+ }
432
+
433
+ .badge[data-tone="pending"] {
434
+ border-color: var(--badge-pending);
435
+ color: var(--badge-pending);
436
+ }
437
+ .badge[data-tone="success"] {
438
+ border-color: var(--success);
439
+ color: var(--success);
440
+ }
441
+ .badge[data-tone="stale"],
442
+ .badge[data-tone="warning"] {
443
+ border-color: var(--badge-stale);
444
+ color: var(--badge-stale);
445
+ }
446
+ .badge[data-tone="error"] {
447
+ border-color: var(--error);
448
+ color: var(--error);
449
+ }
450
+ .badge[data-tone="accent"] {
451
+ border-color: var(--accent);
452
+ color: var(--accent);
453
+ }
454
+
455
+ .workspace-region {
456
+ display: flex;
457
+ flex: 1;
458
+ flex-direction: column;
459
+ min-height: 0;
460
+ min-width: 0;
461
+ overflow: hidden;
462
+ width: 100%;
463
+ }
464
+
465
+ .workspace {
466
+ background: var(--background);
467
+ flex: 1;
468
+ min-height: 0;
469
+ min-width: 0;
470
+ overflow: hidden;
471
+ position: relative;
472
+ }
473
+
474
+ .mode-workspace {
475
+ height: 100%;
476
+ overflow: hidden;
477
+ width: 100%;
478
+ }
479
+
480
+ .mode-workspace[hidden] {
481
+ display: none;
482
+ }
483
+
484
+ .mode-body {
485
+ display: flex;
486
+ flex-direction: column;
487
+ gap: 8px;
488
+ height: 100%;
489
+ min-height: 0;
490
+ overflow: hidden;
491
+ padding: 8px;
492
+ }
493
+
494
+ .split-fill {
495
+ display: flex;
496
+ flex: 1;
497
+ min-height: 0;
498
+ min-width: 0;
499
+ width: 100%;
500
+ }
501
+
502
+ .panel {
503
+ background: var(--surface);
504
+ border: 1px solid var(--border);
505
+ border-radius: 4px;
506
+ display: flex;
507
+ flex-direction: column;
508
+ min-height: 0;
509
+ min-width: 0;
510
+ overflow: hidden;
511
+ }
512
+
513
+ .panel--plain {
514
+ background: transparent;
515
+ border: 0;
516
+ border-radius: 0;
517
+ }
518
+
519
+ .panel__header {
520
+ align-items: center;
521
+ border-bottom: 1px solid var(--border);
522
+ display: flex;
523
+ flex: 0 0 30px;
524
+ gap: 8px;
525
+ height: 30px;
526
+ justify-content: space-between;
527
+ padding: 0 8px;
528
+ }
529
+
530
+ .panel__title {
531
+ color: var(--foreground);
532
+ font-size: 12px;
533
+ font-weight: 600;
534
+ margin: 0;
535
+ overflow: hidden;
536
+ text-overflow: ellipsis;
537
+ white-space: nowrap;
538
+ }
539
+
540
+ .panel__subtitle {
541
+ color: var(--muted-foreground);
542
+ font-size: 11px;
543
+ }
544
+
545
+ .panel__body {
546
+ flex: 1;
547
+ min-height: 0;
548
+ overflow: auto;
549
+ padding: 8px;
550
+ }
551
+
552
+ .panel__body--flush {
553
+ padding: 0;
554
+ }
555
+
556
+ .panel__footer {
557
+ align-items: center;
558
+ border-top: 1px solid var(--border);
559
+ display: flex;
560
+ flex: 0 0 auto;
561
+ gap: 6px;
562
+ justify-content: flex-end;
563
+ padding: 6px 8px;
564
+ }
565
+
566
+ .scroll-column {
567
+ display: flex;
568
+ flex: 1;
569
+ flex-direction: column;
570
+ gap: 8px;
571
+ min-height: 0;
572
+ overflow: auto;
573
+ }
574
+
575
+ .toolbar {
576
+ align-items: center;
577
+ display: flex;
578
+ flex-wrap: wrap;
579
+ gap: 6px;
580
+ }
581
+
582
+ .toolbar--between {
583
+ justify-content: space-between;
584
+ }
585
+
586
+ .field {
587
+ display: flex;
588
+ flex-direction: column;
589
+ gap: 4px;
590
+ min-width: 0;
591
+ }
592
+
593
+ .field__label {
594
+ color: var(--muted-foreground);
595
+ font-size: 11px;
596
+ font-weight: 600;
597
+ }
598
+
599
+ .field__hint {
600
+ color: var(--muted-foreground);
601
+ font-size: 11px;
602
+ }
603
+
604
+ .stack-xs {
605
+ display: flex;
606
+ flex-direction: column;
607
+ gap: 4px;
608
+ min-height: 0;
609
+ }
610
+
611
+ .stack-sm {
612
+ display: flex;
613
+ flex-direction: column;
614
+ gap: 8px;
615
+ min-height: 0;
616
+ }
617
+
618
+ .row-sm {
619
+ align-items: center;
620
+ display: flex;
621
+ flex-wrap: wrap;
622
+ gap: 6px;
623
+ }
624
+
625
+ .grow {
626
+ flex: 1;
627
+ min-height: 0;
628
+ min-width: 0;
629
+ }
630
+
631
+ .textarea {
632
+ background: var(--background);
633
+ border: 1px solid var(--border-strong);
634
+ border-radius: 4px;
635
+ color: var(--foreground);
636
+ font-family: var(--font-mono);
637
+ font-size: 12px;
638
+ min-height: 64px;
639
+ padding: 6px;
640
+ resize: vertical;
641
+ width: 100%;
642
+ }
643
+
644
+ .textarea:focus-visible {
645
+ border-color: var(--ring);
646
+ outline: 2px solid var(--ring);
647
+ }
648
+
649
+ .kv-grid {
650
+ display: grid;
651
+ gap: 2px 10px;
652
+ grid-template-columns: max-content minmax(0, 1fr);
653
+ font-size: 12px;
654
+ }
655
+
656
+ .kv-grid dt {
657
+ color: var(--muted-foreground);
658
+ }
659
+
660
+ .kv-grid dd {
661
+ margin: 0;
662
+ min-width: 0;
663
+ overflow-wrap: anywhere;
664
+ }
665
+
666
+ .message {
667
+ border: 1px solid var(--border);
668
+ border-left: 2px solid var(--accent);
669
+ border-radius: 4px;
670
+ padding: 6px 8px;
671
+ }
672
+
673
+ .message[data-severity="error"] {
674
+ border-left-color: var(--error);
675
+ background: var(--error-surface);
676
+ }
677
+
678
+ .message[data-severity="warning"] {
679
+ border-left-color: var(--warning);
680
+ background: var(--warning-surface);
681
+ }
682
+
683
+ .message[data-severity="notice"] {
684
+ border-left-color: var(--accent);
685
+ background: var(--accent-surface);
686
+ }
687
+
688
+ .message__text {
689
+ margin: 0;
690
+ overflow-wrap: anywhere;
691
+ }
692
+
693
+ .empty {
694
+ color: var(--muted-foreground);
695
+ font-size: 12px;
696
+ margin: 0;
697
+ padding: 8px;
698
+ }
699
+
700
+ .status-bar {
701
+ align-items: center;
702
+ background: var(--surface-raised);
703
+ border-top: 1px solid var(--border);
704
+ display: flex;
705
+ flex: 0 0 26px;
706
+ font-size: 11px;
707
+ gap: 8px;
708
+ height: 26px;
709
+ overflow: hidden;
710
+ padding: 0 6px;
711
+ white-space: nowrap;
712
+ z-index: 20;
713
+ }
714
+
715
+ .status-group {
716
+ align-items: center;
717
+ display: flex;
718
+ gap: 4px;
719
+ min-width: 0;
720
+ }
721
+
722
+ .status-group--metrics {
723
+ flex: 0 1 auto;
724
+ gap: 6px;
725
+ justify-content: flex-end;
726
+ min-width: 0;
727
+ }
728
+
729
+ .status-item {
730
+ align-items: center;
731
+ border-radius: 3px;
732
+ color: var(--muted-foreground);
733
+ display: inline-flex;
734
+ flex: 0 0 auto;
735
+ gap: 5px;
736
+ height: 20px;
737
+ max-width: 320px;
738
+ overflow: hidden;
739
+ padding: 0 5px;
740
+ text-overflow: ellipsis;
741
+ }
742
+
743
+ .status-item--button {
744
+ background: transparent;
745
+ border: 1px solid transparent;
746
+ cursor: pointer;
747
+ font: inherit;
748
+ }
749
+
750
+ .status-item--button:hover {
751
+ background: var(--secondary);
752
+ color: var(--foreground);
753
+ }
754
+
755
+ .status-divider {
756
+ background: var(--border);
757
+ flex: 0 0 1px;
758
+ height: 12px;
759
+ }
760
+
761
+ .status-metric__label {
762
+ color: var(--muted-foreground);
763
+ font-size: 10px;
764
+ font-weight: 700;
765
+ letter-spacing: 0.08em;
766
+ text-transform: uppercase;
767
+ }
768
+
769
+ .status-metric__value {
770
+ color: var(--foreground);
771
+ font-size: 11px;
772
+ }
773
+
774
+ .status-project {
775
+ color: var(--foreground);
776
+ }
777
+
778
+ .status-project svg {
779
+ color: var(--muted-foreground);
780
+ flex: 0 0 auto;
781
+ }
782
+
783
+ .status-project .mono {
784
+ overflow: hidden;
785
+ text-overflow: ellipsis;
786
+ }
787
+
788
+ .status-dot {
789
+ border-radius: 999px;
790
+ display: inline-block;
791
+ flex: 0 0 auto;
792
+ height: 7px;
793
+ width: 7px;
794
+ }
795
+
796
+ .status-dot[data-state="open"] {
797
+ background: var(--success);
798
+ }
799
+ .status-dot[data-state="connecting"] {
800
+ background: var(--warning);
801
+ }
802
+ .status-dot[data-state="closed"] {
803
+ background: var(--error);
804
+ }
805
+
806
+ .status-bar__spacer {
807
+ flex: 1;
808
+ }
809
+
810
+ .status-versions {
811
+ gap: 8px;
812
+ }
813
+
814
+ .status-versions__entry {
815
+ align-items: baseline;
816
+ display: inline-flex;
817
+ gap: 4px;
818
+ }
819
+
820
+ .status-versions .mono {
821
+ color: var(--foreground);
822
+ font-size: 10.5px;
823
+ }
824
+
825
+ .notification-region {
826
+ bottom: 34px;
827
+ display: flex;
828
+ flex-direction: column;
829
+ gap: 6px;
830
+ max-height: 50vh;
831
+ max-width: 380px;
832
+ overflow: hidden;
833
+ position: fixed;
834
+ right: 8px;
835
+ width: min(380px, calc(100vw - 16px));
836
+ z-index: 80;
837
+ }
838
+
839
+ .notification {
840
+ align-items: flex-start;
841
+ background: var(--surface-raised);
842
+ border: 1px solid var(--border-strong);
843
+ border-left: 3px solid var(--accent);
844
+ border-radius: 4px;
845
+ box-shadow: 0 6px 18px rgb(0 0 0 / 0.28);
846
+ display: flex;
847
+ gap: 8px;
848
+ padding: 6px 8px;
849
+ }
850
+
851
+ .notification[data-severity="error"] {
852
+ border-left-color: var(--error);
853
+ }
854
+ .notification[data-severity="warning"] {
855
+ border-left-color: var(--warning);
856
+ }
857
+ .notification[data-severity="success"] {
858
+ border-left-color: var(--success);
859
+ }
860
+
861
+ .notification__body {
862
+ flex: 1;
863
+ min-width: 0;
864
+ }
865
+
866
+ .notification__meta {
867
+ color: var(--muted-foreground);
868
+ font-size: 10px;
869
+ text-transform: uppercase;
870
+ }
871
+
872
+ .notification__text {
873
+ font-size: 12px;
874
+ margin: 1px 0 0;
875
+ overflow-wrap: anywhere;
876
+ }
877
+
878
+ .notification__error {
879
+ color: var(--error);
880
+ font-size: 11px;
881
+ margin: 2px 0 0;
882
+ overflow-wrap: anywhere;
883
+ }
884
+
885
+ .notification__actions {
886
+ align-items: flex-start;
887
+ display: flex;
888
+ flex: none;
889
+ gap: 2px;
890
+ }
891
+
892
+ .notification__link {
893
+ color: var(--accent);
894
+ font-size: 11px;
895
+ padding: 3px 2px;
896
+ text-decoration: none;
897
+ white-space: nowrap;
898
+ }
899
+
900
+ .notification__link:hover {
901
+ text-decoration: underline;
902
+ }
903
+
904
+ .dialog-overlay {
905
+ background: rgb(0 0 0 / 0.55);
906
+ inset: 0;
907
+ position: fixed;
908
+ z-index: 100;
909
+ }
910
+
911
+ .dialog-content {
912
+ background: var(--surface-raised);
913
+ border: 1px solid var(--border-strong);
914
+ border-radius: 6px;
915
+ box-shadow: 0 18px 48px rgb(0 0 0 / 0.45);
916
+ left: 50%;
917
+ max-height: 80vh;
918
+ max-width: 640px;
919
+ overflow: hidden;
920
+ position: fixed;
921
+ top: 50%;
922
+ transform: translate(-50%, -50%);
923
+ width: min(640px, calc(100vw - 32px));
924
+ z-index: 101;
925
+ }
926
+
927
+ .dialog-header {
928
+ align-items: center;
929
+ border-bottom: 1px solid var(--border);
930
+ display: flex;
931
+ gap: 8px;
932
+ justify-content: space-between;
933
+ padding: 8px 10px;
934
+ }
935
+
936
+ .dialog-title {
937
+ font-size: 13px;
938
+ font-weight: 600;
939
+ margin: 0;
940
+ }
941
+
942
+ .dialog-body {
943
+ max-height: calc(80vh - 92px);
944
+ overflow: auto;
945
+ padding: 8px;
946
+ }
947
+
948
+ .dialog-footer {
949
+ align-items: center;
950
+ border-top: 1px solid var(--border);
951
+ display: flex;
952
+ gap: 6px;
953
+ justify-content: flex-end;
954
+ padding: 8px 10px;
955
+ }
956
+
957
+ .palette {
958
+ background: var(--surface-raised);
959
+ border: 1px solid var(--border-strong);
960
+ border-radius: 6px;
961
+ box-shadow: 0 18px 48px rgb(0 0 0 / 0.45);
962
+ left: 50%;
963
+ max-height: 70vh;
964
+ overflow: hidden;
965
+ position: fixed;
966
+ top: 14%;
967
+ transform: translateX(-50%);
968
+ width: min(680px, calc(100vw - 32px));
969
+ z-index: 101;
970
+ }
971
+
972
+ .palette__search {
973
+ border-bottom: 1px solid var(--border);
974
+ padding: 8px;
975
+ }
976
+
977
+ .palette__list {
978
+ max-height: calc(70vh - 52px);
979
+ overflow: auto;
980
+ padding: 4px;
981
+ }
982
+
983
+ .palette__group {
984
+ color: var(--muted-foreground);
985
+ font-size: 10px;
986
+ font-weight: 700;
987
+ letter-spacing: 0.08em;
988
+ padding: 6px 8px 2px;
989
+ text-transform: uppercase;
990
+ }
991
+
992
+ .palette__item {
993
+ align-items: center;
994
+ background: transparent;
995
+ border: 1px solid transparent;
996
+ border-radius: 4px;
997
+ color: var(--foreground);
998
+ cursor: pointer;
999
+ display: flex;
1000
+ gap: 8px;
1001
+ padding: 5px 8px;
1002
+ text-align: left;
1003
+ width: 100%;
1004
+ }
1005
+
1006
+ .palette__item[aria-selected="true"] {
1007
+ background: var(--accent-surface);
1008
+ border-color: var(--border-strong);
1009
+ }
1010
+
1011
+ .palette__item:disabled {
1012
+ color: var(--muted-foreground);
1013
+ cursor: not-allowed;
1014
+ }
1015
+
1016
+ .palette__item-title {
1017
+ flex: 1;
1018
+ min-width: 0;
1019
+ overflow: hidden;
1020
+ text-overflow: ellipsis;
1021
+ white-space: nowrap;
1022
+ }
1023
+
1024
+ .palette__item-reason {
1025
+ color: var(--muted-foreground);
1026
+ font-size: 10px;
1027
+ }
1028
+
1029
+ .palette__shortcut {
1030
+ color: var(--muted-foreground);
1031
+ font-family: var(--font-mono);
1032
+ font-size: 10px;
1033
+ }
1034
+
1035
+ .palette__empty {
1036
+ color: var(--muted-foreground);
1037
+ padding: 12px;
1038
+ text-align: center;
1039
+ }
1040
+
1041
+ .unsupported {
1042
+ align-items: center;
1043
+ background: var(--background);
1044
+ color: var(--foreground);
1045
+ display: flex;
1046
+ flex-direction: column;
1047
+ gap: 8px;
1048
+ height: 100dvh;
1049
+ justify-content: center;
1050
+ padding: 24px;
1051
+ text-align: center;
1052
+ width: 100%;
1053
+ }
1054
+
1055
+ .unsupported h1 {
1056
+ font-size: 16px;
1057
+ margin: 0;
1058
+ }
1059
+
1060
+ .unsupported p {
1061
+ color: var(--muted-foreground);
1062
+ margin: 0;
1063
+ max-width: 46ch;
1064
+ }
1065
+
1066
+ .diff-html {
1067
+ font-size: 12px;
1068
+ overflow: auto;
1069
+ }
1070
+
1071
+ .diff-html .d2h-wrapper {
1072
+ background: transparent;
1073
+ color: var(--foreground);
1074
+ }
1075
+
1076
+ .diff-html .d2h-file-wrapper {
1077
+ border-color: var(--border);
1078
+ margin-bottom: 8px;
1079
+ }
1080
+
1081
+ .diff-html .d2h-file-header,
1082
+ .diff-html .d2h-file-diff .d2h-code-line,
1083
+ .diff-html .d2h-code-side-line {
1084
+ background: var(--surface);
1085
+ color: var(--foreground);
1086
+ }
1087
+
1088
+ .diff-html .d2h-code-line-ctn {
1089
+ color: var(--foreground);
1090
+ }
1091
+
1092
+ .diff-html .d2h-ins {
1093
+ background: var(--success-surface);
1094
+ }
1095
+
1096
+ .diff-html .d2h-del {
1097
+ background: var(--error-surface);
1098
+ }
1099
+
1100
+ .agent-output {
1101
+ font-size: 12px;
1102
+ overflow: auto;
1103
+ }
1104
+
1105
+ .agent-output > :first-child {
1106
+ margin-top: 0;
1107
+ }
1108
+
1109
+ .agent-output > :last-child {
1110
+ margin-bottom: 0;
1111
+ }
1112
+
1113
+ .agent-output pre {
1114
+ background: var(--background);
1115
+ border: 1px solid var(--border);
1116
+ border-radius: 4px;
1117
+ font-family: var(--font-mono);
1118
+ font-size: 11px;
1119
+ overflow: auto;
1120
+ padding: 6px;
1121
+ }
1122
+
1123
+ .agent-output code {
1124
+ font-family: var(--font-mono);
1125
+ }
1126
+
1127
+ .agent-output table {
1128
+ border-collapse: collapse;
1129
+ }
1130
+
1131
+ .agent-output th,
1132
+ .agent-output td {
1133
+ border: 1px solid var(--border);
1134
+ padding: 2px 6px;
1135
+ }
1136
+
1137
+ .choice-list {
1138
+ display: flex;
1139
+ flex-direction: column;
1140
+ gap: 4px;
1141
+ }
1142
+
1143
+ .choice {
1144
+ background: var(--background);
1145
+ border: 1px solid var(--border-strong);
1146
+ border-radius: 4px;
1147
+ color: var(--foreground);
1148
+ cursor: pointer;
1149
+ display: flex;
1150
+ flex-direction: column;
1151
+ gap: 2px;
1152
+ padding: 6px 8px;
1153
+ text-align: left;
1154
+ width: 100%;
1155
+ }
1156
+
1157
+ .choice:hover {
1158
+ border-color: var(--ring);
1159
+ background: var(--secondary);
1160
+ }
1161
+
1162
+ .choice__label {
1163
+ align-items: center;
1164
+ display: flex;
1165
+ font-size: 12px;
1166
+ font-weight: 600;
1167
+ gap: 6px;
1168
+ }
1169
+
1170
+ .choice__description {
1171
+ color: var(--muted-foreground);
1172
+ font-size: 11px;
1173
+ }
1174
+
1175
+ .choice__recommended {
1176
+ border: 1px solid var(--success);
1177
+ border-radius: 999px;
1178
+ color: var(--success);
1179
+ font-size: 10px;
1180
+ font-weight: 600;
1181
+ padding: 1px 5px;
1182
+ }
1183
+
1184
+ .answer-form {
1185
+ align-items: center;
1186
+ display: flex;
1187
+ gap: 6px;
1188
+ }
1189
+
1190
+ .activity-section {
1191
+ display: flex;
1192
+ flex: 1;
1193
+ flex-direction: column;
1194
+ gap: 4px;
1195
+ min-height: 0;
1196
+ }
1197
+
1198
+ .activity-history summary {
1199
+ color: var(--muted-foreground);
1200
+ cursor: pointer;
1201
+ font-size: 11px;
1202
+ padding: 2px 0;
1203
+ }
1204
+
1205
+ .activity-log {
1206
+ display: flex;
1207
+ flex-direction: column;
1208
+ gap: 2px;
1209
+ margin: 0;
1210
+ max-height: 140px;
1211
+ overflow: auto;
1212
+ padding-left: 16px;
1213
+ }
1214
+
1215
+ .history-list {
1216
+ display: flex;
1217
+ flex-direction: column;
1218
+ gap: 4px;
1219
+ margin: 0;
1220
+ padding: 0;
1221
+ list-style: none;
1222
+ }
1223
+
1224
+ .history-entry {
1225
+ border-bottom: 1px solid var(--border-subtle);
1226
+ display: grid;
1227
+ gap: 2px 10px;
1228
+ grid-template-columns: max-content minmax(0, 1fr) max-content;
1229
+ padding: 4px 6px;
1230
+ }
1231
+
1232
+ .steering-composer {
1233
+ display: flex;
1234
+ flex-direction: column;
1235
+ gap: 6px;
1236
+ }
1237
+
1238
+ .steering-composer__actions {
1239
+ display: flex;
1240
+ justify-content: flex-end;
1241
+ }
1242
+
1243
+ .steering-state[data-state="waiting"] {
1244
+ color: var(--warning);
1245
+ }
1246
+
1247
+ .steering-state[data-state="read"] {
1248
+ color: var(--success);
1249
+ }
1250
+
1251
+ .steering-note {
1252
+ border-left: 2px solid var(--border-strong);
1253
+ padding: 4px 8px;
1254
+ }
1255
+
1256
+ .steering-note[data-status="new"] {
1257
+ border-left-color: var(--accent);
1258
+ }
1259
+
1260
+ .steering-meta {
1261
+ color: var(--muted-foreground);
1262
+ display: flex;
1263
+ flex-wrap: wrap;
1264
+ font-size: 10px;
1265
+ gap: 8px;
1266
+ }
1267
+
1268
+ .term-split {
1269
+ display: flex;
1270
+ flex: 1;
1271
+ flex-direction: column;
1272
+ gap: 4px;
1273
+ min-height: 0;
1274
+ }
1275
+
1276
+ .term-split > .terminal-host {
1277
+ flex: 1;
1278
+ }
1279
+
1280
+ .skill-editor {
1281
+ display: flex;
1282
+ flex: 1;
1283
+ flex-direction: column;
1284
+ gap: 6px;
1285
+ min-height: 0;
1286
+ }
1287
+
1288
+ .verification-output {
1289
+ background: var(--background);
1290
+ border: 1px solid var(--border);
1291
+ border-radius: 4px;
1292
+ font-family: var(--font-mono);
1293
+ font-size: 11px;
1294
+ margin: 0;
1295
+ max-height: 220px;
1296
+ overflow: auto;
1297
+ padding: 6px;
1298
+ white-space: pre-wrap;
1299
+ }
1300
+
1301
+ @media (prefers-reduced-motion: reduce) {
1302
+ *,
1303
+ *::before,
1304
+ *::after {
1305
+ animation-duration: 0.01ms !important;
1306
+ animation-iteration-count: 1 !important;
1307
+ scroll-behavior: auto !important;
1308
+ transition-duration: 0.01ms !important;
1309
+ }
1310
+ }
1311
+
1312
+ .pane-handle {
1313
+ background: var(--border);
1314
+ flex: 0 0 5px;
1315
+ outline: none;
1316
+ position: relative;
1317
+ z-index: 2;
1318
+ }
1319
+
1320
+ .pane-handle::after {
1321
+ content: "";
1322
+ inset: -2px;
1323
+ position: absolute;
1324
+ }
1325
+
1326
+ .pane-handle:hover,
1327
+ .pane-handle:focus-visible,
1328
+ .pane-handle[data-active] {
1329
+ background: var(--accent);
1330
+ }
1331
+
1332
+ .pane-handle:focus-visible {
1333
+ box-shadow: 0 0 0 2px var(--ring);
1334
+ }
1335
+ [data-category="contract"] {
1336
+ --flow-category-border: var(--flow-contract-border);
1337
+ --flow-category-surface: var(--flow-contract-surface);
1338
+ }
1339
+ [data-category="entity"] {
1340
+ --flow-category-border: var(--flow-entity-border);
1341
+ --flow-category-surface: var(--flow-entity-surface);
1342
+ }
1343
+ [data-category="naming"] {
1344
+ --flow-category-border: var(--flow-naming-border);
1345
+ --flow-category-surface: var(--flow-naming-surface);
1346
+ }
1347
+ [data-category="data"] {
1348
+ --flow-category-border: var(--flow-data-border);
1349
+ --flow-category-surface: var(--flow-data-surface);
1350
+ }
1351
+ [data-category="dependency"] {
1352
+ --flow-category-border: var(--flow-dependency-border);
1353
+ --flow-category-surface: var(--flow-dependency-surface);
1354
+ }
1355
+ [data-category="irreversible"] {
1356
+ --flow-category-border: var(--flow-irreversible-border);
1357
+ --flow-category-surface: var(--flow-irreversible-surface);
1358
+ }
1359
+ [data-category="structure"] {
1360
+ --flow-category-border: var(--flow-structure-border);
1361
+ --flow-category-surface: var(--flow-structure-surface);
1362
+ }
1363
+
1364
+ .badge[data-category] {
1365
+ background: var(--flow-category-surface);
1366
+ border-color: var(--flow-category-border);
1367
+ color: var(--flow-category-border);
1368
+ }
1369
+
1370
+ .flow-widget {
1371
+ border-left: 2px solid var(--flow-category-border, var(--border));
1372
+ }
1373
+
1374
+ /* Flow overview: the goal editor and the activity console each own one page,
1375
+ so a long session never shrinks either into a scrolling thumbnail. */
1376
+ .flow-overview > * {
1377
+ flex: 0 0 auto;
1378
+ }
1379
+
1380
+ .flow-goal-panel {
1381
+ flex: 0 0 auto;
1382
+ height: 100%;
1383
+ min-height: 360px;
1384
+ }
1385
+
1386
+ .flow-goal__header {
1387
+ align-items: center;
1388
+ flex: 0 0 44px;
1389
+ gap: 12px;
1390
+ height: 44px;
1391
+ padding: 0 12px;
1392
+ }
1393
+
1394
+ .flow-goal__identity {
1395
+ align-items: center;
1396
+ display: flex;
1397
+ gap: 10px;
1398
+ min-width: 0;
1399
+ }
1400
+
1401
+ .flow-goal__title {
1402
+ font-size: 18px;
1403
+ font-weight: 650;
1404
+ letter-spacing: 0;
1405
+ line-height: 1.2;
1406
+ }
1407
+
1408
+ .flow-goal__state {
1409
+ flex: 0 0 auto;
1410
+ }
1411
+
1412
+ .flow-goal__actions {
1413
+ align-items: center;
1414
+ flex: 0 0 auto;
1415
+ flex-wrap: nowrap;
1416
+ }
1417
+
1418
+ .flow-goal-panel--collapsed {
1419
+ height: auto;
1420
+ min-height: 0;
1421
+ }
1422
+
1423
+ .flow-goal-editor {
1424
+ display: flex;
1425
+ }
1426
+
1427
+ .flow-goal-activity {
1428
+ height: 180px;
1429
+ }
1430
+
1431
+ .flow-activity-panel {
1432
+ flex: 0 0 auto;
1433
+ min-height: 100%;
1434
+ }
1435
+
1436
+ .flow-activity-body {
1437
+ display: flex;
1438
+ padding: 4px;
1439
+ }
1440
+
1441
+ /* The decision board is the page's lead editor: one title line, a status badge,
1442
+ and the save action on a 44px row, matching the Flow goal header. */
1443
+ .flow-decisions__header {
1444
+ align-items: center;
1445
+ flex: 0 0 44px;
1446
+ gap: 12px;
1447
+ height: 44px;
1448
+ padding: 0 12px;
1449
+ }
1450
+
1451
+ .flow-decisions__identity {
1452
+ align-items: center;
1453
+ display: flex;
1454
+ gap: 10px;
1455
+ min-width: 0;
1456
+ }
1457
+
1458
+ .flow-decisions__title {
1459
+ font-size: 18px;
1460
+ font-weight: 650;
1461
+ letter-spacing: 0;
1462
+ line-height: 1.2;
1463
+ }
1464
+
1465
+ .flow-decisions__state {
1466
+ flex: 0 0 auto;
1467
+ }
1468
+
1469
+ .flow-decisions__actions {
1470
+ align-items: center;
1471
+ flex: 0 0 auto;
1472
+ flex-wrap: nowrap;
1473
+ justify-content: flex-end;
1474
+ }
1475
+
1476
+ /* Discover: one page frame, a two-column sheet, and plain rail blocks. */
1477
+ .discover-page {
1478
+ gap: 24px;
1479
+ /* The notification region is fixed 34px above the status bar; reserve its
1480
+ height so the last control of a page can scroll clear of it. */
1481
+ padding: 0 2px 56px;
1482
+ }
1483
+
1484
+ /* The page scrolls as one column; a panel never shrinks below its rows. */
1485
+ .discover-page > * {
1486
+ flex: 0 0 auto;
1487
+ }
1488
+
1489
+ /* A panel body contributes its content height; the page owns the scrolling. */
1490
+ .discover-page .panel__body {
1491
+ flex: 0 0 auto;
1492
+ min-height: auto;
1493
+ overflow: visible;
1494
+ }
1495
+
1496
+ /* Shared by every Discover page. */
1497
+ .discover-page__header {
1498
+ align-items: flex-start;
1499
+ display: flex;
1500
+ flex-wrap: wrap;
1501
+ gap: 8px 16px;
1502
+ justify-content: space-between;
1503
+ }
1504
+
1505
+ .discover-page__heading {
1506
+ display: flex;
1507
+ flex-direction: column;
1508
+ gap: 4px;
1509
+ min-width: 0;
1510
+ }
1511
+
1512
+ .discover-page__eyebrow {
1513
+ color: var(--muted-foreground);
1514
+ font-size: 10px;
1515
+ font-weight: 700;
1516
+ letter-spacing: 0.08em;
1517
+ line-height: 1.2;
1518
+ text-transform: uppercase;
1519
+ }
1520
+
1521
+ .discover-page__title {
1522
+ color: var(--foreground);
1523
+ font-size: 20px;
1524
+ font-weight: 650;
1525
+ letter-spacing: -0.01em;
1526
+ line-height: 1.2;
1527
+ margin: 0;
1528
+ overflow-wrap: anywhere;
1529
+ }
1530
+
1531
+ .discover-page__subtitle {
1532
+ color: var(--muted-foreground);
1533
+ font-size: 12px;
1534
+ line-height: 1.45;
1535
+ margin: 0;
1536
+ max-width: 72ch;
1537
+ }
1538
+
1539
+ .discover-page__actions {
1540
+ align-items: center;
1541
+ display: flex;
1542
+ flex-wrap: wrap;
1543
+ gap: 8px;
1544
+ justify-content: flex-end;
1545
+ margin-top: 2px;
1546
+ }
1547
+
1548
+ .discover-page__header--compact {
1549
+ gap: 4px;
1550
+ }
1551
+
1552
+ .discover-card {
1553
+ min-width: 0;
1554
+ }
1555
+
1556
+ .discover-head {
1557
+ display: flex;
1558
+ flex-direction: column;
1559
+ gap: 8px;
1560
+ min-width: 0;
1561
+ }
1562
+
1563
+ .discover-head__top {
1564
+ align-items: flex-start;
1565
+ display: flex;
1566
+ gap: 12px;
1567
+ justify-content: space-between;
1568
+ }
1569
+
1570
+ .discover-head__identity {
1571
+ display: flex;
1572
+ flex-direction: column;
1573
+ gap: 4px;
1574
+ min-width: 0;
1575
+ }
1576
+
1577
+ .discover-head__title {
1578
+ font-size: 20px;
1579
+ font-weight: 650;
1580
+ letter-spacing: -0.01em;
1581
+ line-height: 1.2;
1582
+ margin: 0;
1583
+ overflow-wrap: anywhere;
1584
+ }
1585
+
1586
+ .discover-head__actions {
1587
+ align-items: center;
1588
+ display: flex;
1589
+ flex-wrap: wrap;
1590
+ gap: 8px;
1591
+ justify-content: flex-end;
1592
+ }
1593
+
1594
+ .discover-head__definition {
1595
+ font-size: 13px;
1596
+ line-height: 1.45;
1597
+ margin: 0;
1598
+ max-width: 72ch;
1599
+ }
1600
+
1601
+ .discover-head__meta {
1602
+ align-items: center;
1603
+ color: var(--muted-foreground);
1604
+ display: flex;
1605
+ flex-wrap: wrap;
1606
+ font-size: 11px;
1607
+ gap: 4px 8px;
1608
+ }
1609
+
1610
+ .discover-sheet {
1611
+ align-items: start;
1612
+ display: grid;
1613
+ gap: 16px 24px;
1614
+ grid-template-columns: minmax(320px, 420px) minmax(0, 1fr);
1615
+ max-width: 1440px;
1616
+ }
1617
+
1618
+ .discover-col,
1619
+ .discover-rail {
1620
+ display: flex;
1621
+ flex-direction: column;
1622
+ gap: 12px;
1623
+ min-width: 0;
1624
+ }
1625
+
1626
+ .discover-block {
1627
+ border-top: 1px solid var(--border);
1628
+ min-width: 0;
1629
+ padding-top: 10px;
1630
+ }
1631
+
1632
+ .discover-rail > .discover-block:first-child {
1633
+ border-top: 0;
1634
+ padding-top: 0;
1635
+ }
1636
+
1637
+ .discover-block__head {
1638
+ align-items: baseline;
1639
+ display: flex;
1640
+ gap: 8px;
1641
+ justify-content: space-between;
1642
+ margin-bottom: 8px;
1643
+ }
1644
+
1645
+ .discover-block__title {
1646
+ font-size: 12px;
1647
+ font-weight: 600;
1648
+ margin: 0;
1649
+ min-width: 0;
1650
+ }
1651
+
1652
+ .discover-block__meta {
1653
+ color: var(--muted-foreground);
1654
+ font-size: 11px;
1655
+ text-align: right;
1656
+ }
1657
+
1658
+ .discover-subblock {
1659
+ margin-top: 10px;
1660
+ }
1661
+
1662
+ .discover-subblock:first-of-type {
1663
+ margin-top: 0;
1664
+ }
1665
+
1666
+ .discover-subblock__title {
1667
+ color: var(--muted-foreground);
1668
+ font-size: 10px;
1669
+ font-weight: 700;
1670
+ letter-spacing: 0.08em;
1671
+ margin: 0 0 4px;
1672
+ text-transform: uppercase;
1673
+ }
1674
+
1675
+ /* Discover body and notices: one notice stack above every page. */
1676
+ .discover-body {
1677
+ gap: 8px;
1678
+ }
1679
+
1680
+ .discover-notices {
1681
+ display: flex;
1682
+ flex-direction: column;
1683
+ gap: 6px;
1684
+ }
1685
+
1686
+ .discover-notices .message {
1687
+ margin: 0;
1688
+ }
1689
+
1690
+ /* One run tag above every Discover page: the run's state, age, id, and last line. */
1691
+ .discover-run-tag {
1692
+ align-items: center;
1693
+ background: var(--surface-raised);
1694
+ border: 1px solid var(--border-subtle);
1695
+ border-radius: 4px;
1696
+ display: flex;
1697
+ flex-wrap: wrap;
1698
+ gap: 8px;
1699
+ min-width: 0;
1700
+ padding: 6px 8px;
1701
+ }
1702
+
1703
+ .discover-run-tag strong {
1704
+ font-size: 12px;
1705
+ font-weight: 600;
1706
+ }
1707
+
1708
+ .discover-run-tag .muted {
1709
+ font-size: 11px;
1710
+ }
1711
+
1712
+ .discover-run-tag__activity {
1713
+ color: var(--muted-foreground);
1714
+ flex: 1 1 160px;
1715
+ font-family: var(--font-mono);
1716
+ font-size: 11px;
1717
+ min-width: 0;
1718
+ overflow: hidden;
1719
+ text-overflow: ellipsis;
1720
+ white-space: nowrap;
1721
+ }
1722
+
1723
+ /* Active run: one state line names the run, its age, its id, and the quiet Stop. */
1724
+ .discover-run__header {
1725
+ background: var(--surface-raised);
1726
+ gap: 12px;
1727
+ }
1728
+
1729
+ .discover-run__heading {
1730
+ align-items: center;
1731
+ display: flex;
1732
+ gap: 8px;
1733
+ min-width: 0;
1734
+ }
1735
+
1736
+ .discover-run__dot {
1737
+ background: var(--accent);
1738
+ border-radius: 999px;
1739
+ flex: 0 0 6px;
1740
+ height: 6px;
1741
+ width: 6px;
1742
+ }
1743
+
1744
+ .discover-run__meta {
1745
+ align-items: center;
1746
+ display: flex;
1747
+ gap: 10px;
1748
+ justify-content: flex-end;
1749
+ min-width: 0;
1750
+ }
1751
+
1752
+ .discover-run__started {
1753
+ font-size: 11px;
1754
+ white-space: nowrap;
1755
+ }
1756
+
1757
+ .discover-run__stop {
1758
+ align-items: center;
1759
+ background: transparent;
1760
+ border: 1px solid var(--border-subtle);
1761
+ border-radius: 4px;
1762
+ color: var(--muted-foreground);
1763
+ cursor: pointer;
1764
+ display: inline-flex;
1765
+ flex: 0 0 auto;
1766
+ font-family: var(--font-sans);
1767
+ font-size: 11px;
1768
+ font-weight: 500;
1769
+ height: 24px;
1770
+ padding: 0 8px;
1771
+ white-space: nowrap;
1772
+ }
1773
+
1774
+ .discover-run__stop:hover:not(:disabled),
1775
+ .discover-run__stop:focus-visible {
1776
+ background: var(--error-surface);
1777
+ border-color: var(--error);
1778
+ color: var(--error);
1779
+ }
1780
+
1781
+ .discover-run__stop:disabled {
1782
+ cursor: not-allowed;
1783
+ opacity: 0.45;
1784
+ }
1785
+
1786
+ .discover-run__body {
1787
+ display: flex;
1788
+ flex-direction: column;
1789
+ gap: 8px;
1790
+ padding: 8px;
1791
+ }
1792
+
1793
+ .discover-run__terminal {
1794
+ height: 180px;
1795
+ }
1796
+
1797
+ /* Queued question. */
1798
+ .discover-question__message {
1799
+ font-size: 13px;
1800
+ margin: 0;
1801
+ }
1802
+
1803
+ .discover-answer {
1804
+ display: flex;
1805
+ gap: 8px;
1806
+ }
1807
+
1808
+ .discover-answer input {
1809
+ flex: 1;
1810
+ }
1811
+
1812
+ /* Manual-testing target, source checkout only. */
1813
+ .discover-remote__form {
1814
+ align-items: center;
1815
+ display: flex;
1816
+ flex-wrap: wrap;
1817
+ gap: 8px;
1818
+ }
1819
+
1820
+ .discover-remote__form input {
1821
+ flex: 1 1 280px;
1822
+ max-width: 520px;
1823
+ }
1824
+
1825
+ .discover-remote__retained {
1826
+ align-items: center;
1827
+ display: flex;
1828
+ flex-wrap: wrap;
1829
+ gap: 8px;
1830
+ }
1831
+
1832
+ .discover-remote__label {
1833
+ color: var(--muted-foreground);
1834
+ font-size: 12px;
1835
+ }
1836
+
1837
+ .discover-remote__select {
1838
+ background: var(--background);
1839
+ border: 1px solid var(--border-strong);
1840
+ border-radius: 4px;
1841
+ color: var(--foreground);
1842
+ flex: 1 1 280px;
1843
+ font-size: 12px;
1844
+ height: 28px;
1845
+ max-width: 520px;
1846
+ padding: 0 6px;
1847
+ }
1848
+
1849
+ .discover-remote__select:disabled {
1850
+ opacity: 0.55;
1851
+ }
1852
+
1853
+ .discover-remote__list {
1854
+ display: flex;
1855
+ flex-direction: column;
1856
+ gap: 2px;
1857
+ list-style: none;
1858
+ margin: 0;
1859
+ padding: 0;
1860
+ }
1861
+
1862
+ .discover-remote__item {
1863
+ align-items: center;
1864
+ display: flex;
1865
+ gap: 8px;
1866
+ justify-content: space-between;
1867
+ min-height: 24px;
1868
+ }
1869
+
1870
+ .discover-remote__url {
1871
+ color: var(--muted-foreground);
1872
+ font-size: 12px;
1873
+ overflow: hidden;
1874
+ text-overflow: ellipsis;
1875
+ white-space: nowrap;
1876
+ }
1877
+
1878
+ .discover-remote__item--active .discover-remote__url {
1879
+ color: var(--foreground);
1880
+ }
1881
+
1882
+ /* Filtered glossary empty state. */
1883
+ .discover-filter-empty__body {
1884
+ align-items: center;
1885
+ display: flex;
1886
+ flex-wrap: wrap;
1887
+ gap: 12px;
1888
+ justify-content: space-between;
1889
+ }
1890
+
1891
+ .discover-filter-empty .empty {
1892
+ padding: 0;
1893
+ }
1894
+
1895
+ /* Skill page: the editor owns the remaining pane height. */
1896
+ .discover-skill-page {
1897
+ display: flex;
1898
+ flex-direction: column;
1899
+ gap: 8px;
1900
+ height: 100%;
1901
+ min-height: 0;
1902
+ }
1903
+
1904
+ .discover-skill {
1905
+ display: flex;
1906
+ flex: 1;
1907
+ flex-direction: column;
1908
+ min-height: 0;
1909
+ }
1910
+
1911
+ .discover-skill__panel {
1912
+ flex: 1;
1913
+ min-height: 0;
1914
+ }
1915
+
1916
+ /* The skill header pairs the file identity with a draft-state line and the actions. */
1917
+ .discover-skill__header {
1918
+ align-items: flex-start;
1919
+ gap: 12px;
1920
+ }
1921
+
1922
+ .discover-skill__identity {
1923
+ display: flex;
1924
+ flex-direction: column;
1925
+ gap: 2px;
1926
+ min-width: 0;
1927
+ }
1928
+
1929
+ .discover-skill__title {
1930
+ line-height: 1.2;
1931
+ max-width: 100%;
1932
+ }
1933
+
1934
+ .discover-skill__file {
1935
+ color: var(--muted-foreground);
1936
+ font-weight: 400;
1937
+ }
1938
+
1939
+ .discover-skill__state {
1940
+ color: var(--muted-foreground);
1941
+ font-size: 11px;
1942
+ line-height: 1.2;
1943
+ }
1944
+
1945
+ .discover-skill__state[data-state="dirty"] {
1946
+ color: var(--warning);
1947
+ }
1948
+
1949
+ .discover-skill__state[data-state="missing"] {
1950
+ color: var(--error);
1951
+ }
1952
+
1953
+ .discover-skill__actions {
1954
+ align-self: center;
1955
+ flex: 0 0 auto;
1956
+ justify-content: flex-end;
1957
+ }
1958
+
1959
+ /* Warnings page. */
1960
+ .discover-warning-list {
1961
+ list-style: none;
1962
+ margin: 0;
1963
+ padding: 0;
1964
+ }
1965
+
1966
+ .discover-facts {
1967
+ display: flex;
1968
+ flex-direction: column;
1969
+ gap: 6px;
1970
+ margin: 8px 0 0;
1971
+ }
1972
+
1973
+ .discover-fact {
1974
+ align-items: baseline;
1975
+ display: grid;
1976
+ gap: 10px;
1977
+ grid-template-columns: 104px minmax(0, 1fr);
1978
+ }
1979
+
1980
+ .discover-fact dt {
1981
+ color: var(--muted-foreground);
1982
+ font-size: 11px;
1983
+ line-height: 1.45;
1984
+ }
1985
+
1986
+ .discover-fact dd {
1987
+ font-size: 12px;
1988
+ line-height: 1.45;
1989
+ margin: 0;
1990
+ min-width: 0;
1991
+ overflow-wrap: anywhere;
1992
+ }
1993
+
1994
+ .discover-mono {
1995
+ font-family: var(--font-mono);
1996
+ font-size: 11.5px;
1997
+ }
1998
+
1999
+ .discover-chips {
2000
+ display: flex;
2001
+ flex-wrap: wrap;
2002
+ gap: 4px;
2003
+ margin: 8px 0 0;
2004
+ }
2005
+
2006
+ .code-chip {
2007
+ background: var(--background);
2008
+ border: 1px solid var(--border-subtle);
2009
+ border-radius: 3px;
2010
+ font-family: var(--font-mono);
2011
+ font-size: 11.5px;
2012
+ line-height: 1.4;
2013
+ margin: 0;
2014
+ padding: 2px 6px;
2015
+ }
2016
+
2017
+ a.code-chip--link {
2018
+ color: var(--accent);
2019
+ text-decoration: none;
2020
+ }
2021
+
2022
+ a.code-chip--link:hover,
2023
+ a.code-chip--link:focus-visible {
2024
+ border-color: var(--border-strong);
2025
+ text-decoration: underline;
2026
+ }
2027
+
2028
+ .discover-page .panel .table-wrap th {
2029
+ background: var(--surface);
2030
+ }
2031
+
2032
+ .discover-page .table-wrap th {
2033
+ font-size: 11px;
2034
+ letter-spacing: 0.03em;
2035
+ padding: 4px 8px;
2036
+ }
2037
+
2038
+ .discover-page .table-wrap td {
2039
+ padding-left: 8px;
2040
+ padding-right: 8px;
2041
+ }
2042
+
2043
+ .discover-page .table-wrap tbody tr:last-child td {
2044
+ border-bottom: 0;
2045
+ }
2046
+
2047
+ .discover-page .table-wrap td[data-column="line"] {
2048
+ font-family: var(--font-mono);
2049
+ font-size: 11.5px;
2050
+ line-height: 1.5;
2051
+ }
2052
+
2053
+ .discover-page .table-wrap .discover-command-label {
2054
+ color: var(--muted-foreground);
2055
+ font-size: 12px;
2056
+ }
2057
+
2058
+ .discover-command-missing {
2059
+ font-size: 11.5px;
2060
+ font-style: italic;
2061
+ }
2062
+
2063
+ .discover-coverage {
2064
+ background: none;
2065
+ border: 0;
2066
+ color: var(--muted-foreground);
2067
+ cursor: pointer;
2068
+ font: inherit;
2069
+ padding: 0;
2070
+ white-space: nowrap;
2071
+ }
2072
+
2073
+ .discover-coverage:hover,
2074
+ .discover-coverage[aria-expanded="true"] {
2075
+ color: var(--foreground);
2076
+ text-decoration: underline;
2077
+ }
2078
+
2079
+ .discover-page .table-wrap td.discover-mono {
2080
+ font-family: var(--font-mono);
2081
+ font-size: 10.5px;
2082
+ overflow-wrap: anywhere;
2083
+ white-space: pre-line;
2084
+ }
2085
+
2086
+ .panel__subtitle {
2087
+ white-space: nowrap;
2088
+ }
2089
+
2090
+ .discover-page .discover-stats {
2091
+ display: flex;
2092
+ gap: 16px;
2093
+ margin: 2px 0 0;
2094
+ }
2095
+
2096
+ .discover-page .discover-stat {
2097
+ align-items: baseline;
2098
+ background: none;
2099
+ border: 0;
2100
+ display: flex;
2101
+ gap: 5px;
2102
+ min-width: 0;
2103
+ padding: 0;
2104
+ }
2105
+
2106
+ .discover-stat__value {
2107
+ font-size: 18px;
2108
+ font-variant-numeric: tabular-nums;
2109
+ font-weight: 650;
2110
+ line-height: 1.2;
2111
+ }
2112
+
2113
+ .discover-stat__label {
2114
+ color: var(--muted-foreground);
2115
+ font-size: 10px;
2116
+ letter-spacing: 0.03em;
2117
+ text-transform: uppercase;
2118
+ }
2119
+
2120
+ .discover-page .discover-command-line {
2121
+ margin-top: 8px;
2122
+ }
2123
+
2124
+ .discover-command-line {
2125
+ align-items: center;
2126
+ display: grid;
2127
+ font-size: 12px;
2128
+ gap: 8px;
2129
+ grid-template-columns: 96px minmax(0, 1fr);
2130
+ }
2131
+
2132
+ .discover-command-line .code-chip {
2133
+ justify-self: start;
2134
+ }
2135
+
2136
+ .discover-test-summary {
2137
+ display: flex;
2138
+ flex-direction: column;
2139
+ gap: 8px;
2140
+ min-width: 0;
2141
+ }
2142
+
2143
+ .discover-card[data-field="testing"] .table-wrap {
2144
+ margin-top: 10px;
2145
+ }
2146
+
2147
+ .discover-card[data-field="testing"] .table-wrap table {
2148
+ table-layout: fixed;
2149
+ }
2150
+
2151
+ .discover-card[data-field="testing"] .table-wrap th:nth-child(1) {
2152
+ width: 88px;
2153
+ }
2154
+
2155
+ .discover-card[data-field="testing"] .table-wrap th:nth-child(2) {
2156
+ width: 104px;
2157
+ }
2158
+
2159
+ .discover-card[data-field="testing"] .table-wrap th:nth-child(3) {
2160
+ width: 96px;
2161
+ }
2162
+
2163
+ .discover-quality-gate__name {
2164
+ font-weight: 550;
2165
+ }
2166
+
2167
+ .discover-quality-gate__checks {
2168
+ color: var(--muted-foreground);
2169
+ }
2170
+
2171
+ .discover-card[data-field="architecture"] {
2172
+ min-width: 0;
2173
+ }
2174
+
2175
+ .discover-contexts {
2176
+ display: flex;
2177
+ flex-direction: column;
2178
+ list-style: none;
2179
+ margin: 0;
2180
+ padding: 0;
2181
+ }
2182
+
2183
+ .discover-context {
2184
+ display: flex;
2185
+ flex-direction: column;
2186
+ gap: 4px;
2187
+ min-width: 0;
2188
+ padding: 8px 0;
2189
+ }
2190
+
2191
+ .discover-context + .discover-context {
2192
+ border-top: 1px solid var(--border-subtle);
2193
+ }
2194
+
2195
+ .discover-context:first-child {
2196
+ padding-top: 0;
2197
+ }
2198
+
2199
+ .discover-context:last-child {
2200
+ padding-bottom: 0;
2201
+ }
2202
+
2203
+ .discover-context__head {
2204
+ align-items: baseline;
2205
+ display: flex;
2206
+ flex-wrap: wrap;
2207
+ gap: 2px 8px;
2208
+ min-width: 0;
2209
+ }
2210
+
2211
+ .discover-context__name {
2212
+ flex: 1 1 auto;
2213
+ font-size: 13px;
2214
+ font-weight: 600;
2215
+ min-width: 0;
2216
+ overflow-wrap: anywhere;
2217
+ }
2218
+
2219
+ .discover-context__responsibility {
2220
+ color: var(--muted-foreground);
2221
+ font-size: 12px;
2222
+ line-height: 1.45;
2223
+ margin: 0;
2224
+ overflow-wrap: anywhere;
2225
+ }
2226
+
2227
+ .discover-context__entries {
2228
+ align-items: baseline;
2229
+ display: grid;
2230
+ gap: 4px 12px;
2231
+ grid-template-columns: 160px minmax(0, 1fr);
2232
+ min-width: 0;
2233
+ }
2234
+
2235
+ .discover-context__label {
2236
+ color: var(--muted-foreground);
2237
+ font-size: 10px;
2238
+ font-weight: 700;
2239
+ letter-spacing: 0.08em;
2240
+ text-transform: uppercase;
2241
+ }
2242
+
2243
+ .discover-context__entries .discover-chips {
2244
+ margin: 0;
2245
+ }
2246
+
2247
+ .discover-boundaries {
2248
+ border-top: 1px solid var(--border-subtle);
2249
+ display: flex;
2250
+ flex-direction: column;
2251
+ margin: 10px 0 0;
2252
+ padding: 0;
2253
+ }
2254
+
2255
+ .discover-boundary {
2256
+ align-items: baseline;
2257
+ display: grid;
2258
+ gap: 4px 12px;
2259
+ grid-template-columns: 160px minmax(0, 1fr);
2260
+ padding: 8px 0;
2261
+ }
2262
+
2263
+ .discover-boundary + .discover-boundary {
2264
+ border-top: 1px solid var(--border-subtle);
2265
+ }
2266
+
2267
+ .discover-boundary:last-child {
2268
+ padding-bottom: 0;
2269
+ }
2270
+
2271
+ .discover-boundary dt {
2272
+ color: var(--muted-foreground);
2273
+ font-size: 10px;
2274
+ font-weight: 700;
2275
+ letter-spacing: 0.08em;
2276
+ text-transform: uppercase;
2277
+ }
2278
+
2279
+ .discover-boundary dd {
2280
+ font-size: 12px;
2281
+ line-height: 1.45;
2282
+ margin: 0;
2283
+ min-width: 0;
2284
+ overflow-wrap: anywhere;
2285
+ }
2286
+
2287
+ .discover-boundary .discover-chips {
2288
+ margin: 0;
2289
+ }
2290
+
2291
+ .discover-boundary-note {
2292
+ color: var(--muted-foreground);
2293
+ font-size: 12px;
2294
+ line-height: 1.45;
2295
+ margin: 10px 0 0;
2296
+ }
2297
+
2298
+ .discover-diagram {
2299
+ min-height: 96px;
2300
+ overflow: visible;
2301
+ width: 100%;
2302
+ }
2303
+
2304
+ .discover-diagram svg {
2305
+ display: block;
2306
+ height: auto;
2307
+ margin: 0 auto;
2308
+ max-width: 100%;
2309
+ }
2310
+
2311
+ .discover-diagram .node rect,
2312
+ .discover-diagram .node polygon,
2313
+ .discover-diagram .node circle {
2314
+ stroke-width: 1px;
2315
+ }
2316
+
2317
+ .discover-diagram .edgePath .path {
2318
+ stroke-width: 1.25px;
2319
+ }
2320
+
2321
+ .discover-diagram text {
2322
+ fill: var(--foreground);
2323
+ }
2324
+
2325
+ .discover-search {
2326
+ flex: 1 1 200px;
2327
+ max-width: 240px;
2328
+ width: 100%;
2329
+ }
2330
+
2331
+ /* One filter toolbar: a search field, a state switch, and a valued floor. */
2332
+ .discover-page__actions.discover-glossary-controls {
2333
+ background: var(--surface-raised);
2334
+ border: 1px solid var(--border);
2335
+ border-radius: 4px;
2336
+ flex-basis: 100%;
2337
+ flex-wrap: wrap;
2338
+ gap: 8px;
2339
+ padding: 4px;
2340
+ }
2341
+
2342
+ .discover-glossary-filters {
2343
+ align-items: center;
2344
+ display: flex;
2345
+ flex-wrap: wrap;
2346
+ gap: 8px;
2347
+ }
2348
+
2349
+ .discover-glossary-divider {
2350
+ background: var(--border);
2351
+ flex: 0 0 1px;
2352
+ height: 18px;
2353
+ }
2354
+
2355
+ .discover-toggle {
2356
+ align-items: center;
2357
+ color: var(--muted-foreground);
2358
+ cursor: pointer;
2359
+ display: inline-flex;
2360
+ font-size: 11px;
2361
+ gap: 6px;
2362
+ white-space: nowrap;
2363
+ }
2364
+
2365
+ .discover-toggle input {
2366
+ height: 1px;
2367
+ opacity: 0;
2368
+ position: absolute;
2369
+ width: 1px;
2370
+ }
2371
+
2372
+ .discover-toggle__track {
2373
+ background: var(--background);
2374
+ border: 1px solid var(--border-strong);
2375
+ border-radius: 999px;
2376
+ flex: 0 0 auto;
2377
+ height: 14px;
2378
+ position: relative;
2379
+ width: 26px;
2380
+ }
2381
+
2382
+ .discover-toggle__track::after {
2383
+ background: var(--muted-foreground);
2384
+ border-radius: 999px;
2385
+ content: "";
2386
+ height: 8px;
2387
+ left: 2px;
2388
+ position: absolute;
2389
+ top: 2px;
2390
+ transition: left 120ms ease, background 120ms ease;
2391
+ width: 8px;
2392
+ }
2393
+
2394
+ .discover-toggle input:checked + .discover-toggle__track {
2395
+ background: var(--accent-surface);
2396
+ border-color: var(--accent);
2397
+ }
2398
+
2399
+ .discover-toggle input:checked + .discover-toggle__track::after {
2400
+ background: var(--accent);
2401
+ left: 14px;
2402
+ }
2403
+
2404
+ .discover-toggle input:focus-visible + .discover-toggle__track {
2405
+ outline: 2px solid var(--ring);
2406
+ outline-offset: 2px;
2407
+ }
2408
+
2409
+ .discover-toggle input:disabled + .discover-toggle__track,
2410
+ .discover-toggle input:disabled ~ .discover-toggle__label {
2411
+ cursor: not-allowed;
2412
+ opacity: 0.45;
2413
+ }
2414
+
2415
+ .discover-floor {
2416
+ align-items: center;
2417
+ display: flex;
2418
+ gap: 8px;
2419
+ }
2420
+
2421
+ .discover-floor__label {
2422
+ color: var(--muted-foreground);
2423
+ font-size: 10px;
2424
+ font-weight: 700;
2425
+ letter-spacing: 0.08em;
2426
+ text-transform: uppercase;
2427
+ }
2428
+
2429
+ .discover-floor__input {
2430
+ accent-color: var(--accent);
2431
+ width: 120px;
2432
+ }
2433
+
2434
+ .discover-floor__value {
2435
+ background: var(--background);
2436
+ border: 1px solid var(--border-subtle);
2437
+ border-radius: 3px;
2438
+ font-family: var(--font-mono);
2439
+ font-size: 11px;
2440
+ min-width: 46px;
2441
+ padding: 2px 6px;
2442
+ text-align: center;
2443
+ }
2444
+
2445
+ .discover-uses {
2446
+ font-variant-numeric: tabular-nums;
2447
+ font-weight: 600;
2448
+ }
2449
+
2450
+ .discover-examples {
2451
+ display: inline-flex;
2452
+ flex-wrap: wrap;
2453
+ font-family: var(--font-mono);
2454
+ font-size: 11px;
2455
+ gap: 2px 4px;
2456
+ }
2457
+
2458
+ .discover-examples__item {
2459
+ align-items: baseline;
2460
+ display: inline-flex;
2461
+ }
2462
+
2463
+ .discover-skill {
2464
+ display: flex;
2465
+ flex-direction: column;
2466
+ min-height: 0;
2467
+ }
2468
+
2469
+ .discover-warning {
2470
+ border-bottom: 1px solid var(--border-subtle);
2471
+ font-size: 12px;
2472
+ line-height: 1.5;
2473
+ margin: 0;
2474
+ padding: 8px 10px;
2475
+ }
2476
+
2477
+ .discover-warning:last-child {
2478
+ border-bottom: 0;
2479
+ }
2480
+
2481
+ @media (max-width: 1240px) {
2482
+ .discover-sheet {
2483
+ grid-template-columns: minmax(0, 1fr);
2484
+ }
2485
+
2486
+ .discover-col,
2487
+ .discover-rail {
2488
+ display: contents;
2489
+ }
2490
+ }
2491
+
2492
+ /* Sidebar: a disclosure row that opens a nested skill submenu. */
2493
+ .sidebar-tab-row {
2494
+ align-items: center;
2495
+ display: flex;
2496
+ gap: 2px;
2497
+ }
2498
+
2499
+ .sidebar-tab-row .sidebar-item {
2500
+ flex: 1;
2501
+ min-width: 0;
2502
+ }
2503
+
2504
+ .sidebar-disclosure {
2505
+ align-items: center;
2506
+ background: transparent;
2507
+ border: 1px solid transparent;
2508
+ border-radius: 3px;
2509
+ color: var(--muted-foreground);
2510
+ cursor: pointer;
2511
+ display: flex;
2512
+ flex: 0 0 20px;
2513
+ height: 24px;
2514
+ justify-content: center;
2515
+ padding: 0;
2516
+ }
2517
+
2518
+ .sidebar-disclosure:hover {
2519
+ background: var(--secondary);
2520
+ color: var(--foreground);
2521
+ }
2522
+
2523
+ .sidebar-disclosure__icon {
2524
+ transition: transform 120ms ease;
2525
+ }
2526
+
2527
+ .sidebar-disclosure__icon--open {
2528
+ transform: rotate(90deg);
2529
+ }
2530
+
2531
+ .sidebar-submenu {
2532
+ border-left: 1px solid var(--border);
2533
+ margin: 2px 0 6px 10px;
2534
+ padding-left: 6px;
2535
+ }
2536
+
2537
+ .sidebar-submenu__context {
2538
+ color: var(--muted-foreground);
2539
+ font-size: 10px;
2540
+ font-weight: 700;
2541
+ letter-spacing: 0.05em;
2542
+ padding: 6px 6px 2px;
2543
+ text-transform: uppercase;
2544
+ }
2545
+
2546
+ .sidebar-item--nested {
2547
+ padding-left: 8px;
2548
+ }
2549
+ .goal-page {
2550
+ display: flex;
2551
+ flex: 1;
2552
+ flex-direction: column;
2553
+ gap: 8px;
2554
+ min-height: 0;
2555
+ }
2556
+
2557
+ .goal-page--console {
2558
+ overflow: auto;
2559
+ }
2560
+
2561
+ .goal-page--fill {
2562
+ overflow: auto;
2563
+ padding-bottom: 56px;
2564
+ }
2565
+
2566
+ .goal-notices {
2567
+ display: flex;
2568
+ flex-direction: column;
2569
+ gap: 6px;
2570
+ }
2571
+
2572
+ .goal-empty-state {
2573
+ gap: 8px;
2574
+ }
2575
+
2576
+ .goal-empty-state__title {
2577
+ font-size: 16px;
2578
+ font-weight: 650;
2579
+ margin: 0;
2580
+ }
2581
+
2582
+ .goal-filters {
2583
+ flex: 0 0 auto;
2584
+ }
2585
+
2586
+ .goal-filters__body {
2587
+ align-items: center;
2588
+ display: flex;
2589
+ flex-wrap: wrap;
2590
+ gap: 8px;
2591
+ padding: 6px 8px;
2592
+ }
2593
+
2594
+ .goal-filters__body > input {
2595
+ flex: 1 1 220px;
2596
+ max-width: 360px;
2597
+ }
2598
+
2599
+ .filter-chips {
2600
+ align-items: center;
2601
+ display: flex;
2602
+ flex-wrap: wrap;
2603
+ gap: 4px;
2604
+ }
2605
+
2606
+ .filter-chip {
2607
+ background: transparent;
2608
+ border: 1px solid var(--border-strong);
2609
+ border-radius: 999px;
2610
+ color: var(--muted-foreground);
2611
+ cursor: pointer;
2612
+ font-size: 11px;
2613
+ height: 24px;
2614
+ padding: 0 8px;
2615
+ }
2616
+
2617
+ .filter-chip:hover {
2618
+ background: var(--secondary);
2619
+ color: var(--foreground);
2620
+ }
2621
+
2622
+ .filter-chip[aria-pressed="true"] {
2623
+ background: var(--accent-surface);
2624
+ border-color: var(--accent);
2625
+ color: var(--foreground);
2626
+ }
2627
+
2628
+ .goal-adrs-panel,
2629
+ .goal-skills {
2630
+ flex: 1;
2631
+ min-height: 0;
2632
+ }
2633
+
2634
+ .goal-activity {
2635
+ flex: 1 0 220px;
2636
+ min-height: 220px;
2637
+ }
2638
+
2639
+ .goal-activity--idle {
2640
+ flex: 0 0 auto;
2641
+ min-height: 0;
2642
+ }
2643
+
2644
+ .goal-activity .panel__body {
2645
+ overflow: hidden;
2646
+ }
2647
+
2648
+ .goal-answer-input {
2649
+ background: var(--background);
2650
+ border: 1px solid var(--border-strong);
2651
+ border-radius: 4px;
2652
+ color: var(--foreground);
2653
+ flex: 1;
2654
+ font-family: var(--font-mono);
2655
+ font-size: 12px;
2656
+ min-width: 0;
2657
+ }
2658
+
2659
+ .goal-answer-input:focus-visible {
2660
+ border-color: var(--ring);
2661
+ outline: 2px solid var(--ring);
2662
+ }
2663
+
2664
+ .goal-contradictions .message {
2665
+ font-size: 12px;
2666
+ }
2667
+
2668
+ .sidebar-progress {
2669
+ background: var(--border-subtle);
2670
+ border-radius: 999px;
2671
+ height: 4px;
2672
+ margin: 2px 4px 6px;
2673
+ overflow: hidden;
2674
+ }
2675
+
2676
+ .sidebar-progress > span {
2677
+ background: var(--success);
2678
+ display: block;
2679
+ height: 100%;
2680
+ }
2681
+
2682
+ .goal-document {
2683
+ flex: 1;
2684
+ min-height: 0;
2685
+ }
2686
+
2687
+ .goal-document .goal-details {
2688
+ flex: 1;
2689
+ min-height: 0;
2690
+ overflow: hidden;
2691
+ padding: 0;
2692
+ }
2693
+
2694
+ .goal-revision {
2695
+ align-items: stretch;
2696
+ flex: 0 0 auto;
2697
+ flex-direction: column;
2698
+ gap: 6px;
2699
+ padding: 8px;
2700
+ }
2701
+
2702
+ .goal-revision__heading {
2703
+ align-items: center;
2704
+ display: flex;
2705
+ gap: 8px;
2706
+ justify-content: space-between;
2707
+ }
2708
+
2709
+ .goal-revision__input {
2710
+ min-height: 88px;
2711
+ padding: 6px 8px;
2712
+ resize: none;
2713
+ }
2714
+
2715
+ .goal-revision__hint {
2716
+ color: var(--muted-foreground);
2717
+ font-size: 11px;
2718
+ margin: 0;
2719
+ }
2720
+
2721
+ .goal-revision__actions {
2722
+ display: flex;
2723
+ gap: 6px;
2724
+ }
2725
+
2726
+ .skill {
2727
+ display: flex;
2728
+ flex-direction: column;
2729
+ gap: 2px;
2730
+ }
2731
+
2732
+ .skill__row {
2733
+ align-items: flex-start;
2734
+ display: flex;
2735
+ gap: 4px;
2736
+ }
2737
+
2738
+ .skill__button {
2739
+ align-items: center;
2740
+ background: transparent;
2741
+ border: 1px solid transparent;
2742
+ border-radius: 4px;
2743
+ color: var(--foreground);
2744
+ cursor: pointer;
2745
+ display: flex;
2746
+ flex: 1;
2747
+ gap: 8px;
2748
+ justify-content: space-between;
2749
+ min-width: 0;
2750
+ padding: 4px 6px;
2751
+ text-align: left;
2752
+ }
2753
+
2754
+ .skill__text {
2755
+ display: flex;
2756
+ flex: 1;
2757
+ flex-direction: column;
2758
+ gap: 2px;
2759
+ min-width: 0;
2760
+ }
2761
+
2762
+ .skill__chevron {
2763
+ color: var(--muted-foreground);
2764
+ flex: 0 0 auto;
2765
+ transition: transform 120ms ease;
2766
+ }
2767
+
2768
+ .skill__chevron--open {
2769
+ transform: rotate(90deg);
2770
+ }
2771
+
2772
+ .skill__delete {
2773
+ align-items: center;
2774
+ background: transparent;
2775
+ border: 1px solid transparent;
2776
+ border-radius: 4px;
2777
+ color: var(--muted-foreground);
2778
+ cursor: pointer;
2779
+ display: inline-flex;
2780
+ flex: 0 0 auto;
2781
+ height: 28px;
2782
+ justify-content: center;
2783
+ padding: 0;
2784
+ width: 28px;
2785
+ }
2786
+
2787
+ .skill__delete:hover:not(:disabled),
2788
+ .skill__delete:focus-visible {
2789
+ background: var(--error-surface);
2790
+ border-color: var(--error);
2791
+ color: var(--error);
2792
+ }
2793
+
2794
+ .skill__delete:disabled {
2795
+ cursor: not-allowed;
2796
+ opacity: 0.45;
2797
+ }
2798
+
2799
+ .skill__button:hover {
2800
+ background: var(--secondary);
2801
+ }
2802
+
2803
+ .skill__button[data-selected="true"] {
2804
+ background: var(--accent-surface);
2805
+ border-color: var(--border-strong);
2806
+ }
2807
+
2808
+ .skill__description {
2809
+ font-size: 11px;
2810
+ }
2811
+
2812
+ .skill__detail {
2813
+ border-left: 2px solid var(--border-strong);
2814
+ margin: 0 0 4px 8px;
2815
+ padding: 4px 0 4px 8px;
2816
+ }
2817
+
2818
+ .skill__path {
2819
+ color: var(--muted-foreground);
2820
+ display: block;
2821
+ font-family: var(--font-mono);
2822
+ font-size: 11.5px;
2823
+ line-height: 1.4;
2824
+ margin: 0 0 8px;
2825
+ overflow: hidden;
2826
+ text-overflow: ellipsis;
2827
+ white-space: nowrap;
2828
+ }
2829
+
2830
+ .skill__document {
2831
+ color: var(--foreground);
2832
+ font-size: 13px;
2833
+ line-height: 1.55;
2834
+ max-width: 940px;
2835
+ overflow-wrap: anywhere;
2836
+ }
2837
+
2838
+ .skill__document > :first-child {
2839
+ margin-top: 0;
2840
+ }
2841
+
2842
+ .skill__document > :last-child {
2843
+ margin-bottom: 0;
2844
+ }
2845
+
2846
+ .skill__document h1 {
2847
+ font-size: 18px;
2848
+ font-weight: 650;
2849
+ letter-spacing: 0;
2850
+ line-height: 1.2;
2851
+ margin: 0 0 12px;
2852
+ }
2853
+
2854
+ .skill__document h2 {
2855
+ font-size: 13px;
2856
+ font-weight: 650;
2857
+ line-height: 1.45;
2858
+ margin: 16px 0 6px;
2859
+ }
2860
+
2861
+ .skill__document h3,
2862
+ .skill__document h4,
2863
+ .skill__document h5,
2864
+ .skill__document h6 {
2865
+ font-size: 12px;
2866
+ font-weight: 650;
2867
+ line-height: 1.45;
2868
+ margin: 12px 0 4px;
2869
+ }
2870
+
2871
+ .skill__document p {
2872
+ margin: 0 0 8px;
2873
+ }
2874
+
2875
+ .skill__document ul,
2876
+ .skill__document ol {
2877
+ margin: 0 0 8px;
2878
+ padding-left: 16px;
2879
+ }
2880
+
2881
+ .skill__document li + li {
2882
+ margin-top: 4px;
2883
+ }
2884
+
2885
+ .skill__document li > p {
2886
+ margin: 0;
2887
+ }
2888
+
2889
+ .skill__document strong {
2890
+ font-weight: 650;
2891
+ }
2892
+
2893
+ .skill__document a {
2894
+ color: var(--accent);
2895
+ text-decoration: none;
2896
+ }
2897
+
2898
+ .skill__document a:hover,
2899
+ .skill__document a:focus-visible {
2900
+ text-decoration: underline;
2901
+ }
2902
+
2903
+ .skill__document code {
2904
+ background: var(--background);
2905
+ border: 1px solid var(--border-subtle);
2906
+ border-radius: 3px;
2907
+ font-size: 11.5px;
2908
+ line-height: 1.4;
2909
+ padding: 2px 6px;
2910
+ }
2911
+
2912
+ .skill__document pre {
2913
+ background: var(--background);
2914
+ border: 1px solid var(--border-subtle);
2915
+ border-radius: 4px;
2916
+ margin: 0 0 8px;
2917
+ overflow: auto;
2918
+ padding: 8px;
2919
+ }
2920
+
2921
+ .skill__document pre code {
2922
+ background: transparent;
2923
+ border: 0;
2924
+ border-radius: 0;
2925
+ font-size: 12px;
2926
+ padding: 0;
2927
+ }
2928
+
2929
+ .skill__document blockquote {
2930
+ border-left: 2px solid var(--border-strong);
2931
+ color: var(--muted-foreground);
2932
+ margin: 0 0 8px;
2933
+ padding-left: 10px;
2934
+ }
2935
+
2936
+ .skill__document hr {
2937
+ border: 0;
2938
+ border-top: 1px solid var(--border-subtle);
2939
+ margin: 12px 0;
2940
+ }
2941
+
2942
+ .skill__document table {
2943
+ border-collapse: collapse;
2944
+ margin: 0 0 8px;
2945
+ }
2946
+
2947
+ .skill__document th,
2948
+ .skill__document td {
2949
+ border: 1px solid var(--border-subtle);
2950
+ padding: 4px 8px;
2951
+ text-align: left;
2952
+ }
2953
+
2954
+ .skill__document th {
2955
+ background: var(--surface-raised);
2956
+ font-weight: 600;
2957
+ }
2958
+ /* Issues mode */
2959
+ .issues-overview,
2960
+ .issues-queue-page,
2961
+ .issues-runs-page,
2962
+ .issues-drafts-page,
2963
+ .issues-agents-page,
2964
+ .issues-agent-focus {
2965
+ display: flex;
2966
+ flex-direction: column;
2967
+ gap: 12px;
2968
+ padding: 16px;
2969
+ overflow: auto;
2970
+ height: 100%;
2971
+ }
2972
+
2973
+ .issues-overview {
2974
+ min-height: 0;
2975
+ overflow: hidden;
2976
+ }
2977
+
2978
+ .issues-overview__header {
2979
+ display: flex;
2980
+ flex: 0 0 auto;
2981
+ align-items: flex-start;
2982
+ justify-content: space-between;
2983
+ gap: 12px;
2984
+ }
2985
+
2986
+ .issues-overview__title {
2987
+ font-size: 18px;
2988
+ font-weight: 600;
2989
+ margin: 2px 0;
2990
+ }
2991
+
2992
+ .issues-overview__repo {
2993
+ font-size: 11.5px;
2994
+ color: var(--muted);
2995
+ }
2996
+
2997
+ .issues-overview__body {
2998
+ display: grid;
2999
+ grid-template-columns: minmax(320px, 1fr) minmax(360px, 1.2fr);
3000
+ grid-auto-rows: minmax(0, 1fr);
3001
+ gap: 12px;
3002
+ align-items: stretch;
3003
+ flex: 1;
3004
+ min-height: 0;
3005
+ }
3006
+
3007
+ .issues-overview__side {
3008
+ display: flex;
3009
+ flex-direction: column;
3010
+ gap: 12px;
3011
+ min-height: 0;
3012
+ overflow: auto;
3013
+ }
3014
+
3015
+ .issues-overview__side > .panel {
3016
+ flex: 0 0 auto;
3017
+ }
3018
+
3019
+ @media (max-width: 1100px) {
3020
+ .issues-overview__body {
3021
+ grid-template-columns: 1fr;
3022
+ }
3023
+ }
3024
+
3025
+ .issues-facts {
3026
+ display: grid;
3027
+ grid-template-columns: repeat(2, minmax(120px, 1fr));
3028
+ gap: 8px;
3029
+ margin: 0;
3030
+ }
3031
+
3032
+ .issues-poll {
3033
+ align-items: center;
3034
+ display: inline-flex;
3035
+ flex: 0 1 auto;
3036
+ gap: 6px;
3037
+ min-width: 0;
3038
+ overflow: hidden;
3039
+ }
3040
+
3041
+ .issues-poll__dot {
3042
+ background: var(--border-strong);
3043
+ border-radius: 999px;
3044
+ flex: 0 0 auto;
3045
+ height: 6px;
3046
+ width: 6px;
3047
+ }
3048
+
3049
+ .issues-poll[data-tone="active"] .issues-poll__dot {
3050
+ background: var(--success);
3051
+ }
3052
+
3053
+ .issues-poll[data-tone="stale"] .issues-poll__dot,
3054
+ .issues-poll[data-tone="limited"] .issues-poll__dot {
3055
+ background: var(--warning);
3056
+ }
3057
+
3058
+ .issues-poll[data-tone="failed"] .issues-poll__dot {
3059
+ background: var(--error);
3060
+ }
3061
+
3062
+ .issues-poll__label {
3063
+ overflow: hidden;
3064
+ text-overflow: ellipsis;
3065
+ white-space: nowrap;
3066
+ }
3067
+
3068
+ .issues-facts dt {
3069
+ font-size: 10.5px;
3070
+ text-transform: uppercase;
3071
+ letter-spacing: 0.04em;
3072
+ color: var(--muted);
3073
+ }
3074
+
3075
+ .issues-facts dd {
3076
+ margin: 2px 0 0;
3077
+ font-size: 12px;
3078
+ overflow-wrap: anywhere;
3079
+ }
3080
+
3081
+ .issues-notice {
3082
+ margin: 0;
3083
+ padding: 6px 8px;
3084
+ border: 1px solid var(--warning);
3085
+ background: var(--warning-surface);
3086
+ border-radius: 4px;
3087
+ font-size: 11.5px;
3088
+ }
3089
+
3090
+ .issues-error {
3091
+ margin: 0;
3092
+ padding: 6px 8px;
3093
+ border: 1px solid var(--error);
3094
+ background: var(--error-surface);
3095
+ border-radius: 4px;
3096
+ font-size: 11.5px;
3097
+ }
3098
+
3099
+ .issues-activity {
3100
+ margin: 0;
3101
+ padding: 8px 10px;
3102
+ overflow: auto;
3103
+ background: var(--background);
3104
+ border: 1px solid var(--border);
3105
+ border-radius: 4px;
3106
+ font-size: 12px;
3107
+ line-height: 1.45;
3108
+ white-space: pre-wrap;
3109
+ overflow-wrap: anywhere;
3110
+ tab-size: 2;
3111
+ overscroll-behavior: contain;
3112
+ }
3113
+
3114
+ .issues-activity__line[data-kind="command"] {
3115
+ padding: 0 4px;
3116
+ border-radius: 3px;
3117
+ background: var(--accent-surface);
3118
+ color: var(--foreground);
3119
+ font-weight: 500;
3120
+ -webkit-box-decoration-break: clone;
3121
+ box-decoration-break: clone;
3122
+ }
3123
+
3124
+ .issues-activity__prompt {
3125
+ color: var(--accent);
3126
+ font-weight: 600;
3127
+ }
3128
+
3129
+ .issues-activity__empty {
3130
+ color: var(--muted-foreground);
3131
+ }
3132
+
3133
+ .panel > .issues-activity {
3134
+ border: 0;
3135
+ border-radius: 0;
3136
+ }
3137
+
3138
+ .issues-activity-panel {
3139
+ min-height: 0;
3140
+ }
3141
+
3142
+ .issues-activity-panel > .issues-activity {
3143
+ flex: 1;
3144
+ min-height: 0;
3145
+ }
3146
+
3147
+ .issues-run-detail .issues-activity {
3148
+ flex: 0 0 auto;
3149
+ min-height: 180px;
3150
+ max-height: 440px;
3151
+ }
3152
+
3153
+ .issues-question {
3154
+ border-top: 1px solid var(--border);
3155
+ padding: 10px 12px;
3156
+ display: flex;
3157
+ flex: 0 0 auto;
3158
+ flex-direction: column;
3159
+ gap: 8px;
3160
+ }
3161
+
3162
+ .issues-answer {
3163
+ display: flex;
3164
+ gap: 6px;
3165
+ align-items: center;
3166
+ }
3167
+
3168
+ .issues-queue,
3169
+ .issues-runs {
3170
+ list-style: none;
3171
+ margin: 0;
3172
+ padding: 0;
3173
+ }
3174
+
3175
+ .issues-queue__item,
3176
+ .issues-run {
3177
+ display: grid;
3178
+ align-items: center;
3179
+ gap: 8px;
3180
+ width: 100%;
3181
+ padding: 7px 12px;
3182
+ border-bottom: 1px solid var(--border);
3183
+ font-size: 12px;
3184
+ text-align: left;
3185
+ }
3186
+
3187
+ .issues-queue__item {
3188
+ grid-template-columns: 44px minmax(0, 1fr) auto;
3189
+ border-bottom-color: var(--border-subtle);
3190
+ padding: 6px 10px;
3191
+ }
3192
+
3193
+ .issues-queue__item:hover {
3194
+ background: var(--row-hover);
3195
+ }
3196
+
3197
+ .issues-run {
3198
+ grid-template-columns: minmax(0, 1fr) auto auto;
3199
+ background: transparent;
3200
+ color: var(--foreground);
3201
+ }
3202
+
3203
+ .issues-run:hover,
3204
+ .issues-run[aria-current="true"] {
3205
+ background: var(--secondary);
3206
+ }
3207
+
3208
+ .issues-queue__number {
3209
+ color: var(--muted-foreground);
3210
+ font-size: 11.5px;
3211
+ font-variant-numeric: tabular-nums;
3212
+ line-height: 1.3;
3213
+ overflow: hidden;
3214
+ text-decoration: none;
3215
+ text-overflow: ellipsis;
3216
+ white-space: nowrap;
3217
+ }
3218
+
3219
+ .issues-queue__number:hover,
3220
+ .issues-queue__number:focus-visible {
3221
+ color: var(--foreground);
3222
+ text-decoration: underline;
3223
+ }
3224
+
3225
+ .issues-queue__title {
3226
+ line-height: 1.3;
3227
+ min-width: 0;
3228
+ overflow: hidden;
3229
+ text-overflow: ellipsis;
3230
+ white-space: nowrap;
3231
+ }
3232
+
3233
+ .issues-queue__meta {
3234
+ align-items: center;
3235
+ display: inline-flex;
3236
+ gap: 6px;
3237
+ white-space: nowrap;
3238
+ }
3239
+
3240
+ .issues-queue__empty {
3241
+ padding: 10px;
3242
+ }
3243
+
3244
+ .issues-run-detail {
3245
+ border-top: 1px solid var(--border-strong);
3246
+ padding: 10px 12px;
3247
+ display: flex;
3248
+ flex-direction: column;
3249
+ gap: 6px;
3250
+ }
3251
+
3252
+ .issues-drafts__body {
3253
+ display: grid;
3254
+ grid-template-columns: minmax(240px, 340px) minmax(0, 1fr);
3255
+ gap: 12px;
3256
+ flex: 1;
3257
+ min-height: 0;
3258
+ }
3259
+
3260
+ .issues-drafts__body > .panel {
3261
+ display: flex;
3262
+ flex-direction: column;
3263
+ min-height: 0;
3264
+ }
3265
+
3266
+ @media (max-width: 1100px) {
3267
+ .issues-drafts__body {
3268
+ grid-template-columns: 1fr;
3269
+ }
3270
+ }
3271
+
3272
+ .issues-drafts {
3273
+ list-style: none;
3274
+ margin: 0;
3275
+ padding: 0;
3276
+ }
3277
+
3278
+ .issues-draft {
3279
+ display: flex;
3280
+ flex-direction: column;
3281
+ gap: 2px;
3282
+ width: 100%;
3283
+ padding: 7px 12px;
3284
+ border-bottom: 1px solid var(--border);
3285
+ border-radius: 0;
3286
+ background: transparent;
3287
+ color: var(--foreground);
3288
+ font-size: 12px;
3289
+ text-align: left;
3290
+ }
3291
+
3292
+ .issues-draft:hover,
3293
+ .issues-draft[aria-current="true"] {
3294
+ background: var(--secondary);
3295
+ }
3296
+
3297
+ .issues-draft__heading {
3298
+ color: var(--muted);
3299
+ overflow: hidden;
3300
+ text-overflow: ellipsis;
3301
+ white-space: nowrap;
3302
+ }
3303
+
3304
+ .issues-draft__blocked {
3305
+ color: var(--warning);
3306
+ font-size: 11px;
3307
+ }
3308
+
3309
+ .issues-drafts__empty {
3310
+ padding: 10px 12px;
3311
+ }
3312
+
3313
+ .issues-activity-panel {
3314
+ display: flex;
3315
+ flex-direction: column;
3316
+ }
3317
+
3318
+ .issues-agent {
3319
+ display: flex;
3320
+ flex-direction: column;
3321
+ gap: 8px;
3322
+ min-width: 0;
3323
+ padding: 10px;
3324
+ border: 1px solid var(--border);
3325
+ border-radius: 4px;
3326
+ background: var(--surface);
3327
+ overflow: hidden;
3328
+ }
3329
+
3330
+ .issues-agent[data-asked="true"] {
3331
+ border-color: var(--warning);
3332
+ }
3333
+
3334
+ .issues-agent__head {
3335
+ display: flex;
3336
+ align-items: center;
3337
+ justify-content: space-between;
3338
+ gap: 8px;
3339
+ min-height: 28px;
3340
+ }
3341
+
3342
+ .issues-agent__issue {
3343
+ color: var(--accent);
3344
+ font-weight: 600;
3345
+ text-decoration: none;
3346
+ }
3347
+
3348
+ .issues-agent__issue:hover {
3349
+ text-decoration: underline;
3350
+ }
3351
+
3352
+ .issues-agent__activity {
3353
+ display: flex;
3354
+ flex: 1 1 auto;
3355
+ flex-direction: column;
3356
+ gap: 4px;
3357
+ min-height: 80px;
3358
+ }
3359
+
3360
+ .issues-agent__activity-label {
3361
+ margin: 0;
3362
+ color: var(--muted-foreground);
3363
+ font-size: 10px;
3364
+ font-weight: 700;
3365
+ letter-spacing: 0.08em;
3366
+ line-height: 1.2;
3367
+ text-transform: uppercase;
3368
+ }
3369
+
3370
+ .issues-agent__activity .issues-activity {
3371
+ flex: 1;
3372
+ min-height: 56px;
3373
+ max-height: none;
3374
+ }
3375
+
3376
+ /* A waiting card keeps its log compact, so a long option list never inflates
3377
+ the neighbouring cards' activity area. */
3378
+ .issues-agent[data-asked="true"] .issues-agent__activity {
3379
+ flex: 0 0 auto;
3380
+ }
3381
+
3382
+ .issues-agent[data-asked="true"] .issues-agent__activity .issues-activity {
3383
+ flex: 0 0 64px;
3384
+ min-height: 64px;
3385
+ max-height: 64px;
3386
+ }
3387
+
3388
+ .issues-agent > .issues-question {
3389
+ border: 0;
3390
+ border-left: 2px solid var(--warning);
3391
+ border-radius: 0 4px 4px 0;
3392
+ background: var(--warning-surface);
3393
+ padding: 8px 10px;
3394
+ }
3395
+
3396
+ .issues-agents-page {
3397
+ min-height: 0;
3398
+ overflow: hidden;
3399
+ }
3400
+
3401
+ .issues-agent-grid {
3402
+ display: grid;
3403
+ grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));
3404
+ grid-auto-rows: max-content;
3405
+ align-content: start;
3406
+ align-items: stretch;
3407
+ gap: 12px;
3408
+ flex: 1;
3409
+ min-height: 0;
3410
+ overflow: auto;
3411
+ }
3412
+
3413
+ .issues-agent__title {
3414
+ display: -webkit-box;
3415
+ min-height: calc(2 * 1.45em);
3416
+ margin: 0;
3417
+ overflow: hidden;
3418
+ overflow-wrap: anywhere;
3419
+ font-size: 13px;
3420
+ font-weight: 600;
3421
+ line-height: 1.45;
3422
+ -webkit-box-orient: vertical;
3423
+ -webkit-line-clamp: 2;
3424
+ }
3425
+
3426
+ .issues-agent__meta {
3427
+ display: flex;
3428
+ flex-wrap: wrap;
3429
+ gap: 2px 6px;
3430
+ margin: 0;
3431
+ color: var(--muted-foreground);
3432
+ font-size: 11.5px;
3433
+ font-variant-numeric: tabular-nums;
3434
+ }
3435
+
3436
+ .issues-agents-empty {
3437
+ max-width: 560px;
3438
+ }
3439
+
3440
+ .issues-agents-empty__title {
3441
+ margin: 0;
3442
+ font-size: 13px;
3443
+ font-weight: 600;
3444
+ }
3445
+
3446
+ .issues-agent-summary {
3447
+ list-style: none;
3448
+ margin: 0;
3449
+ padding: 0;
3450
+ }
3451
+
3452
+ .issues-agent-summary > li + li {
3453
+ border-top: 1px solid var(--border-subtle);
3454
+ }
3455
+
3456
+ .issues-agent-summary__empty {
3457
+ color: var(--muted-foreground);
3458
+ padding: 12px 10px;
3459
+ }
3460
+
3461
+ .issues-agent-row {
3462
+ display: grid;
3463
+ grid-template-columns: 44px minmax(0, 1fr) auto;
3464
+ align-items: center;
3465
+ gap: 8px;
3466
+ width: 100%;
3467
+ border-left: 2px solid transparent;
3468
+ padding: 6px 10px 6px 8px;
3469
+ background: transparent;
3470
+ color: var(--foreground);
3471
+ font-size: 12px;
3472
+ text-align: left;
3473
+ }
3474
+
3475
+ .issues-agent-row:hover {
3476
+ background: var(--row-hover);
3477
+ }
3478
+
3479
+ .issues-agent-row[aria-current="true"],
3480
+ .issues-agent-row[aria-current="true"]:hover {
3481
+ background: var(--accent-surface);
3482
+ border-left-color: var(--accent);
3483
+ }
3484
+
3485
+ .issues-agent-row__open {
3486
+ display: grid;
3487
+ grid-column: 2 / 4;
3488
+ grid-template-columns: minmax(0, 1fr) auto;
3489
+ align-items: center;
3490
+ gap: 8px;
3491
+ min-width: 0;
3492
+ border: none;
3493
+ border-radius: 3px;
3494
+ padding: 0;
3495
+ background: transparent;
3496
+ color: inherit;
3497
+ font: inherit;
3498
+ text-align: left;
3499
+ cursor: pointer;
3500
+ }
3501
+
3502
+ .issues-agent-row__issue {
3503
+ color: var(--muted-foreground);
3504
+ font-variant-numeric: tabular-nums;
3505
+ line-height: 1.3;
3506
+ text-decoration: none;
3507
+ }
3508
+
3509
+ .issues-agent-row__issue:hover,
3510
+ .issues-agent-row__issue:focus-visible {
3511
+ color: var(--accent);
3512
+ text-decoration: underline;
3513
+ }
3514
+
3515
+ .issues-agent-row[aria-current="true"] .issues-agent-row__issue {
3516
+ color: var(--accent);
3517
+ }
3518
+
3519
+ .issues-agent-row__title {
3520
+ min-width: 0;
3521
+ overflow: hidden;
3522
+ text-overflow: ellipsis;
3523
+ white-space: nowrap;
3524
+ line-height: 1.3;
3525
+ }
3526
+
3527
+ .issues-agent-row__meta {
3528
+ display: inline-flex;
3529
+ align-items: center;
3530
+ gap: 6px;
3531
+ }
3532
+
3533
+ .issues-agent-row__elapsed {
3534
+ color: var(--muted-foreground);
3535
+ font-size: 11.5px;
3536
+ font-variant-numeric: tabular-nums;
3537
+ line-height: 1.3;
3538
+ min-width: 40px;
3539
+ text-align: right;
3540
+ }
3541
+
3542
+ .issues-agent-row__close {
3543
+ align-items: center;
3544
+ background: transparent;
3545
+ border: 1px solid var(--border-subtle);
3546
+ border-radius: 4px;
3547
+ color: var(--muted-foreground);
3548
+ cursor: pointer;
3549
+ display: inline-flex;
3550
+ flex: 0 0 auto;
3551
+ font-family: var(--font-sans);
3552
+ font-size: 11px;
3553
+ font-weight: 500;
3554
+ height: 24px;
3555
+ padding: 0 8px;
3556
+ white-space: nowrap;
3557
+ }
3558
+
3559
+ .issues-agent-summary__item:hover .issues-agent-row__close {
3560
+ border-color: var(--border);
3561
+ color: var(--foreground);
3562
+ }
3563
+
3564
+ .issues-agent-row__close:hover:not(:disabled),
3565
+ .issues-agent-row__close:focus-visible {
3566
+ background: var(--error-surface);
3567
+ border-color: var(--error);
3568
+ color: var(--error);
3569
+ }
3570
+
3571
+ .issues-agent-row__close:disabled {
3572
+ cursor: not-allowed;
3573
+ opacity: 0.45;
3574
+ }
3575
+
3576
+ .issues-agent-output > .panel__body {
3577
+ display: flex;
3578
+ flex: 1;
3579
+ flex-direction: column;
3580
+ min-height: 0;
3581
+ }
3582
+
3583
+ .issues-agent-output .issues-activity {
3584
+ flex: 1;
3585
+ min-height: 120px;
3586
+ }
3587
+
3588
+ .issues-agent-summary > .issues-agent-summary__item {
3589
+ display: flex;
3590
+ align-items: center;
3591
+ gap: 8px;
3592
+ padding-right: 8px;
3593
+ }
3594
+
3595
+ .issues-agent-summary__item > .issues-agent-row {
3596
+ flex: 1;
3597
+ min-width: 0;
3598
+ }
3599
+
3600
+ .issues-agent-focus {
3601
+ min-height: 0;
3602
+ overflow: hidden;
3603
+ }
3604
+
3605
+ .issues-agent-focus > .panel {
3606
+ flex: 1;
3607
+ min-height: 0;
3608
+ }
3609
+
3610
+ .issues-agent-focus > .panel > .panel__body {
3611
+ display: flex;
3612
+ flex: 1;
3613
+ flex-direction: column;
3614
+ min-height: 0;
3615
+ }
3616
+
3617
+ .issues-agent-focus .issues-activity {
3618
+ flex: 1;
3619
+ min-height: 200px;
3620
+ }
3621
+
3622
+ .issues-run-identity {
3623
+ align-items: center;
3624
+ display: flex;
3625
+ gap: 8px;
3626
+ justify-content: flex-end;
3627
+ min-width: 0;
3628
+ }
3629
+
3630
+ .issues-run-identity__label {
3631
+ color: var(--muted-foreground);
3632
+ font-size: 10px;
3633
+ font-weight: 700;
3634
+ letter-spacing: 0.08em;
3635
+ line-height: 1.2;
3636
+ text-transform: uppercase;
3637
+ }
3638
+
3639
+ .issues-run-identity__id {
3640
+ max-width: 220px;
3641
+ min-width: 0;
3642
+ overflow: hidden;
3643
+ text-overflow: ellipsis;
3644
+ white-space: nowrap;
3645
+ }
3646
+
3647
+ .issues-run-identity__started {
3648
+ color: var(--muted-foreground);
3649
+ font-size: 11px;
3650
+ white-space: nowrap;
3651
+ }
3652
+
3653
+ .issues-draft-detail {
3654
+ min-height: 0;
3655
+ overflow: hidden;
3656
+ }
3657
+
3658
+ .issues-draft-detail__header {
3659
+ align-items: center;
3660
+ border-bottom: 1px solid var(--border);
3661
+ display: flex;
3662
+ flex: 0 0 44px;
3663
+ gap: 12px;
3664
+ height: 44px;
3665
+ justify-content: space-between;
3666
+ padding: 0 10px;
3667
+ }
3668
+
3669
+ .issues-draft-detail__identity {
3670
+ display: flex;
3671
+ flex-direction: column;
3672
+ gap: 2px;
3673
+ min-width: 0;
3674
+ }
3675
+
3676
+ .issues-draft-detail__path {
3677
+ color: var(--muted-foreground);
3678
+ font-size: 11px;
3679
+ line-height: 1.3;
3680
+ overflow: hidden;
3681
+ text-overflow: ellipsis;
3682
+ white-space: nowrap;
3683
+ }
3684
+
3685
+ .issues-draft-detail__actions {
3686
+ align-items: center;
3687
+ display: flex;
3688
+ flex: 0 0 auto;
3689
+ gap: 6px;
3690
+ }
3691
+
3692
+ .issues-draft-detail__stop {
3693
+ background: transparent;
3694
+ border-color: var(--border-subtle);
3695
+ color: var(--muted-foreground);
3696
+ font-size: 11px;
3697
+ height: 24px;
3698
+ padding: 0 8px;
3699
+ }
3700
+
3701
+ .issues-draft-detail__stop:hover:not(:disabled),
3702
+ .issues-draft-detail__stop:focus-visible {
3703
+ background: var(--error-surface);
3704
+ border-color: var(--error);
3705
+ color: var(--error);
3706
+ }
3707
+
3708
+ .issues-draft-detail__body {
3709
+ display: flex;
3710
+ flex: 1;
3711
+ flex-direction: column;
3712
+ gap: 16px;
3713
+ min-height: 0;
3714
+ overflow: auto;
3715
+ padding: 12px;
3716
+ }
3717
+
3718
+ .issues-draft-detail__section {
3719
+ display: flex;
3720
+ flex: 0 0 auto;
3721
+ flex-direction: column;
3722
+ gap: 8px;
3723
+ min-width: 0;
3724
+ }
3725
+
3726
+ .issues-draft-detail__section + .issues-draft-detail__section {
3727
+ border-top: 1px solid var(--border-subtle);
3728
+ padding-top: 16px;
3729
+ }
3730
+
3731
+ .issues-draft-detail__section--activity {
3732
+ flex: 1 1 220px;
3733
+ min-height: 180px;
3734
+ }
3735
+
3736
+ .issues-draft-detail__section--activity .issues-activity {
3737
+ flex: 1;
3738
+ min-height: 160px;
3739
+ }
3740
+
3741
+ .issues-draft-detail__label {
3742
+ color: var(--muted-foreground);
3743
+ font-size: 10px;
3744
+ font-weight: 700;
3745
+ letter-spacing: 0.08em;
3746
+ line-height: 1.2;
3747
+ margin: 0;
3748
+ text-transform: uppercase;
3749
+ }
3750
+
3751
+ .issues-draft-detail__label--warning {
3752
+ color: var(--warning);
3753
+ }
3754
+
3755
+ .issues-draft-detail__question {
3756
+ background: var(--warning-surface);
3757
+ border: 1px solid var(--warning);
3758
+ border-radius: 4px;
3759
+ display: flex;
3760
+ flex: 0 0 auto;
3761
+ flex-direction: column;
3762
+ gap: 8px;
3763
+ padding: 10px 12px;
3764
+ }
3765
+
3766
+ .issues-draft-detail__question .issues-question {
3767
+ background: transparent;
3768
+ border-top: 0;
3769
+ padding: 0;
3770
+ }
3771
+
3772
+ .issues-draft-detail__question .choice {
3773
+ background: var(--surface);
3774
+ }
3775
+
3776
+ .issues-draft-detail__prose {
3777
+ color: var(--foreground);
3778
+ font-size: 12px;
3779
+ line-height: 1.5;
3780
+ margin: 0;
3781
+ overflow-wrap: anywhere;
3782
+ white-space: pre-wrap;
3783
+ }
3784
+
3785
+ .issues-draft-detail__empty {
3786
+ color: var(--muted-foreground);
3787
+ font-size: 12px;
3788
+ margin: 0;
3789
+ }
3790
+
3791
+ .status-issues {
3792
+ border: 1px solid transparent;
3793
+ max-width: 260px;
3794
+ }
3795
+
3796
+ .status-issues__dot {
3797
+ background: var(--border-strong);
3798
+ border-radius: 999px;
3799
+ flex: 0 0 auto;
3800
+ height: 6px;
3801
+ width: 6px;
3802
+ }
3803
+
3804
+ .status-issues[data-tone="accent"] .status-issues__dot {
3805
+ background: var(--accent);
3806
+ }
3807
+
3808
+ .status-issues[data-tone="error"] .status-issues__dot {
3809
+ background: var(--error);
3810
+ }
3811
+
3812
+ .status-issues__label {
3813
+ overflow: hidden;
3814
+ text-overflow: ellipsis;
3815
+ }
3816
+
3817
+ /* Auto Scout */
3818
+ .issues-scout {
3819
+ display: flex;
3820
+ flex-direction: column;
3821
+ gap: 12px;
3822
+ height: 100%;
3823
+ min-height: 0;
3824
+ overflow: hidden;
3825
+ padding: 16px;
3826
+ }
3827
+
3828
+ .issues-scout__alerts {
3829
+ display: flex;
3830
+ flex: 0 0 auto;
3831
+ flex-direction: column;
3832
+ gap: 6px;
3833
+ }
3834
+
3835
+ .issues-scout__body {
3836
+ display: grid;
3837
+ flex: 1;
3838
+ gap: 12px;
3839
+ grid-template-columns: minmax(300px, 360px) minmax(0, 1fr);
3840
+ min-height: 0;
3841
+ }
3842
+
3843
+ .issues-scout__side {
3844
+ display: flex;
3845
+ flex-direction: column;
3846
+ gap: 12px;
3847
+ min-height: 0;
3848
+ overflow: auto;
3849
+ }
3850
+
3851
+ .issues-scout__side > .panel {
3852
+ flex: 0 0 auto;
3853
+ }
3854
+
3855
+ .issues-scout__main {
3856
+ display: flex;
3857
+ flex-direction: column;
3858
+ gap: 12px;
3859
+ min-height: 0;
3860
+ min-width: 0;
3861
+ }
3862
+
3863
+ .issues-scout__main > .panel:first-child {
3864
+ flex: 1 1 auto;
3865
+ min-height: 160px;
3866
+ }
3867
+
3868
+ .issues-scout__main > .issues-activity-panel {
3869
+ flex: 0 0 210px;
3870
+ min-height: 150px;
3871
+ }
3872
+
3873
+ .scout-sync-at {
3874
+ font-size: 11px;
3875
+ }
3876
+
3877
+ .scout-limits {
3878
+ display: flex;
3879
+ flex-direction: column;
3880
+ gap: 8px;
3881
+ }
3882
+
3883
+ .scout-limits__field {
3884
+ color: var(--muted);
3885
+ display: flex;
3886
+ flex-direction: column;
3887
+ font-size: 10.5px;
3888
+ gap: 4px;
3889
+ letter-spacing: 0.04em;
3890
+ text-transform: uppercase;
3891
+ }
3892
+
3893
+ .scout-limits__actions {
3894
+ display: flex;
3895
+ justify-content: flex-end;
3896
+ }
3897
+
3898
+ .scout-limits__hint {
3899
+ font-size: 11px;
3900
+ line-height: 1.45;
3901
+ margin: 0;
3902
+ }
3903
+
3904
+ @media (max-width: 1100px) {
3905
+ .issues-scout {
3906
+ overflow: auto;
3907
+ }
3908
+
3909
+ .issues-scout__body {
3910
+ grid-template-columns: 1fr;
3911
+ grid-template-rows: max-content max-content;
3912
+ }
3913
+
3914
+ .issues-scout__side {
3915
+ overflow: visible;
3916
+ }
3917
+
3918
+ .issues-scout__main > .panel:first-child {
3919
+ flex: 0 1 auto;
3920
+ max-height: 320px;
3921
+ }
3922
+ }