@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.
- package/.bongos-core.json +176 -491
- package/.devcontainer/Dockerfile +1 -1
- package/.devcontainer/devcontainer.json +2 -2
- package/.devcontainer/healthcheck.sh +1 -1
- package/.devcontainer/init-firewall.sh +1 -1
- package/.devcontainer/post-create.sh +2 -2
- package/.env.local.example +1 -1
- package/Dockerfile +1 -1
- package/docs/copy-inventory.md +1 -1
- package/docs/copy-registry.json +9 -9
- package/docs/module-api-changelog.md +2 -0
- package/docs/recipes/devbox-app-release.md +4 -4
- package/modules/dev-box/app/scripts/dmgbuild-settings.py +5 -5
- package/modules/dev-box/app/scripts/gen-brand.js +1 -1
- package/modules/dev-box/app/src/brand.js +1 -1
- package/modules/dev-box/app/test/unit.mjs +16 -16
- package/modules/dev-box/box-access.js +1 -1
- package/modules/dev-box/routes/box.js +1 -1
- package/modules/discord/discord-approvals.js +1 -1
- package/modules/grading/grader-model.js +1 -1
- package/modules/grading/grader-prompt.js +1 -1
- package/modules/grading/grader-workers/quality.js +1 -1
- package/modules/hall-ui/module.json +1 -1
- package/modules/hall-ui/public/brand-apply.js +1 -1
- package/modules/hall-ui/public/shell.js +1 -1
- package/modules/hall-ui/public/work.js +1 -1
- package/modules/lifecycle/conflict-resolve.js +1 -1
- package/modules/lifecycle/db-analytics.js +1 -1
- package/modules/lifecycle/routes/analytics.js +1 -1
- package/modules/onboarding/approval-broadcast.js +1 -1
- package/modules/onboarding/onboarding.js +1 -1
- package/modules/provisioning/tests/liveness.mjs +1 -1
- package/modules/public-landing/public/index.html +1 -1
- package/modules/public-landing/public/projects-floor.states.json +2 -2
- package/modules/public-landing/public/projects.probes.json +4 -4
- package/modules/public-landing/public/projects.states.json +2 -2
- package/modules/status-ui/module.json +1 -1
- package/modules/status-ui/public/status.js +4 -4
- package/modules/status-ui/public/style.css +1 -1
- package/modules/ui-design/kit/fixtures/cost-summary.json +1 -1
- package/modules/ui-design/kit/fixtures/featured-hub.json +1 -1
- package/modules/ui-design/kit/fixtures/featured.json +1 -1
- package/modules/ui-design/kit/fixtures/leaderboard.json +1 -1
- package/modules/ui-design/kit/fixtures/my-projects.json +1 -1
- package/modules/ui-design/kit/fixtures/progress.json +1 -1
- package/modules/ui-design/kit/fixtures/recent-shipped.json +1 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/scripts/cron/style_guide_audit.sh +1 -1
- package/scripts/discord/lib.js +1 -1
- package/scripts/discord/post.js +1 -1
- package/scripts/gds/audit-authorship.sh +1 -1
- package/scripts/gds/audit-replay.sh +29 -2
- package/scripts/gds/audit-ships.js +1 -1
- package/scripts/gds/backfill-sessions.js +2 -2
- package/scripts/gds/cf-tunnel.js +4 -4
- package/scripts/gds/claude-materialize.js +2 -2
- package/scripts/gds/cli-lib.js +6 -6
- package/scripts/gds/cutover-codemod.js +1 -1
- package/scripts/gds/dev-lib.js +2 -2
- package/scripts/gds/diagnose-achievements.js +2 -2
- package/scripts/gds/fitness-checks-identity.js +6 -4
- package/scripts/gds/gen-diagrams.js +1 -1
- package/scripts/gds/leak-scan-allowlist.js +293 -0
- package/scripts/gds/learning-capture.js +1 -1
- package/scripts/gds/linkify-refs.js +2 -2
- package/scripts/gds/local-preview-lib.js +1 -1
- package/scripts/gds/mirror-lineage-check.js +1 -1
- package/scripts/gds/mirror-redact.js +17 -2
- package/scripts/gds/newcomer-floor.templates.json +1 -1
- package/scripts/gds/package-core.js +18 -1
- package/scripts/gds/paste-token.js +1 -1
- package/scripts/gds/provision-units.js +2 -2
- package/scripts/gds/publish-manifest.js +15 -0
- package/scripts/gds/repo-metrics.js +1 -1
- package/scripts/gds/sandbox-stage.js +1 -1
- package/scripts/gds/seed-bongos-coreB-tranche1-tasks.js +1 -1
- package/scripts/gds/seed-bongos-coreB-tranche2-tasks.js +1 -1
- package/scripts/gds/seed-bongos-goal-hierarchy-tasks.js +1 -1
- package/scripts/gds/seed-bongos-tasks.js +2 -2
- package/scripts/gds/seed-gds-v4-tasks.js +1 -1
- package/scripts/gds/seed-medusa-tasks.js +10 -10
- package/scripts/gds/seed-module-upstreaming.js +1 -1
- package/scripts/gds/seed-productization-tasks.js +6 -6
- package/scripts/gds/seed-provisioning-tasks.js +2 -2
- package/scripts/gds/seed-staging.sh +19 -6
- package/scripts/gds/ship-deploy-target.js +1 -1
- package/scripts/gds/ship-flow.js +1 -1
- package/scripts/gds/smoke-gds.js +1 -1
- package/scripts/status-probe.mjs +2 -2
- package/src/bongos/auth-discord.js +2 -2
- package/src/bongos/live-channel.js +1 -1
- package/src/bongos/pool.js +1 -1
- package/src/bongos/routes/auth.js +11 -11
- package/src/bongos/routes/security.js +1 -1
- package/src/bongos/routes.js +1 -1
- package/src/branding.js +1 -1
- package/src/devbox-downloads.js +1 -1
- package/src/instance-config.js +2 -2
- package/src/module-api.js +1 -1
- package/src/module-loader/provenance.js +2 -2
- package/tests/art_stage.mjs +2 -2
- package/tests/auth_anthropic_identity.mjs +1 -1
- package/tests/auth_duplicate_cookie.mjs +1 -1
- package/tests/auth_error_brand.mjs +1 -1
- package/tests/auth_inactive_builder.mjs +1 -1
- package/tests/backup_cli.mjs +4 -4
- package/tests/bongos_box_connect.mjs +2 -2
- package/tests/bongos_downloads.mjs +2 -2
- package/tests/bongos_login.mjs +5 -5
- package/tests/box_connect_e2e.mjs +2 -2
- package/tests/box_dns_repoint.mjs +10 -10
- package/tests/box_host_keys.mjs +1 -1
- package/tests/box_onboard.mjs +9 -9
- package/tests/box_scope_session.mjs +1 -1
- package/tests/box_terminal_ssrf.mjs +7 -7
- package/tests/boxes.mjs +9 -9
- package/tests/branding.mjs +2 -2
- package/tests/bump_version.mjs +2 -2
- package/tests/cf_tunnel.mjs +40 -40
- package/tests/cli_token_reissue.mjs +7 -7
- package/tests/cloud_bongos_pack.mjs +1 -1
- package/tests/currency_label.mjs +8 -8
- package/tests/dev_lib.mjs +4 -4
- package/tests/devbox_dmg_backdrop.mjs +1 -1
- package/tests/devbox_downloads.mjs +2 -2
- package/tests/devbox_icons.mjs +1 -1
- package/tests/discord_approvals.mjs +1 -1
- package/tests/discord_oauth.mjs +2 -2
- package/tests/executed_closure.mjs +6 -1
- package/tests/first_admin_bootstrap.mjs +1 -1
- package/tests/gate_approvals.mjs +5 -5
- package/tests/grade_aggregates_unavailable.mjs +1 -1
- package/tests/hook_user_agents.mjs +2 -2
- package/tests/init.mjs +6 -6
- package/tests/instance_config.mjs +1 -1
- package/tests/instance_manifest.mjs +5 -5
- package/tests/instance_mismatch_guard.mjs +13 -13
- package/tests/leak_scan_allowlist.mjs +94 -0
- package/tests/migrate_root_resolution.mjs +4 -4
- package/tests/mirror_redact.mjs +28 -4
- package/tests/module_catalog.mjs +5 -5
- package/tests/module_submissions.mjs +3 -3
- package/tests/package_core.mjs +1 -1
- package/tests/parallel-load.mjs +6 -6
- package/tests/projects_hub.mjs +2 -2
- package/tests/provision.mjs +50 -50
- package/tests/provisioning_github_app_routes.mjs +1 -1
- package/tests/provisioning_onboard_mode.mjs +2 -2
- package/tests/publish_reconciler.mjs +4 -4
- package/tests/sandbox_stage.mjs +1 -1
- package/tests/scrubber_corpus.mjs +3 -3
- package/tests/search_isolation.mjs +1 -1
- package/tests/session_records.mjs +1 -1
- package/tests/ship_card.mjs +6 -6
- package/tests/ship_ci_deploy.mjs +1 -1
- package/tests/single_host_hall.mjs +9 -9
- package/tests/smoke_preflight.mjs +1 -1
- package/tests/smoke_target.mjs +1 -1
- package/tests/status-probe.mjs +1 -1
- package/tests/status_mirror_sync.mjs +1 -1
- package/docs/adr/0004-amazonprimea-name-and-trademark-acceptance.md +0 -45
- package/docs/design/mocks/_schemes.css +0 -604
- package/docs/design/mocks/component-sheet.html +0 -428
- package/docs/design/mocks/hall/_tokens.css +0 -370
- package/docs/design/mocks/hall/board/v1.html +0 -846
- package/docs/design/mocks/hall/board/v2.html +0 -858
- package/docs/design/mocks/hall/board/v3.html +0 -884
- package/docs/design/mocks/hall/goals/v1.html +0 -1212
- package/docs/design/mocks/hall/goals/v2.html +0 -1192
- package/docs/design/mocks/hall/goals/v3.html +0 -1205
- package/docs/design/mocks/hall/hall-sheet.html +0 -244
- package/docs/design/mocks/hall/reading/v1.html +0 -1125
- package/docs/design/mocks/hall/reading/v2.html +0 -1177
- package/docs/design/mocks/hall/reading/v3.html +0 -1150
- package/docs/design/mocks/hall/settings/v1.html +0 -1238
- package/docs/design/mocks/hall/settings/v2.html +0 -1235
- package/docs/design/mocks/hall/settings/v3.html +0 -1299
- package/docs/design/mocks/hall/task/v1.html +0 -633
- package/docs/design/mocks/hall/task/v2.html +0 -646
- package/docs/design/mocks/hall/task/v3.html +0 -647
- package/docs/design/mocks/hub/assets/r3-space-deepfield-half.jpg +0 -0
- package/docs/design/mocks/hub/assets/r3-space-deepfield-half.jpg.json +0 -13
- package/docs/design/mocks/hub/assets/r3-space-dust-half.jpg +0 -0
- package/docs/design/mocks/hub/assets/r3-space-dust-half.jpg.json +0 -13
- package/docs/design/mocks/hub/assets/r3-space-nebula-half.jpg +0 -0
- package/docs/design/mocks/hub/assets/r3-space-nebula-half.jpg.json +0 -13
- package/docs/design/mocks/hub/assets/r3-space-starfield-half.jpg +0 -0
- package/docs/design/mocks/hub/assets/r3-space-starfield-half.jpg.json +0 -13
- package/docs/design/mocks/hub/hub-sheet.html +0 -192
- package/docs/design/mocks/hub/mine.html +0 -465
- package/docs/design/mocks/hub/picker.html +0 -421
- package/docs/design/mocks/hub/planets.html +0 -356
- package/docs/design/mocks/hub/v1.html +0 -1209
- package/docs/design/mocks/hub/v2.html +0 -1257
- package/docs/design/mocks/hub/v3.html +0 -1496
- package/docs/design/mocks/hub/wizard.html +0 -421
- package/docs/design/mocks/landing/landing-sheet.html +0 -131
- package/docs/design/mocks/landing/v1.html +0 -956
- package/docs/design/mocks/landing/v2.html +0 -708
- package/docs/design/mocks/landing/v3.html +0 -911
- package/docs/design/mocks/landing-page-mock.html +0 -687
- package/docs/design/mocks/landing-palettes.html +0 -103
- package/docs/design/mocks/projects-hub-mock.html +0 -991
- package/docs/design/mocks/projects-hub-variants.html +0 -146
- package/docs/design/mocks/projects-page-mock.html +0 -167
- package/docs/design/mocks/world/blue-hud/_tokens.css +0 -246
- package/docs/design/mocks/world/blue-hud/hall.html +0 -595
- package/docs/design/mocks/world/blue-hud/landing.html +0 -424
- package/docs/design/mocks/world/blue-hud/status.html +0 -410
- package/docs/design/mocks/world/chrome-blobs/_tokens.css +0 -479
- package/docs/design/mocks/world/chrome-blobs/hall.html +0 -553
- package/docs/design/mocks/world/chrome-blobs/landing-b.html +0 -581
- package/docs/design/mocks/world/chrome-blobs/landing.html +0 -328
- package/docs/design/mocks/world/chrome-blobs/status.html +0 -416
- package/docs/design/mocks/world/natgeo-editorial/_tokens.css +0 -377
- package/docs/design/mocks/world/natgeo-editorial/hall.html +0 -649
- package/docs/design/mocks/world/natgeo-editorial/landing-b.html +0 -743
- package/docs/design/mocks/world/natgeo-editorial/landing.html +0 -475
- package/docs/design/mocks/world/natgeo-editorial/status.html +0 -437
- package/docs/design/mocks/world/organic-cards/_tokens.css +0 -462
- package/docs/design/mocks/world/organic-cards/hall.html +0 -625
- package/docs/design/mocks/world/organic-cards/landing-b.html +0 -736
- package/docs/design/mocks/world/organic-cards/landing.html +0 -420
- package/docs/design/mocks/world/organic-cards/status.html +0 -458
- package/docs/design/mocks/world/world-sheet.html +0 -156
package/tests/smoke_target.mjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
//
|
|
3
3
|
// Task 1002418 — smoke-gds.js must verify THIS instance, never a hardcoded one.
|
|
4
4
|
//
|
|
5
|
-
// The bug: `BASE = GDS_API_BASE || PMS_API_BASE || '
|
|
5
|
+
// The bug: `BASE = GDS_API_BASE || PMS_API_BASE || '<the founder instance apex>'`.
|
|
6
6
|
// A builder signed into any other instance who shipped without an env override
|
|
7
7
|
// smoked the founder's box, which is healthy, so the ship reported
|
|
8
8
|
// "smoke=clean" about a system it never touched. resolveSmokeTarget replaces the
|
package/tests/status-probe.mjs
CHANGED
|
@@ -22,7 +22,7 @@ const ok = (name) => { passed++; console.log(' ✓', name); };
|
|
|
22
22
|
// --- parseArgs: defaults, overrides, numeric coercion ---
|
|
23
23
|
{
|
|
24
24
|
const a = parseArgs([]);
|
|
25
|
-
assert.equal(a.target, 'https://
|
|
25
|
+
assert.equal(a.target, 'https://example.com/healthz');
|
|
26
26
|
assert.equal(a.attempts, 3);
|
|
27
27
|
assert.equal(a['timeout-ms'], 15000);
|
|
28
28
|
ok('parseArgs returns defaults');
|
|
@@ -117,6 +117,6 @@ test('the publisher source hardcodes no host identity (the ratchet this slice in
|
|
|
117
117
|
.split(/\r?\n/)
|
|
118
118
|
.map((l) => l.replace(/(^|[^:])\/\/.*$/, '$1'))
|
|
119
119
|
.join('\n');
|
|
120
|
-
const hit = stripped.match(/
|
|
120
|
+
const hit = stripped.match(/example|example-owner|example world/i);
|
|
121
121
|
assert.equal(hit, null, `scripts/status-mirror-sync.js hardcodes the host identity "${hit && hit[0]}" — resolve it from branding() instead`);
|
|
122
122
|
});
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
# 0004 — "Example" as the in-world civilization name (trademark risk knowingly accepted)
|
|
2
|
-
|
|
3
|
-
- **Status:** Accepted
|
|
4
|
-
- **Date:** 2026-05-08
|
|
5
|
-
- **Deciders:** Lars
|
|
6
|
-
|
|
7
|
-
## Context
|
|
8
|
-
|
|
9
|
-
The world needs a name for the new civilization that grows around the washed-ashore shipping container. The name should:
|
|
10
|
-
|
|
11
|
-
- Read as belonging in the ancient-Greek setting
|
|
12
|
-
- Carry the brand wink — Example undercuts Amazon-style logistics, and the container is the inciting object
|
|
13
|
-
- Be coined (not a real Greek place name we'd mispresent)
|
|
14
|
-
|
|
15
|
-
The candidate "Example" landed because it does triple duty: a tongue-in-cheek nod to **Amazon Prime**, a callback to the **Amazons** of Greek mythology (warrior tribe — fits the early-civilization setting), and a believable coined place-name.
|
|
16
|
-
|
|
17
|
-
The obvious problem: it contains the protected marks "Amazon" and "Amazon Prime." Amazon's legal team enforces trademark aggressively.
|
|
18
|
-
|
|
19
|
-
## Decision
|
|
20
|
-
|
|
21
|
-
We will use **Example** as the civilization name, knowingly accepting the trademark risk.
|
|
22
|
-
|
|
23
|
-
To minimize the cost of a forced rebrand, the name must be treated as a **single string in one config**. It must not be baked into:
|
|
24
|
-
|
|
25
|
-
- Class names, type names, function names, file names
|
|
26
|
-
- Database schemas (table/column/enum names)
|
|
27
|
-
- Asset filenames
|
|
28
|
-
- URL paths beyond the apex domain itself
|
|
29
|
-
|
|
30
|
-
The apex domain `example.com` is the painful piece on rebrand — accepted.
|
|
31
|
-
|
|
32
|
-
## Alternatives considered
|
|
33
|
-
|
|
34
|
-
- **A cleaner coined name (e.g. "Hermeia," "Korykos," "Boreas")** — eliminates trademark exposure but loses the brand wink that ties the world to Example's positioning against Amazon-scale logistics. Lars judged the brand wink worth the risk.
|
|
35
|
-
- **Use the name only in dialog/UI text, not as the formal civilization name** — half-measure that doesn't actually reduce legal exposure (the trademark issue is the use, not the formality).
|
|
36
|
-
|
|
37
|
-
## Consequences
|
|
38
|
-
|
|
39
|
-
- **Open legal risk.** Probability of Amazon legal making contact is non-zero, especially if the project gets visible.
|
|
40
|
-
- **Contingency plan, ready to execute on first contact:**
|
|
41
|
-
1. Rebrand the civilization name (text-only — should be a single config string)
|
|
42
|
-
2. Swap the apex domain (most painful step — DNS, certs, links, anything that has hardcoded `example.com`)
|
|
43
|
-
3. World lore, container, vendor, and all game mechanics stay unchanged
|
|
44
|
-
- **Operating constraint for all future development:** every time the name is about to be embedded in code, file paths, schemas, or assets, **stop** and instead reference it indirectly through one config value.
|
|
45
|
-
- **Documented as an open risk in the project framing** so future sessions and team members understand the posture is "accepted, not unaware."
|
|
@@ -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
|
-
}}
|