@bongos/core 1.19.725 → 1.19.727

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 (229) hide show
  1. package/.bongos-core.json +179 -494
  2. package/.devcontainer/Dockerfile +1 -1
  3. package/.devcontainer/devcontainer.json +2 -2
  4. package/.devcontainer/healthcheck.sh +1 -1
  5. package/.devcontainer/init-firewall.sh +1 -1
  6. package/.devcontainer/post-create.sh +2 -2
  7. package/.env.local.example +1 -1
  8. package/Dockerfile +1 -1
  9. package/docs/copy-inventory.md +1 -1
  10. package/docs/copy-registry.json +9 -9
  11. package/docs/module-api-changelog.md +4 -0
  12. package/docs/recipes/devbox-app-release.md +4 -4
  13. package/modules/dev-box/app/scripts/dmgbuild-settings.py +5 -5
  14. package/modules/dev-box/app/scripts/gen-brand.js +1 -1
  15. package/modules/dev-box/app/src/brand.js +1 -1
  16. package/modules/dev-box/app/test/unit.mjs +16 -16
  17. package/modules/dev-box/box-access.js +1 -1
  18. package/modules/dev-box/routes/box.js +1 -1
  19. package/modules/discord/discord-approvals.js +1 -1
  20. package/modules/grading/grader-model.js +1 -1
  21. package/modules/grading/grader-prompt.js +1 -1
  22. package/modules/grading/grader-workers/quality.js +1 -1
  23. package/modules/hall-ui/module.json +1 -1
  24. package/modules/hall-ui/public/brand-apply.js +1 -1
  25. package/modules/hall-ui/public/shell.js +1 -1
  26. package/modules/hall-ui/public/work.js +1 -1
  27. package/modules/lifecycle/conflict-resolve.js +1 -1
  28. package/modules/lifecycle/db-analytics.js +1 -1
  29. package/modules/lifecycle/routes/analytics.js +1 -1
  30. package/modules/onboarding/approval-broadcast.js +1 -1
  31. package/modules/onboarding/onboarding.js +1 -1
  32. package/modules/provisioning/tests/liveness.mjs +1 -1
  33. package/modules/public-landing/public/index.html +1 -1
  34. package/modules/public-landing/public/projects-floor.states.json +2 -2
  35. package/modules/public-landing/public/projects.probes.json +4 -4
  36. package/modules/public-landing/public/projects.states.json +2 -2
  37. package/modules/status-ui/module.json +1 -1
  38. package/modules/status-ui/public/status.js +4 -4
  39. package/modules/status-ui/public/style.css +1 -1
  40. package/modules/ui-design/kit/fixtures/cost-summary.json +1 -1
  41. package/modules/ui-design/kit/fixtures/featured-hub.json +1 -1
  42. package/modules/ui-design/kit/fixtures/featured.json +1 -1
  43. package/modules/ui-design/kit/fixtures/leaderboard.json +1 -1
  44. package/modules/ui-design/kit/fixtures/my-projects.json +1 -1
  45. package/modules/ui-design/kit/fixtures/progress.json +1 -1
  46. package/modules/ui-design/kit/fixtures/recent-shipped.json +1 -1
  47. package/package-lock.json +2 -2
  48. package/package.json +1 -1
  49. package/scripts/cron/style_guide_audit.sh +1 -1
  50. package/scripts/discord/lib.js +1 -1
  51. package/scripts/discord/post.js +1 -1
  52. package/scripts/gds/audit-authorship.sh +1 -1
  53. package/scripts/gds/audit-replay.sh +29 -2
  54. package/scripts/gds/audit-ships.js +1 -1
  55. package/scripts/gds/backfill-sessions.js +2 -2
  56. package/scripts/gds/cf-tunnel.js +4 -4
  57. package/scripts/gds/claude-materialize.js +2 -2
  58. package/scripts/gds/cli-lib.js +6 -6
  59. package/scripts/gds/cutover-codemod.js +1 -1
  60. package/scripts/gds/dev-lib.js +2 -2
  61. package/scripts/gds/diagnose-achievements.js +2 -2
  62. package/scripts/gds/fitness-checks-identity.js +6 -4
  63. package/scripts/gds/gate-review.js +14 -6
  64. package/scripts/gds/gen-diagrams.js +1 -1
  65. package/scripts/gds/leak-scan-allowlist.js +293 -0
  66. package/scripts/gds/learning-capture.js +1 -1
  67. package/scripts/gds/linkify-refs.js +2 -2
  68. package/scripts/gds/local-preview-lib.js +1 -1
  69. package/scripts/gds/mirror-lineage-check.js +1 -1
  70. package/scripts/gds/mirror-redact.js +17 -2
  71. package/scripts/gds/newcomer-floor.templates.json +1 -1
  72. package/scripts/gds/package-core.js +18 -1
  73. package/scripts/gds/paste-token.js +1 -1
  74. package/scripts/gds/provision-units.js +2 -2
  75. package/scripts/gds/publish-manifest.js +15 -0
  76. package/scripts/gds/repo-metrics.js +1 -1
  77. package/scripts/gds/sandbox-stage.js +1 -1
  78. package/scripts/gds/seed-bongos-coreB-tranche1-tasks.js +1 -1
  79. package/scripts/gds/seed-bongos-coreB-tranche2-tasks.js +1 -1
  80. package/scripts/gds/seed-bongos-goal-hierarchy-tasks.js +1 -1
  81. package/scripts/gds/seed-bongos-tasks.js +2 -2
  82. package/scripts/gds/seed-gds-v4-tasks.js +1 -1
  83. package/scripts/gds/seed-medusa-tasks.js +10 -10
  84. package/scripts/gds/seed-module-upstreaming.js +1 -1
  85. package/scripts/gds/seed-productization-tasks.js +6 -6
  86. package/scripts/gds/seed-provisioning-tasks.js +2 -2
  87. package/scripts/gds/seed-staging.sh +19 -6
  88. package/scripts/gds/ship-deploy-target.js +1 -1
  89. package/scripts/gds/ship-flow.js +1 -1
  90. package/scripts/gds/smoke-gds.js +1 -1
  91. package/scripts/status-probe.mjs +2 -2
  92. package/src/bongos/auth-discord.js +2 -2
  93. package/src/bongos/live-channel.js +1 -1
  94. package/src/bongos/permission-path-check.js +80 -3
  95. package/src/bongos/pool.js +1 -1
  96. package/src/bongos/routes/auth.js +11 -11
  97. package/src/bongos/routes/security.js +1 -1
  98. package/src/bongos/routes.js +1 -1
  99. package/src/branding.js +1 -1
  100. package/src/devbox-downloads.js +1 -1
  101. package/src/instance-config.js +2 -2
  102. package/src/module-api.js +1 -1
  103. package/src/module-loader/provenance.js +2 -2
  104. package/tests/art_stage.mjs +2 -2
  105. package/tests/auth_anthropic_identity.mjs +1 -1
  106. package/tests/auth_duplicate_cookie.mjs +1 -1
  107. package/tests/auth_error_brand.mjs +1 -1
  108. package/tests/auth_inactive_builder.mjs +1 -1
  109. package/tests/backup_cli.mjs +4 -4
  110. package/tests/bongos_box_connect.mjs +2 -2
  111. package/tests/bongos_downloads.mjs +2 -2
  112. package/tests/bongos_login.mjs +5 -5
  113. package/tests/box_connect_e2e.mjs +2 -2
  114. package/tests/box_dns_repoint.mjs +10 -10
  115. package/tests/box_host_keys.mjs +1 -1
  116. package/tests/box_onboard.mjs +9 -9
  117. package/tests/box_scope_session.mjs +1 -1
  118. package/tests/box_terminal_ssrf.mjs +7 -7
  119. package/tests/boxes.mjs +9 -9
  120. package/tests/branding.mjs +2 -2
  121. package/tests/bump_version.mjs +2 -2
  122. package/tests/cf_tunnel.mjs +40 -40
  123. package/tests/cli_token_reissue.mjs +7 -7
  124. package/tests/cloud_bongos_pack.mjs +1 -1
  125. package/tests/currency_label.mjs +8 -8
  126. package/tests/dev_lib.mjs +4 -4
  127. package/tests/devbox_dmg_backdrop.mjs +1 -1
  128. package/tests/devbox_downloads.mjs +2 -2
  129. package/tests/devbox_icons.mjs +1 -1
  130. package/tests/discord_approvals.mjs +1 -1
  131. package/tests/discord_oauth.mjs +2 -2
  132. package/tests/executed_closure.mjs +6 -1
  133. package/tests/first_admin_bootstrap.mjs +1 -1
  134. package/tests/gate_approvals.mjs +5 -5
  135. package/tests/government_protected_surfaces.mjs +137 -0
  136. package/tests/grade_aggregates_unavailable.mjs +1 -1
  137. package/tests/hook_user_agents.mjs +2 -2
  138. package/tests/init.mjs +6 -6
  139. package/tests/instance_config.mjs +1 -1
  140. package/tests/instance_manifest.mjs +5 -5
  141. package/tests/instance_mismatch_guard.mjs +13 -13
  142. package/tests/leak_scan_allowlist.mjs +94 -0
  143. package/tests/migrate_root_resolution.mjs +4 -4
  144. package/tests/mirror_redact.mjs +28 -4
  145. package/tests/module_catalog.mjs +5 -5
  146. package/tests/module_submissions.mjs +3 -3
  147. package/tests/package_core.mjs +1 -1
  148. package/tests/parallel-load.mjs +6 -6
  149. package/tests/projects_hub.mjs +2 -2
  150. package/tests/provision.mjs +50 -50
  151. package/tests/provisioning_github_app_routes.mjs +1 -1
  152. package/tests/provisioning_onboard_mode.mjs +2 -2
  153. package/tests/publish_reconciler.mjs +4 -4
  154. package/tests/sandbox_stage.mjs +1 -1
  155. package/tests/scrubber_corpus.mjs +3 -3
  156. package/tests/search_isolation.mjs +1 -1
  157. package/tests/session_records.mjs +1 -1
  158. package/tests/ship_card.mjs +6 -6
  159. package/tests/ship_ci_deploy.mjs +1 -1
  160. package/tests/single_host_hall.mjs +9 -9
  161. package/tests/smoke_preflight.mjs +1 -1
  162. package/tests/smoke_target.mjs +1 -1
  163. package/tests/status-probe.mjs +1 -1
  164. package/tests/status_mirror_sync.mjs +1 -1
  165. package/docs/adr/0004-amazonprimea-name-and-trademark-acceptance.md +0 -45
  166. package/docs/design/mocks/_schemes.css +0 -604
  167. package/docs/design/mocks/component-sheet.html +0 -428
  168. package/docs/design/mocks/hall/_tokens.css +0 -370
  169. package/docs/design/mocks/hall/board/v1.html +0 -846
  170. package/docs/design/mocks/hall/board/v2.html +0 -858
  171. package/docs/design/mocks/hall/board/v3.html +0 -884
  172. package/docs/design/mocks/hall/goals/v1.html +0 -1212
  173. package/docs/design/mocks/hall/goals/v2.html +0 -1192
  174. package/docs/design/mocks/hall/goals/v3.html +0 -1205
  175. package/docs/design/mocks/hall/hall-sheet.html +0 -244
  176. package/docs/design/mocks/hall/reading/v1.html +0 -1125
  177. package/docs/design/mocks/hall/reading/v2.html +0 -1177
  178. package/docs/design/mocks/hall/reading/v3.html +0 -1150
  179. package/docs/design/mocks/hall/settings/v1.html +0 -1238
  180. package/docs/design/mocks/hall/settings/v2.html +0 -1235
  181. package/docs/design/mocks/hall/settings/v3.html +0 -1299
  182. package/docs/design/mocks/hall/task/v1.html +0 -633
  183. package/docs/design/mocks/hall/task/v2.html +0 -646
  184. package/docs/design/mocks/hall/task/v3.html +0 -647
  185. package/docs/design/mocks/hub/assets/r3-space-deepfield-half.jpg +0 -0
  186. package/docs/design/mocks/hub/assets/r3-space-deepfield-half.jpg.json +0 -13
  187. package/docs/design/mocks/hub/assets/r3-space-dust-half.jpg +0 -0
  188. package/docs/design/mocks/hub/assets/r3-space-dust-half.jpg.json +0 -13
  189. package/docs/design/mocks/hub/assets/r3-space-nebula-half.jpg +0 -0
  190. package/docs/design/mocks/hub/assets/r3-space-nebula-half.jpg.json +0 -13
  191. package/docs/design/mocks/hub/assets/r3-space-starfield-half.jpg +0 -0
  192. package/docs/design/mocks/hub/assets/r3-space-starfield-half.jpg.json +0 -13
  193. package/docs/design/mocks/hub/hub-sheet.html +0 -192
  194. package/docs/design/mocks/hub/mine.html +0 -465
  195. package/docs/design/mocks/hub/picker.html +0 -421
  196. package/docs/design/mocks/hub/planets.html +0 -356
  197. package/docs/design/mocks/hub/v1.html +0 -1209
  198. package/docs/design/mocks/hub/v2.html +0 -1257
  199. package/docs/design/mocks/hub/v3.html +0 -1496
  200. package/docs/design/mocks/hub/wizard.html +0 -421
  201. package/docs/design/mocks/landing/landing-sheet.html +0 -131
  202. package/docs/design/mocks/landing/v1.html +0 -956
  203. package/docs/design/mocks/landing/v2.html +0 -708
  204. package/docs/design/mocks/landing/v3.html +0 -911
  205. package/docs/design/mocks/landing-page-mock.html +0 -687
  206. package/docs/design/mocks/landing-palettes.html +0 -103
  207. package/docs/design/mocks/projects-hub-mock.html +0 -991
  208. package/docs/design/mocks/projects-hub-variants.html +0 -146
  209. package/docs/design/mocks/projects-page-mock.html +0 -167
  210. package/docs/design/mocks/world/blue-hud/_tokens.css +0 -246
  211. package/docs/design/mocks/world/blue-hud/hall.html +0 -595
  212. package/docs/design/mocks/world/blue-hud/landing.html +0 -424
  213. package/docs/design/mocks/world/blue-hud/status.html +0 -410
  214. package/docs/design/mocks/world/chrome-blobs/_tokens.css +0 -479
  215. package/docs/design/mocks/world/chrome-blobs/hall.html +0 -553
  216. package/docs/design/mocks/world/chrome-blobs/landing-b.html +0 -581
  217. package/docs/design/mocks/world/chrome-blobs/landing.html +0 -328
  218. package/docs/design/mocks/world/chrome-blobs/status.html +0 -416
  219. package/docs/design/mocks/world/natgeo-editorial/_tokens.css +0 -377
  220. package/docs/design/mocks/world/natgeo-editorial/hall.html +0 -649
  221. package/docs/design/mocks/world/natgeo-editorial/landing-b.html +0 -743
  222. package/docs/design/mocks/world/natgeo-editorial/landing.html +0 -475
  223. package/docs/design/mocks/world/natgeo-editorial/status.html +0 -437
  224. package/docs/design/mocks/world/organic-cards/_tokens.css +0 -462
  225. package/docs/design/mocks/world/organic-cards/hall.html +0 -625
  226. package/docs/design/mocks/world/organic-cards/landing-b.html +0 -736
  227. package/docs/design/mocks/world/organic-cards/landing.html +0 -420
  228. package/docs/design/mocks/world/organic-cards/status.html +0 -458
  229. package/docs/design/mocks/world/world-sheet.html +0 -156
@@ -1,604 +0,0 @@
1
- /* ══════════════════════════════════════════════════════════════════════
2
- CANDIDATE PALETTES — task 1002747, goal 1000061
3
-
4
- MOCK AFFORDANCE. Each block below is what a branding pack DOES: it
5
- overrides the cosmos.css contract tier. On a real instance exactly ONE
6
- of these exists, and it arrives via config/branding.json ->
7
- themeMarkup()'s injected :root, not from a stylesheet like this one.
8
- The switcher exists so six can be compared in one sitting.
9
-
10
- Every pair below was checked with a WCAG contrast calculator, not by
11
- eye: ink/card, inkSoft/card, inkFaint/card, white-on-accent,
12
- accentDeep-as-link/card, and ink/pageBg, in BOTH modes. All six pass.
13
- The palette shipping TODAY does not: white on --accent #f97316 is
14
- 2.80:1 against a 4.5 requirement, and --accent-deep as link text is
15
- 3.56:1. That is a live defect on /create and /projects.
16
- ══════════════════════════════════════════════════════════════════════ */
17
-
18
- /* ── ember marigold — The same Lion-King sunrise, but with the milk taken out — pigmented marigold air, ivory cards, and an ember-orange that has been fired down from SaaS-bright into something with heat behind it. ── */
19
- :root[data-scheme="ember-marigold"]{
20
- --bg:#f9d9a8;
21
- --bg-card:#fffaf2;
22
- --bg-deep:#f6d8ae;
23
- --ink:#2b170e;
24
- --ink-soft:#6d4a33;
25
- --ink-faint:#9b7657;
26
- --rule:#e8a463;
27
- --rule-soft:#f6d8ae;
28
- --accent:#ce4806;
29
- --accent-deep:#9e3406;
30
- --sea:#0f7a96;
31
- --terracotta:color-mix(in srgb, var(--accent) 62%, var(--sea));
32
- --page-bg:#f9d9a8;
33
- --sky-bg:undefined;
34
- --band-bg:linear-gradient(165deg, #22110a 0%, #361a0e 40%, #4a2110 72%, #2a1409 100%);
35
- --star-display:none;
36
- --chrome-ink:#2b170e;
37
- --chrome-ink-dim:#6d4a33;
38
- --chrome-accent:#ce4806;
39
- --chrome-glow:none;
40
- --glass-ink:#6d4a33;
41
- --glass-bg:rgba(255,255,255,0.62);
42
- --glass-border:color-mix(in srgb, var(--accent) 42%, transparent);
43
- --ava-shadow:0 2px 8px rgba(0,0,0,.14);
44
- --hero-lede:#6d4a33;
45
- --hero-b:#9e3406;
46
- --foot-ink:#9b7657;
47
- --foot-code:#9e3406;
48
- --shadow-card:0 18px 44px -22px color-mix(in srgb, var(--ink) 42%, transparent), 0 4px 14px -6px color-mix(in srgb, var(--ink) 20%, transparent);
49
- color-scheme:light;
50
- }
51
- :root[data-scheme="ember-marigold"][data-mode="dark"]{
52
- --bg:#150c06;
53
- --bg-card:#2c1710;
54
- --bg-deep:#3f2317;
55
- --ink:#fdeedd;
56
- --ink-soft:#dcb693;
57
- --ink-faint:#957559;
58
- --rule:#5e3521;
59
- --rule-soft:#3f2317;
60
- --accent:#cf4a08;
61
- --accent-deep:#ffab63;
62
- --sea:#56d0ef;
63
- --terracotta:color-mix(in srgb, var(--accent) 62%, var(--sea));
64
- --page-bg:#150c06;
65
- --sky-bg:undefined;
66
- --band-bg:linear-gradient(165deg, #22110a 0%, #361a0e 40%, #4a2110 72%, #2a1409 100%);
67
- --star-display:block;
68
- --chrome-ink:#fdeedd;
69
- --chrome-ink-dim:#dcb693;
70
- --chrome-accent:#ffab63;
71
- --chrome-glow:0 2px 12px rgba(0,0,0,.65);
72
- --glass-ink:#ffab63;
73
- --glass-bg:rgba(255,255,255,0.07);
74
- --glass-border:color-mix(in srgb, var(--accent) 42%, transparent);
75
- --ava-shadow:0 0 14px color-mix(in srgb, var(--accent) 45%, transparent);
76
- --hero-lede:#dcb693;
77
- --hero-b:#ffab63;
78
- --foot-ink:#957559;
79
- --foot-code:#ffab63;
80
- --shadow-card:0 24px 60px -24px rgba(0,0,0,.6), 0 6px 22px -8px rgba(0,0,0,.4);
81
- color-scheme:dark;
82
- }
83
- @media(prefers-color-scheme:dark){:root[data-scheme="ember-marigold"]:not([data-mode="light"]){
84
- --bg:#150c06;
85
- --bg-card:#2c1710;
86
- --bg-deep:#3f2317;
87
- --ink:#fdeedd;
88
- --ink-soft:#dcb693;
89
- --ink-faint:#957559;
90
- --rule:#5e3521;
91
- --rule-soft:#3f2317;
92
- --accent:#cf4a08;
93
- --accent-deep:#ffab63;
94
- --sea:#56d0ef;
95
- --terracotta:color-mix(in srgb, var(--accent) 62%, var(--sea));
96
- --page-bg:#150c06;
97
- --sky-bg:undefined;
98
- --band-bg:linear-gradient(165deg, #22110a 0%, #361a0e 40%, #4a2110 72%, #2a1409 100%);
99
- --star-display:block;
100
- --chrome-ink:#fdeedd;
101
- --chrome-ink-dim:#dcb693;
102
- --chrome-accent:#ffab63;
103
- --chrome-glow:0 2px 12px rgba(0,0,0,.65);
104
- --glass-ink:#ffab63;
105
- --glass-bg:rgba(255,255,255,0.07);
106
- --glass-border:color-mix(in srgb, var(--accent) 42%, transparent);
107
- --ava-shadow:0 0 14px color-mix(in srgb, var(--accent) 45%, transparent);
108
- --hero-lede:#dcb693;
109
- --hero-b:#ffab63;
110
- --foot-ink:#957559;
111
- --foot-code:#ffab63;
112
- --shadow-card:0 24px 60px -24px rgba(0,0,0,.6), 0 6px 22px -8px rgba(0,0,0,.4);
113
- color-scheme:dark;
114
- }}
115
-
116
- /* ── deep water — Standing at the edge of a warm lagoon at dawn — clear, cool, unhurried, with light still moving in the water. ── */
117
- :root[data-scheme="deep-water"]{
118
- --bg:#e9f6fb;
119
- --bg-card:#fbfeff;
120
- --bg-deep:#e0f0f6;
121
- --ink:#08323f;
122
- --ink-soft:#37697a;
123
- --ink-faint:#6b93a0;
124
- --rule:#c7e3ec;
125
- --rule-soft:#e0f0f6;
126
- --accent:#0d7f97;
127
- --accent-deep:#0a5f78;
128
- --sea:#38bdf8;
129
- --terracotta:color-mix(in srgb, var(--accent) 62%, var(--sea));
130
- --page-bg:#e9f6fb;
131
- --sky-bg:undefined;
132
- --band-bg:linear-gradient(160deg, #072634 0%, #0b3a4f 38%, #0f4a63 60%, #062230 100%);
133
- --star-display:none;
134
- --chrome-ink:#08323f;
135
- --chrome-ink-dim:#37697a;
136
- --chrome-accent:#0d7f97;
137
- --chrome-glow:none;
138
- --glass-ink:#37697a;
139
- --glass-bg:rgba(255,255,255,0.62);
140
- --glass-border:color-mix(in srgb, var(--accent) 42%, transparent);
141
- --ava-shadow:0 2px 8px rgba(0,0,0,.14);
142
- --hero-lede:#37697a;
143
- --hero-b:#0a5f78;
144
- --foot-ink:#6b93a0;
145
- --foot-code:#0a5f78;
146
- --shadow-card:0 18px 44px -22px color-mix(in srgb, var(--ink) 42%, transparent), 0 4px 14px -6px color-mix(in srgb, var(--ink) 20%, transparent);
147
- color-scheme:light;
148
- }
149
- :root[data-scheme="deep-water"][data-mode="dark"]{
150
- --bg:#03151d;
151
- --bg-card:#082935;
152
- --bg-deep:#0e3446;
153
- --ink:#eef9ff;
154
- --ink-soft:#8fbdd0;
155
- --ink-faint:#547d8f;
156
- --rule:#174055;
157
- --rule-soft:#0e3446;
158
- --accent:#0b8296;
159
- --accent-deep:#17a0bd;
160
- --sea:#56d8f5;
161
- --terracotta:color-mix(in srgb, var(--accent) 62%, var(--sea));
162
- --page-bg:#03151d;
163
- --sky-bg:undefined;
164
- --band-bg:linear-gradient(160deg, #072634 0%, #0b3a4f 38%, #0f4a63 60%, #062230 100%);
165
- --star-display:block;
166
- --chrome-ink:#eef9ff;
167
- --chrome-ink-dim:#8fbdd0;
168
- --chrome-accent:#17a0bd;
169
- --chrome-glow:0 2px 12px rgba(0,0,0,.65);
170
- --glass-ink:#17a0bd;
171
- --glass-bg:rgba(255,255,255,0.07);
172
- --glass-border:color-mix(in srgb, var(--accent) 42%, transparent);
173
- --ava-shadow:0 0 14px color-mix(in srgb, var(--accent) 45%, transparent);
174
- --hero-lede:#8fbdd0;
175
- --hero-b:#17a0bd;
176
- --foot-ink:#547d8f;
177
- --foot-code:#17a0bd;
178
- --shadow-card:0 24px 60px -24px rgba(0,0,0,.6), 0 6px 22px -8px rgba(0,0,0,.4);
179
- color-scheme:dark;
180
- }
181
- @media(prefers-color-scheme:dark){:root[data-scheme="deep-water"]:not([data-mode="light"]){
182
- --bg:#03151d;
183
- --bg-card:#082935;
184
- --bg-deep:#0e3446;
185
- --ink:#eef9ff;
186
- --ink-soft:#8fbdd0;
187
- --ink-faint:#547d8f;
188
- --rule:#174055;
189
- --rule-soft:#0e3446;
190
- --accent:#0b8296;
191
- --accent-deep:#17a0bd;
192
- --sea:#56d8f5;
193
- --terracotta:color-mix(in srgb, var(--accent) 62%, var(--sea));
194
- --page-bg:#03151d;
195
- --sky-bg:undefined;
196
- --band-bg:linear-gradient(160deg, #072634 0%, #0b3a4f 38%, #0f4a63 60%, #062230 100%);
197
- --star-display:block;
198
- --chrome-ink:#eef9ff;
199
- --chrome-ink-dim:#8fbdd0;
200
- --chrome-accent:#17a0bd;
201
- --chrome-glow:0 2px 12px rgba(0,0,0,.65);
202
- --glass-ink:#17a0bd;
203
- --glass-bg:rgba(255,255,255,0.07);
204
- --glass-border:color-mix(in srgb, var(--accent) 42%, transparent);
205
- --ava-shadow:0 0 14px color-mix(in srgb, var(--accent) 45%, transparent);
206
- --hero-lede:#8fbdd0;
207
- --hero-b:#17a0bd;
208
- --foot-ink:#547d8f;
209
- --foot-code:#17a0bd;
210
- --shadow-card:0 24px 60px -24px rgba(0,0,0,.6), 0 6px 22px -8px rgba(0,0,0,.4);
211
- color-scheme:dark;
212
- }}
213
-
214
- /* ── plumfield — A warm plum nebula at dusk — deep violet space with a magenta bloom in it, soft enough that rounded type feels at home rather than clinical. ── */
215
- :root[data-scheme="plumfield"]{
216
- --bg:#f7f2fb;
217
- --bg-card:#fdfbff;
218
- --bg-deep:#efe6f7;
219
- --ink:#241636;
220
- --ink-soft:#5b4570;
221
- --ink-faint:#8b7ba3;
222
- --rule:#e0d3ee;
223
- --rule-soft:#efe6f7;
224
- --accent:#932bcf;
225
- --accent-deep:#7b1fae;
226
- --sea:#2f1b4d;
227
- --terracotta:color-mix(in srgb, var(--accent) 62%, var(--sea));
228
- --page-bg:#f7f2fb;
229
- --sky-bg:undefined;
230
- --band-bg:linear-gradient(135deg, #1c1033 0%, #2b1550 46%, #3a1450 78%, #241239 100%);
231
- --star-display:none;
232
- --chrome-ink:#241636;
233
- --chrome-ink-dim:#5b4570;
234
- --chrome-accent:#932bcf;
235
- --chrome-glow:none;
236
- --glass-ink:#5b4570;
237
- --glass-bg:rgba(255,255,255,0.62);
238
- --glass-border:color-mix(in srgb, var(--accent) 42%, transparent);
239
- --ava-shadow:0 2px 8px rgba(0,0,0,.14);
240
- --hero-lede:#5b4570;
241
- --hero-b:#7b1fae;
242
- --foot-ink:#8b7ba3;
243
- --foot-code:#7b1fae;
244
- --shadow-card:0 18px 44px -22px color-mix(in srgb, var(--ink) 42%, transparent), 0 4px 14px -6px color-mix(in srgb, var(--ink) 20%, transparent);
245
- color-scheme:light;
246
- }
247
- :root[data-scheme="plumfield"][data-mode="dark"]{
248
- --bg:#150c24;
249
- --bg-card:#261640;
250
- --bg-deep:#2f1c4c;
251
- --ink:#f2e9ff;
252
- --ink-soft:#c5b0e4;
253
- --ink-faint:#9384b0;
254
- --rule:#3d2a5e;
255
- --rule-soft:#2f1c4c;
256
- --accent:#9a3ee0;
257
- --accent-deep:#d3b6fb;
258
- --sea:#0f0819;
259
- --terracotta:color-mix(in srgb, var(--accent) 62%, var(--sea));
260
- --page-bg:#150c24;
261
- --sky-bg:undefined;
262
- --band-bg:linear-gradient(135deg, #1c1033 0%, #2b1550 46%, #3a1450 78%, #241239 100%);
263
- --star-display:block;
264
- --chrome-ink:#f2e9ff;
265
- --chrome-ink-dim:#c5b0e4;
266
- --chrome-accent:#d3b6fb;
267
- --chrome-glow:0 2px 12px rgba(0,0,0,.65);
268
- --glass-ink:#d3b6fb;
269
- --glass-bg:rgba(255,255,255,0.07);
270
- --glass-border:color-mix(in srgb, var(--accent) 42%, transparent);
271
- --ava-shadow:0 0 14px color-mix(in srgb, var(--accent) 45%, transparent);
272
- --hero-lede:#c5b0e4;
273
- --hero-b:#d3b6fb;
274
- --foot-ink:#9384b0;
275
- --foot-code:#d3b6fb;
276
- --shadow-card:0 24px 60px -24px rgba(0,0,0,.6), 0 6px 22px -8px rgba(0,0,0,.4);
277
- color-scheme:dark;
278
- }
279
- @media(prefers-color-scheme:dark){:root[data-scheme="plumfield"]:not([data-mode="light"]){
280
- --bg:#150c24;
281
- --bg-card:#261640;
282
- --bg-deep:#2f1c4c;
283
- --ink:#f2e9ff;
284
- --ink-soft:#c5b0e4;
285
- --ink-faint:#9384b0;
286
- --rule:#3d2a5e;
287
- --rule-soft:#2f1c4c;
288
- --accent:#9a3ee0;
289
- --accent-deep:#d3b6fb;
290
- --sea:#0f0819;
291
- --terracotta:color-mix(in srgb, var(--accent) 62%, var(--sea));
292
- --page-bg:#150c24;
293
- --sky-bg:undefined;
294
- --band-bg:linear-gradient(135deg, #1c1033 0%, #2b1550 46%, #3a1450 78%, #241239 100%);
295
- --star-display:block;
296
- --chrome-ink:#f2e9ff;
297
- --chrome-ink-dim:#c5b0e4;
298
- --chrome-accent:#d3b6fb;
299
- --chrome-glow:0 2px 12px rgba(0,0,0,.65);
300
- --glass-ink:#d3b6fb;
301
- --glass-bg:rgba(255,255,255,0.07);
302
- --glass-border:color-mix(in srgb, var(--accent) 42%, transparent);
303
- --ava-shadow:0 0 14px color-mix(in srgb, var(--accent) 45%, transparent);
304
- --hero-lede:#c5b0e4;
305
- --hero-b:#d3b6fb;
306
- --foot-ink:#9384b0;
307
- --foot-code:#d3b6fb;
308
- --shadow-card:0 24px 60px -24px rgba(0,0,0,.6), 0 6px 22px -8px rgba(0,0,0,.4);
309
- color-scheme:dark;
310
- }}
311
-
312
- /* ── sapwood — A shaded garden at mid-morning: oat-paper neutrals, moss and fern, and the warm yellow-green of fresh sap running under bark. ── */
313
- :root[data-scheme="sapwood"]{
314
- --bg:#f2f0e4;
315
- --bg-card:#fcfbf4;
316
- --bg-deep:#eae7d8;
317
- --ink:#1c2a1b;
318
- --ink-soft:#4c5c46;
319
- --ink-faint:#7e8c76;
320
- --rule:#ddd9c6;
321
- --rule-soft:#eae7d8;
322
- --accent:#3d7a33;
323
- --accent-deep:#2c5c26;
324
- --sea:#14301f;
325
- --terracotta:color-mix(in srgb, var(--accent) 62%, var(--sea));
326
- --page-bg:#f2f0e4;
327
- --sky-bg:undefined;
328
- --band-bg:linear-gradient(158deg, #071310 0%, #0a1a12 34%, #0e2418 68%, #16331f 100%);
329
- --star-display:none;
330
- --chrome-ink:#1c2a1b;
331
- --chrome-ink-dim:#4c5c46;
332
- --chrome-accent:#3d7a33;
333
- --chrome-glow:none;
334
- --glass-ink:#4c5c46;
335
- --glass-bg:rgba(255,255,255,0.62);
336
- --glass-border:color-mix(in srgb, var(--accent) 42%, transparent);
337
- --ava-shadow:0 2px 8px rgba(0,0,0,.14);
338
- --hero-lede:#4c5c46;
339
- --hero-b:#2c5c26;
340
- --foot-ink:#7e8c76;
341
- --foot-code:#2c5c26;
342
- --shadow-card:0 18px 44px -22px color-mix(in srgb, var(--ink) 42%, transparent), 0 4px 14px -6px color-mix(in srgb, var(--ink) 20%, transparent);
343
- color-scheme:light;
344
- }
345
- :root[data-scheme="sapwood"][data-mode="dark"]{
346
- --bg:#0c1610;
347
- --bg-card:#152a1b;
348
- --bg-deep:#1e3122;
349
- --ink:#eaf2e3;
350
- --ink-soft:#b4c8aa;
351
- --ink-faint:#7f9575;
352
- --rule:#2a3f2c;
353
- --rule-soft:#1e3122;
354
- --accent:#39833a;
355
- --accent-deep:#8ecf78;
356
- --sea:#071310;
357
- --terracotta:color-mix(in srgb, var(--accent) 62%, var(--sea));
358
- --page-bg:#0c1610;
359
- --sky-bg:undefined;
360
- --band-bg:linear-gradient(158deg, #071310 0%, #0a1a12 34%, #0e2418 68%, #16331f 100%);
361
- --star-display:block;
362
- --chrome-ink:#eaf2e3;
363
- --chrome-ink-dim:#b4c8aa;
364
- --chrome-accent:#8ecf78;
365
- --chrome-glow:0 2px 12px rgba(0,0,0,.65);
366
- --glass-ink:#8ecf78;
367
- --glass-bg:rgba(255,255,255,0.07);
368
- --glass-border:color-mix(in srgb, var(--accent) 42%, transparent);
369
- --ava-shadow:0 0 14px color-mix(in srgb, var(--accent) 45%, transparent);
370
- --hero-lede:#b4c8aa;
371
- --hero-b:#8ecf78;
372
- --foot-ink:#7f9575;
373
- --foot-code:#8ecf78;
374
- --shadow-card:0 24px 60px -24px rgba(0,0,0,.6), 0 6px 22px -8px rgba(0,0,0,.4);
375
- color-scheme:dark;
376
- }
377
- @media(prefers-color-scheme:dark){:root[data-scheme="sapwood"]:not([data-mode="light"]){
378
- --bg:#0c1610;
379
- --bg-card:#152a1b;
380
- --bg-deep:#1e3122;
381
- --ink:#eaf2e3;
382
- --ink-soft:#b4c8aa;
383
- --ink-faint:#7f9575;
384
- --rule:#2a3f2c;
385
- --rule-soft:#1e3122;
386
- --accent:#39833a;
387
- --accent-deep:#8ecf78;
388
- --sea:#071310;
389
- --terracotta:color-mix(in srgb, var(--accent) 62%, var(--sea));
390
- --page-bg:#0c1610;
391
- --sky-bg:undefined;
392
- --band-bg:linear-gradient(158deg, #071310 0%, #0a1a12 34%, #0e2418 68%, #16331f 100%);
393
- --star-display:block;
394
- --chrome-ink:#eaf2e3;
395
- --chrome-ink-dim:#b4c8aa;
396
- --chrome-accent:#8ecf78;
397
- --chrome-glow:0 2px 12px rgba(0,0,0,.65);
398
- --glass-ink:#8ecf78;
399
- --glass-bg:rgba(255,255,255,0.07);
400
- --glass-border:color-mix(in srgb, var(--accent) 42%, transparent);
401
- --ava-shadow:0 0 14px color-mix(in srgb, var(--accent) 45%, transparent);
402
- --hero-lede:#b4c8aa;
403
- --hero-b:#8ecf78;
404
- --foot-ink:#7f9575;
405
- --foot-code:#8ecf78;
406
- --shadow-card:0 24px 60px -24px rgba(0,0,0,.6), 0 6px 22px -8px rgba(0,0,0,.4);
407
- color-scheme:dark;
408
- }}
409
-
410
- /* ── letterpress — A warm broadsheet printed on good paper — black type, generous white, and one struck line of vermilion ink. ── */
411
- :root[data-scheme="letterpress"]{
412
- --bg:#F5F1E7;
413
- --bg-card:#FFFDF7;
414
- --bg-deep:#EBE5D8;
415
- --ink:#14100C;
416
- --ink-soft:#514840;
417
- --ink-faint:#857B6D;
418
- --rule:#DAD1C0;
419
- --rule-soft:#EBE5D8;
420
- --accent:#C22A12;
421
- --accent-deep:#A32310;
422
- --sea:#EBE4D6;
423
- --terracotta:color-mix(in srgb, var(--accent) 62%, var(--sea));
424
- --page-bg:#F5F1E7;
425
- --sky-bg:undefined;
426
- --band-bg:linear-gradient(168deg, #2B1A12 0%, #1C1411 46%, #100C0B 100%);
427
- --star-display:none;
428
- --chrome-ink:#14100C;
429
- --chrome-ink-dim:#514840;
430
- --chrome-accent:#C22A12;
431
- --chrome-glow:none;
432
- --glass-ink:#514840;
433
- --glass-bg:rgba(255,255,255,0.62);
434
- --glass-border:color-mix(in srgb, var(--accent) 42%, transparent);
435
- --ava-shadow:0 2px 8px rgba(0,0,0,.14);
436
- --hero-lede:#514840;
437
- --hero-b:#A32310;
438
- --foot-ink:#857B6D;
439
- --foot-code:#A32310;
440
- --shadow-card:0 18px 44px -22px color-mix(in srgb, var(--ink) 42%, transparent), 0 4px 14px -6px color-mix(in srgb, var(--ink) 20%, transparent);
441
- color-scheme:light;
442
- }
443
- :root[data-scheme="letterpress"][data-mode="dark"]{
444
- --bg:#141010;
445
- --bg-card:#251A14;
446
- --bg-deep:#2E241E;
447
- --ink:#F4EDE1;
448
- --ink-soft:#C9BCAC;
449
- --ink-faint:#7E7264;
450
- --rule:#3E312A;
451
- --rule-soft:#2E241E;
452
- --accent:#D93B1C;
453
- --accent-deep:#E85C33;
454
- --sea:#1C1411;
455
- --terracotta:color-mix(in srgb, var(--accent) 62%, var(--sea));
456
- --page-bg:#141010;
457
- --sky-bg:undefined;
458
- --band-bg:linear-gradient(168deg, #2B1A12 0%, #1C1411 46%, #100C0B 100%);
459
- --star-display:block;
460
- --chrome-ink:#F4EDE1;
461
- --chrome-ink-dim:#C9BCAC;
462
- --chrome-accent:#E85C33;
463
- --chrome-glow:0 2px 12px rgba(0,0,0,.65);
464
- --glass-ink:#E85C33;
465
- --glass-bg:rgba(255,255,255,0.07);
466
- --glass-border:color-mix(in srgb, var(--accent) 42%, transparent);
467
- --ava-shadow:0 0 14px color-mix(in srgb, var(--accent) 45%, transparent);
468
- --hero-lede:#C9BCAC;
469
- --hero-b:#E85C33;
470
- --foot-ink:#7E7264;
471
- --foot-code:#E85C33;
472
- --shadow-card:0 24px 60px -24px rgba(0,0,0,.6), 0 6px 22px -8px rgba(0,0,0,.4);
473
- color-scheme:dark;
474
- }
475
- @media(prefers-color-scheme:dark){:root[data-scheme="letterpress"]:not([data-mode="light"]){
476
- --bg:#141010;
477
- --bg-card:#251A14;
478
- --bg-deep:#2E241E;
479
- --ink:#F4EDE1;
480
- --ink-soft:#C9BCAC;
481
- --ink-faint:#7E7264;
482
- --rule:#3E312A;
483
- --rule-soft:#2E241E;
484
- --accent:#D93B1C;
485
- --accent-deep:#E85C33;
486
- --sea:#1C1411;
487
- --terracotta:color-mix(in srgb, var(--accent) 62%, var(--sea));
488
- --page-bg:#141010;
489
- --sky-bg:undefined;
490
- --band-bg:linear-gradient(168deg, #2B1A12 0%, #1C1411 46%, #100C0B 100%);
491
- --star-display:block;
492
- --chrome-ink:#F4EDE1;
493
- --chrome-ink-dim:#C9BCAC;
494
- --chrome-accent:#E85C33;
495
- --chrome-glow:0 2px 12px rgba(0,0,0,.65);
496
- --glass-ink:#E85C33;
497
- --glass-bg:rgba(255,255,255,0.07);
498
- --glass-border:color-mix(in srgb, var(--accent) 42%, transparent);
499
- --ava-shadow:0 0 14px color-mix(in srgb, var(--accent) 45%, transparent);
500
- --hero-lede:#C9BCAC;
501
- --hero-b:#E85C33;
502
- --foot-ink:#7E7264;
503
- --foot-code:#E85C33;
504
- --shadow-card:0 24px 60px -24px rgba(0,0,0,.6), 0 6px 22px -8px rgba(0,0,0,.4);
505
- color-scheme:dark;
506
- }}
507
-
508
- /* ── adobe clay — Sun-warmed adobe at late afternoon — fired terracotta, swept sand, and a whisper of sage on the horizon, hand-thrown rather than rendered. ── */
509
- :root[data-scheme="adobe-clay"]{
510
- --bg:#f4e9dc;
511
- --bg-card:#fdf7f0;
512
- --bg-deep:#efe2d4;
513
- --ink:#33211a;
514
- --ink-soft:#6a4c3f;
515
- --ink-faint:#9c7d6c;
516
- --rule:#e0cdbb;
517
- --rule-soft:#efe2d4;
518
- --accent:#b8492c;
519
- --accent-deep:#8f3620;
520
- --sea:#4a7a70;
521
- --terracotta:color-mix(in srgb, var(--accent) 62%, var(--sea));
522
- --page-bg:#f4e9dc;
523
- --sky-bg:undefined;
524
- --band-bg:linear-gradient(140deg, #1c110d 0%, #331a11 36%, #4d2716 68%, #24352f 100%);
525
- --star-display:none;
526
- --chrome-ink:#33211a;
527
- --chrome-ink-dim:#6a4c3f;
528
- --chrome-accent:#b8492c;
529
- --chrome-glow:none;
530
- --glass-ink:#6a4c3f;
531
- --glass-bg:rgba(255,255,255,0.62);
532
- --glass-border:color-mix(in srgb, var(--accent) 42%, transparent);
533
- --ava-shadow:0 2px 8px rgba(0,0,0,.14);
534
- --hero-lede:#6a4c3f;
535
- --hero-b:#8f3620;
536
- --foot-ink:#9c7d6c;
537
- --foot-code:#8f3620;
538
- --shadow-card:0 18px 44px -22px color-mix(in srgb, var(--ink) 42%, transparent), 0 4px 14px -6px color-mix(in srgb, var(--ink) 20%, transparent);
539
- color-scheme:light;
540
- }
541
- :root[data-scheme="adobe-clay"][data-mode="dark"]{
542
- --bg:#180f0c;
543
- --bg-card:#291a14;
544
- --bg-deep:#35211a;
545
- --ink:#f8e9dc;
546
- --ink-soft:#d2b3a0;
547
- --ink-faint:#a1826f;
548
- --rule:#4a3025;
549
- --rule-soft:#35211a;
550
- --accent:#c05539;
551
- --accent-deep:#eda184;
552
- --sea:#6fa093;
553
- --terracotta:color-mix(in srgb, var(--accent) 62%, var(--sea));
554
- --page-bg:#180f0c;
555
- --sky-bg:undefined;
556
- --band-bg:linear-gradient(140deg, #1c110d 0%, #331a11 36%, #4d2716 68%, #24352f 100%);
557
- --star-display:block;
558
- --chrome-ink:#f8e9dc;
559
- --chrome-ink-dim:#d2b3a0;
560
- --chrome-accent:#eda184;
561
- --chrome-glow:0 2px 12px rgba(0,0,0,.65);
562
- --glass-ink:#eda184;
563
- --glass-bg:rgba(255,255,255,0.07);
564
- --glass-border:color-mix(in srgb, var(--accent) 42%, transparent);
565
- --ava-shadow:0 0 14px color-mix(in srgb, var(--accent) 45%, transparent);
566
- --hero-lede:#d2b3a0;
567
- --hero-b:#eda184;
568
- --foot-ink:#a1826f;
569
- --foot-code:#eda184;
570
- --shadow-card:0 24px 60px -24px rgba(0,0,0,.6), 0 6px 22px -8px rgba(0,0,0,.4);
571
- color-scheme:dark;
572
- }
573
- @media(prefers-color-scheme:dark){:root[data-scheme="adobe-clay"]:not([data-mode="light"]){
574
- --bg:#180f0c;
575
- --bg-card:#291a14;
576
- --bg-deep:#35211a;
577
- --ink:#f8e9dc;
578
- --ink-soft:#d2b3a0;
579
- --ink-faint:#a1826f;
580
- --rule:#4a3025;
581
- --rule-soft:#35211a;
582
- --accent:#c05539;
583
- --accent-deep:#eda184;
584
- --sea:#6fa093;
585
- --terracotta:color-mix(in srgb, var(--accent) 62%, var(--sea));
586
- --page-bg:#180f0c;
587
- --sky-bg:undefined;
588
- --band-bg:linear-gradient(140deg, #1c110d 0%, #331a11 36%, #4d2716 68%, #24352f 100%);
589
- --star-display:block;
590
- --chrome-ink:#f8e9dc;
591
- --chrome-ink-dim:#d2b3a0;
592
- --chrome-accent:#eda184;
593
- --chrome-glow:0 2px 12px rgba(0,0,0,.65);
594
- --glass-ink:#eda184;
595
- --glass-bg:rgba(255,255,255,0.07);
596
- --glass-border:color-mix(in srgb, var(--accent) 42%, transparent);
597
- --ava-shadow:0 0 14px color-mix(in srgb, var(--accent) 45%, transparent);
598
- --hero-lede:#d2b3a0;
599
- --hero-b:#eda184;
600
- --foot-ink:#a1826f;
601
- --foot-code:#eda184;
602
- --shadow-card:0 24px 60px -24px rgba(0,0,0,.6), 0 6px 22px -8px rgba(0,0,0,.4);
603
- color-scheme:dark;
604
- }}