@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
|
@@ -1,410 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8">
|
|
5
|
-
<script>
|
|
6
|
-
(function(){try{var q=new URLSearchParams(location.search).get('mode');var m=(q==='light'||q==='dark')?q:localStorage.getItem('cb-color-mode');if(m==='light'||m==='dark')document.documentElement.setAttribute('data-mode',m);}catch(e){}})();
|
|
7
|
-
</script>
|
|
8
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
9
|
-
<title>Cloud Bongos, the public ledger</title>
|
|
10
|
-
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
11
|
-
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
12
|
-
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Antonio:wght@400;600;700&family=Azeret+Mono:wght@400;500&family=Barlow:wght@400;500;600&display=swap">
|
|
13
|
-
<link rel="stylesheet" href="_tokens.css">
|
|
14
|
-
<style>
|
|
15
|
-
body { --fi: 26px; overflow-x: hidden; padding: 0 clamp(18px, 5.2vw, 76px); }
|
|
16
|
-
|
|
17
|
-
/* ---------- the bezel: sharp registration marks over the whole viewport ---------- */
|
|
18
|
-
.bezel { position: fixed; inset: 0; pointer-events: none; z-index: 0; }
|
|
19
|
-
.head, .ledger, .foot { position: relative; z-index: 1; }
|
|
20
|
-
.pbk { position: absolute; width: 34px; height: 34px; border: 0 solid var(--bracket-page); }
|
|
21
|
-
.pbk-tl { top: var(--fi); left: var(--fi); border-top-width: 2px; border-left-width: 2px; }
|
|
22
|
-
.pbk-tr { top: var(--fi); right: var(--fi); border-top-width: 2px; border-right-width: 2px; }
|
|
23
|
-
.pbk-bl { bottom: var(--fi); left: var(--fi); border-bottom-width: 2px; border-left-width: 2px; }
|
|
24
|
-
.pbk-br { bottom: var(--fi); right: var(--fi); border-bottom-width: 2px; border-right-width: 2px; }
|
|
25
|
-
.hr { position: absolute; left: calc(var(--fi) + 52px); right: calc(var(--fi) + 52px); height: 0; border-top: var(--line) solid var(--rule); }
|
|
26
|
-
.hr-t { top: calc(var(--fi) + 1px); }
|
|
27
|
-
.hr-b { bottom: calc(var(--fi) + 1px); }
|
|
28
|
-
.mk { position: absolute; color: var(--ink-faint); line-height: 0; }
|
|
29
|
-
.mk svg { display: block; width: 17px; height: 17px; }
|
|
30
|
-
.mk-t { top: calc(var(--fi) - 7px); left: 50%; margin-left: -8px; background: var(--bg); padding: 0 5px; }
|
|
31
|
-
.mk-b { bottom: calc(var(--fi) - 7px); left: 50%; margin-left: -8px; background: var(--bg); padding: 0 5px; }
|
|
32
|
-
.mk-l { left: calc(var(--fi) - 8px); top: 50%; margin-top: -8px; }
|
|
33
|
-
.mk-r { right: calc(var(--fi) - 8px); top: 50%; margin-top: -8px; }
|
|
34
|
-
|
|
35
|
-
/* ---------- title block + section rail ---------- */
|
|
36
|
-
.head {
|
|
37
|
-
display: grid; grid-template-columns: minmax(0, 580px) minmax(0, 1fr);
|
|
38
|
-
gap: 30px; align-items: start; padding: clamp(48px, 7vh, 76px) 0 clamp(26px, 3.4vh, 40px);
|
|
39
|
-
}
|
|
40
|
-
h1 {
|
|
41
|
-
margin: 0; font-family: var(--font-display); font-weight: 700;
|
|
42
|
-
font-size: clamp(2.5rem, 6.2vw, 5.6rem); line-height: .88; letter-spacing: .004em;
|
|
43
|
-
text-transform: uppercase; color: var(--ink);
|
|
44
|
-
}
|
|
45
|
-
.sub {
|
|
46
|
-
margin: 4px 0 0; font-family: var(--font-display); font-weight: 700;
|
|
47
|
-
font-size: clamp(1.55rem, 3.7vw, 3.3rem); line-height: 1; letter-spacing: .006em;
|
|
48
|
-
text-transform: uppercase; color: var(--accent-ui);
|
|
49
|
-
}
|
|
50
|
-
.meta { margin: 14px 0 0; font: 400 13.5px/1 var(--font-body); color: var(--ink-faint); }
|
|
51
|
-
.zoomrow { margin: 16px 0 0; display: flex; align-items: center; gap: 9px; }
|
|
52
|
-
.zoomrow .cap { font: 600 10.5px/1 var(--font-body); letter-spacing: var(--label-track); text-transform: uppercase; color: var(--ink-faint); }
|
|
53
|
-
.zoomrow button {
|
|
54
|
-
min-width: 32px; height: 28px; padding: 0 9px; cursor: pointer;
|
|
55
|
-
background: none; border: var(--line) solid var(--edge-ui); border-radius: var(--radius-pill);
|
|
56
|
-
color: var(--ink-soft); font: 600 12px/1 var(--font-body); letter-spacing: .04em;
|
|
57
|
-
}
|
|
58
|
-
.zoomrow button:hover { color: var(--accent-text); border-color: var(--accent-text); }
|
|
59
|
-
|
|
60
|
-
.srail { display: flex; flex-wrap: nowrap; gap: 2px; justify-content: flex-end; padding-top: 10px; }
|
|
61
|
-
.srail a {
|
|
62
|
-
display: block; max-width: 106px; padding: 7px 9px 8px; text-decoration: none;
|
|
63
|
-
border-bottom: 2px solid transparent; border-radius: var(--radius-sm) var(--radius-sm) 0 0;
|
|
64
|
-
color: var(--ink-soft); font: 500 11.2px/1.3 var(--font-body); letter-spacing: .1em; text-transform: uppercase;
|
|
65
|
-
}
|
|
66
|
-
.srail a:hover { color: var(--accent-text); }
|
|
67
|
-
.srail a[aria-current="true"] { color: var(--accent-text); border-bottom-color: var(--accent-ui); }
|
|
68
|
-
|
|
69
|
-
/* ---------- ledger grid ---------- */
|
|
70
|
-
.ledger {
|
|
71
|
-
--zoom: 1;
|
|
72
|
-
--t-label: calc(11px * var(--zoom));
|
|
73
|
-
--t-sub: calc(12.5px * var(--zoom));
|
|
74
|
-
--t-body: calc(13.5px * var(--zoom));
|
|
75
|
-
--t-row: calc(14.5px * var(--zoom));
|
|
76
|
-
--t-h2: calc(25px * var(--zoom));
|
|
77
|
-
--t-val: calc(38px * var(--zoom));
|
|
78
|
-
display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 30px 24px;
|
|
79
|
-
align-items: start; padding-bottom: 46px;
|
|
80
|
-
}
|
|
81
|
-
.ledger > section { min-width: 0; }
|
|
82
|
-
h2 {
|
|
83
|
-
margin: 0 0 5px; font: 700 var(--t-h2)/1.06 var(--font-display);
|
|
84
|
-
letter-spacing: .05em; text-transform: uppercase; color: var(--ink);
|
|
85
|
-
}
|
|
86
|
-
.h2sub { margin: 0 0 15px; font: 400 var(--t-sub)/1.45 var(--font-body); color: var(--ink-faint); max-width: 62ch; }
|
|
87
|
-
.card {
|
|
88
|
-
background: var(--bg-card); border: var(--line) solid var(--rule); border-radius: var(--radius);
|
|
89
|
-
box-shadow: var(--shadow-card);
|
|
90
|
-
}
|
|
91
|
-
.lbl { font: 600 var(--t-label)/1 var(--font-body); letter-spacing: var(--label-track); text-transform: uppercase; color: var(--ink-soft); }
|
|
92
|
-
.tk { position: absolute; top: 10px; right: 12px; color: var(--ink-faint); line-height: 0; }
|
|
93
|
-
.tk svg { display: block; width: 13px; height: 13px; }
|
|
94
|
-
|
|
95
|
-
/* headline stats */
|
|
96
|
-
#headline-tablet { grid-column: 1 / span 12; }
|
|
97
|
-
.stats { display: grid; grid-template-columns: 1fr 1fr 1.5fr 1fr; gap: 14px; }
|
|
98
|
-
.stat { padding: calc(15px * var(--zoom)) calc(15px * var(--zoom)) calc(16px * var(--zoom)); position: relative; }
|
|
99
|
-
.stat .v {
|
|
100
|
-
display: block; margin-top: calc(11px * var(--zoom)); font-family: var(--font-display); font-weight: 700;
|
|
101
|
-
font-size: var(--t-val); line-height: .96; letter-spacing: .01em; text-transform: uppercase; color: var(--ink);
|
|
102
|
-
}
|
|
103
|
-
.stat .cap { display: block; margin-top: calc(9px * var(--zoom)); font: 400 calc(11.5px * var(--zoom))/1.35 var(--font-body); color: var(--ink-faint); }
|
|
104
|
-
.stat.wide .top { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
|
|
105
|
-
.stat.wide .pct { font: 600 calc(15px * var(--zoom))/1 var(--font-mono); color: var(--accent-text); font-variant-numeric: tabular-nums; }
|
|
106
|
-
.bar { height: 7px; border-radius: var(--radius-pill); background: var(--bg-deep); overflow: hidden; border: var(--line) solid var(--rule-soft); }
|
|
107
|
-
.bar > i { display: block; height: 100%; background: var(--accent-ui); border-radius: var(--radius-pill); }
|
|
108
|
-
.stat.wide .bar { margin-top: calc(16px * var(--zoom)); }
|
|
109
|
-
|
|
110
|
-
/* the watch */
|
|
111
|
-
#the-watch { grid-column: 1 / span 12; }
|
|
112
|
-
.watch { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
|
|
113
|
-
.pillar { display: flex; align-items: center; gap: 12px; padding: calc(14px * var(--zoom)) calc(16px * var(--zoom)); }
|
|
114
|
-
.pillar .nm { font: 600 var(--t-row)/1 var(--font-body); letter-spacing: .1em; text-transform: uppercase; color: var(--ink); }
|
|
115
|
-
.pillar .sp { flex: 1 1 auto; }
|
|
116
|
-
.pillar .up { font: 400 calc(12.5px * var(--zoom))/1 var(--font-mono); color: var(--ink-faint); font-variant-numeric: tabular-nums; }
|
|
117
|
-
.led { width: 13px; height: 13px; border-radius: 50%; background: var(--accent-ui); box-shadow: 0 0 11px var(--halo-bloom); flex: 0 0 auto; }
|
|
118
|
-
.led.dim { background: none; border: var(--line) solid var(--edge-ui); box-shadow: none; }
|
|
119
|
-
|
|
120
|
-
/* architects */
|
|
121
|
-
#architects { grid-column: 1 / span 4; }
|
|
122
|
-
.arch { padding: calc(6px * var(--zoom)) 0; position: relative; }
|
|
123
|
-
.arch ol { margin: 0; padding: 0; list-style: none; }
|
|
124
|
-
.arch li {
|
|
125
|
-
display: flex; align-items: center; gap: 10px;
|
|
126
|
-
padding: calc(9px * var(--zoom)) calc(15px * var(--zoom));
|
|
127
|
-
border-top: var(--line) solid var(--rule-soft);
|
|
128
|
-
}
|
|
129
|
-
.arch li:first-child { border-top: 0; }
|
|
130
|
-
.arch .n { width: calc(13px * var(--zoom)); font: 400 calc(12px * var(--zoom))/1 var(--font-mono); color: var(--ink-faint); font-variant-numeric: tabular-nums; }
|
|
131
|
-
.arch .who { display: block; font: 500 var(--t-body)/1.2 var(--font-body); color: var(--ink); }
|
|
132
|
-
.arch .rk { display: block; margin-top: 2px; font: 600 calc(10px * var(--zoom))/1 var(--font-body); letter-spacing: var(--label-track); text-transform: uppercase; color: var(--ink-faint); }
|
|
133
|
-
.arch .cr { margin-left: auto; font: 500 var(--t-body)/1 var(--font-mono); color: var(--accent-text); font-variant-numeric: tabular-nums; }
|
|
134
|
-
.arch svg { width: 17px; height: 17px; color: var(--ink-faint); flex: 0 0 auto; }
|
|
135
|
-
|
|
136
|
-
/* works in progress */
|
|
137
|
-
#works-in-progress { grid-column: 5 / span 4; }
|
|
138
|
-
.wip { padding: calc(15px * var(--zoom)); }
|
|
139
|
-
.wip + .wip { margin-top: 12px; }
|
|
140
|
-
.wip .top { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
|
|
141
|
-
.wip .nm { font: 600 var(--t-body)/1.25 var(--font-body); color: var(--ink); }
|
|
142
|
-
.wip .pct { font: 600 calc(13px * var(--zoom))/1 var(--font-mono); color: var(--accent-text); font-variant-numeric: tabular-nums; }
|
|
143
|
-
.wip .bar { margin-top: calc(11px * var(--zoom)); }
|
|
144
|
-
.wip .sh { margin: calc(9px * var(--zoom)) 0 0; font: 400 calc(11.5px * var(--zoom))/1 var(--font-mono); color: var(--ink-faint); font-variant-numeric: tabular-nums; }
|
|
145
|
-
.steps { display: flex; gap: 6px; margin-top: calc(11px * var(--zoom)); }
|
|
146
|
-
.steps i { flex: 1 1 auto; height: 4px; background: var(--bg-deep); border: var(--line) solid var(--rule-soft); }
|
|
147
|
-
.steps i.met { background: var(--accent-ui); border-color: var(--accent-ui); }
|
|
148
|
-
|
|
149
|
-
/* the world */
|
|
150
|
-
#the-world { grid-column: 9 / span 4; }
|
|
151
|
-
.world { margin: 0; }
|
|
152
|
-
.world-frame {
|
|
153
|
-
position: relative; overflow: hidden; border-radius: var(--radius);
|
|
154
|
-
background: var(--world-ground); border: var(--line) solid var(--rule); aspect-ratio: 1 / 0.8;
|
|
155
|
-
}
|
|
156
|
-
.world-plate {
|
|
157
|
-
position: absolute; inset: 0;
|
|
158
|
-
background: url('../../../../../.impeccable/mocks/world-assets/hud-sphere.jpg') no-repeat center / auto 40%;
|
|
159
|
-
mix-blend-mode: screen; opacity: .95;
|
|
160
|
-
}
|
|
161
|
-
.world-ring {
|
|
162
|
-
position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
|
|
163
|
-
height: 78%; width: auto; max-width: 78%; aspect-ratio: 1 / 1; border-radius: 50%; border: 2px solid var(--halo);
|
|
164
|
-
box-shadow: 0 0 30px var(--halo-bloom), inset 0 0 26px var(--halo-bloom);
|
|
165
|
-
}
|
|
166
|
-
.world figcaption { margin-top: 10px; font: 400 var(--t-sub)/1.4 var(--font-body); color: var(--ink-faint); }
|
|
167
|
-
|
|
168
|
-
/* the foundry */
|
|
169
|
-
#the-foundry { grid-column: 1 / span 6; }
|
|
170
|
-
.foundry { padding: calc(16px * var(--zoom)); }
|
|
171
|
-
.weeks { display: flex; align-items: flex-end; gap: 8px; height: calc(122px * var(--zoom)); }
|
|
172
|
-
/* the accent lights only the live week; the closed weeks stay neutral */
|
|
173
|
-
.weeks i { flex: 1 1 0; background: var(--bar-quiet); border-radius: 2px 2px 0 0; min-width: 6px; }
|
|
174
|
-
.weeks i.live { background: var(--accent-ui); }
|
|
175
|
-
.foundry .cap { margin: calc(11px * var(--zoom)) 0 0; font: 400 calc(11.5px * var(--zoom))/1 var(--font-body); color: var(--ink-faint); }
|
|
176
|
-
|
|
177
|
-
/* the treasury */
|
|
178
|
-
#the-treasury { grid-column: 7 / span 6; }
|
|
179
|
-
.treas { padding: calc(16px * var(--zoom)); }
|
|
180
|
-
.treas .heads { display: flex; gap: 30px; flex-wrap: wrap; }
|
|
181
|
-
.treas .fig { font-family: var(--font-display); font-weight: 700; font-size: calc(30px * var(--zoom)); line-height: 1; letter-spacing: .01em; color: var(--ink); }
|
|
182
|
-
.treas .figc { display: block; margin-top: calc(6px * var(--zoom)); font: 400 calc(11.5px * var(--zoom))/1 var(--font-body); color: var(--ink-faint); }
|
|
183
|
-
.cats { margin: calc(16px * var(--zoom)) 0 0; padding: 0; list-style: none; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; }
|
|
184
|
-
.cats li { border-top: var(--line) solid var(--rule-soft); padding-top: calc(9px * var(--zoom)); }
|
|
185
|
-
.cats .k { display: block; font: 600 calc(10px * var(--zoom))/1 var(--font-body); letter-spacing: var(--label-track); text-transform: uppercase; color: var(--ink-faint); }
|
|
186
|
-
.cats .v { display: block; margin-top: calc(6px * var(--zoom)); font: 500 var(--t-body)/1 var(--font-mono); color: var(--ink); font-variant-numeric: tabular-nums; }
|
|
187
|
-
|
|
188
|
-
/* lately inscribed */
|
|
189
|
-
#lately-inscribed { grid-column: 1 / span 12; }
|
|
190
|
-
.lately ul { margin: 0; padding: 0; list-style: none; }
|
|
191
|
-
.lately li {
|
|
192
|
-
display: flex; align-items: center; gap: 16px;
|
|
193
|
-
padding: calc(12px * var(--zoom)) calc(16px * var(--zoom));
|
|
194
|
-
border-top: var(--line) solid var(--rule-soft);
|
|
195
|
-
}
|
|
196
|
-
.lately li:first-child { border-top: 0; }
|
|
197
|
-
.lately .id { font: 500 var(--t-body)/1 var(--font-mono); color: var(--accent-text); font-variant-numeric: tabular-nums; flex: 0 0 auto; }
|
|
198
|
-
.lately .ttl { font: 400 var(--t-row)/1.3 var(--font-body); color: var(--ink); flex: 1 1 auto; min-width: 0; }
|
|
199
|
-
.lately .st { display: inline-flex; align-items: center; gap: 7px; font: 600 calc(10.5px * var(--zoom))/1 var(--font-body); letter-spacing: var(--label-track); text-transform: uppercase; color: var(--ink-soft); flex: 0 0 auto; }
|
|
200
|
-
.lately .st .led { width: 9px; height: 9px; }
|
|
201
|
-
.lately .when { font: 400 calc(12px * var(--zoom))/1 var(--font-body); color: var(--ink-faint); flex: 0 0 auto; width: calc(74px * var(--zoom)); text-align: right; }
|
|
202
|
-
|
|
203
|
-
.foot { padding: 22px 0 34px; border-top: var(--line) solid var(--rule-soft); }
|
|
204
|
-
.foot p { margin: 0; font: 400 13.5px/1.4 var(--font-body); color: var(--ink-soft); }
|
|
205
|
-
|
|
206
|
-
/* ---------- 390 ---------- */
|
|
207
|
-
@media (max-width: 1080px) {
|
|
208
|
-
#headline-tablet, #the-watch, #architects, #works-in-progress, #the-world,
|
|
209
|
-
#the-foundry, #the-treasury, #lately-inscribed { grid-column: 1 / span 12; grid-row: auto; }
|
|
210
|
-
.watch { grid-template-columns: 1fr 1fr; }
|
|
211
|
-
}
|
|
212
|
-
@media (max-width: 720px) {
|
|
213
|
-
body { --fi: 12px; }
|
|
214
|
-
.hr { left: calc(var(--fi) + 34px); right: calc(var(--fi) + 34px); }
|
|
215
|
-
.pbk { width: 24px; height: 24px; }
|
|
216
|
-
.mk-l, .mk-r { display: none; }
|
|
217
|
-
.head { grid-template-columns: 1fr; gap: 20px; padding-top: 54px; }
|
|
218
|
-
.srail { justify-content: flex-start; overflow-x: auto; gap: 0; padding-bottom: 4px; scrollbar-width: thin; scrollbar-color: var(--scroll-thumb) var(--scroll-track); }
|
|
219
|
-
.srail a { max-width: none; white-space: nowrap; }
|
|
220
|
-
.stats { grid-template-columns: 1fr 1fr; }
|
|
221
|
-
.watch { grid-template-columns: 1fr; }
|
|
222
|
-
.cats { grid-template-columns: 1fr 1fr; }
|
|
223
|
-
.lately li { flex-wrap: wrap; gap: 8px 12px; }
|
|
224
|
-
.lately .ttl { flex: 1 1 100%; order: 3; }
|
|
225
|
-
.lately .when { margin-left: auto; }
|
|
226
|
-
}
|
|
227
|
-
.srail::-webkit-scrollbar { height: 8px; }
|
|
228
|
-
.srail::-webkit-scrollbar-track { background: var(--scroll-track); }
|
|
229
|
-
.srail::-webkit-scrollbar-thumb { background: var(--scroll-thumb); border-radius: var(--radius-pill); }
|
|
230
|
-
</style>
|
|
231
|
-
</head>
|
|
232
|
-
<body>
|
|
233
|
-
<div class="bezel" aria-hidden="true">
|
|
234
|
-
<span class="pbk pbk-tl"></span><span class="pbk pbk-tr"></span>
|
|
235
|
-
<span class="pbk pbk-bl"></span><span class="pbk pbk-br"></span>
|
|
236
|
-
<span class="hr hr-t"></span><span class="hr hr-b"></span>
|
|
237
|
-
<span class="mk mk-t"><svg viewBox="0 0 17 17" fill="none" stroke="currentColor" stroke-width="1"><circle cx="8.5" cy="8.5" r="4.6"/><path d="M8.5 0v3M8.5 14v3M0 8.5h3M14 8.5h3"/></svg></span>
|
|
238
|
-
<span class="mk mk-b"><svg viewBox="0 0 17 17" fill="none" stroke="currentColor" stroke-width="1"><circle cx="8.5" cy="8.5" r="4.6"/><path d="M8.5 0v3M8.5 14v3M0 8.5h3M14 8.5h3"/></svg></span>
|
|
239
|
-
<span class="mk mk-l"><svg viewBox="0 0 17 17" fill="none" stroke="currentColor" stroke-width="1"><path d="M8.5 0v17M0 8.5h17"/></svg></span>
|
|
240
|
-
<span class="mk mk-r"><svg viewBox="0 0 17 17" fill="none" stroke="currentColor" stroke-width="1"><path d="M8.5 0v17M0 8.5h17"/></svg></span>
|
|
241
|
-
</div>
|
|
242
|
-
|
|
243
|
-
<header class="head">
|
|
244
|
-
<div>
|
|
245
|
-
<h1>Cloud Bongos</h1>
|
|
246
|
-
<p class="sub">the public ledger</p>
|
|
247
|
-
<p class="meta">updated 2 minutes ago</p>
|
|
248
|
-
<div class="zoomrow" id="ledger-zoom">
|
|
249
|
-
<span class="cap">Text size</span>
|
|
250
|
-
<button type="button" id="zoom-down" aria-label="Smaller text">A-</button>
|
|
251
|
-
<button type="button" id="zoom-up" aria-label="Larger text">A+</button>
|
|
252
|
-
</div>
|
|
253
|
-
</div>
|
|
254
|
-
<nav class="srail" aria-label="Sections">
|
|
255
|
-
<a href="#the-watch" aria-current="true">The Watch</a>
|
|
256
|
-
<a href="#architects">Architects</a>
|
|
257
|
-
<a href="#the-foundry">The Foundry</a>
|
|
258
|
-
<a href="#works-in-progress">Works in Progress</a>
|
|
259
|
-
<a href="#the-treasury">The Treasury</a>
|
|
260
|
-
<a href="#lately-inscribed">Lately Inscribed</a>
|
|
261
|
-
<a href="#the-world">The World</a>
|
|
262
|
-
</nav>
|
|
263
|
-
</header>
|
|
264
|
-
|
|
265
|
-
<main class="ledger">
|
|
266
|
-
<section id="headline-tablet">
|
|
267
|
-
<h2 class="sr-only">The City At A Glance</h2>
|
|
268
|
-
<div class="stats">
|
|
269
|
-
<div class="card stat">
|
|
270
|
-
<span class="lbl">Standing</span>
|
|
271
|
-
<span class="v">holds</span>
|
|
272
|
-
<span class="cap">3 of 3 pillars answering</span>
|
|
273
|
-
</div>
|
|
274
|
-
<div class="card stat">
|
|
275
|
-
<span class="lbl">Shipped</span>
|
|
276
|
-
<span class="v num">1,107</span>
|
|
277
|
-
<span class="cap">works shipped on V1 of 1,561</span>
|
|
278
|
-
</div>
|
|
279
|
-
<div class="card stat wide">
|
|
280
|
-
<div class="top"><span class="lbl">Treasury</span><span class="pct">74%</span><!-- sample --></div>
|
|
281
|
-
<div class="bar"><i style="width:74%"></i></div><!-- sample -->
|
|
282
|
-
<span class="cap">of the year's purse spent</span>
|
|
283
|
-
</div>
|
|
284
|
-
<div class="card stat">
|
|
285
|
-
<span class="lbl">Grade</span>
|
|
286
|
-
<span class="v">A</span><!-- sample -->
|
|
287
|
-
<span class="cap">mean grade, last 90 days</span>
|
|
288
|
-
</div>
|
|
289
|
-
</div>
|
|
290
|
-
</section>
|
|
291
|
-
|
|
292
|
-
<section id="the-watch">
|
|
293
|
-
<h2>The Watch</h2>
|
|
294
|
-
<p class="h2sub">The standing of each pillar, whether it holds or has fallen.</p>
|
|
295
|
-
<div class="watch">
|
|
296
|
-
<div class="card pillar"><span class="nm">Site</span><span class="sp"></span><span class="up">99.9%</span><!-- sample --><span class="led"></span><span class="sr-only">holds</span></div>
|
|
297
|
-
<div class="card pillar"><span class="nm">Hall</span><span class="sp"></span><span class="up">99.9%</span><!-- sample --><span class="led"></span><span class="sr-only">holds</span></div>
|
|
298
|
-
<div class="card pillar"><span class="nm">API</span><span class="sp"></span><span class="up">99.9%</span><!-- sample --><span class="led"></span><span class="sr-only">holds</span></div>
|
|
299
|
-
<div class="card pillar"><span class="nm">Database</span><span class="sp"></span><span class="up">unknown</span><span class="led dim"></span></div>
|
|
300
|
-
</div>
|
|
301
|
-
</section>
|
|
302
|
-
|
|
303
|
-
<section id="architects">
|
|
304
|
-
<h2>Architects of Cloud Bongos</h2>
|
|
305
|
-
<p class="h2sub">Citizens who have set the most stone.</p>
|
|
306
|
-
<div class="card arch">
|
|
307
|
-
<ol>
|
|
308
|
-
<li><span class="n num">1</span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><circle cx="12" cy="8" r="4"/><path d="M4.6 20.4a7.4 7.4 0 0 1 14.8 0"/></svg><span><span class="who">lars589</span><span class="rk">Owner</span></span><span class="cr num">44,562</span></li>
|
|
309
|
-
<li><span class="n num">2</span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><circle cx="12" cy="8" r="4"/><path d="M4.6 20.4a7.4 7.4 0 0 1 14.8 0"/></svg><span><span class="who">Percy Jackson</span><span class="rk">Owner</span></span><span class="cr num">13,358</span></li>
|
|
310
|
-
<li><span class="n num">3</span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><circle cx="12" cy="8" r="4"/><path d="M4.6 20.4a7.4 7.4 0 0 1 14.8 0"/></svg><span><span class="who">IAMMASTERQUA</span><span class="rk">Owner</span></span><span class="cr num">3,316</span></li>
|
|
311
|
-
<li><span class="n num">4</span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><circle cx="12" cy="8" r="4"/><path d="M4.6 20.4a7.4 7.4 0 0 1 14.8 0"/></svg><span><span class="who">scootermack</span><span class="rk">Owner</span></span><span class="cr num">2,440</span></li>
|
|
312
|
-
<li><span class="n num">5</span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><circle cx="12" cy="8" r="4"/><path d="M4.6 20.4a7.4 7.4 0 0 1 14.8 0"/></svg><span><span class="who">LarsCode</span><span class="rk">Newcomer</span></span><span class="cr num">44</span></li>
|
|
313
|
-
<li><span class="n num">6</span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" aria-hidden="true"><circle cx="12" cy="8" r="4"/><path d="M4.6 20.4a7.4 7.4 0 0 1 14.8 0"/></svg><span><span class="who">kingaonline</span><span class="rk">Contributor</span></span><span class="cr num">36</span></li>
|
|
314
|
-
</ol>
|
|
315
|
-
</div>
|
|
316
|
-
</section>
|
|
317
|
-
|
|
318
|
-
<section id="works-in-progress">
|
|
319
|
-
<h2>Works in Progress</h2>
|
|
320
|
-
<p class="h2sub">The endeavours now underway in the city.</p>
|
|
321
|
-
<div class="card wip">
|
|
322
|
-
<div class="top"><span class="nm">Cloud Bongos, platform (V1)</span><span class="pct">71%</span></div>
|
|
323
|
-
<div class="bar"><i style="width:71%"></i></div>
|
|
324
|
-
<p class="sh">1,107 of 1,561 shipped</p>
|
|
325
|
-
<div class="steps" role="img" aria-label="3 of 5 criteria met"><!-- sample --><i class="met"></i><i class="met"></i><i class="met"></i><i></i><i></i></div>
|
|
326
|
-
</div>
|
|
327
|
-
<div class="card wip">
|
|
328
|
-
<div class="top"><span class="nm">Cloud Bongos, Customer-0 dogfood</span><span class="pct">66%</span></div>
|
|
329
|
-
<div class="bar"><i style="width:66%"></i></div>
|
|
330
|
-
<p class="sh">58 of 88 shipped</p>
|
|
331
|
-
<div class="steps" role="img" aria-label="2 of 5 criteria met"><!-- sample --><i class="met"></i><i class="met"></i><i></i><i></i><i></i></div>
|
|
332
|
-
</div>
|
|
333
|
-
</section>
|
|
334
|
-
|
|
335
|
-
<section id="the-world">
|
|
336
|
-
<h2>The World</h2>
|
|
337
|
-
<p class="h2sub">A portrait of Cloud Bongos as she stands today.</p>
|
|
338
|
-
<figure class="world">
|
|
339
|
-
<div class="world-frame">
|
|
340
|
-
<div class="world-plate"></div>
|
|
341
|
-
<div class="world-ring"></div>
|
|
342
|
-
</div>
|
|
343
|
-
<figcaption>rendered from the city's own stones</figcaption>
|
|
344
|
-
</figure>
|
|
345
|
-
</section>
|
|
346
|
-
|
|
347
|
-
<section id="the-foundry">
|
|
348
|
-
<h2>The Foundry</h2>
|
|
349
|
-
<p class="h2sub">How the city's craft is changing, works shipped and time per work over the last ninety days.</p>
|
|
350
|
-
<div class="card foundry">
|
|
351
|
-
<div class="weeks" role="img" aria-label="Thirteen weeks of works shipped"><!-- sample -->
|
|
352
|
-
<i style="height:38%"></i><i style="height:52%"></i><i style="height:44%"></i><i style="height:61%"></i>
|
|
353
|
-
<i style="height:57%"></i><i style="height:72%"></i><i style="height:66%"></i><i style="height:81%"></i>
|
|
354
|
-
<i style="height:74%"></i><i style="height:88%"></i><i style="height:79%"></i><i style="height:94%"></i>
|
|
355
|
-
<i class="live" style="height:86%"></i>
|
|
356
|
-
</div>
|
|
357
|
-
<p class="cap">sample data</p>
|
|
358
|
-
</div>
|
|
359
|
-
</section>
|
|
360
|
-
|
|
361
|
-
<section id="the-treasury">
|
|
362
|
-
<h2>The Treasury</h2>
|
|
363
|
-
<p class="h2sub">Credits spent, against the value wrought.</p>
|
|
364
|
-
<div class="card treas">
|
|
365
|
-
<div class="heads">
|
|
366
|
-
<div><span class="fig num">$48,244</span><span class="figc">spent</span></div>
|
|
367
|
-
<div><span class="fig num">69,751</span><span class="figc">credits of value</span></div>
|
|
368
|
-
</div>
|
|
369
|
-
<ul class="cats">
|
|
370
|
-
<li><span class="k">api</span><span class="v">$47,880</span></li>
|
|
371
|
-
<li><span class="k">infra</span><span class="v">$261</span></li>
|
|
372
|
-
<li><span class="k">compute</span><span class="v">$84</span></li>
|
|
373
|
-
<li><span class="k">domain</span><span class="v">$11</span></li>
|
|
374
|
-
<li><span class="k">art</span><span class="v">$8</span></li>
|
|
375
|
-
</ul>
|
|
376
|
-
</div>
|
|
377
|
-
</section>
|
|
378
|
-
|
|
379
|
-
<section id="lately-inscribed">
|
|
380
|
-
<h2>Lately Inscribed</h2>
|
|
381
|
-
<p class="h2sub">Newest entries set down upon the ledger.</p>
|
|
382
|
-
<div class="card lately">
|
|
383
|
-
<ul>
|
|
384
|
-
<li><span class="id">1002792</span><span class="ttl">A task's title can now be corrected after it's created</span><span class="st"><span class="led"></span>shipped</span><span class="when">today</span></li>
|
|
385
|
-
<li><span class="id">1003239</span><span class="ttl">A same-tab GitHub return stays put</span><span class="st"><span class="led"></span>shipped</span><span class="when">today</span></li>
|
|
386
|
-
<li><span class="id">1002889</span><span class="ttl">The wizard remembers a half-finished project</span><span class="st"><span class="led"></span>shipped</span><span class="when">yesterday</span></li>
|
|
387
|
-
<li><span class="id">1003245</span><span class="ttl">The copy desk lands</span><span class="st"><span class="led"></span>shipped</span><span class="when">yesterday</span></li>
|
|
388
|
-
</ul>
|
|
389
|
-
</div>
|
|
390
|
-
</section>
|
|
391
|
-
</main>
|
|
392
|
-
|
|
393
|
-
<footer class="foot">
|
|
394
|
-
<p>Built by agents, on Cloud Bongos.</p>
|
|
395
|
-
</footer>
|
|
396
|
-
|
|
397
|
-
<script>
|
|
398
|
-
(function () {
|
|
399
|
-
var ledger = document.querySelector('.ledger');
|
|
400
|
-
var z = 1;
|
|
401
|
-
function set(next) {
|
|
402
|
-
z = Math.min(1.4, Math.max(0.85, Math.round(next * 100) / 100));
|
|
403
|
-
ledger.style.setProperty('--zoom', String(z));
|
|
404
|
-
}
|
|
405
|
-
document.getElementById('zoom-up').addEventListener('click', function () { set(z + 0.1); });
|
|
406
|
-
document.getElementById('zoom-down').addEventListener('click', function () { set(z - 0.1); });
|
|
407
|
-
})();
|
|
408
|
-
</script>
|
|
409
|
-
</body>
|
|
410
|
-
</html>
|