@bongos/core 1.19.725 → 1.19.727
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.bongos-core.json +179 -494
- 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 +4 -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/gate-review.js +14 -6
- 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/permission-path-check.js +80 -3
- 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/government_protected_surfaces.mjs +137 -0
- 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,421 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en" data-mode="dark">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8">
|
|
5
|
-
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
6
|
-
<title>The planet picker on the manage page, in the world</title>
|
|
7
|
-
<link rel="icon" href="data:,">
|
|
8
|
-
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
9
|
-
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
10
|
-
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400&family=Manrope:wght@300;400;500;600&display=swap">
|
|
11
|
-
<link rel="stylesheet" href="../../../../modules/public-landing/public/assets/cosmos.css">
|
|
12
|
-
<style>
|
|
13
|
-
body{
|
|
14
|
-
/* The composition round for task 1003347 (docs/design/projects-hub-direction-v2.md §16): the
|
|
15
|
-
planet picker in the manage page's "its planet" section, the slot task 1003345 left. cosmos.css
|
|
16
|
-
carries the hub's contract and the planets (their crops, materials and styles); the manage
|
|
17
|
-
frame is mine.html's (§14.1, built); this sheet adds only the picker's composition. Dark only
|
|
18
|
-
(ADR 0204). Every colour is a token. */
|
|
19
|
-
--orb-shadow:opacity(1);
|
|
20
|
-
}
|
|
21
|
-
/* ── the planet, docked: the sky's object, relative instead of absolute ── */
|
|
22
|
-
.mock .worldOrb{position:relative;left:auto;top:auto;transform:none;display:block;cursor:default;}
|
|
23
|
-
.mock .worldOrb .disc{display:block;margin:0;}
|
|
24
|
-
|
|
25
|
-
/* ── the manage frame (mine.html §14.1, as built) ── */
|
|
26
|
-
.view{max-width:1180px;margin:0 auto;padding:34px var(--gutter) 60px;}
|
|
27
|
-
.vTitle{font-family:var(--font-display);font-weight:300;font-size:clamp(28px,3.4vw,44px);letter-spacing:-.035em;line-height:1.04;text-transform:lowercase;color:var(--ink);margin:0;}
|
|
28
|
-
.vLede{font-size:15.5px;line-height:1.5;color:var(--ink-soft);max-width:62ch;margin:0 0 22px;}
|
|
29
|
-
.backRow{font-family:var(--label-face);font-size:var(--label-size);letter-spacing:var(--label-space);text-transform:uppercase;}
|
|
30
|
-
.backRow a{color:var(--ink-faint);text-decoration:none;display:inline-block;padding:3px 0;min-height:24px;line-height:18px;}
|
|
31
|
-
.backRow a:hover{color:var(--ink);}
|
|
32
|
-
.mHead{display:grid;grid-template-columns:auto 1fr;gap:0 26px;align-items:center;padding:22px 0 8px;}
|
|
33
|
-
.mHead .titleRow{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap;}
|
|
34
|
-
.ledger{display:grid;grid-template-columns:172px 1fr;gap:0 22px;margin:14px 0 0;}
|
|
35
|
-
.ledger > *{border-top:1px solid var(--rule-soft);padding:13px 0;}
|
|
36
|
-
.ledger .k{font-family:var(--label-face);font-size:var(--label-size);letter-spacing:var(--label-space);text-transform:uppercase;color:var(--ink-faint);padding-top:16px;}
|
|
37
|
-
.ledger .v{font-size:15px;line-height:1.5;color:var(--ink);}
|
|
38
|
-
.ledger .v a{font-family:var(--font-mono);font-size:13.5px;color:var(--ink-soft);text-decoration:none;display:inline-block;padding:3px 0;min-height:24px;line-height:18px;}
|
|
39
|
-
.ledger .v a:hover{color:var(--ink);text-decoration:underline;}
|
|
40
|
-
.ledger .v small{display:block;font-size:13px;color:var(--ink-soft);}
|
|
41
|
-
.swDot{display:inline-block;width:11px;height:11px;border-radius:50%;background:var(--sw);border:1px solid var(--rule);vertical-align:-1px;margin-right:8px;}
|
|
42
|
-
.rail{display:grid;grid-template-columns:repeat(3,1fr);gap:0 10px;list-style:none;margin:0;padding:0;}
|
|
43
|
-
.rail li{position:relative;border-top:1px solid var(--rule);padding:12px 0 0;font-family:var(--label-face);font-size:var(--label-size);letter-spacing:var(--label-space);text-transform:uppercase;color:var(--ink-faint);line-height:1.3;}
|
|
44
|
-
.rail li::before{content:"";position:absolute;top:-4px;left:0;width:7px;height:7px;border-radius:50%;border:1px solid var(--rule);background:var(--bg);}
|
|
45
|
-
.rail.isLive li.done{border-top-color:var(--ok);color:var(--ok);}
|
|
46
|
-
.rail.isLive li.done::before{background:var(--ok);border-color:var(--ok);}
|
|
47
|
-
.railNote{grid-column:1/-1;margin:8px 0 0;font-family:var(--font-body);font-size:13px;line-height:1.45;color:var(--ink-soft);}
|
|
48
|
-
.railWrap{display:grid;gap:0;}
|
|
49
|
-
.doors{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-start;align-items:center;}
|
|
50
|
-
.door{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:0 18px;border:1px solid var(--rule);border-radius:var(--radius-pill);background:none;font-family:var(--font-body);font-size:14.5px;color:var(--ink);text-transform:lowercase;text-decoration:none;cursor:pointer;white-space:nowrap;}
|
|
51
|
-
.door:hover{border-color:var(--ink-faint);}
|
|
52
|
-
.door.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-on);font-weight:500;}
|
|
53
|
-
.door.primary:hover{background:color-mix(in srgb,var(--accent) 88%,var(--ink));}
|
|
54
|
-
.door.danger{border-color:color-mix(in srgb,var(--err) 45%,transparent);color:var(--err);}
|
|
55
|
-
.door.text{border-color:transparent;color:var(--ink-soft);text-decoration:underline;text-underline-offset:4px;padding:0 6px;}
|
|
56
|
-
.door.text:hover{color:var(--ink);border-color:transparent;}
|
|
57
|
-
.mSec{border-top:1px solid var(--rule);padding:30px 0 34px;display:grid;grid-template-columns:minmax(200px,300px) 1fr;gap:0 40px;}
|
|
58
|
-
.mSec h2{font-family:var(--font-display);font-weight:300;font-size:clamp(22px,2.4vw,28px);letter-spacing:-.03em;line-height:1.08;text-transform:lowercase;color:var(--ink);margin:0 0 8px;}
|
|
59
|
-
.mSec .why{font-size:13.5px;line-height:1.5;color:var(--ink-faint);max-width:34ch;margin:0;}
|
|
60
|
-
.mSec .body{display:grid;gap:16px;align-content:start;}
|
|
61
|
-
.choice{display:grid;grid-template-columns:repeat(2,1fr);border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);}
|
|
62
|
-
.choice label{display:grid;gap:6px;padding:16px 18px 18px;border-left:1px solid var(--rule-soft);cursor:pointer;color:var(--ink-soft);}
|
|
63
|
-
.choice label:first-child{border-left:0;padding-left:0;}
|
|
64
|
-
.choice .ch{display:flex;align-items:center;gap:10px;font-family:var(--font-body);font-weight:500;font-size:15px;color:var(--ink);}
|
|
65
|
-
.choice .ch::before{content:"";width:7px;height:7px;border-radius:50%;border:1px solid var(--rule);background:var(--bg);flex:none;}
|
|
66
|
-
.choice label.on .ch::before{background:var(--accent);border-color:var(--accent);outline:4px solid color-mix(in srgb,var(--accent) 22%,transparent);}
|
|
67
|
-
.choice .cb{font-size:13px;line-height:1.45;color:var(--ink-faint);}
|
|
68
|
-
.runs{font-family:var(--label-face);font-size:var(--label-size);letter-spacing:var(--label-space);text-transform:uppercase;color:var(--ink-faint);}
|
|
69
|
-
.runs b{color:var(--ok);font-weight:400;}
|
|
70
|
-
.typed{display:grid;gap:10px;max-width:440px;}
|
|
71
|
-
.hairField{display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--rule);padding:10px 0;}
|
|
72
|
-
.hairField input{flex:1;min-width:0;background:none;border:0;font-family:var(--font-body);font-size:15.5px;color:var(--ink);padding:4px 0;}
|
|
73
|
-
.hairField input::placeholder{color:var(--ink-faint);}
|
|
74
|
-
.hairField input:focus{outline:none;}
|
|
75
|
-
.hairField:focus-within{border-bottom-color:var(--ink);}
|
|
76
|
-
input.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);}
|
|
77
|
-
|
|
78
|
-
/* ── THE PICKER: the preview planet on the left, the four bands on the right ── */
|
|
79
|
-
.pick{display:grid;grid-template-columns:168px 1fr;gap:0 34px;align-items:start;}
|
|
80
|
-
.pick .preview{display:grid;gap:12px;justify-items:center;padding-top:6px;}
|
|
81
|
-
.pick .preview .worldOrb{--d:132px;}
|
|
82
|
-
.pick .words{font-size:14px;line-height:1.45;color:var(--ink);text-align:center;max-width:168px;}
|
|
83
|
-
.pick .words small{display:block;font-size:12.5px;color:var(--ink-soft);}
|
|
84
|
-
.bands{display:grid;border-bottom:1px solid var(--rule);}
|
|
85
|
-
.band{display:grid;grid-template-columns:88px 1fr;gap:0 18px;align-items:center;border-top:1px solid var(--rule);}
|
|
86
|
-
.band:first-child{border-top-color:var(--rule);}
|
|
87
|
-
.band .bl{font-family:var(--label-face);font-size:var(--label-size);letter-spacing:var(--label-space);text-transform:uppercase;color:var(--ink-faint);padding:14px 0;}
|
|
88
|
-
/* v1 · the bands: hairline cells of one band, a word each, the chosen one carries the dot */
|
|
89
|
-
.cells{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;}
|
|
90
|
-
.cells label{display:flex;align-items:center;gap:10px;min-height:48px;padding:10px 16px;border-left:1px solid var(--rule-soft);cursor:pointer;font-family:var(--font-body);font-size:14.5px;color:var(--ink-soft);}
|
|
91
|
-
.cells label::before{content:"";width:7px;height:7px;border-radius:50%;border:1px solid var(--rule);background:var(--bg);flex:none;}
|
|
92
|
-
.cells label.on{color:var(--ink);}
|
|
93
|
-
.cells label.on::before{background:var(--accent);border-color:var(--accent);outline:4px solid color-mix(in srgb,var(--accent) 22%,transparent);}
|
|
94
|
-
.cells label:hover{color:var(--ink);}
|
|
95
|
-
/* the colour: five swatches, the chosen one ringed by a hairline of the ink (a swatch is its own colour) */
|
|
96
|
-
.swatches{display:flex;gap:14px;align-items:center;padding:12px 0 12px 16px;border-left:1px solid var(--rule-soft);}
|
|
97
|
-
.sw{position:relative;width:28px;height:28px;border-radius:50%;border:1px solid var(--rule);background:var(--sw);cursor:pointer;}
|
|
98
|
-
.sw.on{outline:1px solid var(--ink);outline-offset:3px;}
|
|
99
|
-
/* v2 · the objects: the cell IS the planet, in the current material and colour; the chosen one
|
|
100
|
-
sits in the relationship ring (a hairline circle behind the object, DESIGN.md), the word under it */
|
|
101
|
-
.objs label{display:grid;justify-items:center;gap:6px;padding:12px 8px 12px;border-left:1px solid var(--rule-soft);cursor:pointer;}
|
|
102
|
-
.objs label::before{display:none;}
|
|
103
|
-
.objs .obj{position:relative;display:grid;place-items:center;width:78px;height:78px;}
|
|
104
|
-
.objs label .worldOrb{--d:60px;}
|
|
105
|
-
.objs label .nm{font-family:var(--label-face);font-size:11px;letter-spacing:var(--label-space);text-transform:uppercase;color:var(--ink-faint);}
|
|
106
|
-
.objs label.on .nm{color:var(--ink);}
|
|
107
|
-
.objs label .ring{position:absolute;inset:0;border-radius:50%;border:1px solid var(--accent);opacity:0;}
|
|
108
|
-
.objs label.on .ring{opacity:1;}
|
|
109
|
-
.objs label .worldOrb{position:relative;z-index:1;}
|
|
110
|
-
.pickDoors{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-top:4px;}
|
|
111
|
-
.receipt{margin:0;font-size:14px;line-height:1.5;color:var(--ok);}
|
|
112
|
-
.receipt.note{color:var(--ink-soft);}
|
|
113
|
-
|
|
114
|
-
/* ── the sheet furniture ── */
|
|
115
|
-
section[data-state]{display:none;}
|
|
116
|
-
body[data-state="bands"] section[data-state="bands"],
|
|
117
|
-
body[data-state="objects"] section[data-state="objects"],
|
|
118
|
-
body[data-state="saved"] section[data-state="saved"]{display:block;}
|
|
119
|
-
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;}
|
|
120
|
-
.skip{position:absolute;left:12px;top:-60px;background:var(--bg-card);color:var(--ink);padding:11px 18px;border-radius:999px;}
|
|
121
|
-
.skip:focus{top:12px;}
|
|
122
|
-
.bar{height:var(--top-h);display:flex;align-items:center;padding:0 var(--gutter);border-bottom:1px solid var(--rule);font-family:var(--font-body);font-weight:500;font-size:17px;letter-spacing:-.015em;color:var(--ink);}
|
|
123
|
-
.mock .foot{padding:18px var(--gutter);font-size:14px;color:var(--ink-soft);text-align:center;}
|
|
124
|
-
a:focus-visible,button:focus-visible,label:focus-within{outline:2px solid var(--accent);outline-offset:3px;}
|
|
125
|
-
|
|
126
|
-
@media (max-width:900px){
|
|
127
|
-
.mHead{grid-template-columns:1fr;gap:14px;}
|
|
128
|
-
.ledger{grid-template-columns:1fr;gap:0;}
|
|
129
|
-
.ledger .k{border-top:1px solid var(--rule-soft);padding-bottom:0;}
|
|
130
|
-
.ledger .v{border-top:0;padding-top:6px;}
|
|
131
|
-
.mSec{grid-template-columns:1fr;gap:14px;}
|
|
132
|
-
.choice{grid-template-columns:1fr;}
|
|
133
|
-
.choice label{border-left:0;padding-left:0;border-top:1px solid var(--rule-soft);}
|
|
134
|
-
.choice label:first-child{border-top:0;}
|
|
135
|
-
/* the picker stacks: the preview above; each band's label above its choices; the cells become
|
|
136
|
-
the filter pills (hairline, the chosen one inverted to ink), so four bands stay one screen */
|
|
137
|
-
.pick{grid-template-columns:1fr;gap:22px 0;}
|
|
138
|
-
.pick .preview{justify-items:start;}
|
|
139
|
-
.pick .words{text-align:left;max-width:none;}
|
|
140
|
-
.band{grid-template-columns:1fr;gap:0;}
|
|
141
|
-
.band .bl{padding:14px 0 6px;}
|
|
142
|
-
.cells{display:flex;flex-wrap:wrap;gap:8px;padding:0 0 14px;}
|
|
143
|
-
.cells label{min-height:36px;padding:0 14px;border:1px solid var(--rule);border-radius:var(--radius-pill);gap:0;font-size:14px;}
|
|
144
|
-
.cells label::before{display:none;}
|
|
145
|
-
.cells label.on{background:var(--ink);color:var(--bg);border-color:var(--ink);}
|
|
146
|
-
.objs label{border:0;padding:6px 4px 8px;}
|
|
147
|
-
.objs label.on{background:none;}
|
|
148
|
-
.objs label .worldOrb{--d:52px;}
|
|
149
|
-
.objs .obj{width:66px;height:66px;}
|
|
150
|
-
.swatches{padding:6px 0 14px;border-left:0;}
|
|
151
|
-
}
|
|
152
|
-
</style>
|
|
153
|
-
</head>
|
|
154
|
-
<body class="mock" data-state="bands">
|
|
155
|
-
<!--
|
|
156
|
-
The planet picker on the manage page, the composition round (task 1003347, goal 1000080).
|
|
157
|
-
?state=bands v1 the bands: the preview planet, then shape, material, style and colour as hairline
|
|
158
|
-
cells of one band each, a word per cell, the chosen one carrying the dot; the platform's
|
|
159
|
-
own pick shown first, "chosen for it by the platform"
|
|
160
|
-
?state=objects v2 the objects: the same four bands, but the cell IS the planet, drawn in the current
|
|
161
|
-
material and colour; the chosen one sits in the relationship ring; the word under it
|
|
162
|
-
?state=saved after the save: the receipt under the doors, the head and the ledger row repainted,
|
|
163
|
-
"your choice", and the door back to the platform's pick
|
|
164
|
-
The card's backdrop is not on this sheet: the poster's plate is the project's own art today, and a
|
|
165
|
-
platform-drawn plate set is an art round of its own; deferred, see §16.
|
|
166
|
-
-->
|
|
167
|
-
<a class="skip" href="#main">Skip to content</a>
|
|
168
|
-
<header class="bar">Cloud Bongos</header>
|
|
169
|
-
<main id="main">
|
|
170
|
-
<h1 class="vh">The planet picker on the manage page</h1>
|
|
171
|
-
|
|
172
|
-
<section data-state="bands">
|
|
173
|
-
<div class="view">
|
|
174
|
-
<p class="backRow"><a href="#">your projects</a></p>
|
|
175
|
-
<div class="mHead">
|
|
176
|
-
<span class="worldOrb" data-shape="pair" data-material="gold" data-style="wash" style="--acc:var(--terracotta);--d:96px"><span class="disc"></span></span>
|
|
177
|
-
<div>
|
|
178
|
-
<div class="titleRow"><h2 class="vTitle">demo</h2><span class="chip live"><span class="cdot"></span>live <span class="rec">checked 3m ago</span></span></div>
|
|
179
|
-
<p class="vLede" style="margin:8px 0 0">Its address, its repository, what the platform last verified about it, and the controls you have today.</p>
|
|
180
|
-
</div>
|
|
181
|
-
</div>
|
|
182
|
-
<div class="ledger">
|
|
183
|
-
<span class="k">repository</span><span class="v"><a href="#">builder/demo</a></span>
|
|
184
|
-
<span class="k">address</span><span class="v">Answering at <a href="#">demo.cloudbongos.com</a><small>last answered 3 minutes ago</small></span>
|
|
185
|
-
<span class="k">planet</span><span class="v"><span class="swDot" style="--sw:var(--terracotta)"></span>the bongo pair in gold, washed<small>chosen for it by the platform. Pick your own below.</small></span>
|
|
186
|
-
</div>
|
|
187
|
-
<div class="railWrap" style="margin:22px 0 0;max-width:520px"><ul class="rail isLive"><li class="done">Request filed</li><li class="done">Standing it up</li><li class="done">Live</li></ul><p class="railNote">Up and answering since 1 Aug.</p></div>
|
|
188
|
-
<div class="doors" style="margin:22px 0 34px"><a class="door" href="#">open site</a><button type="button" class="door">restart it</button></div>
|
|
189
|
-
|
|
190
|
-
<div class="mSec">
|
|
191
|
-
<div><h2>who can see it</h2><p class="why">The platform's request. What the project runs is read back from its own manifest.</p></div>
|
|
192
|
-
<div class="body">
|
|
193
|
-
<div class="choice">
|
|
194
|
-
<label class="on"><input class="vh" type="radio" name="vis" checked><span class="ch">Everyone</span><span class="cb">Anyone can open this project's pages. Signing in is only needed to take part.</span></label>
|
|
195
|
-
<label><input class="vh" type="radio" name="vis"><span class="ch">Only signed-in members</span><span class="cb">Visitors meet a sign-in door first.</span></label>
|
|
196
|
-
</div>
|
|
197
|
-
<p class="runs">runs <b>everyone</b>, read from the project 2m ago</p>
|
|
198
|
-
</div>
|
|
199
|
-
</div>
|
|
200
|
-
|
|
201
|
-
<div class="mSec">
|
|
202
|
-
<div><h2>its planet</h2><p class="why">How this project shows on the sky, in your list and on its card. Saved here, the platform draws it that way everywhere; nothing on your project restarts for it.</p></div>
|
|
203
|
-
<div class="body">
|
|
204
|
-
<div class="pick">
|
|
205
|
-
<div class="preview">
|
|
206
|
-
<span class="worldOrb" data-shape="pair" data-material="gold" data-style="wash" style="--acc:var(--terracotta)"><span class="disc"></span></span>
|
|
207
|
-
<p class="words">the bongo pair in gold, washed<small>the platform's pick for it</small></p>
|
|
208
|
-
</div>
|
|
209
|
-
<div class="bands">
|
|
210
|
-
<div class="band"><span class="bl">shape</span>
|
|
211
|
-
<div class="cells" role="radiogroup" aria-label="Shape">
|
|
212
|
-
<label><input class="vh" type="radio" name="shape">the blob</label>
|
|
213
|
-
<label class="on"><input class="vh" type="radio" name="shape" checked>the bongo pair</label>
|
|
214
|
-
<label><input class="vh" type="radio" name="shape">the bead</label>
|
|
215
|
-
</div>
|
|
216
|
-
</div>
|
|
217
|
-
<div class="band"><span class="bl">material</span>
|
|
218
|
-
<div class="cells" role="radiogroup" aria-label="Material">
|
|
219
|
-
<label><input class="vh" type="radio" name="material">chrome</label>
|
|
220
|
-
<label><input class="vh" type="radio" name="material">frost</label>
|
|
221
|
-
<label class="on"><input class="vh" type="radio" name="material" checked>gold</label>
|
|
222
|
-
<label><input class="vh" type="radio" name="material">obsidian</label>
|
|
223
|
-
</div>
|
|
224
|
-
</div>
|
|
225
|
-
<div class="band"><span class="bl">style</span>
|
|
226
|
-
<div class="cells" role="radiogroup" aria-label="Style">
|
|
227
|
-
<label><input class="vh" type="radio" name="style">tinted</label>
|
|
228
|
-
<label class="on"><input class="vh" type="radio" name="style" checked>washed</label>
|
|
229
|
-
<label><input class="vh" type="radio" name="style">plain</label>
|
|
230
|
-
</div>
|
|
231
|
-
</div>
|
|
232
|
-
<div class="band"><span class="bl">colour</span>
|
|
233
|
-
<div class="swatches" role="radiogroup" aria-label="Colour">
|
|
234
|
-
<label class="sw" style="--sw:var(--sea)"><input class="vh" type="radio" name="colour"><span class="vh">sea</span></label>
|
|
235
|
-
<label class="sw on" style="--sw:var(--terracotta)"><input class="vh" type="radio" name="colour" checked><span class="vh">terracotta</span></label>
|
|
236
|
-
<label class="sw" style="--sw:var(--gold-soft)"><input class="vh" type="radio" name="colour"><span class="vh">soft gold</span></label>
|
|
237
|
-
<label class="sw" style="--sw:var(--sun-lit)"><input class="vh" type="radio" name="colour"><span class="vh">sunlit</span></label>
|
|
238
|
-
<label class="sw" style="--sw:var(--accent)"><input class="vh" type="radio" name="colour"><span class="vh">the accent</span></label>
|
|
239
|
-
</div>
|
|
240
|
-
</div>
|
|
241
|
-
</div>
|
|
242
|
-
</div>
|
|
243
|
-
<div class="pickDoors"><button type="button" class="door primary">save its planet</button></div>
|
|
244
|
-
</div>
|
|
245
|
-
</div>
|
|
246
|
-
|
|
247
|
-
<div class="mSec">
|
|
248
|
-
<div><h2>take it offline</h2><p class="why">Stops the server and its nightly backups. It stays in your list, marked torn down, and the repository is untouched.</p></div>
|
|
249
|
-
<div class="body">
|
|
250
|
-
<div class="typed">
|
|
251
|
-
<label class="hairField"><input type="text" placeholder="Type the project's name to confirm" aria-label="Type the project's name to confirm"></label>
|
|
252
|
-
<div class="doors"><button type="button" class="door danger">tear it down</button></div>
|
|
253
|
-
</div>
|
|
254
|
-
</div>
|
|
255
|
-
</div>
|
|
256
|
-
</div>
|
|
257
|
-
</section>
|
|
258
|
-
|
|
259
|
-
<section data-state="objects">
|
|
260
|
-
<div class="view">
|
|
261
|
-
<p class="backRow"><a href="#">your projects</a></p>
|
|
262
|
-
<div class="mHead">
|
|
263
|
-
<span class="worldOrb" data-shape="pair" data-material="gold" data-style="wash" style="--acc:var(--terracotta);--d:96px"><span class="disc"></span></span>
|
|
264
|
-
<div>
|
|
265
|
-
<div class="titleRow"><h2 class="vTitle">demo</h2><span class="chip live"><span class="cdot"></span>live <span class="rec">checked 3m ago</span></span></div>
|
|
266
|
-
<p class="vLede" style="margin:8px 0 0">Its address, its repository, what the platform last verified about it, and the controls you have today.</p>
|
|
267
|
-
</div>
|
|
268
|
-
</div>
|
|
269
|
-
<div class="ledger">
|
|
270
|
-
<span class="k">repository</span><span class="v"><a href="#">builder/demo</a></span>
|
|
271
|
-
<span class="k">address</span><span class="v">Answering at <a href="#">demo.cloudbongos.com</a><small>last answered 3 minutes ago</small></span>
|
|
272
|
-
<span class="k">planet</span><span class="v"><span class="swDot" style="--sw:var(--terracotta)"></span>the bongo pair in gold, washed<small>chosen for it by the platform. Pick your own below.</small></span>
|
|
273
|
-
</div>
|
|
274
|
-
<div class="doors" style="margin:22px 0 34px"><a class="door" href="#">open site</a><button type="button" class="door">restart it</button></div>
|
|
275
|
-
|
|
276
|
-
<div class="mSec">
|
|
277
|
-
<div><h2>its planet</h2><p class="why">How this project shows on the sky, in your list and on its card. Saved here, the platform draws it that way everywhere; nothing on your project restarts for it.</p></div>
|
|
278
|
-
<div class="body">
|
|
279
|
-
<div class="pick">
|
|
280
|
-
<div class="preview">
|
|
281
|
-
<span class="worldOrb" data-shape="pair" data-material="gold" data-style="wash" style="--acc:var(--terracotta)"><span class="disc"></span></span>
|
|
282
|
-
<p class="words">the bongo pair in gold, washed<small>the platform's pick for it</small></p>
|
|
283
|
-
</div>
|
|
284
|
-
<div class="bands">
|
|
285
|
-
<div class="band"><span class="bl">shape</span>
|
|
286
|
-
<div class="cells objs" role="radiogroup" aria-label="Shape">
|
|
287
|
-
<label><input class="vh" type="radio" name="shape2"><span class="obj"><span class="ring"></span><span class="worldOrb" data-shape="blob" data-material="gold" data-style="wash" style="--acc:var(--terracotta)"><span class="disc"></span></span></span><span class="nm">the blob</span></label>
|
|
288
|
-
<label class="on"><input class="vh" type="radio" name="shape2" checked><span class="obj"><span class="ring"></span><span class="worldOrb" data-shape="pair" data-material="gold" data-style="wash" style="--acc:var(--terracotta)"><span class="disc"></span></span></span><span class="nm">the pair</span></label>
|
|
289
|
-
<label><input class="vh" type="radio" name="shape2"><span class="obj"><span class="ring"></span><span class="worldOrb" data-shape="bead" data-material="gold" data-style="wash" style="--acc:var(--terracotta)"><span class="disc"></span></span></span><span class="nm">the bead</span></label>
|
|
290
|
-
</div>
|
|
291
|
-
</div>
|
|
292
|
-
<div class="band"><span class="bl">material</span>
|
|
293
|
-
<div class="cells objs" role="radiogroup" aria-label="Material">
|
|
294
|
-
<label><input class="vh" type="radio" name="material2"><span class="obj"><span class="ring"></span><span class="worldOrb" data-shape="pair" data-style="wash" style="--acc:var(--terracotta)"><span class="disc"></span></span></span><span class="nm">chrome</span></label>
|
|
295
|
-
<label><input class="vh" type="radio" name="material2"><span class="obj"><span class="ring"></span><span class="worldOrb" data-shape="pair" data-material="frost" data-style="wash" style="--acc:var(--terracotta)"><span class="disc"></span></span></span><span class="nm">frost</span></label>
|
|
296
|
-
<label class="on"><input class="vh" type="radio" name="material2" checked><span class="obj"><span class="ring"></span><span class="worldOrb" data-shape="pair" data-material="gold" data-style="wash" style="--acc:var(--terracotta)"><span class="disc"></span></span></span><span class="nm">gold</span></label>
|
|
297
|
-
<label><input class="vh" type="radio" name="material2"><span class="obj"><span class="ring"></span><span class="worldOrb" data-shape="pair" data-material="obsidian" data-style="wash" style="--acc:var(--terracotta)"><span class="disc"></span></span></span><span class="nm">obsidian</span></label>
|
|
298
|
-
</div>
|
|
299
|
-
</div>
|
|
300
|
-
<div class="band"><span class="bl">style</span>
|
|
301
|
-
<div class="cells objs" role="radiogroup" aria-label="Style">
|
|
302
|
-
<label><input class="vh" type="radio" name="style2"><span class="obj"><span class="ring"></span><span class="worldOrb" data-shape="pair" data-material="gold" data-style="tint" style="--acc:var(--terracotta)"><span class="disc"></span></span></span><span class="nm">tinted</span></label>
|
|
303
|
-
<label class="on"><input class="vh" type="radio" name="style2" checked><span class="obj"><span class="ring"></span><span class="worldOrb" data-shape="pair" data-material="gold" data-style="wash" style="--acc:var(--terracotta)"><span class="disc"></span></span></span><span class="nm">washed</span></label>
|
|
304
|
-
<label><input class="vh" type="radio" name="style2"><span class="obj"><span class="ring"></span><span class="worldOrb" data-shape="pair" data-material="gold" data-style="plain" style="--acc:var(--terracotta)"><span class="disc"></span></span></span><span class="nm">plain</span></label>
|
|
305
|
-
</div>
|
|
306
|
-
</div>
|
|
307
|
-
<div class="band"><span class="bl">colour</span>
|
|
308
|
-
<div class="swatches" role="radiogroup" aria-label="Colour">
|
|
309
|
-
<label class="sw" style="--sw:var(--sea)"><input class="vh" type="radio" name="colour2"><span class="vh">sea</span></label>
|
|
310
|
-
<label class="sw on" style="--sw:var(--terracotta)"><input class="vh" type="radio" name="colour2" checked><span class="vh">terracotta</span></label>
|
|
311
|
-
<label class="sw" style="--sw:var(--gold-soft)"><input class="vh" type="radio" name="colour2"><span class="vh">soft gold</span></label>
|
|
312
|
-
<label class="sw" style="--sw:var(--sun-lit)"><input class="vh" type="radio" name="colour2"><span class="vh">sunlit</span></label>
|
|
313
|
-
<label class="sw" style="--sw:var(--accent)"><input class="vh" type="radio" name="colour2"><span class="vh">the accent</span></label>
|
|
314
|
-
</div>
|
|
315
|
-
</div>
|
|
316
|
-
</div>
|
|
317
|
-
</div>
|
|
318
|
-
<div class="pickDoors"><button type="button" class="door primary">save its planet</button></div>
|
|
319
|
-
</div>
|
|
320
|
-
</div>
|
|
321
|
-
|
|
322
|
-
<div class="mSec">
|
|
323
|
-
<div><h2>take it offline</h2><p class="why">Stops the server and its nightly backups. It stays in your list, marked torn down, and the repository is untouched.</p></div>
|
|
324
|
-
<div class="body">
|
|
325
|
-
<div class="typed">
|
|
326
|
-
<label class="hairField"><input type="text" placeholder="Type the project's name to confirm" aria-label="Type the project's name to confirm"></label>
|
|
327
|
-
<div class="doors"><button type="button" class="door danger">tear it down</button></div>
|
|
328
|
-
</div>
|
|
329
|
-
</div>
|
|
330
|
-
</div>
|
|
331
|
-
</div>
|
|
332
|
-
</section>
|
|
333
|
-
|
|
334
|
-
<section data-state="saved">
|
|
335
|
-
<div class="view">
|
|
336
|
-
<p class="backRow"><a href="#">your projects</a></p>
|
|
337
|
-
<div class="mHead">
|
|
338
|
-
<span class="worldOrb" data-shape="bead" data-material="obsidian" data-style="tint" style="--acc:var(--sea);--d:96px"><span class="disc"></span></span>
|
|
339
|
-
<div>
|
|
340
|
-
<div class="titleRow"><h2 class="vTitle">demo</h2><span class="chip live"><span class="cdot"></span>live <span class="rec">checked 3m ago</span></span></div>
|
|
341
|
-
<p class="vLede" style="margin:8px 0 0">Its address, its repository, what the platform last verified about it, and the controls you have today.</p>
|
|
342
|
-
</div>
|
|
343
|
-
</div>
|
|
344
|
-
<div class="ledger">
|
|
345
|
-
<span class="k">repository</span><span class="v"><a href="#">builder/demo</a></span>
|
|
346
|
-
<span class="k">address</span><span class="v">Answering at <a href="#">demo.cloudbongos.com</a><small>last answered 3 minutes ago</small></span>
|
|
347
|
-
<span class="k">planet</span><span class="v"><span class="swDot" style="--sw:var(--sea)"></span>the bead in obsidian, tinted<small>your choice.</small></span>
|
|
348
|
-
</div>
|
|
349
|
-
<div class="doors" style="margin:22px 0 34px"><a class="door" href="#">open site</a><button type="button" class="door">restart it</button></div>
|
|
350
|
-
|
|
351
|
-
<div class="mSec">
|
|
352
|
-
<div><h2>its planet</h2><p class="why">How this project shows on the sky, in your list and on its card. Saved here, the platform draws it that way everywhere; nothing on your project restarts for it.</p></div>
|
|
353
|
-
<div class="body">
|
|
354
|
-
<div class="pick">
|
|
355
|
-
<div class="preview">
|
|
356
|
-
<span class="worldOrb" data-shape="bead" data-material="obsidian" data-style="tint" style="--acc:var(--sea)"><span class="disc"></span></span>
|
|
357
|
-
<p class="words">the bead in obsidian, tinted<small>your choice</small></p>
|
|
358
|
-
</div>
|
|
359
|
-
<div class="bands">
|
|
360
|
-
<div class="band"><span class="bl">shape</span>
|
|
361
|
-
<div class="cells" role="radiogroup" aria-label="Shape">
|
|
362
|
-
<label><input class="vh" type="radio" name="shape3">the blob</label>
|
|
363
|
-
<label><input class="vh" type="radio" name="shape3">the bongo pair</label>
|
|
364
|
-
<label class="on"><input class="vh" type="radio" name="shape3" checked>the bead</label>
|
|
365
|
-
</div>
|
|
366
|
-
</div>
|
|
367
|
-
<div class="band"><span class="bl">material</span>
|
|
368
|
-
<div class="cells" role="radiogroup" aria-label="Material">
|
|
369
|
-
<label><input class="vh" type="radio" name="material3">chrome</label>
|
|
370
|
-
<label><input class="vh" type="radio" name="material3">frost</label>
|
|
371
|
-
<label><input class="vh" type="radio" name="material3">gold</label>
|
|
372
|
-
<label class="on"><input class="vh" type="radio" name="material3" checked>obsidian</label>
|
|
373
|
-
</div>
|
|
374
|
-
</div>
|
|
375
|
-
<div class="band"><span class="bl">style</span>
|
|
376
|
-
<div class="cells" role="radiogroup" aria-label="Style">
|
|
377
|
-
<label class="on"><input class="vh" type="radio" name="style3" checked>tinted</label>
|
|
378
|
-
<label><input class="vh" type="radio" name="style3">washed</label>
|
|
379
|
-
<label><input class="vh" type="radio" name="style3">plain</label>
|
|
380
|
-
</div>
|
|
381
|
-
</div>
|
|
382
|
-
<div class="band"><span class="bl">colour</span>
|
|
383
|
-
<div class="swatches" role="radiogroup" aria-label="Colour">
|
|
384
|
-
<label class="sw on" style="--sw:var(--sea)"><input class="vh" type="radio" name="colour3" checked><span class="vh">sea</span></label>
|
|
385
|
-
<label class="sw" style="--sw:var(--terracotta)"><input class="vh" type="radio" name="colour3"><span class="vh">terracotta</span></label>
|
|
386
|
-
<label class="sw" style="--sw:var(--gold-soft)"><input class="vh" type="radio" name="colour3"><span class="vh">soft gold</span></label>
|
|
387
|
-
<label class="sw" style="--sw:var(--sun-lit)"><input class="vh" type="radio" name="colour3"><span class="vh">sunlit</span></label>
|
|
388
|
-
<label class="sw" style="--sw:var(--accent)"><input class="vh" type="radio" name="colour3"><span class="vh">the accent</span></label>
|
|
389
|
-
</div>
|
|
390
|
-
</div>
|
|
391
|
-
</div>
|
|
392
|
-
</div>
|
|
393
|
-
<div class="pickDoors"><button type="button" class="door primary">save its planet</button><button type="button" class="door text">let the platform choose again</button></div>
|
|
394
|
-
<p class="receipt" role="status">Saved. The sky, your list and the card draw it this way from here.</p>
|
|
395
|
-
</div>
|
|
396
|
-
</div>
|
|
397
|
-
|
|
398
|
-
<div class="mSec">
|
|
399
|
-
<div><h2>take it offline</h2><p class="why">Stops the server and its nightly backups. It stays in your list, marked torn down, and the repository is untouched.</p></div>
|
|
400
|
-
<div class="body">
|
|
401
|
-
<div class="typed">
|
|
402
|
-
<label class="hairField"><input type="text" placeholder="Type the project's name to confirm" aria-label="Type the project's name to confirm"></label>
|
|
403
|
-
<div class="doors"><button type="button" class="door danger">tear it down</button></div>
|
|
404
|
-
</div>
|
|
405
|
-
</div>
|
|
406
|
-
</div>
|
|
407
|
-
</div>
|
|
408
|
-
</section>
|
|
409
|
-
</main>
|
|
410
|
-
<footer class="foot">A composition sheet for task 1003347. Nothing here is served.</footer>
|
|
411
|
-
<script>
|
|
412
|
-
/* The mock's state contract: read ?state= once, apply one state (bands | objects | saved).
|
|
413
|
-
No motion in script; nothing is built here. */
|
|
414
|
-
(function () {
|
|
415
|
-
var state = new URLSearchParams(location.search || location.hash.slice(1) || (window.__Q || '')).get('state') || 'bands';
|
|
416
|
-
if (['bands', 'objects', 'saved'].indexOf(state) === -1) state = 'bands';
|
|
417
|
-
document.body.setAttribute('data-state', state);
|
|
418
|
-
})();
|
|
419
|
-
</script>
|
|
420
|
-
</body>
|
|
421
|
-
</html>
|