@bongos/core 1.19.726 → 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 (226) hide show
  1. package/.bongos-core.json +176 -491
  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 +2 -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/gen-diagrams.js +1 -1
  64. package/scripts/gds/leak-scan-allowlist.js +293 -0
  65. package/scripts/gds/learning-capture.js +1 -1
  66. package/scripts/gds/linkify-refs.js +2 -2
  67. package/scripts/gds/local-preview-lib.js +1 -1
  68. package/scripts/gds/mirror-lineage-check.js +1 -1
  69. package/scripts/gds/mirror-redact.js +17 -2
  70. package/scripts/gds/newcomer-floor.templates.json +1 -1
  71. package/scripts/gds/package-core.js +18 -1
  72. package/scripts/gds/paste-token.js +1 -1
  73. package/scripts/gds/provision-units.js +2 -2
  74. package/scripts/gds/publish-manifest.js +15 -0
  75. package/scripts/gds/repo-metrics.js +1 -1
  76. package/scripts/gds/sandbox-stage.js +1 -1
  77. package/scripts/gds/seed-bongos-coreB-tranche1-tasks.js +1 -1
  78. package/scripts/gds/seed-bongos-coreB-tranche2-tasks.js +1 -1
  79. package/scripts/gds/seed-bongos-goal-hierarchy-tasks.js +1 -1
  80. package/scripts/gds/seed-bongos-tasks.js +2 -2
  81. package/scripts/gds/seed-gds-v4-tasks.js +1 -1
  82. package/scripts/gds/seed-medusa-tasks.js +10 -10
  83. package/scripts/gds/seed-module-upstreaming.js +1 -1
  84. package/scripts/gds/seed-productization-tasks.js +6 -6
  85. package/scripts/gds/seed-provisioning-tasks.js +2 -2
  86. package/scripts/gds/seed-staging.sh +19 -6
  87. package/scripts/gds/ship-deploy-target.js +1 -1
  88. package/scripts/gds/ship-flow.js +1 -1
  89. package/scripts/gds/smoke-gds.js +1 -1
  90. package/scripts/status-probe.mjs +2 -2
  91. package/src/bongos/auth-discord.js +2 -2
  92. package/src/bongos/live-channel.js +1 -1
  93. package/src/bongos/pool.js +1 -1
  94. package/src/bongos/routes/auth.js +11 -11
  95. package/src/bongos/routes/security.js +1 -1
  96. package/src/bongos/routes.js +1 -1
  97. package/src/branding.js +1 -1
  98. package/src/devbox-downloads.js +1 -1
  99. package/src/instance-config.js +2 -2
  100. package/src/module-api.js +1 -1
  101. package/src/module-loader/provenance.js +2 -2
  102. package/tests/art_stage.mjs +2 -2
  103. package/tests/auth_anthropic_identity.mjs +1 -1
  104. package/tests/auth_duplicate_cookie.mjs +1 -1
  105. package/tests/auth_error_brand.mjs +1 -1
  106. package/tests/auth_inactive_builder.mjs +1 -1
  107. package/tests/backup_cli.mjs +4 -4
  108. package/tests/bongos_box_connect.mjs +2 -2
  109. package/tests/bongos_downloads.mjs +2 -2
  110. package/tests/bongos_login.mjs +5 -5
  111. package/tests/box_connect_e2e.mjs +2 -2
  112. package/tests/box_dns_repoint.mjs +10 -10
  113. package/tests/box_host_keys.mjs +1 -1
  114. package/tests/box_onboard.mjs +9 -9
  115. package/tests/box_scope_session.mjs +1 -1
  116. package/tests/box_terminal_ssrf.mjs +7 -7
  117. package/tests/boxes.mjs +9 -9
  118. package/tests/branding.mjs +2 -2
  119. package/tests/bump_version.mjs +2 -2
  120. package/tests/cf_tunnel.mjs +40 -40
  121. package/tests/cli_token_reissue.mjs +7 -7
  122. package/tests/cloud_bongos_pack.mjs +1 -1
  123. package/tests/currency_label.mjs +8 -8
  124. package/tests/dev_lib.mjs +4 -4
  125. package/tests/devbox_dmg_backdrop.mjs +1 -1
  126. package/tests/devbox_downloads.mjs +2 -2
  127. package/tests/devbox_icons.mjs +1 -1
  128. package/tests/discord_approvals.mjs +1 -1
  129. package/tests/discord_oauth.mjs +2 -2
  130. package/tests/executed_closure.mjs +6 -1
  131. package/tests/first_admin_bootstrap.mjs +1 -1
  132. package/tests/gate_approvals.mjs +5 -5
  133. package/tests/grade_aggregates_unavailable.mjs +1 -1
  134. package/tests/hook_user_agents.mjs +2 -2
  135. package/tests/init.mjs +6 -6
  136. package/tests/instance_config.mjs +1 -1
  137. package/tests/instance_manifest.mjs +5 -5
  138. package/tests/instance_mismatch_guard.mjs +13 -13
  139. package/tests/leak_scan_allowlist.mjs +94 -0
  140. package/tests/migrate_root_resolution.mjs +4 -4
  141. package/tests/mirror_redact.mjs +28 -4
  142. package/tests/module_catalog.mjs +5 -5
  143. package/tests/module_submissions.mjs +3 -3
  144. package/tests/package_core.mjs +1 -1
  145. package/tests/parallel-load.mjs +6 -6
  146. package/tests/projects_hub.mjs +2 -2
  147. package/tests/provision.mjs +50 -50
  148. package/tests/provisioning_github_app_routes.mjs +1 -1
  149. package/tests/provisioning_onboard_mode.mjs +2 -2
  150. package/tests/publish_reconciler.mjs +4 -4
  151. package/tests/sandbox_stage.mjs +1 -1
  152. package/tests/scrubber_corpus.mjs +3 -3
  153. package/tests/search_isolation.mjs +1 -1
  154. package/tests/session_records.mjs +1 -1
  155. package/tests/ship_card.mjs +6 -6
  156. package/tests/ship_ci_deploy.mjs +1 -1
  157. package/tests/single_host_hall.mjs +9 -9
  158. package/tests/smoke_preflight.mjs +1 -1
  159. package/tests/smoke_target.mjs +1 -1
  160. package/tests/status-probe.mjs +1 -1
  161. package/tests/status_mirror_sync.mjs +1 -1
  162. package/docs/adr/0004-amazonprimea-name-and-trademark-acceptance.md +0 -45
  163. package/docs/design/mocks/_schemes.css +0 -604
  164. package/docs/design/mocks/component-sheet.html +0 -428
  165. package/docs/design/mocks/hall/_tokens.css +0 -370
  166. package/docs/design/mocks/hall/board/v1.html +0 -846
  167. package/docs/design/mocks/hall/board/v2.html +0 -858
  168. package/docs/design/mocks/hall/board/v3.html +0 -884
  169. package/docs/design/mocks/hall/goals/v1.html +0 -1212
  170. package/docs/design/mocks/hall/goals/v2.html +0 -1192
  171. package/docs/design/mocks/hall/goals/v3.html +0 -1205
  172. package/docs/design/mocks/hall/hall-sheet.html +0 -244
  173. package/docs/design/mocks/hall/reading/v1.html +0 -1125
  174. package/docs/design/mocks/hall/reading/v2.html +0 -1177
  175. package/docs/design/mocks/hall/reading/v3.html +0 -1150
  176. package/docs/design/mocks/hall/settings/v1.html +0 -1238
  177. package/docs/design/mocks/hall/settings/v2.html +0 -1235
  178. package/docs/design/mocks/hall/settings/v3.html +0 -1299
  179. package/docs/design/mocks/hall/task/v1.html +0 -633
  180. package/docs/design/mocks/hall/task/v2.html +0 -646
  181. package/docs/design/mocks/hall/task/v3.html +0 -647
  182. package/docs/design/mocks/hub/assets/r3-space-deepfield-half.jpg +0 -0
  183. package/docs/design/mocks/hub/assets/r3-space-deepfield-half.jpg.json +0 -13
  184. package/docs/design/mocks/hub/assets/r3-space-dust-half.jpg +0 -0
  185. package/docs/design/mocks/hub/assets/r3-space-dust-half.jpg.json +0 -13
  186. package/docs/design/mocks/hub/assets/r3-space-nebula-half.jpg +0 -0
  187. package/docs/design/mocks/hub/assets/r3-space-nebula-half.jpg.json +0 -13
  188. package/docs/design/mocks/hub/assets/r3-space-starfield-half.jpg +0 -0
  189. package/docs/design/mocks/hub/assets/r3-space-starfield-half.jpg.json +0 -13
  190. package/docs/design/mocks/hub/hub-sheet.html +0 -192
  191. package/docs/design/mocks/hub/mine.html +0 -465
  192. package/docs/design/mocks/hub/picker.html +0 -421
  193. package/docs/design/mocks/hub/planets.html +0 -356
  194. package/docs/design/mocks/hub/v1.html +0 -1209
  195. package/docs/design/mocks/hub/v2.html +0 -1257
  196. package/docs/design/mocks/hub/v3.html +0 -1496
  197. package/docs/design/mocks/hub/wizard.html +0 -421
  198. package/docs/design/mocks/landing/landing-sheet.html +0 -131
  199. package/docs/design/mocks/landing/v1.html +0 -956
  200. package/docs/design/mocks/landing/v2.html +0 -708
  201. package/docs/design/mocks/landing/v3.html +0 -911
  202. package/docs/design/mocks/landing-page-mock.html +0 -687
  203. package/docs/design/mocks/landing-palettes.html +0 -103
  204. package/docs/design/mocks/projects-hub-mock.html +0 -991
  205. package/docs/design/mocks/projects-hub-variants.html +0 -146
  206. package/docs/design/mocks/projects-page-mock.html +0 -167
  207. package/docs/design/mocks/world/blue-hud/_tokens.css +0 -246
  208. package/docs/design/mocks/world/blue-hud/hall.html +0 -595
  209. package/docs/design/mocks/world/blue-hud/landing.html +0 -424
  210. package/docs/design/mocks/world/blue-hud/status.html +0 -410
  211. package/docs/design/mocks/world/chrome-blobs/_tokens.css +0 -479
  212. package/docs/design/mocks/world/chrome-blobs/hall.html +0 -553
  213. package/docs/design/mocks/world/chrome-blobs/landing-b.html +0 -581
  214. package/docs/design/mocks/world/chrome-blobs/landing.html +0 -328
  215. package/docs/design/mocks/world/chrome-blobs/status.html +0 -416
  216. package/docs/design/mocks/world/natgeo-editorial/_tokens.css +0 -377
  217. package/docs/design/mocks/world/natgeo-editorial/hall.html +0 -649
  218. package/docs/design/mocks/world/natgeo-editorial/landing-b.html +0 -743
  219. package/docs/design/mocks/world/natgeo-editorial/landing.html +0 -475
  220. package/docs/design/mocks/world/natgeo-editorial/status.html +0 -437
  221. package/docs/design/mocks/world/organic-cards/_tokens.css +0 -462
  222. package/docs/design/mocks/world/organic-cards/hall.html +0 -625
  223. package/docs/design/mocks/world/organic-cards/landing-b.html +0 -736
  224. package/docs/design/mocks/world/organic-cards/landing.html +0 -420
  225. package/docs/design/mocks/world/organic-cards/status.html +0 -458
  226. package/docs/design/mocks/world/world-sheet.html +0 -156
@@ -1,462 +0,0 @@
1
- /* organic-cards - "The grove": Cloud Bongos as a sculpted paper garden, every value sampled from the owner's
2
- template (site-4-green-brown-organic-card-system.jpg) and from the two ground plates the pages actually ship.
3
- Palette strategy: FULL - three named fields carry the system (sea green grounds the slab, bark brown the
4
- quiet marks, lit tan every live or pressable thing), with wood terracotta reserved for the small drum in the
5
- bongo mark. All four are world constants that never flip with the mode; only the neutrals and the plates do.
6
- Faces: Nunito 400/600/800 (the template's rounded, wide-aperture voice); JetBrains Mono 400/500 only for the
7
- light hall's uppercase labels, per the hall-1 template.
8
- Materials: photographic leaf plates over sculpted paper, a soft-focus forest behind the dark hall's glass,
9
- paper grain plus a raking ripple, tinted (never grey) shadows, circular badges, 1px light edges on dark glass.
10
- Corners: ALL-SOFT - 22px on cards and containers, 12px on chips, pill on buttons, inputs and tabs.
11
- Derived from the contract: the fifteen contract tokens are the host's override surface and carry the world's
12
- identity - --sea is the slab and the light primary, --accent every live or pressable thing, --accent-deep every
13
- quiet mark, --terracotta the small drum in the bongo mark. Everything below them is a DERIVED token: the fields,
14
- surface fills, edges, plates, bars and control colours are named here so page CSS never holds a colour, and a
15
- host may override any of them too. Page CSS consumes tokens only and never branches on the colour mode; the
16
- sole literals left in the two pages carry no hue at all: the mark's four specular #fff highlights, which stay
17
- white by contract, white inset sheens that tint a material, and the #000 channel of one mask gradient. */
18
-
19
- :root {
20
- /* ---- the four named fields + cream: world constants, identical in both modes ---- */
21
- --sea: #2a5a46; /* green - the ground of the grove */
22
- --accent-deep: #74513a; /* brown - bark, the second field */
23
- --accent: #e3c39c; /* tan - the lit thing: badges, doors */
24
- --terracotta: #b07a4e; /* wood - the small drum's shell */
25
- --cream: #f2e6c8; /* cream - type on any dark field */
26
-
27
- --font-display: 'Nunito', 'Trebuchet MS', system-ui, sans-serif;
28
- --font-body: 'Nunito', 'Trebuchet MS', system-ui, sans-serif;
29
- --font-mono: 'JetBrains Mono', ui-monospace, 'Cascadia Mono', Consolas, monospace;
30
-
31
- --radius: 22px;
32
- --radius-sm: 12px;
33
- --radius-pill: 999px;
34
- --line: 1px;
35
- --zoom: 1;
36
-
37
- /* the inherited bongo mark (top bar + hall): warm wood shells, cream heads */
38
- --skin-hi: #fdf3de;
39
- --skin-mid: #edd4a8;
40
- --skin-lo: #c6a273;
41
- --drum-shadow: #13291e;
42
-
43
- /* the rendered hero object: wood bongos with a monstera leaf, real alpha, reads on both grounds */
44
- --plate-object: url(../../../../../.impeccable/mocks/world-assets/r2-bongos-organic-a-cut.png);
45
-
46
- /* paper grain and the template's raking ripple, layered over every ground */
47
- --grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E");
48
- /* the template's raking ripple runs ACROSS the ground, almost horizontal, in wide soft bands */
49
- --ripple: repeating-linear-gradient(174deg, rgba(255, 255, 255, .034) 0 7px, rgba(0, 0, 0, .030) 7px 20px, transparent 20px 58px);
50
-
51
- /* the wide feature slab (the template's signature dark-green panel): dark in BOTH modes, so its
52
- ink, hairlines and track are world constants; only the fill follows the ground it sits on */
53
- --on-sea: #f2e6c8;
54
- --on-sea-soft: #ccd6b7;
55
- --sea-rule: rgba(242, 230, 200, .20);
56
- --sea-track: rgba(9, 26, 19, .45);
57
- --slab-edge: rgba(242, 230, 200, .17);
58
- --slab-div: rgba(242, 230, 200, .13);
59
-
60
- /* --lead / --lead-dot (the leader line into the photograph) are per-mode: the tan reads on the dark
61
- plate but measures 1.5:1 on the pale one, so light derives them from --accent-deep instead. */
62
-
63
- /* ================= LIGHT (the pale sage twin, sampled from r2-leaves-light.jpg) ================= */
64
- --bg: #c8d7bf;
65
- --bg-card: #f4f7f0;
66
- --bg-deep: #b7cbaf;
67
- --bg-frame: #d9e4d0;
68
- --ink: #163c2a;
69
- --ink-soft: #2f5240;
70
- --ink-faint: #476350;
71
- --rule: #9db69a;
72
- --rule-soft: #c6d5c0;
73
-
74
- --ok: #2e6b45;
75
- --warn: #7d5410;
76
- --err: #8d3a22;
77
- --focus: var(--accent-deep);
78
- --on-accent: #2c4636;
79
-
80
- --shadow-card: 8px 14px 26px -14px rgba(58, 74, 58, .42), 2px 3px 7px rgba(58, 74, 58, .14);
81
- --shadow-lift: 12px 24px 40px -16px rgba(58, 74, 58, .48), 3px 5px 11px rgba(58, 74, 58, .18);
82
- --mark-shadow: 24px 32px 46px rgba(78, 94, 76, .38);
83
- --grain-op: .07;
84
- --ripple-op: .17;
85
- --ground-glow: radial-gradient(1200px 700px at 50% 8%, rgba(255, 255, 255, .55), transparent 62%),
86
- radial-gradient(130% 105% at 50% 46%, transparent 42%, rgba(120, 134, 112, .30));
87
-
88
- --plate-hero: url(../../../../../.impeccable/mocks/world-assets/r2-leaves-light.jpg);
89
- --plate-forest: none;
90
- --plate-leaf: none;
91
- --forest-filter: none;
92
- --leaf-op: 0;
93
- --hall-tint: linear-gradient(180deg, #d9e4d0, #cedcc4);
94
- --hero-band: linear-gradient(152deg, #d5e1cc 0%, #c8d7bf 50%, #bccfb2 100%);
95
- --scrim-a: rgba(240, 244, 234, .50);
96
- --scrim-mid: rgba(240, 244, 234, .22);
97
- --scrim-b: rgba(240, 244, 234, 0);
98
- --scrim-reach: 66%;
99
- --head-band: linear-gradient(150deg, #b9cdb0 0%, #c6d6ba 50%, #aec3a6 100%);
100
- /* the light plate carries a straight sage-to-cream paper seam at its 33% mark; crop past it so the
101
- hero ground is one continuous cream field rather than a hard vertical step behind the headline */
102
- --plate-size: auto 150%;
103
- --plate-pos: 93% center;
104
- --slab: var(--sea);
105
-
106
- --field-green: #c7d9b8;
107
- --on-green: #163c2a;
108
- --on-green-soft: #3d5c48;
109
- --field-brown: #74513a;
110
- --on-brown: #f2e6c8;
111
- --on-brown-soft: #e6d4b5;
112
- --field-tan: #e8cfa8;
113
- --on-tan: #2a4436;
114
- --on-tan-soft: #3f5a4a;
115
- --field-deep: #5b4130;
116
- --on-deep: #f2e6c8;
117
- --on-deep-soft: #dcc7a6;
118
- --field-mute: #c2cdbc;
119
- --on-mute: #3d5245;
120
-
121
- --tile-fill: rgba(206, 222, 199, .90);
122
- --tile-edge: rgba(22, 60, 42, .13);
123
- --tile-ink: #163c2a;
124
- --bar-track: #c3d3bd;
125
- --bar-fill: linear-gradient(90deg, #c1904f, #dcb480);
126
-
127
- --glass: #f4f7f0;
128
- --glass-edge: #ccdac5;
129
- --glass-filter: none;
130
- --glass-inner: none;
131
- --panel: #f9fbf6;
132
- --panel-edge: #d7e2d1;
133
- --side-bg: #eff3e9;
134
- --side-edge: #dae5d2;
135
- --thead-bg: #eef3e8;
136
-
137
- --row-alt: rgba(22, 60, 42, .030);
138
- --row-hover: rgba(116, 81, 58, .09);
139
- --row-dim: .62;
140
- --hatch: color-mix(in srgb, var(--warn) 26%, transparent);
141
- --hatch-ink: var(--warn);
142
- --ink-held: var(--ink-faint);
143
- /* the core goes well below the accent's own value: a mid-tone core against mid-tone foliage lands at
144
- 2.3:1 whichever way you turn it, so the pair is a near-black core inside a near-white casing */
145
- --lead: color-mix(in srgb, var(--accent-deep) 44%, #000000);
146
- --lead-dot: var(--accent-deep);
147
- --lead-case: rgba(248, 250, 244, .94);
148
- --shade: rgba(58, 74, 58, .34);
149
- --opt-fg: #163c2a;
150
- --opt-bg: #f4f7f0;
151
- --input-bg: #ffffff;
152
- --input-bd: #b7c9b1;
153
-
154
- --nav-cur-bg: color-mix(in srgb, var(--accent-deep) 13%, var(--side-bg));
155
- --nav-cur-fg: var(--accent-deep);
156
- --nav-hover: rgba(42, 90, 70, .10);
157
- --rank-bg: color-mix(in srgb, var(--accent-deep) 12%, var(--panel));
158
- --rank-fg: var(--accent-deep);
159
- --rank-bd: color-mix(in srgb, var(--accent-deep) 30%, transparent);
160
- --tab-sel-bg: transparent;
161
- --tab-sel-fg: var(--accent-deep);
162
- --tab-sel-line: inset 0 -2px 0 var(--accent-deep);
163
- --tab-radius: 11px 11px 3px 3px;
164
- --tab-bg: transparent;
165
- --tab-bd: transparent;
166
- --btn-1-bg: var(--sea);
167
- --btn-1-fg: #f2e6c8;
168
- --btn-2-bg: transparent;
169
- --btn-2-fg: var(--accent-deep);
170
- --btn-2-bd: var(--accent-deep);
171
- --btn-o-bg: transparent;
172
- --btn-o-fg: var(--accent-deep);
173
- --btn-o-bd: var(--accent-deep);
174
- --door-2-bd: rgba(22, 60, 42, .50);
175
-
176
- --label-font: var(--font-mono);
177
- --label-ls: .06em;
178
- --label-weight: 500;
179
- --nav-font: var(--font-mono);
180
- --nav-tt: uppercase;
181
- --nav-ls: .04em;
182
- --nav-weight: 400;
183
- --th-font: var(--font-mono);
184
- --th-tt: uppercase;
185
- --th-ls: .05em;
186
- --th-weight: 500;
187
- --side-brand: block;
188
-
189
- --sb-thumb: #a8bda2;
190
- --sb-track: transparent;
191
- --moon-o: 0;
192
- --sun-o: 1;
193
- --toggle-bg: #c1d2b9;
194
- --toggle-bd: rgba(22, 60, 42, .24);
195
- }
196
-
197
- /* ================= DARK (judged first: the template's green world) ================= */
198
- :root[data-mode="dark"] {
199
- --bg: #2f6049;
200
- --bg-card: #3a6d57;
201
- --bg-deep: #22503e;
202
- --bg-frame: #15382a;
203
- --ink: #f2e6c8;
204
- --ink-soft: #e0cfab;
205
- --ink-faint: #c3d4bd;
206
- --rule: rgba(242, 230, 200, .22);
207
- --rule-soft: rgba(242, 230, 200, .11);
208
-
209
- --ok: #8fc79c;
210
- --warn: #e2b45c;
211
- --err: #e08c6a;
212
- --focus: color-mix(in srgb, var(--accent) 82%, #ffffff);
213
- --on-accent: #1b3a2a;
214
-
215
- --shadow-card: 10px 18px 32px -16px rgba(8, 24, 16, .80), 2px 3px 8px rgba(8, 24, 16, .34);
216
- --shadow-lift: 14px 28px 46px -18px rgba(8, 24, 16, .86), 3px 5px 12px rgba(8, 24, 16, .40);
217
- --mark-shadow: 26px 34px 52px rgba(7, 22, 15, .68);
218
- --grain-op: .06;
219
- --ripple-op: .40;
220
- --ground-glow: radial-gradient(1200px 700px at 50% 8%, rgba(255, 255, 255, .10), transparent 62%),
221
- radial-gradient(130% 105% at 50% 46%, transparent 40%, rgba(9, 28, 19, .52));
222
-
223
- --plate-hero: url(../../../../../.impeccable/mocks/world-assets/r2-leaves-dark.jpg);
224
- --plate-forest: url(../../../../../.impeccable/mocks/world-assets/forest-mist.jpg);
225
- --plate-leaf: url(../../../../../.impeccable/mocks/world-assets/r2-leaves-dark.jpg);
226
- --forest-filter: blur(2px) saturate(.88) brightness(1.16) contrast(1.14);
227
- --leaf-op: .12;
228
- --hall-tint: linear-gradient(180deg, rgba(17, 40, 30, .24), rgba(9, 26, 19, .46));
229
- --hero-band: linear-gradient(152deg, #37684f 0%, #2f6049 46%, #24523e 100%);
230
- --scrim-a: rgba(18, 42, 32, .34);
231
- --scrim-mid: rgba(18, 42, 32, .15);
232
- --scrim-b: rgba(18, 42, 32, 0);
233
- --scrim-reach: 54%;
234
- --head-band: linear-gradient(150deg, #3f7264 0%, #356254 48%, #284c40 100%);
235
- --plate-size: cover;
236
- --plate-pos: right center;
237
- --slab: color-mix(in srgb, var(--sea) 74%, #000000);
238
-
239
- --field-green: #7c9c64;
240
- --on-green: #11261b;
241
- --on-green-soft: #16301f;
242
- --field-brown: #6b4a35;
243
- --on-brown: #f2e6c8;
244
- --on-brown-soft: #ddc9a7;
245
- --field-tan: #d5b48f;
246
- --on-tan: #1b3a2a;
247
- --on-tan-soft: #2c4436;
248
- --field-deep: #3d2b1f;
249
- --on-deep: #ecdcbb;
250
- --on-deep-soft: #c9b795;
251
- --field-mute: #2f4a3c;
252
- --on-mute: #b9c9b3;
253
-
254
- --tile-fill: rgba(28, 66, 52, .80);
255
- --tile-edge: rgba(242, 230, 200, .17);
256
- --tile-ink: #f2e6c8;
257
- --bar-track: rgba(10, 28, 20, .48);
258
- --bar-fill: linear-gradient(90deg, color-mix(in srgb, var(--accent) 78%, #8a6a44), var(--accent));
259
-
260
- --glass: rgba(19, 42, 32, .42);
261
- --glass-edge: rgba(244, 236, 214, .34);
262
- --glass-filter: blur(22px) saturate(1.08);
263
- --glass-inner: inset 0 1px 0 rgba(255, 255, 255, .14);
264
- --panel: rgba(15, 37, 28, .34);
265
- --panel-edge: rgba(244, 236, 214, .13);
266
- --side-bg: rgba(12, 32, 24, .40);
267
- --side-edge: rgba(244, 236, 214, .13);
268
- --thead-bg: rgba(12, 32, 24, .58);
269
-
270
- --row-alt: rgba(255, 255, 255, .030);
271
- --row-hover: color-mix(in srgb, var(--accent) 12%, transparent);
272
- --row-dim: .58;
273
- --hatch: color-mix(in srgb, var(--warn) 34%, transparent);
274
- --hatch-ink: var(--warn);
275
- --ink-held: var(--ink-faint);
276
- --lead: var(--accent);
277
- --lead-dot: var(--accent);
278
- --lead-case: rgba(9, 26, 19, .88);
279
- --shade: rgba(7, 22, 15, .55);
280
- --opt-fg: #f2e6c8;
281
- --opt-bg: #1e4335;
282
- --input-bg: rgba(8, 24, 17, .42);
283
- --input-bd: rgba(244, 236, 214, .20);
284
-
285
- --nav-cur-bg: var(--accent);
286
- --nav-cur-fg: var(--on-accent);
287
- --nav-hover: rgba(242, 230, 200, .09);
288
- --rank-bg: transparent;
289
- --rank-fg: #f2e6c8;
290
- --rank-bd: rgba(242, 230, 200, .32);
291
- --tab-sel-bg: var(--accent);
292
- --tab-sel-fg: var(--on-accent);
293
- --tab-sel-line: none;
294
- --tab-radius: var(--radius-pill);
295
- --tab-bg: rgba(255, 255, 255, .05);
296
- --tab-bd: rgba(244, 236, 214, .14);
297
- --btn-1-bg: var(--accent);
298
- --btn-1-fg: var(--on-accent);
299
- --btn-2-bg: transparent;
300
- --btn-2-fg: #f2e6c8;
301
- --btn-2-bd: rgba(242, 230, 200, .34);
302
- --btn-o-bg: transparent;
303
- --btn-o-fg: #f2e6c8;
304
- --btn-o-bd: rgba(242, 230, 200, .34);
305
- --door-2-bd: rgba(242, 230, 200, .40);
306
-
307
- --label-font: var(--font-body);
308
- --label-ls: .13em;
309
- --label-weight: 700;
310
- --nav-font: var(--font-body);
311
- --nav-tt: none;
312
- --nav-ls: .005em;
313
- --nav-weight: 600;
314
- --th-font: var(--font-body);
315
- --th-tt: none;
316
- --th-ls: .01em;
317
- --th-weight: 700;
318
- --side-brand: block;
319
-
320
- --sb-thumb: rgba(242, 230, 200, .22);
321
- --sb-track: transparent;
322
- --moon-o: 1;
323
- --sun-o: 0;
324
- --toggle-bg: rgba(9, 26, 19, .55);
325
- --toggle-bd: rgba(242, 230, 200, .24);
326
- }
327
-
328
- @media (prefers-color-scheme: dark) {
329
- :root:not([data-mode="light"]) {
330
- --bg: #2f6049;
331
- --bg-card: #3a6d57;
332
- --bg-deep: #22503e;
333
- --bg-frame: #15382a;
334
- --ink: #f2e6c8;
335
- --ink-soft: #e0cfab;
336
- --ink-faint: #c3d4bd;
337
- --rule: rgba(242, 230, 200, .22);
338
- --rule-soft: rgba(242, 230, 200, .11);
339
-
340
- --ok: #8fc79c;
341
- --warn: #e2b45c;
342
- --err: #e08c6a;
343
- --focus: color-mix(in srgb, var(--accent) 82%, #ffffff);
344
- --on-accent: #1b3a2a;
345
-
346
- --shadow-card: 10px 18px 32px -16px rgba(8, 24, 16, .80), 2px 3px 8px rgba(8, 24, 16, .34);
347
- --shadow-lift: 14px 28px 46px -18px rgba(8, 24, 16, .86), 3px 5px 12px rgba(8, 24, 16, .40);
348
- --mark-shadow: 26px 34px 52px rgba(7, 22, 15, .68);
349
- --grain-op: .06;
350
- --ripple-op: .40;
351
- --ground-glow: radial-gradient(1200px 700px at 50% 8%, rgba(255, 255, 255, .10), transparent 62%),
352
- radial-gradient(130% 105% at 50% 46%, transparent 40%, rgba(9, 28, 19, .52));
353
-
354
- --plate-hero: url(../../../../../.impeccable/mocks/world-assets/r2-leaves-dark.jpg);
355
- --plate-forest: url(../../../../../.impeccable/mocks/world-assets/forest-mist.jpg);
356
- --plate-leaf: url(../../../../../.impeccable/mocks/world-assets/r2-leaves-dark.jpg);
357
- --forest-filter: blur(2px) saturate(.88) brightness(1.16) contrast(1.14);
358
- --leaf-op: .12;
359
- --hall-tint: linear-gradient(180deg, rgba(17, 40, 30, .24), rgba(9, 26, 19, .46));
360
- --hero-band: linear-gradient(152deg, #37684f 0%, #2f6049 46%, #24523e 100%);
361
- --scrim-a: rgba(18, 42, 32, .34);
362
- --scrim-mid: rgba(18, 42, 32, .15);
363
- --scrim-b: rgba(18, 42, 32, 0);
364
- --scrim-reach: 54%;
365
- --head-band: linear-gradient(150deg, #3f7264 0%, #356254 48%, #284c40 100%);
366
- --plate-size: cover;
367
- --plate-pos: right center;
368
- --slab: color-mix(in srgb, var(--sea) 74%, #000000);
369
-
370
- --field-green: #7c9c64;
371
- --on-green: #11261b;
372
- --on-green-soft: #16301f;
373
- --field-brown: #6b4a35;
374
- --on-brown: #f2e6c8;
375
- --on-brown-soft: #ddc9a7;
376
- --field-tan: #d5b48f;
377
- --on-tan: #1b3a2a;
378
- --on-tan-soft: #2c4436;
379
- --field-deep: #3d2b1f;
380
- --on-deep: #ecdcbb;
381
- --on-deep-soft: #c9b795;
382
- --field-mute: #2f4a3c;
383
- --on-mute: #b9c9b3;
384
-
385
- --tile-fill: rgba(28, 66, 52, .80);
386
- --tile-edge: rgba(242, 230, 200, .17);
387
- --tile-ink: #f2e6c8;
388
- --bar-track: rgba(10, 28, 20, .48);
389
- --bar-fill: linear-gradient(90deg, color-mix(in srgb, var(--accent) 78%, #8a6a44), var(--accent));
390
-
391
- --glass: rgba(19, 42, 32, .42);
392
- --glass-edge: rgba(244, 236, 214, .34);
393
- --glass-filter: blur(22px) saturate(1.08);
394
- --glass-inner: inset 0 1px 0 rgba(255, 255, 255, .14);
395
- --panel: rgba(15, 37, 28, .34);
396
- --panel-edge: rgba(244, 236, 214, .13);
397
- --side-bg: rgba(12, 32, 24, .40);
398
- --side-edge: rgba(244, 236, 214, .13);
399
- --thead-bg: rgba(12, 32, 24, .58);
400
-
401
- --row-alt: rgba(255, 255, 255, .030);
402
- --row-hover: color-mix(in srgb, var(--accent) 12%, transparent);
403
- --row-dim: .58;
404
- --hatch: color-mix(in srgb, var(--warn) 34%, transparent);
405
- --hatch-ink: var(--warn);
406
- --ink-held: var(--ink-faint);
407
- --lead: var(--accent);
408
- --lead-dot: var(--accent);
409
- --lead-case: rgba(9, 26, 19, .88);
410
- --shade: rgba(7, 22, 15, .55);
411
- --opt-fg: #f2e6c8;
412
- --opt-bg: #1e4335;
413
- --input-bg: rgba(8, 24, 17, .42);
414
- --input-bd: rgba(244, 236, 214, .20);
415
-
416
- --nav-cur-bg: var(--accent);
417
- --nav-cur-fg: var(--on-accent);
418
- --nav-hover: rgba(242, 230, 200, .09);
419
- --rank-bg: transparent;
420
- --rank-fg: #f2e6c8;
421
- --rank-bd: rgba(242, 230, 200, .32);
422
- --tab-sel-bg: var(--accent);
423
- --tab-sel-fg: var(--on-accent);
424
- --tab-sel-line: none;
425
- --tab-radius: var(--radius-pill);
426
- --tab-bg: rgba(255, 255, 255, .05);
427
- --tab-bd: rgba(244, 236, 214, .14);
428
- --btn-1-bg: var(--accent);
429
- --btn-1-fg: var(--on-accent);
430
- --btn-2-bg: transparent;
431
- --btn-2-fg: #f2e6c8;
432
- --btn-2-bd: rgba(242, 230, 200, .34);
433
- --btn-o-bg: transparent;
434
- --btn-o-fg: #f2e6c8;
435
- --btn-o-bd: rgba(242, 230, 200, .34);
436
- --door-2-bd: rgba(242, 230, 200, .40);
437
-
438
- --label-font: var(--font-body);
439
- --label-ls: .13em;
440
- --label-weight: 700;
441
- --nav-font: var(--font-body);
442
- --nav-tt: none;
443
- --nav-ls: .005em;
444
- --nav-weight: 600;
445
- --th-font: var(--font-body);
446
- --th-tt: none;
447
- --th-ls: .01em;
448
- --th-weight: 700;
449
- --side-brand: block;
450
-
451
- --sb-thumb: rgba(242, 230, 200, .22);
452
- --sb-track: transparent;
453
- --moon-o: 1;
454
- --sun-o: 0;
455
- --toggle-bg: rgba(9, 26, 19, .55);
456
- --toggle-bd: rgba(242, 230, 200, .24);
457
- }
458
- }
459
-
460
- @media (prefers-reduced-motion: reduce) {
461
- *, *::before, *::after { animation: none !important; transition: none !important; }
462
- }