@bongos/core 1.24.47 → 1.24.49

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 (106) hide show
  1. package/.bongos-core.json +165 -110
  2. package/config/branding.neutral.json +2 -1
  3. package/docs/copy-inventory.md +1028 -1028
  4. package/docs/copy-registry.json +1448 -1448
  5. package/docs/file-map.md +1 -1
  6. package/docs/module-api-changelog.md +4 -0
  7. package/docs/page-readings.json +625 -625
  8. package/modules/hall-ui/public/ai-studio.html +2 -2
  9. package/modules/hall-ui/public/atlas.html +2 -2
  10. package/modules/hall-ui/public/blockers.html +2 -2
  11. package/modules/hall-ui/public/board-room.html +2 -2
  12. package/modules/hall-ui/public/city.html +1 -1
  13. package/modules/hall-ui/public/collab.css +3 -22
  14. package/modules/hall-ui/public/collab.html +2 -2
  15. package/modules/hall-ui/public/commands.html +2 -2
  16. package/modules/hall-ui/public/controls.css +223 -0
  17. package/modules/hall-ui/public/copy-desk.html +2 -2
  18. package/modules/hall-ui/public/deploy.html +2 -2
  19. package/modules/hall-ui/public/goal-map.html +2 -2
  20. package/modules/hall-ui/public/goals.css +4 -23
  21. package/modules/hall-ui/public/goals.html +2 -2
  22. package/modules/hall-ui/public/government.html +2 -2
  23. package/modules/hall-ui/public/hall-render.js +1 -1
  24. package/modules/hall-ui/public/idea.html +2 -2
  25. package/modules/hall-ui/public/ideas.html +2 -2
  26. package/modules/hall-ui/public/index.html +5 -5
  27. package/modules/hall-ui/public/market-watch-item.html +2 -2
  28. package/modules/hall-ui/public/market-watch-rules.html +2 -2
  29. package/modules/hall-ui/public/market-watch.html +2 -2
  30. package/modules/hall-ui/public/modules.html +2 -2
  31. package/modules/hall-ui/public/money.html +2 -2
  32. package/modules/hall-ui/public/my-agents.css +3 -25
  33. package/modules/hall-ui/public/my-agents.html +2 -2
  34. package/modules/hall-ui/public/oversight.css +3 -17
  35. package/modules/hall-ui/public/panel.css +6 -48
  36. package/modules/hall-ui/public/primer.html +2 -2
  37. package/modules/hall-ui/public/profile.html +2 -2
  38. package/modules/hall-ui/public/project-settings.html +2 -2
  39. package/modules/hall-ui/public/roster.html +2 -2
  40. package/modules/hall-ui/public/settings.html +2 -2
  41. package/modules/hall-ui/public/shell.js +1 -1
  42. package/modules/hall-ui/public/speciality-tools.js +14 -14
  43. package/modules/hall-ui/public/street.html +1 -1
  44. package/modules/hall-ui/public/studio.html +2 -2
  45. package/modules/hall-ui/public/style.css +31 -255
  46. package/modules/hall-ui/public/task.html +2 -2
  47. package/modules/hall-ui/public/thinking.html +2 -2
  48. package/modules/hall-ui/public/tweak-editor.html +2 -2
  49. package/modules/hall-ui/public/watch.html +2 -2
  50. package/modules/hall-ui/public/welcome-boot.css +3 -4
  51. package/modules/hall-ui/public/welcome-boot.js +5 -3
  52. package/modules/hall-ui/public/work.html +2 -2
  53. package/modules/public-landing/public/account.html +1 -5
  54. package/modules/public-landing/public/assets/cosmos.css +7 -6
  55. package/modules/public-landing/public/community.html +1 -5
  56. package/modules/public-landing/public/connections.html +1 -5
  57. package/modules/public-landing/public/contact.html +1 -5
  58. package/modules/public-landing/public/guild.html +1 -5
  59. package/modules/public-landing/public/index.html +5 -8
  60. package/modules/public-landing/public/invitations.html +1 -5
  61. package/modules/public-landing/public/privacy.html +1 -5
  62. package/modules/public-landing/public/projects.html +1 -5
  63. package/modules/public-landing/public/terms.html +1 -5
  64. package/modules/raise/views/gate.html +4 -3
  65. package/modules/raise/views/nda.html +2 -1
  66. package/modules/raise/views/page.html +4 -3
  67. package/modules/status-ui/public/index.html +1 -1
  68. package/modules/status-ui/public/style.css +2 -2
  69. package/modules/ui-design/public/brand/apple-touch-icon.png +0 -0
  70. package/modules/ui-design/public/brand/favicon.svg +1 -0
  71. package/modules/ui-design/public/brand/mark-body.svg +1 -0
  72. package/modules/ui-design/public/brand/mark-dark.svg +1 -0
  73. package/modules/ui-design/public/brand/mark-dot.svg +1 -0
  74. package/modules/ui-design/public/brand/mark-light.svg +1 -0
  75. package/modules/ui-design/public/brand/mark-mono.svg +1 -0
  76. package/modules/ui-design/public/brand/mark.svg +21 -0
  77. package/package-lock.json +2 -2
  78. package/package.json +1 -1
  79. package/release-notes.json +12 -0
  80. package/scripts/bongos/fitness.js +1 -2
  81. package/scripts/bongos/gen-brand.js +99 -0
  82. package/scripts/gds/gen-brand.js +7 -0
  83. package/src/bongos/platform-visibility-gate.js +6 -3
  84. package/src/bongos/prelaunch-gate.js +6 -3
  85. package/src/bongos/serve-internal.js +1 -0
  86. package/src/brand-mark.js +96 -0
  87. package/src/branding.js +2 -0
  88. package/src/hall-look.js +7 -7
  89. package/src/module-api.js +1 -1
  90. package/tests/brand_mark.mjs +195 -0
  91. package/tests/bulk_toolbar.mjs +4 -1
  92. package/tests/cloud_bongos_pack.mjs +5 -2
  93. package/tests/hall_board_world.mjs +6 -2
  94. package/tests/hall_builders_page_pass.mjs +6 -4
  95. package/tests/hall_controls.mjs +274 -0
  96. package/tests/hall_loading.mjs +8 -10
  97. package/tests/hall_oversight_world.mjs +7 -4
  98. package/tests/hall_record_world.mjs +21 -7
  99. package/tests/hall_settings_world.mjs +5 -2
  100. package/tests/loading_mark.mjs +7 -13
  101. package/tests/nav_permission_atoms.mjs +2 -1
  102. package/tests/raise.mjs +3 -1
  103. package/tests/welcome_boot.mjs +5 -2
  104. package/modules/raise/public/favicon.svg +0 -1
  105. package/modules/raise/public/logo-ink.svg +0 -1
  106. package/modules/raise/public/logo-night.svg +0 -1
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <title>Market Watch item — {{worldName}}</title>
7
7
  <meta name="description" content="One tracked competitor, partner or topic: its card, its scores over time and its sourced case file.">
8
- <link rel="icon" href="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><text x='16' y='24' font-size='24' text-anchor='middle' font-family='sans-serif'>⌂</text></svg>">
8
+ <link rel="icon" href="/modules/ui-design/public/brand/favicon.svg" type="image/svg+xml">
9
9
  <link rel="preconnect" href="https://fonts.googleapis.com">
10
10
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
11
11
  <link rel="stylesheet" href="/builders/style.css?v=2026-07-02-shell1">
@@ -74,7 +74,7 @@
74
74
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
75
75
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
76
76
  <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
77
- <script src="/builders/shell.js?v=2026-11-06-sidebar"></script>
77
+ <script src="/builders/shell.js?v=2026-11-07-brand-mark"></script>
78
78
  <script src="/builders/palette.js" defer></script>
79
79
  <script src="/builders/hall-kit.js"></script>
80
80
  <script src="/builders/market-watch-lib.js"></script>
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <title>Market Watch rules — {{worldName}}</title>
7
7
  <meta name="description" content="How the weekly market watch works, step by step, in plain words: what it searches, what it reads, who it watches, how it scores and what it writes. Propose a change with a reason.">
8
- <link rel="icon" href="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><text x='16' y='24' font-size='24' text-anchor='middle' font-family='sans-serif'>⌂</text></svg>">
8
+ <link rel="icon" href="/modules/ui-design/public/brand/favicon.svg" type="image/svg+xml">
9
9
  <link rel="preconnect" href="https://fonts.googleapis.com">
10
10
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
11
11
  <link rel="stylesheet" href="/builders/style.css?v=2026-07-02-shell1">
@@ -43,7 +43,7 @@
43
43
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
44
44
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
45
45
  <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
46
- <script src="/builders/shell.js?v=2026-11-06-sidebar"></script>
46
+ <script src="/builders/shell.js?v=2026-11-07-brand-mark"></script>
47
47
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
48
48
  <script src="/builders/palette.js" defer></script>
49
49
  <script src="/builders/hall-kit.js"></script>
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <title>Market Watch — {{worldName}}</title>
7
7
  <meta name="description" content="The project's scouts on its competitors, partners and topics: the landscape, the next sweep, the budget left and this week's reports.">
8
- <link rel="icon" href="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><text x='16' y='24' font-size='24' text-anchor='middle' font-family='sans-serif'>⌂</text></svg>">
8
+ <link rel="icon" href="/modules/ui-design/public/brand/favicon.svg" type="image/svg+xml">
9
9
  <link rel="preconnect" href="https://fonts.googleapis.com">
10
10
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
11
11
  <link rel="stylesheet" href="/builders/style.css?v=2026-07-02-shell1">
@@ -188,7 +188,7 @@
188
188
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
189
189
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
190
190
  <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
191
- <script src="/builders/shell.js?v=2026-11-06-sidebar"></script>
191
+ <script src="/builders/shell.js?v=2026-11-07-brand-mark"></script>
192
192
  <script src="/builders/palette.js" defer></script>
193
193
  <script src="/builders/hall-kit.js"></script>
194
194
  <script src="/builders/market-watch-lib.js"></script>
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <title>Modules — {{worldName}}</title>
7
7
  <meta name="description" content="Browse the Cloud Bongos module catalog: what the core ships, who built each module and where it came from, what this instance runs, and how to submit one upstream.">
8
- <link rel="icon" href="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><text x='16' y='24' font-size='24' text-anchor='middle' font-family='sans-serif'>⌂</text></svg>">
8
+ <link rel="icon" href="/modules/ui-design/public/brand/favicon.svg" type="image/svg+xml">
9
9
  <link rel="preconnect" href="https://fonts.googleapis.com">
10
10
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
11
11
  <link rel="stylesheet" href="/builders/style.css?v=2026-07-02-shell1">
@@ -128,7 +128,7 @@
128
128
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
129
129
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
130
130
  <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
131
- <script src="/builders/shell.js?v=2026-11-06-sidebar"></script>
131
+ <script src="/builders/shell.js?v=2026-11-07-brand-mark"></script>
132
132
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
133
133
  <script src="/builders/palette.js" defer></script>
134
134
  <script src="/builders/brand-apply.js"></script>
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <title>Money — {{worldName}}</title>
7
7
  <meta name="description" content="Where this project's money went, the treasury so far, and what each hosted project costs, on one page for the people who steer the project.">
8
- <link rel="icon" href="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><text x='16' y='24' font-size='24' text-anchor='middle' font-family='sans-serif'>⌂</text></svg>">
8
+ <link rel="icon" href="/modules/ui-design/public/brand/favicon.svg" type="image/svg+xml">
9
9
  <link rel="preconnect" href="https://fonts.googleapis.com">
10
10
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
11
11
  <link rel="stylesheet" href="/builders/style.css?v=2026-09-23-changelist1">
@@ -82,7 +82,7 @@
82
82
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
83
83
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
84
84
  <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
85
- <script src="/builders/shell.js?v=2026-11-06-sidebar"></script>
85
+ <script src="/builders/shell.js?v=2026-11-07-brand-mark"></script>
86
86
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
87
87
  <script src="/builders/palette.js" defer></script>
88
88
  <script src="/builders/hall-kit.js"></script>
@@ -260,32 +260,10 @@ html[data-theme="dark"] body[data-page="my-agents"] {
260
260
  .ma-know .prow__hint { margin: 4px 0 0; max-width: var(--measure); font-size: 13px; line-height: 1.5; color: var(--ink-soft); }
261
261
  .ma-know .prow__actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 6px; }
262
262
  .ma-know .speciality-create__h { margin: 4px 0 0; font-size: 14px; font-weight: 500; color: var(--ink); }
263
- .ma-know .btn,
264
- .ma-know .pbtn {
265
- display: inline-flex;
266
- align-items: center;
267
- justify-content: center;
268
- min-height: 30px;
269
- min-width: 30px;
270
- padding: 0 14px;
271
- border: var(--line) solid var(--rule);
272
- border-radius: var(--radius-pill);
273
- background: none;
274
- color: var(--ink-soft);
275
- font: inherit;
276
- font-size: 13px;
277
- font-weight: 400;
278
- text-transform: lowercase;
279
- white-space: nowrap;
280
- cursor: pointer;
281
- }
282
- .ma-know .btn:hover:not(:disabled),
283
- .ma-know .pbtn:hover:not(:disabled) { background: none; color: var(--ink); border-color: var(--ink-faint); }
284
- .ma-know .btn:disabled,
285
- .ma-know .pbtn:disabled { background: none; color: var(--ink-faint); border-color: var(--rule-soft); cursor: default; }
263
+ /* the row's buttons are the shared ghost at the row size (controls.css, task
264
+ 1005084): speciality-tools.js writes btn--sm on them */
286
265
  /* the walkthrough's answer you gave, and its one commit, read as a chosen chip */
287
- .ma-know .pbtn[aria-pressed="true"],
288
- .ma-know .pbtn--save:not(:disabled) { background: var(--glass-strong); color: var(--ink); border-color: var(--ink-soft); }
266
+ .ma-know .pbtn[aria-pressed="true"] { background: var(--glass-strong); color: var(--ink); border-color: var(--ink-soft); }
289
267
  /* the 24px floor, drawn in ink: the create form's "for sale" box and the skill picker */
290
268
  .ma-know input[type="checkbox"] { width: 24px; height: 24px; margin: 0; flex: none; accent-color: var(--ink); cursor: pointer; }
291
269
  .ma-know .speciality-field > span { color: var(--ink-soft); }
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <title>My agents — {{worldName}}</title>
7
7
  <meta name="description" content="How your own Claude works for you: how it talks, how far it wanders and which models run.">
8
- <link rel="icon" href="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><text x='16' y='24' font-size='24' text-anchor='middle' font-family='sans-serif'>⌂</text></svg>">
8
+ <link rel="icon" href="/modules/ui-design/public/brand/favicon.svg" type="image/svg+xml">
9
9
  <link rel="preconnect" href="https://fonts.googleapis.com">
10
10
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
11
11
  <link rel="stylesheet" href="/builders/style.css?v=2026-07-02-shell1">
@@ -84,7 +84,7 @@
84
84
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
85
85
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
86
86
  <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
87
- <script src="/builders/shell.js?v=2026-11-06-sidebar"></script>
87
+ <script src="/builders/shell.js?v=2026-11-07-brand-mark"></script>
88
88
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
89
89
  <script src="/builders/palette.js" defer></script>
90
90
  <script src="/builders/gov-living.js?v=2026-10-10-real1"></script>
@@ -249,23 +249,9 @@ a.fact-chip:hover { color: var(--accent-ink); border-color: var(--accent-ink); t
249
249
  text-transform: var(--label-case);
250
250
  color: var(--ink-faint);
251
251
  }
252
- /* The shell styles text and search inputs; a number input (the builder id) would
253
- otherwise render at the browser's 21px and fail the 24px floor, so the field
254
- restates the shell's hairline pill for every control it holds. */
255
- .ov-field input, .ov-field select, .ov-field textarea {
256
- width: 100%;
257
- box-sizing: border-box;
258
- min-height: 30px;
259
- padding: 5px 12px;
260
- font-family: var(--font-body);
261
- font-size: 14px;
262
- color: var(--ink);
263
- background: none;
264
- border: var(--line) solid var(--rule);
265
- border-radius: var(--radius-pill);
266
- }
267
- .ov-field textarea { border-radius: var(--radius-sm); }
268
- .ov-field input:hover, .ov-field select:hover, .ov-field textarea:hover { border-color: var(--ink-faint); }
252
+ /* The field is the shared one (controls.css, task 1005084) — it covers the
253
+ number input (the builder id) too; the form only stretches it to the row. */
254
+ .ov-field input, .ov-field select, .ov-field textarea { width: 100%; box-sizing: border-box; }
269
255
  .ov-field input::placeholder, .ov-field textarea::placeholder { color: var(--ink-faint); }
270
256
  /* The one line under the row. A max-width here would cap the flex basis and let
271
257
  the line ride beside the button, so the line takes the full row instead. */
@@ -109,42 +109,8 @@
109
109
  .craft-actions .settings-status { margin: 0; }
110
110
 
111
111
  /* ---- the controls: every one clears 24px on both axes ------------------- */
112
- /* the family button: a glass pill, 38px, quiet by default. `--save` is the
113
- accent door — the panel's one primary act — and takes --accent-on, the dark
114
- ink for the salmon; white on it fails AA and DESIGN.md bans it. */
115
- .pbtn,
116
- .settings-btn, .sessions-row__end, .event-sound-preview {
117
- display: inline-flex;
118
- align-items: center;
119
- justify-content: center;
120
- gap: 8px;
121
- min-height: 38px;
122
- min-width: 38px;
123
- padding: 0 15px;
124
- border: var(--line) solid var(--glass-edge);
125
- border-radius: var(--radius-pill);
126
- background: var(--glass);
127
- color: var(--ink);
128
- font: inherit;
129
- font-size: 14px;
130
- line-height: 1.2;
131
- white-space: nowrap;
132
- text-decoration: none;
133
- cursor: pointer;
134
- transition: background 200ms cubic-bezier(.2,.7,.3,1), border-color 200ms cubic-bezier(.2,.7,.3,1), color 200ms cubic-bezier(.2,.7,.3,1);
135
- }
136
- .pbtn:hover:not(:disabled), .settings-btn:hover:not(:disabled), .sessions-row__end:hover:not(:disabled),
137
- .event-sound-preview:hover:not(:disabled) { background: var(--glass-strong); color: var(--ink); text-decoration: none; }
138
- .pbtn:disabled, .settings-btn:disabled, .sessions-row__end:disabled,
139
- .pbtn[aria-disabled="true"], .settings-btn[aria-disabled="true"] { color: var(--ink-faint); background: var(--glass); cursor: default; }
140
- .pbtn--quiet, .settings-btn--quiet, .sessions-row__end, .event-sound-preview { background: transparent; }
141
- .pbtn--save,
142
- .craft-save { background: var(--accent); border-color: var(--accent); color: var(--accent-on); font-weight: 500; }
143
- .pbtn--save:hover:not(:disabled), .craft-save:hover:not(:disabled) { background: var(--accent-lift); border-color: var(--accent-lift); color: var(--accent-on); }
144
- .craft-save:disabled, .pbtn--save:disabled { background: var(--glass); border-color: var(--glass-edge); color: var(--ink-faint); }
145
- /* the shell's `.craft-save` was a bordered box; it is the family's save button
146
- now, so it carries the pill's own box model too */
147
- button.craft-save { display: inline-flex; align-items: center; justify-content: center; min-height: 38px; min-width: 38px; padding: 0 15px; border-radius: var(--radius-pill); font: inherit; font-size: 14px; cursor: pointer; }
112
+ /* the family button (.pbtn / .settings-btn, ghost; --save the accent door) is
113
+ the hall's shared button, default size (controls.css, task 1005084). */
148
114
 
149
115
  /* the field: label above, input and its button on one line */
150
116
  .field-label,
@@ -160,28 +126,20 @@ button.craft-save { display: inline-flex; align-items: center; justify-content:
160
126
  .field,
161
127
  .display-name-row, .artkey-entry-row, .join { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-xs); margin-top: 0; }
162
128
  .field .field-label { flex: 1 1 100%; margin-top: 0; }
129
+ /* the input is the shared field (controls.css, task 1005084); the family only
130
+ sizes it on the row */
163
131
  .pinput,
164
132
  .display-name-input, .artkey-input, .join input, .join-note {
165
133
  flex: 1 1 260px;
166
134
  max-width: 420px;
167
- min-height: 38px;
168
- padding: 0 16px;
169
- font: inherit;
170
- font-size: 15px;
171
- color: var(--ink);
172
- background: var(--glass);
173
- border: var(--line) solid var(--glass-edge);
174
- border-radius: var(--radius-pill);
175
- transition: border-color 200ms cubic-bezier(.2,.7,.3,1);
176
135
  }
177
136
  .pinput::placeholder, .display-name-input::placeholder, .artkey-input::placeholder, .join input::placeholder, .join-note::placeholder { color: var(--ink-faint); }
178
- .pinput:hover, .display-name-input:hover, .artkey-input:hover, .join input:hover, .join-note:hover { border-color: var(--rule); }
179
137
  .pinput[aria-invalid="true"], .display-name-input[aria-invalid="true"] { border-color: var(--danger); }
180
138
  /* a secret is typed in the mono face so a pasted key reads as what it is */
181
139
  .artkey-input { font-family: var(--font-mono); font-size: 13.5px; }
140
+ /* the select is the shared field too (controls.css) */
182
141
  .psel,
183
- .event-sound-select, .voices__select { min-height: 38px; padding: 0 var(--sp-xs); font: inherit; font-size: 14px; color: var(--ink); background: var(--glass); border: var(--line) solid var(--glass-edge); border-radius: var(--radius-pill); cursor: pointer; }
184
- .psel:hover, .event-sound-select:hover, .voices__select:hover { border-color: var(--rule); }
142
+ .event-sound-select, .voices__select { cursor: pointer; }
185
143
  .prange,
186
144
  .sound-volume input[type="range"] { flex: 1 1 200px; max-width: 260px; height: 38px; margin: 0; accent-color: var(--accent); cursor: pointer; }
187
145
  .pradio { width: 24px; height: 24px; flex: none; margin: 0; accent-color: var(--accent); cursor: pointer; }
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <title>Primer — {{worldName}}</title>
7
7
  <meta name="description" content="The guide a new builder reads on day one. What {{productName}} is, how the build system works, the claim-to-ship lifecycle, the rank ladder, {{currency}} and karma, and how versions organise the work, each with its diagram.">
8
- <link rel="icon" href="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><text x='16' y='24' font-size='24' text-anchor='middle' font-family='sans-serif'>⌂</text></svg>">
8
+ <link rel="icon" href="/modules/ui-design/public/brand/favicon.svg" type="image/svg+xml">
9
9
  <link rel="preconnect" href="https://fonts.googleapis.com">
10
10
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
11
11
  <link rel="stylesheet" href="/builders/style.css?v=2026-07-02-shell1">
@@ -113,7 +113,7 @@
113
113
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
114
114
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
115
115
  <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
116
- <script src="/builders/shell.js?v=2026-11-06-sidebar"></script>
116
+ <script src="/builders/shell.js?v=2026-11-07-brand-mark"></script>
117
117
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
118
118
  <script src="/builders/palette.js" defer></script>
119
119
  <!-- the shared markdown reader (window.OTBMdReader) — primer.js renders through
@@ -11,7 +11,7 @@
11
11
  an href, so an empty value cannot degrade into a same-host URL claiming
12
12
  to be the hub. -->
13
13
  <meta name="hub-origin" content="{{hubOrigin}}">
14
- <link rel="icon" href="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><text x='16' y='24' font-size='24' text-anchor='middle' font-family='sans-serif'>⌂</text></svg>">
14
+ <link rel="icon" href="/modules/ui-design/public/brand/favicon.svg" type="image/svg+xml">
15
15
  <link rel="preconnect" href="https://fonts.googleapis.com">
16
16
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
17
17
  <link rel="stylesheet" href="/builders/style.css?v=2026-07-02-shell1">
@@ -249,7 +249,7 @@
249
249
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
250
250
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
251
251
  <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
252
- <script src="/builders/shell.js?v=2026-11-06-sidebar"></script>
252
+ <script src="/builders/shell.js?v=2026-11-07-brand-mark"></script>
253
253
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
254
254
  <script src="/builders/palette.js" defer></script>
255
255
  <!-- task 1004727: the ONE karma vote control every task/idea list renders -->
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <title>Project settings — {{worldName}}</title>
7
7
  <meta name="description" content="The fundamentals of this project in one place — how tasks ship, how many tweak rounds a month, the stale timer, the category set, how credits are calculated, why credits are not equity, and whether a credit-weighted pool can pay out.">
8
- <link rel="icon" href="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><text x='16' y='24' font-size='24' text-anchor='middle' font-family='sans-serif'>⌂</text></svg>">
8
+ <link rel="icon" href="/modules/ui-design/public/brand/favicon.svg" type="image/svg+xml">
9
9
  <link rel="preconnect" href="https://fonts.googleapis.com">
10
10
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
11
11
  <link rel="stylesheet" href="/builders/style.css?v=2026-07-02-shell1">
@@ -77,7 +77,7 @@
77
77
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
78
78
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
79
79
  <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
80
- <script src="/builders/shell.js?v=2026-11-06-sidebar"></script>
80
+ <script src="/builders/shell.js?v=2026-11-07-brand-mark"></script>
81
81
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
82
82
  <script src="/builders/palette.js" defer></script>
83
83
  <script src="/builders/hall-kit.js"></script>
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <title>Builders — {{worldName}}</title>
7
7
  <meta name="description" content="Who builds on this project: the roster, ranked by work shipped, with rank, credits, karma and tokens — and, for a government seat, active claims and standing.">
8
- <link rel="icon" href="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><text x='16' y='24' font-size='24' text-anchor='middle' font-family='sans-serif'>⌂</text></svg>">
8
+ <link rel="icon" href="/modules/ui-design/public/brand/favicon.svg" type="image/svg+xml">
9
9
  <link rel="preconnect" href="https://fonts.googleapis.com">
10
10
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
11
11
  <link rel="stylesheet" href="/builders/style.css?v=2026-07-02-shell1">
@@ -59,7 +59,7 @@
59
59
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
60
60
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
61
61
  <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
62
- <script src="/builders/shell.js?v=2026-11-06-sidebar"></script>
62
+ <script src="/builders/shell.js?v=2026-11-07-brand-mark"></script>
63
63
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
64
64
  <script src="/builders/palette.js" defer></script>
65
65
  <!-- the branding pack's currency label, loaded BEFORE roster.js. -->
@@ -8,7 +8,7 @@
8
8
  <!-- the hub's origin, stamped server-side (task 1004259): the Profile and
9
9
  privacy row links to its account page. Empty on an instance with no hub. -->
10
10
  <meta name="hub-origin" content="{{hubOrigin}}">
11
- <link rel="icon" href="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><text x='16' y='24' font-size='24' text-anchor='middle' font-family='sans-serif'>⌂</text></svg>">
11
+ <link rel="icon" href="/modules/ui-design/public/brand/favicon.svg" type="image/svg+xml">
12
12
  <link rel="preconnect" href="https://fonts.googleapis.com">
13
13
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
14
14
  <link rel="stylesheet" href="/builders/style.css?v=2026-07-02-shell1">
@@ -394,7 +394,7 @@
394
394
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
395
395
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
396
396
  <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
397
- <script src="/builders/shell.js?v=2026-11-06-sidebar"></script>
397
+ <script src="/builders/shell.js?v=2026-11-07-brand-mark"></script>
398
398
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
399
399
  <script src="/builders/palette.js" defer></script>
400
400
  <!-- shared component kit (window.OTBKit) — section rail (task 2166). -->
@@ -508,7 +508,7 @@
508
508
  // platform validated it as an https image address before it was pushed.
509
509
  (brand.theme && brand.theme.logo
510
510
  ? '<img class="brand-mark__logo" src="' + esc(brand.theme.logo) + '" alt="" width="24" height="24" decoding="async">'
511
- : '<svg class="brand-mark__mark" viewBox="0 0 200 200" aria-hidden="true"><path class="mr" d="M137 31 A78 78 0 1 0 170 66" fill="none" stroke="#17181a" stroke-width="15" stroke-linecap="round"/><circle class="mp" cx="100" cy="100" r="55" fill="#17181a"/><circle cx="156" cy="46" r="12" fill="#fb9569"/></svg>') +
511
+ : '<svg class="brand-mark__mark" viewBox="0 0 200 200" aria-hidden="true"><use href="/modules/ui-design/public/brand/mark.svg#mark"/></svg>') +
512
512
  '<span class="brand-mark__name" id="brand-name"></span></a></div>' +
513
513
  '<nav class="app-sidebar__nav" aria-label="Primary">' + groups + '</nav>' +
514
514
  '<div class="app-sidebar__foot">' +
@@ -159,9 +159,9 @@
159
159
  ${guessed}
160
160
  ${was ? '<p class="prow__hint">You have this one on at the moment.</p>' : ''}
161
161
  <div class="speciality-actions skill-walk__actions">
162
- ${i > 0 ? '<button type="button" class="pbtn pbtn--quiet" data-walk="back">Back</button>' : ''}
163
- <button type="button" class="pbtn" data-walk="off" aria-pressed="${decided === false}">Leave it off</button>
164
- <button type="button" class="pbtn" data-walk="on" aria-pressed="${decided === true}">Turn it on</button>
162
+ ${i > 0 ? '<button type="button" class="pbtn pbtn--quiet btn--sm" data-walk="back">Back</button>' : ''}
163
+ <button type="button" class="pbtn btn--sm" data-walk="off" aria-pressed="${decided === false}">Leave it off</button>
164
+ <button type="button" class="pbtn btn--sm" data-walk="on" aria-pressed="${decided === true}">Turn it on</button>
165
165
  </div>`;
166
166
  }
167
167
 
@@ -181,8 +181,8 @@
181
181
  </ul>
182
182
  ${gone.length ? `<p class="prow__hint">Also offered, but no longer on this project, so it cannot be turned on: ${gone.map((k) => `<code>${escapeHtml(k.name)}</code>`).join(', ')}.</p>` : ''}
183
183
  <div class="speciality-actions skill-walk__actions">
184
- <button type="button" class="pbtn pbtn--quiet" data-walk="restart">Go through them again</button>
185
- <button type="button" class="pbtn pbtn--save" data-walk="save" ${w.saving ? 'disabled' : ''}>Save my choices</button>
184
+ <button type="button" class="pbtn pbtn--quiet btn--sm" data-walk="restart">Go through them again</button>
185
+ <button type="button" class="pbtn pbtn--save btn--sm" data-walk="save" ${w.saving ? 'disabled' : ''}>Save my choices</button>
186
186
  </div>`;
187
187
  }
188
188
 
@@ -298,7 +298,7 @@
298
298
  <h4 class="speciality-create__h">What ${escapeHtml(s.name)} offers</h4>
299
299
  <div class="speciality-offer__choices">${state.offerChoices || '<p class="hall-loading hall-loading--inline" role="status">Loading this project’s skills…</p>'}</div>
300
300
  <div class="speciality-actions">
301
- <button type="submit" class="btn" ${state.offerChoices ? '' : 'disabled'}>Save what it offers</button>
301
+ <button type="submit" class="btn btn--ghost btn--sm" ${state.offerChoices ? '' : 'disabled'}>Save what it offers</button>
302
302
  </div>
303
303
  </form>`;
304
304
  }
@@ -357,12 +357,12 @@
357
357
  </p>
358
358
  </div>
359
359
  <div class="prow__actions">
360
- ${s.active && offered && !walking ? `<button type="button" class="btn btn--quiet" data-act="walk" data-id="${escapeHtml(String(s.id))}">Choose its skills</button>` : ''}
361
- ${s.mine ? `<button type="button" class="btn btn--quiet" data-act="train" data-id="${escapeHtml(String(s.id))}">${open ? 'Close' : 'Train'}</button>` : ''}
362
- ${s.mine ? `<button type="button" class="btn btn--quiet" data-act="offer" data-id="${escapeHtml(String(s.id))}" aria-expanded="${offering}">${offering ? 'Close' : 'Offered skills'}</button>` : ''}
360
+ ${s.active && offered && !walking ? `<button type="button" class="btn btn--ghost btn--sm" data-act="walk" data-id="${escapeHtml(String(s.id))}">Choose its skills</button>` : ''}
361
+ ${s.mine ? `<button type="button" class="btn btn--ghost btn--sm" data-act="train" data-id="${escapeHtml(String(s.id))}">${open ? 'Close' : 'Train'}</button>` : ''}
362
+ ${s.mine ? `<button type="button" class="btn btn--ghost btn--sm" data-act="offer" data-id="${escapeHtml(String(s.id))}" aria-expanded="${offering}">${offering ? 'Close' : 'Offered skills'}</button>` : ''}
363
363
  ${s.active
364
- ? `<button type="button" class="btn btn--quiet" data-act="abandon" data-id="${escapeHtml(String(s.id))}">Stop using</button>`
365
- : `<button type="button" class="btn" data-act="adopt" data-id="${escapeHtml(String(s.id))}" ${s.adoptable ? '' : 'disabled'}>Use this</button>`}
364
+ ? `<button type="button" class="btn btn--ghost btn--sm" data-act="abandon" data-id="${escapeHtml(String(s.id))}">Stop using</button>`
365
+ : `<button type="button" class="btn btn--ghost btn--sm" data-act="adopt" data-id="${escapeHtml(String(s.id))}" ${s.adoptable ? '' : 'disabled'}>Use this</button>`}
366
366
  </div>
367
367
  ${open ? trainHtml(s) : ''}
368
368
  ${offering ? offerFormHtml(s) : ''}
@@ -386,7 +386,7 @@
386
386
  <textarea name="body_md" rows="6" required placeholder="Paste or write it here."></textarea>
387
387
  </label>
388
388
  <div class="speciality-actions">
389
- <button type="submit" class="btn">Add to what it knows</button>
389
+ <button type="submit" class="btn btn--ghost btn--sm">Add to what it knows</button>
390
390
  </div>
391
391
  </form>`;
392
392
  }
@@ -423,7 +423,7 @@
423
423
  ${contractHtml(s)}
424
424
  </div>
425
425
  <div class="prow__actions">
426
- <button type="button" class="btn" data-act="adopt" data-id="${escapeHtml(String(s.id))}">Use this</button>
426
+ <button type="button" class="btn btn--ghost btn--sm" data-act="adopt" data-id="${escapeHtml(String(s.id))}">Use this</button>
427
427
  </div>
428
428
  </li>`;
429
429
  }
@@ -655,7 +655,7 @@
655
655
  <div id="speciality-create-skills"><p class="hall-loading hall-loading--inline" role="status">Loading this project’s skills…</p></div>
656
656
  </details>
657
657
  <div class="speciality-actions">
658
- <button type="submit" class="btn">Create speciality</button>
658
+ <button type="submit" class="btn btn--ghost btn--sm">Create speciality</button>
659
659
  </div>
660
660
  `;
661
661
  }
@@ -231,7 +231,7 @@
231
231
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
232
232
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
233
233
  <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
234
- <script src="/builders/shell.js?v=2026-11-06-sidebar"></script>
234
+ <script src="/builders/shell.js?v=2026-11-07-brand-mark"></script>
235
235
  <script src="/builders/palette.js" defer></script>
236
236
  <script src="/builders/gov-living.js?v=2026-10-09-positions1"></script>
237
237
  <script src="/builders/gov-feeds.js?v=2026-10-09-living3"></script>
@@ -9,7 +9,7 @@
9
9
  <meta name="viewport" content="width=device-width, initial-scale=1">
10
10
  <title>Studio — {{worldName}}</title>
11
11
  <meta name="description" content="The studio: the artist's lofi home in Tweak Mode. Resume the page you hold, take the next one, approve what was applied, and see how far each surface has come.">
12
- <link rel="icon" href="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><text x='16' y='24' font-size='24' text-anchor='middle' font-family='sans-serif'>⌂</text></svg>">
12
+ <link rel="icon" href="/modules/ui-design/public/brand/favicon.svg" type="image/svg+xml">
13
13
  <link rel="preconnect" href="https://fonts.googleapis.com">
14
14
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
15
15
  <link rel="stylesheet" href="/builders/style.css?v=2026-07-02-shell1">
@@ -225,7 +225,7 @@
225
225
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
226
226
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
227
227
  <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
228
- <script src="/builders/shell.js?v=2026-11-06-sidebar"></script>
228
+ <script src="/builders/shell.js?v=2026-11-07-brand-mark"></script>
229
229
  <script src="/builders/palette.js" defer></script>
230
230
  <!-- The kit, for its ONE renderer: the full-size ship-time visual figure
231
231
  (task 1003829), which the older reviews still show. -->