@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.
Files changed (27) hide show
  1. package/README.md +15 -11
  2. package/assets/docs/reference/adoption/adoption-playbook.md +8 -8
  3. package/assets/docs/reference/adoption/migration-v1.0.md +9 -4
  4. package/assets/docs/reference/adoption/recommended-agent-tooling.md +32 -5
  5. package/assets/host-dashboard/app.css +1 -0
  6. package/assets/host-dashboard/app.js +66 -0
  7. package/assets/host-dashboard/index.html +16 -0
  8. package/assets/integrations/.gitkeep +1 -0
  9. package/assets/portfolio-dashboard/app.js +4 -4
  10. package/assets/profiles/engineering-runtime/manifest.yml +0 -2
  11. package/assets/profiles/engineering-runtime/profile.md +5 -4
  12. package/assets/public-agent-assets/bundles/base-governance.json +1 -2
  13. package/assets/public-agent-assets/registry.json +3 -36
  14. package/assets/public-agent-assets/skills/pie-skills/beginner-friendly-docs/SKILL.md +2 -4
  15. package/assets/starter/.github/workflows/docs-check.yml +11 -1
  16. package/assets/starter/docs/governance/agents-routing/engineering-runtime-v1.1.md +19 -1
  17. package/assets/starter/docs/governance/boundary.md +3 -4
  18. package/assets/starter/docs/governance/doc-agent-rules.md +2 -2
  19. package/assets/starter/docs/governance/doc-types.md +2 -2
  20. package/assets/starter/docs/governance/ssot-v1.1.md +3 -5
  21. package/assets/starter/docs/governance/templates/adr.md +24 -2
  22. package/assets/starter/docs/reference/documentation-map.md +1 -1
  23. package/cli-guide.md +16 -3
  24. package/dist/cli.js +4735 -3228
  25. package/package.json +2 -2
  26. package/assets/integrations/mattpocock-skills.md +0 -42
  27. 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
- - optional Matt skills trigger only when their narrow descriptions match;
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 a privacy-preserving HTML/JSON map of entry, user/project AI Host SSOT, exact technology-version, four verification-gate, redundancy/cache, 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 |
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. Matt
144
- Pocock's skills may be exposed as an optional unchanged library; each skill
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, use the small `capture-learning` skill only when the result
154
- will help future work. It calls `pro-gov learn capture` and writes a compact
155
- `docs/reference/learnings/**` record. PGS does not install Stop/SubagentStop reminder
156
- hooks or require a completion ceremony.
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 Matt skills remain trigger-based, and how the small
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. Matt Pocock's skills remain available as a
207
- lightweight library and trigger only when their narrow descriptions match; they
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, use `capture-learning` only when the result is genuinely
218
- reusable. The skill calls `pro-gov learn capture`; no exit hook or completion
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-12
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 Matt's `NNNN-slug.md` form where practical.
31
- 3. Preserve useful existing frontmatter; Matt can read richer ADRs, but new ADRs
32
- may stay as short as a heading plus one decision paragraph.
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
- | mattpocock/skills | available | Optional specialist toolbox; no bootstrap or workflow owner |
32
- | `capture-learning` | available | Save a verified reusable lesson after completed work |
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` first checks for an existing lesson and
44
- then calls this only when a new reusable lesson exists:
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}}