@pieai/pro-gov 0.7.2 → 0.8.0
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/README.md +15 -11
- package/assets/docs/reference/adoption/adoption-playbook.md +8 -8
- package/assets/docs/reference/adoption/migration-v1.0.md +9 -4
- package/assets/docs/reference/adoption/recommended-agent-tooling.md +32 -5
- package/assets/host-dashboard/app.css +1 -0
- package/assets/host-dashboard/app.js +66 -0
- package/assets/host-dashboard/index.html +16 -0
- package/assets/integrations/.gitkeep +1 -0
- package/assets/portfolio-dashboard/app.js +4 -4
- package/assets/profiles/engineering-runtime/manifest.yml +0 -2
- package/assets/profiles/engineering-runtime/profile.md +5 -4
- package/assets/public-agent-assets/bundles/base-governance.json +1 -2
- package/assets/public-agent-assets/registry.json +3 -36
- package/assets/public-agent-assets/skills/pie-skills/beginner-friendly-docs/SKILL.md +2 -4
- package/assets/starter/.github/workflows/docs-check.yml +11 -1
- package/assets/starter/docs/governance/agents-routing/engineering-runtime-v1.1.md +19 -1
- package/assets/starter/docs/governance/boundary.md +3 -4
- package/assets/starter/docs/governance/doc-agent-rules.md +2 -2
- package/assets/starter/docs/governance/doc-types.md +2 -2
- package/assets/starter/docs/governance/ssot-v1.1.md +3 -5
- package/assets/starter/docs/governance/templates/adr.md +24 -2
- package/assets/starter/docs/reference/documentation-map.md +1 -1
- package/cli-guide.md +16 -3
- package/dist/cli.js +4735 -3228
- package/package.json +2 -2
- package/assets/integrations/mattpocock-skills.md +0 -42
- package/assets/public-agent-assets/skills/pie-skills/doc-cross-validator/SKILL.md +0 -194
package/README.md
CHANGED
|
@@ -11,8 +11,7 @@ station:
|
|
|
11
11
|
- `pro-gov` shows which reusable project-governance parts are present or missing;
|
|
12
12
|
- `@pieai/doc-gov` checks documents, routing, links, guardrails, and CI;
|
|
13
13
|
- the AI host and project checks own normal execution;
|
|
14
|
-
-
|
|
15
|
-
- `capture-learning` records a reusable lesson only when one exists.
|
|
14
|
+
- `capture-learning` visibly decides whether completed verified work produced a reusable lesson, and records it only when one exists.
|
|
16
15
|
|
|
17
16
|
The current `pro-gov` release is conservative by design. Public init and sync
|
|
18
17
|
commands inspect and compare; they do not silently overwrite another project's
|
|
@@ -48,6 +47,8 @@ pro-gov portfolio plan --config /path/to/portfolio.json --target web-app --json
|
|
|
48
47
|
pro-gov portfolio assets-check --config /path/to/portfolio.json --json
|
|
49
48
|
pro-gov portfolio doctor --config /path/to/portfolio.json --json
|
|
50
49
|
pro-gov portfolio ai-health --config /path/to/portfolio.json --target all --out audits/portfolio-ai-health/2026-07-12
|
|
50
|
+
pro-gov host-lens scan --config /path/to/portfolio.json --out audits/host-lens/2026-07-16
|
|
51
|
+
pro-gov host-lens plan --config /path/to/portfolio.json --out audits/host-lens/cleanup-review.json
|
|
51
52
|
pro-gov lens inspect --target .
|
|
52
53
|
pro-gov lens report --target . --out .pro-gov/lens-report.md
|
|
53
54
|
pro-gov init --profile engineering-runtime --dry-run
|
|
@@ -68,7 +69,10 @@ What these commands do:
|
|
|
68
69
|
| `portfolio plan` | Builds dry-run asset plans for manifest targets, using packaged public assets unless a full checkout is supplied. | No |
|
|
69
70
|
| `portfolio assets-check` | Checks the integrity of each target's current managed asset lock and symlinks. | No |
|
|
70
71
|
| `portfolio doctor` | Runs the offline fleet gate: package, target CLI, bundle, asset, symlink, Git-state evidence, and optional host-tooling checks. | No |
|
|
71
|
-
| `portfolio ai-health` | Writes
|
|
72
|
+
| `portfolio ai-health` | Writes the ProjectLens privacy-preserving HTML/JSON map of entry, user/project AI Host SSOT, exact technology-version, four verification-gate, project redundancy, MCP-name, skill, Git, and secret-location health. `--target <id>` refreshes one target and merges it into the same-portfolio board; `--target all` creates complete coverage. | Only the explicit output |
|
|
73
|
+
| `host-lens inspect` | Inventories AI-host and shared-cache storage without reading configuration or session bodies. | No |
|
|
74
|
+
| `host-lens scan` | Writes the fixed SwimmerUIKit HostLens dashboard and JSON evidence. | Only the explicit output |
|
|
75
|
+
| `host-lens plan` | Writes a non-executable cleanup review checklist; it never deletes. | Only the explicit output |
|
|
72
76
|
| `lens inspect` | Produces ProjectLens-style local evidence. | No |
|
|
73
77
|
| `lens report` | Writes the requested report file. | Only the explicit output |
|
|
74
78
|
| `init --dry-run` | Shows starter/profile files that would be needed. | No |
|
|
@@ -140,20 +144,20 @@ the private-source and public-copy hashes recorded during promotion.
|
|
|
140
144
|
|
|
141
145
|
## Lightweight Agent Workflow
|
|
142
146
|
|
|
143
|
-
The AI host and the target project's proof commands own ordinary work.
|
|
144
|
-
|
|
145
|
-
triggers from its own narrow description and does not become a mandatory
|
|
146
|
-
pipeline or workflow owner.
|
|
147
|
+
The AI host and the target project's proof commands own ordinary work. PGS
|
|
148
|
+
does not appoint a mandatory workflow owner or require an external skill pack.
|
|
147
149
|
|
|
148
150
|
Before
|
|
149
151
|
non-trivial implementation, debugging, release, architecture, or portfolio-sync
|
|
150
152
|
work, run `pro-gov learn recall --query "<task summary>"` and read relevant
|
|
151
153
|
`docs/reference/learnings/**` or `CONCEPTS.md` hits before changing files.
|
|
152
154
|
|
|
153
|
-
After verified work,
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
155
|
+
After completed, verified, non-trivial work, the small `capture-learning` Skill
|
|
156
|
+
makes one visible decision. It writes a compact `docs/reference/learnings/**`
|
|
157
|
+
record only when the result will help future work; otherwise it reports a skip.
|
|
158
|
+
Resolve the CLI through the project (`pnpm pro-gov` in the PGS source repository)
|
|
159
|
+
instead of assuming a global binary. PGS does not install Stop/SubagentStop
|
|
160
|
+
reminder hooks or require a completion gate.
|
|
157
161
|
|
|
158
162
|
Read the
|
|
159
163
|
[full project introduction](https://github.com/PieAIStudio/ProjectGovernanceSystem#readme)
|
|
@@ -25,8 +25,8 @@ Use this when a project wants to migrate into the Project Governance System.
|
|
|
25
25
|
|
|
26
26
|
Before choosing optional AI skills, read
|
|
27
27
|
`docs/reference/adoption/recommended-agent-tooling.md`. It explains which PGS
|
|
28
|
-
packages are required, how
|
|
29
|
-
native learning-capture path works.
|
|
28
|
+
packages are required, how optional capabilities remain explicit, and how the
|
|
29
|
+
small native learning-capture path works.
|
|
30
30
|
|
|
31
31
|
## The Short Version
|
|
32
32
|
|
|
@@ -203,9 +203,8 @@ Do not copy the upstream root `integrations/` directory into target projects by
|
|
|
203
203
|
If a project needs local external-workflow guidance, keep it thin in `AGENTS.md` or put project-specific notes under `docs/reference/integrations/`.
|
|
204
204
|
|
|
205
205
|
For engineering projects, normal execution belongs to the AI host and the
|
|
206
|
-
project's own proof commands.
|
|
207
|
-
|
|
208
|
-
are not a mandatory pipeline or workflow owner.
|
|
206
|
+
project's own proof commands. PGS does not appoint a mandatory pipeline or
|
|
207
|
+
workflow owner.
|
|
209
208
|
|
|
210
209
|
Use PGS Learning Recall before non-trivial work:
|
|
211
210
|
|
|
@@ -214,9 +213,10 @@ pro-gov learn recall --query "<task summary>"
|
|
|
214
213
|
```
|
|
215
214
|
|
|
216
215
|
This reads the project's existing `docs/reference/learnings/**` and `CONCEPTS.md` records.
|
|
217
|
-
After verified work,
|
|
218
|
-
|
|
219
|
-
ceremony is required.
|
|
216
|
+
After completed, verified, non-trivial work, let `capture-learning` visibly
|
|
217
|
+
decide whether the result is genuinely reusable. The Skill captures or reports a
|
|
218
|
+
skip; no exit hook or mandatory completion ceremony is required. Resolve
|
|
219
|
+
`pro-gov` through the project rather than assuming a global binary.
|
|
220
220
|
|
|
221
221
|
### Doc-Only
|
|
222
222
|
|
|
@@ -6,7 +6,7 @@ status: stable
|
|
|
6
6
|
canonical: true
|
|
7
7
|
owner: human
|
|
8
8
|
created: 2026-07-12
|
|
9
|
-
last_reviewed: 2026-07-
|
|
9
|
+
last_reviewed: 2026-07-17
|
|
10
10
|
domain: adoption
|
|
11
11
|
tags:
|
|
12
12
|
- migration
|
|
@@ -21,15 +21,20 @@ related:
|
|
|
21
21
|
|
|
22
22
|
# v1.0 Migration Checklist
|
|
23
23
|
|
|
24
|
+
> Historical migration reference only. Current projects use the v1.1 router and
|
|
25
|
+
> governance contracts. The superseded v1.0 contract files are archived under
|
|
26
|
+
> `docs/archive/2026-q3-policy/`, and router integrity deliberately rejects an
|
|
27
|
+
> installed v1.0 contract in downstream projects.
|
|
28
|
+
|
|
24
29
|
Use this checklist when upgrading a v0.9 project. v1.0 removes two parallel
|
|
25
30
|
document systems instead of adding another layer.
|
|
26
31
|
|
|
27
32
|
## Decision Surface
|
|
28
33
|
|
|
29
34
|
1. Move every durable decision from `docs/decisions/**` to `docs/adr/**`.
|
|
30
|
-
2. Rename numbered files to
|
|
31
|
-
3. Preserve useful existing frontmatter;
|
|
32
|
-
|
|
35
|
+
2. Rename numbered files to the `NNNN-slug.md` form where practical.
|
|
36
|
+
3. Preserve useful existing frontmatter; new ADRs may stay concise while still
|
|
37
|
+
using the governed decision schema.
|
|
33
38
|
4. Remove external ADR ids from governed documents' `related` arrays. Keep a
|
|
34
39
|
normal Markdown path to the ADR in the body when the relationship matters;
|
|
35
40
|
Doc Gov validates only ids in its governed document graph.
|
|
@@ -28,8 +28,10 @@ work; tools and skills add capabilities only when their narrow trigger matches.
|
|
|
28
28
|
| --- | --- | --- |
|
|
29
29
|
| `@pieai/pro-gov` | required | Profiles, assets, learning recall/capture, portfolio checks |
|
|
30
30
|
| `@pieai/doc-gov` | required | Governed-document and router validation |
|
|
31
|
-
|
|
|
32
|
-
| `
|
|
31
|
+
| `capture-learning` | available | Make a visible soft closeout decision and save a verified reusable lesson only when one exists |
|
|
32
|
+
| `agent-browser` | frontend host prerequisite | Grok Build browser interaction and visual QA; Codex and Claude Code keep their native browser lanes |
|
|
33
|
+
| `agent-device` + `dogfood` | registered, on demand | Native iOS/Android automation only after a product enters an explicit mobile phase |
|
|
34
|
+
| `@mobilenext/mobile-mcp` | registered, absent by default | Optional native-mobile MCP; install the exact reviewed version only for an active mobile phase |
|
|
33
35
|
| Superpowers | do not install | Retired mandatory workflow plugin |
|
|
34
36
|
| Compound Engineering | do not install | Retired; native PGS capture keeps the useful learning loop |
|
|
35
37
|
| Ponytail | do not install | Retired global mode/hooks; ordinary engineering judgment stays lean |
|
|
@@ -40,20 +42,45 @@ Before non-trivial work:
|
|
|
40
42
|
pro-gov learn recall --query "<task summary>"
|
|
41
43
|
```
|
|
42
44
|
|
|
43
|
-
After verified work, `capture-learning`
|
|
44
|
-
|
|
45
|
+
After completed, verified, non-trivial work, `capture-learning` makes one visible
|
|
46
|
+
closeout decision. It first checks for an existing lesson and then calls this only
|
|
47
|
+
when a new reusable lesson exists:
|
|
45
48
|
|
|
46
49
|
```bash
|
|
47
50
|
pro-gov learn capture --title "<learning title>" --summary "<reusable lesson>"
|
|
48
51
|
```
|
|
49
52
|
|
|
50
53
|
Do not add Stop/SubagentStop workflow reminder hooks. Verification belongs in
|
|
51
|
-
the task and the project's real command ladder.
|
|
54
|
+
the task and the project's real command ladder. The Skill is implicitly
|
|
55
|
+
discoverable, but its closeout check is soft: trivial work is silent, unfinished
|
|
56
|
+
work is not interrupted, and a reusable lesson is never required for completion.
|
|
57
|
+
|
|
58
|
+
Do not treat a long conversation as a learning record by default. Current state
|
|
59
|
+
belongs in current-work, hard-to-reverse decisions in ADRs, approved requirements
|
|
60
|
+
in Specs, execution order in Plans, and only verified recurring guidance in
|
|
61
|
+
`docs/reference/learnings/**`.
|
|
62
|
+
|
|
63
|
+
Resolve the CLI through the project rather than assuming a global binary. The PGS
|
|
64
|
+
source repository uses `pnpm pro-gov`; consumers may expose `pro-gov` directly or
|
|
65
|
+
through their package manager's local executable command.
|
|
52
66
|
|
|
53
67
|
Host plugins that provide external capabilities—such as GitHub, Vercel,
|
|
54
68
|
Supabase, browsers, documents, or device control—remain independent choices.
|
|
55
69
|
PGS does not require them unless a portfolio manifest explicitly declares one.
|
|
56
70
|
|
|
71
|
+
For Pie frontend targets, `agent-browser` is a host-level CLI prerequisite rather
|
|
72
|
+
than an application dependency. The private portfolio manifest pins its exact
|
|
73
|
+
version for HostLens. The `frontend-app` asset bundle distributes the matching
|
|
74
|
+
skill stub, while host routing stays explicit: Codex Browser/Chrome for Codex,
|
|
75
|
+
Claude-in-Chrome for Claude Code, and `agent-browser` for Grok Build.
|
|
76
|
+
|
|
77
|
+
Mobile automation stays absent from product repositories until a named mobile
|
|
78
|
+
phase begins. PGS retains the reviewed `agent-device` and `dogfood` sources plus
|
|
79
|
+
an exact, disabled-by-default Mobile MCP activation template. Do not pre-wire a
|
|
80
|
+
dormant `.mcp.json` into every web repository: Claude Code and Grok use different
|
|
81
|
+
disable controls, so pre-wiring adds three configuration surfaces before the
|
|
82
|
+
capability has product value.
|
|
83
|
+
|
|
57
84
|
## Who Owns Verification
|
|
58
85
|
|
|
59
86
|
The AI agent executing the task owns verification. Tests do not act on their
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{color-scheme:light;--game-ui-font-display:"Baloo 2", "Geist Variable", "Noto Sans SC", system-ui, sans-serif;--game-ui-font-body:"Geist Variable", "Noto Sans SC", "Noto Sans", system-ui, sans-serif;--game-ui-font-xs:.72rem;--game-ui-font-sm:.82rem;--game-ui-font-md:.95rem;--game-ui-font-lg:1.18rem;--game-ui-font-xl:clamp(1.5rem, 2.4vw, 2.35rem);--game-ui-font-xxl:clamp(2.3rem, 5vw, 4.5rem);--game-ui-line-tight:1.05;--game-ui-line-body:1.52;--game-ui-weight-body:620;--game-ui-weight-strong:800;--game-ui-weight-title:930;--game-ui-bg:#f3e8d8;--game-ui-playfield-scrim:#2a1e146b;--game-ui-surface:#fff8ecc7;--game-ui-surface-raised:#fffaf0f0;--game-ui-panel:#fff8ece6;--game-ui-panel-strong:#fff8ec;--game-ui-panel-deep:#efd1a3;--game-ui-text:#3b2d23;--game-ui-text-muted:#786250;--game-ui-accent:#e8743b;--game-ui-accent-bright:#f28d50;--game-ui-accent-pale:#ffd4a2;--game-ui-accent-contrast:#241609;--game-ui-secondary:#1d9a8b;--game-ui-secondary-pale:#baf5df;--game-ui-success:#4f9d6b;--game-ui-success-bright:#7ee0b6;--game-ui-danger:#d85a45;--game-ui-danger-bright:#ef8a72;--game-ui-danger-ink:#b3402f;--game-ui-accent-ink:#a34e17;--game-ui-warning:#f2b35c;--game-ui-berry:#9b6dd6;--game-ui-berry-pale:#d9c6ff;--game-ui-focus-ring:#1d9a8bb8;--game-ui-border-subtle:#6c4f3838;--game-ui-border-strong:#6c4f386b;--game-ui-disabled:#7b66527a;--game-ui-ink-deep:#3a2518;--game-ui-border-ink:#5c3c27;--game-ui-wood:#6c4f38;--game-ui-ink-title:#4a2f1f;--game-ui-ink-heading:#5a3924;--game-ui-text-on-dark:#fff8ec;--game-ui-glass-night:#1f1812ad;--game-ui-glass-night-soft:#1f1812a3;--game-ui-scrim-strong:#1e140e94;--game-ui-space-2:2px;--game-ui-space-4:4px;--game-ui-space-6:6px;--game-ui-space-8:8px;--game-ui-space-10:10px;--game-ui-space-12:12px;--game-ui-space-16:16px;--game-ui-space-20:20px;--game-ui-space-24:24px;--game-ui-space-32:32px;--game-ui-safe-top:max(14px, env(safe-area-inset-top));--game-ui-safe-right:max(14px, env(safe-area-inset-right));--game-ui-safe-bottom:max(14px, env(safe-area-inset-bottom));--game-ui-safe-left:max(14px, env(safe-area-inset-left));--game-ui-radius-bead:999px;--game-ui-radius-control:999px;--game-ui-radius-card:18px;--game-ui-radius-panel:26px;--game-ui-radius-modal:34px;--game-ui-shadow-button:0 13px 26px #4c341c38, inset 0 2px 0 #ffffff6b;--game-ui-shadow-panel:0 22px 60px #4c341c2e, inset 0 1px 0 #ffffffb3;--game-ui-shadow-modal:0 32px 90px #301e1261, inset 0 1px 0 #ffffffb3;--game-ui-shadow-inset:inset 0 2px 8px #4c341c1f;--game-ui-shadow-scenery:0 28px 70px #00000057, inset 0 8px 20px #ffffff1a;--game-ui-shadow-seat:0 8px 18px #00000052;--game-ui-shadow-callout:0 8px 18px #00000038;--game-ui-stroke:1px solid var(--game-ui-border-subtle);--game-ui-motion-fast:.12s;--game-ui-motion-base:.22s;--game-ui-motion-slow:.36s;--game-ui-ease-pop:cubic-bezier(.2, 1.35, .26, 1);--game-ui-ease-soft:cubic-bezier(.22, 1, .36, 1);--game-ui-reduced-motion-policy:disable non-essential transform/opacity animation;--game-ui-z-playfield:0;--game-ui-z-hud:20;--game-ui-z-sidebar:40;--game-ui-z-overlay:60;--game-ui-z-modal:80;--game-ui-z-toast:100;--game-ui-asset-icon-sm:22px;--game-ui-asset-icon-md:34px;--game-ui-asset-icon-lg:48px;--game-ui-asset-icon-xl:64px;--game-ui-asset-button-min-width:148px;--game-ui-asset-card-fan-width:132px;--game-ui-stage-tile-min-height:122px;--game-ui-terrain-swatch-size:34px;--game-ui-terrain-tool-hit-size:44px;--game-ui-build-rail-card-size:52px;--game-ui-brush-number-width:76px;--game-ui-radial-diameter:176px;--game-ui-radial-radius:72px;--game-ui-scenery-canopy:#40543c;--game-ui-scenery-moss:#2d3a2d;--game-ui-scenery-soil:#261b14;--game-ui-scenery-pine:#314b38;--game-ui-scenery-clearing:#5f3b20db;--game-ui-scenery-wood-hi:#9a6c42;--game-ui-scenery-wood-lo:#563621;--game-ui-scenery-dusk-1:#27180e;--game-ui-scenery-dusk-2:#7f5735;--game-ui-scenery-dusk-3:#d7b174;--game-ui-scenery-grid-strong:#ffffff12;--game-ui-scenery-grid-soft:#ffffff0d;--game-ui-preview-glow-warm:#fff6cae6;--game-ui-preview-glow-mint:#7ee0b63d;--game-ui-preview-canvas-1:#f6e8d2;--game-ui-preview-canvas-2:#e4cda8;--game-ui-preview-canvas-3:#b98d5d}[data-game-ui-theme=night]{color-scheme:dark;--game-ui-bg:#221812;--game-ui-playfield-scrim:#0a060480;--game-ui-surface:#34261cb8;--game-ui-surface-raised:#402f22f0;--game-ui-panel:#2e2118eb;--game-ui-panel-strong:#3a2a1e;--game-ui-panel-deep:#2c1f16;--game-ui-text:#f6e7d3;--game-ui-text-muted:#c9ac8d;--game-ui-accent:#ef8148;--game-ui-accent-bright:#ffa06b;--game-ui-accent-pale:#8a4f28;--game-ui-secondary:#2fb3a2;--game-ui-secondary-pale:#1d5c53;--game-ui-success:#63b381;--game-ui-success-bright:#3d7c58;--game-ui-danger:#e26a55;--game-ui-danger-bright:#8a3a2c;--game-ui-danger-ink:#ff9a80;--game-ui-accent-ink:#ffb072;--game-ui-warning:#f2b35c;--game-ui-berry:#b58ae0;--game-ui-berry-pale:#55407a;--game-ui-focus-ring:#2fb3a2bf;--game-ui-border-subtle:#f6e7d329;--game-ui-border-strong:#f6e7d352;--game-ui-disabled:#c9ac8d73;--game-ui-ink-deep:#f6e7d3;--game-ui-border-ink:#e8d3b8;--game-ui-wood:#d8b892;--game-ui-ink-title:#f6e2c8;--game-ui-ink-heading:#ecd6b8;--game-ui-text-on-dark:#fff8ec;--game-ui-scrim-strong:#0000009e;--game-ui-shadow-button:0 13px 26px #00000073, inset 0 2px 0 #ffffff14;--game-ui-shadow-panel:0 22px 60px #0006, inset 0 1px 0 #ffffff0f;--game-ui-shadow-modal:0 32px 90px #0009, inset 0 1px 0 #ffffff0f;--game-ui-shadow-inset:inset 0 2px 8px #00000059;--game-ui-preview-glow-warm:#78582a59;--game-ui-preview-glow-mint:#2fb3a224;--game-ui-preview-canvas-1:#2a1d13;--game-ui-preview-canvas-2:#201510;--game-ui-preview-canvas-3:#150d08}@layer swimmer-ui{.game-ui-dialog h2,.game-ui-panel h3,.game-ui-prompt h3,.swimmer-first-session-onboarding-card h2{color:var(--game-ui-ink-heading);font-family:var(--game-ui-font-display);margin:0;font-weight:900}.game-ui-dialog,.game-ui-history,.game-ui-panel,.game-ui-prompt,.game-ui-toast{border:var(--game-ui-stroke);border-radius:var(--game-ui-radius-panel);background:var(--game-ui-panel);box-shadow:var(--game-ui-shadow-panel)}.game-ui-stage-tile-copy>span,.game-ui-hud-chip span,.game-ui-language-popover button span,.game-ui-history-entry-header,.swimmer-first-session-control-copy{gap:2px;display:grid}.game-ui-dialog,.game-ui-panel,.game-ui-history,.game-ui-prompt{gap:12px;padding:14px;display:grid}.game-ui-stage-tile small,.game-ui-hud-chip small,.game-ui-hud-chip em,.game-ui-language-popover small{color:var(--game-ui-text-muted);font-size:var(--game-ui-font-xs);letter-spacing:.08em;text-transform:uppercase;font-style:normal;font-weight:820}.game-ui-dialog p,.game-ui-history-entry p,.game-ui-prompt p,.swimmer-first-session-onboarding-card p{max-width:62ch;color:var(--game-ui-text-muted);font-size:var(--game-ui-font-md);line-height:var(--game-ui-line-body)}.game-ui-hud-cluster,.game-ui-hud-tools,.game-ui-tabs,.game-ui-segmented,.game-ui-hud-actions,.swimmer-first-session-onboarding-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.game-ui-button,.game-ui-icon-button,.game-ui-tab,.game-ui-segmented-option,.game-ui-toggle,.game-ui-language-trigger,.game-ui-language-popover button,.game-ui-stage-tile,.game-ui-orientation-card button,.game-ui-radial-item{border:1px solid color-mix(in srgb,var(--game-ui-border-ink) 18%,transparent);border-radius:var(--game-ui-radius-control);min-height:44px;font:inherit;font-family:var(--game-ui-font-body);cursor:pointer;box-shadow:var(--game-ui-shadow-button);transition:transform var(--game-ui-motion-fast) var(--game-ui-ease-pop),scale var(--game-ui-motion-fast) var(--game-ui-ease-pop),box-shadow var(--game-ui-motion-fast) var(--game-ui-ease-soft);font-weight:860}.game-ui-button,.game-ui-icon-button,.game-ui-radial-item{justify-content:center;align-items:center;gap:8px;min-width:fit-content;padding:0 16px;display:inline-flex}@media(hover:hover){.game-ui-button:hover,.game-ui-icon-button:hover,.game-ui-language-trigger:hover,.game-ui-language-popover button:hover,.game-ui-stage-tile:hover,.game-ui-orientation-card button:hover{transform:translateY(-1px)}.game-ui-radial-item:hover{--radial-lift:-6px}}.game-ui-button:active,.game-ui-icon-button:active,.game-ui-tab:active,.game-ui-segmented-option:active,.game-ui-toggle:active,.game-ui-language-trigger:active,.game-ui-language-popover button:active,.game-ui-stage-tile:active,.game-ui-orientation-card button:active,.game-ui-radial-item:active{scale:.96}.game-ui-button--primary,.game-ui-orientation-card button{background:linear-gradient(180deg,var(--game-ui-accent-bright),var(--game-ui-accent));color:var(--game-ui-accent-contrast)}.game-ui-button--secondary,.game-ui-icon-button,.game-ui-tab,.game-ui-segmented-option,.game-ui-toggle,.game-ui-language-trigger,.game-ui-language-popover button,.game-ui-radial-item{background:var(--game-ui-surface-raised);color:var(--game-ui-text)}.game-ui-button--ghost{border-color:var(--game-ui-border-subtle);background:color-mix(in srgb,var(--game-ui-panel-strong) 18%,transparent);color:var(--game-ui-text-muted);box-shadow:none}.game-ui-button--success{background:linear-gradient(180deg,var(--game-ui-success-bright),var(--game-ui-success));color:var(--game-ui-accent-contrast)}.game-ui-button--danger{background:linear-gradient(180deg,var(--game-ui-danger-bright),var(--game-ui-danger));color:var(--game-ui-accent-contrast)}.game-ui-button:disabled{background:color-mix(in srgb,var(--game-ui-text-muted) 16%,transparent);color:var(--game-ui-disabled);cursor:not-allowed;transform:none}.game-ui-asset-icon{width:var(--game-ui-asset-icon-md);height:var(--game-ui-asset-icon-md);flex:none;place-items:center;display:inline-grid}.game-ui-asset-icon[data-icon-size=sm]{width:var(--game-ui-asset-icon-sm);height:var(--game-ui-asset-icon-sm)}.game-ui-asset-icon[data-icon-size=lg]{width:var(--game-ui-asset-icon-lg);height:var(--game-ui-asset-icon-lg)}.game-ui-asset-icon[data-icon-size=xl]{width:var(--game-ui-asset-icon-xl);height:var(--game-ui-asset-icon-xl)}.game-ui-asset-icon img{object-fit:contain;width:100%;height:100%}.game-ui-badge{border:1px solid var(--game-ui-border-subtle);border-radius:var(--game-ui-radius-bead);background:color-mix(in srgb,var(--game-ui-panel-strong) 90%,transparent);width:fit-content;min-height:28px;color:var(--game-ui-text);font-size:var(--game-ui-font-xs);letter-spacing:.05em;text-transform:uppercase;justify-content:center;align-items:center;padding:0 10px;font-weight:900;display:inline-flex}.game-ui-badge[data-badge-tone=success]{border-color:color-mix(in srgb,var(--game-ui-success) 42%,transparent);background:color-mix(in srgb,var(--game-ui-success-bright) 28%,transparent)}.game-ui-badge[data-badge-tone=warning]{border-color:color-mix(in srgb,var(--game-ui-accent) 42%,transparent);background:color-mix(in srgb,var(--game-ui-warning) 28%,transparent)}.game-ui-badge[data-badge-tone=danger]{border-color:color-mix(in srgb,var(--game-ui-danger) 42%,transparent);background:color-mix(in srgb,var(--game-ui-danger) 16%,transparent)}.game-ui-badge[data-badge-tone=ai]{border-color:color-mix(in srgb,var(--game-ui-secondary) 42%,transparent);background:color-mix(in srgb,var(--game-ui-secondary) 16%,transparent)}.game-ui-toast{padding:12px 14px;font-weight:820}.game-ui-toast[data-toast-tone=success]{border-color:color-mix(in srgb,var(--game-ui-success) 42%,transparent);background:color-mix(in srgb,var(--game-ui-success-bright) 22%,transparent)}.game-ui-toast[data-toast-tone=danger]{border-color:color-mix(in srgb,var(--game-ui-danger) 42%,transparent);background:color-mix(in srgb,var(--game-ui-danger) 13%,transparent)}.game-ui-history-entry{border-radius:var(--game-ui-radius-card);background:color-mix(in srgb,var(--game-ui-panel-strong) 56%,transparent);gap:4px;padding:12px;display:grid}.game-ui-history-entry[data-entry-kind=mystery]{background:color-mix(in srgb,var(--game-ui-berry) 12%,transparent)}.game-ui-history-entry[data-entry-kind=system]{background:color-mix(in srgb,var(--game-ui-secondary) 12%,transparent)}.game-ui-history-entry-header{grid-template-columns:1fr auto;align-items:center}.game-ui-history-entry-header span{color:var(--game-ui-text-muted);font-size:var(--game-ui-font-xs);font-weight:760}.game-ui-tab[aria-selected=true],.game-ui-segmented-option[aria-pressed=true]{background:var(--game-ui-secondary);color:var(--game-ui-accent-contrast)}.game-ui-slider{color:var(--game-ui-text-muted);gap:6px;font-weight:820;display:grid}.game-ui-slider input{accent-color:var(--game-ui-secondary)}.game-ui-slider input[type=range]{-webkit-appearance:none;appearance:none;cursor:pointer;background:0 0;width:100%;min-height:44px}.game-ui-slider input[type=range]::-webkit-slider-runnable-track{border-radius:var(--game-ui-radius-control);background:var(--game-ui-surface);height:10px;box-shadow:var(--game-ui-shadow-inset)}.game-ui-slider input[type=range]::-moz-range-track{border-radius:var(--game-ui-radius-control);background:var(--game-ui-surface);height:10px;box-shadow:var(--game-ui-shadow-inset)}.game-ui-slider input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;border:2px solid var(--game-ui-panel-strong);background:linear-gradient(180deg,var(--game-ui-accent-bright),var(--game-ui-accent));width:22px;height:22px;box-shadow:var(--game-ui-shadow-button);transition:scale var(--game-ui-motion-fast) var(--game-ui-ease-pop);border-radius:50%;margin-top:-6px}.game-ui-slider input[type=range]::-moz-range-thumb{border:2px solid var(--game-ui-panel-strong);background:linear-gradient(180deg,var(--game-ui-accent-bright),var(--game-ui-accent));width:22px;height:22px;box-shadow:var(--game-ui-shadow-button);transition:scale var(--game-ui-motion-fast) var(--game-ui-ease-pop);border-radius:50%}@media(hover:hover){.game-ui-slider input[type=range]:hover::-webkit-slider-thumb{scale:1.08}.game-ui-slider input[type=range]:hover::-moz-range-thumb{scale:1.08}}.game-ui-slider input[type=range]:active::-webkit-slider-thumb{scale:.94}.game-ui-slider input[type=range]:active::-moz-range-thumb{scale:.94}.game-ui-slider input[type=range]:focus-visible::-webkit-slider-thumb{outline:3px solid var(--game-ui-focus-ring);outline-offset:2px}.game-ui-slider input[type=range]:focus-visible::-moz-range-thumb{outline:3px solid var(--game-ui-focus-ring);outline-offset:2px}.game-ui-toggle{justify-content:space-between;align-items:center;gap:10px;padding:0 10px 0 14px;display:inline-flex}.game-ui-toggle-track{border:2px solid var(--game-ui-panel-strong);border-radius:var(--game-ui-radius-bead);background:var(--game-ui-secondary);width:42px;height:24px;box-shadow:inset -8px 0 color-mix(in srgb,var(--game-ui-panel-strong) 62%,transparent)}.game-ui-tooltip{display:inline-flex;position:relative}.game-ui-tooltip [role=tooltip]{background:var(--game-ui-text);min-width:150px;color:var(--game-ui-text-on-dark);font-size:var(--game-ui-font-xs);opacity:0;pointer-events:none;transition:opacity var(--game-ui-motion-fast) var(--game-ui-ease-soft),transform var(--game-ui-motion-fast) var(--game-ui-ease-pop);border-radius:12px;padding:7px 9px;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)translateY(3px)}.game-ui-tooltip [role=tooltip]:after{background:var(--game-ui-text);content:"";border-radius:2px;width:8px;height:8px;margin-top:-5px;position:absolute;top:100%;left:50%;transform:translate(-50%)rotate(45deg)}.game-ui-tooltip:hover [role=tooltip],.game-ui-tooltip:focus-within [role=tooltip]{opacity:1;transform:translate(-50%)translateY(0)}.game-ui-radial-menu{width:var(--game-ui-radial-diameter);height:var(--game-ui-radial-diameter);place-items:center;margin:0 auto;display:grid;position:relative}.game-ui-radial-item{--radial-lift:0px;transform:rotate(calc(360deg / var(--radial-count,1) * var(--radial-index,0))) translateY(calc(-1 * var(--game-ui-radial-radius) + var(--radial-lift))) rotate(calc(-360deg / var(--radial-count,1) * var(--radial-index,0)));position:absolute}.game-ui-hud{z-index:var(--game-ui-z-hud);justify-content:space-between;align-items:flex-start;gap:12px;display:flex;position:relative}.game-ui-hud-chip{border:1px solid color-mix(in srgb,var(--game-ui-text-on-dark) 30%,transparent);background:var(--game-ui-glass-night);min-height:54px;color:var(--game-ui-text-on-dark);backdrop-filter:blur(10px);font-variant-numeric:tabular-nums;border-radius:20px;align-items:center;gap:8px;padding:6px 10px 6px 6px;display:inline-flex}.game-ui-hud-chip strong{color:var(--game-ui-text-on-dark);font-size:var(--game-ui-font-sm)}.game-ui-hud-chip small,.game-ui-hud-chip em{color:var(--game-ui-text-on-dark)}.game-ui-callout{background:var(--game-ui-panel-strong);color:var(--game-ui-text);font-size:var(--game-ui-font-xs);box-shadow:var(--game-ui-shadow-callout);white-space:nowrap;border-radius:16px 16px 16px 5px;padding:6px 9px;font-weight:820;position:absolute}.game-ui-callout.is-a{top:-44px;left:20%}.game-ui-callout.is-b{top:-28px;right:8%}.game-ui-stage-tile{min-height:var(--game-ui-stage-tile-min-height);border-radius:var(--game-ui-radius-panel);background:color-mix(in srgb,var(--game-ui-panel-strong) 92%,transparent);width:100%;color:var(--game-ui-text);text-align:left;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:12px;display:grid}.game-ui-stage-tile[data-stage-tone=portal]{border-color:color-mix(in srgb,var(--game-ui-secondary) 42%,transparent)}.game-ui-stage-tile[data-stage-tone=host]{border-color:color-mix(in srgb,var(--game-ui-accent) 42%,transparent)}.game-ui-stage-tile[data-stage-tone=danger]{border-color:color-mix(in srgb,var(--game-ui-danger) 42%,transparent)}.game-ui-stage-tile:disabled{cursor:not-allowed;opacity:.76;filter:saturate(.72);transform:none}.game-ui-stage-tile-copy>span{color:var(--game-ui-text-muted);font-size:var(--game-ui-font-sm);line-height:1.35}.game-ui-card-fan{place-items:center;min-height:190px;display:grid;position:relative}.game-ui-card-fan-card{width:var(--game-ui-asset-card-fan-width);border:2px solid color-mix(in srgb,var(--game-ui-border-ink) 16%,transparent);background:linear-gradient(180deg,var(--game-ui-panel-strong),var(--game-ui-panel-deep));text-align:center;min-height:170px;transform:translate(calc(var(--game-ui-card-offset) * 54px)) rotate(calc(var(--game-ui-card-offset) * 8deg));box-shadow:var(--game-ui-shadow-button);border-radius:22px;place-items:center;gap:6px;padding:12px;display:grid;position:absolute}.game-ui-card-fan-card:nth-child(2){z-index:2;transform:translateY(-10px)}.game-ui-card-fan-card small{color:var(--game-ui-text-muted);font-size:var(--game-ui-font-xs);text-transform:uppercase;font-weight:860}.game-ui-card-fan-card strong{font-size:var(--game-ui-font-lg)}.game-ui-orientation-gate{border:1px dashed var(--game-ui-border-strong);border-radius:var(--game-ui-radius-modal);background:color-mix(in srgb,var(--game-ui-ink-deep) 14%,transparent);place-items:center;min-height:320px;padding:16px;display:grid}.game-ui-orientation-card{border:2px solid color-mix(in srgb,var(--game-ui-panel-strong) 62%,transparent);border-radius:var(--game-ui-radius-modal);background:color-mix(in srgb,var(--game-ui-panel-strong) 94%,transparent);max-width:440px;color:var(--game-ui-text);text-align:center;box-shadow:var(--game-ui-shadow-modal);justify-items:center;gap:10px;padding:24px;display:grid}.game-ui-orientation-card h2,.game-ui-orientation-card p,.game-ui-orientation-card small{margin:0}.game-ui-language-menu{justify-self:end;position:relative}.game-ui-language-trigger,.game-ui-language-popover button{align-items:center;gap:8px;padding:0 12px;display:inline-flex}.game-ui-language-popover{z-index:var(--game-ui-z-toast);border:var(--game-ui-stroke);background:var(--game-ui-panel-strong);min-width:210px;box-shadow:var(--game-ui-shadow-modal);border-radius:18px;gap:6px;padding:8px;display:grid;position:absolute;top:calc(100% + 8px);right:0}.game-ui-language-popover button{text-align:left;border-radius:14px;justify-content:flex-start;width:100%}.game-ui-loading-state{border:var(--game-ui-stroke);border-radius:var(--game-ui-radius-control);background:color-mix(in srgb,var(--game-ui-panel-strong) 72%,transparent);min-height:48px;color:var(--game-ui-text);align-items:center;gap:8px;padding:8px 12px;font-weight:820;display:inline-flex}.game-ui-loading-state[data-loading-tone=error]{border-color:color-mix(in srgb,var(--game-ui-danger) 42%,transparent);background:color-mix(in srgb,var(--game-ui-danger) 12%,transparent)}.game-ui-loading-state img{object-fit:contain;width:30px;height:30px}.game-ui-input{border:1px solid var(--game-ui-border-strong);border-radius:var(--game-ui-radius-card);background:var(--game-ui-surface-raised);width:100%;min-height:48px;box-shadow:var(--game-ui-shadow-inset);color:var(--game-ui-text);font:inherit;font-weight:var(--game-ui-weight-body);transition:border-color var(--game-ui-motion-fast) var(--game-ui-ease-soft),box-shadow var(--game-ui-motion-fast) var(--game-ui-ease-soft);padding:12px 16px}.game-ui-input::placeholder{color:var(--game-ui-disabled)}.game-ui-input:focus-visible{border-color:var(--game-ui-secondary);box-shadow:var(--game-ui-shadow-inset),0 0 0 3px var(--game-ui-focus-ring);outline:none}.game-ui-input:disabled{opacity:.6;cursor:not-allowed}.game-ui-input[data-invalid=true],.game-ui-field[data-invalid=true] .game-ui-input{border-color:var(--game-ui-danger);box-shadow:var(--game-ui-shadow-inset),0 0 0 3px color-mix(in srgb,var(--game-ui-danger) 26%,transparent)}.game-ui-textarea{min-height:92px;line-height:var(--game-ui-line-body);resize:vertical}.game-ui-field{gap:6px;display:grid}.game-ui-field-label{color:var(--game-ui-text-muted);font-size:var(--game-ui-font-xs);font-weight:var(--game-ui-weight-strong);letter-spacing:.06em;text-transform:uppercase}.game-ui-field-required{color:var(--game-ui-danger-ink)}.game-ui-field-hint{color:var(--game-ui-text-muted);font-size:var(--game-ui-font-sm)}.game-ui-field-error{color:var(--game-ui-danger-ink);font-size:var(--game-ui-font-sm);font-weight:var(--game-ui-weight-strong)}.game-ui-checkbox{cursor:pointer;min-height:40px;color:var(--game-ui-text);font-weight:var(--game-ui-weight-body);align-items:center;gap:10px;display:inline-flex}.game-ui-checkbox-input{opacity:0;width:1px;height:1px;position:absolute}.game-ui-checkbox-box{border:1px solid var(--game-ui-border-strong);background:var(--game-ui-surface-raised);width:26px;height:26px;box-shadow:var(--game-ui-shadow-inset);transition:background var(--game-ui-motion-fast),border-color var(--game-ui-motion-fast);border-radius:9px;flex:none;place-items:center;display:grid;position:relative}.game-ui-checkbox-box:after{content:"";border-left:3px solid var(--game-ui-accent-contrast);border-bottom:3px solid var(--game-ui-accent-contrast);opacity:0;width:12px;height:7px;transition:transform var(--game-ui-motion-fast) var(--game-ui-ease-pop),opacity var(--game-ui-motion-fast);margin-top:-3px;transform:rotate(-45deg)scale(.3)}.game-ui-checkbox-input:checked+.game-ui-checkbox-box{background:var(--game-ui-accent);border-color:var(--game-ui-accent)}.game-ui-checkbox-input:checked+.game-ui-checkbox-box:after{opacity:1;transform:rotate(-45deg)scale(1)}.game-ui-checkbox-input:focus-visible+.game-ui-checkbox-box{box-shadow:var(--game-ui-shadow-inset),0 0 0 3px var(--game-ui-focus-ring)}.game-ui-checkbox-input:disabled~*{opacity:.55;cursor:not-allowed}.game-ui-sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.game-ui-avatar{border:2px solid var(--game-ui-panel-strong);background:linear-gradient(150deg,var(--game-ui-warning),var(--game-ui-accent));color:var(--game-ui-accent-contrast);font-family:var(--game-ui-font-display);font-weight:var(--game-ui-weight-title);box-shadow:var(--game-ui-shadow-button);border-radius:50%;flex:none;place-items:center;display:inline-grid;position:relative}.game-ui-avatar img,.game-ui-avatar-initials{grid-area:1/1}.game-ui-avatar img{object-fit:cover;border-radius:50%;width:100%;height:100%}.game-ui-avatar[data-avatar-size=sm]{width:32px;height:32px;font-size:.72rem}.game-ui-avatar[data-avatar-size=md]{width:44px;height:44px;font-size:.95rem}.game-ui-avatar[data-avatar-size=lg]{width:60px;height:60px;font-size:1.25rem}.game-ui-avatar[data-avatar-size=xl]{width:84px;height:84px;font-size:1.7rem}.game-ui-avatar-status{border:2px solid var(--game-ui-panel-strong);border-radius:50%;width:30%;min-width:9px;height:30%;min-height:9px;position:absolute;bottom:-1px;right:-1px}.game-ui-avatar[data-avatar-status=online] .game-ui-avatar-status{background:var(--game-ui-success)}.game-ui-avatar[data-avatar-status=busy] .game-ui-avatar-status{background:var(--game-ui-danger)}.game-ui-avatar[data-avatar-status=away] .game-ui-avatar-status{background:var(--game-ui-warning)}.game-ui-progress{align-items:center;gap:10px;display:flex}.game-ui-progress-track{border-radius:var(--game-ui-radius-control);background:var(--game-ui-surface);height:14px;box-shadow:var(--game-ui-shadow-inset);flex:1;position:relative;overflow:hidden}.game-ui-progress-fill{border-radius:inherit;background:var(--game-ui-accent);height:100%;transition:width var(--game-ui-motion-base) var(--game-ui-ease-soft)}.game-ui-progress[data-progress-tone=success] .game-ui-progress-fill{background:var(--game-ui-success)}.game-ui-progress[data-progress-tone=danger] .game-ui-progress-fill{background:var(--game-ui-danger)}.game-ui-progress[data-progress-tone=warning] .game-ui-progress-fill{background:var(--game-ui-warning)}.game-ui-progress-value{min-width:3ch;color:var(--game-ui-text-muted);font-size:var(--game-ui-font-sm);font-weight:var(--game-ui-weight-strong);text-align:right;font-variant-numeric:tabular-nums}.game-ui-empty-state{border:1px dashed var(--game-ui-border-strong);border-radius:var(--game-ui-radius-panel);background:var(--game-ui-surface);text-align:center;justify-items:center;gap:8px;padding:28px 20px;display:grid}.game-ui-empty-state-title{color:var(--game-ui-text);font-family:var(--game-ui-font-display);font-size:var(--game-ui-font-lg);font-weight:var(--game-ui-weight-strong)}.game-ui-empty-state-body{max-width:42ch;color:var(--game-ui-text-muted);font-size:var(--game-ui-font-sm);line-height:var(--game-ui-line-body);margin:0}.game-ui-empty-state-action{margin-top:6px}@media(prefers-reduced-motion:reduce){.game-ui-input,.game-ui-checkbox-box,.game-ui-checkbox-box:after,.game-ui-progress-fill{transition:none}.game-ui-slider input[type=range]::-webkit-slider-thumb{transition:none}.game-ui-slider input[type=range]::-moz-range-thumb{transition:none}}.game-ui-stage-tile strong,.game-ui-dialog h2,.game-ui-panel h3,.game-ui-prompt h3,.game-ui-empty-state-title,.swimmer-first-session-onboarding-card h2{text-wrap:balance}.game-ui-stage-tile-copy>span,.game-ui-field-hint,.game-ui-empty-state-body,.game-ui-prompt p,.game-ui-dialog p{text-wrap:pretty}.game-ui-button:has(>.game-ui-asset-icon:last-child),.game-ui-button:has(>svg:last-child){padding-right:14px}.game-ui-button:has(>.game-ui-asset-icon:first-child),.game-ui-button:has(>svg:first-child){padding-left:14px}@keyframes game-ui-pop{0%{opacity:0;filter:blur(4px);transform:translateY(8px)scale(.96)}to{opacity:1;filter:blur();transform:none}}@keyframes game-ui-rise{0%{opacity:0;filter:blur(3px);transform:translateY(10px)}to{opacity:1;filter:blur();transform:none}}.game-ui-dialog,.swimmer-first-session-onboarding-card{animation:game-ui-pop var(--game-ui-motion-base) var(--game-ui-ease-pop) both}.game-ui-language-popover{animation:game-ui-pop var(--game-ui-motion-fast) var(--game-ui-ease-pop) both;transform-origin:100% 0}.game-ui-toast{animation:game-ui-rise var(--game-ui-motion-base) var(--game-ui-ease-soft) both}@media(prefers-reduced-motion:reduce){.game-ui-dialog,.swimmer-first-session-onboarding-card,.game-ui-language-popover,.game-ui-toast{animation:none}}.game-ui-button--static:active{scale:1}.swimmer-first-session-shell{z-index:5;pointer-events:none;position:absolute;inset:0}.swimmer-first-session-hud{top:var(--game-ui-safe-top);right:var(--game-ui-safe-right);left:var(--game-ui-safe-left);align-items:flex-start;position:absolute}.swimmer-first-session-hud .game-ui-hud-cluster,.swimmer-first-session-hud .game-ui-hud-tools,.swimmer-first-session-hud-actions{pointer-events:auto}.swimmer-first-session-controls{right:max(18px,var(--game-ui-safe-right));bottom:max(16px,var(--game-ui-safe-bottom));left:max(18px,var(--game-ui-safe-left));border:var(--game-ui-stroke);border-radius:var(--game-ui-radius-modal);background:color-mix(in srgb,var(--game-ui-panel-strong) 86%,transparent);pointer-events:none;box-shadow:var(--game-ui-shadow-panel);backdrop-filter:blur(16px);grid-template-columns:auto minmax(120px,1fr) minmax(180px,.72fr) auto;align-items:center;gap:12px;padding:10px 12px;display:grid;position:absolute}.swimmer-first-session-joystick{border:1px solid color-mix(in srgb,var(--game-ui-border-ink) 18%,transparent);background:color-mix(in srgb,var(--game-ui-ink-deep) 8%,transparent);width:58px;height:58px;box-shadow:var(--game-ui-shadow-inset);border-radius:50%;place-items:center;display:grid}.swimmer-first-session-joystick span{background:linear-gradient(180deg,var(--game-ui-accent-bright),var(--game-ui-accent));width:25px;height:25px;box-shadow:var(--game-ui-shadow-button);border-radius:50%}.swimmer-first-session-control-copy strong{color:var(--game-ui-text);font-size:var(--game-ui-font-sm)}.swimmer-first-session-input,.swimmer-first-session-emote{border:1px solid color-mix(in srgb,var(--game-ui-border-ink) 18%,transparent);border-radius:var(--game-ui-radius-control);background:color-mix(in srgb,var(--game-ui-panel-strong) 74%,transparent);min-height:44px;color:var(--game-ui-text-muted);font-size:var(--game-ui-font-sm);align-items:center;gap:8px;padding:0 12px;font-weight:860;display:inline-flex}.swimmer-first-session-emote{color:var(--game-ui-text);cursor:pointer;pointer-events:auto}.swimmer-first-session-onboarding{z-index:var(--game-ui-z-modal);place-items:center;padding:18px;display:grid;position:absolute;inset:0}.swimmer-first-session-onboarding-scrim{background:var(--game-ui-scrim-strong);backdrop-filter:blur(10px);position:absolute;inset:0}.swimmer-first-session-onboarding-card{border:var(--game-ui-stroke);border-radius:var(--game-ui-radius-modal);background:color-mix(in srgb,var(--game-ui-panel-strong) 90%,transparent);width:min(720px,100vw - 40px);max-height:min(720px,100dvh - 28px);color:var(--game-ui-text);box-shadow:var(--game-ui-shadow-modal);gap:12px;padding:clamp(18px,3vw,30px);display:grid;position:relative;overflow:auto}.swimmer-first-session-onboarding-card h2{max-width:15ch;font-size:clamp(1.8rem,4vw,3.4rem);line-height:.95}.swimmer-first-session-onboarding-steps{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:4px 0 0;padding:0;list-style:none;display:grid}.swimmer-first-session-onboarding-steps li{border:1px solid color-mix(in srgb,var(--game-ui-border-ink) 14%,transparent);border-radius:var(--game-ui-radius-panel);background:color-mix(in srgb,var(--game-ui-panel-strong) 56%,transparent);gap:5px;padding:12px;display:grid}.swimmer-first-session-onboarding-steps span{color:var(--game-ui-accent-ink);font-size:var(--game-ui-font-xs);font-weight:950}.swimmer-first-session-onboarding-steps small{color:var(--game-ui-text-muted);line-height:1.35}@media(width<=900px){.game-ui-language-menu{justify-self:start}.game-ui-hud{display:grid}}@media(width<=900px)and (height<=500px)and (orientation:landscape){.swimmer-first-session-hud .game-ui-hud-chip:nth-child(3),.swimmer-first-session-hud .game-ui-hud-chip:nth-child(4){display:none}.swimmer-first-session-hud .game-ui-button{min-height:34px;padding:0 10px;font-size:11px}.swimmer-first-session-controls{grid-template-columns:auto minmax(0,1fr) auto;gap:8px;padding:8px 10px}.swimmer-first-session-input{display:none}.swimmer-first-session-joystick{width:46px;height:46px}.swimmer-first-session-onboarding-card{grid-template-columns:minmax(0,.7fr) minmax(260px,1fr);gap:12px;padding:14px}.swimmer-first-session-onboarding-steps{grid-area:1/2/span 5;grid-template-columns:1fr}}.game-ui-shell{border-radius:var(--game-ui-radius-modal);background:radial-gradient(circle at 18% 16%,color-mix(in srgb,var(--game-ui-success-bright) 24%,transparent),transparent 24rem),linear-gradient(150deg,var(--game-ui-scenery-pine),var(--game-ui-scenery-soil) 78%);min-height:min(760px,100dvh);color:var(--game-ui-text);isolation:isolate;box-shadow:var(--game-ui-shadow-modal);display:grid;position:relative;overflow:hidden}.game-ui-shell-scene{min-width:0;min-height:420px;position:relative;overflow:hidden}.game-ui-shell-scene>*{min-width:0}.game-ui-shell-hud,.game-ui-shell-library,.game-ui-shell-side-panel,.game-ui-shell-movement,.game-ui-shell-bottom-bar,.game-ui-shell-overlay{z-index:var(--game-ui-z-hud);position:absolute}.game-ui-shell-hud{top:var(--game-ui-safe-top);right:var(--game-ui-safe-right);left:var(--game-ui-safe-left)}.game-ui-shell-library{top:calc(var(--game-ui-safe-top) + 76px);right:var(--game-ui-safe-right);bottom:calc(var(--game-ui-safe-bottom) + 96px);width:min(360px,100% - 32px);overflow:auto}.game-ui-shell-side-panel{top:calc(var(--game-ui-safe-top) + 76px);left:var(--game-ui-safe-left);bottom:calc(var(--game-ui-safe-bottom) + 96px);width:min(320px,100% - 32px);overflow:auto}.game-ui-shell-movement{bottom:calc(var(--game-ui-safe-bottom) + 20px);left:var(--game-ui-safe-left)}.game-ui-shell-bottom-bar{right:var(--game-ui-safe-right);bottom:var(--game-ui-safe-bottom);left:max(172px,var(--game-ui-safe-left))}.game-ui-shell-overlay{pointer-events:none;place-items:center;display:grid;inset:0}.game-ui-shell-overlay>*{pointer-events:auto}.game-ui-shell[data-density=dense] .game-ui-panel{padding:10px}.game-ui-shell[data-layout=mobile] .game-ui-shell-library,.game-ui-shell[data-layout=mobile] .game-ui-shell-side-panel{top:auto;right:var(--game-ui-safe-right);bottom:calc(var(--game-ui-safe-bottom) + 78px);left:var(--game-ui-safe-left);width:auto;max-height:min(48dvh,320px)}.game-ui-shell[data-layout=mobile] .game-ui-shell-bottom-bar{left:var(--game-ui-safe-left)}.game-ui-shell[data-layout=mobile] .game-ui-shell-movement{bottom:calc(var(--game-ui-safe-bottom) + 86px)}.game-ui-fact-list{flex-wrap:wrap;gap:8px;display:flex}.game-ui-fact-list[data-variant=stats]{grid-template-columns:repeat(auto-fit,minmax(118px,1fr));display:grid}.game-ui-fact{border:1px solid color-mix(in srgb,var(--game-ui-text-on-dark) 32%,transparent);border-radius:var(--game-ui-radius-control);background:var(--game-ui-glass-night-soft);min-width:0;color:var(--game-ui-text-on-dark);box-shadow:var(--game-ui-shadow-button);backdrop-filter:blur(12px);align-items:center;gap:8px;padding:7px 9px;display:inline-flex}.game-ui-fact-list[data-density=dense] .game-ui-fact{min-height:38px;padding:5px 7px}.game-ui-fact-copy{gap:1px;min-width:0;display:grid}.game-ui-fact-copy small,.game-ui-fact-copy em{color:var(--game-ui-text-on-dark);font-size:var(--game-ui-font-xs);letter-spacing:.06em;text-transform:uppercase;font-style:normal;font-weight:820}.game-ui-fact-copy strong{color:var(--game-ui-text-on-dark);font-size:var(--game-ui-font-sm);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.game-ui-action-grid{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.game-ui-action-grid-button{min-width:0}.game-ui-action-grid kbd,.game-ui-movement-button kbd{background:color-mix(in srgb,var(--game-ui-ink-deep) 12%,transparent);color:inherit;border-radius:8px;padding:2px 6px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.72em;font-weight:900}.game-ui-action-grid .game-ui-icon-button{width:48px;min-width:0;padding:0}.game-ui-action-grid[data-icon-label-mode=caption] .game-ui-icon-button{width:var(--game-ui-terrain-tool-hit-size,54px);min-height:calc(var(--game-ui-terrain-tool-hit-size,54px) + 14px);flex-direction:column;gap:2px;padding:5px 4px 4px;line-height:1}.game-ui-action-grid[data-icon-label-mode=caption] .game-ui-icon-button .game-ui-asset-icon{background:color-mix(in srgb,var(--game-ui-ink-deep) 8%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--game-ui-ink-deep) 8%,transparent);border-radius:999px;padding:2px}.game-ui-action-grid[data-icon-label-mode=caption] .game-ui-icon-button[aria-pressed=true] .game-ui-asset-icon{background:color-mix(in srgb,var(--game-ui-panel-strong) 32%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--game-ui-ink-deep) 12%,transparent)}.game-ui-action-grid-caption{max-width:100%;color:var(--game-ui-text-muted);letter-spacing:.015em;text-align:center;text-overflow:ellipsis;white-space:nowrap;font-size:.62rem;font-weight:920;line-height:1;display:block;overflow:hidden}.game-ui-action-grid .game-ui-icon-button[aria-pressed=true] .game-ui-action-grid-caption{color:var(--game-ui-text)}.game-ui-movement-pad{border:var(--game-ui-stroke);border-radius:var(--game-ui-radius-modal);background:color-mix(in srgb,var(--game-ui-panel-strong) 82%,transparent);width:fit-content;box-shadow:var(--game-ui-shadow-panel);backdrop-filter:blur(14px);gap:7px;padding:10px;display:grid}.game-ui-movement-pad:focus-visible{outline:3px solid var(--game-ui-focus-ring);outline-offset:3px}.game-ui-movement-pad-grid{grid-template-columns:repeat(3,48px);grid-template-areas:".forward.""left reset right"".backward.";gap:6px;display:grid}.game-ui-movement-pad[data-density=dense] .game-ui-movement-pad-grid{grid-template-columns:repeat(3,40px);gap:5px}.game-ui-movement-pad[data-layout=row] .game-ui-movement-pad-grid{flex-wrap:wrap;display:flex}.game-ui-movement-button{width:48px;min-width:0;padding:0}.game-ui-movement-pad[data-density=dense] .game-ui-movement-button{width:40px;min-height:40px}.game-ui-movement-button[data-direction=forward]{grid-area:forward}.game-ui-movement-button[data-direction=left]{grid-area:left}.game-ui-movement-button[data-direction=right]{grid-area:right}.game-ui-movement-button[data-direction=backward]{grid-area:backward}.game-ui-movement-button[data-direction=reset]{grid-area:reset}.game-ui-movement-pad p{max-width:18ch;color:var(--game-ui-text-muted);font-size:var(--game-ui-font-xs);margin:0;font-weight:760;line-height:1.25}.game-ui-asset-library{min-width:0;container:game-asset-library/inline-size}.game-ui-asset-library>section{gap:12px;min-width:0;display:grid}.game-ui-asset-library-subtitle{color:var(--game-ui-text-muted);font-size:var(--game-ui-font-sm);line-height:var(--game-ui-line-body);margin:0}.game-ui-asset-library-counts,.game-ui-asset-card-badges{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.game-ui-asset-library-groups{gap:14px;min-width:0;display:grid}.game-ui-asset-library-group{gap:8px;min-width:0;display:grid}.game-ui-asset-library-group>header{justify-content:space-between;align-items:center;gap:8px;min-width:0;display:flex}.game-ui-asset-library-group>header strong{min-width:0;color:var(--game-ui-text);font-family:var(--game-ui-font-display);font-weight:var(--game-ui-weight-title);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.game-ui-asset-library-grid{grid-template-columns:repeat(auto-fill,minmax(min(var(--game-ui-asset-card-min-width,168px),100%),1fr));gap:9px;display:grid}.game-ui-asset-library [data-density=dense] .game-ui-asset-library-grid{grid-template-columns:repeat(auto-fill,minmax(min(var(--game-ui-asset-card-dense-min-width,132px),100%),1fr))}.game-ui-asset-card{box-sizing:border-box;border:1px solid color-mix(in srgb,var(--game-ui-border-ink) 16%,transparent);border-radius:var(--game-ui-radius-panel);background:color-mix(in srgb,var(--game-ui-panel-strong) 90%,transparent);width:100%;min-width:0;color:var(--game-ui-text);text-align:left;box-shadow:var(--game-ui-shadow-button);cursor:pointer;transition:transform var(--game-ui-motion-fast) var(--game-ui-ease-pop),box-shadow var(--game-ui-motion-fast) var(--game-ui-ease-soft);grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px;padding:10px;display:grid}@media(hover:hover){.game-ui-asset-card:hover{transform:translateY(-1px)}}.game-ui-asset-card:active{scale:.98}.game-ui-asset-card:focus-visible{outline:3px solid var(--game-ui-focus-ring);outline-offset:2px}.game-ui-asset-card:disabled{cursor:not-allowed;opacity:.62;transform:none}.game-ui-asset-card[aria-pressed=true]{border-color:var(--game-ui-secondary);box-shadow:var(--game-ui-shadow-button),0 0 0 3px color-mix(in srgb,var(--game-ui-secondary) 22%,transparent)}.game-ui-asset-card-preview{box-sizing:border-box;background:color-mix(in srgb,var(--game-ui-ink-deep) 7%,transparent);width:64px;height:64px;box-shadow:var(--game-ui-shadow-inset);border-radius:18px;flex:none;place-items:center;display:grid;overflow:hidden}.game-ui-asset-card-preview img{object-fit:contain;width:100%;height:100%}.game-ui-asset-card-icon{width:min(100%,var(--game-ui-asset-icon-xl));height:min(100%,var(--game-ui-asset-icon-xl))}.game-ui-asset-card-copy{gap:5px;min-width:0;display:grid}.game-ui-asset-card-copy>strong{color:var(--game-ui-text);font-size:var(--game-ui-font-sm);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.game-ui-asset-card-copy>span:not(.game-ui-asset-card-badges):not(.game-ui-asset-card-facts){color:var(--game-ui-text-muted);font-size:var(--game-ui-font-xs);line-height:1.3}.game-ui-asset-card-facts{flex-wrap:wrap;gap:5px;display:flex}.game-ui-asset-card-facts>span{background:color-mix(in srgb,var(--game-ui-ink-deep) 8%,transparent);border-radius:9px;padding:4px 6px;display:inline-grid}.game-ui-asset-card-facts small{color:var(--game-ui-text-muted);letter-spacing:.06em;text-transform:uppercase;font-size:.66rem;font-weight:820}.game-ui-asset-card-facts b{color:var(--game-ui-text);font-size:.76rem}.game-ui-asset-card[data-asset-source=generated]{border-color:color-mix(in srgb,var(--game-ui-secondary) 28%,transparent)}.game-ui-asset-card[data-asset-source=imported]{border-color:color-mix(in srgb,var(--game-ui-accent) 30%,transparent)}.game-ui-asset-card[data-asset-card-layout=rail],.game-ui-asset-library[data-card-layout=rail] .game-ui-asset-card{width:min(var(--game-ui-asset-rail-card-size,52px),100%);min-width:0;min-height:min(var(--game-ui-asset-rail-card-size,52px),100%);text-align:center;border-radius:20px;grid-template-columns:1fr;place-items:center;gap:0;padding:5px}.game-ui-asset-card[data-asset-card-layout=rail] .game-ui-asset-card-preview,.game-ui-asset-library[data-card-layout=rail] .game-ui-asset-card-preview{width:min(var(--game-ui-asset-rail-preview-size,42px),100%);height:min(var(--game-ui-asset-rail-preview-size,42px),100%);border-radius:15px;overflow:visible}.game-ui-asset-card[data-asset-card-layout=rail] .game-ui-asset-card-icon,.game-ui-asset-library[data-card-layout=rail] .game-ui-asset-card-icon{width:min(78%,var(--game-ui-asset-icon-lg));height:min(78%,var(--game-ui-asset-icon-lg))}.game-ui-asset-card[data-asset-card-layout=rail] .game-ui-asset-card-copy,.game-ui-asset-library[data-card-layout=rail] .game-ui-asset-card-copy{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.game-ui-asset-library[data-card-layout=rail]{padding:6px}.game-ui-asset-library[data-card-layout=rail]>h3,.game-ui-asset-library[data-card-layout=rail] .game-ui-asset-library-subtitle,.game-ui-asset-library[data-card-layout=rail] .game-ui-asset-library-counts,.game-ui-asset-library[data-card-layout=rail] .game-ui-asset-library-group>header{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.game-ui-asset-library[data-card-layout=rail]>section,.game-ui-asset-library[data-card-layout=rail] .game-ui-asset-library-groups,.game-ui-asset-library[data-card-layout=rail] .game-ui-asset-library-group,.game-ui-asset-library[data-card-layout=rail] .game-ui-asset-library-grid{grid-template-columns:1fr;justify-items:center;gap:8px;display:grid}@container game-asset-library (width<=180px){.game-ui-asset-library[data-card-layout=auto]{padding:6px}.game-ui-asset-library[data-card-layout=auto]>h3,.game-ui-asset-library[data-card-layout=auto] .game-ui-asset-library-subtitle,.game-ui-asset-library[data-card-layout=auto] .game-ui-asset-library-counts,.game-ui-asset-library[data-card-layout=auto] .game-ui-asset-library-group>header{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.game-ui-asset-library[data-card-layout=auto]>section,.game-ui-asset-library[data-card-layout=auto] .game-ui-asset-library-groups,.game-ui-asset-library[data-card-layout=auto] .game-ui-asset-library-group,.game-ui-asset-library[data-card-layout=auto] .game-ui-asset-library-grid{grid-template-columns:1fr;justify-items:center;gap:8px;display:grid}.game-ui-asset-library[data-card-layout=auto] .game-ui-asset-card{width:min(var(--game-ui-asset-rail-card-size,52px),100%);min-width:0;min-height:min(var(--game-ui-asset-rail-card-size,52px),100%);text-align:center;border-radius:20px;grid-template-columns:1fr;place-items:center;gap:0;padding:5px}.game-ui-asset-library[data-card-layout=auto] .game-ui-asset-card-preview{width:min(var(--game-ui-asset-rail-preview-size,42px),100%);height:min(var(--game-ui-asset-rail-preview-size,42px),100%);border-radius:15px;overflow:visible}.game-ui-asset-library[data-card-layout=auto] .game-ui-asset-card-icon{width:min(78%,var(--game-ui-asset-icon-lg));height:min(78%,var(--game-ui-asset-icon-lg))}.game-ui-asset-library[data-card-layout=auto] .game-ui-asset-card-copy{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}}.game-ui-placement-toolbar>div{gap:10px;display:grid}.game-ui-placement-toolbar .game-ui-progress{min-width:min(100%,260px)}.game-ui-placement-toolbar .game-ui-action-grid+.game-ui-action-grid{padding-top:2px}.game-ui-placement-toolbar [data-density=dense] .game-ui-fact-list{gap:6px}.game-ui-terrain-build-toolbox{min-width:0;container:game-terrain-build/inline-size}.game-ui-terrain-build-toolbox>section,.game-ui-terrain-build-toolbox-body{gap:12px;min-width:0;display:grid}.game-ui-terrain-status{border:1px solid color-mix(in srgb,var(--game-ui-border-ink) 12%,transparent);border-radius:var(--game-ui-radius-card);background:color-mix(in srgb,var(--game-ui-panel-strong) 50%,transparent);gap:6px;padding:10px;display:grid}.game-ui-terrain-status p{color:var(--game-ui-text-muted);font-size:var(--game-ui-font-sm);line-height:var(--game-ui-line-body);margin:0}.game-ui-terrain-mode-control,.game-ui-terrain-tool-strip,.game-ui-brush-controls,.game-ui-material-swatches,.game-ui-undo-redo-actions,.game-ui-build-library{min-width:0}.game-ui-terrain-build-main-grid{grid-template-columns:minmax(0,1.1fr) auto minmax(240px,.9fr);align-items:start;gap:12px;display:grid}.game-ui-terrain-mode-options,.game-ui-build-categories{flex-wrap:wrap;gap:8px;display:flex}.game-ui-terrain-mode-option,.game-ui-build-category,.game-ui-material-swatch,.game-ui-build-item{border:1px solid color-mix(in srgb,var(--game-ui-border-ink) 16%,transparent);border-radius:var(--game-ui-radius-control);background:color-mix(in srgb,var(--game-ui-panel-strong) 82%,transparent);min-width:0;color:var(--game-ui-text);font:inherit;font-weight:var(--game-ui-weight-strong);cursor:pointer;box-shadow:var(--game-ui-shadow-button)}.game-ui-terrain-mode-option{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:7px;min-height:44px;padding:6px 10px;display:inline-grid}.game-ui-terrain-mode-option>span,.game-ui-build-category>span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.game-ui-terrain-mode-option small,.game-ui-build-category small,.game-ui-material-swatch-copy small,.game-ui-build-item-copy small{color:var(--game-ui-text-muted);font-size:var(--game-ui-font-xs);font-weight:760;line-height:1.2}.game-ui-terrain-mode-option[aria-pressed=true],.game-ui-build-category[aria-selected=true],.game-ui-material-swatch[aria-selected=true],.game-ui-build-item[aria-pressed=true]{border-color:var(--game-ui-secondary);background:color-mix(in srgb,var(--game-ui-secondary) 18%,transparent);box-shadow:var(--game-ui-shadow-button),0 0 0 3px color-mix(in srgb,var(--game-ui-secondary) 20%,transparent)}.game-ui-terrain-mode-option[aria-pressed=true] small,.game-ui-build-category[aria-selected=true] small,.game-ui-material-swatch[aria-selected=true] .game-ui-material-swatch-copy small,.game-ui-build-item[aria-pressed=true] .game-ui-build-item-copy small{color:var(--game-ui-ink-heading)}.game-ui-terrain-mode-option:disabled,.game-ui-build-category:disabled,.game-ui-material-swatch:disabled,.game-ui-build-item:disabled{cursor:not-allowed;opacity:.58;transform:none}.game-ui-terrain-mode-option:focus-visible,.game-ui-build-category:focus-visible,.game-ui-material-swatch:focus-visible,.game-ui-build-item:focus-visible,.game-ui-brush-range:focus-visible,.game-ui-brush-number:focus-visible{outline:3px solid var(--game-ui-focus-ring);outline-offset:2px}.game-ui-terrain-tool-strip .game-ui-action-grid-button[aria-pressed=true]{box-shadow:var(--game-ui-shadow-button),0 0 0 3px color-mix(in srgb,var(--game-ui-secondary) 24%,transparent)}.game-ui-brush-controls{gap:10px;display:grid}.game-ui-brush-control-row{grid-template-columns:minmax(120px,1fr) var(--game-ui-brush-number-width);align-items:center;gap:8px;display:grid}.game-ui-brush-range{width:100%;accent-color:var(--game-ui-secondary)}.game-ui-brush-number{border:1px solid var(--game-ui-border-strong);background:var(--game-ui-surface-raised);width:100%;min-height:40px;color:var(--game-ui-text);font:inherit;font-weight:var(--game-ui-weight-strong);box-shadow:var(--game-ui-shadow-inset);border-radius:12px;padding:0 8px}.game-ui-material-swatch-grid{grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:8px;display:grid}.game-ui-material-swatch{grid-template-columns:var(--game-ui-terrain-swatch-size) minmax(0,1fr);text-align:left;align-items:center;gap:8px;min-height:48px;padding:7px;display:grid}.game-ui-material-swatch-chip{width:var(--game-ui-terrain-swatch-size);height:var(--game-ui-terrain-swatch-size);border:2px solid color-mix(in srgb,var(--game-ui-panel-strong) 90%,transparent);background:var(--swatch-color);box-shadow:var(--game-ui-shadow-inset),0 2px 8px color-mix(in srgb,var(--game-ui-ink-deep) 16%,transparent);border-radius:13px}.game-ui-material-swatch-chip[data-swatch-pattern=speckled]{background:radial-gradient(circle at 24% 28%,var(--swatch-secondary-color) 0 3px,transparent 3.5px),radial-gradient(circle at 70% 64%,color-mix(in srgb,var(--game-ui-panel-strong) 72%,transparent) 0 2px,transparent 2.5px),var(--swatch-color);background-size:18px 18px,16px 16px,auto}.game-ui-material-swatch-chip[data-swatch-pattern=hatched]{background:repeating-linear-gradient(135deg,var(--swatch-secondary-color) 0 3px,transparent 3px 8px),var(--swatch-color)}.game-ui-material-swatch-chip[data-swatch-pattern=grid]{background:linear-gradient(90deg,color-mix(in srgb,var(--game-ui-panel-strong) 50%,transparent) 1px,transparent 1px),linear-gradient(0deg,color-mix(in srgb,var(--game-ui-panel-strong) 42%,transparent) 1px,transparent 1px),var(--swatch-color);background-size:10px 10px}.game-ui-material-swatch-copy,.game-ui-build-item-copy{gap:2px;min-width:0;display:grid}.game-ui-material-swatch-copy strong,.game-ui-build-item-copy strong{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.game-ui-build-library>section{gap:10px;display:grid}.game-ui-build-category{text-align:left;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:7px;min-height:42px;padding:6px 9px;display:inline-grid}.game-ui-build-items{grid-template-columns:repeat(auto-fill,minmax(min(168px,100%),1fr));gap:9px;display:grid}.game-ui-build-item{text-align:left;grid-template-columns:42px minmax(0,1fr);align-items:center;gap:9px;width:100%;min-height:70px;padding:9px;display:grid}.game-ui-build-item-icon{background:color-mix(in srgb,var(--game-ui-ink-deep) 8%,transparent);width:42px;height:42px;box-shadow:var(--game-ui-shadow-inset);border-radius:14px;place-items:center;display:grid;overflow:hidden}.game-ui-build-item-preview{object-fit:contain;width:100%;height:100%}.game-ui-build-item-badges{flex-wrap:wrap;gap:5px;display:flex}.game-ui-build-item-copy>span:not(.game-ui-build-item-badges){color:var(--game-ui-text-muted);font-size:var(--game-ui-font-xs);line-height:1.25}.game-ui-compact-game-drawer{gap:8px;width:min(100%,360px);min-width:0;display:grid}.game-ui-compact-game-drawer[data-variant=small-mobile]{width:min(100%,320px)}.game-ui-compact-game-drawer-trigger{justify-self:start;max-width:100%}.game-ui-compact-game-drawer-panel{overscroll-behavior:contain;min-width:0;max-height:min(72dvh,520px);display:none;overflow:auto}.game-ui-compact-game-drawer[data-open=true] .game-ui-compact-game-drawer-panel{display:grid}.game-ui-compact-game-drawer .game-ui-panel{max-width:100%}.game-ui-terrain-build-toolbox[data-variant=dense] .game-ui-terrain-build-main-grid,.game-ui-terrain-build-toolbox-body[data-variant=dense] .game-ui-terrain-build-main-grid{grid-template-columns:minmax(0,1fr) auto}.game-ui-terrain-build-toolbox[data-variant=dense] .game-ui-brush-controls,.game-ui-terrain-build-toolbox-body[data-variant=dense] .game-ui-brush-controls{grid-column:1/-1}.game-ui-terrain-mode-control[data-variant=mobile] .game-ui-terrain-mode-options,.game-ui-terrain-mode-control[data-variant=small-mobile] .game-ui-terrain-mode-options{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.game-ui-terrain-tool-strip[data-variant=mobile] .game-ui-action-grid,.game-ui-terrain-tool-strip[data-variant=small-mobile] .game-ui-action-grid,.game-ui-undo-redo-actions .game-ui-action-grid{gap:6px}.game-ui-terrain-tool-strip[data-variant=mobile] .game-ui-action-grid .game-ui-icon-button,.game-ui-terrain-tool-strip[data-variant=small-mobile] .game-ui-action-grid .game-ui-icon-button,.game-ui-undo-redo-actions .game-ui-action-grid .game-ui-icon-button{width:var(--game-ui-terrain-tool-hit-size);min-height:var(--game-ui-terrain-tool-hit-size)}.game-ui-terrain-tool-strip[data-icon-label-mode=caption] .game-ui-action-grid .game-ui-icon-button{min-height:calc(var(--game-ui-terrain-tool-hit-size) + 14px)}.game-ui-terrain-tool-strip[data-variant=mobile] .game-ui-action-grid kbd,.game-ui-terrain-tool-strip[data-variant=small-mobile] .game-ui-action-grid kbd,.game-ui-undo-redo-actions .game-ui-action-grid kbd{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.game-ui-material-swatches[data-variant=small-mobile] .game-ui-material-swatch-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.game-ui-material-swatches[data-variant=small-mobile] .game-ui-material-swatch{grid-template-columns:30px minmax(0,1fr);min-height:44px}.game-ui-material-swatches[data-variant=small-mobile] .game-ui-material-swatch-chip{width:30px;height:30px}.game-ui-build-library[data-variant=small-mobile] .game-ui-build-categories{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.game-ui-build-items[data-card-layout=rail]{grid-template-columns:repeat(auto-fill,minmax(var(--game-ui-build-rail-card-size),1fr));justify-items:start}.game-ui-build-items[data-card-layout=rail] .game-ui-build-item{width:var(--game-ui-build-rail-card-size);min-height:var(--game-ui-build-rail-card-size);grid-template-columns:1fr;place-items:center;padding:5px}.game-ui-build-items[data-card-layout=rail] .game-ui-build-item-icon{width:42px;height:42px}.game-ui-build-items[data-card-layout=rail] .game-ui-build-item-copy{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@container game-terrain-build (width<=560px){.game-ui-terrain-build-main-grid{grid-template-columns:minmax(0,1fr)}.game-ui-undo-redo-actions{justify-self:start}.game-ui-brush-control-row{grid-template-columns:minmax(0,1fr) 70px}.game-ui-build-items{grid-template-columns:repeat(auto-fill,minmax(min(140px,100%),1fr))}}@media(prefers-reduced-motion:reduce){.game-ui-terrain-mode-option,.game-ui-build-category,.game-ui-material-swatch,.game-ui-build-item{transition:none}}@media(width<=900px){.game-ui-shell{min-height:640px}.game-ui-shell-library,.game-ui-shell-side-panel{top:auto;right:var(--game-ui-safe-right);bottom:calc(var(--game-ui-safe-bottom) + 78px);left:var(--game-ui-safe-left);width:auto;max-height:min(48dvh,320px)}.game-ui-shell-bottom-bar{left:var(--game-ui-safe-left)}.game-ui-shell-movement{bottom:calc(var(--game-ui-safe-bottom) + 86px)}.game-ui-asset-library-grid{grid-template-columns:repeat(auto-fill,minmax(136px,1fr))}}@media(width<=900px)and (height<=500px)and (orientation:landscape){.game-ui-shell{min-height:390px}.game-ui-shell-library{top:calc(var(--game-ui-safe-top) + 58px);right:var(--game-ui-safe-right);bottom:calc(var(--game-ui-safe-bottom) + 70px);width:min(300px,46vw);left:auto}.game-ui-shell-bottom-bar{left:max(132px,var(--game-ui-safe-left))}.game-ui-asset-card-preview{width:48px;height:48px}.game-ui-asset-card-copy>span:not(.game-ui-asset-card-badges):not(.game-ui-asset-card-facts),.game-ui-asset-card-facts{display:none}}.game-ui-contractor-panel{min-width:0;container:game-contractor-panel/inline-size}.game-ui-contractor-panel>section,.game-ui-contractor-panel[data-variant=mobile],.game-ui-contractor-panel[data-variant=small-mobile]{gap:12px;min-width:0;display:grid}.game-ui-contractor-panel-subtitle{color:var(--game-ui-text-muted);font-size:var(--game-ui-font-sm);line-height:var(--game-ui-line-body);margin:0}.game-ui-contractor-panel-grid{grid-template-columns:minmax(300px,.92fr) minmax(320px,1.08fr);align-items:start;gap:12px;display:grid}.game-ui-contractor-job-list,.game-ui-contractor-detail,.game-ui-compact-job-drawer-list{gap:10px;min-width:0;display:grid}.game-ui-contractor-job-list{overscroll-behavior:contain;max-height:min(68dvh,620px);padding-right:2px;overflow:auto}.game-ui-contractor-detail{border:1px solid color-mix(in srgb,var(--game-ui-border-ink) 12%,transparent);border-radius:var(--game-ui-radius-panel);background:color-mix(in srgb,var(--game-ui-panel-strong) 46%,transparent);padding:12px}.game-ui-contractor-panel[data-variant=mobile],.game-ui-contractor-panel[data-variant=small-mobile]{width:min(100%,420px)}.game-ui-construction-job-card{border:1px solid color-mix(in srgb,var(--game-ui-border-ink) 16%,transparent);border-radius:var(--game-ui-radius-panel);background:color-mix(in srgb,var(--game-ui-panel-strong) 88%,transparent);min-width:0;box-shadow:var(--game-ui-shadow-panel);gap:10px;padding:12px;display:grid}.game-ui-construction-job-card[data-selected=true]{border-color:var(--game-ui-secondary);box-shadow:var(--game-ui-shadow-panel),0 0 0 3px color-mix(in srgb,var(--game-ui-secondary) 20%,transparent)}.game-ui-construction-job-card[data-status=blocked]{border-color:color-mix(in srgb,var(--game-ui-danger) 34%,transparent)}.game-ui-construction-job-card[data-status=readyForReview]{border-color:color-mix(in srgb,var(--game-ui-success) 36%,transparent)}.game-ui-construction-job-card[data-density=dense]{gap:8px;padding:10px}.game-ui-construction-job-header{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:8px;display:grid}.game-ui-construction-job-select{min-width:0;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:9px;padding:0;display:inline-grid}.game-ui-construction-job-select:disabled{cursor:default}.game-ui-construction-job-select:focus-visible{outline:3px solid var(--game-ui-focus-ring);outline-offset:3px;border-radius:14px}.game-ui-construction-job-select span,.game-ui-robot-crew-copy{gap:2px;min-width:0;display:grid}.game-ui-construction-job-select strong,.game-ui-robot-crew-copy strong{min-width:0;color:var(--game-ui-text);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.game-ui-construction-job-select small,.game-ui-robot-crew-copy small,.game-ui-robot-crew-copy em,.game-ui-construction-steps small,.game-ui-construction-warning small,.game-ui-before-after-preview figcaption{color:var(--game-ui-text-muted);font-size:var(--game-ui-font-xs);font-style:normal;line-height:1.25}.game-ui-construction-job-badges,.game-ui-construction-approval-meta{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.game-ui-construction-job-facts{flex-wrap:wrap;gap:6px;display:flex}.game-ui-construction-job-facts>span{background:color-mix(in srgb,var(--game-ui-ink-deep) 8%,transparent);border-radius:10px;gap:1px;min-width:82px;padding:6px 8px;display:inline-grid}.game-ui-construction-job-facts small{color:var(--game-ui-text-muted);letter-spacing:.06em;text-transform:uppercase;font-size:.66rem;font-weight:860}.game-ui-construction-job-facts b{min-width:0;color:var(--game-ui-text);font-size:var(--game-ui-font-xs);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.game-ui-construction-progress{gap:8px;min-width:0;display:grid}.game-ui-construction-progress-header{justify-content:space-between;align-items:center;gap:8px;display:flex}.game-ui-construction-progress-header>span{align-items:center;gap:7px;min-width:0;display:inline-flex}.game-ui-construction-progress-header strong{min-width:0;color:var(--game-ui-text);font-size:var(--game-ui-font-sm);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.game-ui-construction-steps{gap:6px;margin:0;padding:0;list-style:none;display:grid}.game-ui-construction-steps li{background:color-mix(in srgb,var(--game-ui-ink-deep) 6%,transparent);border-radius:12px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;padding:7px 8px;display:grid}.game-ui-construction-step-dot{background:var(--game-ui-disabled);width:11px;height:11px;box-shadow:0 0 0 3px color-mix(in srgb,var(--game-ui-ink-deep) 8%,transparent);border-radius:999px}.game-ui-construction-steps li[data-step-status=active] .game-ui-construction-step-dot{background:var(--game-ui-secondary)}.game-ui-construction-steps li[data-step-status=complete] .game-ui-construction-step-dot{background:var(--game-ui-success)}.game-ui-construction-steps li[data-step-status=blocked] .game-ui-construction-step-dot{background:var(--game-ui-danger)}.game-ui-construction-steps strong{min-width:0;color:var(--game-ui-text);font-size:var(--game-ui-font-xs);text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.game-ui-construction-warnings{gap:6px;display:grid}.game-ui-construction-warning{border:1px solid color-mix(in srgb,var(--game-ui-accent) 28%,transparent);background:color-mix(in srgb,var(--game-ui-warning) 16%,transparent);border-radius:12px;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:7px;padding:8px;display:grid}.game-ui-construction-warning>span{gap:2px;min-width:0;display:grid}.game-ui-construction-warning[data-warning-tone=danger]{border-color:color-mix(in srgb,var(--game-ui-danger) 34%,transparent);background:color-mix(in srgb,var(--game-ui-danger) 13%,transparent)}.game-ui-construction-warning[data-warning-tone=success]{border-color:color-mix(in srgb,var(--game-ui-success) 34%,transparent);background:color-mix(in srgb,var(--game-ui-success-bright) 18%,transparent)}.game-ui-construction-warning strong{color:var(--game-ui-text);font-size:var(--game-ui-font-xs)}.game-ui-construction-approval-bar{border-top:1px solid color-mix(in srgb,var(--game-ui-border-ink) 10%,transparent);gap:8px;min-width:0;padding-top:8px;display:grid}.game-ui-construction-approval-bar .game-ui-action-grid{gap:7px}.game-ui-construction-approval-bar[data-variant=small-mobile] .game-ui-button{min-height:40px;font-size:var(--game-ui-font-xs);padding:0 10px}.game-ui-robot-crew-status{gap:8px;min-width:0;display:grid}.game-ui-robot-crew-status>header strong{color:var(--game-ui-text);font-family:var(--game-ui-font-display);font-weight:var(--game-ui-weight-title)}.game-ui-robot-crew-list{gap:7px;display:grid}.game-ui-robot-crew-member{background:color-mix(in srgb,var(--game-ui-ink-deep) 7%,transparent);border-radius:14px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;padding:8px;display:grid}.game-ui-robot-crew-member[data-crew-status=working]{background:color-mix(in srgb,var(--game-ui-secondary) 11%,transparent)}.game-ui-robot-crew-member[data-crew-status=blocked]{background:color-mix(in srgb,var(--game-ui-danger) 10%,transparent)}.game-ui-before-after-toggle{gap:8px;min-width:0;display:grid}.game-ui-before-after-toggle .game-ui-segmented{width:fit-content;max-width:100%}.game-ui-before-after-preview{gap:7px;min-width:0;margin:0;display:grid}.game-ui-before-after-content,.game-ui-before-after-placeholder{border:1px solid color-mix(in srgb,var(--game-ui-border-ink) 12%,transparent);border-radius:var(--game-ui-radius-panel);background:radial-gradient(circle at 50% 50%,color-mix(in srgb,var(--game-ui-success-bright) 18%,transparent),transparent 8rem),color-mix(in srgb,var(--game-ui-ink-deep) 8%,transparent);place-items:center;min-height:160px;display:grid;overflow:hidden}.game-ui-before-after-placeholder{color:var(--game-ui-text-muted)}.game-ui-compact-job-drawer .game-ui-compact-game-drawer{width:100%}.game-ui-compact-job-drawer,.game-ui-compact-job-drawer .game-ui-compact-game-drawer,.game-ui-compact-job-drawer-list,.game-ui-compact-job-drawer-list>*{box-sizing:border-box;min-width:0;max-width:100%}.game-ui-compact-job-drawer-list{max-height:min(58dvh,440px);padding:2px;overflow:auto}.game-ui-contractor-panel[data-variant=small-mobile] .game-ui-construction-job-header,.game-ui-contractor-panel[data-variant=mobile] .game-ui-construction-job-header{grid-template-columns:minmax(0,1fr)}.game-ui-contractor-panel[data-variant=small-mobile] .game-ui-construction-job-badges,.game-ui-contractor-panel[data-variant=mobile] .game-ui-construction-job-badges{justify-content:flex-start}.game-ui-contractor-panel[data-variant=small-mobile] .game-ui-construction-steps{display:none}.game-ui-contractor-panel[data-variant=small-mobile] .game-ui-before-after-content,.game-ui-contractor-panel[data-variant=small-mobile] .game-ui-before-after-placeholder{min-height:118px}@container game-contractor-panel (width<=760px){.game-ui-contractor-panel-grid{grid-template-columns:minmax(0,1fr)}.game-ui-contractor-job-list{max-height:none;padding-right:0;overflow:visible}.game-ui-contractor-detail{padding:10px}}@media(width<=900px){.game-ui-contractor-panel-grid{grid-template-columns:minmax(0,1fr)}.game-ui-construction-job-facts>span{min-width:min(108px,100%)}}@media(prefers-reduced-motion:reduce){.game-ui-button:hover,.game-ui-icon-button:hover,.game-ui-language-trigger:hover,.game-ui-language-popover button:hover,.game-ui-stage-tile:hover,.game-ui-orientation-card button:hover,.game-ui-asset-card:hover{transform:none}}.game-ui-button:focus-visible,.game-ui-icon-button:focus-visible,.game-ui-tab:focus-visible,.game-ui-segmented-option:focus-visible,.game-ui-toggle:focus-visible,.game-ui-language-trigger:focus-visible,.game-ui-language-popover button:focus-visible,.game-ui-stage-tile:focus-visible,.game-ui-orientation-card button:focus-visible,.game-ui-collapsible-toggle:focus-visible,.game-ui-construction-job-select:focus-visible,.game-ui-radial-item:focus-visible{outline:3px solid var(--game-ui-focus-ring);outline-offset:2px}.game-ui-window-body,.game-ui-contractor-job-list,.game-ui-compact-job-drawer-list,.game-ui-compact-game-drawer-panel,.game-ui-shell-library,.game-ui-shell-side-panel,.game-ui-modal-frame{scrollbar-width:thin;scrollbar-color:var(--game-ui-border-strong) transparent}.game-ui-panel ::selection,.game-ui-modal-frame ::selection,.game-ui-window ::selection,.game-ui-collapsible ::selection,.game-ui-dialog ::selection{background:color-mix(in srgb,var(--game-ui-accent) 28%,transparent)}@media(forced-colors:active){.game-ui-button,.game-ui-icon-button,.game-ui-tab,.game-ui-segmented-option,.game-ui-toggle,.game-ui-radial-item,.game-ui-input,.game-ui-textarea,.game-ui-asset-card,.game-ui-terrain-mode-option,.game-ui-build-category,.game-ui-material-swatch,.game-ui-build-item,.game-ui-construction-job-select,.game-ui-checkbox-box{border:1px solid buttontext}.game-ui-button:focus-visible,.game-ui-icon-button:focus-visible,.game-ui-tab:focus-visible,.game-ui-segmented-option:focus-visible,.game-ui-toggle:focus-visible,.game-ui-language-trigger:focus-visible,.game-ui-language-popover button:focus-visible,.game-ui-stage-tile:focus-visible,.game-ui-orientation-card button:focus-visible,.game-ui-collapsible-toggle:focus-visible,.game-ui-construction-job-select:focus-visible,.game-ui-radial-item:focus-visible,.game-ui-input:focus-visible,.game-ui-asset-card:focus-visible{outline-color:highlight}.game-ui-tab[aria-selected=true],.game-ui-segmented-option[aria-pressed=true],.game-ui-asset-card[aria-pressed=true],.game-ui-terrain-mode-option[aria-pressed=true],.game-ui-build-category[aria-selected=true],.game-ui-material-swatch[aria-selected=true],.game-ui-build-item[aria-pressed=true]{border-color:highlight}.game-ui-checkbox-input:checked+.game-ui-checkbox-box{background:highlight;border-color:highlight}}.game-ui-button,.game-ui-icon-button,.game-ui-tab,.game-ui-segmented-option,.game-ui-toggle,.game-ui-language-trigger,.game-ui-language-popover button,.game-ui-stage-tile,.game-ui-orientation-card button,.game-ui-collapsible-toggle,.game-ui-window-button,.game-ui-movement-button,.game-ui-asset-card,.game-ui-terrain-mode-option,.game-ui-build-category,.game-ui-material-swatch,.game-ui-build-item,.game-ui-brush-range,.game-ui-construction-job-select,.game-ui-checkbox,.game-ui-card-fan-card,.game-ui-radial-item{touch-action:manipulation;-webkit-tap-highlight-color:transparent}.game-ui-movement-pad,.game-ui-placement-toolbar,.game-ui-terrain-tool-strip,.game-ui-hud,.game-ui-hud-actions,.swimmer-first-session-controls{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.game-ui-collapsible{border:var(--game-ui-stroke);border-radius:var(--game-ui-radius-panel);background:var(--game-ui-panel);min-width:0;box-shadow:var(--game-ui-shadow-panel);display:grid}.game-ui-collapsible[data-panel-tone=strong]{background:var(--game-ui-panel-strong)}.game-ui-collapsible-header{align-items:center;gap:8px;padding:5px 8px 5px 5px;display:flex}.game-ui-collapsible-heading{flex:1;min-width:0;margin:0;display:flex}.game-ui-collapsible-toggle{border-radius:var(--game-ui-radius-card);min-width:0;min-height:44px;color:var(--game-ui-text);font:inherit;font-family:var(--game-ui-font-display);font-weight:var(--game-ui-weight-title);text-align:left;cursor:pointer;background:0 0;border:0;flex:1;align-items:center;gap:10px;padding:4px 10px;display:flex}@media(hover:hover){.game-ui-collapsible-toggle:hover{background:color-mix(in srgb,var(--game-ui-ink-deep) 6%,transparent)}}.game-ui-collapsible-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.game-ui-collapsible-chevron{border-right:3px solid var(--game-ui-accent);border-bottom:3px solid var(--game-ui-accent);width:9px;height:9px;transition:transform var(--game-ui-motion-base) var(--game-ui-ease-pop),margin-top var(--game-ui-motion-base) var(--game-ui-ease-pop);border-radius:1px;flex:none;margin-top:-4px;transform:rotate(45deg)}.game-ui-collapsible[data-open=false] .game-ui-collapsible-chevron{margin-top:2px;transform:rotate(-45deg)}.game-ui-collapsible-actions{flex:none;align-items:center;gap:6px;display:inline-flex}.game-ui-collapsible-region{transition:grid-template-rows var(--game-ui-motion-base) var(--game-ui-ease-soft);grid-template-rows:1fr;display:grid}.game-ui-collapsible[data-open=false] .game-ui-collapsible-region{grid-template-rows:0fr}.game-ui-collapsible-clip{min-height:0;overflow:hidden}.game-ui-collapsible-content{gap:12px;padding:2px 14px 14px;display:grid}.game-ui-window{border:var(--game-ui-stroke);border-radius:var(--game-ui-radius-panel);background:var(--game-ui-panel);width:min(420px,100%);min-width:0;box-shadow:var(--game-ui-shadow-panel);interpolate-size:allow-keywords;transition:width var(--game-ui-motion-base) var(--game-ui-ease-soft),border-radius var(--game-ui-motion-base) var(--game-ui-ease-soft),box-shadow var(--game-ui-motion-base) var(--game-ui-ease-soft);grid-template-rows:auto 1fr;display:grid;position:relative;overflow:hidden}.game-ui-window-titlebar{border-bottom:var(--game-ui-stroke);background:color-mix(in srgb,var(--game-ui-ink-deep) 5%,transparent);align-items:center;gap:8px;min-height:48px;padding:6px 8px 6px 14px;display:flex}.game-ui-window-icon{flex:none;place-items:center;display:inline-grid}.game-ui-window-title{min-width:0;color:var(--game-ui-text);font-family:var(--game-ui-font-display);font-size:var(--game-ui-font-md);font-weight:var(--game-ui-weight-title);text-overflow:ellipsis;white-space:nowrap;flex:1;margin:0;overflow:hidden}.game-ui-window-actions{flex:none;align-items:center;gap:6px;display:inline-flex}.game-ui-window-button{width:34px;min-width:34px;min-height:34px;padding:0}.game-ui-window-region{min-height:0;transition:grid-template-rows var(--game-ui-motion-base) var(--game-ui-ease-soft);grid-template-rows:1fr;display:grid}.game-ui-window-clip{min-height:0;display:grid;overflow:hidden}.game-ui-window-body{overscroll-behavior:contain;min-height:0;padding:12px 14px;overflow:auto}.game-ui-window-footer{border-top:var(--game-ui-stroke);flex-wrap:wrap;justify-content:flex-end;gap:8px;padding:10px 14px;display:flex}.game-ui-window[data-window-state=minimized]{border-radius:var(--game-ui-radius-control);width:fit-content;max-width:100%}.game-ui-window[data-window-state=minimized] .game-ui-window-region{grid-template-rows:0fr}.game-ui-window[data-window-state=minimized] .game-ui-window-titlebar{background:0 0;border-bottom-color:#0000}.game-ui-window[data-window-state=maximized]{inset:var(--game-ui-safe-top) var(--game-ui-safe-right) var(--game-ui-safe-bottom) var(--game-ui-safe-left);z-index:var(--game-ui-z-overlay);width:auto;animation:game-ui-pop var(--game-ui-motion-base) var(--game-ui-ease-pop) both;position:absolute}.game-ui-window[data-window-state=maximized] .game-ui-window-body{max-height:none}.game-ui-modal{background:0 0;border:0;max-width:min(560px,100vw - 32px);margin:auto;padding:0;overflow:visible}.game-ui-modal[data-size=sm]{max-width:min(380px,100vw - 32px)}.game-ui-modal[data-size=lg]{max-width:min(780px,100vw - 32px)}.game-ui-modal::backdrop{background:var(--game-ui-scrim-strong);backdrop-filter:blur(8px)}.game-ui-modal-frame{overscroll-behavior:contain;border:var(--game-ui-stroke);border-radius:var(--game-ui-radius-modal);background:var(--game-ui-panel-strong);max-height:min(82dvh,720px);color:var(--game-ui-text);box-shadow:var(--game-ui-shadow-modal);gap:12px;padding:clamp(16px,2.5vw,24px);display:grid;overflow:auto}.game-ui-modal[open] .game-ui-modal-frame{animation:game-ui-pop var(--game-ui-motion-base) var(--game-ui-ease-pop) both}.game-ui-modal-header{align-items:center;gap:10px;display:flex}.game-ui-modal-title{min-width:0;color:var(--game-ui-ink-heading);font-family:var(--game-ui-font-display);font-weight:var(--game-ui-weight-title);flex:1;margin:0}.game-ui-modal-body{min-width:0;color:var(--game-ui-text)}.game-ui-modal-footer{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.game-ui-modal[data-position=bottom]{max-width:min(560px,100vw);margin:auto auto 0}.game-ui-modal[data-position=bottom][data-size=sm]{max-width:min(380px,100vw)}.game-ui-modal[data-position=bottom][data-size=lg]{max-width:min(780px,100vw)}.game-ui-modal[data-position=bottom] .game-ui-modal-frame{border-radius:var(--game-ui-radius-modal) var(--game-ui-radius-modal) 0 0;padding-bottom:max(clamp(16px,2.5vw,24px),var(--game-ui-safe-bottom))}.game-ui-modal[data-position=bottom][open] .game-ui-modal-frame{animation:game-ui-rise-sheet var(--game-ui-motion-base) var(--game-ui-ease-soft) both}@keyframes game-ui-rise-sheet{0%{opacity:0;transform:translateY(32px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.game-ui-collapsible-region,.game-ui-collapsible-chevron,.game-ui-window,.game-ui-window-region{transition:none}.game-ui-window[data-window-state=maximized],.game-ui-modal[open] .game-ui-modal-frame,.game-ui-modal[data-position=bottom][open] .game-ui-modal-frame{animation:none}}.game-ui-callout{border:var(--game-ui-stroke);border-radius:var(--game-ui-radius-panel);background:color-mix(in srgb,var(--game-ui-panel-strong) 88%,transparent);color:var(--game-ui-text);box-shadow:var(--game-ui-shadow-panel);gap:.35rem;margin:0;padding:.65rem .75rem;display:grid}.game-ui-callout-title{color:var(--game-ui-ink-heading);font-family:var(--game-ui-font-display);font-size:var(--game-ui-font-md);font-weight:var(--game-ui-weight-title);margin:0}.game-ui-callout-body{color:var(--game-ui-text-muted);font-size:var(--game-ui-font-sm,.85rem);line-height:var(--game-ui-line-body);margin:0}.game-ui-callout--info{border-color:color-mix(in srgb,var(--game-ui-accent) 45%,transparent)}.game-ui-callout--warning{border-color:color-mix(in srgb,var(--game-ui-warning) 55%,transparent);background:color-mix(in srgb,var(--game-ui-warning) 12%,var(--game-ui-panel-strong))}.game-ui-callout--danger{border-color:color-mix(in srgb,var(--game-ui-danger) 55%,transparent)}.game-ui-callout--success{border-color:color-mix(in srgb,var(--game-ui-success) 55%,transparent)}.game-ui-callout--neutral{opacity:.96}.game-ui-button{min-height:max(2.4rem,40px)}@media(pointer:coarse){.game-ui-button{min-height:max(2.75rem,44px)}}}:root{color-scheme:light;--dashboard-bg: #f1f4ec;--dashboard-ink: #17231b;--dashboard-muted: #5f6e63;--dashboard-line: rgba(23, 35, 27, .14)}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 10% 0%,#fff8c9 0,transparent 32%),var(--dashboard-bg);color:var(--dashboard-ink);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}button,input{font:inherit}.dashboard-shell{width:min(1440px,100%);margin:0 auto;padding:38px 24px 72px}.hero{display:flex;justify-content:space-between;gap:32px;align-items:flex-end}.eyebrow{margin:0;color:var(--dashboard-muted);font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}h1{max-width:850px;margin:8px 0 12px;font-size:clamp(38px,6vw,78px);line-height:.96;letter-spacing:-.055em}.lede{max-width:780px;margin:0;color:var(--dashboard-muted);font-size:17px}.hero-meta{display:flex;min-width:max-content;flex-direction:column;gap:10px;align-items:flex-end;color:var(--dashboard-muted);font-size:12px}.tab-strip{position:sticky;z-index:10;top:10px;width:fit-content;max-width:100%;margin:30px 0 14px;padding:8px;overflow-x:auto;border:1px solid var(--dashboard-line);border-radius:999px;background:color-mix(in srgb,var(--dashboard-bg) 88%,transparent);box-shadow:0 12px 28px #17231b14;backdrop-filter:blur(12px)}.tab-strip .game-ui-tabs{min-width:max-content}.stack,.repository-list{display:grid;gap:16px}.glossary{margin:0 0 20px;padding:12px 16px;border:1px solid var(--dashboard-line);border-radius:18px;background:#ffffff9e}.glossary>summary{width:fit-content}.glossary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:14px}.glossary-grid>div{display:grid;gap:4px;padding:12px;border-radius:14px;background:#ffffffb8}.glossary-grid span{color:var(--dashboard-muted);font-size:13px;line-height:1.55}.page-guide{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;padding:14px 16px;border:1px solid var(--dashboard-line);border-radius:18px;background:#ffffff94;color:var(--dashboard-muted)}.page-guide>span{max-width:900px;line-height:1.55}.page-guide details{min-width:110px;margin:0;padding:0;border:0;color:var(--dashboard-ink)}.page-guide details>div{min-width:min(520px,70vw);padding-top:8px}.page-guide p{margin:8px 0 0;color:var(--dashboard-muted);font-size:13px;line-height:1.55}.metric-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.metric-card{display:grid;gap:12px}.metric-card>strong{font-size:52px;line-height:1}.two-column{display:grid;grid-template-columns:1.4fr 1fr;gap:16px}.action-list{display:grid;gap:10px;padding:0;list-style:none}.action-list li{display:grid;grid-template-columns:minmax(100px,.3fr) 1fr;gap:10px;padding-bottom:10px;border-bottom:1px solid var(--dashboard-line)}.filters{display:flex;gap:12px;align-items:center}.filters .game-ui-input{flex:1}.filter-buttons{display:flex;gap:6px;flex-wrap:wrap}.filter-buttons button{padding:10px 14px;border:1px solid var(--dashboard-line);border-radius:999px;background:#ffffffbf;color:var(--dashboard-ink);cursor:pointer}.filter-buttons button[aria-pressed=true]{background:var(--dashboard-ink);color:#fff}.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.project-card{min-width:0}.card-heading{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.card-heading h2{margin:2px 0;font-size:24px}.card-heading small{color:var(--dashboard-muted);font-weight:800}.card-heading code{display:block;max-width:560px;overflow:hidden;color:var(--dashboard-muted);font-size:11px;text-overflow:ellipsis}.fact-grid,.lifecycle-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:16px}.lifecycle-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.fact{min-width:0;padding:12px;border:1px solid var(--dashboard-line);border-radius:14px;background:#ffffffad}.fact b,.fact span{display:block}.fact b{margin-bottom:5px;color:var(--dashboard-muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em}.fact span{overflow-wrap:anywhere}.technology-matrix{display:grid;gap:8px;margin-top:16px;overflow-x:auto}.technology-matrix-header,.technology-matrix-row{display:grid;grid-template-columns:minmax(150px,.8fr) minmax(190px,1fr) minmax(360px,2fr) minmax(120px,.6fr);gap:12px;align-items:start;min-width:820px}.technology-matrix-header{padding:0 12px 4px;color:var(--dashboard-muted);font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.technology-matrix-row{padding:12px;border:1px solid var(--dashboard-line);border-radius:14px;background:#ffffffad}.technology-matrix-row>div{min-width:0;overflow-wrap:anywhere}.technology-matrix-row small,.technology-projects{display:block;color:var(--dashboard-muted);font-size:12px;line-height:1.5}.technology-matrix-row small{margin-top:4px}.technology-projects{display:grid;gap:4px}details{margin-top:16px;border-top:1px solid var(--dashboard-line);padding-top:12px}summary{cursor:pointer;font-weight:800}.hint,.privacy-note{color:var(--dashboard-muted)}.boundary-grid{grid-template-columns:1fr 1fr;margin-top:16px}.boundary-grid>div{padding:14px 16px;border:1px solid var(--dashboard-line);border-radius:14px;background:#ffffff8a}.boundary-grid h3{margin:0 0 8px;font-size:14px}.boundary-grid ul{margin-bottom:0;padding-left:20px}.privacy-note{display:grid;grid-template-columns:max-content 1fr;gap:12px;margin-top:28px;padding:16px 18px;border-left:4px solid var(--dashboard-ink);background:#ffffffb8}noscript{display:block;padding:24px}@media(max-width:980px){.hero{display:block}.hero-meta{margin-top:18px;align-items:flex-start}.metric-grid,.project-grid,.two-column{grid-template-columns:1fr}.fact-grid,.lifecycle-grid,.glossary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:620px){.dashboard-shell{padding:26px 14px 56px}.filters{align-items:stretch;flex-direction:column}.fact-grid,.lifecycle-grid,.glossary-grid{grid-template-columns:1fr}.page-guide{display:grid}.page-guide details>div{min-width:0}.privacy-note{grid-template-columns:1fr}}.host-shell{--host-accent: #314d3a}.host-hero{padding-bottom:4px}.boundary-note{display:flex;gap:12px;align-items:flex-start;margin:0 0 20px;padding:12px 16px;border:1px solid var(--dashboard-line);border-radius:18px;background:#ffffff9e;color:var(--dashboard-muted)}.boundary-note b{min-width:max-content;color:var(--dashboard-ink)}.host-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}.host-metrics .metric-card>strong{font-size:clamp(34px,4vw,52px)}.metric-label{color:var(--dashboard-muted);font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.host-overview-grid{grid-template-columns:1.2fr 1fr}.rank-list,.priority-list,.finding-list{display:grid;gap:12px}.rank-item{display:grid;grid-template-columns:minmax(0,1fr) max-content;gap:9px 16px;padding-bottom:14px;border-bottom:1px solid var(--dashboard-line)}.rank-item:last-child{padding-bottom:0;border-bottom:0}.rank-item>div{min-width:0}.rank-item b,.rank-item span{display:block}.rank-item span{overflow:hidden;color:var(--dashboard-muted);font-size:12px;text-overflow:ellipsis}.rank-item>strong{font-size:17px}.rank-item .game-ui-progress{grid-column:1 / -1}.priority-list{margin:0;padding:0;counter-reset:priority;list-style:none}.priority-list li{display:grid;grid-template-columns:minmax(0,1fr) max-content;gap:12px;padding-bottom:12px;border-bottom:1px solid var(--dashboard-line)}.priority-list .game-ui-badge{align-self:start}.priority-list li:last-child{padding-bottom:0;border-bottom:0}.priority-list b,.priority-list span{display:block}.priority-list span{margin-top:4px;color:var(--dashboard-muted);font-size:13px;line-height:1.5}.root-grid,.protection-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.root-card{min-width:0}.root-size{display:block;margin:24px 0 12px;font-size:clamp(34px,5vw,58px);letter-spacing:-.04em}.root-card .hint{min-height:42px;margin-bottom:0;line-height:1.55}.finding-heading{display:flex;justify-content:space-between;gap:24px;align-items:flex-start}.finding-heading h2{margin:10px 0 0;font-size:26px}.finding-heading>strong{font-size:28px;letter-spacing:-.03em}.finding-card>p{max-width:920px;color:var(--dashboard-muted);line-height:1.65}.badge-row{display:flex;gap:7px;flex-wrap:wrap}.command-chip,.schedule-command code{display:block;width:fit-content;max-width:100%;padding:10px 12px;overflow-x:auto;border:1px solid var(--dashboard-line);border-radius:10px;background:#17231b0f;color:var(--dashboard-ink)}.path-list{display:grid;gap:6px;margin-bottom:0;padding-left:20px;color:var(--dashboard-muted)}.path-list code{overflow-wrap:anywhere}.protection-card h2{margin:16px 0 8px}.protection-card p{color:var(--dashboard-muted);line-height:1.6}.schedule-facts{grid-template-columns:repeat(2,minmax(0,1fr))}.schedule-copy{margin-top:0;color:var(--dashboard-muted);line-height:1.7}.schedule-command{display:grid;gap:9px;margin-top:20px}@media(max-width:1100px){.host-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.host-overview-grid{grid-template-columns:1fr}}@media(max-width:720px){.host-metrics,.root-grid,.protection-grid,.schedule-facts{grid-template-columns:1fr}.finding-heading,.boundary-note{display:grid}}
|