@unson/brainbase-mcp 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/README.md +1 -1
  2. package/contracts/foundation/graph-history.sql +634 -0
  3. package/contracts/judgment-dag/digest.json +2 -2
  4. package/contracts/judgment-value-proof/schema.json +43 -1
  5. package/dist/canonical-task-service.js +16 -5
  6. package/dist/cli.d.ts +2 -0
  7. package/dist/cli.js +107 -0
  8. package/dist/company-os-objectives.d.ts +11 -0
  9. package/dist/company-os-objectives.js +84 -47
  10. package/dist/foundation-authenticated-tools.d.ts +56 -0
  11. package/dist/foundation-authenticated-tools.js +347 -0
  12. package/dist/foundation-graph-http.d.ts +43 -0
  13. package/dist/foundation-graph-http.js +243 -0
  14. package/dist/foundation-graph-write.d.ts +90 -0
  15. package/dist/foundation-graph-write.js +447 -0
  16. package/dist/foundation-public-provider.d.ts +140 -0
  17. package/dist/foundation-public-provider.js +192 -0
  18. package/dist/graph-corrections.d.ts +157 -0
  19. package/dist/graph-corrections.js +620 -0
  20. package/dist/graph-foundation-reader.d.ts +60 -0
  21. package/dist/graph-foundation-reader.js +494 -0
  22. package/dist/graph-retrieval.d.ts +6 -1
  23. package/dist/graph-revision-reader.d.ts +80 -0
  24. package/dist/graph-revision-reader.js +246 -0
  25. package/dist/graph-web-http.d.ts +26 -0
  26. package/dist/graph-web-http.js +215 -0
  27. package/dist/graph-web.d.ts +364 -0
  28. package/dist/graph-web.js +639 -0
  29. package/dist/judgment-problem-snapshot.d.ts +30 -2
  30. package/dist/judgment-problem-snapshot.js +302 -6
  31. package/dist/judgment-value-proof-review.d.ts +166 -0
  32. package/dist/judgment-value-proof-review.js +437 -0
  33. package/dist/judgment-value-proof.d.ts +28 -1
  34. package/dist/judgment-value-proof.js +53 -8
  35. package/dist/knowledge-continuation.d.ts +127 -0
  36. package/dist/knowledge-continuation.js +446 -0
  37. package/dist/knowledge-lookup.d.ts +178 -0
  38. package/dist/knowledge-lookup.js +758 -0
  39. package/dist/local-web-fetch-bridge.d.ts +5 -0
  40. package/dist/local-web-fetch-bridge.js +37 -0
  41. package/dist/local-web-host.d.ts +109 -0
  42. package/dist/local-web-host.js +688 -0
  43. package/dist/local-web-security.d.ts +25 -0
  44. package/dist/local-web-security.js +95 -0
  45. package/dist/organization-graph.d.ts +15 -0
  46. package/dist/organization-graph.js +24 -4
  47. package/dist/personal-knowledge.d.ts +12 -0
  48. package/dist/personal-knowledge.js +29 -0
  49. package/dist/personal-memory-handover.d.ts +108 -0
  50. package/dist/personal-memory-handover.js +369 -0
  51. package/dist/philosophy-revision-reader.d.ts +85 -0
  52. package/dist/philosophy-revision-reader.js +241 -0
  53. package/dist/portable-graph.d.ts +24 -0
  54. package/dist/portable-graph.js +77 -0
  55. package/dist/server.d.ts +7 -2
  56. package/dist/server.js +9 -6
  57. package/dist/value-proof-review-http.d.ts +25 -0
  58. package/dist/value-proof-review-http.js +185 -0
  59. package/dist/world-model.d.ts +21 -3
  60. package/dist/world-model.js +94 -12
  61. package/package.json +94 -6
  62. package/ui/brainbase-tokens.css +56 -0
  63. package/ui/graph-own-share.js +367 -0
  64. package/ui/graph-projects-view.css +23 -0
  65. package/ui/graph-projects-view.js +730 -0
  66. package/ui/graph-registry-view.css +101 -0
  67. package/ui/graph-registry-view.js +804 -0
  68. package/ui/graph-view-shared.css +522 -0
  69. package/ui/graph-view-shared.js +1227 -0
  70. package/ui/judgment-view.css +119 -45
  71. package/ui/local-web-shell.css +396 -0
  72. package/ui/local-web-shell.js +378 -0
  73. package/ui/objective-editor-http-port.js +154 -0
  74. package/ui/objective-editor.css +180 -74
  75. package/ui/objective-editor.js +490 -43
  76. package/ui/outcome-knowledge.css +50 -14
  77. package/ui/outcome-knowledge.js +15 -1
  78. package/ui/value-proof-review.css +504 -0
  79. package/ui/value-proof-review.js +1104 -0
  80. package/ui/workspace-kit.css +485 -0
  81. package/ui/workspace-kit.js +229 -0
  82. package/ui/world-model-view.css +188 -0
  83. package/ui/world-model-view.js +486 -0
  84. package/ui/icons/mana/LICENSE.tabler.txt +0 -21
  85. package/ui/icons/mana/affiliate.svg +0 -20
  86. package/ui/icons/mana/brand-github.svg +0 -15
  87. package/ui/icons/mana/brand-google-drive.svg +0 -17
  88. package/ui/icons/mana/brand-slack.svg +0 -18
  89. package/ui/icons/mana/cpu.svg +0 -24
  90. package/ui/outcome-mana.css +0 -255
  91. package/ui/outcome-mana.js +0 -2325
@@ -1,25 +1,61 @@
1
+ /*
2
+ * Organization edition look (moved from brainbase-organization apps/web/public/styles.css,
3
+ * where it was loaded before this file). Kept first so the cascade is the same as in the
4
+ * organization edition. Colors read the shared tokens, with the organization values as fallbacks.
5
+ */
6
+ .knowledge-outcome { display: grid; gap: 20px; color: var(--bb-color-ink, #17221c); }
7
+ .knowledge-outcome-head { padding: 24px; border: 1px solid var(--bb-color-border, #dce5df); border-radius: 16px; background: linear-gradient(135deg, var(--bb-color-header-start, #f7faf8), var(--bb-color-header-end, #eef5f0)); }
8
+ .knowledge-outcome-head h2 { margin: 4px 0 8px; font-size: clamp(1.45rem, 3vw, 2rem); }
9
+ .knowledge-eyebrow { color: var(--bb-color-eyebrow, #47715a); font-size: .72rem; font-weight: 750; letter-spacing: .12em; text-transform: uppercase; }
10
+ .knowledge-outcome-nav,
11
+ .knowledge-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
12
+ .knowledge-tab,
13
+ .knowledge-button { min-height: 40px; border: 1px solid var(--bb-color-control-border, #cbd8d0); border-radius: 9px; background: var(--bb-color-panel, #fff); color: inherit; padding: 8px 12px; font: inherit; cursor: pointer; }
14
+ .knowledge-tab.active,
15
+ .knowledge-button-primary { border-color: var(--bb-color-action, #35684c); background: var(--bb-color-action, #35684c); color: var(--bb-color-action-text, #fff); }
16
+ .knowledge-outcome-body { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(260px, .8fr); gap: 18px; }
17
+ .knowledge-outcome-primary,
18
+ .knowledge-outcome-detail { min-width: 0; padding: 18px; border: 1px solid var(--bb-color-border, #dce5df); border-radius: 14px; background: var(--bb-color-panel, #fff); }
19
+ .knowledge-unknown-copy { color: var(--bb-color-muted, #66736b); }
20
+ .knowledge-filter-region form,
21
+ .knowledge-form { display: grid; gap: 12px; }
22
+ .knowledge-outcome input,
23
+ .knowledge-outcome select,
24
+ .knowledge-outcome textarea { box-sizing: border-box; width: 100%; border: 1px solid var(--bb-color-border-strong, #bdcbc2); border-radius: 8px; background: var(--bb-color-panel, #fff); padding: 9px 10px; font: inherit; }
25
+ .knowledge-outcome button:focus-visible,
26
+ .knowledge-outcome input:focus-visible { outline: 3px solid #9fc9ad; outline-offset: 2px; }
27
+ .knowledge-state,
28
+ .knowledge-warning-copy { padding: 11px 12px; border-radius: 9px; background: #fff7e8; color: #694d18; }
29
+ .knowledge-list { display: grid; gap: 8px; }
30
+ @media (max-width: 1340px) {
31
+ .knowledge-outcome-body { grid-template-columns: 1fr; }
32
+ .knowledge-outcome-head,
33
+ .knowledge-outcome-primary,
34
+ .knowledge-outcome-detail { padding: 14px; }
35
+ }
36
+
1
37
  /* Knowledge outcome workspace. The component owns its layout so the shared
2
38
  shell cannot turn an operational master/detail surface into stacked cards. */
3
39
  .knowledge-outcome {
4
- --knowledge-paper: var(--paper, #fbfbf8);
5
- --knowledge-canvas: var(--canvas, #f2f3ef);
6
- --knowledge-ink: var(--ink, #111412);
7
- --knowledge-muted: var(--muted, #656b67);
8
- --knowledge-quiet: var(--quiet, #929894);
9
- --knowledge-line: var(--line, #d9ddd8);
10
- --knowledge-line-strong: var(--line-dark, #bfc5c0);
11
- --knowledge-green: var(--green, #087d62);
12
- --knowledge-green-soft: var(--green-soft, #e5f1ec);
13
- --knowledge-amber: var(--amber, #c9870c);
14
- --knowledge-amber-soft: var(--amber-soft, #fff0c7);
15
- --knowledge-red: var(--red, #d92335);
16
- --knowledge-red-soft: var(--red-soft, #fde9eb);
40
+ --knowledge-paper: var(--bb-color-panel, var(--paper, #fbfbf8));
41
+ --knowledge-canvas: var(--bb-color-surface, var(--canvas, #f2f3ef));
42
+ --knowledge-ink: var(--bb-color-ink, var(--ink, #111412));
43
+ --knowledge-muted: var(--bb-color-muted, var(--muted, #656b67));
44
+ --knowledge-quiet: var(--bb-color-muted, var(--quiet, #929894));
45
+ --knowledge-line: var(--bb-color-border, var(--line, #d9ddd8));
46
+ --knowledge-line-strong: var(--bb-color-border-strong, var(--line-dark, #bfc5c0));
47
+ --knowledge-green: var(--bb-color-accent, var(--green, #087d62));
48
+ --knowledge-green-soft: var(--bb-color-accent-soft, var(--green-soft, #e5f1ec));
49
+ --knowledge-amber: var(--bb-color-warning, var(--amber, #c9870c));
50
+ --knowledge-amber-soft: var(--bb-color-warning-soft, var(--amber-soft, #fff0c7));
51
+ --knowledge-red: var(--bb-color-danger, var(--red, #d92335));
52
+ --knowledge-red-soft: var(--bb-color-danger-soft, var(--red-soft, #fde9eb));
17
53
  display: grid;
18
54
  gap: 0;
19
55
  min-width: 0;
20
56
  color: var(--knowledge-ink);
21
57
  background: transparent;
22
- font-family: Geist, "Noto Sans JP", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
58
+ font-family: var(--bb-font-sans, Geist, "Noto Sans JP", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif);
23
59
  line-height: 1.5;
24
60
  }
25
61
 
@@ -1043,10 +1043,24 @@ function defaultCandidateBody(values, context = {}) {
1043
1043
  };
1044
1044
  }
1045
1045
 
1046
+ /**
1047
+ * Creates the knowledge outcome workspace.
1048
+ *
1049
+ * @param {object} options
1050
+ * @param {(session: object|null, projectCode: string|null) => boolean} [options.canEditDestination]
1051
+ * Decides whether the current user may register this project's knowledge
1052
+ * document destination. It receives the resolved session value and the
1053
+ * project code; only a `true` result shows the registration form. Without
1054
+ * it, the form follows `canManageKnowledge(session)`. Revision,
1055
+ * supersession, and retirement always follow `canManageKnowledge`.
1056
+ */
1046
1057
  export function createKnowledgeOutcomeController(options = {}) {
1047
1058
  const { root, api, apiMutation, project, session, onStateChange, onCommitted, onRetired, resolveDecisionDomain, serializeDraftInput, serializeCandidate, serializeRevision, serializeRetire, serializePreview } = options;
1048
1059
  if (!root || typeof root.replaceChildren !== 'function') throw new Error('knowledge_root_unavailable');
1049
1060
  const code = projectCodeOf(project);
1061
+ const canEditDestination = () => (typeof options.canEditDestination === 'function'
1062
+ ? options.canEditDestination((typeof session === 'function' ? session() : session) ?? null, code ?? null) === true
1063
+ : canManageKnowledge(session));
1050
1064
  const projectValue = typeof project === 'function' ? project() : project;
1051
1065
  const ownerCandidates = [];
1052
1066
  for (const candidate of [projectValue?.owner, ...(projectValue?.members?.items ?? [])]) {
@@ -1154,7 +1168,7 @@ export function createKnowledgeOutcomeController(options = {}) {
1154
1168
  destination.append(destinationHeading);
1155
1169
  const destinationContent = makeElement('div', { className: 'knowledge-destination-content' });
1156
1170
  renderKnowledgeDestination(destinationContent, state.destination, {
1157
- canEdit: canManageKnowledge(session),
1171
+ canEdit: canEditDestination(),
1158
1172
  onReload: loadDestination,
1159
1173
  onSave: saveDestination,
1160
1174
  });
@@ -0,0 +1,504 @@
1
+ /*
2
+ * 判断の見返し, on the organization edition's screen pattern (workspace-kit.css):
3
+ * page head, notices, filters, metrics and the 委任の地図 ledger in the
4
+ * workspace, the selected row or judgment in the right rail (or after the
5
+ * workspace when the host has no rail). Layout rules read the shared tokens
6
+ * (brainbase-tokens.css) directly. The part variables below keep the feedback
7
+ * form's previous palette for hosts that do not load the tokens.
8
+ */
9
+ .vpr,
10
+ .bb-vpr-detail {
11
+ --vpr-ink: var(--bb-color-ink, #172033);
12
+ --vpr-muted: var(--bb-color-muted, #667085);
13
+ --vpr-border: var(--bb-color-border, #d8dee9);
14
+ --vpr-border-strong: var(--bb-color-border-strong, #d8dee9);
15
+ --vpr-control-border: var(--bb-color-control-border, #d8dee9);
16
+ --vpr-panel: var(--bb-color-panel, #ffffff);
17
+ --vpr-surface: var(--bb-color-surface, #f5f7fb);
18
+ --vpr-accent: var(--bb-color-accent, #3157d5);
19
+ --vpr-accent-soft: var(--bb-color-accent-soft, #eef2fd);
20
+ --vpr-accent-strong: var(--bb-color-accent-strong, #3157d5);
21
+ --vpr-action: var(--bb-color-action, #3157d5);
22
+ --vpr-focus: var(--bb-color-focus, #3157d5);
23
+ --vpr-success-soft: var(--bb-color-success-soft, #ecfdf3);
24
+ --vpr-warning: var(--bb-color-warning, #9a6700);
25
+ --vpr-warning-soft: var(--bb-color-warning-soft, #fff8e6);
26
+ --vpr-danger: var(--bb-color-danger, #b42318);
27
+ --vpr-danger-soft: var(--bb-color-danger-soft, #fef3f2);
28
+ box-sizing: border-box;
29
+ display: block;
30
+ min-width: 0;
31
+ color: var(--vpr-ink);
32
+ font-family: var(--bb-font-sans, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif);
33
+ font-size: 14px;
34
+ line-height: 1.5;
35
+ }
36
+
37
+ .vpr *,
38
+ .vpr *::before,
39
+ .vpr *::after {
40
+ box-sizing: border-box;
41
+ }
42
+
43
+ /* The standalone review host (value-proof:serve) has no shell around the part. */
44
+ body:has(#brainbase-value-proof-review) {
45
+ margin: 0;
46
+ background: var(--bb-color-paper, #ffffff);
47
+ }
48
+
49
+ #brainbase-value-proof-review {
50
+ display: block;
51
+ max-width: 1440px;
52
+ margin: 0 auto;
53
+ padding: 40px 48px 72px;
54
+ }
55
+
56
+ /*
57
+ * The local shell resets `.bb-shell button { font: inherit }`, which outranks the
58
+ * kit's button and row type; keep the kit's sizes and weight on this screen.
59
+ */
60
+ .vpr .bb-ws-button,
61
+ .bb-vpr-detail .bb-ws-button {
62
+ font-size: 13px;
63
+ font-weight: 680;
64
+ }
65
+
66
+ .vpr .bb-ws-button.is-quiet,
67
+ .bb-vpr-detail .bb-ws-button.is-quiet {
68
+ font-size: 12px;
69
+ }
70
+
71
+ .vpr button.bb-ws-ledger-row {
72
+ font-size: 12px;
73
+ }
74
+
75
+ /* Notices: one body element beside the kit's label. */
76
+ .bb-vpr-notice-body {
77
+ display: grid;
78
+ gap: var(--bb-space-2);
79
+ min-width: 0;
80
+ }
81
+
82
+ .bb-vpr-notice-body p {
83
+ margin: 0;
84
+ overflow-wrap: anywhere;
85
+ }
86
+
87
+ .bb-vpr-notice-body .bb-ws-button {
88
+ justify-self: start;
89
+ }
90
+
91
+ .bb-vpr-notice-title {
92
+ color: var(--bb-color-ink);
93
+ font-weight: 700;
94
+ }
95
+
96
+ .bb-vpr-rejected summary {
97
+ cursor: pointer;
98
+ }
99
+
100
+ .bb-vpr-rejected ul {
101
+ margin: var(--bb-space-1) 0 0;
102
+ padding-left: var(--bb-space-5);
103
+ }
104
+
105
+ /* Filters: toggles in the head actions row, the pressed one marked like a selected row. */
106
+ .bb-vpr-filters {
107
+ margin-bottom: var(--bb-space-5);
108
+ }
109
+
110
+ .bb-ws-button.bb-vpr-toggle.is-pressed {
111
+ border-color: var(--bb-color-accent);
112
+ background: var(--bb-color-accent-soft);
113
+ color: var(--bb-color-accent-strong);
114
+ box-shadow: inset 3px 0 var(--bb-color-accent);
115
+ }
116
+
117
+ /* Text inside the ledgers. */
118
+ .bb-vpr-primary {
119
+ color: var(--bb-color-ink);
120
+ font-size: 13px;
121
+ font-weight: 690;
122
+ }
123
+
124
+ .bb-vpr-state {
125
+ font-weight: 690;
126
+ }
127
+
128
+ .bb-vpr-state.is-delegated {
129
+ color: var(--bb-color-accent-strong);
130
+ }
131
+
132
+ .bb-vpr-state.is-verifying {
133
+ color: var(--bb-color-muted);
134
+ }
135
+
136
+ .bb-vpr-state.is-returned {
137
+ color: var(--bb-color-warning);
138
+ }
139
+
140
+ .bb-vpr-alert {
141
+ color: var(--bb-color-danger);
142
+ font-weight: 690;
143
+ }
144
+
145
+ /* 委任の地図: six columns; the kind name keeps the most room. */
146
+ .bb-vpr-map-ledger .bb-ws-ledger-row {
147
+ grid-template-columns: minmax(130px, 1.3fr) 92px minmax(120px, 1.1fr) minmax(84px, .9fr) 96px 60px;
148
+ }
149
+
150
+ .bb-vpr-map-ledger.is-unrecorded .bb-ws-ledger-row:not(.bb-ws-ledger-head) {
151
+ background: var(--bb-color-surface);
152
+ }
153
+
154
+ .bb-vpr-map-ledger.is-unrecorded .bb-ws-ledger-row.is-selected {
155
+ background: var(--bb-color-accent-soft);
156
+ }
157
+
158
+ /* Highlights: compact ledgers of judgments, above the map. */
159
+ .bb-vpr-judgment-ledger .bb-ws-ledger-row {
160
+ grid-template-columns: minmax(150px, 1.7fr) minmax(100px, 1fr) minmax(110px, 1.2fr) 52px;
161
+ }
162
+
163
+ .bb-vpr-highlight {
164
+ display: grid;
165
+ gap: var(--bb-space-2);
166
+ min-width: 0;
167
+ margin-bottom: var(--bb-space-6);
168
+ }
169
+
170
+ .bb-vpr-highlight h2 {
171
+ display: flex;
172
+ flex-wrap: wrap;
173
+ gap: var(--bb-space-2);
174
+ align-items: baseline;
175
+ margin: 0;
176
+ font-size: 16px;
177
+ letter-spacing: -.02em;
178
+ }
179
+
180
+ .bb-vpr-highlight.is-corrected h2 {
181
+ color: var(--bb-color-danger);
182
+ }
183
+
184
+ .bb-vpr-highlight.is-after-ask h2 {
185
+ color: var(--bb-color-warning);
186
+ }
187
+
188
+ .bb-vpr-highlight.is-corrected .bb-ws-ledger {
189
+ border-top-color: var(--bb-color-danger);
190
+ }
191
+
192
+ .bb-vpr-highlight.is-after-ask .bb-ws-ledger {
193
+ border-top-color: var(--bb-color-warning);
194
+ }
195
+
196
+ .bb-vpr-count {
197
+ color: var(--bb-color-muted);
198
+ font-size: 13px;
199
+ font-weight: 500;
200
+ }
201
+
202
+ .bb-vpr-hint {
203
+ margin: 0 0 var(--bb-space-2);
204
+ color: var(--bb-color-muted);
205
+ font-size: 13px;
206
+ }
207
+
208
+ .bb-vpr-map > .bb-ws-section-title {
209
+ margin-top: 0;
210
+ }
211
+
212
+ .bb-vpr-map > .bb-ws-notice {
213
+ margin-block: 0 var(--bb-space-5);
214
+ }
215
+
216
+ .bb-vpr-subheading {
217
+ margin: var(--bb-space-6) 0 var(--bb-space-1);
218
+ color: var(--bb-color-ink);
219
+ font-size: 15px;
220
+ }
221
+
222
+ .bb-vpr-empty {
223
+ margin: 0;
224
+ color: var(--bb-color-muted);
225
+ font-size: 13px;
226
+ }
227
+
228
+ /* Detail: in the rail, or after the workspace when the host has none. */
229
+ .bb-vpr-inline-detail {
230
+ max-width: 760px;
231
+ margin-top: 48px;
232
+ border-top: 1px solid var(--bb-color-border-strong);
233
+ padding-top: var(--bb-space-5);
234
+ }
235
+
236
+ .bb-vpr-detail > .bb-vpr-back {
237
+ margin-bottom: var(--bb-space-4);
238
+ }
239
+
240
+ .bb-vpr-detail .bb-ws-rail-head h2:focus {
241
+ outline: none;
242
+ }
243
+
244
+ .bb-vpr-detail h4 {
245
+ margin: var(--bb-space-3) 0 var(--bb-space-1);
246
+ color: var(--bb-color-ink);
247
+ font-size: 13px;
248
+ }
249
+
250
+ .bb-vpr-list,
251
+ .bb-vpr-options-list {
252
+ display: grid;
253
+ gap: 0;
254
+ margin: 0;
255
+ padding: 0;
256
+ list-style: none;
257
+ }
258
+
259
+ .bb-vpr-options-list {
260
+ gap: var(--bb-space-1);
261
+ padding-left: var(--bb-space-5);
262
+ list-style: disc;
263
+ color: var(--bb-color-muted);
264
+ font-size: 13px;
265
+ }
266
+
267
+ .bb-vpr-item {
268
+ width: 100%;
269
+ display: grid;
270
+ gap: 2px;
271
+ border: 0;
272
+ border-bottom: 1px solid var(--bb-color-border);
273
+ padding: var(--bb-space-3) var(--bb-space-2);
274
+ background: transparent;
275
+ color: var(--bb-color-muted);
276
+ font: inherit;
277
+ text-align: left;
278
+ cursor: pointer;
279
+ }
280
+
281
+ .bb-vpr-list > li:first-child .bb-vpr-item {
282
+ border-top: 1px solid var(--bb-color-border-strong);
283
+ }
284
+
285
+ .bb-vpr-item:hover {
286
+ background: var(--bb-color-panel);
287
+ }
288
+
289
+ .bb-vpr-item.is-selected {
290
+ background: var(--bb-color-accent-soft);
291
+ box-shadow: inset 3px 0 var(--bb-color-accent);
292
+ }
293
+
294
+ .bb-vpr-item-title {
295
+ color: var(--bb-color-ink);
296
+ font-size: 13px;
297
+ font-weight: 690;
298
+ overflow-wrap: anywhere;
299
+ }
300
+
301
+ .bb-vpr-item-summary {
302
+ font-size: 12px;
303
+ overflow-wrap: anywhere;
304
+ }
305
+
306
+ .bb-vpr-item-meta {
307
+ color: var(--bb-color-quiet);
308
+ font-size: 11px;
309
+ }
310
+
311
+ .bb-vpr-outcome.is-outcome_verified {
312
+ color: var(--bb-color-success);
313
+ }
314
+
315
+ .bb-vpr-human-decision h3 {
316
+ color: var(--bb-color-warning);
317
+ }
318
+
319
+ .bb-vpr-history,
320
+ .bb-vpr-audit {
321
+ font-size: 13px;
322
+ }
323
+
324
+ .bb-vpr-history {
325
+ margin-top: var(--bb-space-3);
326
+ }
327
+
328
+ .bb-vpr-history summary,
329
+ .bb-vpr-audit summary {
330
+ color: var(--bb-color-muted);
331
+ cursor: pointer;
332
+ }
333
+
334
+ .bb-vpr-history ol {
335
+ margin: var(--bb-space-2) 0 0;
336
+ padding-left: var(--bb-space-5);
337
+ color: var(--bb-color-muted);
338
+ }
339
+
340
+ .bb-vpr-audit .bb-ws-definition {
341
+ margin-top: var(--bb-space-3);
342
+ }
343
+
344
+ .bb-vpr-audit dt,
345
+ .bb-vpr-audit dd {
346
+ font-family: var(--bb-font-mono);
347
+ font-size: 11px;
348
+ overflow-wrap: anywhere;
349
+ }
350
+
351
+ .bb-vpr-detail .bb-ws-rail-block > .bb-ws-button {
352
+ justify-self: start;
353
+ }
354
+
355
+ .bb-vpr-detail .bb-ws-rail-block > .vpr-notice {
356
+ margin-top: var(--bb-space-3);
357
+ }
358
+
359
+ /* Feedback form (kept from the previous part; the part variables fall back to the old palette). */
360
+ .vpr-feedback {
361
+ display: grid;
362
+ gap: var(--bb-space-3);
363
+ }
364
+
365
+ .vpr-feedback fieldset {
366
+ display: grid;
367
+ gap: 10px;
368
+ min-width: 0;
369
+ margin: 0;
370
+ padding: 0;
371
+ border: 0;
372
+ }
373
+
374
+ .vpr-feedback legend {
375
+ position: absolute;
376
+ width: 1px;
377
+ height: 1px;
378
+ overflow: hidden;
379
+ clip-path: inset(50%);
380
+ white-space: nowrap;
381
+ }
382
+
383
+ .vpr-feedback .vpr-submit {
384
+ justify-self: start;
385
+ }
386
+
387
+ .vpr-options {
388
+ display: flex;
389
+ flex-wrap: wrap;
390
+ gap: 8px;
391
+ }
392
+
393
+ .vpr-option {
394
+ display: inline-flex;
395
+ gap: 7px;
396
+ align-items: center;
397
+ min-height: 38px;
398
+ padding: 7px 11px;
399
+ border: 1px solid var(--vpr-control-border);
400
+ border-radius: var(--bb-radius-sm, 7px);
401
+ background: var(--vpr-panel);
402
+ font-size: 13px;
403
+ cursor: pointer;
404
+ }
405
+
406
+ .vpr-option input {
407
+ margin: 0;
408
+ accent-color: var(--vpr-action);
409
+ }
410
+
411
+ .vpr-option:has(input:checked) {
412
+ border-color: var(--vpr-accent);
413
+ color: var(--vpr-accent-strong);
414
+ background: var(--vpr-accent-soft);
415
+ }
416
+
417
+ .vpr-layers {
418
+ display: flex;
419
+ flex-wrap: wrap;
420
+ gap: 8px;
421
+ align-items: center;
422
+ }
423
+
424
+ .vpr-layers[hidden] {
425
+ display: none;
426
+ }
427
+
428
+ .vpr-layers .bb-vpr-hint {
429
+ flex-basis: 100%;
430
+ margin-bottom: 0;
431
+ }
432
+
433
+ .vpr-feedback textarea {
434
+ width: 100%;
435
+ padding: 9px 10px;
436
+ border: 1px solid var(--vpr-border-strong);
437
+ border-radius: var(--bb-radius-sm, 7px);
438
+ color: var(--vpr-ink);
439
+ background: var(--vpr-panel);
440
+ font: inherit;
441
+ resize: vertical;
442
+ }
443
+
444
+ .vpr button:focus-visible,
445
+ .vpr input:focus-visible,
446
+ .vpr textarea:focus-visible,
447
+ .vpr summary:focus-visible {
448
+ outline: 3px solid color-mix(in srgb, var(--vpr-focus) 45%, var(--vpr-panel));
449
+ outline-offset: 2px;
450
+ }
451
+
452
+ /* Messages under the form and the consult button. */
453
+ .vpr-notice {
454
+ margin: 0;
455
+ padding: 11px 12px;
456
+ border-radius: var(--bb-radius-sm, 7px);
457
+ white-space: pre-line;
458
+ font-size: 13px;
459
+ }
460
+
461
+ .vpr-notice.is-danger {
462
+ color: var(--vpr-danger);
463
+ background: var(--vpr-danger-soft);
464
+ }
465
+
466
+ .vpr-notice.is-success {
467
+ color: var(--vpr-accent-strong);
468
+ background: var(--vpr-success-soft);
469
+ }
470
+
471
+ .vpr-notice.is-muted {
472
+ color: var(--vpr-muted);
473
+ background: var(--vpr-surface);
474
+ }
475
+
476
+ @media (max-width: 760px) {
477
+ #brainbase-value-proof-review {
478
+ padding: 24px 18px 52px;
479
+ }
480
+
481
+ .bb-vpr-map-ledger .bb-ws-ledger-row {
482
+ grid-template-columns: minmax(0, 1fr) 88px 60px;
483
+ }
484
+
485
+ .bb-vpr-map-ledger .bb-ws-ledger-row > span:nth-child(3),
486
+ .bb-vpr-map-ledger .bb-ws-ledger-row > span:nth-child(4),
487
+ .bb-vpr-map-ledger .bb-ws-ledger-row > span:nth-child(6) {
488
+ display: none;
489
+ }
490
+
491
+ .bb-vpr-judgment-ledger .bb-ws-ledger-row {
492
+ grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr);
493
+ }
494
+
495
+ .bb-vpr-judgment-ledger .bb-ws-ledger-row > span:nth-child(2),
496
+ .bb-vpr-judgment-ledger .bb-ws-ledger-row > span:nth-child(4) {
497
+ display: none;
498
+ }
499
+
500
+ .bb-vpr-filters {
501
+ align-items: stretch;
502
+ flex-direction: column;
503
+ }
504
+ }