projectkeeper 0.0.0-stage → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (276) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/LICENSE +21 -0
  3. package/README.md +283 -2
  4. package/README.zh-CN.md +285 -0
  5. package/THIRD_PARTY_NOTICES.md +53 -0
  6. package/bin/pk.mjs +6 -0
  7. package/bin/postinstall.mjs +5 -0
  8. package/bin/strip-types.mjs +28 -0
  9. package/package.json +68 -4
  10. package/patches/README.md +111 -0
  11. package/patches/pi-ai-0.85.0.ts +122 -0
  12. package/patches/pi-ai-0.87.1.ts +122 -0
  13. package/scripts/apply-pi-streaming-patch.ts +86 -0
  14. package/skills/clerk/coverage/SKILL.md +35 -0
  15. package/skills/clerk/cross-check/SKILL.md +118 -0
  16. package/skills/clerk/deepen-dispatch/SKILL.md +69 -0
  17. package/skills/clerk/lane-follow-up/SKILL.md +94 -0
  18. package/skills/clerk/lane-plan/SKILL.md +107 -0
  19. package/skills/clerk/lane-slot/SKILL.md +113 -0
  20. package/skills/clerk/lane-topic/SKILL.md +116 -0
  21. package/skills/clerk/orientation/SKILL.md +160 -0
  22. package/skills/clerk/reconcile/SKILL.md +77 -0
  23. package/skills/clerk/skeleton-dispatch/SKILL.md +43 -0
  24. package/skills/clerk/spot-check/SKILL.md +52 -0
  25. package/skills/clerk/synthesis/SKILL.md +65 -0
  26. package/skills/table-follow-up/SKILL.md +42 -0
  27. package/src/cli.ts +319 -0
  28. package/src/codemap/README.md +13 -0
  29. package/src/codemap/engines.ts +102 -0
  30. package/src/codemap/facts.ts +504 -0
  31. package/src/context/agent-entry.ts +232 -0
  32. package/src/context/ask.ts +97 -0
  33. package/src/context/assemble.ts +1058 -0
  34. package/src/context/code-source.ts +103 -0
  35. package/src/context/k-briefs.ts +114 -0
  36. package/src/context/lineage.ts +100 -0
  37. package/src/context/object-brief.ts +300 -0
  38. package/src/context/owner-words.ts +191 -0
  39. package/src/context/pack-fixture.ts +342 -0
  40. package/src/context/project-rules.ts +160 -0
  41. package/src/intake/intake.ts +392 -0
  42. package/src/intake/material-rules.ts +166 -0
  43. package/src/intake/removal.ts +316 -0
  44. package/src/intake/skipped.ts +72 -0
  45. package/src/keeper/adjustment.ts +565 -0
  46. package/src/keeper/bounds/boundary.ts +509 -0
  47. package/src/keeper/bounds/command.ts +1665 -0
  48. package/src/keeper/bounds/paths.ts +164 -0
  49. package/src/keeper/bounds/reads.ts +718 -0
  50. package/src/keeper/bounds/shell-write-guard.ts +521 -0
  51. package/src/keeper/capabilities.ts +136 -0
  52. package/src/keeper/clerk-steps.ts +151 -0
  53. package/src/keeper/clerk-tools.ts +1424 -0
  54. package/src/keeper/conversation.ts +253 -0
  55. package/src/keeper/evidence.ts +662 -0
  56. package/src/keeper/fake-provider.ts +132 -0
  57. package/src/keeper/held.ts +15 -0
  58. package/src/keeper/history-tools.ts +163 -0
  59. package/src/keeper/jobs/answering.ts +53 -0
  60. package/src/keeper/key-check.ts +105 -0
  61. package/src/keeper/ledger-tools.ts +295 -0
  62. package/src/keeper/link-check.ts +185 -0
  63. package/src/keeper/merge.ts +260 -0
  64. package/src/keeper/note-origin.ts +56 -0
  65. package/src/keeper/numbers-check.ts +102 -0
  66. package/src/keeper/open-in-pi.ts +57 -0
  67. package/src/keeper/organize/absence.ts +266 -0
  68. package/src/keeper/organize/carried-on.ts +214 -0
  69. package/src/keeper/organize/clerk-coverage.ts +293 -0
  70. package/src/keeper/organize/clerk-prompts.ts +132 -0
  71. package/src/keeper/organize/clerk.ts +1395 -0
  72. package/src/keeper/organize/coverage-gate.ts +19 -0
  73. package/src/keeper/organize/coverage-tools.ts +765 -0
  74. package/src/keeper/organize/entries.ts +153 -0
  75. package/src/keeper/organize/entry-gate.ts +289 -0
  76. package/src/keeper/organize/fill-tools.ts +718 -0
  77. package/src/keeper/organize/follow-up.ts +280 -0
  78. package/src/keeper/organize/generation-check.ts +504 -0
  79. package/src/keeper/organize/graph.ts +230 -0
  80. package/src/keeper/organize/lane-tools.ts +289 -0
  81. package/src/keeper/organize/looked-tools.ts +54 -0
  82. package/src/keeper/organize/materials.ts +243 -0
  83. package/src/keeper/organize/owner-lines.ts +493 -0
  84. package/src/keeper/organize/place-tools.ts +216 -0
  85. package/src/keeper/organize/placement-inference.ts +1045 -0
  86. package/src/keeper/organize/placement-time.ts +320 -0
  87. package/src/keeper/organize/placing.ts +821 -0
  88. package/src/keeper/organize/positioning.ts +33 -0
  89. package/src/keeper/organize/readiness.ts +47 -0
  90. package/src/keeper/organize/reading.ts +401 -0
  91. package/src/keeper/organize/round-blocks.ts +65 -0
  92. package/src/keeper/organize/round-news.ts +164 -0
  93. package/src/keeper/organize/round-open.ts +586 -0
  94. package/src/keeper/organize/schedule-state.ts +39 -0
  95. package/src/keeper/organize/schedule.ts +137 -0
  96. package/src/keeper/organize/service.ts +409 -0
  97. package/src/keeper/organize/skills.ts +116 -0
  98. package/src/keeper/organize/slots.ts +85 -0
  99. package/src/keeper/organize/stage-gate.ts +175 -0
  100. package/src/keeper/organize/stage-tools.ts +471 -0
  101. package/src/keeper/organize/standing-notes.ts +141 -0
  102. package/src/keeper/organize/table-follow-up.ts +330 -0
  103. package/src/keeper/organize/takeover-clerk.ts +832 -0
  104. package/src/keeper/organize/takeover-state.ts +103 -0
  105. package/src/keeper/organize/takeover.ts +216 -0
  106. package/src/keeper/organize/update-pending.ts +535 -0
  107. package/src/keeper/organize/workbench-placement.ts +92 -0
  108. package/src/keeper/own-keys.ts +114 -0
  109. package/src/keeper/owner-text.ts +165 -0
  110. package/src/keeper/project-folder.ts +334 -0
  111. package/src/keeper/prompts.ts +101 -0
  112. package/src/keeper/references.ts +177 -0
  113. package/src/keeper/relook/compose.ts +120 -0
  114. package/src/keeper/relook/prompts.ts +36 -0
  115. package/src/keeper/roles.ts +259 -0
  116. package/src/keeper/round-tools.ts +227 -0
  117. package/src/keeper/route.ts +148 -0
  118. package/src/keeper/rules.ts +97 -0
  119. package/src/keeper/runtime.ts +1858 -0
  120. package/src/keeper/scope-tools.ts +194 -0
  121. package/src/keeper/sendback-text.ts +83 -0
  122. package/src/keeper/step-timing.ts +207 -0
  123. package/src/keeper/testing/clerk-script.ts +212 -0
  124. package/src/keeper/testing/streaming-arguments.ts +57 -0
  125. package/src/keeper/tools.ts +2340 -0
  126. package/src/keeper/utterance-tools.ts +64 -0
  127. package/src/keeper/verbatim.ts +397 -0
  128. package/src/ledger/adapters.ts +186 -0
  129. package/src/ledger/arrangements.ts +257 -0
  130. package/src/ledger/blame.ts +58 -0
  131. package/src/ledger/code-engine-child.ts +69 -0
  132. package/src/ledger/code-engine.ts +548 -0
  133. package/src/ledger/code.ts +607 -0
  134. package/src/ledger/docs.ts +294 -0
  135. package/src/ledger/git-read.ts +321 -0
  136. package/src/ledger/index.ts +1850 -0
  137. package/src/ledger/item-range.ts +16 -0
  138. package/src/ledger/lines.ts +328 -0
  139. package/src/ledger/numbering.ts +269 -0
  140. package/src/ledger/ranges.ts +74 -0
  141. package/src/ledger/rebuild-worker.ts +15 -0
  142. package/src/ledger/rebuild.ts +387 -0
  143. package/src/ledger/repo-scan.ts +181 -0
  144. package/src/ledger/schema.ts +450 -0
  145. package/src/ledger/sessions.ts +134 -0
  146. package/src/ledger/text-scan.ts +466 -0
  147. package/src/ledger/time.ts +185 -0
  148. package/src/ledger/ts-symbols.ts +180 -0
  149. package/src/ledger/views.ts +377 -0
  150. package/src/mcp/server.ts +127 -0
  151. package/src/mcp/tools.ts +187 -0
  152. package/src/model/ids.ts +23 -0
  153. package/src/model/k-types.ts +912 -0
  154. package/src/model/time.ts +85 -0
  155. package/src/model/types.ts +1382 -0
  156. package/src/model/views-k.ts +707 -0
  157. package/src/model/vocab.ts +269 -0
  158. package/src/process/analysis.ts +79 -0
  159. package/src/process/breakpoint-candidates.ts +383 -0
  160. package/src/process/breakpoints.ts +746 -0
  161. package/src/process/claim-check.ts +295 -0
  162. package/src/process/delivery-links.ts +52 -0
  163. package/src/process/facts.ts +487 -0
  164. package/src/process/generations.ts +138 -0
  165. package/src/process/index.ts +243 -0
  166. package/src/process/integration.ts +128 -0
  167. package/src/process/placement.ts +107 -0
  168. package/src/process/plan.ts +276 -0
  169. package/src/process/sendbacks.ts +244 -0
  170. package/src/process/text.ts +185 -0
  171. package/src/process/units.ts +543 -0
  172. package/src/process/unnumbered.ts +431 -0
  173. package/src/process/work.ts +884 -0
  174. package/src/scope/candidates.ts +86 -0
  175. package/src/scope/decisions.ts +229 -0
  176. package/src/scope/discover.ts +741 -0
  177. package/src/scope/ignore.ts +126 -0
  178. package/src/scope/ignored-place.ts +93 -0
  179. package/src/scope/skip.ts +161 -0
  180. package/src/scope/toolchain.ts +180 -0
  181. package/src/scope/worktree.ts +187 -0
  182. package/src/server/api.ts +549 -0
  183. package/src/server/app.ts +595 -0
  184. package/src/server/drafts-api.ts +170 -0
  185. package/src/server/folders-api.ts +243 -0
  186. package/src/server/graph-view.ts +639 -0
  187. package/src/server/http.ts +224 -0
  188. package/src/server/k-agent-api.ts +56 -0
  189. package/src/server/k-rounds-d99.ts +91 -0
  190. package/src/server/k-views.ts +405 -0
  191. package/src/server/keeper-page.ts +446 -0
  192. package/src/server/keys-api.ts +239 -0
  193. package/src/server/project-folder-api.ts +104 -0
  194. package/src/server/vendor.ts +14 -0
  195. package/src/server/workbench-content.ts +561 -0
  196. package/src/sources/anchor.ts +129 -0
  197. package/src/sources/files.ts +267 -0
  198. package/src/sources/gitobs.ts +41 -0
  199. package/src/sources/history.ts +231 -0
  200. package/src/sources/scan-worker.ts +10 -0
  201. package/src/sources/sessions/locate.ts +292 -0
  202. package/src/sources/sessions/read.ts +346 -0
  203. package/src/sources/sessions/scope.ts +42 -0
  204. package/src/sources/sessions/utterances.ts +223 -0
  205. package/src/sources/watch.ts +215 -0
  206. package/src/store/json-file.ts +50 -0
  207. package/src/store/paths.ts +39 -0
  208. package/src/store/project-store.ts +295 -0
  209. package/src/store/versions.ts +172 -0
  210. package/src/store/workspace.ts +216 -0
  211. package/src/table/check.ts +333 -0
  212. package/src/table/follow-up-tools.ts +30 -0
  213. package/src/table/follow-up.ts +344 -0
  214. package/src/table/import.ts +610 -0
  215. package/src/table/project-home.ts +61 -0
  216. package/src/table/sessions.ts +168 -0
  217. package/src/table/takeover.ts +483 -0
  218. package/src/util/git-check.ts +29 -0
  219. package/src/util/git.ts +411 -0
  220. package/src/util/own-ts.ts +15 -0
  221. package/src/util/paths.ts +225 -0
  222. package/template/FILLING-IN.md +148 -0
  223. package/template/examples/papertrail.json +747 -0
  224. package/template/projectkeeper.schema.json +1001 -0
  225. package/ui/app.js +1135 -0
  226. package/ui/failures.js +82 -0
  227. package/ui/flyout.js +120 -0
  228. package/ui/folder-chooser.js +264 -0
  229. package/ui/glossary.js +156 -0
  230. package/ui/graph-fit.js +157 -0
  231. package/ui/graph-material.js +61 -0
  232. package/ui/graph-palette.js +109 -0
  233. package/ui/graph-tools.js +62 -0
  234. package/ui/graph.js +1712 -0
  235. package/ui/index.html +31 -0
  236. package/ui/k/code-view.js +230 -0
  237. package/ui/k/draft-view.js +93 -0
  238. package/ui/k/k-views.css +224 -0
  239. package/ui/k/round-tree.js +450 -0
  240. package/ui/k/scope-k.js +159 -0
  241. package/ui/k-data.js +118 -0
  242. package/ui/k-fold.js +106 -0
  243. package/ui/k-process.css +302 -0
  244. package/ui/k-process.js +934 -0
  245. package/ui/keeper-activity.js +175 -0
  246. package/ui/keeper-view.js +801 -0
  247. package/ui/keeper.css +101 -0
  248. package/ui/key-order.js +62 -0
  249. package/ui/list-fold.js +67 -0
  250. package/ui/markdown.d.ts +21 -0
  251. package/ui/markdown.js +472 -0
  252. package/ui/placement.d.ts +92 -0
  253. package/ui/placement.js +445 -0
  254. package/ui/popover-place.d.ts +16 -0
  255. package/ui/popover-place.js +89 -0
  256. package/ui/popover.js +198 -0
  257. package/ui/project-folder.js +37 -0
  258. package/ui/shell-state.js +40 -0
  259. package/ui/strip-rows.js +171 -0
  260. package/ui/styles.css +492 -0
  261. package/ui/theme-pick.js +36 -0
  262. package/ui/theme.js +74 -0
  263. package/ui/themes/LICENSE.md +13 -0
  264. package/ui/themes/README.md +44 -0
  265. package/ui/themes/TOKENS.md +291 -0
  266. package/ui/themes/a1/board.css +1557 -0
  267. package/ui/themes/a1/pk.css +392 -0
  268. package/ui/themes/b1/board.css +1163 -0
  269. package/ui/themes/b1/pk.css +218 -0
  270. package/ui/themes/d2/board.css +518 -0
  271. package/ui/themes/d2/pk.css +243 -0
  272. package/ui/themes/guard.css +73 -0
  273. package/ui/themes/i1/board.css +776 -0
  274. package/ui/themes/i1/pk.css +223 -0
  275. package/ui/themes/manifest.json +13 -0
  276. package/ui/views.js +2796 -0
@@ -0,0 +1,218 @@
1
+ /* ───────────────────────────────────────────────────────────────────
2
+ * b1 · Peacock & Brass — ProjectKeeper's layer (Spec §6.16; CKC-09 AC-41; the UI line's V3)
3
+ *
4
+ * board.css beside this file is the owner's, frozen: not a byte of it changes. This file is loaded after it and gives
5
+ * every `--pk-*` token of ui/styles.css (the contract in ../TOKENS.md) a value the board already has — its tokens where
6
+ * they exist, its own literals where they do not — and then the parts the board never had (a segmented control, a
7
+ * conversation, a graph). No colour, shadow or radius that is not in board.css. The whole file can be taken away and
8
+ * the factory look is back.
9
+ *
10
+ * The master (WorkflowKeeper's D87; the theme's own BOARD_CHANGES.md): everything is made after b1's card (.box /
11
+ * .cvNode / .ibxRow) — a solid --card face pressed into its slot: --line-2 frame, --raise-chunk's top highlight, 3px
12
+ * hard lip and deep drop, no lift on hover, only a brass edge. The popover, the docked Keeper, the dialog, a note
13
+ * card, the open row of the bottom strip and the tooltip are that card. Section heads and strip column heads are its
14
+ * bin header (.rootHead: card face, brass top edge drawn as an inset so no rectangle moves). Segmented controls are
15
+ * the tray tiles seated in a groove (.slotRow: --well + --sink); the tile that is on is the dispatch tab's solid
16
+ * brass. Brass stays on edges and on what can be pressed (buttons, links, `Details`, the selected state, the theme
17
+ * picker) — never on a large face. The four layers: ground (--bg) < band (--bg-1) < section (--bg-2) < card (--card),
18
+ * with the well (--well) sunk below the ground.
19
+ * ─────────────────────────────────────────────────────────────────── */
20
+
21
+ :root {
22
+ /* ── Surfaces and lines: the green-black ladder, groove < page < band < block < card < lit card ── */
23
+ --pk-ground: var(--bg);
24
+ --pk-rail: var(--bg-1);
25
+ --pk-surface: var(--card);
26
+ --pk-raised: var(--card-2);
27
+ --pk-line: var(--line-2);
28
+ --pk-line-soft: var(--line);
29
+ --pk-line-strong: var(--line-3);
30
+ --pk-scrim: rgba(0,0,0,.55);
31
+
32
+ /* ── Text, four steps: the header's near-white, body, secondary, the sage of the master tray's head ── */
33
+ --pk-text-strong: #edf2ea;
34
+ --pk-text: var(--fg);
35
+ --pk-text-muted: var(--fg-2);
36
+ --pk-text-faint: #7d9e8a; /* --fg-3 reads only 3.8 on the card; the board's sage reads 4.7 */
37
+
38
+ /* ── The signal: brass, only on edges and on what can be pressed (the theme's own rule) ── */
39
+ --pk-accent: var(--brass);
40
+ --pk-accent-bg: var(--review-bg);
41
+ --pk-accent-hi: var(--click-h);
42
+ --pk-on-accent: var(--bg);
43
+ --pk-accent-soft: var(--paused-bg);
44
+ --pk-flash: var(--review-bd);
45
+ --pk-star: var(--paused);
46
+
47
+ /* ── The other families; "what can be pressed" (links, .text-btn) is brass in this theme, not blue ── */
48
+ --pk-green: var(--good); --pk-green-bg: var(--good-bg); --pk-green-ln: var(--good-bd);
49
+ --pk-blue: var(--click); --pk-blue-bg: var(--paused-bg);
50
+ --pk-red: var(--alert); --pk-red-bg: var(--alert-bg); --pk-red-ln: var(--alert-bd);
51
+ --pk-purple: var(--promoted); --pk-purple-bg: #2e1a3a;
52
+
53
+ /* ── Selection: the segment that is on is the dispatch tab's solid brass with the page's dark text ── */
54
+ --pk-sel-bg: var(--card-2);
55
+ --pk-control-on: var(--brass) linear-gradient(180deg, var(--brass), var(--brass-2));
56
+ --pk-control-on-text: var(--bg);
57
+ --pk-control-on-shadow: inset 0 1px 0 rgba(255,255,255,.10), 0 2px 0 rgba(0,0,0,.5);
58
+
59
+ /* ── Fonts: the board's own ── */
60
+ --pk-font-body: 13px/1.5 var(--font);
61
+ --pk-font-ui: var(--font);
62
+ --pk-font-mono: var(--mono);
63
+ --pk-font-display: var(--font);
64
+
65
+ /* ── Radii: solid parts, tight; the panel takes the module's 6px ── */
66
+ --pk-radius: 5px;
67
+ --pk-radius-sm: 4px;
68
+ --pk-radius-xs: 3px;
69
+ --pk-radius-panel: 6px;
70
+ --pk-radius-pill: 999px;
71
+
72
+ /* ── Shadows: the board's three depths — raised block, small solid part, the chunky card ── */
73
+ --pk-shadow-float: var(--raise);
74
+ --pk-shadow-window: var(--raise-chunk), 0 10px 28px rgba(0,0,0,.55);
75
+ --pk-shadow-raised: var(--raise-sm);
76
+
77
+ /* ── The card (the master): the solid part pressed into its slot — flat face, hard lip, deep drop ── */
78
+ --pk-card-bg: var(--card);
79
+ --pk-card-texture: none;
80
+ --pk-card-border: var(--line-2);
81
+ --pk-card-shadow: var(--raise-chunk);
82
+ --pk-card-radius: 5px;
83
+ --pk-card-text: var(--fg);
84
+ --pk-card-line: var(--line);
85
+ --pk-card-hover-border: var(--brass-2);
86
+ --pk-card-foot-bg: var(--well);
87
+ --pk-card-head-bg: var(--card-2);
88
+
89
+ /* ── A section (a module block), and its head (the bin header: card face, brass top edge as an inset) ── */
90
+ --pk-section-bg: var(--bg-2);
91
+ --pk-section-border: var(--line);
92
+ --pk-section-radius: 6px;
93
+ --pk-section-shadow: var(--raise);
94
+ --pk-head-bg: var(--card);
95
+ --pk-head-texture: none;
96
+ --pk-head-border: var(--line);
97
+ --pk-head-shadow: inset 0 2px 0 var(--brass-2);
98
+ --pk-head-text: #edf2ea;
99
+
100
+ /* ── Controls: the theme's button — a raised tile of card-2 over bg-2 on a card-2 face, brass edge when pointed at ── */
101
+ --pk-control-bg: var(--card-2) linear-gradient(180deg, var(--card-2), var(--bg-2));
102
+ --pk-control-texture: none;
103
+ --pk-control-border: var(--line-2);
104
+ --pk-control-shadow: var(--raise-sm);
105
+ --pk-control-radius: 4px;
106
+ --pk-control-hover-bg: var(--card-2);
107
+ --pk-control-hover-border: var(--brass);
108
+
109
+ /* ── The sunken well: inputs, the composer, quoted sources, code ── */
110
+ --pk-well-bg: var(--well);
111
+ --pk-well-border: var(--line);
112
+ --pk-well-shadow: var(--sink);
113
+ --pk-code-bg: #252f28;
114
+
115
+ /* ── The conversation: the owner's words on the brass-tinted face (WorkflowKeeper's D87) ── */
116
+ --pk-msg-user-bg: var(--review-bg);
117
+ --pk-msg-user-border: var(--review-bd);
118
+
119
+ /* ── The graph (Spec §6.3; D53): b1's own four, checked — Plan / Work item 40.0 normal, 36.0 protan, 29.2 deutan;
120
+ --flow reads only 4.11 on the card, so it is ever an edge or a band, never node text ── */
121
+ --pk-graph-bg: var(--bg);
122
+ --pk-graph-intent: var(--flow);
123
+ --pk-graph-plan: var(--promoted);
124
+ --pk-graph-work: var(--good);
125
+ --pk-graph-reality: var(--paused);
126
+ --pk-graph-node-bg: var(--card);
127
+ --pk-graph-node-text: var(--fg); /* node words in the body colour; the kinds' colours stay on edges and bands */
128
+ --pk-graph-node-kind: var(--fg-2);
129
+ --pk-graph-node-muted: var(--fg-2);
130
+ --pk-graph-node-faint: #7d9e8a;
131
+ /* the card's material, lent to the objects: the parts of --raise-chunk — top highlight, bottom shade, the 3px
132
+ hard lip, the deep drop (flat enamel: no brush) */
133
+ --pk-graph-node-chamfer: rgba(255,255,255,.20);
134
+ --pk-graph-node-shade: rgba(0,0,0,.58);
135
+ --pk-graph-node-lip: #080c0a;
136
+ --pk-graph-node-shadow: rgba(0,0,0,.42);
137
+ --pk-graph-edge: var(--line-3);
138
+ --pk-graph-edge-other: var(--fg-3);
139
+ --pk-graph-edge-related: var(--fg-2);
140
+ --pk-graph-edge-lit: var(--fg);
141
+ --pk-graph-edge-selected: var(--click-h);
142
+ --pk-graph-questioned: var(--paused);
143
+ --pk-graph-label-bg: var(--well);
144
+ --pk-graph-chip-bg: var(--well);
145
+ --pk-graph-chip-border: var(--line-2);
146
+ --pk-graph-selection: #edf2ea; /* the brightest the theme has — never one of the kinds */
147
+ --pk-graph-focus: var(--brass);
148
+ --pk-graph-diff-added: var(--good);
149
+ --pk-graph-diff-changed: var(--paused);
150
+ --pk-graph-diff-removed: var(--alert);
151
+ --pk-graph-replaced: var(--line-3);
152
+ --pk-graph-danger: var(--alert);
153
+ --pk-graph-group-bg: var(--card-2);
154
+ --pk-graph-group-border: var(--line-3);
155
+ --pk-graph-group-back: var(--card);
156
+ --pk-graph-group-back-border: var(--line);
157
+ --pk-graph-group-chip: var(--bg-2);
158
+ /* the corner marks stay loud: the star in the theme's gold, flag and ask in brass, the pending turn in --click */
159
+ --pk-graph-mark-star: var(--paused);
160
+ --pk-graph-mark-flag: var(--brass);
161
+ --pk-graph-mark-note: var(--fg);
162
+ --pk-graph-mark-ask: var(--brass);
163
+ --pk-graph-mark-pending: var(--click);
164
+ }
165
+
166
+ /* ── The ground: the board's body, restated from the tokens so this file is the one source ── */
167
+ body {
168
+ color: var(--pk-text);
169
+ font: var(--pk-font-body);
170
+ background: var(--pk-ground);
171
+ font-variant-numeric: tabular-nums;
172
+ -webkit-font-smoothing: antialiased;
173
+ }
174
+
175
+ /* ── Classes board.css and the workbench both use: the guard put the metrics back; the colours are set here ── */
176
+ .empty { color: var(--pk-text-muted); }
177
+ .empty h2 { color: var(--pk-text-strong); }
178
+
179
+ /* ── The chassis top plate: the top bar, as the board's page header — bg-2 block, brass top ridge and the dark
180
+ bottom seam drawn as shadows so no rectangle moves ── */
181
+ .topbar { background: var(--bg-2); border-bottom-color: #070c09; box-shadow: inset 0 2px 0 var(--brass-2), 0 4px 12px rgba(0,0,0,.35); }
182
+
183
+ /* ── Titles: the header's near-white; the enamel is flat, no text shadow ── */
184
+ .page-head h1, .dialog-head h2, .popover-title, .more-title, .keeper-head .title, .brand, .walk-title, .full-head h2 { color: var(--pk-text-strong); }
185
+ .crumb strong { color: var(--pk-text-strong); }
186
+
187
+ /* ── Brass on what can be pressed: button labels (the theme's own button), the theme picker; links and .text-btn
188
+ already read --pk-blue, which this theme sets to --click ── */
189
+ .btn { color: var(--click); }
190
+ .btn:hover:not(:disabled) { color: var(--click-h); }
191
+ .theme-pick select { color: var(--click); }
192
+
193
+ /* ── Segmented controls after the tray tiles: a groove (.slotRow: well + sink) holding raised tiles (.slot); the
194
+ tile that is on is the dispatch tab's solid brass (the --pk-control-on tokens). Only paint changes: the tiles
195
+ keep their size and the row its height — the tile edge is a 1px spread shadow, not a border. ── */
196
+ .segmented { background: var(--well); background-image: none; border-color: #090e0b; box-shadow: var(--sink); }
197
+ .segmented button { background: var(--card); color: var(--fg-2); box-shadow: var(--raise-sm), 0 0 0 1px var(--line); }
198
+ .segmented button:hover:not(:disabled) { color: var(--fg); }
199
+ .segmented button:disabled { color: var(--fg-4); }
200
+
201
+ /* ── The card's pocket at the foot of the popover (the board's .box:has(.attach) .attach: the well sunk in) ── */
202
+ .popover-foot { box-shadow: var(--sink); }
203
+
204
+ /* ── The rail: the active view carries the lane label's brass edge, drawn as an inset ── */
205
+ .nav-item.active { box-shadow: inset 2px 0 0 var(--brass); }
206
+
207
+ /* ── The bands: the top-light hairline every band of the board carries (.kpis / .dash / .legend) ── */
208
+ .graph-tools, .legend { box-shadow: inset 0 1px 0 rgba(255,255,255,.04); }
209
+
210
+ /* ── The toast: the board's own — card face in a brass frame ── */
211
+ #toast { border-color: var(--brass); }
212
+
213
+ /* ── The timeline's dots: metal at rest, brass when selected ── */
214
+ .tl-event:before { background: var(--line-3); }
215
+ .tl-event.sel:before { background: var(--brass); }
216
+
217
+ /* ── Checkboxes take the board's flow blue (the board's own toolbar rule) ── */
218
+ input[type="checkbox"] { accent-color: var(--flow); }