@bongos/core 1.19.90 → 1.19.91

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.
package/.bongos-core.json CHANGED
@@ -2,22 +2,22 @@
2
2
  "artifact": "bongos-core",
3
3
  "manifest_schema": 1,
4
4
  "generator": "scripts/gds/package-core.js",
5
- "core_version": "1.19.90",
6
- "core_contract": "1.19.90",
7
- "source_commit": "45d0b3918cf244fda1eb923ed5d62224bc5885cb",
5
+ "core_version": "1.19.91",
6
+ "core_contract": "1.19.91",
7
+ "source_commit": "157eeaee12b32ba8b9e23f62cf8476cc689e3e07",
8
8
  "source_ref": "HEAD",
9
- "built_at": "2026-08-13T15:51:02.618Z",
9
+ "built_at": "2026-08-13T16:52:49.920Z",
10
10
  "redaction": {
11
11
  "model": "docs-redacted+functional-verbatim",
12
12
  "docs_redacted": 298,
13
13
  "agent_docs_stubbed": 21,
14
- "functional_verbatim": 1239,
14
+ "functional_verbatim": 1240,
15
15
  "rules": 3,
16
16
  "gate_literals": 3,
17
17
  "gate": "passed"
18
18
  },
19
- "file_count": 1558,
20
- "tree_sha256": "7dc9f0a0062008bfdc80372316b3d7ff5ce73181237509094f584b99efe5573d",
19
+ "file_count": 1559,
20
+ "tree_sha256": "a915672ef661add366011ce3030a79b196e486e67a437c4531c54de0b0bc3f87",
21
21
  "files": [
22
22
  {
23
23
  "path": ".claude/skills/blocker-review/SKILL.md",
@@ -382,7 +382,7 @@
382
382
  {
383
383
  "path": "config/branding.neutral.json",
384
384
  "mode": "0000644",
385
- "sha256": "48460f6fba8d39293c091cc1cd908896bd670c5eae5bab8665f755211e0f5790"
385
+ "sha256": "48dc7ade227b763df5d9942930200042a3b76a7e1d00c281c43c2ab5304bf0da"
386
386
  },
387
387
  {
388
388
  "path": "config/design-tokens.neutral.json",
@@ -2442,7 +2442,7 @@
2442
2442
  {
2443
2443
  "path": "modules/dev-box/app/assets/tray/win-alert.png",
2444
2444
  "mode": "0000644",
2445
- "sha256": "ce381ff0ae4d29c684d0e864c4f05806548b24da4c17b900a4b87fb7d7b977a7"
2445
+ "sha256": "73942a14cfda866a34925347134215b06e861ac1a52367494486b648b097211e"
2446
2446
  },
2447
2447
  {
2448
2448
  "path": "modules/dev-box/app/assets/tray/win-busy.png",
@@ -2457,7 +2457,7 @@
2457
2457
  {
2458
2458
  "path": "modules/dev-box/app/assets/tray/win-on.png",
2459
2459
  "mode": "0000644",
2460
- "sha256": "6611cb8cbe81102028705085ec5f093d056f7b4f82220cefe25acdab68156367"
2460
+ "sha256": "9a3f573e1c2fb0d6a3a3776acbd02e0ee8e5ea6f7728ea2f55244c234a895600"
2461
2461
  },
2462
2462
  {
2463
2463
  "path": "modules/dev-box/app/build-resources/dmg-background.png",
@@ -2472,7 +2472,7 @@
2472
2472
  {
2473
2473
  "path": "modules/dev-box/app/build-resources/icon.png",
2474
2474
  "mode": "0000644",
2475
- "sha256": "03edf4c2ad4d5059f28e641e37b5b932087b508aeca23f64251b00ec1eea29f0"
2475
+ "sha256": "cf5624a459169a6d14c5e0da4ad8f1da9311cbd809155f48260315a90f2103de"
2476
2476
  },
2477
2477
  {
2478
2478
  "path": "modules/dev-box/app/electron-builder.tmpl.yml",
@@ -2512,7 +2512,7 @@
2512
2512
  {
2513
2513
  "path": "modules/dev-box/app/renderer/theme.generated.css",
2514
2514
  "mode": "0000644",
2515
- "sha256": "579376e7f7bccc9632a739942d20f3dfe6fb3a75e7118bf0f2503ea315faa574"
2515
+ "sha256": "3c094f5d9b66e4341a400ed346a5a175af322061df285a9501e861a166bfb001"
2516
2516
  },
2517
2517
  {
2518
2518
  "path": "modules/dev-box/app/scripts/apply-dmg-backdrop.sh",
@@ -2527,17 +2527,17 @@
2527
2527
  {
2528
2528
  "path": "modules/dev-box/app/scripts/gen-brand.js",
2529
2529
  "mode": "0000644",
2530
- "sha256": "37d7b4d6c3ea5e0cfa7e280353b3adb9f68b7c5e7bababfe1c1ba809706dd145"
2530
+ "sha256": "6db7c137770881ec17bc9038bf2a8e65b004399acc7ad75044f46d1215b169ba"
2531
2531
  },
2532
2532
  {
2533
2533
  "path": "modules/dev-box/app/scripts/gen-dmg-backdrop.py",
2534
2534
  "mode": "0000644",
2535
- "sha256": "8493db368ac3364f559f166eea3421a4e85c11503d056e8eb3e41e70ac1198cc"
2535
+ "sha256": "eb8e0b225d30f6fd64cd029858de533f3ddfba1386beba174f05e1838ba90ed1"
2536
2536
  },
2537
2537
  {
2538
2538
  "path": "modules/dev-box/app/scripts/gen-icons.js",
2539
2539
  "mode": "0000644",
2540
- "sha256": "b6dd666505d4c0c3d28b69082945792c88a78cc40ac79191921dec196a904d28"
2540
+ "sha256": "73459e71eee0de08490e98889de7e633b0c9c3aeebeb10c6ec041ae65393d9be"
2541
2541
  },
2542
2542
  {
2543
2543
  "path": "modules/dev-box/app/scripts/vendor-client.js",
@@ -2552,7 +2552,7 @@
2552
2552
  {
2553
2553
  "path": "modules/dev-box/app/src/brand.generated.json",
2554
2554
  "mode": "0000644",
2555
- "sha256": "3e4f63a8538668fafea5c7017e858930c42684c57de0ea3d55b1368a2a3c125b"
2555
+ "sha256": "a230bd4095c23b5f3fcb41f9f691398ca2560a820dd9d01346fee7aec5f07cf9"
2556
2556
  },
2557
2557
  {
2558
2558
  "path": "modules/dev-box/app/src/brand.js",
@@ -4112,12 +4112,12 @@
4112
4112
  {
4113
4113
  "path": "package-lock.json",
4114
4114
  "mode": "0000644",
4115
- "sha256": "e2360c5ef62eeb078207fc6b3e1230d4f7099a58f2c78c6b204d5de6df1a4ba2"
4115
+ "sha256": "9d710f118a6ae91aadb6111cde0ee0db020c018ce405b687236c84f75c8f69f1"
4116
4116
  },
4117
4117
  {
4118
4118
  "path": "package.json",
4119
4119
  "mode": "0000644",
4120
- "sha256": "34e9ad3018b2d905c6cf60f10bb9ddc6db4b9547facf4df8ee6284f646c93201"
4120
+ "sha256": "1c7c2996a68dde5369dd07c387737614af9292244de4db2fa9fb0a70912e94aa"
4121
4121
  },
4122
4122
  {
4123
4123
  "path": "public-docs/index.html",
@@ -4357,7 +4357,7 @@
4357
4357
  {
4358
4358
  "path": "public-landing/assets/cosmos.css",
4359
4359
  "mode": "0000644",
4360
- "sha256": "d38bef9066bf2cc7cf2fbe493af5e9dd7a4f4b20f7f051460e72fc6c0d98012d"
4360
+ "sha256": "85fbc4908f2a288b324e58beb490df67d44df294da1a3422347795077770ee1c"
4361
4361
  },
4362
4362
  {
4363
4363
  "path": "public-landing/buddha.png",
@@ -4437,7 +4437,7 @@
4437
4437
  {
4438
4438
  "path": "public-landing/index.html",
4439
4439
  "mode": "0000644",
4440
- "sha256": "e43daead0661cbae65c579dd9fbd6a70826c19bc444204dde6fa7dbc82d04e45"
4440
+ "sha256": "38292de5ed174fad5fe806a9adf369cf6ecd7df9377e79e05d2834e48a21b766"
4441
4441
  },
4442
4442
  {
4443
4443
  "path": "public-landing/projects.html",
@@ -5472,7 +5472,7 @@
5472
5472
  {
5473
5473
  "path": "scripts/status-mirror-sync.js",
5474
5474
  "mode": "0000644",
5475
- "sha256": "05f7e38def6018c8377e9205e6f555994a27b650f8202c80f5855239a9d2c65c"
5475
+ "sha256": "845c8dad87038fe273563e8eda7126e70ac1afe8f9eee8c4364a4404490c4f5f"
5476
5476
  },
5477
5477
  {
5478
5478
  "path": "scripts/status-probe.mjs",
@@ -5722,7 +5722,7 @@
5722
5722
  {
5723
5723
  "path": "src/bongos/serve-internal.js",
5724
5724
  "mode": "0000644",
5725
- "sha256": "006a51d3bd71cc496742e9399c53dc5b1ebd18c87a54e675aabda6ac312b4b96"
5725
+ "sha256": "693ef4dfd3619a2d999e6223de0e2d51b697cf4004c482b74f60b8cfb362a566"
5726
5726
  },
5727
5727
  {
5728
5728
  "path": "src/bongos/uptime-poller.js",
@@ -5752,7 +5752,7 @@
5752
5752
  {
5753
5753
  "path": "src/module-api.js",
5754
5754
  "mode": "0000644",
5755
- "sha256": "fb1e1a8efafde2d29df7b9dd4e9de53a985a858b7f0a26517baf1632c4227d96"
5755
+ "sha256": "d1f73a5d0f57613d96dd88738b593dd343e8330bc5452d414fd8752aa78da7f0"
5756
5756
  },
5757
5757
  {
5758
5758
  "path": "src/module-loader/loader.js",
@@ -5787,7 +5787,7 @@
5787
5787
  {
5788
5788
  "path": "src/platform-server.js",
5789
5789
  "mode": "0000644",
5790
- "sha256": "04204149610d3b7ebc087fb6feb9dc86f25bb08b1ef52003dddc378861557d46"
5790
+ "sha256": "2f43ee21d8268940b0f76e20db0fcaf1220f1cb264363fc61c2856d9943b14c9"
5791
5791
  },
5792
5792
  {
5793
5793
  "path": "src/ui/adapters/claude-design/index.js",
@@ -6222,7 +6222,7 @@
6222
6222
  {
6223
6223
  "path": "tests/cloud_bongos_pack.mjs",
6224
6224
  "mode": "0000644",
6225
- "sha256": "edfa4f2dad99e969d45b3fe37bc88aa9d0926d24d907cd8dade2ca0ee467ab11"
6225
+ "sha256": "715fecde91ee9dff56dfca9b9da46a47b49322b0dd50aad1bd606491f551fe06"
6226
6226
  },
6227
6227
  {
6228
6228
  "path": "tests/conductor.mjs",
@@ -6914,6 +6914,11 @@
6914
6914
  "mode": "0000644",
6915
6915
  "sha256": "902c84c460d4c3bda61ec80be7da935085a5f66a8a1c508efe747c4366a717e6"
6916
6916
  },
6917
+ {
6918
+ "path": "tests/landing_page.mjs",
6919
+ "mode": "0000644",
6920
+ "sha256": "0399fd099ef383f1bb174e9997bccdc5c4e5cd26cdef94f56131641ecbde05c8"
6921
+ },
6917
6922
  {
6918
6923
  "path": "tests/lifecycle-card.mjs",
6919
6924
  "mode": "0000644",
@@ -34,18 +34,18 @@
34
34
  "mode": "cloud-bongos",
35
35
  "ui": {
36
36
  "colors": {
37
- "bg": "#fff7ed", "bgCard": "#ffffff", "bgDeep": "#ffedd5", "bgFrame": "#fde4c8",
38
- "ink": "#2a1f17", "inkSoft": "#6b5d52", "inkFaint": "#756a60",
39
- "rule": "#fdba74", "ruleSoft": "#fed7aa",
40
- "accent": "#ce4806", "accentDeep": "#9e3406", "sea": "#38bdf8", "terracotta": "#fb7185"
37
+ "bg": "#f9d9a8", "bgCard": "#fffaf2", "bgDeep": "#f6d8ae", "bgFrame": "#f0c489",
38
+ "ink": "#2b170e", "inkSoft": "#6d4a33", "inkFaint": "#785a41",
39
+ "rule": "#e8a463", "ruleSoft": "#f6d8ae",
40
+ "accent": "#ce4806", "accentDeep": "#9e3406", "sea": "#0f7a96", "terracotta": "#855b3d"
41
41
  },
42
42
  "fonts": {
43
43
  "display": "\"Baloo 2\", \"Quicksand\", system-ui, sans-serif",
44
44
  "body": "\"Quicksand\", system-ui, -apple-system, \"Segoe UI\", sans-serif",
45
45
  "links": ["https://fonts.googleapis.com/css2?family=Baloo+2:wght@500;600;700&family=Quicksand:wght@400;500;600;700&family=Fira+Code:wght@400;500&display=swap"]
46
46
  },
47
- "favicon": "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><circle cx='12' cy='17' r='8' fill='%23f97316'/><circle cx='22' cy='17' r='6' fill='%23fb7185'/><circle cx='12' cy='17' r='3.5' fill='%23fff7ed'/><circle cx='22' cy='17' r='2.5' fill='%23fff7ed'/></svg>",
48
- "backdrop": "linear-gradient(180deg, #fde8c8 0%, #fff4e6 45%, #fffdfa 100%)"
47
+ "favicon": "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><circle cx='12' cy='17' r='8' fill='%23ce4806'/><circle cx='22' cy='17' r='6' fill='%23855b3d'/><circle cx='12' cy='17' r='3.5' fill='%23fffaf2'/><circle cx='22' cy='17' r='2.5' fill='%23fffaf2'/></svg>",
48
+ "backdrop": "#f9d9a8"
49
49
  }
50
50
  },
51
51
  "rankLabels": { "xenos": "Newcomer", "thetes": "Contributor", "metic": "Trusted", "archon": "Owner" },
@@ -1,16 +1,16 @@
1
1
  /* GENERATED by scripts/gen-brand.js from config/branding.json — do not edit by hand. */
2
2
  :root {
3
- --bg: #fff7ed;
4
- --bg-card: #ffffff;
5
- --bg-deep: #ffedd5;
6
- --ink: #2a1f17;
7
- --ink-soft: #6b5d52;
8
- --ink-faint: #756a60;
9
- --rule: #fdba74;
10
- --rule-soft: #fed7aa;
3
+ --bg: #f9d9a8;
4
+ --bg-card: #fffaf2;
5
+ --bg-deep: #f6d8ae;
6
+ --ink: #2b170e;
7
+ --ink-soft: #6d4a33;
8
+ --ink-faint: #785a41;
9
+ --rule: #e8a463;
10
+ --rule-soft: #f6d8ae;
11
11
  --accent: #ce4806;
12
12
  --accent-deep: #9e3406;
13
- --terracotta: #fb7185;
13
+ --terracotta: #855b3d;
14
14
  --font-display: "Baloo 2", "Quicksand", system-ui, sans-serif;
15
15
  --font-body: "Quicksand", system-ui, -apple-system, "Segoe UI", sans-serif;
16
16
  }
@@ -73,7 +73,7 @@ function buildBrand(branding) {
73
73
  // Panel header epigraph (branding copy.tagline).
74
74
  TAGLINE: (branding.copy && branding.copy.tagline) || '',
75
75
  // Pre-CSS window background (main.js) — the theme bg so first paint is on-brand.
76
- BG_COLOR: colors.bg || '#ffffff',
76
+ BG_COLOR: colors.bg || '#fffaf2',
77
77
  };
78
78
  }
79
79
 
@@ -85,17 +85,17 @@ function buildThemeCss(branding) {
85
85
  const v = (x, fb) => x || fb;
86
86
  return `/* GENERATED by scripts/gen-brand.js from config/branding.json — do not edit by hand. */
87
87
  :root {
88
- --bg: ${v(c.bg, '#fff7ed')};
89
- --bg-card: ${v(c.bgCard, '#ffffff')};
90
- --bg-deep: ${v(c.bgDeep, '#ffedd5')};
91
- --ink: ${v(c.ink, '#2a1f17')};
92
- --ink-soft: ${v(c.inkSoft, '#6b5d52')};
93
- --ink-faint: ${v(c.inkFaint, '#756a60')};
94
- --rule: ${v(c.rule, '#fdba74')};
95
- --rule-soft: ${v(c.ruleSoft, '#fed7aa')};
88
+ --bg: ${v(c.bg, '#f9d9a8')};
89
+ --bg-card: ${v(c.bgCard, '#fffaf2')};
90
+ --bg-deep: ${v(c.bgDeep, '#f6d8ae')};
91
+ --ink: ${v(c.ink, '#2b170e')};
92
+ --ink-soft: ${v(c.inkSoft, '#6d4a33')};
93
+ --ink-faint: ${v(c.inkFaint, '#785a41')};
94
+ --rule: ${v(c.rule, '#e8a463')};
95
+ --rule-soft: ${v(c.ruleSoft, '#f6d8ae')};
96
96
  --accent: ${v(c.accent, '#ce4806')};
97
97
  --accent-deep: ${v(c.accentDeep, '#9e3406')};
98
- --terracotta: ${v(c.terracotta, '#fb7185')};
98
+ --terracotta: ${v(c.terracotta, '#855b3d')};
99
99
  --font-display: ${v(fonts.display, '"Baloo 2", "Quicksand", system-ui, sans-serif')};
100
100
  --font-body: ${v(fonts.body, '"Quicksand", system-ui, -apple-system, "Segoe UI", sans-serif')};
101
101
  }
@@ -68,9 +68,9 @@ ICON = 100 # dmg.iconSize
68
68
  # it, so its "fallback" would paint a Cloud Bongos colour into a fully-specified
69
69
  # host build. That is exactly what `sea` did to the Applications-well rim.
70
70
  COLOR_ROLES = {
71
- "bg": "#fff7ed", "bgDeep": "#ffedd5", "bgCard": "#ffffff",
72
- "ink": "#2a1f17", "inkSoft": "#6b5d52", "ruleSoft": "#fed7aa",
73
- "accent": "#ce4806", "accentDeep": "#9e3406", "terracotta": "#fb7185",
71
+ "bg": "#f9d9a8", "bgDeep": "#f6d8ae", "bgCard": "#fffaf2",
72
+ "ink": "#2b170e", "inkSoft": "#6d4a33", "ruleSoft": "#f6d8ae",
73
+ "accent": "#ce4806", "accentDeep": "#9e3406", "terracotta": "#855b3d",
74
74
  }
75
75
 
76
76
  FONT_DIRS = (
@@ -62,9 +62,9 @@ const OUT_BUILD = path.join(APP_DIR, 'build-resources');
62
62
  // it has nothing prompting a host to define it, so its "fallback" would paint a
63
63
  // Cloud Bongos colour into a fully-specified host build.
64
64
  const COLOR_ROLES = {
65
- bgCard: '#ffffff', bgDeep: '#ffedd5', ink: '#2a1f17',
66
- rule: '#fdba74', ruleSoft: '#fed7aa',
67
- accent: '#ce4806', accentDeep: '#9e3406', terracotta: '#fb7185',
65
+ bgCard: '#fffaf2', bgDeep: '#f6d8ae', ink: '#2b170e',
66
+ rule: '#e8a463', ruleSoft: '#f6d8ae',
67
+ accent: '#ce4806', accentDeep: '#9e3406', terracotta: '#855b3d',
68
68
  };
69
69
 
70
70
  // The pack, resolved exactly as gen-brand.js resolves it (env → instance → neutral).
@@ -9,5 +9,5 @@
9
9
  "COPYRIGHT": "© Cloud Bongos",
10
10
  "CONFIG_DIR": "cloudbongos",
11
11
  "TAGLINE": "Building software is laying down a beat.",
12
- "BG_COLOR": "#fff7ed"
12
+ "BG_COLOR": "#f9d9a8"
13
13
  }
package/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@bongos/core",
3
- "version": "1.19.90",
3
+ "version": "1.19.91",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@bongos/core",
9
- "version": "1.19.90",
9
+ "version": "1.19.91",
10
10
  "license": "AGPL-3.0-or-later",
11
11
  "dependencies": {
12
12
  "express": "^4.21.2",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bongos/core",
3
- "version": "1.19.90",
3
+ "version": "1.19.91",
4
4
  "description": "Cloud Bongos — the AI-first build platform core (GDS + platform surfaces + module system), installed as a versioned dependency (ADR 0108).",
5
5
  "license": "AGPL-3.0-or-later",
6
6
  "main": "src/platform-server.js",
@@ -3,12 +3,15 @@
3
3
  The shared token + component layer for the owner-facing project surfaces
4
4
  (/create, /projects).
5
5
 
6
- THE LOOK (owner decisions 2026-08-12, Loop 2): a LIGHT/DARK mode flips
7
- the WHOLE WORLD, not just the cards:
6
+ THE LOOK — ember marigold (owner, 2026-08-13; task 1002748, and before it
7
+ the 2026-08-12 Loop 2 decisions). A LIGHT/DARK mode flips the WHOLE WORLD,
8
+ not just the cards, and BOTH grounds are warm — dark is not an inversion:
8
9
 
9
- · light mode — the sunrise white/orange page: dawn sky, cream cards
10
- · dark mode — the gate's deep space (public-landing/gate/space.css):
11
- night sky, stars, deep-navy cards, warm-white ink
10
+ · light mode — pigmented marigold air, ivory cards, an ember accent fired
11
+ down from SaaS-bright into something with heat behind it
12
+ · dark mode — a warm umber night: deep-brown cards, cream ink, and the
13
+ accent pair flipping direction so the link tone goes BRIGHTER, which is
14
+ how warm schemes actually behave on a dark ground
12
15
 
13
16
  Mode resolution: prefers-color-scheme by default; an explicit choice
14
17
  sets data-mode="light|dark" on <html> (persisted by the page script).
@@ -25,11 +28,18 @@
25
28
  ═══════════════════════════════════════════════════════════════════════ */
26
29
 
27
30
  :root{
28
- /* contract tier (light mode) */
29
- --bg:#fff7ed; --bg-card:#ffffff; --bg-deep:#ffedd5;
30
- --ink:#2a1f17; --ink-soft:#6b5d52; --ink-faint:#756a60;
31
- --rule:#fdba74; --rule-soft:#fed7aa;
32
- --accent:#ce4806; --accent-deep:#9e3406; --sea:#38bdf8; --terracotta:#fb7185;
31
+ /* contract tier (light mode) — ember marigold (task 1002748, direction §3):
32
+ the same sunrise with the milk taken out. The page stays PIGMENTED all the
33
+ way to the footer and the cards are the only near-white surfaces, so every
34
+ panel lifts; before this, page/sky/card sat within a few points of white and
35
+ the whole surface read as fog with no figure/ground at all.
36
+ KEEP IN LOCKSTEP with config/branding.neutral.json theme.ui.colors —
37
+ tests/cosmos_token_contrast.mjs fails on any drift, because the pack is what
38
+ actually paints (its :root is spliced AFTER this file). */
39
+ --bg:#f9d9a8; --bg-card:#fffaf2; --bg-deep:#f6d8ae;
40
+ --ink:#2b170e; --ink-soft:#6d4a33; --ink-faint:#785a41;
41
+ --rule:#e8a463; --rule-soft:#f6d8ae;
42
+ --accent:#ce4806; --accent-deep:#9e3406; --sea:#0f7a96; --terracotta:#855b3d;
33
43
  --font-display:"Baloo 2","Quicksand",system-ui,"Arial Rounded MT Bold",sans-serif;
34
44
  --font-body:"Quicksand",system-ui,-apple-system,"Segoe UI",sans-serif;
35
45
  --font-mono:"Fira Code",ui-monospace,SFMono-Regular,Menlo,monospace;
@@ -40,89 +50,92 @@
40
50
 
41
51
  /* semantic state tier — each is painted as 12px/700 chip TEXT on its own
42
52
  -soft tint, so each must clear 4.5:1 against that tint AND the plain card. */
43
- --ok:#107937; --warn:#9c5604; --err:#ca2323;
53
+ --ok:#0e6b31; --warn:#8b4d03; --err:#bb1f1f;
44
54
 
45
55
  /* chrome tier — the WHOLE WORLD flips with the mode (owner, 2026-08-12,
46
56
  Loop 2: light = the sunrise white/orange page, dark = the gate's space).
47
57
  Light values here; the dark blocks below swap all of them. */
48
- --page-bg:#fff7ed;
49
- --sky-bg:linear-gradient(180deg,#e9f5fd 0%,#fde8c8 34%,#fff4e6 62%,#fffdfa 100%);
58
+ --page-bg:#f9d9a8;
59
+ /* flat, not a gradient to white: the golden ground IS the marigold decision.
60
+ A gradient that faded out at the footer would reintroduce the fog. */
61
+ --sky-bg:#f9d9a8;
50
62
  --star-display:none;
51
- --chrome-ink:#2a1f17;
52
- --chrome-ink-dim:#6b5d52;
63
+ --chrome-ink:#2b170e;
64
+ --chrome-ink-dim:#6d4a33;
53
65
  --chrome-accent:var(--accent-deep);
54
66
  --chrome-glow:none;
55
- --glass-ink:#6b5d52;
56
- --glass-bg:rgba(255,255,255,0.65);
67
+ --glass-ink:#6d4a33;
68
+ --glass-bg:rgba(255,255,255,0.62);
57
69
  --glass-border:color-mix(in srgb, var(--accent) 42%, transparent);
58
- --ava-shadow:0 2px 8px rgba(42,31,23,0.12);
59
- --hero-lede:#6b5d52;
70
+ --ava-shadow:0 2px 8px rgba(0,0,0,0.14);
71
+ --hero-lede:#6d4a33;
60
72
  --hero-b:var(--accent-deep);
61
73
  --foot-ink:var(--ink-faint);
62
74
  --foot-code:var(--accent-deep);
63
75
  color-scheme:light;
64
76
  }
65
- /* dark tier — space sky + dark cards. Two hooks so an explicit choice beats
66
- the OS preference; keep the two blocks in lockstep (tests/cosmos_token_contrast.mjs).
77
+ /* dark tier — ember marigold's night: a WARM umber world, not an inversion of
78
+ the light one and no longer the gate's blue-violet space (task 1002748,
79
+ direction §3). Two hooks so an explicit choice beats the OS preference; keep
80
+ the two blocks in lockstep (tests/cosmos_token_contrast.mjs).
67
81
 
68
82
  A declaration here is PERMANENT for every instance: these selectors are (0,2,0)
69
83
  and the branding pack injects a plain :root at (0,1,0), so it can never override
70
- them. --accent and --sea are therefore deliberately absent — that omission is the
71
- only reason a re-themed instance's accent reaches dark mode at all.
84
+ them. --accent, --sea and --terracotta are therefore deliberately absent — that
85
+ omission is the only reason a re-themed instance's accent reaches dark mode at all.
72
86
  --accent-deep is the exception: it is text, and a hex tuned to 4.5:1 on a near-white
73
- card cannot also clear it on a #12142e one. It is DERIVED from --accent (a different
74
- property, so no cycle) and so still follows the pack. */
87
+ card cannot also clear it on a #2c1710 one. It is DERIVED from --accent (a different
88
+ property, so no cycle) and so still follows the pack. Every chrome token that wants
89
+ the warm highlight takes var(--accent-deep) for the same reason: marigold's own
90
+ #ffab63 is what that derivation yields, so writing the literal would have frozen
91
+ one pack's colour into every instance's dark mode. */
75
92
  :root[data-mode="dark"]{
76
- --bg:#0d0f28; --bg-card:#12142e; --bg-deep:#1d2046;
77
- --ink:#f4eee7; --ink-soft:#c9bfb2; --ink-faint:#998e82;
78
- --rule:#5a4a7a; --rule-soft:#3a3560;
93
+ --bg:#150c06; --bg-card:#2c1710; --bg-deep:#3f2317;
94
+ --ink:#fdeedd; --ink-soft:#dcb693; --ink-faint:#b89272;
95
+ --rule:#5e3521; --rule-soft:#3f2317;
79
96
  --accent-deep:color-mix(in srgb, var(--accent) 45%, #ffffff);
80
97
  --ok:#4ade80; --warn:#fbbf24; --err:#f87171;
81
- --page-bg:#05060f;
82
- --sky-bg:radial-gradient(120% 85% at 50% -12%, #2b2456 0%, rgba(43,36,86,0) 55%),
83
- radial-gradient(70% 55% at 82% 112%, rgba(56,120,200,.16), transparent 62%),
84
- radial-gradient(58% 48% at 12% 6%, rgba(120,70,160,.14), transparent 60%),
85
- linear-gradient(180deg, #05060f 0%, #0a0c20 48%, #0d0f28 100%);
98
+ --page-bg:#150c06;
99
+ --sky-bg:#150c06;
86
100
  --star-display:block;
87
- --chrome-ink:#ffffff;
88
- --chrome-ink-dim:rgba(255,255,255,0.85);
101
+ --chrome-ink:#fdeedd;
102
+ --chrome-ink-dim:#dcb693;
89
103
  --chrome-accent:var(--accent-deep);
90
- --chrome-glow:0 2px 12px rgba(20,12,30,.7);
91
- --glass-ink:#ffd98a;
92
- --glass-bg:rgba(255,255,255,0.06);
93
- --glass-border:rgba(255,217,138,0.45);
94
- --ava-shadow:0 0 14px rgba(251,146,60,.45);
95
- --hero-lede:rgba(255,255,255,0.82);
96
- --hero-b:#ffd98a;
97
- --foot-ink:rgba(255,255,255,0.55);
98
- --foot-code:#ffd98a;
104
+ --chrome-glow:0 2px 12px rgba(0,0,0,.65);
105
+ --glass-ink:var(--accent-deep);
106
+ --glass-bg:rgba(255,255,255,0.07);
107
+ --glass-border:color-mix(in srgb, var(--accent) 42%, transparent);
108
+ --ava-shadow:0 0 14px color-mix(in srgb, var(--accent) 45%, transparent);
109
+ --hero-lede:#dcb693;
110
+ --hero-b:var(--accent-deep);
111
+ --foot-ink:#b89272;
112
+ --foot-code:var(--accent-deep);
113
+ --shadow-card:0 24px 60px -24px rgba(0,0,0,.6), 0 6px 22px -8px rgba(0,0,0,.4);
99
114
  color-scheme:dark;
100
115
  }
101
116
  @media (prefers-color-scheme: dark){
102
117
  :root:not([data-mode="light"]){
103
- --bg:#0d0f28; --bg-card:#12142e; --bg-deep:#1d2046;
104
- --ink:#f4eee7; --ink-soft:#c9bfb2; --ink-faint:#998e82;
105
- --rule:#5a4a7a; --rule-soft:#3a3560;
118
+ --bg:#150c06; --bg-card:#2c1710; --bg-deep:#3f2317;
119
+ --ink:#fdeedd; --ink-soft:#dcb693; --ink-faint:#b89272;
120
+ --rule:#5e3521; --rule-soft:#3f2317;
106
121
  --accent-deep:color-mix(in srgb, var(--accent) 45%, #ffffff);
107
122
  --ok:#4ade80; --warn:#fbbf24; --err:#f87171;
108
- --page-bg:#05060f;
109
- --sky-bg:radial-gradient(120% 85% at 50% -12%, #2b2456 0%, rgba(43,36,86,0) 55%),
110
- radial-gradient(70% 55% at 82% 112%, rgba(56,120,200,.16), transparent 62%),
111
- radial-gradient(58% 48% at 12% 6%, rgba(120,70,160,.14), transparent 60%),
112
- linear-gradient(180deg, #05060f 0%, #0a0c20 48%, #0d0f28 100%);
123
+ --page-bg:#150c06;
124
+ --sky-bg:#150c06;
113
125
  --star-display:block;
114
- --chrome-ink:#ffffff;
115
- --chrome-ink-dim:rgba(255,255,255,0.85);
126
+ --chrome-ink:#fdeedd;
127
+ --chrome-ink-dim:#dcb693;
116
128
  --chrome-accent:var(--accent-deep);
117
- --chrome-glow:0 2px 12px rgba(20,12,30,.7);
118
- --glass-ink:#ffd98a;
119
- --glass-bg:rgba(255,255,255,0.06);
120
- --glass-border:rgba(255,217,138,0.45);
121
- --ava-shadow:0 0 14px rgba(251,146,60,.45);
122
- --hero-lede:rgba(255,255,255,0.82);
123
- --hero-b:#ffd98a;
124
- --foot-ink:rgba(255,255,255,0.55);
125
- --foot-code:#ffd98a;
129
+ --chrome-glow:0 2px 12px rgba(0,0,0,.65);
130
+ --glass-ink:var(--accent-deep);
131
+ --glass-bg:rgba(255,255,255,0.07);
132
+ --glass-border:color-mix(in srgb, var(--accent) 42%, transparent);
133
+ --ava-shadow:0 0 14px color-mix(in srgb, var(--accent) 45%, transparent);
134
+ --hero-lede:#dcb693;
135
+ --hero-b:var(--accent-deep);
136
+ --foot-ink:#b89272;
137
+ --foot-code:var(--accent-deep);
138
+ --shadow-card:0 24px 60px -24px rgba(0,0,0,.6), 0 6px 22px -8px rgba(0,0,0,.4);
126
139
  color-scheme:dark;
127
140
  }
128
141
  }
@@ -136,7 +149,19 @@
136
149
  --accent-soft:color-mix(in srgb, var(--accent) 15%, var(--bg-card));
137
150
  --sea-soft:color-mix(in srgb, var(--sea) 16%, var(--bg-card));
138
151
  --neutral-soft:color-mix(in srgb, var(--ink) 8%, var(--bg-card));
139
- --shadow-card:0 24px 60px -24px rgba(5,6,15,.55), 0 6px 22px -8px rgba(5,6,15,.35);
152
+ /* ink-derived so the shadow is a WARM brown on the marigold ground instead of
153
+ the cold navy it used to cast. The dark blocks override it with a plain black
154
+ — in dark, --ink is near-white and this formula would glow, not shade. */
155
+ --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);
156
+
157
+ /* layout tier (task 1002748) — mode-independent, so it lives with the derived
158
+ tier and not in the light/dark blocks. Named "pad"/"fs" rather than "space"
159
+ because --space-deep/mid/high above are the gate's SKY palette. */
160
+ --pad-xs:8px; --pad-sm:14px;
161
+ --pad-md:clamp(15px,2.2vw,22px); /* gutter between grid cells */
162
+ --pad-lg:clamp(19px,2.6vw,28px); /* padding inside a marketing panel */
163
+ --pad-xl:clamp(38px,6vw,78px); /* rhythm between sections */
164
+ --fs-h2:clamp(22px,3vw,29px); --fs-h3:17.5px; --fs-lede:15.5px; --fs-body:14.5px;
140
165
  }
141
166
 
142
167
  *{box-sizing:border-box;margin:0;padding:0;}
@@ -302,6 +327,29 @@ h1{font-family:var(--font-display);font-weight:700;font-size:clamp(24px,3.4vw,32
302
327
  .strip.flowDown .slbl{color:var(--ink-faint);}
303
328
  .strip.flowDown .stages li.now .slbl,.strip.flowDown .stages li.done .slbl{color:var(--ink-soft);}
304
329
 
330
+ /* ── layout primitives (task 1002748, direction §6). cosmos.css was built for
331
+ /create and /projects — two single-column forms — so it had no page container,
332
+ no type scale below h1, no section rhythm and no grid. The landing page needed
333
+ all five; they live HERE rather than page-locally so the marketing surface and
334
+ the working surfaces stay one system instead of two that merely resemble each
335
+ other. `.hero` above is the /create + /projects page-title block and is a
336
+ different thing from a landing hero — both are kept. ── */
337
+ .wrap{position:relative;z-index:1;max-width:1060px;margin:0 auto;padding:0 clamp(16px,4vw,40px);}
338
+ .sec{margin-bottom:var(--pad-xl);}
339
+ h2.sec-h{font-family:var(--font-display);font-weight:700;font-size:var(--fs-h2);letter-spacing:-0.6px;line-height:1.15;margin-bottom:10px;}
340
+ h3.sec-h3{font-family:var(--font-display);font-weight:700;font-size:var(--fs-h3);letter-spacing:-0.3px;line-height:1.25;margin-bottom:8px;}
341
+ p.sec-p{font-size:var(--fs-lede);font-weight:500;color:var(--ink-soft);line-height:1.6;max-width:60ch;}
342
+ /* the one grid primitive: cells never narrower than --col, gutter from the
343
+ spacing scale. `.pair` is the two-up variant that collapses at the mid
344
+ breakpoint — the shape a doors/split row wants. */
345
+ .grid{display:grid;gap:var(--pad-md);grid-template-columns:repeat(auto-fit,minmax(var(--col,238px),1fr));}
346
+ .grid.pair{grid-template-columns:1fr 1fr;}
347
+
348
+ /* ── the mid breakpoint: where a two-up layout stops fitting a tablet. ── */
349
+ @media (max-width:900px){
350
+ .grid.pair{grid-template-columns:1fr;}
351
+ }
352
+
305
353
  /* ── page-level bits ── */
306
354
  .alert{display:none;background:var(--err-soft);border:2px solid color-mix(in srgb,var(--err) 25%,transparent);color:var(--err);font-weight:600;font-size:14px;border-radius:14px;padding:12px 16px;margin-bottom:18px;}
307
355
  .alert.on{display:block;}