sh3-server 0.19.1 → 0.19.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/app/index.html CHANGED
@@ -5,8 +5,8 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
6
6
  <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
7
7
  <title>SH3</title>
8
- <script type="module" crossorigin src="/assets/index-BhAscAtX.js"></script>
9
- <link rel="stylesheet" crossorigin href="/assets/index-BAOxUjcN.css">
8
+ <script type="module" crossorigin src="/assets/index-CygVqZor.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/assets/index-BUPUvuOA.css">
10
10
  </head>
11
11
  <body>
12
12
  <div id="app"></div>
package/dist/auth.js CHANGED
@@ -19,7 +19,7 @@ function extractApiKey(c) {
19
19
  return null;
20
20
  return auth.slice('Bearer '.length);
21
21
  }
22
- /** Extract session token from cookie or Authorization header. */
22
+ /** Extract session token from cookie, Authorization header, or query param. */
23
23
  function extractSessionToken(c) {
24
24
  // Cookie first
25
25
  const cookie = c.req.raw.headers.get('cookie');
@@ -32,6 +32,13 @@ function extractSessionToken(c) {
32
32
  const auth = c.req.header('Authorization');
33
33
  if (auth?.startsWith('Bearer sh3s_'))
34
34
  return auth.slice(7);
35
+ // Fallback to query param for EventSource (cannot send custom headers).
36
+ // Only accepted on GET requests; validated by sh3s_ prefix.
37
+ if (c.req.method === 'GET') {
38
+ const qt = c.req.query('token');
39
+ if (qt?.startsWith('sh3s_'))
40
+ return qt;
41
+ }
35
42
  return null;
36
43
  }
37
44
  /**
package/dist/packages.js CHANGED
@@ -3,6 +3,7 @@
3
3
  import { Hono } from 'hono';
4
4
  import { readdirSync, readFileSync, existsSync, mkdirSync, writeFileSync, rmSync, statSync } from 'node:fs';
5
5
  import { join, resolve } from 'node:path';
6
+ import { checkFetch } from 'sh3-validate';
6
7
  // ---------------------------------------------------------------------------
7
8
  // Helpers
8
9
  // ---------------------------------------------------------------------------
@@ -283,10 +284,15 @@ export function createPackageManagementRoutes(shardRouter, dataDir, keys, settin
283
284
  // Write manifest
284
285
  writeFileSync(join(pkgDir, 'manifest.json'), JSON.stringify(manifest, null, 2));
285
286
  // Write optional client bundle
287
+ const warnings = [];
286
288
  const clientFile = form.get('client');
287
289
  if (clientFile instanceof File) {
288
290
  const buf = Buffer.from(await clientFile.arrayBuffer());
289
291
  writeFileSync(join(pkgDir, 'client.js'), buf);
292
+ const bundleText = buf.toString('utf-8');
293
+ for (const d of checkFetch(bundleText)) {
294
+ warnings.push({ level: 'warn', message: d.message });
295
+ }
290
296
  }
291
297
  // Write optional server bundle
292
298
  const serverFile = form.get('server');
@@ -311,7 +317,7 @@ export function createPackageManagementRoutes(shardRouter, dataDir, keys, settin
311
317
  return c.json({ error: `Server bundle failed to load: ${message}` }, 422);
312
318
  }
313
319
  }
314
- return c.json({ ok: true, id });
320
+ return c.json({ ok: true, id, warnings });
315
321
  });
316
322
  router.post('/uninstall', async (c) => {
317
323
  const body = await c.req.json();
@@ -58,21 +58,35 @@ export declare class ShardRouter {
58
58
  private shards;
59
59
  /**
60
60
  * Import a server.js bundle and mount its routes.
61
+ *
62
+ * `packageId` is the package directory / manifest id (what install/uninstall
63
+ * passes in). The route prefix and registry key come from `shard.id` inside
64
+ * the imported bundle — for pure shards these match, but combo bundles have
65
+ * `manifest.id` = App id while `shard.id` is the shard half, and the shard's
66
+ * client URLs are built from `shard.id`.
67
+ *
61
68
  * Throws on import failure — caller is responsible for rollback.
62
69
  */
63
- mount(shardId: string, serverJsPath: string, ctx: MountContext): Promise<void>;
70
+ mount(packageId: string, serverJsPath: string, ctx: MountContext): Promise<void>;
64
71
  /**
65
72
  * Mount a shard server module that is already imported (e.g. a framework
66
73
  * built-in bundled with sh3-server, not discovered from the package store).
67
74
  * Skips the `import()` call and goes straight to `routes()` wiring.
75
+ *
76
+ * Same packageId-vs-shard.id semantics as `mount()`: `packageId` is the
77
+ * install id, but routes mount under `mod.id` so client URLs reach them.
68
78
  */
69
- mountStatic(shardId: string, mod: {
79
+ mountStatic(packageId: string, mod: {
70
80
  id: string;
71
81
  routes: (router: Hono, ctx: any) => void | Promise<void>;
72
82
  teardown?: () => void | Promise<void>;
73
83
  }, ctx: MountContext): Promise<void>;
74
- /** Remove a shard's routes. Calls `teardown()` if the shard defined one. */
75
- unmount(shardId: string): Promise<boolean>;
84
+ /**
85
+ * Remove a shard's routes. Accepts either the package id (what the install
86
+ * path stores on disk) or the shard's own id, so callers don't need to know
87
+ * which form they hold. Calls `teardown()` if the shard defined one.
88
+ */
89
+ unmount(id: string): Promise<boolean>;
76
90
  /** Call teardown on every mounted shard without clearing the registry. */
77
91
  unmountAll(): Promise<void>;
78
92
  /**
@@ -85,6 +99,9 @@ export declare class ShardRouter {
85
99
  method: string;
86
100
  path: string;
87
101
  }>;
88
- /** Check if a shard is currently mounted. */
89
- has(shardId: string): boolean;
102
+ /**
103
+ * Check if a shard is currently mounted. Accepts either the package id or
104
+ * the shard's own id (combo bundles have these diverge).
105
+ */
106
+ has(id: string): boolean;
90
107
  }
@@ -98,37 +98,49 @@ export class ShardRouter {
98
98
  shards = new Map();
99
99
  /**
100
100
  * Import a server.js bundle and mount its routes.
101
+ *
102
+ * `packageId` is the package directory / manifest id (what install/uninstall
103
+ * passes in). The route prefix and registry key come from `shard.id` inside
104
+ * the imported bundle — for pure shards these match, but combo bundles have
105
+ * `manifest.id` = App id while `shard.id` is the shard half, and the shard's
106
+ * client URLs are built from `shard.id`.
107
+ *
101
108
  * Throws on import failure — caller is responsible for rollback.
102
109
  */
103
- async mount(shardId, serverJsPath, ctx) {
110
+ async mount(packageId, serverJsPath, ctx) {
104
111
  const fileUrl = pathToFileURL(serverJsPath).href + `?t=${Date.now()}`;
105
112
  const mod = await import(fileUrl);
106
113
  const shard = (mod.default ?? mod);
107
114
  if (typeof shard.id !== 'string' || typeof shard.routes !== 'function') {
108
- throw new Error(`${shardId}/server.js invalid export shape — expected { id, routes }`);
115
+ throw new Error(`${packageId}/server.js invalid export shape — expected { id, routes }`);
109
116
  }
110
117
  const router = new Hono();
111
118
  router.use('*', contextBootstrap());
112
119
  await shard.routes(router, this.#buildContext(shard.id, ctx));
113
120
  mkdirSync(join(ctx.pkgDir, 'data'), { recursive: true });
114
- this.shards.set(shardId, { app: router, shard });
115
- console.log(`[sh3] ${shardId} server routes mounted at /api/${shardId}/`);
121
+ this.shards.set(shard.id, { app: router, shard, packageId });
122
+ const label = packageId === shard.id ? packageId : `${packageId} (shard: ${shard.id})`;
123
+ console.log(`[sh3] ${label} — server routes mounted at /api/${shard.id}/`);
116
124
  }
117
125
  /**
118
126
  * Mount a shard server module that is already imported (e.g. a framework
119
127
  * built-in bundled with sh3-server, not discovered from the package store).
120
128
  * Skips the `import()` call and goes straight to `routes()` wiring.
129
+ *
130
+ * Same packageId-vs-shard.id semantics as `mount()`: `packageId` is the
131
+ * install id, but routes mount under `mod.id` so client URLs reach them.
121
132
  */
122
- async mountStatic(shardId, mod, ctx) {
133
+ async mountStatic(packageId, mod, ctx) {
123
134
  if (typeof mod.id !== 'string' || typeof mod.routes !== 'function') {
124
- throw new Error(`${shardId} static mount — expected { id, routes }, got ${typeof mod}`);
135
+ throw new Error(`${packageId} static mount — expected { id, routes }, got ${typeof mod}`);
125
136
  }
126
137
  const router = new Hono();
127
138
  router.use('*', contextBootstrap());
128
139
  await mod.routes(router, this.#buildContext(mod.id, ctx));
129
140
  mkdirSync(join(ctx.pkgDir, 'data'), { recursive: true });
130
- this.shards.set(shardId, { app: router, shard: mod });
131
- console.log(`[sh3] ${shardId} static server routes mounted at /api/${shardId}/`);
141
+ this.shards.set(mod.id, { app: router, shard: mod, packageId });
142
+ const label = packageId === mod.id ? packageId : `${packageId} (shard: ${mod.id})`;
143
+ console.log(`[sh3] ${label} — static server routes mounted at /api/${mod.id}/`);
132
144
  }
133
145
  #buildContext(shardId, ctx) {
134
146
  const shardDataDir = join(ctx.pkgDir, 'data');
@@ -163,21 +175,37 @@ export class ShardRouter {
163
175
  };
164
176
  return ctxOut;
165
177
  }
166
- /** Remove a shard's routes. Calls `teardown()` if the shard defined one. */
167
- async unmount(shardId) {
168
- const entry = this.shards.get(shardId);
178
+ /**
179
+ * Remove a shard's routes. Accepts either the package id (what the install
180
+ * path stores on disk) or the shard's own id, so callers don't need to know
181
+ * which form they hold. Calls `teardown()` if the shard defined one.
182
+ */
183
+ async unmount(id) {
184
+ const entry = this.#findEntry(id);
169
185
  if (!entry)
170
186
  return false;
187
+ const { key, value } = entry;
171
188
  try {
172
- await entry.shard.teardown?.();
189
+ await value.shard.teardown?.();
173
190
  }
174
191
  catch (err) {
175
- console.error(`[sh3] teardown failed for shard "${shardId}":`, err);
192
+ console.error(`[sh3] teardown failed for shard "${key}":`, err);
176
193
  }
177
- this.shards.delete(shardId);
178
- console.log(`[sh3] ${shardId} — server routes unmounted`);
194
+ this.shards.delete(key);
195
+ console.log(`[sh3] ${id} — server routes unmounted`);
179
196
  return true;
180
197
  }
198
+ /** Locate an entry by either its package id or its shard.id. */
199
+ #findEntry(id) {
200
+ const byShard = this.shards.get(id);
201
+ if (byShard)
202
+ return { key: id, value: byShard };
203
+ for (const [key, value] of this.shards) {
204
+ if (value.packageId === id)
205
+ return { key, value };
206
+ }
207
+ return null;
208
+ }
181
209
  /** Call teardown on every mounted shard without clearing the registry. */
182
210
  async unmountAll() {
183
211
  for (const [id, entry] of this.shards) {
@@ -246,8 +274,11 @@ export class ShardRouter {
246
274
  }
247
275
  return routes;
248
276
  }
249
- /** Check if a shard is currently mounted. */
250
- has(shardId) {
251
- return this.shards.has(shardId);
277
+ /**
278
+ * Check if a shard is currently mounted. Accepts either the package id or
279
+ * the shard's own id (combo bundles have these diverge).
280
+ */
281
+ has(id) {
282
+ return this.#findEntry(id) !== null;
252
283
  }
253
284
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sh3-server",
3
- "version": "0.19.1",
3
+ "version": "0.19.5",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "sh3-server": "dist/cli.js"
@@ -31,7 +31,8 @@
31
31
  "@hono/node-ws": "^1.3.0",
32
32
  "@tauri-apps/plugin-http": "^2.5.9",
33
33
  "bcrypt": "^6.0.0",
34
- "hono": "^4.6.0"
34
+ "hono": "^4.6.0",
35
+ "sh3-validate": "*"
35
36
  },
36
37
  "devDependencies": {
37
38
  "@sveltejs/vite-plugin-svelte": "^4.0.0",
@@ -1 +0,0 @@
1
- .modal-frame.svelte-2tcvcm{position:absolute;inset:0;display:grid;place-items:center;pointer-events:auto}.modal-box.svelte-2tcvcm{background:var(--sh3-grad-bg-elevated, var(--sh3-bg-elevated));color:var(--sh3-fg);border:1px solid var(--sh3-border-strong);border-radius:var(--sh3-radius);min-width:320px;max-width:min(640px,90vw);max-height:90vh;overflow:auto;box-shadow:0 20px 48px #00000080;outline:none}.popup-frame.svelte-mp81cl{position:absolute;background:var(--sh3-grad-bg-elevated, var(--sh3-bg-elevated));color:var(--sh3-fg);border:1px solid var(--sh3-border-strong);border-radius:var(--sh3-radius-sm);box-shadow:0 8px 24px #0006;min-width:120px;outline:none;pointer-events:auto}.toast.svelte-12gwnj0{pointer-events:auto;display:flex;align-items:center;gap:var(--sh3-pad-md);padding:var(--sh3-pad-sm) var(--sh3-pad-md);background:var(--sh3-grad-bg-elevated, var(--sh3-bg-elevated));color:var(--sh3-fg);border:1px solid var(--sh3-border-strong);border-left-width:3px;border-radius:var(--sh3-radius-sm);box-shadow:0 8px 20px #0006;font-size:12px;min-width:220px;max-width:360px;cursor:pointer;animation:svelte-12gwnj0-toast-in .16s ease-out both}.toast-level.svelte-12gwnj0{text-transform:uppercase;font-family:var(--sh3-font-mono);font-size:10px;letter-spacing:.5px;color:var(--sh3-fg-muted)}.toast-message.svelte-12gwnj0{flex:1}.toast-info.svelte-12gwnj0{border-left-color:var(--sh3-accent)}.toast-success.svelte-12gwnj0{border-left-color:var(--sh3-success)}.toast-warn.svelte-12gwnj0{border-left-color:var(--sh3-warning)}.toast-error.svelte-12gwnj0{border-left-color:var(--sh3-error)}@keyframes svelte-12gwnj0-toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.sh3-conflict-text.svelte-iwgja4{display:flex;flex-direction:column;gap:12px;padding:12px;height:100%;min-height:0}.sh3-conflict-text-dual.svelte-iwgja4{display:grid;grid-template-columns:1fr 1fr;gap:8px;min-height:0;flex:1}.sh3-conflict-text-pane.svelte-iwgja4{display:flex;flex-direction:column;min-height:0;border:1px solid var(--sh3-border, #444);border-radius:var(--sh3-radius-sm);background:var(--sh3-input-bg, #2a2a2a);cursor:pointer}.sh3-conflict-text-pane.selected.svelte-iwgja4{border-color:var(--sh3-accent, #007acc);box-shadow:0 0 0 2px var(--sh3-focus-ring, rgba(0,122,204,.3))}.sh3-conflict-text-head.svelte-iwgja4{padding:6px 10px;font-size:.75rem;color:var(--sh3-fg-muted, #888);border-bottom:1px solid var(--sh3-border, #444)}.sh3-conflict-text-body.svelte-iwgja4{margin:0;padding:10px;flex:1;overflow:auto;font-family:var(--sh3-font-mono, monospace);font-size:.8125rem}.sh3-conflict-text-diff.svelte-iwgja4{margin-top:8px}.sh3-conflict-text-diff.svelte-iwgja4 pre:where(.svelte-iwgja4){background:var(--sh3-input-bg, #2a2a2a);padding:8px;overflow:auto;max-height:240px}.diff-left{color:var(--sh3-error, #e35)}.diff-right{color:var(--sh3-success, #3a3)}.diff-same{opacity:.7}.sh3-conflict-text-tabs.svelte-iwgja4{display:flex;flex-direction:column;gap:8px;min-height:0;flex:1}.sh3-conflict-text-picker.svelte-iwgja4 select:where(.svelte-iwgja4){background:var(--sh3-input-bg, #2a2a2a);color:var(--sh3-fg, #e0e0e0);border:1px solid var(--sh3-border, #444);padding:2px 6px}.sh3-conflict-text-tablist.svelte-iwgja4{display:flex;gap:4px;flex-wrap:wrap}.sh3-conflict-text-tab.svelte-iwgja4{padding:4px 10px;background:var(--sh3-input-bg, #2a2a2a);border:1px solid var(--sh3-border, #444);border-radius:var(--sh3-radius-sm);color:var(--sh3-fg, #e0e0e0);cursor:pointer;font-size:.8125rem}.sh3-conflict-text-tab.selected.svelte-iwgja4{border-color:var(--sh3-accent, #007acc)}.sh3-conflict-meta.svelte-1nz3djn{padding:16px;display:flex;flex-direction:column;gap:12px}.sh3-conflict-meta-note.svelte-1nz3djn{color:var(--sh3-fg-muted, #888);font-size:.875rem;font-style:italic}.sh3-conflict-meta-list.svelte-1nz3djn{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.sh3-conflict-meta-li.svelte-1nz3djn{margin:0}.sh3-conflict-meta-row.svelte-1nz3djn{width:100%;text-align:left;padding:10px 12px;background:var(--sh3-input-bg, #2a2a2a);color:var(--sh3-fg, #e0e0e0);border:1px solid var(--sh3-border, #444);border-radius:var(--sh3-radius-sm);cursor:pointer;font:inherit}.sh3-conflict-meta-row.selected.svelte-1nz3djn{border-color:var(--sh3-accent, #007acc);box-shadow:0 0 0 2px var(--sh3-focus-ring, rgba(0,122,204,.3))}.sh3-conflict-meta-origin.svelte-1nz3djn{font-weight:600;font-size:.875rem}.sh3-conflict-meta-detail.svelte-1nz3djn{color:var(--sh3-fg-muted, #888);font-size:.75rem;margin-top:2px}.sh3-conflict-prompt.svelte-1jvtzud{padding:20px;display:flex;flex-direction:column;gap:14px;min-width:360px;max-width:480px}.sh3-conflict-prompt-title.svelte-1jvtzud{margin:0;font-size:1.0625rem;font-weight:600;color:var(--sh3-fg, #e0e0e0)}.sh3-conflict-prompt-intro.svelte-1jvtzud{margin:0;color:var(--sh3-fg-muted, #888);font-size:.875rem}.sh3-conflict-prompt-actions.svelte-1jvtzud{display:flex;flex-direction:column;gap:8px}.sh3-conflict-prompt-actions.svelte-1jvtzud button:where(.svelte-1jvtzud){padding:10px 14px;border-radius:var(--sh3-radius);border:1px solid var(--sh3-border, #444);background:var(--sh3-input-bg, #2a2a2a);color:var(--sh3-fg, #e0e0e0);font-size:.875rem;font-family:inherit;cursor:pointer;text-align:left}.sh3-conflict-prompt-primary.svelte-1jvtzud{background:var(--sh3-accent, #007acc)!important;border-color:var(--sh3-accent, #007acc)!important;color:#fff!important;font-weight:600}.sh3-conflict-prompt-cancel.svelte-1jvtzud{color:var(--sh3-fg-muted, #888)!important}.sh3-conflict-detail.svelte-pw8iv6{display:flex;flex-direction:column;width:min(920px,96vw);height:min(640px,90vh);background:var(--sh3-bg, #1e1e1e);color:var(--sh3-fg, #e0e0e0);border:1px solid var(--sh3-border, #444);border-radius:var(--sh3-radius-md);box-shadow:0 8px 32px #0006}.sh3-conflict-detail-head.svelte-pw8iv6{padding:12px 16px;border-bottom:1px solid var(--sh3-border, #444);display:flex;justify-content:space-between;align-items:center}.sh3-conflict-detail-head.svelte-pw8iv6 h3:where(.svelte-pw8iv6){margin:0;font-size:1rem;font-weight:600}.sh3-conflict-detail-counter.svelte-pw8iv6{color:var(--sh3-fg-muted, #888);font-size:.8125rem}.sh3-conflict-detail-body.svelte-pw8iv6{display:flex;flex:1;min-height:0}.sh3-conflict-detail-rail.svelte-pw8iv6{width:240px;border-right:1px solid var(--sh3-border, #444);overflow-y:auto;display:flex;flex-direction:column}.sh3-conflict-detail-rail-item.svelte-pw8iv6{display:flex;gap:8px;align-items:center;padding:6px 12px;text-align:left;background:transparent;border:none;color:inherit;cursor:pointer;font:inherit;font-size:.8125rem}.sh3-conflict-detail-rail-item.svelte-pw8iv6:hover{background:var(--sh3-input-bg, #2a2a2a)}.sh3-conflict-detail-rail-item.selected.svelte-pw8iv6{background:var(--sh3-input-bg, #2a2a2a);font-weight:600}.sh3-conflict-detail-rail-state.svelte-pw8iv6{width:1em;text-align:center;opacity:.7}.sh3-conflict-detail-rail-state.resolved.svelte-pw8iv6{color:var(--sh3-success, #3a3);opacity:1}.sh3-conflict-detail-rail-state.skipped.svelte-pw8iv6{color:var(--sh3-fg-muted, #888)}.sh3-conflict-detail-rail-label.svelte-pw8iv6{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sh3-conflict-detail-main.svelte-pw8iv6{flex:1;display:flex;flex-direction:column;min-width:0}.sh3-conflict-detail-branches.svelte-pw8iv6{display:flex;gap:12px;padding:8px 16px;border-bottom:1px solid var(--sh3-border, #444);flex-wrap:wrap}.sh3-conflict-detail-branch.svelte-pw8iv6{display:flex;gap:6px;align-items:center;font-size:.8125rem}.sh3-conflict-detail-renderer.svelte-pw8iv6{flex:1;min-height:0;overflow:auto}.sh3-conflict-detail-foot.svelte-pw8iv6{padding:10px 16px;border-top:1px solid var(--sh3-border, #444);display:flex;justify-content:space-between;gap:8px}.sh3-conflict-detail-nav.svelte-pw8iv6,.sh3-conflict-detail-actions.svelte-pw8iv6{display:flex;gap:8px}.sh3-conflict-detail-nav.svelte-pw8iv6 button:where(.svelte-pw8iv6),.sh3-conflict-detail-actions.svelte-pw8iv6 button:where(.svelte-pw8iv6){padding:6px 14px;background:var(--sh3-input-bg, #2a2a2a);color:var(--sh3-fg, #e0e0e0);border:1px solid var(--sh3-border, #444);border-radius:var(--sh3-radius);font:inherit;font-size:.8125rem;cursor:pointer}.sh3-conflict-detail-nav.svelte-pw8iv6 button:where(.svelte-pw8iv6):disabled{opacity:.5;cursor:not-allowed}.sh3-conflict-detail-done.svelte-pw8iv6{background:var(--sh3-accent, #007acc)!important;color:#fff!important;font-weight:600;border-color:var(--sh3-accent, #007acc)!important}.sh3-context-menu.svelte-1667pfa{min-width:220px;background:var(--sh3-bg-elevated, #222);color:var(--sh3-fg, #eee);border-radius:4px;padding:4px 0;box-shadow:0 4px 16px #00000059;outline:none}.sh3-ctx-item.svelte-1667pfa{display:flex;align-items:center;gap:8px;width:100%;padding:4px 10px;background:none;border:0;text-align:left;color:inherit;cursor:default;font:inherit}.sh3-ctx-active.svelte-1667pfa{background:var(--sh3-accent, #6ea8fe);color:var(--sh3-fg,#e4e6eb)}.sh3-ctx-disabled.svelte-1667pfa{opacity:.45}.sh3-ctx-disabled.sh3-ctx-active.svelte-1667pfa{background:transparent}.sh3-ctx-check.svelte-1667pfa{display:inline-block;width:12px;text-align:center;opacity:.85}.sh3-ctx-label.svelte-1667pfa{flex:1}.sh3-ctx-chevron.svelte-1667pfa{opacity:.6}.sh3-ctx-shortcut.svelte-1667pfa{opacity:.6;font-size:.9em}.sh3-ctx-sep.svelte-1667pfa{height:1px;background:#ffffff1a;margin:4px 0}.sh3-palette.svelte-1qdcgk6{min-width:480px;max-width:640px;background:var(--sh3-bg-elevated, #22232a);color:var(--sh3-fg, #e4e6eb);border-radius:var(--sh3-radius-md, 6px);box-shadow:0 8px 24px #0006}.sh3-palette-input.svelte-1qdcgk6{width:100%;padding:10px;background:none;border:0;border-bottom:1px solid rgba(255,255,255,.1);color:inherit;font:inherit;outline:none}.sh3-palette-list.svelte-1qdcgk6{max-height:320px;overflow-y:auto;padding:4px 0}.sh3-palette-item.svelte-1qdcgk6{display:flex;align-items:center;gap:12px;width:100%;padding:6px 12px;background:none;border:0;color:inherit;text-align:left;font:inherit;cursor:default}.sh3-palette-active.svelte-1qdcgk6{background:var(--sh3-accent, #4a5);border-radius:0;color:#fff}.sh3-palette-label.svelte-1qdcgk6{flex:1}.sh3-palette-badge.svelte-1qdcgk6{opacity:.5;font-size:.85em}.sh3-palette-shortcut.svelte-1qdcgk6{opacity:.6;font-size:.9em}.sh3-btn.svelte-t4hi97{appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:var(--sh3-pad-sm);padding:6px 14px;background:var(--sh3-accent);color:var(--sh3-fg-on-accent);border:none;border-radius:var(--sh3-radius);cursor:pointer;font-family:inherit;font-size:.875rem;line-height:var(--sh3-line)}.sh3-btn.svelte-t4hi97:hover:not(:disabled){filter:brightness(1.12)}.sh3-btn.svelte-t4hi97:active:not(:disabled){filter:brightness(.92)}.sh3-btn.svelte-t4hi97:focus-visible{box-shadow:var(--sh3-focus-ring);outline:none}.sh3-btn.svelte-t4hi97:disabled{opacity:.55;cursor:not-allowed}.sh3-btn--pressed.svelte-t4hi97{box-shadow:inset 0 1px 3px #00000059;filter:brightness(.88)}.sh3-btn--pressed.svelte-t4hi97:hover:not(:disabled){filter:brightness(.96)}.sh3-btn--alert.svelte-t4hi97{background:var(--sh3-error);color:var(--sh3-fg-on-error)}.sh3-btn--ghost.svelte-t4hi97{background:transparent;color:var(--sh3-fg);border:1px solid var(--sh3-border)}.sh3-btn--ghost.svelte-t4hi97:hover:not(:disabled){background:var(--sh3-bg-elevated);filter:none}.sh3-btn--icon.svelte-t4hi97{background:transparent;color:var(--sh3-fg-muted);padding:var(--sh3-pad-sm)}.sh3-btn--icon.svelte-t4hi97:hover:not(:disabled){background:var(--sh3-bg-elevated);color:var(--sh3-fg);filter:none}.sh3-btn--icon-only.svelte-t4hi97{padding:var(--sh3-pad-sm);width:26px;height:26px}.sh3-btn__icon.svelte-t4hi97{width:16px;height:16px;flex-shrink:0}.sh3-btn__label.svelte-t4hi97{display:inline-flex;white-space:nowrap}.sh3-btn__spinner.svelte-t4hi97{width:16px;height:16px;flex-shrink:0;animation:svelte-t4hi97-sh3-btn-spin .8s linear infinite}@keyframes svelte-t4hi97-sh3-btn-spin{to{transform:rotate(360deg)}}.sh3-collapsible.svelte-lvydsb{border:1px solid var(--sh3-border);border-radius:var(--sh3-radius);background:transparent}.sh3-collapsible__head.svelte-lvydsb{appearance:none;width:100%;display:inline-flex;align-items:center;gap:var(--sh3-pad-sm);padding:var(--sh3-pad-sm) 12px;background:transparent;color:var(--sh3-fg);border:none;border-radius:inherit;cursor:pointer;font-family:inherit;font-size:.875rem;line-height:var(--sh3-line);text-align:left}.sh3-collapsible__head.svelte-lvydsb:hover{background:var(--sh3-bg-elevated)}.sh3-collapsible__head.svelte-lvydsb:focus-visible{box-shadow:var(--sh3-focus-ring);outline:none}.sh3-collapsible__caret.svelte-lvydsb{width:12px;height:12px;flex-shrink:0;color:var(--sh3-fg-muted)}.sh3-collapsible--open.svelte-lvydsb .sh3-collapsible__caret:where(.svelte-lvydsb){transform:rotate(90deg)}.sh3-collapsible__title.svelte-lvydsb{flex:1}.sh3-collapsible__body.svelte-lvydsb{padding:var(--sh3-pad-sm) 12px;border-top:1px solid var(--sh3-border)}.sh3-field.svelte-m4dkl{display:inline-flex;flex-direction:column;gap:4px;font-family:var(--sh3-font-ui);font-size:.8125rem;color:var(--sh3-fg)}.sh3-field__label.svelte-m4dkl{color:var(--sh3-fg-muted);font-size:.75rem}.sh3-field__row.svelte-m4dkl{display:inline-flex;align-items:stretch;background:var(--sh3-input-bg);border:1px solid var(--sh3-border);border-radius:var(--sh3-widget-radius);height:var(--sh3-field-height-md);transition:border-color var(--sh3-motion-fast) var(--sh3-ease-standard),box-shadow var(--sh3-motion-fast) var(--sh3-ease-standard)}.sh3-field--sm.svelte-m4dkl .sh3-field__row:where(.svelte-m4dkl){height:var(--sh3-field-height-sm)}.sh3-field__row.svelte-m4dkl:focus-within{border-color:var(--sh3-input-border-focus);box-shadow:var(--sh3-focus-ring)}.sh3-field--invalid.svelte-m4dkl .sh3-field__row:where(.svelte-m4dkl){border-color:var(--sh3-error)}.sh3-field--invalid.svelte-m4dkl .sh3-field__row:where(.svelte-m4dkl):focus-within{box-shadow:0 0 0 2px color-mix(in srgb,var(--sh3-error) 40%,transparent)}.sh3-field__input.svelte-m4dkl{flex:1 1 auto;height:100%;padding:0 var(--sh3-field-pad-x);background:transparent;border:none;color:inherit;font:inherit;outline:none}.sh3-field__input.svelte-m4dkl:focus,.sh3-field__input.svelte-m4dkl:focus-visible{outline:none;box-shadow:none;border:none}.sh3-field__input.svelte-m4dkl:disabled{color:var(--sh3-fg-muted);cursor:not-allowed}.sh3-field__affix.svelte-m4dkl{display:inline-flex;align-items:center;padding:0 var(--sh3-field-pad-x);color:var(--sh3-fg-muted);flex-shrink:0}.sh3-field__affix.svelte-m4dkl:first-child{padding-right:0}.sh3-field__affix.svelte-m4dkl:last-child{padding-left:0}.sh3-field__helper.svelte-m4dkl{color:var(--sh3-fg-muted);font-size:.75rem}.sh3-field__helper--error.svelte-m4dkl{color:var(--sh3-error)}.sh3-textarea.svelte-668c6r{display:inline-flex;flex-direction:column;gap:4px;font-family:var(--sh3-font-ui);font-size:.8125rem}.sh3-textarea__label.svelte-668c6r{color:var(--sh3-fg-muted);font-size:.75rem}.sh3-textarea__input.svelte-668c6r{background:var(--sh3-input-bg);color:var(--sh3-fg);border:1px solid var(--sh3-border);border-radius:var(--sh3-widget-radius);padding:var(--sh3-pad-sm) var(--sh3-field-pad-x);font:inherit;outline:none;transition:border-color var(--sh3-motion-fast) var(--sh3-ease-standard)}.sh3-textarea__input.svelte-668c6r:focus{border-color:var(--sh3-input-border-focus);box-shadow:var(--sh3-focus-ring)}.sh3-textarea--invalid.svelte-668c6r .sh3-textarea__input:where(.svelte-668c6r){border-color:var(--sh3-error)}.sh3-textarea__helper.svelte-668c6r{color:var(--sh3-fg-muted);font-size:.75rem}.sh3-textarea__helper--error.svelte-668c6r{color:var(--sh3-error)}.sh3-num.svelte-1qa0x3m{display:inline-flex;flex-direction:column;gap:4px;font-size:.8125rem}.sh3-num__label.svelte-1qa0x3m{color:var(--sh3-fg-muted);font-size:.75rem}.sh3-num__row.svelte-1qa0x3m{display:inline-flex;align-items:stretch;background:var(--sh3-input-bg);border:1px solid var(--sh3-border);border-radius:var(--sh3-widget-radius);height:var(--sh3-field-height-md)}.sh3-num--sm.svelte-1qa0x3m .sh3-num__row:where(.svelte-1qa0x3m){height:var(--sh3-field-height-sm)}.sh3-num__row.svelte-1qa0x3m:focus-within{border-color:var(--sh3-input-border-focus);box-shadow:var(--sh3-focus-ring)}.sh3-num--invalid.svelte-1qa0x3m .sh3-num__row:where(.svelte-1qa0x3m){border-color:var(--sh3-error)}.sh3-num__input.svelte-1qa0x3m{flex:1 1 auto;min-width:50px;padding:0 var(--sh3-field-pad-x);background:transparent;border:none;color:var(--sh3-fg);font:inherit;outline:none;-moz-appearance:textfield;appearance:textfield}.sh3-num__input.svelte-1qa0x3m:focus,.sh3-num__input.svelte-1qa0x3m:focus-visible{outline:none;box-shadow:none;border:none}.sh3-num__input.svelte-1qa0x3m::-webkit-outer-spin-button,.sh3-num__input.svelte-1qa0x3m::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.sh3-num__affix.svelte-1qa0x3m{display:inline-flex;align-items:center;padding:0 6px;color:var(--sh3-fg-muted)}.sh3-num__steppers.svelte-1qa0x3m{display:inline-flex;flex-direction:column;border-left:1px solid var(--sh3-border)}.sh3-num__steppers.svelte-1qa0x3m button:where(.svelte-1qa0x3m){flex:1;width:18px;background:transparent;color:var(--sh3-fg-muted);border:none;border-radius:0;padding:0;cursor:pointer;font-size:8px;line-height:1}.sh3-num__steppers.svelte-1qa0x3m button:where(.svelte-1qa0x3m):hover:not(:disabled){background:var(--sh3-bg-elevated);color:var(--sh3-fg);filter:none}.sh3-num__steppers.svelte-1qa0x3m button:where(.svelte-1qa0x3m):disabled{cursor:not-allowed;opacity:.5}.sh3-num__steppers.svelte-1qa0x3m button:where(.svelte-1qa0x3m)+button:where(.svelte-1qa0x3m){border-top:1px solid var(--sh3-border)}.sh3-seg.svelte-17xsko9{display:inline-flex;background:var(--sh3-bg-sunken);border:1px solid var(--sh3-border);border-radius:var(--sh3-widget-radius-pill);padding:2px;height:var(--sh3-field-height-md);gap:0}.sh3-seg--sm.svelte-17xsko9{height:var(--sh3-field-height-sm)}.sh3-seg.svelte-17xsko9 button:where(.svelte-17xsko9){background:transparent;color:var(--sh3-fg-muted);border:none;padding:0 var(--sh3-field-pad-x);border-radius:var(--sh3-widget-radius-pill);font-size:.8125rem;cursor:pointer;transition:background var(--sh3-motion-fast) var(--sh3-ease-standard),color var(--sh3-motion-fast) var(--sh3-ease-standard)}.sh3-seg.svelte-17xsko9 button:where(.svelte-17xsko9):hover:not(:disabled):not(.sh3-seg__btn--active){color:var(--sh3-fg);filter:none}.sh3-seg.svelte-17xsko9 button.sh3-seg__btn--active:where(.svelte-17xsko9){background:var(--sh3-accent);color:var(--sh3-fg-on-accent);font-weight:600;box-shadow:0 1px 2px #00000040,inset 0 0 0 1px color-mix(in srgb,var(--sh3-fg-on-accent) 25%,transparent)}.sh3-seg.svelte-17xsko9 button:where(.svelte-17xsko9):disabled{opacity:.5;cursor:not-allowed}.sh3-seg.svelte-17xsko9 button:where(.svelte-17xsko9):focus-visible{outline:none;box-shadow:var(--sh3-focus-ring)}.sh3-itg.svelte-13knxr5{display:inline-flex;background:var(--sh3-bg-sunken);border:1px solid var(--sh3-border);border-radius:var(--sh3-widget-radius);padding:2px;gap:2px}.sh3-itg.svelte-13knxr5 button:where(.svelte-13knxr5){width:26px;height:26px;background:transparent;color:var(--sh3-fg-muted);border:none;border-radius:var(--sh3-radius-sm);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0;transition:background var(--sh3-motion-fast) var(--sh3-ease-standard),color var(--sh3-motion-fast) var(--sh3-ease-standard)}.sh3-itg--sm.svelte-13knxr5 button:where(.svelte-13knxr5){width:22px;height:22px}.sh3-itg.svelte-13knxr5 button:where(.svelte-13knxr5):hover:not(:disabled):not(.sh3-itg__btn--active){background:var(--sh3-bg-elevated);color:var(--sh3-fg);filter:none}.sh3-itg.svelte-13knxr5 button.sh3-itg__btn--active:where(.svelte-13knxr5){background:var(--sh3-accent);color:var(--sh3-fg-on-accent);font-weight:600;box-shadow:0 1px 2px #00000040,inset 0 0 0 1px color-mix(in srgb,var(--sh3-fg-on-accent) 25%,transparent)}.sh3-itg.svelte-13knxr5 button:where(.svelte-13knxr5):focus-visible{outline:none;box-shadow:var(--sh3-focus-ring)}.sh3-itg.svelte-13knxr5 button:where(.svelte-13knxr5):disabled{opacity:.5;cursor:not-allowed}.sh3-slider.svelte-13va6lu{--thumb-size: 14px;position:relative;display:inline-block}.sh3-slider--sm.svelte-13va6lu{--thumb-size: 12px}.sh3-slider--horizontal.svelte-13va6lu{width:200px;height:var(--thumb-size)}.sh3-slider--vertical.svelte-13va6lu{width:var(--thumb-size);height:200px}.sh3-slider__track.svelte-13va6lu{position:absolute;background:var(--sh3-track-bg);border:1px solid var(--sh3-track-border);border-radius:var(--sh3-widget-radius-pill);pointer-events:none}.sh3-slider--horizontal.svelte-13va6lu .sh3-slider__track:where(.svelte-13va6lu){top:50%;left:0;right:0;height:4px;transform:translateY(-50%)}.sh3-slider--vertical.svelte-13va6lu .sh3-slider__track:where(.svelte-13va6lu){left:50%;top:0;bottom:0;width:4px;transform:translate(-50%)}.sh3-slider__fill.svelte-13va6lu{position:absolute;background:var(--sh3-track-fill);border-radius:inherit}.sh3-slider--horizontal.svelte-13va6lu .sh3-slider__fill:where(.svelte-13va6lu){left:0;top:0;bottom:0;width:var(--pct)}.sh3-slider--vertical.svelte-13va6lu .sh3-slider__fill:where(.svelte-13va6lu){bottom:0;left:0;right:0;height:var(--pct)}.sh3-slider__tick.svelte-13va6lu{position:absolute;background:var(--sh3-tick-bg)}.sh3-slider--horizontal.svelte-13va6lu .sh3-slider__tick:where(.svelte-13va6lu){width:1px;height:8px;top:50%;transform:translate(-50%,-50%);left:var(--tick-pct)}.sh3-slider--vertical.svelte-13va6lu .sh3-slider__tick:where(.svelte-13va6lu){width:8px;height:1px;left:50%;transform:translate(-50%,50%);bottom:var(--tick-pct)}.sh3-slider__native.svelte-13va6lu{position:absolute;inset:0;width:100%;height:100%;margin:0;background:transparent;-webkit-appearance:none;appearance:none;cursor:pointer}.sh3-slider--vertical.svelte-13va6lu .sh3-slider__native:where(.svelte-13va6lu){writing-mode:vertical-lr;direction:rtl}.sh3-slider__native.svelte-13va6lu:disabled{cursor:not-allowed;opacity:1}.sh3-slider--invalid.svelte-13va6lu .sh3-slider__track:where(.svelte-13va6lu){border-color:var(--sh3-error)}.sh3-slider.svelte-13va6lu:has(.sh3-slider__native:where(.svelte-13va6lu):disabled) .sh3-slider__fill:where(.svelte-13va6lu){background:var(--sh3-border-strong)}.sh3-slider__native.svelte-13va6lu::-webkit-slider-thumb{-webkit-appearance:none;width:var(--thumb-size);height:var(--thumb-size);border-radius:50%;background:var(--sh3-thumb-bg);border:2px solid var(--sh3-thumb-border);box-shadow:var(--sh3-thumb-shadow);cursor:pointer;opacity:1}.sh3-slider__native.svelte-13va6lu::-moz-range-thumb{width:var(--thumb-size);height:var(--thumb-size);border-radius:50%;background:var(--sh3-thumb-bg);border:2px solid var(--sh3-thumb-border);box-shadow:var(--sh3-thumb-shadow);cursor:pointer;opacity:1}.sh3-slider__native.svelte-13va6lu:disabled::-webkit-slider-thumb{background:var(--sh3-fg-subtle);border-color:var(--sh3-border-strong);cursor:not-allowed;opacity:1}.sh3-slider__native.svelte-13va6lu:disabled::-moz-range-thumb{background:var(--sh3-fg-subtle);border-color:var(--sh3-border-strong);cursor:not-allowed;opacity:1}.sh3-slider__native.svelte-13va6lu::-webkit-slider-runnable-track,.sh3-slider__native.svelte-13va6lu::-moz-range-track{background:transparent}.sh3-slider__native.svelte-13va6lu:focus-visible::-webkit-slider-thumb{box-shadow:var(--sh3-focus-ring),var(--sh3-thumb-shadow)}.sh3-slider__native.svelte-13va6lu:focus-visible::-moz-range-thumb{box-shadow:var(--sh3-focus-ring),var(--sh3-thumb-shadow)}.sh3-slider__value.svelte-13va6lu{position:absolute;font-size:.75rem;color:var(--sh3-fg-muted);pointer-events:none;transform:translate(-50%)}.sh3-slider--horizontal.svelte-13va6lu .sh3-slider__value:where(.svelte-13va6lu){top:calc(100% + 4px);left:var(--pct)}.sh3-slider--vertical.svelte-13va6lu .sh3-slider__value:where(.svelte-13va6lu){left:calc(100% + 6px);bottom:var(--pct);transform:translateY(50%)}.sh3-range.svelte-rdbrc5{--thumb-size: 14px;position:relative;width:200px;height:var(--thumb-size)}.sh3-range--sm.svelte-rdbrc5{--thumb-size: 12px}.sh3-range__track.svelte-rdbrc5{position:absolute;top:50%;left:0;right:0;height:4px;transform:translateY(-50%);background:var(--sh3-track-bg);border:1px solid var(--sh3-track-border);border-radius:var(--sh3-widget-radius-pill)}.sh3-range__fill.svelte-rdbrc5{position:absolute;top:0;bottom:0;left:var(--lo);width:calc(var(--hi) - var(--lo));background:var(--sh3-track-fill);border-radius:inherit}.sh3-range__native.svelte-rdbrc5{position:absolute;top:0;left:0;width:100%;height:100%;margin:0;background:transparent;-webkit-appearance:none;appearance:none;pointer-events:none}.sh3-range__native.svelte-rdbrc5:disabled{opacity:1;cursor:not-allowed}.sh3-range__native.svelte-rdbrc5::-webkit-slider-thumb{-webkit-appearance:none;width:var(--thumb-size);height:var(--thumb-size);border-radius:50%;background:var(--sh3-thumb-bg);border:2px solid var(--sh3-thumb-border);box-shadow:var(--sh3-thumb-shadow);pointer-events:auto;cursor:pointer;opacity:1}.sh3-range__native.svelte-rdbrc5::-moz-range-thumb{width:var(--thumb-size);height:var(--thumb-size);border-radius:50%;background:var(--sh3-thumb-bg);border:2px solid var(--sh3-thumb-border);box-shadow:var(--sh3-thumb-shadow);pointer-events:auto;cursor:pointer;opacity:1}.sh3-range__native.svelte-rdbrc5:disabled::-webkit-slider-thumb{background:var(--sh3-fg-subtle);border-color:var(--sh3-border-strong);cursor:not-allowed;opacity:1}.sh3-range__native.svelte-rdbrc5:disabled::-moz-range-thumb{background:var(--sh3-fg-subtle);border-color:var(--sh3-border-strong);cursor:not-allowed;opacity:1}.sh3-range.svelte-rdbrc5:has(.sh3-range__native:where(.svelte-rdbrc5):disabled) .sh3-range__fill:where(.svelte-rdbrc5){background:var(--sh3-border-strong)}.sh3-range__native.svelte-rdbrc5::-webkit-slider-runnable-track,.sh3-range__native.svelte-rdbrc5::-moz-range-track{background:transparent}.sh3-range--invalid.svelte-rdbrc5 .sh3-range__track:where(.svelte-rdbrc5){border-color:var(--sh3-error)}.sh3-sg.svelte-1lqyi0d{display:inline-flex;gap:var(--sh3-pad-md)}.sh3-sg--vertical.svelte-1lqyi0d{flex-direction:row;align-items:end}.sh3-sg--horizontal.svelte-1lqyi0d{flex-direction:column}.sh3-sg__channel.svelte-1lqyi0d{display:flex;gap:4px;align-items:center}.sh3-sg--vertical.svelte-1lqyi0d .sh3-sg__channel:where(.svelte-1lqyi0d){flex-direction:column-reverse;align-items:center}.sh3-sg__label.svelte-1lqyi0d{font-size:.75rem;color:var(--sh3-fg-muted);min-width:60px}.sh3-sg--vertical.svelte-1lqyi0d .sh3-sg__label:where(.svelte-1lqyi0d){min-width:0;text-align:center}.sh3-swatch.svelte-6ri2j2{display:inline-flex;flex-direction:column;gap:4px}.sh3-swatch__label.svelte-6ri2j2{font-size:.75rem;color:var(--sh3-fg-muted)}.sh3-swatch__btn.svelte-6ri2j2{display:inline-flex;align-items:center;gap:8px;height:var(--sh3-field-height-md);padding:0 var(--sh3-field-pad-x);background:var(--sh3-input-bg);border:1px solid var(--sh3-border);border-radius:var(--sh3-widget-radius);color:var(--sh3-fg);cursor:pointer;font:inherit}.sh3-swatch--sm.svelte-6ri2j2 .sh3-swatch__btn:where(.svelte-6ri2j2){height:var(--sh3-field-height-sm)}.sh3-swatch__btn.svelte-6ri2j2:hover:not(:disabled){background:var(--sh3-bg-elevated);filter:none}.sh3-swatch__btn.svelte-6ri2j2:focus-visible{outline:none;box-shadow:var(--sh3-focus-ring)}.sh3-swatch__btn.svelte-6ri2j2:disabled{opacity:.55;cursor:not-allowed}.sh3-swatch__dot.svelte-6ri2j2{width:16px;height:16px;border:1px solid var(--sh3-border-strong);border-radius:var(--sh3-radius-sm);background:var(--swatch-color)}.sh3-swatch__hex.svelte-6ri2j2{font-family:var(--sh3-font-mono);font-size:.75rem}.sh3-fp.svelte-24jk95{display:inline-flex;align-items:stretch;height:var(--sh3-field-height-md);border:1px solid var(--sh3-border);border-radius:var(--sh3-widget-radius);background:var(--sh3-input-bg);overflow:hidden;cursor:pointer;font-size:.8125rem}.sh3-fp--sm.svelte-24jk95{height:var(--sh3-field-height-sm)}.sh3-fp--invalid.svelte-24jk95{border-color:var(--sh3-error)}.sh3-fp.svelte-24jk95:focus-within{box-shadow:var(--sh3-focus-ring);border-color:var(--sh3-input-border-focus)}.sh3-fp__native.svelte-24jk95{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.sh3-fp__btn.svelte-24jk95{display:inline-flex;align-items:center;padding:0 var(--sh3-field-pad-x);background:var(--sh3-bg-elevated);color:var(--sh3-fg);border-right:1px solid var(--sh3-border)}.sh3-fp__name.svelte-24jk95{display:inline-flex;align-items:center;padding:0 var(--sh3-field-pad-x);color:var(--sh3-fg-muted);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sh3-listbox.svelte-1tyxvrs{background:var(--sh3-bg-elevated);border:1px solid var(--sh3-border);border-radius:var(--sh3-widget-radius);box-shadow:var(--sh3-shadow-sm);min-width:180px;max-width:320px;color:var(--sh3-fg);font-size:.8125rem;overflow:hidden}.sh3-listbox__search.svelte-1tyxvrs{width:100%;height:26px;padding:0 8px;background:var(--sh3-input-bg);border:none;border-bottom:1px solid var(--sh3-border);color:var(--sh3-fg);font:inherit;outline:none}.sh3-listbox__list.svelte-1tyxvrs{max-height:280px;overflow-y:auto;padding:4px 0}.sh3-listbox__list.svelte-1tyxvrs>div:where(.svelte-1tyxvrs){display:flex;align-items:center;gap:6px;padding:4px 10px;cursor:pointer}.sh3-listbox__opt--active.svelte-1tyxvrs{background:var(--sh3-bg)}.sh3-listbox__opt--selected.svelte-1tyxvrs{color:var(--sh3-accent)}.sh3-listbox__opt--active.sh3-listbox__opt--selected.svelte-1tyxvrs{background:var(--sh3-accent);color:var(--sh3-fg-on-accent)}.sh3-listbox__list.svelte-1tyxvrs>div[aria-disabled=true]:where(.svelte-1tyxvrs){color:var(--sh3-fg-subtle);cursor:not-allowed}.sh3-listbox__check.svelte-1tyxvrs{flex-shrink:0;width:12px;height:12px}.sh3-listbox__check--on.svelte-1tyxvrs:before{content:"";display:block;width:100%;height:100%;background:var(--sh3-accent);clip-path:polygon(14% 44%,0 60%,40% 100%,100% 20%,85% 8%,38% 70%)}.sh3-listbox__opt--active.sh3-listbox__opt--selected.svelte-1tyxvrs .sh3-listbox__check--on:where(.svelte-1tyxvrs):before{background:var(--sh3-fg-on-accent)}.sh3-listbox__empty.svelte-1tyxvrs{padding:6px 10px;color:var(--sh3-fg-muted);font-style:italic}.sh3-select.svelte-1q3zxph{display:inline-flex;flex-direction:column;gap:4px;font-size:.8125rem;position:relative}.sh3-select__label.svelte-1q3zxph{color:var(--sh3-fg-muted);font-size:.75rem}.sh3-select__btn.svelte-1q3zxph{display:inline-flex;align-items:center;gap:8px;height:var(--sh3-field-height-md);min-width:140px;padding:0 var(--sh3-field-pad-x);background:var(--sh3-input-bg);color:var(--sh3-fg);border:1px solid var(--sh3-border);border-radius:var(--sh3-widget-radius);cursor:pointer;font:inherit;text-align:left}.sh3-select--sm.svelte-1q3zxph .sh3-select__btn:where(.svelte-1q3zxph){height:var(--sh3-field-height-sm)}.sh3-select__btn.svelte-1q3zxph:focus-visible{outline:none;box-shadow:var(--sh3-focus-ring);border-color:var(--sh3-input-border-focus)}.sh3-select__btn.svelte-1q3zxph:disabled{opacity:.55;cursor:not-allowed}.sh3-select--invalid.svelte-1q3zxph .sh3-select__btn:where(.svelte-1q3zxph){border-color:var(--sh3-error)}.sh3-select__display.svelte-1q3zxph{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sh3-select__display--placeholder.svelte-1q3zxph,.sh3-select__chevron.svelte-1q3zxph{color:var(--sh3-fg-muted)}.sh3-select__native.svelte-1q3zxph{position:absolute;width:1px;height:1px;margin:0;padding:0;border:0;opacity:0;pointer-events:none}.sh3-picker.svelte-1rlwvrb{display:flex;flex-direction:column;gap:6px;border:1px solid var(--sh3-border);border-radius:var(--sh3-radius-sm, 3px);padding:6px;background:var(--sh3-bg-elevated)}.sh3-picker__search.svelte-1rlwvrb{width:100%;padding:4px 6px;border:1px solid var(--sh3-border);border-radius:var(--sh3-radius-sm, 3px);background:var(--sh3-bg);color:var(--sh3-fg);font:inherit;font-size:12px}.sh3-picker__list.svelte-1rlwvrb{display:flex;flex-direction:column;max-height:200px;overflow-y:auto}.sh3-picker__row.svelte-1rlwvrb{display:flex;align-items:center;gap:8px;padding:4px 6px;cursor:pointer;border-radius:var(--sh3-radius-sm, 3px)}.sh3-picker__row.svelte-1rlwvrb:hover{background:var(--sh3-bg)}.sh3-picker__row-text.svelte-1rlwvrb{display:flex;flex-direction:column;gap:0}.sh3-picker__row-label.svelte-1rlwvrb{font-size:13px}.sh3-picker__row-sub.svelte-1rlwvrb{font-size:11px;color:var(--sh3-fg-muted)}.sh3-picker__status.svelte-1rlwvrb{margin:0;padding:8px 6px;color:var(--sh3-fg-muted);font-size:12px}.sh3-picker__status--error.svelte-1rlwvrb{color:var(--sh3-error, #c33)}.sh3-picker__retry.svelte-1rlwvrb{align-self:flex-start;margin:0 6px 8px;background:var(--sh3-bg);color:var(--sh3-fg);border:1px solid var(--sh3-border);border-radius:var(--sh3-radius-sm, 3px);padding:2px 8px;font:inherit;font-size:12px;cursor:pointer}.sh3-picker__footer.svelte-1rlwvrb{margin:0;font-size:11px;color:var(--sh3-fg-muted);text-align:right}.sh3-picker--disabled.svelte-1rlwvrb .sh3-picker__row:where(.svelte-1rlwvrb){cursor:not-allowed;opacity:.6}.sh3-title.svelte-foqg2v{display:inline-block;line-height:0;overflow:hidden}.sh3-title.svelte-foqg2v canvas{transform:scale(var(--sh3-title-scale));transform-origin:top left;display:block}.sh3-title-fallback.svelte-foqg2v{margin:0;font-size:42px;color:var(--sh3-accent);letter-spacing:2px}.delete-project-dialog.svelte-6j13aq{display:flex;flex-direction:column;gap:16px;padding:20px 24px;min-width:400px;max-width:520px}.delete-project-dialog__title.svelte-6j13aq{font-size:16px;font-weight:600;color:var(--sh3-fg)}.delete-project-dialog__body.svelte-6j13aq{font-size:13px;color:var(--sh3-fg-muted, var(--sh3-fg));line-height:1.5}.delete-project-dialog__opt.svelte-6j13aq{display:flex;align-items:flex-start;gap:8px;font-size:13px;color:var(--sh3-fg);cursor:pointer}.delete-project-dialog__opt.svelte-6j13aq input:where(.svelte-6j13aq){margin-top:3px}.delete-project-dialog__path.svelte-6j13aq{display:block;font-family:var(--sh3-font-mono, monospace);font-size:11px;color:var(--sh3-fg-muted);background:var(--sh3-bg-elevated);padding:2px 6px;border-radius:var(--sh3-radius-sm, 3px);margin-top:2px;word-break:break-all}.delete-project-dialog__actions.svelte-6j13aq{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}.delete-project-dialog__btn.svelte-6j13aq{font-size:13px;padding:6px 14px;border-radius:var(--sh3-radius-sm, 4px);border:1px solid var(--sh3-border-strong);background:transparent;color:var(--sh3-fg);cursor:pointer}.delete-project-dialog__btn.svelte-6j13aq:disabled{opacity:.6;cursor:not-allowed}.delete-project-dialog__btn--danger.svelte-6j13aq{color:var(--sh3-error, #d32f2f);border-color:var(--sh3-error, #d32f2f)}.project-manage.svelte-1oy3640{position:absolute;inset:0;display:flex;flex-direction:column;font:inherit;color:var(--sh3-fg);background:var(--sh3-bg)}.body.svelte-1oy3640{flex:1;overflow-y:auto;padding:16px 16px 8px}h2.svelte-1oy3640{margin:0 0 8px;font-size:16px}.project-id.svelte-1oy3640{font-size:12px;color:var(--sh3-fg-muted);margin:0 0 16px}.project-id.svelte-1oy3640 code:where(.svelte-1oy3640){font-family:var(--sh3-font-mono, monospace)}.field.svelte-1oy3640{display:flex;flex-direction:column;gap:4px;margin-bottom:12px;font-size:13px}.field.svelte-1oy3640 span:where(.svelte-1oy3640){color:var(--sh3-fg-muted)}.hint.svelte-1oy3640{font-size:11px;color:var(--sh3-fg-muted)}.hint.svelte-1oy3640 code:where(.svelte-1oy3640){font-family:var(--sh3-font-mono, monospace);color:var(--sh3-fg);background:var(--sh3-bg-elevated);padding:0 4px;border-radius:var(--sh3-radius-sm, 3px)}.field.svelte-1oy3640 input:where(.svelte-1oy3640),.field.svelte-1oy3640 textarea:where(.svelte-1oy3640){background:var(--sh3-bg-elevated);color:var(--sh3-fg);border:1px solid var(--sh3-border);border-radius:var(--sh3-radius-sm, 3px);padding:6px 8px;font:inherit;font-size:13px}.field.svelte-1oy3640 textarea:where(.svelte-1oy3640){resize:vertical;min-height:60px}.error.svelte-1oy3640{color:var(--sh3-error, #c33);font-size:13px;margin:0 0 8px}.actions.svelte-1oy3640{display:flex;gap:8px;padding:12px 16px;border-top:1px solid var(--sh3-border);background:var(--sh3-bg);flex:0 0 auto}.actions.svelte-1oy3640 button:where(.svelte-1oy3640){background:var(--sh3-bg-elevated);color:var(--sh3-fg);border:1px solid var(--sh3-border);border-radius:var(--sh3-radius-sm, 3px);padding:6px 14px;font:inherit;cursor:pointer}.actions.svelte-1oy3640 button:where(.svelte-1oy3640):hover{border-color:var(--sh3-accent)}.actions.svelte-1oy3640 button.primary:where(.svelte-1oy3640){background:var(--sh3-accent);color:#fff;border-color:var(--sh3-accent)}.actions.svelte-1oy3640 button.danger:where(.svelte-1oy3640){margin-left:auto;color:var(--sh3-error, #c33)}.actions.svelte-1oy3640 button:where(.svelte-1oy3640):disabled{opacity:.5;cursor:not-allowed}.projects-section.svelte-yosqc3{width:100%;max-width:720px;margin-bottom:28px}.projects-heading.svelte-yosqc3{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--sh3-fg-subtle);margin:0 0 12px}.projects-grid.svelte-yosqc3{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px}.project-card-wrap.svelte-yosqc3{position:relative}.project-card.svelte-yosqc3{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:12px 14px;background:var(--sh3-grad-bg-elevated, var(--sh3-bg-elevated));border:1px solid var(--sh3-border);border-radius:var(--sh3-radius-md);cursor:pointer;text-align:left;color:inherit;font:inherit;transition:border-color .12s ease,transform .12s ease;width:100%}.project-card-edit.svelte-yosqc3{position:absolute;top:6px;right:6px;background:transparent;border:0;color:var(--sh3-fg-muted);cursor:pointer;padding:2px 6px;font-size:14px;border-radius:var(--sh3-radius-sm, 3px)}.project-card-edit.svelte-yosqc3:hover{color:var(--sh3-fg);background:var(--sh3-bg-elevated)}.project-card.svelte-yosqc3:hover{border-color:var(--sh3-accent);transform:translateY(-1px)}.project-card.active.svelte-yosqc3{border-color:var(--sh3-accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--sh3-accent) 40%,transparent)}.project-name.svelte-yosqc3{font-weight:600;font-size:13px}.project-meta.svelte-yosqc3{font-size:11px;color:var(--sh3-fg-muted)}.saved-layouts-section.svelte-1ncltuf{width:100%;max-width:720px;margin-bottom:28px}.saved-layouts-heading.svelte-1ncltuf{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--sh3-fg-subtle);margin:0 0 12px}.saved-layouts-grid.svelte-1ncltuf{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:18px 14px}.saved-layout-card.svelte-1ncltuf{display:flex;flex-direction:column;align-items:center;gap:6px;padding:0;background:transparent;border:none;color:inherit;font:inherit;cursor:pointer}.saved-layout-card-square.svelte-1ncltuf{width:64px;height:64px;display:flex;align-items:center;justify-content:center;background:var(--saved-layout-color, var(--sh3-grad-bg-elevated, var(--sh3-bg-elevated)));border:1px dashed var(--sh3-border);border-radius:var(--sh3-radius-md);box-shadow:0 2px 6px #00000040,0 1px 2px #00000026;transition:transform .12s ease,border-color .12s ease,box-shadow .12s ease,background .12s ease}.saved-layout-card.svelte-1ncltuf:hover .saved-layout-card-square:where(.svelte-1ncltuf){border-color:var(--sh3-accent);transform:translateY(-1px);box-shadow:0 6px 14px #0000004d,0 0 0 1px color-mix(in srgb,var(--sh3-accent) 35%,transparent),0 4px 12px color-mix(in srgb,var(--sh3-accent) 18%,transparent)}.saved-layout-card-icon.svelte-1ncltuf{width:28px;height:28px;color:var(--sh3-fg)}.saved-layout-card-label.svelte-1ncltuf{font-weight:600;font-size:11px;line-height:1.2;text-align:center;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;word-break:break-word}.saved-layout-card--tinted.svelte-1ncltuf .saved-layout-card-square:where(.svelte-1ncltuf){background:var(--card-color);border-style:solid}.sh3-icon-picker.svelte-h9dluc{display:flex;flex-direction:column;gap:6px}.sh3-icon-picker__label.svelte-h9dluc{font-size:13px;color:var(--sh3-fg-muted)}.sh3-icon-picker.svelte-h9dluc input[type=search]:where(.svelte-h9dluc){background:var(--sh3-bg-elevated);color:var(--sh3-fg);border:1px solid var(--sh3-border);border-radius:var(--sh3-radius-sm, 3px);padding:6px 8px;font:inherit;font-size:13px}.sh3-icon-picker__grid.svelte-h9dluc{display:grid;grid-template-columns:repeat(auto-fill,minmax(36px,1fr));gap:4px;max-height:220px;overflow-y:auto;padding:4px;background:var(--sh3-bg);border:1px solid var(--sh3-border);border-radius:var(--sh3-radius-sm, 3px)}.sh3-icon-picker__tile.svelte-h9dluc{aspect-ratio:1 / 1;display:flex;align-items:center;justify-content:center;background:var(--sh3-bg-elevated);color:var(--sh3-fg);border:1px solid transparent;border-radius:var(--sh3-radius-sm, 3px);cursor:pointer;padding:0;font:inherit}.sh3-icon-picker__tile--none.svelte-h9dluc{font-size:16px;color:var(--sh3-fg-muted)}.sh3-icon-picker__tile.svelte-h9dluc:hover{border-color:var(--sh3-accent)}.sh3-icon-picker__tile--selected.svelte-h9dluc{outline:2px solid var(--sh3-accent);outline-offset:-2px}.sh3-icon-picker__tile.svelte-h9dluc svg:where(.svelte-h9dluc){width:18px;height:18px}.sh3-icon-picker--disabled.svelte-h9dluc .sh3-icon-picker__tile:where(.svelte-h9dluc){cursor:not-allowed;opacity:.5}.app-appearance.svelte-1v8d4f6{padding:16px 20px;max-width:460px;color:var(--sh3-fg);background:var(--sh3-bg);font:inherit}h2.svelte-1v8d4f6{margin:0 0 12px;font-size:16px}.row.svelte-1v8d4f6{display:flex;flex-direction:column;gap:4px;margin-bottom:12px;font-size:13px}.row.svelte-1v8d4f6 span:where(.svelte-1v8d4f6){color:var(--sh3-fg-muted)}.row.svelte-1v8d4f6 span:where(.svelte-1v8d4f6) em:where(.svelte-1v8d4f6){font-style:italic;opacity:.7}.name-input.svelte-1v8d4f6{background:var(--sh3-bg-elevated);color:var(--sh3-fg);border:1px solid var(--sh3-border);border-radius:var(--sh3-radius-sm, 3px);padding:6px 8px;font:inherit;font-size:13px}.link.svelte-1v8d4f6{align-self:flex-start;background:transparent;border:none;padding:0;color:var(--sh3-accent);font:inherit;font-size:13px;cursor:pointer;text-decoration:underline}.link--align-right.svelte-1v8d4f6{align-self:flex-end;margin-top:4px}.link.svelte-1v8d4f6:hover{color:var(--sh3-fg)}.preview.svelte-1v8d4f6{display:flex;justify-content:center;margin-bottom:16px}.preview-card.svelte-1v8d4f6{display:flex;flex-direction:column;align-items:center;gap:6px;max-width:160px}.preview-card-square.svelte-1v8d4f6{width:64px;height:64px;display:flex;align-items:center;justify-content:center;background:var(--sh3-grad-bg-elevated, var(--sh3-bg-elevated));border:1px solid var(--sh3-border);border-radius:var(--sh3-radius-md);box-shadow:0 2px 6px #00000040,0 1px 2px #00000026}.preview-card--tinted.svelte-1v8d4f6 .preview-card-square:where(.svelte-1v8d4f6){background:var(--card-color)}.preview-card-icon.svelte-1v8d4f6{width:28px;height:28px;color:var(--sh3-fg)}.preview-card-label.svelte-1v8d4f6{font-weight:600;font-size:11px;line-height:1.2;text-align:center;word-break:break-word;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2}.actions.svelte-1v8d4f6{display:flex;gap:8px;margin-top:16px}.actions.svelte-1v8d4f6 button:where(.svelte-1v8d4f6){background:var(--sh3-bg-elevated);color:var(--sh3-fg);border:1px solid var(--sh3-border);border-radius:var(--sh3-radius-sm, 3px);padding:6px 14px;font:inherit;cursor:pointer}.actions.svelte-1v8d4f6 button.primary:where(.svelte-1v8d4f6){background:var(--sh3-accent);color:#fff;border-color:var(--sh3-accent)}.actions.svelte-1v8d4f6 button:where(.svelte-1v8d4f6):hover{border-color:var(--sh3-accent)}.actions.svelte-1v8d4f6 button:where(.svelte-1v8d4f6):disabled{opacity:.5;cursor:not-allowed}.sh3-home.svelte-11gxeaw{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:48px 24px;overflow:auto;background:var(--sh3-grad-bg, var(--sh3-bg));color:var(--sh3-fg);font-family:system-ui,sans-serif}.sh3-home-header.svelte-11gxeaw{text-align:center;margin-bottom:24px;display:flex;flex-direction:column;align-items:center;gap:12px}.sh3-home-title-row.svelte-11gxeaw{display:flex;align-items:baseline;gap:6px}.sh3-home-credit.svelte-11gxeaw{font-size:11px;color:var(--sh3-fg-muted);letter-spacing:.04em;margin-top:-4px}.sh3-home-credit.svelte-11gxeaw a:where(.svelte-11gxeaw){color:var(--sh3-fg-subtle);text-decoration:none;border-bottom:1px dotted var(--sh3-fg-muted)}.sh3-home-credit.svelte-11gxeaw a:where(.svelte-11gxeaw):hover{color:var(--sh3-accent);border-bottom-color:var(--sh3-accent)}.sh3-home-version.svelte-11gxeaw{font-size:14px;color:var(--sh3-fg-subtle);letter-spacing:.04em}.sh3-home-alpha.svelte-11gxeaw{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#fff;background:var(--sh3-accent);padding:2px 8px;border-radius:8px;position:relative;top:-1px}.sh3-home-filter.svelte-11gxeaw{width:100%;max-width:720px;margin-bottom:24px}.sh3-home-filter-input.svelte-11gxeaw{width:100%;padding:10px 14px;font:inherit;font-size:14px;color:var(--sh3-fg);background:var(--sh3-bg-elevated);border:1px solid var(--sh3-border);border-radius:var(--sh3-radius-md);outline:none;transition:border-color .12s ease,box-shadow .12s ease}.sh3-home-filter-input.svelte-11gxeaw::placeholder{color:var(--sh3-fg-muted)}.sh3-home-filter-input.svelte-11gxeaw:focus{border-color:var(--sh3-accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--sh3-accent) 25%,transparent)}.sh3-home-empty.svelte-11gxeaw{color:var(--sh3-fg-muted);font-style:italic}.sh3-home-section.svelte-11gxeaw{width:100%;max-width:720px;margin-bottom:28px}.sh3-home-section-title.svelte-11gxeaw{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--sh3-fg-subtle);margin:0 0 12px}.sh3-home-grid.svelte-11gxeaw{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:18px 14px}.sh3-home-card.svelte-11gxeaw{display:flex;flex-direction:column;align-items:center;gap:6px;padding:0;background:transparent;border:none;color:inherit;font:inherit;cursor:pointer}.sh3-home-card-square.svelte-11gxeaw{width:64px;height:64px;display:flex;align-items:center;justify-content:center;background:var(--sh3-grad-bg-elevated, var(--sh3-bg-elevated));border:1px solid var(--sh3-border);border-radius:var(--sh3-radius-md);box-shadow:0 2px 6px #00000040,0 1px 2px #00000026;transition:transform .12s ease,border-color .12s ease,box-shadow .12s ease,background .12s ease}.sh3-home-card.svelte-11gxeaw:hover .sh3-home-card-square:where(.svelte-11gxeaw){border-color:var(--sh3-accent);transform:translateY(-1px);box-shadow:0 6px 14px #0000004d,0 0 0 1px color-mix(in srgb,var(--sh3-accent) 35%,transparent),0 4px 12px color-mix(in srgb,var(--sh3-accent) 18%,transparent)}.sh3-home-card.svelte-11gxeaw:focus-visible{outline:none}.sh3-home-card.svelte-11gxeaw:focus-visible .sh3-home-card-square:where(.svelte-11gxeaw){border-color:var(--sh3-accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--sh3-accent) 40%,transparent)}.sh3-home-card.svelte-11gxeaw:active .sh3-home-card-square:where(.svelte-11gxeaw){transform:translateY(0)}.sh3-home-card-label.svelte-11gxeaw{font-weight:600;font-size:11px;line-height:1.2;text-align:center;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;word-break:break-word}.sh3-home-card-icon.svelte-11gxeaw{width:28px;height:28px;color:var(--sh3-fg)}.sh3-home-card--tinted.svelte-11gxeaw .sh3-home-card-square:where(.svelte-11gxeaw){background:var(--card-color)}.keys-peers.svelte-1s56qq{padding:24px;font-family:system-ui,sans-serif;color:var(--sh3-fg)}.keys-peers-header.svelte-1s56qq{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.keys-peers-header.svelte-1s56qq h2:where(.svelte-1s56qq){margin:0;font-size:18px}.keys-peers-list.svelte-1s56qq{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.keys-peers-item.svelte-1s56qq{display:flex;justify-content:space-between;align-items:flex-start;padding:12px 16px;background:var(--sh3-bg-elevated, #252540);border:1px solid var(--sh3-border, #3a3a5c);border-radius:var(--sh3-radius, 6px);gap:12px}.keys-peers-info.svelte-1s56qq{display:flex;flex-direction:column;gap:3px;min-width:0}.keys-peers-label.svelte-1s56qq{font-weight:600}.keys-peers-meta.svelte-1s56qq{font-size:11px;color:var(--sh3-fg-subtle)}.keys-peers-actions.svelte-1s56qq{display:flex;gap:6px;flex-shrink:0;align-items:flex-start;padding-top:2px}.keys-peers-btn-danger.svelte-1s56qq{background:transparent;color:var(--sh3-error, #d32f2f);border:1px solid var(--sh3-error, #d32f2f);font-size:12px;padding:4px 10px;border-radius:var(--sh3-radius, 6px);cursor:pointer}.keys-peers-btn-secondary.svelte-1s56qq{background:transparent;color:var(--sh3-fg-subtle);border:1px solid var(--sh3-border, #3a3a5c);font-size:12px;padding:4px 10px;border-radius:var(--sh3-radius, 6px);cursor:pointer}.keys-peers-muted.svelte-1s56qq{color:var(--sh3-fg-muted);font-style:italic}.keys-peers-error.svelte-1s56qq{color:var(--sh3-error, #d32f2f);font-size:13px}.confirm-dialog.svelte-1k1962w{display:flex;flex-direction:column;gap:16px;padding:20px 24px;min-width:360px;max-width:480px}.confirm-dialog-title.svelte-1k1962w{font-size:16px;font-weight:600;color:var(--sh3-fg)}.confirm-dialog-body.svelte-1k1962w{font-size:13px;color:var(--sh3-fg-muted, var(--sh3-fg));line-height:1.5}.confirm-dialog-actions.svelte-1k1962w{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}.confirm-dialog-btn.svelte-1k1962w{font-size:13px;padding:6px 14px;border-radius:var(--sh3-radius-sm, 4px);border:1px solid var(--sh3-border-strong);background:transparent;color:var(--sh3-fg);cursor:pointer}.confirm-dialog-btn.svelte-1k1962w:disabled{opacity:.6;cursor:not-allowed}.confirm-dialog-btn-default.svelte-1k1962w{background:var(--sh3-bg-elevated)}.confirm-dialog-btn-danger.svelte-1k1962w{background:transparent;color:var(--sh3-error, #d32f2f);border-color:var(--sh3-error, #d32f2f)}.perm-modal-backdrop.svelte-1ipp1r6{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.perm-modal-panel.svelte-1ipp1r6{background:var(--sh3-bg, #1e1e1e);color:var(--sh3-fg, #e0e0e0);border:1px solid var(--sh3-border, #444);border-radius:var(--sh3-radius-md);box-shadow:0 8px 32px #0006;min-width:360px;max-width:520px;max-height:80vh;display:flex;flex-direction:column;font-family:var(--sh3-font-ui)}.perm-modal-header.svelte-1ipp1r6{padding:16px 20px 12px;border-bottom:1px solid var(--sh3-border, #444)}.perm-modal-header.svelte-1ipp1r6 h3:where(.svelte-1ipp1r6){margin:0 0 4px;font-size:1.0625rem;font-weight:600}.perm-modal-subtitle.svelte-1ipp1r6{font-size:.8125rem;color:var(--sh3-fg-muted, #888)}.perm-modal-author.svelte-1ipp1r6{margin-left:8px}.perm-modal-body.svelte-1ipp1r6{padding:16px 20px;overflow-y:auto;flex:1}.perm-modal-intro.svelte-1ipp1r6{margin:0 0 8px;font-size:.875rem}.perm-modal-empty.svelte-1ipp1r6{margin:0;font-size:.875rem;color:var(--sh3-fg-muted, #888);font-style:italic}.perm-modal-list.svelte-1ipp1r6{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column;gap:8px}.perm-modal-item.svelte-1ipp1r6{padding:8px 10px;background:var(--sh3-input-bg, #2a2a2a);border:1px solid var(--sh3-border, #444);border-radius:var(--sh3-radius-sm)}.perm-modal-item-title.svelte-1ipp1r6{font-size:.875rem;font-weight:600}.perm-modal-item-desc.svelte-1ipp1r6{font-size:.75rem;color:var(--sh3-fg-muted, #888);margin-top:2px}.perm-modal-added.svelte-1ipp1r6 .perm-modal-item:where(.svelte-1ipp1r6){border-color:color-mix(in srgb,var(--sh3-warning, #ff9800) 60%,var(--sh3-border, #444))}.perm-modal-removed.svelte-1ipp1r6 .perm-modal-item:where(.svelte-1ipp1r6){opacity:.75}.perm-modal-footer.svelte-1ipp1r6{padding:12px 20px;border-top:1px solid var(--sh3-border, #444);display:flex;justify-content:flex-end;gap:8px}.perm-modal-cancel.svelte-1ipp1r6{padding:6px 14px;background:transparent;color:var(--sh3-fg, #e0e0e0);border:1px solid var(--sh3-border, #444);border-radius:var(--sh3-radius);font-size:.8125rem;cursor:pointer}.perm-modal-confirm.svelte-1ipp1r6{padding:6px 14px;background:var(--sh3-accent, #007acc);color:#fff;border:1px solid var(--sh3-accent, #007acc);border-radius:var(--sh3-radius);font-size:.8125rem;cursor:pointer;font-weight:600}.store-view.svelte-1aafzt0{font-family:var(--sh3-font-ui);color:var(--sh3-fg, #e0e0e0);background:var(--sh3-bg, #1e1e1e);padding:16px;height:100%;overflow-y:auto;box-sizing:border-box}.store-header.svelte-1aafzt0{margin-bottom:16px}.store-header.svelte-1aafzt0 h2:where(.svelte-1aafzt0){margin:0 0 8px;font-size:1.25rem;font-weight:600}.store-controls.svelte-1aafzt0{display:flex;gap:8px;flex-wrap:wrap}.store-search.svelte-1aafzt0{flex:1;min-width:160px;padding:6px 10px;background:var(--sh3-input-bg, #2a2a2a);color:var(--sh3-fg, #e0e0e0);border:1px solid var(--sh3-border, #444);border-radius:var(--sh3-radius);font-family:inherit;font-size:.875rem}.store-search.svelte-1aafzt0::placeholder{color:var(--sh3-fg-muted, #888)}.store-filter.svelte-1aafzt0{padding:6px 10px;background:var(--sh3-input-bg, #2a2a2a);color:var(--sh3-fg, #e0e0e0);border:1px solid var(--sh3-border, #444);border-radius:var(--sh3-radius);font-family:inherit;font-size:.875rem}.store-refresh.svelte-1aafzt0:disabled{opacity:.6;cursor:not-allowed}.store-error.svelte-1aafzt0{padding:8px 12px;margin-bottom:12px;background:color-mix(in srgb,var(--sh3-error, #d32f2f) 15%,transparent);color:var(--sh3-error, #d32f2f);border:1px solid var(--sh3-error, #d32f2f);border-radius:var(--sh3-radius);font-size:.8125rem}.store-grid.svelte-1aafzt0{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}.store-card.svelte-1aafzt0{background:var(--sh3-input-bg, #2a2a2a);border:1px solid var(--sh3-border, #444);border-radius:var(--sh3-radius-md);padding:14px;display:flex;flex-direction:column;gap:8px}.store-card.svelte-1aafzt0:hover{border-color:var(--sh3-accent, #007acc)}.store-card-header.svelte-1aafzt0{display:flex;align-items:center;gap:10px}.store-card-icon.svelte-1aafzt0{width:36px;height:36px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.store-icon-img.svelte-1aafzt0{width:36px;height:36px;border-radius:var(--sh3-radius);object-fit:cover}.store-icon-placeholder.svelte-1aafzt0{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:var(--sh3-accent, #007acc);color:#fff;border-radius:var(--sh3-radius);font-weight:700;font-size:1rem}.store-card-title.svelte-1aafzt0{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.store-card-label.svelte-1aafzt0{font-weight:600;font-size:.9375rem}.store-card-badge.svelte-1aafzt0{font-size:.6875rem;padding:1px 6px;border-radius:var(--sh3-radius-sm);text-transform:uppercase;font-weight:600;letter-spacing:.04em}.badge-shard.svelte-1aafzt0{background:color-mix(in srgb,var(--sh3-accent, #007acc) 25%,transparent);color:var(--sh3-accent, #007acc)}.badge-app.svelte-1aafzt0{background:color-mix(in srgb,var(--sh3-success, #4caf50) 25%,transparent);color:var(--sh3-success, #4caf50)}.store-card-version.svelte-1aafzt0{font-size:.75rem;color:var(--sh3-fg-muted, #888)}.store-card-desc.svelte-1aafzt0{margin:0;font-size:.8125rem;color:var(--sh3-fg-muted, #888);line-height:1.4}.store-card-author.svelte-1aafzt0{font-size:.75rem;color:var(--sh3-fg-muted, #888)}.store-card-warning.svelte-1aafzt0{font-size:.75rem;color:var(--sh3-warning, #ff9800);padding:4px 8px;background:color-mix(in srgb,var(--sh3-warning, #ff9800) 10%,transparent);border-radius:var(--sh3-radius-sm)}.store-card-actions.svelte-1aafzt0{margin-top:auto;display:flex;justify-content:flex-end}.store-install-btn.svelte-1aafzt0{padding:5px 14px;font-size:.8125rem}.store-install-btn.svelte-1aafzt0:disabled{opacity:.6;cursor:not-allowed}.store-installed-label.svelte-1aafzt0{font-size:.8125rem;color:var(--sh3-success, #4caf50);font-weight:600}.store-install-wrap.svelte-1aafzt0{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.store-card-missing.svelte-1aafzt0{font-size:.75rem;color:var(--sh3-warning, #ff9800)}.store-update-btn.svelte-1aafzt0{padding:5px 14px;background:var(--sh3-warning, #fbbf24);color:var(--sh3-fg-on-warning, #1a1b1e);font-size:.8125rem}.store-update-btn.svelte-1aafzt0:hover:not(:disabled){filter:brightness(1.1)}.store-update-btn.svelte-1aafzt0:disabled{opacity:.6;cursor:not-allowed}.store-empty.svelte-1aafzt0{text-align:center;padding:32px 16px;color:var(--sh3-fg-muted, #888);font-size:.875rem}.store-registries.svelte-1aafzt0{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}.store-registry-entry.svelte-1aafzt0{display:flex;align-items:center;justify-content:space-between;padding:4px 8px;background:var(--sh3-input-bg, #2a2a2a);border:1px solid var(--sh3-border, #444);border-radius:var(--sh3-radius);font-size:.8125rem}.store-registry-url.svelte-1aafzt0{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--sh3-fg-muted, #888)}.store-registry-remove.svelte-1aafzt0{padding:2px 8px;background:transparent;color:var(--sh3-error, #d32f2f);border:1px solid var(--sh3-error, #d32f2f);border-radius:var(--sh3-radius-sm);font-size:.75rem;flex-shrink:0;margin-left:8px}.store-add-registry.svelte-1aafzt0{display:flex;gap:8px;margin-bottom:12px}.store-registry-input.svelte-1aafzt0{flex:1;padding:6px 10px;background:var(--sh3-input-bg, #2a2a2a);color:var(--sh3-fg, #e0e0e0);border:1px solid var(--sh3-border, #444);border-radius:var(--sh3-radius);font-family:inherit;font-size:.8125rem}.store-registry-input.svelte-1aafzt0::placeholder{color:var(--sh3-fg-muted, #888)}.store-add-btn.svelte-1aafzt0{font-size:.8125rem;white-space:nowrap}.store-add-btn.svelte-1aafzt0:disabled{opacity:.6;cursor:not-allowed}.app-update-modal.svelte-1tiy4hy{padding:16px 20px;max-width:460px;color:var(--sh3-fg);background:var(--sh3-bg);font:inherit}h2.svelte-1tiy4hy{margin:0 0 8px;font-size:16px}p.svelte-1tiy4hy{margin:4px 0;font-size:13px}.hint.svelte-1tiy4hy{color:var(--sh3-fg-muted);font-size:12px}.error.svelte-1tiy4hy{color:var(--sh3-error, #c33)}code.svelte-1tiy4hy{font-family:var(--sh3-font-mono, monospace);background:var(--sh3-bg-elevated);padding:0 4px;border-radius:var(--sh3-radius-sm, 3px)}.actions.svelte-1tiy4hy{display:flex;gap:8px;margin-top:16px}.actions.svelte-1tiy4hy button:where(.svelte-1tiy4hy){background:var(--sh3-bg-elevated);color:var(--sh3-fg);border:1px solid var(--sh3-border);border-radius:var(--sh3-radius-sm, 3px);padding:6px 14px;font:inherit;cursor:pointer}.actions.svelte-1tiy4hy button.primary:where(.svelte-1tiy4hy){background:var(--sh3-accent);color:#fff;border-color:var(--sh3-accent)}.actions.svelte-1tiy4hy button:where(.svelte-1tiy4hy):hover{border-color:var(--sh3-accent)}.actions.svelte-1tiy4hy button:where(.svelte-1tiy4hy):disabled{opacity:.5;cursor:not-allowed}.uninstall-dialog.svelte-86mxbl{padding:16px 20px;max-width:460px;color:var(--sh3-fg);background:var(--sh3-bg);font:inherit}h2.svelte-86mxbl{margin:0 0 8px;font-size:16px}p.svelte-86mxbl{margin:4px 0;font-size:13px}.hint.svelte-86mxbl{color:var(--sh3-fg-muted);font-size:12px}.error.svelte-86mxbl{color:var(--sh3-error, #c33)}code.svelte-86mxbl{font-family:var(--sh3-font-mono, monospace);background:var(--sh3-bg-elevated);padding:0 4px;border-radius:var(--sh3-radius-sm, 3px)}.actions.svelte-86mxbl{display:flex;gap:8px;margin-top:16px}.actions.svelte-86mxbl button:where(.svelte-86mxbl){background:var(--sh3-bg-elevated);color:var(--sh3-fg);border:1px solid var(--sh3-border);border-radius:var(--sh3-radius-sm, 3px);padding:6px 14px;font:inherit;cursor:pointer}.actions.svelte-86mxbl button.danger:where(.svelte-86mxbl){background:var(--sh3-error, #c33);color:#fff;border-color:var(--sh3-error, #c33)}.actions.svelte-86mxbl button:where(.svelte-86mxbl):hover{border-color:var(--sh3-accent)}.actions.svelte-86mxbl button:where(.svelte-86mxbl):disabled{opacity:.5;cursor:not-allowed}.app-info-modal.svelte-1w44jyn{padding:16px 20px;min-width:360px;max-width:520px;color:var(--sh3-fg);background:var(--sh3-bg);font:inherit}header.svelte-1w44jyn{display:flex;align-items:baseline;gap:10px;margin-bottom:10px}header.svelte-1w44jyn h2:where(.svelte-1w44jyn){margin:0;font-size:16px}header.svelte-1w44jyn .id:where(.svelte-1w44jyn){font-size:12px;color:var(--sh3-fg-muted)}.version.svelte-1w44jyn{margin:4px 0 12px;font-size:13px;display:flex;align-items:center;gap:8px}.description.svelte-1w44jyn{margin:8px 0 12px}.description.svelte-1w44jyn p:where(.svelte-1w44jyn){margin:4px 0 0;font-size:13px;line-height:1.5;white-space:pre-wrap}.row.svelte-1w44jyn{margin:6px 0;font-size:13px;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.label.svelte-1w44jyn{color:var(--sh3-fg-muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em;flex:0 0 auto;min-width:90px}.chips.svelte-1w44jyn{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:4px}.chips.svelte-1w44jyn code:where(.svelte-1w44jyn){padding:1px 6px;border:1px solid var(--sh3-border);border-radius:var(--sh3-radius-sm, 3px)}.badge.svelte-1w44jyn{font-size:11px;padding:1px 6px;border-radius:var(--sh3-radius-sm, 3px);background:var(--sh3-bg-elevated);color:var(--sh3-fg-muted);border:1px solid var(--sh3-border)}.installed.svelte-1w44jyn{margin-top:12px;padding-top:10px;border-top:1px solid var(--sh3-border)}code.svelte-1w44jyn{font-family:var(--sh3-font-mono, monospace);background:var(--sh3-bg-elevated);padding:0 4px;border-radius:var(--sh3-radius-sm, 3px)}.actions.svelte-1w44jyn{display:flex;gap:8px;margin-top:16px;justify-content:flex-end}.actions.svelte-1w44jyn button:where(.svelte-1w44jyn){background:var(--sh3-bg-elevated);color:var(--sh3-fg);border:1px solid var(--sh3-border);border-radius:var(--sh3-radius-sm, 3px);padding:6px 14px;font:inherit;cursor:pointer}.actions.svelte-1w44jyn button:where(.svelte-1w44jyn):hover{border-color:var(--sh3-accent)}.shell-text.svelte-ypr8s{margin:0;padding:0 8px;font-family:var(--sh3-font-mono, monospace);white-space:pre-wrap;word-break:break-word;color:var(--sh3-fg, #ddd)}.shell-text.stderr.svelte-ypr8s{color:var(--sh3-fg-error, #f88)}.shell-prompt.svelte-u0gb59{padding:4px 8px 0;font-family:var(--sh3-font-mono, monospace);display:flex;gap:8px}.shell-prompt-cwd.svelte-u0gb59{color:var(--sh3-fg-muted, #888)}.shell-prompt-arrow.svelte-u0gb59{color:var(--sh3-accent, #6cf)}.shell-prompt-line.svelte-u0gb59{color:var(--sh3-fg, #ddd)}.shell-status.svelte-nfxdpt{padding:2px 8px;font-family:var(--sh3-font-mono, monospace);font-style:italic;white-space:pre-wrap;word-break:break-word}.shell-status.info.svelte-nfxdpt{color:var(--sh3-fg-muted, #888)}.shell-status.warn.svelte-nfxdpt{color:var(--sh3-fg-warn, #fc6)}.shell-status.error.svelte-nfxdpt{color:var(--sh3-fg-error, #f88)}.shell-rich.svelte-1rnhl05{padding:4px 8px}.shell-scrollback.svelte-isy3jt{flex:1 1 auto;overflow-y:auto;overflow-anchor:none;background:var(--sh3-bg, #111);color:var(--sh3-fg, #ddd)}.sh3-cmdline.svelte-ngn09j{display:flex;align-items:baseline;gap:6px;padding:4px 8px;border:1px solid transparent;border-radius:var(--sh3-radius);font-family:var(--sh3-font-mono, monospace);font-size:var(--sh3-font-size, 13px);line-height:1.4;transition:border-color var(--sh3-motion-fast) var(--sh3-ease-standard),box-shadow var(--sh3-motion-fast) var(--sh3-ease-standard)}.sh3-cmdline.svelte-ngn09j:focus-within{border-color:var(--sh3-input-border-focus);box-shadow:var(--sh3-focus-ring)}.sh3-cmdline__prefix.svelte-ngn09j{flex-shrink:0;font:inherit;line-height:inherit;margin:0}.sh3-cmdline__input.svelte-ngn09j{flex:1 1 auto;padding:0;margin:0;background:transparent;border:0;outline:0;color:inherit;font:inherit;line-height:inherit;-webkit-appearance:none;appearance:none}.sh3-cmdline__input.svelte-ngn09j::-webkit-search-cancel-button,.sh3-cmdline__input.svelte-ngn09j::-webkit-search-decoration,.sh3-cmdline__input.svelte-ngn09j::-webkit-search-results-button,.sh3-cmdline__input.svelte-ngn09j::-webkit-search-results-decoration{display:none}.sh3-cmdline__input.svelte-ngn09j:focus,.sh3-cmdline__input.svelte-ngn09j:focus-visible{outline:none;box-shadow:none;border:none}.sh3-cmdline__decoy.svelte-ngn09j{display:none}.sh3-cmdline--disabled.svelte-ngn09j .sh3-cmdline__input:where(.svelte-ngn09j){opacity:.5;cursor:default}.shell-input-row.svelte-1dfv2gk{border-top:1px solid var(--sh3-border, #333)}.shell-input-cwd.svelte-1dfv2gk{color:var(--sh3-fg-muted, #888)}.shell-input-arrow.svelte-1dfv2gk{color:var(--sh3-accent, #6cf);margin-left:6px}.toolbar.svelte-gnowwz{display:flex;align-items:center;gap:6px;padding:4px 6px;background:var(--sh3-bg-elevated, var(--sh3-bg, #1a1a1a));border-bottom:1px solid var(--sh3-border, #333);flex-shrink:0}.toolbar-slots.svelte-gnowwz{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.mode-label.svelte-1i4cqlj{font-size:.85em;color:var(--sh3-fg-dim, var(--sh3-fg-muted, #888))}.focus-lock-btn.svelte-1q6gbap{background:none;border:1px solid var(--sh3-border, #444);border-radius:3px;cursor:pointer;padding:2px 5px;font-size:.9em;line-height:1}.focus-lock-btn.svelte-1q6gbap:hover{background:var(--sh3-hover, #222)}.target-shard.svelte-1nn2m6x{font-size:.85em;color:var(--sh3-fg-dim, #888);font-family:monospace}.busy.svelte-7wyurd{display:inline-flex;align-items:center;gap:6px;color:var(--sh3-fg-muted, #aaa);font-size:.85em}.spinner.svelte-7wyurd{width:12px;height:12px;border:2px solid var(--sh3-fg-muted, #aaa);border-top-color:transparent;border-radius:50%;animation:svelte-7wyurd-busy-spin .8s linear infinite}@keyframes svelte-7wyurd-busy-spin{to{transform:rotate(360deg)}}.shell-terminal.svelte-13komre{display:flex;flex-direction:column;height:100%;background:var(--sh3-bg, #111);color:var(--sh3-fg, #ddd)}.shell-rich-help.svelte-m248jy table:where(.svelte-m248jy){border-collapse:collapse;width:100%}.shell-rich-help.svelte-m248jy th:where(.svelte-m248jy),.shell-rich-help.svelte-m248jy td:where(.svelte-m248jy){padding:2px 8px;text-align:left}.shell-rich-help.svelte-m248jy button:where(.svelte-m248jy){background:none;border:0;color:var(--sh3-link, #6cf);cursor:pointer;padding:0;font:inherit}.shell-rich-help.svelte-m248jy button:where(.svelte-m248jy):hover{text-decoration:underline}.shell-rich-history.svelte-o8m437 ol:where(.svelte-o8m437){list-style-position:inside;margin:0;padding:0}.shell-rich-history.svelte-o8m437 li:where(.svelte-o8m437){padding:2px 0}.shell-rich-history.svelte-o8m437 button:where(.svelte-o8m437){background:none;border:0;color:var(--sh3-link, #6cf);cursor:pointer;padding:0;font:inherit;text-align:left}.shell-rich-history.svelte-o8m437 button:where(.svelte-o8m437):hover{text-decoration:underline}.shell-rich-apps.svelte-1u5krjz table:where(.svelte-1u5krjz){border-collapse:collapse;width:100%}.shell-rich-apps.svelte-1u5krjz th:where(.svelte-1u5krjz),.shell-rich-apps.svelte-1u5krjz td:where(.svelte-1u5krjz){padding:2px 8px;text-align:left}.shell-rich-apps.svelte-1u5krjz button:where(.svelte-1u5krjz){background:none;border:0;color:var(--sh3-link, #6cf);cursor:pointer;padding:0;font:inherit}.shell-rich-apps.svelte-1u5krjz button:where(.svelte-1u5krjz):hover{text-decoration:underline}.shell-rich-appcard.svelte-npcp8i{padding:8px;border:1px solid var(--sh3-border, #444)}.shell-rich-appcard.svelte-npcp8i h3:where(.svelte-npcp8i){margin:0 0 8px}.shell-rich-appcard.svelte-npcp8i p:where(.svelte-npcp8i){margin:4px 0}.shell-rich-shards.svelte-sc3ux4 table:where(.svelte-sc3ux4){border-collapse:collapse;width:100%}.shell-rich-shards.svelte-sc3ux4 th:where(.svelte-sc3ux4),.shell-rich-shards.svelte-sc3ux4 td:where(.svelte-sc3ux4){padding:2px 8px;text-align:left}.shell-rich-views.svelte-15elbr1 table:where(.svelte-15elbr1){border-collapse:collapse;width:100%}.shell-rich-views.svelte-15elbr1 th:where(.svelte-15elbr1),.shell-rich-views.svelte-15elbr1 td:where(.svelte-15elbr1){padding:2px 8px;text-align:left}.shell-rich-views.svelte-15elbr1 button:where(.svelte-15elbr1){background:none;border:0;color:var(--sh3-link, #6cf);cursor:pointer;padding:0;font:inherit}.shell-rich-views.svelte-15elbr1 button:where(.svelte-15elbr1):hover{text-decoration:underline}.shell-rich-zones.svelte-1w7onag table:where(.svelte-1w7onag){border-collapse:collapse;width:100%}.shell-rich-zones.svelte-1w7onag th:where(.svelte-1w7onag),.shell-rich-zones.svelte-1w7onag td:where(.svelte-1w7onag){padding:2px 8px;text-align:left}.shell-rich-zonetree.svelte-13iiyr1 pre:where(.svelte-13iiyr1){overflow:auto;padding:8px;background:var(--sh3-bg, #000);color:var(--sh3-fg, #fff)}.shell-rich-env.svelte-1ox8vog table:where(.svelte-1ox8vog){border-collapse:collapse;width:100%}.shell-rich-env.svelte-1ox8vog th:where(.svelte-1ox8vog),.shell-rich-env.svelte-1ox8vog td:where(.svelte-1ox8vog){padding:2px 8px;text-align:left}.layout-save.svelte-1w8uhw5{padding:16px 20px;max-width:460px;color:var(--sh3-fg);background:var(--sh3-bg);font:inherit}h2.svelte-1w8uhw5{margin:0 0 12px;font-size:16px}.row.svelte-1w8uhw5{display:flex;flex-direction:column;gap:4px;margin-bottom:12px;font-size:13px}.row.svelte-1w8uhw5 span:where(.svelte-1w8uhw5){color:var(--sh3-fg-muted)}.name-input.svelte-1w8uhw5{background:var(--sh3-bg-elevated);color:var(--sh3-fg);border:1px solid var(--sh3-border);border-radius:var(--sh3-radius-sm, 3px);padding:6px 8px;font:inherit;font-size:13px}.preview.svelte-1w8uhw5{margin:4px 0 12px}.preview-label.svelte-1w8uhw5{font-size:12px;color:var(--sh3-fg-muted);margin-bottom:4px}.preview-list.svelte-1w8uhw5{list-style:none;padding:0;margin:0;font-size:12px;max-height:160px;overflow:auto;border:1px solid var(--sh3-border);border-radius:var(--sh3-radius-sm, 3px);background:var(--sh3-bg-elevated)}.preview-list.svelte-1w8uhw5 li:where(.svelte-1w8uhw5){padding:4px 8px;border-bottom:1px solid var(--sh3-border)}.preview-list.svelte-1w8uhw5 li:where(.svelte-1w8uhw5):last-child{border-bottom:0}.muted.svelte-1w8uhw5{color:var(--sh3-fg-muted)}.error.svelte-1w8uhw5{color:var(--sh3-fg-muted);font-style:italic;margin:4px 0 12px}.actions.svelte-1w8uhw5{display:flex;gap:8px;margin-top:8px}.actions.svelte-1w8uhw5 button:where(.svelte-1w8uhw5){background:var(--sh3-bg-elevated);color:var(--sh3-fg);border:1px solid var(--sh3-border);border-radius:var(--sh3-radius-sm, 3px);padding:6px 14px;font:inherit;cursor:pointer}.actions.svelte-1w8uhw5 button.primary:where(.svelte-1w8uhw5){background:var(--sh3-accent);color:#fff;border-color:var(--sh3-accent)}.actions.svelte-1w8uhw5 button:where(.svelte-1w8uhw5):hover{border-color:var(--sh3-accent)}.actions.svelte-1w8uhw5 button:where(.svelte-1w8uhw5):disabled{opacity:.5;cursor:not-allowed}.admin-users.svelte-4q792t{padding:24px;font-family:system-ui,sans-serif;color:var(--sh3-fg)}.admin-users-header.svelte-4q792t{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.admin-users-header.svelte-4q792t h2:where(.svelte-4q792t){margin:0;font-size:18px}.admin-create-form.svelte-4q792t,.admin-edit-form.svelte-4q792t{display:flex;flex-direction:column;gap:8px;margin-bottom:16px;max-width:400px}.admin-input.svelte-4q792t{padding:8px 12px;background:var(--sh3-bg, #1a1a2e);color:var(--sh3-fg);border:1px solid var(--sh3-border, #3a3a5c);border-radius:var(--sh3-radius, 6px);font-size:13px}.admin-btn.svelte-4q792t{font-weight:600;font-size:13px}.admin-btn.svelte-4q792t:disabled{opacity:.6;cursor:not-allowed}.admin-btn-secondary.svelte-4q792t{background:transparent;color:var(--sh3-fg-subtle);border:1px solid var(--sh3-border);font-size:12px}.admin-btn-danger.svelte-4q792t{background:transparent;color:var(--sh3-error, #d32f2f);border:1px solid var(--sh3-error, #d32f2f);font-size:12px}.admin-user-list.svelte-4q792t{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.admin-user-item.svelte-4q792t{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--sh3-bg-elevated, #252540);border:1px solid var(--sh3-border, #3a3a5c);border-radius:var(--sh3-radius, 6px)}.admin-user-info.svelte-4q792t{display:flex;flex-direction:column;gap:2px}.admin-user-name.svelte-4q792t{font-weight:600}.admin-user-meta.svelte-4q792t{font-size:11px;color:var(--sh3-fg-subtle)}.admin-user-actions.svelte-4q792t,.admin-edit-actions.svelte-4q792t{display:flex;gap:6px}.admin-error.svelte-4q792t{color:var(--sh3-error, #d32f2f);font-size:13px}.admin-muted.svelte-4q792t{color:var(--sh3-fg-muted);font-style:italic}.admin-auth.svelte-1hsgdb4{padding:24px;font-family:system-ui,sans-serif;color:var(--sh3-fg)}.admin-auth.svelte-1hsgdb4 h2:where(.svelte-1hsgdb4){margin:0 0 16px;font-size:18px}.admin-auth-fields.svelte-1hsgdb4{display:flex;flex-direction:column;gap:16px;max-width:480px}.admin-toggle.svelte-1hsgdb4{display:flex;flex-wrap:wrap;align-items:center;gap:8px;cursor:pointer}.admin-toggle.svelte-1hsgdb4 input:where(.svelte-1hsgdb4){accent-color:var(--sh3-accent, #7c7cf0)}.admin-hint.svelte-1hsgdb4{flex-basis:100%;font-size:11px;color:var(--sh3-fg-muted);margin-left:24px}.admin-field.svelte-1hsgdb4{display:flex;flex-direction:column;gap:4px}.admin-field.svelte-1hsgdb4 span:where(.svelte-1hsgdb4){font-size:13px}.admin-input.svelte-1hsgdb4{padding:8px 12px;background:var(--sh3-bg);color:var(--sh3-fg);border:1px solid var(--sh3-border);border-radius:var(--sh3-radius, 6px);font-size:13px}.admin-input-sm.svelte-1hsgdb4{max-width:120px}.admin-btn.svelte-1hsgdb4{padding:8px 16px;font-weight:600;align-self:flex-start}.admin-btn.svelte-1hsgdb4:disabled{opacity:.6;cursor:not-allowed}.admin-error.svelte-1hsgdb4{margin-top:8px;color:var(--sh3-error, #d32f2f);font-size:13px}.admin-muted.svelte-1hsgdb4{color:var(--sh3-fg-muted);font-style:italic}.admin-system.svelte-1gkiloq{padding:24px;font-family:system-ui,sans-serif;color:var(--sh3-fg)}.admin-system.svelte-1gkiloq h2:where(.svelte-1gkiloq){margin:0 0 16px;font-size:18px}.admin-system.svelte-1gkiloq h3:where(.svelte-1gkiloq){margin:0 0 8px;font-size:14px;text-transform:uppercase;letter-spacing:.05em;color:var(--sh3-fg-subtle)}.admin-system-info.svelte-1gkiloq{margin-bottom:24px}.admin-system-row.svelte-1gkiloq{display:flex;gap:12px;padding:8px 0;border-bottom:1px solid var(--sh3-border, #3a3a5c);font-size:13px}.admin-system-label.svelte-1gkiloq{color:var(--sh3-fg-subtle);min-width:140px}.admin-system-section.svelte-1gkiloq{margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid var(--sh3-border, #3a3a5c)}.admin-system-section.svelte-1gkiloq:last-child{border-bottom:none}.admin-system-hint.svelte-1gkiloq{font-size:13px;color:var(--sh3-fg-subtle);margin:0 0 12px}.admin-system-readout.svelte-1gkiloq{font-size:13px;margin:8px 0 12px}.admin-system-snaps.svelte-1gkiloq{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.admin-snap.svelte-1gkiloq{padding:4px 10px;font-size:12px;background:transparent;border:1px solid var(--sh3-border, #3a3a5c);color:var(--sh3-fg);cursor:pointer;border-radius:var(--sh3-radius-sm, 3px)}.admin-snap.active.svelte-1gkiloq{background:var(--sh3-accent, #4a7bd4);color:var(--sh3-bg);border-color:var(--sh3-accent, #4a7bd4)}.admin-snap.svelte-1gkiloq:disabled{opacity:.5;cursor:not-allowed}.admin-system-actions.svelte-1gkiloq{display:flex;flex-direction:row;gap:8px;align-items:center;flex-wrap:wrap}.admin-btn.svelte-1gkiloq{padding:8px 16px;background:var(--sh3-accent, #4a7bd4);color:var(--sh3-bg);border:1px solid var(--sh3-accent, #4a7bd4);font-weight:600;cursor:pointer;border-radius:var(--sh3-radius-sm, 3px)}.admin-btn.svelte-1gkiloq:disabled{opacity:.5;cursor:not-allowed}.admin-btn-ghost.svelte-1gkiloq{padding:8px 16px;background:transparent;color:var(--sh3-fg);border:1px solid var(--sh3-border, #3a3a5c);cursor:pointer;border-radius:var(--sh3-radius-sm, 3px)}.admin-btn-ghost.svelte-1gkiloq:disabled{opacity:.5;cursor:not-allowed}.admin-btn-danger.svelte-1gkiloq{padding:8px 16px;background:transparent;color:var(--sh3-error, #d32f2f);border:1px solid var(--sh3-error, #d32f2f);font-weight:600;cursor:pointer;border-radius:var(--sh3-radius-sm, 3px)}.admin-btn-danger.svelte-1gkiloq:disabled{opacity:.6;cursor:not-allowed}.admin-error.svelte-1gkiloq{color:var(--sh3-error, #d32f2f);font-size:13px}input[type=range].svelte-1gkiloq{width:100%;max-width:480px}.admin-keys.svelte-1afg5z5{padding:24px;font-family:system-ui,sans-serif;color:var(--sh3-fg)}.admin-keys-header.svelte-1afg5z5{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.admin-keys-header.svelte-1afg5z5 h2:where(.svelte-1afg5z5){margin:0;font-size:18px}.admin-create-form.svelte-1afg5z5{display:flex;flex-direction:column;gap:8px;margin-bottom:16px;max-width:400px}.admin-input.svelte-1afg5z5{padding:8px 12px;background:var(--sh3-bg, #1a1a2e);color:var(--sh3-fg);border:1px solid var(--sh3-border, #3a3a5c);border-radius:var(--sh3-radius, 6px);font-size:13px}.admin-btn.svelte-1afg5z5{font-weight:600;font-size:13px}.admin-btn.svelte-1afg5z5:disabled{opacity:.6;cursor:not-allowed}.admin-btn-secondary.svelte-1afg5z5{background:transparent;color:var(--sh3-fg-subtle);border:1px solid var(--sh3-border);font-size:12px}.admin-btn-danger.svelte-1afg5z5{background:transparent;color:var(--sh3-error, #d32f2f);border:1px solid var(--sh3-error, #d32f2f);font-size:12px}.admin-key-list.svelte-1afg5z5{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.admin-key-item.svelte-1afg5z5{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--sh3-bg-elevated, #252540);border:1px solid var(--sh3-border, #3a3a5c);border-radius:var(--sh3-radius, 6px)}.admin-key-info.svelte-1afg5z5{display:flex;flex-direction:column;gap:2px}.admin-key-label.svelte-1afg5z5{font-weight:600}.admin-key-meta.svelte-1afg5z5{font-size:11px;color:var(--sh3-fg-subtle)}.admin-key-value.svelte-1afg5z5{font-size:12px;color:var(--sh3-fg-muted);background:var(--sh3-bg, #1a1a2e);padding:2px 6px;border-radius:3px;margin-top:2px;word-break:break-all}.admin-key-actions.svelte-1afg5z5{display:flex;gap:6px;flex-shrink:0}.admin-muted.svelte-1afg5z5{color:var(--sh3-fg-muted);font-style:italic}.admin-error.svelte-1afg5z5{color:var(--sh3-error, #d32f2f);font-size:13px}button,input[type=button],input[type=submit],input[type=reset],.sh3-base-button{padding:6px 14px;background:var(--sh3-accent);color:var(--sh3-fg-on-accent);border:none;border-radius:var(--sh3-radius);cursor:pointer;font-family:inherit;font-size:.875rem;line-height:var(--sh3-line)}button:hover,input[type=button]:hover,input[type=submit]:hover,input[type=reset]:hover,.sh3-base-button:hover{filter:brightness(1.12)}button:active,input[type=button]:active,input[type=submit]:active,input[type=reset]:active,.sh3-base-button:active{filter:brightness(.92)}input[type=text],input[type=email],input[type=password],input[type=search],input[type=url],input[type=tel],input[type=number],textarea,.sh3-base-input{padding:0 var(--sh3-field-pad-x);height:var(--sh3-field-height-md);background:var(--sh3-input-bg);color:var(--sh3-fg);border:1px solid var(--sh3-border);border-radius:var(--sh3-radius);font-family:inherit;font-size:.8125rem;line-height:var(--sh3-line)}::placeholder{color:var(--sh3-fg-muted)}input:focus-visible,textarea:focus-visible,.sh3-base-input:focus-visible{border-color:var(--sh3-input-border-focus);box-shadow:var(--sh3-focus-ring);outline:none}input:disabled,textarea:disabled,.sh3-base-input[aria-disabled=true]{opacity:.55;cursor:not-allowed}textarea{resize:vertical;min-height:calc(var(--sh3-line) * 3em);height:auto;padding:var(--sh3-pad-sm) var(--sh3-field-pad-x)}input[type=checkbox].sh3-base-check,input[type=radio].sh3-base-radio{appearance:none;width:14px;height:14px;margin:0;background:var(--sh3-input-bg);border:1px solid var(--sh3-border);cursor:pointer;display:inline-grid;place-content:center;flex-shrink:0}.sh3-base-check{border-radius:var(--sh3-radius-sm)}.sh3-base-radio{border-radius:50%}input[type=checkbox].sh3-base-check:checked,input[type=radio].sh3-base-radio:checked{background:var(--sh3-accent);border-color:var(--sh3-accent)}.sh3-base-check:checked:before{content:"";width:8px;height:8px;background:var(--sh3-fg-on-accent);clip-path:polygon(14% 44%,0 60%,40% 100%,100% 20%,85% 8%,38% 70%)}.sh3-base-radio:checked:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--sh3-fg-on-accent)}.sh3-base-check:focus-visible,.sh3-base-radio:focus-visible{box-shadow:var(--sh3-focus-ring);outline:none}.sh3-base-check:disabled,.sh3-base-radio:disabled{opacity:.55;cursor:not-allowed}input[type=checkbox].sh3-base-switch{appearance:none;position:relative;width:28px;height:16px;margin:0;background:var(--sh3-bg-sunken);border:1px solid var(--sh3-border-strong);border-radius:999px;cursor:pointer;transition:background .12s ease,border-color .12s ease,box-shadow .12s ease;flex-shrink:0;box-sizing:border-box}.sh3-base-switch:before{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;background:var(--sh3-fg);border-radius:50%;transition:transform .12s ease}input[type=checkbox].sh3-base-switch:checked{background:var(--sh3-accent);border-color:var(--sh3-accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--sh3-accent) 25%,transparent)}.sh3-base-switch:checked:before{transform:translate(12px);background:var(--sh3-fg-on-accent)}.sh3-base-switch:focus-visible{box-shadow:var(--sh3-focus-ring);outline:none}.sh3-base-switch:disabled{opacity:.55;cursor:not-allowed}.splitter.svelte-1adl4o1{display:flex;width:100%;height:100%;min-width:0;min-height:0}.splitter.horizontal.svelte-1adl4o1{flex-direction:row}.splitter.vertical.svelte-1adl4o1{flex-direction:column}.splitter-pane.svelte-1adl4o1{position:relative;min-width:0;min-height:0;overflow:hidden;display:flex}.horizontal.svelte-1adl4o1>.splitter-pane:where(.svelte-1adl4o1){flex-direction:row}.vertical.svelte-1adl4o1>.splitter-pane:where(.svelte-1adl4o1){flex-direction:column}.splitter-pane.collapsed.svelte-1adl4o1{overflow:visible}.pane-content.svelte-1adl4o1{flex:1 1 0;position:relative;min-width:0;min-height:0;overflow:hidden}.collapse-header.svelte-1adl4o1{appearance:none;flex:0 0 auto;display:flex;align-items:center;justify-content:center;background:var(--sh3-grad-bg-elevated, var(--sh3-bg-elevated));border:none;color:var(--sh3-fg-muted);cursor:pointer;padding:0;font-size:10px}.collapse-header.svelte-1adl4o1:hover{color:var(--sh3-fg);background:var(--sh3-accent-muted)}body[data-dragging] .collapse-header.svelte-1adl4o1{pointer-events:none}.collapse-header.horizontal.svelte-1adl4o1{width:100%;height:100%;writing-mode:vertical-rl}.collapse-header.vertical.svelte-1adl4o1{width:100%;height:100%}.collapse-header.expanded.horizontal.svelte-1adl4o1{width:16px;height:100%;border-right:1px solid var(--sh3-border)}.collapse-header.expanded.vertical.svelte-1adl4o1{width:100%;height:16px;border-bottom:1px solid var(--sh3-border)}.splitter-handle.svelte-1adl4o1{flex:0 0 auto;background:var(--sh3-border);transition:background-color .12s ease;touch-action:none}.splitter-handle.svelte-1adl4o1:hover,.splitter-handle.dragging.svelte-1adl4o1{background:var(--sh3-accent)}body[data-dragging] .splitter-handle.svelte-1adl4o1{pointer-events:none}.splitter-handle.disabled.svelte-1adl4o1{cursor:default;pointer-events:none}.splitter-handle.frozen.svelte-1adl4o1{cursor:default;pointer-events:none;background:var(--sh3-border);opacity:.5}.splitter-handle.frozen.svelte-1adl4o1:hover{background:var(--sh3-border)}.horizontal.svelte-1adl4o1>.splitter-handle:where(.svelte-1adl4o1){width:4px;cursor:col-resize}.vertical.svelte-1adl4o1>.splitter-handle:where(.svelte-1adl4o1){height:4px;cursor:row-resize}.horizontal.svelte-1adl4o1>.splitter-handle.frozen:where(.svelte-1adl4o1){width:1px}.vertical.svelte-1adl4o1>.splitter-handle.frozen:where(.svelte-1adl4o1){height:1px}.splitter.compact.svelte-1adl4o1>.splitter-handle:where(.svelte-1adl4o1){pointer-events:none;cursor:default;opacity:.6}.splitter.compact.horizontal.svelte-1adl4o1>.splitter-handle:where(.svelte-1adl4o1){width:1px}.splitter.compact.vertical.svelte-1adl4o1>.splitter-handle:where(.svelte-1adl4o1){height:1px}.splitter.compact.svelte-1adl4o1>.splitter-handle:where(.svelte-1adl4o1):hover{background:var(--sh3-border)}.collapse-header.inert.svelte-1adl4o1{pointer-events:none;background:var(--sh3-bg-elevated);flex:0 0 auto}.tabbed-panel.svelte-1kxcyhf{display:flex;flex-direction:column;width:100%;height:100%;min-width:0;min-height:0;background:var(--sh3-grad-bg, var(--sh3-bg))}.tab-strip.svelte-1kxcyhf{position:relative;flex:0 0 auto;display:flex;gap:1px;background:var(--sh3-grad-bg-sunken, var(--sh3-bg-sunken));border-bottom:1px solid var(--sh3-border);padding:0 var(--sh3-pad-sm);user-select:none}.tab.svelte-1kxcyhf{appearance:none;background:transparent;border:none;color:var(--sh3-fg-muted);font:inherit;font-size:12px;padding:var(--sh3-pad-sm) var(--sh3-pad-md);margin-top:2px;display:inline-flex;align-items:center;gap:var(--sh3-pad-sm);cursor:pointer;border-top:2px solid transparent;border-radius:2px 2px 0 0;touch-action:none}.tab.svelte-1kxcyhf:hover{color:var(--sh3-fg);background:var(--sh3-grad-bg-elevated, var(--sh3-bg-elevated))}.tab.active.svelte-1kxcyhf{color:var(--sh3-fg);background:var(--sh3-grad-bg, var(--sh3-bg));border-top-color:var(--sh3-accent)}.tab-icon.svelte-1kxcyhf{font-size:11px}.tab-label.svelte-1kxcyhf{white-space:nowrap}.tab-dirty.svelte-1kxcyhf{width:8px;height:8px;border-radius:50%;background:var(--sh3-accent);flex-shrink:0}.tab-close.svelte-1kxcyhf{display:inline-flex;font-size:10px;line-height:1;padding:2px;border-radius:var(--sh3-radius-sm);color:var(--sh3-fg-muted);cursor:pointer;flex-shrink:0;margin-left:auto}.tab-close.svelte-1kxcyhf:hover{color:var(--sh3-fg);background:var(--sh3-bg-sunken)}.drop-indicator.svelte-1kxcyhf{position:absolute;width:2px;background:var(--sh3-accent);box-shadow:0 0 6px var(--sh3-accent);pointer-events:none;border-radius:1px}.tab-body.svelte-1kxcyhf{flex:1 1 auto;position:relative;min-width:0;min-height:0;overflow:hidden}.tab-body-pane.svelte-1kxcyhf{position:absolute;inset:0;min-width:0;min-height:0;display:none}.tab-body-pane.active.svelte-1kxcyhf{display:block}.slot.svelte-1czj0s8{position:relative;width:100%;height:100%;min-width:0;min-height:0;overflow:hidden}.slot-placeholder.svelte-1czj0s8{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sh3-pad-sm);color:var(--sh3-fg-muted);font-size:12px;text-align:center;padding:var(--sh3-pad-md);background:repeating-linear-gradient(45deg,var(--sh3-bg) 0 10px,var(--sh3-bg-elevated) 10px 20px);border:1px dashed var(--sh3-border-strong);pointer-events:none}.slot-id.svelte-1czj0s8{color:var(--sh3-fg);font-family:var(--sh3-font-mono);font-size:13px}.slot-meta.svelte-1czj0s8 code:where(.svelte-1czj0s8){font-family:var(--sh3-font-mono);color:var(--sh3-accent)}.slot-dims.svelte-1czj0s8{font-family:var(--sh3-font-mono);color:var(--sh3-fg-subtle);font-size:11px}.slot-drop-zone.svelte-re71zu{position:absolute;inset:0;pointer-events:none}.slot-drop-zone.active.svelte-re71zu{pointer-events:auto}.quad-highlight.svelte-re71zu{position:absolute;background:var(--sh3-accent);opacity:.18;border:1px dashed var(--sh3-accent);pointer-events:none;transition:inset 80ms ease}.quad-highlight.quad-left.svelte-re71zu{inset:0 50% 0 0}.quad-highlight.quad-right.svelte-re71zu{inset:0 0 0 50%}.quad-highlight.quad-top.svelte-re71zu{inset:0 0 50%}.quad-highlight.quad-bottom.svelte-re71zu{inset:50% 0 0}.quad-target.svelte-re71zu{position:absolute;pointer-events:none}.quad-target.quad-left.svelte-re71zu{inset:0 50% 0 0}.quad-target.quad-right.svelte-re71zu{inset:0 0 0 50%}.quad-target.quad-top.svelte-re71zu{inset:0 0 50%}.quad-target.quad-bottom.svelte-re71zu{inset:50% 0 0}.sh3-carousel.svelte-1qo3ctb{position:absolute;inset:0;overflow:hidden;touch-action:pan-y}.sh3-carousel-track.svelte-1qo3ctb{position:absolute;inset:0;display:flex;flex-direction:row;transition:transform .24s cubic-bezier(.2,0,0,1);will-change:transform}.sh3-carousel-track--dragging.svelte-1qo3ctb{user-select:none;-webkit-user-select:none;cursor:grabbing}.sh3-carousel-slide.svelte-1qo3ctb{position:relative;flex:0 0 auto;height:100%;min-width:0;min-height:0}.sh3-carousel-pager.svelte-1qo3ctb{position:absolute;left:0;right:0;bottom:var(--sh3-pad-md);display:flex;justify-content:center;gap:var(--sh3-pad-sm);pointer-events:none}.sh3-carousel-dot.svelte-1qo3ctb{width:6px;height:6px;border-radius:50%;background:var(--sh3-fg-muted);opacity:.5;transition:opacity .12s,transform .12s}.sh3-carousel-dot--active.svelte-1qo3ctb{opacity:1;transform:scale(1.4);background:var(--sh3-fg)}@media (prefers-reduced-motion: reduce){.sh3-carousel-track.svelte-1qo3ctb{transition:none}}.tab-slot-wrapper.svelte-1gw9g38,.leaf-slot-wrapper.svelte-1gw9g38{position:absolute;inset:0;min-width:0;min-height:0}.empty-tabs-placeholder.svelte-1gw9g38{width:100%;height:100%;min-width:0;min-height:0;position:relative}.empty-tabs-default.svelte-1gw9g38{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--sh3-fg-muted);font-size:12px;background:repeating-linear-gradient(45deg,var(--sh3-bg) 0 10px,var(--sh3-bg-elevated) 10px 20px);border:1px dashed var(--sh3-border-strong)}.empty-tabs-custom.svelte-1gw9g38{position:absolute;inset:0}.empty-tabs-drop.svelte-1gw9g38{position:absolute;inset:0;pointer-events:auto}.drag-preview.svelte-133fiip{position:absolute;display:inline-flex;align-items:center;gap:var(--sh3-pad-sm);padding:var(--sh3-pad-sm) var(--sh3-pad-md);background:var(--sh3-grad-bg-elevated, var(--sh3-bg-elevated));color:var(--sh3-fg);border:1px solid var(--sh3-accent);border-radius:var(--sh3-radius-sm);box-shadow:0 8px 24px #00000080;font-size:12px;font-family:var(--sh3-font-ui);pointer-events:none;opacity:.9}.drag-preview-icon.svelte-133fiip{font-size:11px}.drag-preview-label.svelte-133fiip{white-space:nowrap}.sh3-float-frame.svelte-1p734al{position:absolute;display:flex;flex-direction:column;background:var(--sh3-grad-bg-elevated, var(--sh3-bg-elevated));color:var(--sh3-fg);border:1px solid var(--sh3-border-strong);border-radius:var(--sh3-radius);box-shadow:0 8px 24px #0006;pointer-events:auto}.sh3-float-header.svelte-1p734al{display:flex;align-items:center;justify-content:space-between;padding:4px 8px;background:var(--sh3-grad-bg-sunken, var(--sh3-bg-sunken));cursor:move;user-select:none;border-bottom:1px solid var(--sh3-border-strong);border-top-left-radius:var(--sh3-radius);border-top-right-radius:var(--sh3-radius);flex-shrink:0}.sh3-float-title.svelte-1p734al{font-size:12px;color:var(--sh3-fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sh3-float-header-actions.svelte-1p734al{display:inline-flex;align-items:center;gap:2px;flex-shrink:0}.sh3-float-popout.svelte-1p734al,.sh3-float-maximize.svelte-1p734al,.sh3-float-close.svelte-1p734al{background:transparent;border:none;color:var(--sh3-fg);line-height:1;cursor:pointer;padding:0 4px}.sh3-float-popout.svelte-1p734al,.sh3-float-maximize.svelte-1p734al{font-size:12px}.sh3-float-close.svelte-1p734al{font-size:16px}.sh3-float-body.svelte-1p734al{flex:1;position:relative;overflow:hidden;min-height:0}.sh3-float-resize-grip.svelte-1p734al{position:absolute;right:0;bottom:0;width:16px;height:16px;cursor:nwse-resize;background:linear-gradient(135deg,transparent 0,transparent 6px,var(--sh3-border-strong) 6px,var(--sh3-border-strong) 7px,transparent 7px,transparent 10px,var(--sh3-border-strong) 10px,var(--sh3-border-strong) 11px,transparent 11px);border-bottom-right-radius:var(--sh3-radius)}.sh3-float-layer.svelte-1rzcset,.sh3-overlays.svelte-4ykdm7,.sh3-overlay-root.svelte-4ykdm7{position:absolute;inset:0;pointer-events:none}.guest-banner.svelte-pymkh{display:flex;align-items:center;justify-content:center;gap:12px;padding:6px var(--sh3-pad-md, 12px);background:color-mix(in srgb,var(--sh3-accent, #7c7cf0) 15%,transparent);border-bottom:1px solid var(--sh3-border, #3a3a5c);font-size:12px;color:var(--sh3-fg, #e0e0e0)}.guest-banner-action.svelte-pymkh{padding:3px 10px;color:var(--sh3-bg, #1a1a2e);font-size:11px;font-weight:600}.guest-signin-overlay.svelte-pymkh{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:#00000080;z-index:9999}.guest-signin-card.svelte-pymkh{display:flex;flex-direction:column;gap:12px;padding:32px;background:var(--sh3-bg-elevated, #252540);border:1px solid var(--sh3-border, #3a3a5c);border-radius:var(--sh3-radius-lg, 12px);min-width:300px}.guest-signin-form.svelte-pymkh{display:flex;flex-direction:column;gap:10px}.guest-signin-input.svelte-pymkh{padding:8px 12px;background:var(--sh3-bg, #1a1a2e);color:var(--sh3-fg, #e0e0e0);border:1px solid var(--sh3-border, #3a3a5c);border-radius:var(--sh3-radius, 6px);font-size:13px}.guest-signin-input.svelte-pymkh::placeholder{color:var(--sh3-fg-muted, #888)}.guest-signin-actions.svelte-pymkh{display:flex;gap:8px}.guest-signin-btn.svelte-pymkh{flex:1;padding:8px;color:var(--sh3-bg, #1a1a2e);font-weight:600}.guest-signin-btn.svelte-pymkh:disabled{opacity:.6;cursor:not-allowed}.guest-signin-cancel.svelte-pymkh{padding:8px 12px;background:transparent;color:var(--sh3-fg-subtle, #aaa);border:1px solid var(--sh3-border, #3a3a5c)}.guest-signin-error.svelte-pymkh{padding:6px 10px;font-size:12px;color:var(--sh3-error, #d32f2f);background:color-mix(in srgb,var(--sh3-error, #d32f2f) 10%,transparent);border-radius:var(--sh3-radius, 6px)}.sh3-consent-backdrop.svelte-14me5sj{position:fixed;inset:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:9999}.sh3-consent-card.svelte-14me5sj{background:var(--sh3-bg-elevated, #222);color:var(--sh3-fg, #eee);border:1px solid var(--sh3-border, #444);padding:1.5rem;border-radius:8px;min-width:360px;max-width:520px;box-shadow:0 8px 32px #0006}.sh3-consent-title.svelte-14me5sj{margin:0 0 1rem;font-size:1rem;font-weight:600;color:var(--sh3-fg, #eee)}.sh3-consent-title.svelte-14me5sj span:where(.svelte-14me5sj){color:var(--sh3-accent, #7eb8f7)}.sh3-consent-fields.svelte-14me5sj{margin:0 0 1rem;display:grid;grid-template-columns:auto 1fr;column-gap:.75rem;row-gap:.25rem;align-items:baseline}.sh3-consent-fields.svelte-14me5sj dt:where(.svelte-14me5sj){font-weight:600;color:var(--sh3-fg-muted, #aaa);font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;padding-top:.35rem}.sh3-consent-fields.svelte-14me5sj dd:where(.svelte-14me5sj){margin:0;padding-top:.35rem;word-break:break-word}.sh3-consent-scopes.svelte-14me5sj{display:flex;flex-wrap:wrap;gap:.25rem}.sh3-consent-scope.svelte-14me5sj{display:inline-block;padding:.1rem .35rem;background:#ffffff14;border:1px solid rgba(255,255,255,.12);border-radius:3px;font-size:.82em;font-family:var(--sh3-font-mono, monospace)}.sh3-consent-actions.svelte-14me5sj{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1.25rem}.sh3-consent-deny.svelte-14me5sj,.sh3-consent-approve.svelte-14me5sj{padding:.4rem 1rem;border-radius:4px;font-size:.875rem;cursor:pointer;border:1px solid transparent;transition:opacity .1s}.sh3-consent-deny.svelte-14me5sj{background:transparent;color:var(--sh3-fg-muted, #aaa);border-color:var(--sh3-border, #444)}.sh3-consent-deny.svelte-14me5sj:hover{color:var(--sh3-fg, #eee);border-color:var(--sh3-fg-muted, #aaa)}.sh3-consent-approve.svelte-14me5sj{background:var(--sh3-accent, #7eb8f7);color:#000;border-color:var(--sh3-accent, #7eb8f7)}.sh3-consent-approve.svelte-14me5sj:hover{opacity:.85}.sh3-brand-slot.svelte-18lk809{display:inline-flex;align-items:center;gap:4px}.sh3-brand.svelte-18lk809{font-weight:600;color:var(--sh3-accent);letter-spacing:.5px}.sh3-brand-app.svelte-18lk809,.sh3-brand-project.svelte-18lk809{color:var(--sh3-fg)}.sh3-brand-sep.svelte-18lk809{color:var(--sh3-fg-muted);margin:0 4px}.sh3-brand-crumb.svelte-18lk809{background:transparent;border:0;color:var(--sh3-fg);font:inherit;cursor:pointer;padding:2px 6px;border-radius:var(--sh3-radius-sm, 3px)}.sh3-brand-crumb.svelte-18lk809:hover{background:var(--sh3-bg-elevated)}.sh3-brand-clickable.svelte-18lk809{background:transparent;border:0;font:inherit;cursor:pointer;padding:2px 6px;border-radius:var(--sh3-radius-sm, 3px)}.sh3-brand-clickable.svelte-18lk809:hover{background:var(--sh3-bg-elevated)}.sh3-menubar-button.svelte-bke3dt{display:inline-flex;align-items:center;gap:6px;padding:0 var(--sh3-pad-md);height:100%;background:transparent;color:var(--sh3-fg);border:0;font:inherit;cursor:default}.sh3-menubar-button.svelte-bke3dt:hover{background:var(--sh3-bg-elevated)}.sh3-menubar-icon.svelte-bke3dt{width:14px;height:14px;display:inline-block}.sh3-menubar.svelte-7gc0wa{display:inline-flex;align-items:center;height:100%}.backdrop.svelte-vkxo1d{position:absolute;inset:0;background:var(--sh3-overlay-backdrop, rgba(0, 0, 0, .35));pointer-events:auto;z-index:var(--sh3-z-layer-4)}.sheet.svelte-vkxo1d{position:absolute;left:0;right:0;bottom:0;max-height:70vh;display:flex;flex-direction:column;background:var(--sh3-bg);color:var(--sh3-fg);border-top:1px solid var(--sh3-border);box-shadow:var(--sh3-shadow-md, 0 -4px 16px rgba(0, 0, 0, .2));pointer-events:auto;z-index:var(--sh3-z-layer-4)}.scroll.svelte-vkxo1d{flex:1;min-height:0;overflow:auto;padding:var(--sh3-pad-sm) 0}.container.svelte-vkxo1d{display:flex;align-items:center;gap:var(--sh3-pad-sm);width:100%;padding:var(--sh3-pad-sm) var(--sh3-pad-md);border:none;background:none;color:var(--sh3-fg);font-weight:600;text-align:left;cursor:pointer}.container.svelte-vkxo1d:active{background:var(--sh3-bg-sunken)}.items.svelte-vkxo1d,.subitems.svelte-vkxo1d{padding-left:var(--sh3-pad-md)}.item.svelte-vkxo1d{display:flex;align-items:center;gap:var(--sh3-pad-sm);width:100%;padding:var(--sh3-pad-sm) var(--sh3-pad-md);border:none;background:none;color:var(--sh3-fg);text-align:left;cursor:pointer}.item.svelte-vkxo1d:disabled{opacity:.5;cursor:not-allowed}.item.svelte-vkxo1d:active:not(:disabled){background:var(--sh3-bg-sunken)}.item.child.svelte-vkxo1d{padding-left:calc(var(--sh3-pad-md) * 2)}.label.svelte-vkxo1d{flex:1}.shortcut.svelte-vkxo1d{color:var(--sh3-fg-muted);font-family:var(--sh3-font-mono)}.caret.svelte-vkxo1d{display:inline-block;width:1em;transition:transform .12s}.caret.open.svelte-vkxo1d{transform:rotate(90deg)}.cancel.svelte-vkxo1d{padding:var(--sh3-pad-md);border:none;border-top:1px solid var(--sh3-border);background:var(--sh3-bg-elevated);color:var(--sh3-fg);font-weight:600;cursor:pointer}.sh3-compact-chrome.svelte-q1hcw0{display:grid;grid-template-columns:auto 1fr auto;align-items:center;height:var(--sh3-tabbar-height);padding:0 var(--sh3-pad-sm);gap:var(--sh3-pad-sm);background:var(--sh3-grad-bg-elevated, var(--sh3-bg-elevated));border-bottom:1px solid var(--sh3-border);color:var(--sh3-fg)}.leading.svelte-q1hcw0,.trailing.svelte-q1hcw0{display:inline-flex;align-items:center;gap:var(--sh3-pad-xs)}.leading.svelte-q1hcw0>span:where(.svelte-q1hcw0){display:inline-flex;align-items:center}.title.svelte-q1hcw0{font-weight:600;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drawer-backdrop.svelte-8dp9bg{position:absolute;inset:0;background:var(--sh3-overlay-backdrop, rgba(0, 0, 0, .35));pointer-events:auto}.drawer.svelte-8dp9bg{position:absolute;background:var(--sh3-bg);color:var(--sh3-fg);box-shadow:var(--sh3-shadow-md, 0 0 16px rgba(0, 0, 0, .2));display:flex;flex-direction:column;border:1px solid var(--sh3-border);pointer-events:auto}.drawer-left.svelte-8dp9bg{top:0;bottom:0;left:0;width:min(360px,80vw)}.drawer-right.svelte-8dp9bg{top:0;bottom:0;right:0;width:min(360px,80vw)}.drawer-top.svelte-8dp9bg{left:0;right:0;top:0;height:min(50vh,360px)}header.svelte-8dp9bg{display:flex;align-items:center;padding:var(--sh3-pad-sm) var(--sh3-pad-md);gap:var(--sh3-pad-md);border-bottom:1px solid var(--sh3-border);background:var(--sh3-bg-elevated)}.title.svelte-8dp9bg{font-weight:600}.close.svelte-8dp9bg{margin-left:auto;background:none;border:none;font-size:var(--sh3-font-lg);cursor:pointer;color:var(--sh3-fg-muted);padding:0 var(--sh3-pad-sm)}.close.svelte-8dp9bg:hover{color:var(--sh3-fg)}.tab-strip.svelte-8dp9bg{display:flex;gap:2px;padding:var(--sh3-pad-xs) var(--sh3-pad-sm) 0;background:var(--sh3-bg-sunken)}.tab-strip.svelte-8dp9bg button:where(.svelte-8dp9bg){padding:var(--sh3-pad-xs) var(--sh3-pad-sm);border:1px solid var(--sh3-border);background:var(--sh3-bg-elevated);border-bottom:none;cursor:pointer;color:var(--sh3-fg)}.tab-strip.svelte-8dp9bg button.active:where(.svelte-8dp9bg){background:var(--sh3-bg)}.body.svelte-8dp9bg{flex:1;min-height:0;overflow:auto}.compact-body.svelte-1sc410j{position:absolute;inset:0}.sh3.svelte-1amm732{display:grid;grid-template-rows:var(--sh3-tabbar-height) auto 1fr var(--sh3-statusbar-height);height:100%;width:100%;position:relative;background:var(--sh3-grad-bg, var(--sh3-bg));color:var(--sh3-fg);box-sizing:border-box;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}.sh3[data-sh3-viewport=compact].svelte-1amm732{grid-template-rows:var(--sh3-tabbar-height) auto 1fr}.sh3-tabbar.svelte-1amm732{display:grid;grid-template-columns:auto auto 1fr auto;align-items:center;gap:var(--sh3-pad-md);padding:0 var(--sh3-pad-md);background:var(--sh3-grad-bg-elevated, var(--sh3-bg-elevated));border-bottom:1px solid var(--sh3-border);user-select:none}.sh3-content.svelte-1amm732{position:relative;overflow:hidden;background:var(--sh3-grad-bg, var(--sh3-bg));min-width:0;min-height:0}.sh3-statusbar.svelte-1amm732{display:flex;align-items:center;justify-content:space-between;padding:0 var(--sh3-pad-md);background:var(--sh3-grad-bg-sunken, var(--sh3-bg-sunken));border-top:1px solid var(--sh3-border);color:var(--sh3-fg-muted);font-size:11px;user-select:none}.sh3-tabbar-home-button.svelte-1amm732{display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;background:transparent;color:var(--sh3-fg-muted);border:1px solid var(--sh3-border)}.sh3-tabbar-home-button.svelte-1amm732:hover:not(:disabled){color:var(--sh3-fg);border-color:var(--sh3-fg-muted)}.sh3-tabbar-home-button.svelte-1amm732:disabled{color:var(--sh3-fg-subtle);border-color:var(--sh3-border);cursor:default}.sh3-tabbar-home-icon.svelte-1amm732{width:14px;height:14px}.sh3-tabbar-user.svelte-1amm732{display:flex;align-items:center;gap:6px}.sh3-tabbar-user-name.svelte-1amm732{font-size:12px;color:var(--sh3-fg-subtle)}.sh3-tabbar-tag.svelte-1amm732{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--sh3-fg-on-accent);background:var(--sh3-accent);padding:1px 6px;border-radius:var(--sh3-radius-md)}.sh3-tabbar-signout.svelte-1amm732{display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;background:transparent;color:var(--sh3-fg-muted);border:1px solid var(--sh3-border)}.sh3-tabbar-signout.svelte-1amm732:hover{color:var(--sh3-fg);border-color:var(--sh3-fg-muted)}.sh3-tabbar-signout-icon.svelte-1amm732{width:14px;height:14px}.signin-wall.svelte-lh4k15{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:var(--sh3-grad-bg, var(--sh3-bg, #1a1a2e));color:var(--sh3-fg, #e0e0e0);font-family:system-ui,sans-serif}.signin-card.svelte-lh4k15{display:flex;flex-direction:column;align-items:center;gap:16px;padding:48px 40px;background:var(--sh3-grad-bg-elevated, var(--sh3-bg-elevated, #252540));border:1px solid var(--sh3-border, #3a3a5c);border-radius:var(--sh3-radius-lg, 12px);min-width:320px}.signin-brand.svelte-lh4k15{margin:0 0 8px;font-size:42px;color:var(--sh3-accent, #7c7cf0);letter-spacing:2px}.signin-form.svelte-lh4k15{display:flex;flex-direction:column;gap:12px;width:100%}.signin-input.svelte-lh4k15{padding:10px 14px;background:var(--sh3-bg, #1a1a2e);color:var(--sh3-fg, #e0e0e0);border:1px solid var(--sh3-border, #3a3a5c);border-radius:var(--sh3-radius, 6px);font-size:14px}.signin-input.svelte-lh4k15::placeholder{color:var(--sh3-fg-muted, #888)}.signin-btn.svelte-lh4k15{padding:10px 16px;color:var(--sh3-bg, #1a1a2e);font-weight:600;font-size:14px}.signin-btn.svelte-lh4k15:disabled{opacity:.6;cursor:not-allowed}.signin-link.svelte-lh4k15{background:none;color:var(--sh3-accent, #7c7cf0);font-size:13px;padding:0}.signin-link.svelte-lh4k15:hover{text-decoration:underline}.signin-error.svelte-lh4k15{padding:8px 12px;font-size:13px;color:var(--sh3-error, #d32f2f);background:color-mix(in srgb,var(--sh3-error, #d32f2f) 10%,transparent);border-radius:var(--sh3-radius, 6px);width:100%;text-align:center}.sh3-satellite-root.svelte-191z0e1{position:absolute;inset:0;overflow:hidden;background:var(--sh3-grad-bg, var(--sh3-bg));color:var(--sh3-fg)}.sh3-satellite-root.sh3-satellite-app.svelte-191z0e1{display:grid;grid-template-rows:var(--sh3-tabbar-height) 1fr}.sh3-satellite-tabbar.svelte-191z0e1{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--sh3-pad-md);padding:0 var(--sh3-pad-md);background:var(--sh3-grad-bg-elevated, var(--sh3-bg-elevated));border-bottom:1px solid var(--sh3-border);user-select:none}.sh3-satellite-content.svelte-191z0e1{position:relative;overflow:hidden;background:var(--sh3-grad-bg, var(--sh3-bg));min-width:0;min-height:0}.sh3-satellite-floats-slot.svelte-191z0e1{min-width:0}:root{--sh3-bg: #1a1b1e;--sh3-bg-elevated: #22232a;--sh3-bg-sunken: #141518;--sh3-border: #2e3038;--sh3-border-strong: #3c3f4a;--sh3-fg: #e4e6eb;--sh3-fg-muted: #9aa0aa;--sh3-fg-subtle: #6b7280;--sh3-accent: #6ea8fe;--sh3-accent-muted: #3a5580;--sh3-input-bg: var(--sh3-bg-sunken);--sh3-input-border-focus: var(--sh3-accent);--sh3-focus-ring: 0 0 0 2px color-mix(in srgb, var(--sh3-accent) 40%, transparent);--sh3-error: #f87171;--sh3-warning: #fbbf24;--sh3-success: #34d399;--sh3-fg-on-accent: #ffffff;--sh3-fg-on-error: #1a1b1e;--sh3-fg-on-warning: #1a1b1e;--sh3-fg-on-success: #1a1b1e;--sh3-font-ui: system-ui, -apple-system, "Segoe UI", sans-serif;--sh3-font-mono: ui-monospace, "Cascadia Code", "Consolas", monospace;--sh3-font-size: 13px;--sh3-line: 1.45;--sh3-radius-sm: 3px;--sh3-radius: 4px;--sh3-radius-md: 6px;--sh3-radius-lg: 8px;--sh3-pad-xs: 2px;--sh3-pad-sm: 4px;--sh3-pad-md: 8px;--sh3-pad-lg: 12px;--sh3-tabbar-height: 32px;--sh3-statusbar-height: 22px;--sh3-z-layer-0: 0;--sh3-z-layer-drawers: 50;--sh3-z-layer-1: 100;--sh3-z-layer-2: 200;--sh3-z-layer-3: 300;--sh3-z-layer-4: 400;--sh3-z-layer-5: 500;--sh3-z-layer-6: 600;--sh3-field-height-sm: 24px;--sh3-field-height-md: 28px;--sh3-field-pad-x: 10px;--sh3-track-bg: var(--sh3-bg-sunken);--sh3-track-border: var(--sh3-border);--sh3-track-fill: var(--sh3-accent);--sh3-thumb-bg: #e4e6eb;--sh3-thumb-border: var(--sh3-accent);--sh3-thumb-shadow: var(--sh3-shadow-sm);--sh3-tick-bg: var(--sh3-fg-subtle);--sh3-tick-strong-bg: var(--sh3-border-strong);--sh3-widget-radius: var(--sh3-radius);--sh3-widget-radius-pill: 999px;--sh3-shadow-sm: 0 1px 2px rgba(0, 0, 0, .35);--sh3-motion-fast: .12s;--sh3-ease-standard: cubic-bezier(.2, 0, 0, 1)}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;overflow:hidden;background:var(--sh3-grad-bg, var(--sh3-bg));color:var(--sh3-fg);font-family:var(--sh3-font-ui);font-size:var(--sh3-font-size);line-height:var(--sh3-line);-webkit-font-smoothing:antialiased}#app{height:100%}.onboarding-wall.svelte-c2abmw{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);box-sizing:border-box;background:var(--sh3-grad-bg, var(--sh3-bg, #1a1a2e));color:var(--sh3-fg, #e0e0e0);font-family:system-ui,sans-serif}.onboarding-card.svelte-c2abmw{display:flex;flex-direction:column;align-items:stretch;gap:12px;padding:48px 40px;background:var(--sh3-grad-bg-elevated, var(--sh3-bg-elevated, #252540));border:1px solid var(--sh3-border, #3a3a5c);border-radius:var(--sh3-radius-lg, 12px);min-width:320px;max-width:420px}.onboarding-brand.svelte-c2abmw{margin:0;font-size:42px;color:var(--sh3-accent, #7c7cf0);letter-spacing:2px;text-align:center}.onboarding-tagline.svelte-c2abmw{margin:0 0 8px;text-align:center;color:var(--sh3-fg-muted, #888);font-size:13px}.onboarding-form.svelte-c2abmw{display:flex;flex-direction:column;gap:12px}.onboarding-input.svelte-c2abmw{padding:10px 14px;background:var(--sh3-bg, #1a1a2e);color:var(--sh3-fg, #e0e0e0);border:1px solid var(--sh3-border, #3a3a5c);border-radius:var(--sh3-radius, 6px);font-size:14px}.onboarding-input.svelte-c2abmw::placeholder{color:var(--sh3-fg-muted, #888)}.onboarding-btn.svelte-c2abmw{padding:10px 16px;color:var(--sh3-bg, #1a1a2e);background:var(--sh3-accent, #7c7cf0);border:none;border-radius:var(--sh3-radius, 6px);font-weight:600;font-size:14px;cursor:pointer}.onboarding-btn.svelte-c2abmw:disabled,.onboarding-btn-secondary.svelte-c2abmw:disabled{opacity:.6;cursor:not-allowed}.onboarding-btn-secondary.svelte-c2abmw{padding:10px 16px;color:var(--sh3-fg, #e0e0e0);background:transparent;border:1px solid var(--sh3-border, #3a3a5c);border-radius:var(--sh3-radius, 6px);font-size:13px;cursor:pointer}.onboarding-divider.svelte-c2abmw{text-align:center;color:var(--sh3-fg-muted, #888);font-size:12px}.onboarding-hint.svelte-c2abmw{margin:0;text-align:center;color:var(--sh3-fg-muted, #888);font-size:12px}.onboarding-error.svelte-c2abmw{padding:8px 12px;font-size:13px;color:var(--sh3-error, #d32f2f);background:color-mix(in srgb,var(--sh3-error, #d32f2f) 10%,transparent);border-radius:var(--sh3-radius, 6px);text-align:center}