@bongos/core 1.24.48 → 1.24.50

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 (99) hide show
  1. package/.bongos-core.json +152 -112
  2. package/config/branding.neutral.json +2 -1
  3. package/docs/copy-inventory.md +1108 -1108
  4. package/docs/copy-registry.json +1557 -1557
  5. package/docs/module-api-changelog.md +4 -0
  6. package/docs/page-inventory.json +5 -4
  7. package/docs/page-readings.json +681 -681
  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.html +2 -2
  14. package/modules/hall-ui/public/commands.html +2 -2
  15. package/modules/hall-ui/public/copy-desk.html +2 -2
  16. package/modules/hall-ui/public/deploy.html +2 -2
  17. package/modules/hall-ui/public/goal-map.html +2 -2
  18. package/modules/hall-ui/public/goals.html +2 -2
  19. package/modules/hall-ui/public/government.html +2 -2
  20. package/modules/hall-ui/public/hall-render.js +1 -1
  21. package/modules/hall-ui/public/idea.html +2 -2
  22. package/modules/hall-ui/public/ideas.html +2 -2
  23. package/modules/hall-ui/public/index.html +5 -5
  24. package/modules/hall-ui/public/market-watch-item.html +2 -2
  25. package/modules/hall-ui/public/market-watch-rules.html +2 -2
  26. package/modules/hall-ui/public/market-watch.html +2 -2
  27. package/modules/hall-ui/public/modules.html +2 -2
  28. package/modules/hall-ui/public/money.html +2 -2
  29. package/modules/hall-ui/public/my-agents.html +2 -2
  30. package/modules/hall-ui/public/primer.html +2 -2
  31. package/modules/hall-ui/public/profile.html +2 -2
  32. package/modules/hall-ui/public/project-settings.html +2 -2
  33. package/modules/hall-ui/public/roster.html +2 -2
  34. package/modules/hall-ui/public/settings.html +2 -2
  35. package/modules/hall-ui/public/shell.js +1 -1
  36. package/modules/hall-ui/public/street.html +1 -1
  37. package/modules/hall-ui/public/studio.html +2 -2
  38. package/modules/hall-ui/public/style.css +7 -9
  39. package/modules/hall-ui/public/task.html +2 -2
  40. package/modules/hall-ui/public/thinking.html +2 -2
  41. package/modules/hall-ui/public/tweak-editor.html +2 -2
  42. package/modules/hall-ui/public/watch.html +2 -2
  43. package/modules/hall-ui/public/welcome-boot.css +3 -4
  44. package/modules/hall-ui/public/welcome-boot.js +5 -3
  45. package/modules/hall-ui/public/work.html +2 -2
  46. package/modules/public-landing/public/account.html +1 -5
  47. package/modules/public-landing/public/assets/cosmos.css +7 -6
  48. package/modules/public-landing/public/community.html +1 -5
  49. package/modules/public-landing/public/connections.html +1 -5
  50. package/modules/public-landing/public/contact.html +1 -5
  51. package/modules/public-landing/public/guild.html +1 -5
  52. package/modules/public-landing/public/index.html +5 -8
  53. package/modules/public-landing/public/invitations.html +1 -5
  54. package/modules/public-landing/public/privacy.html +1 -5
  55. package/modules/public-landing/public/projects.html +1 -5
  56. package/modules/public-landing/public/terms.html +1 -5
  57. package/modules/raise/views/gate.html +4 -3
  58. package/modules/raise/views/nda.html +2 -1
  59. package/modules/raise/views/page.html +4 -3
  60. package/modules/status-ui/public/explore.html +14 -4
  61. package/modules/status-ui/public/index.html +26 -126
  62. package/modules/status-ui/public/index.states.json +3 -3
  63. package/modules/status-ui/public/status.js +53 -27
  64. package/modules/status-ui/public/style.css +640 -833
  65. package/modules/ui-design/public/brand/apple-touch-icon.png +0 -0
  66. package/modules/ui-design/public/brand/favicon.svg +1 -0
  67. package/modules/ui-design/public/brand/mark-body.svg +1 -0
  68. package/modules/ui-design/public/brand/mark-dark.svg +1 -0
  69. package/modules/ui-design/public/brand/mark-dot.svg +1 -0
  70. package/modules/ui-design/public/brand/mark-light.svg +1 -0
  71. package/modules/ui-design/public/brand/mark-mono.svg +1 -0
  72. package/modules/ui-design/public/brand/mark.svg +21 -0
  73. package/package-lock.json +2 -2
  74. package/package.json +1 -1
  75. package/release-notes.json +12 -0
  76. package/scripts/bongos/fitness.js +1 -2
  77. package/scripts/bongos/gen-brand.js +99 -0
  78. package/scripts/gds/gen-brand.js +7 -0
  79. package/scripts/status-mirror-sync.js +44 -45
  80. package/src/bongos/platform-visibility-gate.js +6 -3
  81. package/src/bongos/prelaunch-gate.js +6 -3
  82. package/src/bongos/serve-internal.js +9 -7
  83. package/src/brand-mark.js +96 -0
  84. package/src/branding.js +2 -0
  85. package/src/hall-look.js +7 -7
  86. package/src/module-api.js +1 -1
  87. package/tests/brand_mark.mjs +195 -0
  88. package/tests/cloud_bongos_pack.mjs +5 -2
  89. package/tests/hall_loading.mjs +8 -10
  90. package/tests/loading_mark.mjs +7 -13
  91. package/tests/nav_permission_atoms.mjs +2 -1
  92. package/tests/raise.mjs +3 -1
  93. package/tests/status_page_chrome.mjs +195 -0
  94. package/tests/welcome_boot.mjs +5 -2
  95. package/modules/raise/public/favicon.svg +0 -1
  96. package/modules/raise/public/logo-ink.svg +0 -1
  97. package/modules/raise/public/logo-night.svg +0 -1
  98. package/modules/status-ui/public/cursors/arrow.png +0 -0
  99. package/modules/status-ui/public/cursors/hand-pointer.png +0 -0
@@ -559,12 +559,12 @@ main:focus { outline: none; }
559
559
  width: 28px; height: 28px;
560
560
  display: block;
561
561
  flex-shrink: 0;
562
+ /* drawn from the one mark (modules/ui-design/public/brand/mark.svg, task 1005088) */
563
+ --mark-ink: var(--ink);
562
564
  }
563
- html[data-theme="dark"] .brand-mark__mark .mr { stroke: #e2e1e4; }
564
- html[data-theme="dark"] .brand-mark__mark .mp { fill: #e2e1e4; }
565
+ html[data-theme="dark"] .brand-mark__mark { --mark-ink: #e2e1e4; }
565
566
  @media (prefers-color-scheme: dark) {
566
- html:not([data-theme]) .brand-mark__mark .mr { stroke: #e2e1e4; }
567
- html:not([data-theme]) .brand-mark__mark .mp { fill: #e2e1e4; }
567
+ html:not([data-theme]) .brand-mark__mark { --mark-ink: #e2e1e4; }
568
568
  }
569
569
  /* A project's logo in the mark's place (ADR 0358): the image is the founder's, so
570
570
  it gets a soft square, never a recolour. */
@@ -3243,9 +3243,7 @@ html[data-door="out"] #hall-main { width: 100%; }
3243
3243
  background: var(--bg-card);
3244
3244
  text-align: center;
3245
3245
  }
3246
- .landing__logo { display: block; width: 56px; height: 56px; margin: 0 auto 18px; overflow: visible; }
3247
- .landing__ring { stroke: var(--ink); }
3248
- .landing__planet { fill: var(--ink); }
3246
+ .landing__logo { display: block; width: 56px; height: 56px; margin: 0 auto 18px; overflow: visible; --mark-ink: var(--ink); }
3249
3247
  .landing__title {
3250
3248
  margin: 0 0 28px;
3251
3249
  font-family: var(--font-display);
@@ -4228,7 +4226,7 @@ html[data-door="out"] #hall-main { width: 100%; }
4228
4226
  }
4229
4227
  /* the ring and the core: one ink, breathing */
4230
4228
  .hall-loading::before {
4231
- --hl-shape: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Cpath d='M137 31 A78 78 0 1 0 170 66' fill='none' stroke='black' stroke-width='15' stroke-linecap='round'/%3E%3Ccircle cx='100' cy='100' r='55'/%3E%3C/svg%3E");
4229
+ --hl-shape: url("/modules/ui-design/public/brand/mark-body.svg");
4232
4230
  background: color-mix(in srgb, var(--ink) 30%, var(--bg-card));
4233
4231
  animation:
4234
4232
  hall-loading-turn var(--hl-beat) cubic-bezier(.45, .05, .55, .95) infinite,
@@ -4236,7 +4234,7 @@ html[data-door="out"] #hall-main { width: 100%; }
4236
4234
  }
4237
4235
  /* the dot: the accent, laid exactly over the mark and turning with it */
4238
4236
  .hall-loading::after {
4239
- --hl-shape: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Ccircle cx='156' cy='46' r='12'/%3E%3C/svg%3E");
4237
+ --hl-shape: url("/modules/ui-design/public/brand/mark-dot.svg");
4240
4238
  position: absolute;
4241
4239
  top: var(--hl-pad);
4242
4240
  left: calc(50% - var(--hl-size) / 2);
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <title>Task — {{worldName}}</title>
7
7
  <meta name="description" content="Task details — {{worldName}}.">
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-03-roadmap1">
@@ -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
  <!-- task-detail.js still owns the #/idea/N and #/blocker/N deep-link overlay
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
6
6
  <title>Your sky — {{worldName}}</title>
7
7
  <meta name="description" content="Your thinking, drawn from the ledger: every thought you filed as one of five objects, in the goal that caught it, sized by the work it caused.">
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
  <!-- The faces (Manrope, JetBrains Mono) come from the branding pack's font
@@ -141,7 +141,7 @@
141
141
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
142
142
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
143
143
  <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
144
- <script src="/builders/shell.js?v=2026-11-06-sidebar"></script>
144
+ <script src="/builders/shell.js?v=2026-11-07-brand-mark"></script>
145
145
  <script src="/builders/palette.js" defer></script>
146
146
 
147
147
  <script src="/builders/idea-objects.js?v=2026-09-27-split"></script>
@@ -7,7 +7,7 @@
7
7
  <meta name="viewport" content="width=device-width, initial-scale=1">
8
8
  <title>Tweak a page — {{worldName}}</title>
9
9
  <meta name="description" content="Tweak Mode's editor: every word of one page as a single document, typed over in place and saved as you go, then submitted as one batch.">
10
- <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>">
10
+ <link rel="icon" href="/modules/ui-design/public/brand/favicon.svg" type="image/svg+xml">
11
11
  <link rel="preconnect" href="https://fonts.googleapis.com">
12
12
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
13
13
  <link rel="stylesheet" href="/builders/style.css?v=2026-07-02-shell1">
@@ -145,7 +145,7 @@
145
145
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
146
146
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
147
147
  <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
148
- <script src="/builders/shell.js?v=2026-11-06-sidebar"></script>
148
+ <script src="/builders/shell.js?v=2026-11-07-brand-mark"></script>
149
149
  <script src="/builders/palette.js" defer></script>
150
150
  <script src="/builders/brand-holes.js?v=2026-09-29-aqfix"></script>
151
151
  <script src="/builders/tweak-editor-lib.js?v=2026-09-29-tw27"></script>
@@ -8,7 +8,7 @@
8
8
  <!-- The hub's origin, for the link from a guild's head in the applications queue to
9
9
  its page on the hub (task 1002304). Empty on a vanilla instance: no link. -->
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">
@@ -271,7 +271,7 @@
271
271
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
272
272
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
273
273
  <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
274
- <script src="/builders/shell.js?v=2026-11-06-sidebar"></script>
274
+ <script src="/builders/shell.js?v=2026-11-07-brand-mark"></script>
275
275
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
276
276
  <script src="/builders/palette.js" defer></script>
277
277
  <!-- shared component kit (window.OTBKit) — tabs, ledger, pager (task 2166). -->
@@ -75,11 +75,10 @@ html.wb-open { overflow: hidden; }
75
75
  letter-spacing: -.01em; text-transform: lowercase; white-space: nowrap;
76
76
  }
77
77
  /* the mark's ink follows the painting: pale by night, dark by day; the moon stays salmon */
78
- .wb__ring { stroke: #e2e1e4; }
79
- .wb__planet { fill: #e2e1e4; transform-box: fill-box; transform-origin: center; }
78
+ .wb__mark { --mark-ink: #e2e1e4; }
79
+ .wb__planet { transform-box: fill-box; transform-origin: center; }
80
80
  .wb__moonlet { transform-box: view-box; transform-origin: 100px 100px; }
81
- .wb--day .wb__ring { stroke: #17181a; }
82
- .wb--day .wb__planet { fill: #17181a; }
81
+ .wb--day .wb__mark { --mark-ink: #17181a; }
83
82
  .wb--lit .wb__ring { stroke-dasharray: 100; animation: wb-ring 1.5s cubic-bezier(.6, 0, .2, 1) .5s both; }
84
83
  .wb--lit .wb__planet { animation: wb-planet 1s cubic-bezier(.3, 1.4, .5, 1) .3s both; }
85
84
  .wb--lit .wb__moonlet { animation: wb-orbit 1.6s cubic-bezier(.25, .8, .3, 1) 1.1s both, wb-glow 3.2s ease-in-out 2.7s infinite alternate; }
@@ -57,10 +57,12 @@
57
57
  // The banner is the logo, animated (task 1004953; it replaced "Working on the core of <project>"):
58
58
  // the ring draws in, the planet settles, the moon glides into the gap and glows. A project with its
59
59
  // own logo (theme.logo, ADR 0358) shows that instead, as the sidebar's brand mark does.
60
+ // The parts are referenced one by one from the one mark (task 1005088) so each can move.
61
+ var MARK = '/modules/ui-design/public/brand/mark.svg';
60
62
  var MARK_SVG = '<svg class="wb__mark" viewBox="0 0 200 200" aria-hidden="true">' +
61
- '<path class="wb__ring" d="M137 31 A78 78 0 1 0 170 66" pathLength="100" fill="none" stroke-width="15" stroke-linecap="round"/>' +
62
- '<circle class="wb__planet" cx="100" cy="100" r="55"/>' +
63
- '<circle class="wb__moonlet" cx="156" cy="46" r="12" fill="#fb9569"/></svg>';
63
+ '<use class="wb__ring" href="' + MARK + '#mark-ring"/>' +
64
+ '<use class="wb__planet" href="' + MARK + '#mark-disc"/>' +
65
+ '<use class="wb__moonlet" href="' + MARK + '#mark-dot"/></svg>';
64
66
  function logoHtml(branding) {
65
67
  var logo = branding && branding.theme && branding.theme.logo;
66
68
  var mark = logo ? '<img class="wb__logo" src="' + esc(logo) + '" alt="" width="40" height="40" decoding="async">' : MARK_SVG;
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <title>Tasks — {{worldName}}</title>
7
7
  <meta name="description" content="What {{worldName}} is building right now, and what waits to be claimed.">
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">
@@ -174,7 +174,7 @@
174
174
  <script src="/builders/dom-utils.js?v=2026-11-05-numbers"></script>
175
175
  <script src="/builders/shell-trail.js?v=2026-11-05-numbers"></script>
176
176
  <script src="/builders/craft-mode.js?v=2026-11-05-goals"></script>
177
- <script src="/builders/shell.js?v=2026-11-06-sidebar"></script>
177
+ <script src="/builders/shell.js?v=2026-11-07-brand-mark"></script>
178
178
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
179
179
  <script src="/builders/palette.js" defer></script>
180
180
  <!-- task 1004727: the ONE karma vote control every task/idea list renders -->
@@ -97,11 +97,7 @@
97
97
  <header class="shell bar">
98
98
  <div class="barLeft">
99
99
  <a class="barMark" id="barMark" href="/">
100
- <svg class="bongosMark" viewBox="0 0 200 200" aria-hidden="true">
101
- <path class="mr" d="M137 31 A78 78 0 1 0 170 66" fill="none" stroke="#17181a" stroke-width="15" stroke-linecap="round"/>
102
- <circle class="mp" cx="100" cy="100" r="55" fill="#17181a"/>
103
- <circle cx="156" cy="46" r="12" style="fill:var(--accent)"/>
104
- </svg>
100
+ <svg class="bongosMark" viewBox="0 0 200 200" aria-hidden="true"><use href="/modules/ui-design/public/brand/mark.svg#mark"/></svg>
105
101
  <span>{{productName}}</span>
106
102
  </a>
107
103
  </div>
@@ -576,13 +576,13 @@ p.sec-p{font-size:var(--fs-lede);font-weight:500;color:var(--ink-soft);line-heig
576
576
  }
577
577
  /* the ring and the core: one ink, breathing */
578
578
  .loading-mark::before{
579
- --lm-shape:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Cpath d='M137 31 A78 78 0 1 0 170 66' fill='none' stroke='black' stroke-width='15' stroke-linecap='round'/%3E%3Ccircle cx='100' cy='100' r='55'/%3E%3C/svg%3E");
579
+ --lm-shape:url("/modules/ui-design/public/brand/mark-body.svg");
580
580
  background:color-mix(in srgb,var(--ink) 30%,var(--bg-card));
581
581
  animation:loading-mark-turn 1.6s cubic-bezier(.45,.05,.55,.95) infinite,loading-mark-breathe .8s ease-in-out infinite alternate-reverse;
582
582
  }
583
583
  /* the dot: the accent, laid exactly over the mark and turning with it */
584
584
  .loading-mark::after{
585
- --lm-shape:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Ccircle cx='156' cy='46' r='12'/%3E%3C/svg%3E");
585
+ --lm-shape:url("/modules/ui-design/public/brand/mark-dot.svg");
586
586
  background:var(--accent);
587
587
  }
588
588
  .loading-mark--page{--lm-size:64px;padding:72px 0;gap:16px;}
@@ -623,11 +623,12 @@ p.sec-p{font-size:var(--fs-lede);font-weight:500;color:var(--ink-soft);line-heig
623
623
  color:var(--ink);text-decoration:none;text-shadow:var(--type-halo);}
624
624
  /* the mark: Ink and one light; its Night ink twin on a dark ground (task 1004846) */
625
625
  .barMark svg{width:32px;height:32px;display:block;flex:none;}
626
- :root[data-mode="dark"] .bongosMark .mr{stroke:#e2e1e4;}
627
- :root[data-mode="dark"] .bongosMark .mp{fill:#e2e1e4;}
626
+ /* drawn from the one mark (modules/ui-design/public/brand/mark.svg, task 1005088), coloured by
627
+ --mark-ink (the ring and planet) and --mark-dot (the moon; the accent when unset) */
628
+ .bongosMark{--mark-ink:var(--ink);}
629
+ :root[data-mode="dark"] .bongosMark{--mark-ink:#e2e1e4;}
628
630
  @media (prefers-color-scheme: dark){
629
- :root:not([data-mode="light"]) .bongosMark .mr{stroke:#e2e1e4;}
630
- :root:not([data-mode="light"]) .bongosMark .mp{fill:#e2e1e4;}
631
+ :root:not([data-mode="light"]) .bongosMark{--mark-ink:#e2e1e4;}
631
632
  }
632
633
  .barMark:hover{color:var(--ink);}
633
634
  /* the two-tone focus ring on the bar's and the bands' controls (DESIGN.md
@@ -165,11 +165,7 @@
165
165
  <header class="shell bar">
166
166
  <div class="barLeft">
167
167
  <a class="barMark" id="barMark" href="/">
168
- <svg class="bongosMark" viewBox="0 0 200 200" aria-hidden="true">
169
- <path class="mr" d="M137 31 A78 78 0 1 0 170 66" fill="none" stroke="#17181a" stroke-width="15" stroke-linecap="round"/>
170
- <circle class="mp" cx="100" cy="100" r="55" fill="#17181a"/>
171
- <circle cx="156" cy="46" r="12" style="fill:var(--accent)"/>
172
- </svg>
168
+ <svg class="bongosMark" viewBox="0 0 200 200" aria-hidden="true"><use href="/modules/ui-design/public/brand/mark.svg#mark"/></svg>
173
169
  <span>{{productName}}</span>
174
170
  </a>
175
171
  </div>
@@ -70,11 +70,7 @@
70
70
  <header class="shell bar">
71
71
  <div class="barLeft">
72
72
  <a class="barMark" id="barMark" href="/">
73
- <svg class="bongosMark" viewBox="0 0 200 200" aria-hidden="true">
74
- <path class="mr" d="M137 31 A78 78 0 1 0 170 66" fill="none" stroke="#17181a" stroke-width="15" stroke-linecap="round"/>
75
- <circle class="mp" cx="100" cy="100" r="55" fill="#17181a"/>
76
- <circle cx="156" cy="46" r="12" style="fill:var(--accent)"/>
77
- </svg>
73
+ <svg class="bongosMark" viewBox="0 0 200 200" aria-hidden="true"><use href="/modules/ui-design/public/brand/mark.svg#mark"/></svg>
78
74
  <span>{{productName}}</span>
79
75
  </a>
80
76
  </div>
@@ -50,11 +50,7 @@
50
50
  <header class="shell bar">
51
51
  <div class="barLeft">
52
52
  <a class="barMark" id="barMark" href="/">
53
- <svg class="bongosMark" viewBox="0 0 200 200" aria-hidden="true">
54
- <path class="mr" d="M137 31 A78 78 0 1 0 170 66" fill="none" stroke="#17181a" stroke-width="15" stroke-linecap="round"/>
55
- <circle class="mp" cx="100" cy="100" r="55" fill="#17181a"/>
56
- <circle cx="156" cy="46" r="12" style="fill:var(--accent)"/>
57
- </svg>
53
+ <svg class="bongosMark" viewBox="0 0 200 200" aria-hidden="true"><use href="/modules/ui-design/public/brand/mark.svg#mark"/></svg>
58
54
  <span>{{productName}}</span>
59
55
  </a>
60
56
  </div>
@@ -125,11 +125,7 @@
125
125
  <header class="shell bar">
126
126
  <div class="barLeft">
127
127
  <a class="barMark" id="barMark" href="/">
128
- <svg class="bongosMark" viewBox="0 0 200 200" aria-hidden="true">
129
- <path class="mr" d="M137 31 A78 78 0 1 0 170 66" fill="none" stroke="#17181a" stroke-width="15" stroke-linecap="round"/>
130
- <circle class="mp" cx="100" cy="100" r="55" fill="#17181a"/>
131
- <circle cx="156" cy="46" r="12" style="fill:var(--accent)"/>
132
- </svg>
128
+ <svg class="bongosMark" viewBox="0 0 200 200" aria-hidden="true"><use href="/modules/ui-design/public/brand/mark.svg#mark"/></svg>
133
129
  <span>{{productName}}</span>
134
130
  </a>
135
131
  </div>
@@ -154,9 +154,10 @@ main:focus{outline:none;box-shadow:none}
154
154
  color:var(--ink);text-shadow:var(--type-halo)}
155
155
  /* the mark: Ink and one light; its Night ink twin on a dark ground (task 1004846) */
156
156
  .barMark svg{width:32px;height:32px;display:block;flex:none}
157
- :root[data-mode="dark"] .bongosMark .mr{stroke:#e2e1e4}
158
- :root[data-mode="dark"] .bongosMark .mp{fill:#e2e1e4}
159
- @media (prefers-color-scheme: dark){:root:not([data-mode="light"]) .bongosMark .mr{stroke:#e2e1e4}:root:not([data-mode="light"]) .bongosMark .mp{fill:#e2e1e4}}
157
+ /* drawn from the one mark (modules/ui-design/public/brand/mark.svg, task 1005088) */
158
+ .bongosMark{--mark-ink:var(--ink)}
159
+ :root[data-mode="dark"] .bongosMark{--mark-ink:#e2e1e4}
160
+ @media (prefers-color-scheme: dark){:root:not([data-mode="light"]) .bongosMark{--mark-ink:#e2e1e4}}
160
161
  /* the right group is lowercase text; the OPEN trigger is underlined in the accent */
161
162
  .trig{display:inline-flex;align-items:center;gap:7px;min-height:44px;padding:0;cursor:pointer;
162
163
  background:none;border:0;border-radius:var(--radius-sm);font-family:var(--font-body);font-size:15px;
@@ -690,11 +691,7 @@ composition A; landing composition v3, picked by the owner 2026-08-27. No roll,
690
691
  <header class="topbar bar">
691
692
  <div class="barLeft">
692
693
  <a class="barMark" href="/" aria-label="{{productName}}">
693
- <svg class="bongosMark" viewBox="0 0 200 200" aria-hidden="true">
694
- <path class="mr" d="M137 31 A78 78 0 1 0 170 66" fill="none" stroke="#17181a" stroke-width="15" stroke-linecap="round"/>
695
- <circle class="mp" cx="100" cy="100" r="55" fill="#17181a"/>
696
- <circle cx="156" cy="46" r="12" style="fill:var(--accent)"/>
697
- </svg>
694
+ <svg class="bongosMark" viewBox="0 0 200 200" aria-hidden="true"><use href="/modules/ui-design/public/brand/mark.svg#mark"/></svg>
698
695
  <span class="mark-word">{{productName}}</span>
699
696
  </a>
700
697
  </div>
@@ -80,11 +80,7 @@
80
80
  <header class="shell bar">
81
81
  <div class="barLeft">
82
82
  <a class="barMark" id="barMark" href="/">
83
- <svg class="bongosMark" viewBox="0 0 200 200" aria-hidden="true">
84
- <path class="mr" d="M137 31 A78 78 0 1 0 170 66" fill="none" stroke="#17181a" stroke-width="15" stroke-linecap="round"/>
85
- <circle class="mp" cx="100" cy="100" r="55" fill="#17181a"/>
86
- <circle cx="156" cy="46" r="12" style="fill:var(--accent)"/>
87
- </svg>
83
+ <svg class="bongosMark" viewBox="0 0 200 200" aria-hidden="true"><use href="/modules/ui-design/public/brand/mark.svg#mark"/></svg>
88
84
  <span>{{productName}}</span>
89
85
  </a>
90
86
  </div>
@@ -49,11 +49,7 @@
49
49
  <header class="shell bar">
50
50
  <div class="barLeft">
51
51
  <a class="barMark" id="barMark" href="/">
52
- <svg class="bongosMark" viewBox="0 0 200 200" aria-hidden="true">
53
- <path class="mr" d="M137 31 A78 78 0 1 0 170 66" fill="none" stroke="#17181a" stroke-width="15" stroke-linecap="round"/>
54
- <circle class="mp" cx="100" cy="100" r="55" fill="#17181a"/>
55
- <circle cx="156" cy="46" r="12" style="fill:var(--accent)"/>
56
- </svg>
52
+ <svg class="bongosMark" viewBox="0 0 200 200" aria-hidden="true"><use href="/modules/ui-design/public/brand/mark.svg#mark"/></svg>
57
53
  <span>{{productName}}</span>
58
54
  </a>
59
55
  </div>
@@ -808,11 +808,7 @@ summary{min-height:24px;padding:3px 0;}
808
808
  <header class="shell bar">
809
809
  <div class="barLeft">
810
810
  <a class="barMark" id="barMark" href="/">
811
- <svg class="bongosMark" viewBox="0 0 200 200" aria-hidden="true">
812
- <path class="mr" d="M137 31 A78 78 0 1 0 170 66" fill="none" stroke="#17181a" stroke-width="15" stroke-linecap="round"/>
813
- <circle class="mp" cx="100" cy="100" r="55" fill="#17181a"/>
814
- <circle cx="156" cy="46" r="12" style="fill:var(--accent)"/>
815
- </svg>
811
+ <svg class="bongosMark" viewBox="0 0 200 200" aria-hidden="true"><use href="/modules/ui-design/public/brand/mark.svg#mark"/></svg>
816
812
  <span data-brand-product-inline>Cloud Bongos</span>
817
813
  </a>
818
814
  <!-- under 480 the search folds into this magnifier, which drops one
@@ -49,11 +49,7 @@
49
49
  <header class="shell bar">
50
50
  <div class="barLeft">
51
51
  <a class="barMark" id="barMark" href="/">
52
- <svg class="bongosMark" viewBox="0 0 200 200" aria-hidden="true">
53
- <path class="mr" d="M137 31 A78 78 0 1 0 170 66" fill="none" stroke="#17181a" stroke-width="15" stroke-linecap="round"/>
54
- <circle class="mp" cx="100" cy="100" r="55" fill="#17181a"/>
55
- <circle cx="156" cy="46" r="12" style="fill:var(--accent)"/>
56
- </svg>
52
+ <svg class="bongosMark" viewBox="0 0 200 200" aria-hidden="true"><use href="/modules/ui-design/public/brand/mark.svg#mark"/></svg>
57
53
  <span>{{productName}}</span>
58
54
  </a>
59
55
  </div>
@@ -5,7 +5,8 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <meta name="robots" content="noindex, nofollow">
7
7
  <title>Cloud Bongos — Pre-seed</title>
8
- <link rel="icon" href="{{base}}/assets/favicon.svg" type="image/svg+xml">
8
+ <link rel="icon" href="/modules/ui-design/public/brand/favicon.svg" type="image/svg+xml">
9
+ <link rel="apple-touch-icon" href="/modules/ui-design/public/brand/apple-touch-icon.png">
9
10
  <link rel="preconnect" href="https://fonts.googleapis.com">
10
11
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
11
12
  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400&family=Manrope:wght@300;400;500;600&display=swap">
@@ -16,8 +17,8 @@
16
17
  <body class="gate-body">
17
18
  <main class="gate">
18
19
  <div class="gate__brand">
19
- <img class="logo logo--light" src="{{base}}/assets/logo-ink.svg" alt="" width="56" height="56">
20
- <img class="logo logo--dark" src="{{base}}/assets/logo-night.svg" alt="" width="56" height="56">
20
+ <img class="logo logo--light" src="/modules/ui-design/public/brand/mark-light.svg" alt="" width="56" height="56">
21
+ <img class="logo logo--dark" src="/modules/ui-design/public/brand/mark-dark.svg" alt="" width="56" height="56">
21
22
  <span class="wordmark">cloud bongos</span>
22
23
  </div>
23
24
  {{error}}
@@ -5,7 +5,8 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <meta name="robots" content="noindex, nofollow">
7
7
  <title>Confidentiality agreement — Cloud Bongos</title>
8
- <link rel="icon" href="{{base}}/assets/favicon.svg" type="image/svg+xml">
8
+ <link rel="icon" href="/modules/ui-design/public/brand/favicon.svg" type="image/svg+xml">
9
+ <link rel="apple-touch-icon" href="/modules/ui-design/public/brand/apple-touch-icon.png">
9
10
  <link rel="preconnect" href="https://fonts.googleapis.com">
10
11
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
11
12
  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400&family=Manrope:wght@300;400;500;600&display=swap">
@@ -5,7 +5,8 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <meta name="robots" content="noindex, nofollow">
7
7
  <title>Cloud Bongos — Pre-seed</title>
8
- <link rel="icon" href="{{base}}/assets/favicon.svg" type="image/svg+xml">
8
+ <link rel="icon" href="/modules/ui-design/public/brand/favicon.svg" type="image/svg+xml">
9
+ <link rel="apple-touch-icon" href="/modules/ui-design/public/brand/apple-touch-icon.png">
9
10
  <link rel="preconnect" href="https://fonts.googleapis.com">
10
11
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
11
12
  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400&family=Manrope:wght@300;400;500;600&display=swap">
@@ -20,8 +21,8 @@
20
21
  {{editBar}}
21
22
  <header class="top">
22
23
  <a class="brand" href="#top" aria-label="Cloud Bongos — back to top">
23
- <img class="logo logo--light" src="{{base}}/assets/logo-ink.svg" alt="" width="32" height="32">
24
- <img class="logo logo--dark" src="{{base}}/assets/logo-night.svg" alt="" width="32" height="32">
24
+ <img class="logo logo--light" src="/modules/ui-design/public/brand/mark-light.svg" alt="" width="32" height="32">
25
+ <img class="logo logo--dark" src="/modules/ui-design/public/brand/mark-dark.svg" alt="" width="32" height="32">
25
26
  <span class="wordmark">cloud bongos</span>
26
27
  </a>
27
28
  <nav class="top__actions">
@@ -3,14 +3,20 @@
3
3
  <head>
4
4
  <meta charset="utf-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
- <title>Explore — projects on the map</title>
6
+ <title>Explore — projects on the map · {{productName}}</title>
7
+ <link rel="icon" href="/modules/ui-design/public/brand/favicon.svg" type="image/svg+xml">
8
+ <!-- The faces, the palette and the favicon are the pack's: the server serves this
9
+ page through the same branding injection as the status page (task 1005089), so
10
+ the pack's font links land at the end of <head>. -->
7
11
  <style>
8
12
  /* Self-contained so the showcase renders correctly whether or not the host
9
13
  injects theme tokens. Warm Cloud Bongos defaults; overridable by the pack. */
10
14
  :root {
11
15
  /* a hand-written mirror of config/branding.neutral.json theme.ui.colors —
12
- this page is served without the branding injection, so a drifted value
13
- renders a palette the product no longer paints (tests/design_tokens_sync.mjs).
16
+ the FALLBACK for wherever this page is opened without the branding
17
+ injection (the server injects it since task 1005089, and the pack's :root
18
+ then wins); a drifted value would render a palette the product no longer
19
+ paints there (tests/design_tokens_sync.mjs).
14
20
  Chrome world, task 1003298. --accent-deep is the TEXT-safe accent: the
15
21
  salmon --accent is a fill and measures 2.1:1 as type on the card. */
16
22
  --bg: #edecee; --card: #fbfafc; --ink: #17181a; --ink-soft: #55565a;
@@ -92,8 +98,12 @@
92
98
  .card.anon:hover { transform: none; box-shadow: none; }
93
99
  .card.anon h2 { color: var(--ink-soft); font-weight: 600; }
94
100
 
101
+ /* dark, written twice, byte-identical, on the hall's pair: (0,1,1) outranks the
102
+ pack's spliced :root, so dark survives the injection */
103
+ html[data-theme="dark"] { --bg: #000000; --card: #101012; --ink: #ffffff; --ink-soft: #c0c0c0; --rule: rgba(255,255,255,.16);
104
+ --accent-deep: color-mix(in srgb, var(--accent) 45%, #ffffff); }
95
105
  @media (prefers-color-scheme: dark) {
96
- :root { --bg: #000000; --card: #101012; --ink: #ffffff; --ink-soft: #c0c0c0; --rule: rgba(255,255,255,.16);
106
+ html:not([data-theme]) { --bg: #000000; --card: #101012; --ink: #ffffff; --ink-soft: #c0c0c0; --rule: rgba(255,255,255,.16);
97
107
  --accent-deep: color-mix(in srgb, var(--accent) 45%, #ffffff); }
98
108
  }
99
109
  </style>