@venturewild/workspace 0.6.22 → 0.6.24

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@venturewild/workspace",
3
- "version": "0.6.22",
3
+ "version": "0.6.24",
4
4
  "description": "Claude Code Web — Replit/Lovable-style chat-first browser UI that wraps the AI agent already installed on your machine.",
5
5
  "license": "MIT",
6
6
  "bin": {
@@ -18,7 +18,7 @@ import {
18
18
  } from '../src/account.mjs';
19
19
  import { readFileSync } from 'node:fs';
20
20
  import { WorkspaceSupervisor, probeHealth } from '../src/supervisor.mjs';
21
- import { installService, uninstallService, serviceStatus, globalDir } from '../src/service.mjs';
21
+ import { installService, startService, uninstallService, serviceStatus, globalDir } from '../src/service.mjs';
22
22
  import { appendLine, listLogs, tailFile } from '../src/logpaths.mjs';
23
23
  import { runDoctor, renderDoctor, writeDoctorBundle } from '../src/doctor.mjs';
24
24
  import { enableOperator, disableOperator, operatorStatus } from '../src/operator.mjs';
@@ -281,16 +281,28 @@ async function runLoginCommand(args) {
281
281
  console.log(` url : https://${saved.slug}.venturewild.llc (once the tunnel is configured)`);
282
282
  console.log(` saved to : ${config.dataDir}/account.json`);
283
283
  console.log('');
284
- console.log('Run `wild-workspace` in any folder to start your workspace.');
285
284
 
286
- // Arm always-on so the workspace comes back on its own (best-effort — never
287
- // blocks login). On a platform without autostart yet, just nudge the user.
285
+ // Arm always-on AND start it now (best-effort — never blocks login) so a brand-new
286
+ // user gets a LIVE workspace without logging out/in. installService writes the
287
+ // autostart entry; startService brings the supervisor up immediately (idempotent —
288
+ // no-ops if one already holds the lock). Everything is driven by absolute paths, so
289
+ // the bare `wild-workspace` command never needs to be on PATH.
288
290
  try {
289
291
  const svc = await installService({
290
292
  node: process.execPath, cli: __filename, workspaceDir: config.workspaceDir, port: config.port, version: APP_VERSION,
291
293
  });
292
- if (svc.installed) console.log(' always-on : enabled — starts at login (disable: wild-workspace service uninstall)');
293
- else if (svc.supported === false) console.log(` always-on : not yet on ${svc.platform} — run \`wild-workspace\` to start it`);
294
+ if (svc.installed) {
295
+ const started = await startService({}).catch(() => ({ started: false }));
296
+ if (started.started || started.alreadyRunning) {
297
+ console.log(' always-on : ON — starting your workspace now; it relaunches at every login.');
298
+ console.log('');
299
+ console.log(`Your workspace is coming up at https://${saved.slug}.venturewild.llc — give it a few seconds.`);
300
+ } else {
301
+ console.log(' always-on : enabled — starts at your next login (disable: wild-workspace service uninstall)');
302
+ }
303
+ } else if (svc.supported === false) {
304
+ console.log(` always-on : not yet automated on ${svc.platform}.`);
305
+ }
294
306
  } catch { /* never block login */ }
295
307
  }
296
308
 
@@ -926,6 +938,18 @@ async function runServiceCommand(action = 'status', opts = {}) {
926
938
  return;
927
939
  }
928
940
 
941
+ if (action === 'start') {
942
+ // Bring always-on UP now (the bootstrap installer calls this after `install` so a
943
+ // brand-new user gets a live workspace without logging out/in). Idempotent.
944
+ const r = await startService({});
945
+ if (r.supported === false) { console.log(`service: start not supported on ${r.platform} yet — run \`wild-workspace\` manually`); return; }
946
+ if (r.alreadyRunning) { console.log('always-on: already running.'); return; }
947
+ if (r.started) { console.log(`✓ always-on started (${r.method}) — your workspace is coming up now.`); return; }
948
+ console.log(`service start: couldn't start${r.reason ? ` — ${r.reason}` : r.error ? ` — ${r.error}` : ''} (run \`wild-workspace service install\` first?).`);
949
+ process.exitCode = 1;
950
+ return;
951
+ }
952
+
929
953
  if (action === 'uninstall') {
930
954
  const r = await uninstallService();
931
955
  if (r.supported === false) { console.log(`service: nothing to do — autostart not implemented for ${r.platform} yet`); return; }
@@ -958,7 +982,7 @@ async function runServiceCommand(action = 'status', opts = {}) {
958
982
  return;
959
983
  }
960
984
 
961
- console.log(`unknown service action: ${action} (use install | uninstall | status | run)`);
985
+ console.log(`unknown service action: ${action} (use install | start | uninstall | status | run)`);
962
986
  }
963
987
 
964
988
  async function main() {
@@ -466,3 +466,22 @@ export function pickDefaultAgent(detected) {
466
466
  if (anyAvailable) return anyAvailable;
467
467
  return detected[0] || DEFAULT_AGENTS[0];
468
468
  }
469
+
470
+ // Re-pick the active agent from a FRESH detection, used by the readiness gate's
471
+ // "I installed it / signed in" retry. THE BUG THIS FIXES: detection runs once at
472
+ // startup, so a brand-new user who installs Claude AFTER the workspace booted was
473
+ // stuck — the gate kept saying "missing"/"login" until a full restart, because the
474
+ // frozen `activeAgent` stayed `available:false`. Re-detecting on retry flips it.
475
+ //
476
+ // We REFRESH the currently-active agent (so a deliberate switch to GLM/Codex isn't
477
+ // clobbered back to the default) and only re-pick the default when the current
478
+ // agent is gone or still unavailable. Never invents availability — a still-missing
479
+ // agent stays missing, so the gate can't false-pass.
480
+ export function refreshActiveAgent(detected, current) {
481
+ const list = Array.isArray(detected) ? detected : [];
482
+ if (current) {
483
+ const same = list.find((a) => a.id === current.id);
484
+ if (same && same.available) return same;
485
+ }
486
+ return pickDefaultAgent(list);
487
+ }
@@ -128,9 +128,11 @@ export async function fetchLatestVersion(channel, {
128
128
  /** Run `npm i -g <spec>`. Resolves {code, output, timedOut?, error?}; never rejects. */
129
129
  export function npmInstall(spec, {
130
130
  spawnImpl = spawn, timeoutMs = 180000, ensurePathImpl = ensureToolPath, env = process.env,
131
+ platform = process.platform,
131
132
  } = {}) {
132
133
  return new Promise((resolve) => {
133
- const cmd = process.platform === 'win32' ? 'npm.cmd' : 'npm';
134
+ const isWin = platform === 'win32';
135
+ const cmd = isWin ? 'npm.cmd' : 'npm';
134
136
  // The always-on supervisor (our caller in the field) runs under launchd/GUI,
135
137
  // which inherits a MINIMAL PATH omitting ~/.npm-global, /usr/local/bin,
136
138
  // Homebrew, nvm — so a bare `npm` spawn would ENOENT (the 0.1.8 `claude`
@@ -140,7 +142,15 @@ export function npmInstall(spec, {
140
142
  try { ensurePathImpl(childEnv); } catch { /* best-effort — fall back to inherited PATH */ }
141
143
  let child;
142
144
  try {
143
- child = spawnImpl(cmd, ['i', '-g', spec], { windowsHide: true, env: childEnv });
145
+ // On Windows npm is a `.cmd` shim, and Node >=18.20.2/20.12.2/22 REFUSES to
146
+ // spawn a .cmd/.bat directly (CVE-2024-27980 hardening) — it throws EINVAL
147
+ // synchronously. That is exactly how field auto-update failed instantly
148
+ // (code=-1 in ~16ms, never reaching npm). shell:true routes the shim
149
+ // through cmd.exe so it actually runs. The only interpolated arg is a
150
+ // package spec we build ourselves (a constant name + a semver from npm's
151
+ // own dist-tag), so there is no shell-injection surface. POSIX stays
152
+ // shell:false — npm is a real executable there.
153
+ child = spawnImpl(cmd, ['i', '-g', spec], { windowsHide: true, env: childEnv, shell: isWin });
144
154
  } catch (e) {
145
155
  return resolve({ code: -1, error: e?.message || String(e), output: '' });
146
156
  }
@@ -226,7 +236,7 @@ export class AutoUpdater {
226
236
  this.logImpl(`auto-update: installing ${this.packageName}@${target} (from ${from || 'unknown'})`);
227
237
  const install = await this.installImpl(`${this.packageName}@${target}`);
228
238
  if (install.code !== 0) {
229
- this.logImpl(`auto-update: install failed code=${install.code}${install.timedOut ? ' (timeout)' : ''}`);
239
+ this.logImpl(`auto-update: install failed code=${install.code}${install.timedOut ? ' (timeout)' : ''}${install.error ? ` error=${install.error}` : ''}`);
230
240
  const rec = recordUpdate(this.globalDir, { from, to: target, at: this.nowImpl(), status: 'install-failed' });
231
241
  this.onUpdate?.(rec);
232
242
  return { ok: false, stage: 'install', install, rec };
@@ -21,7 +21,7 @@ import {
21
21
  assertSecureBinding,
22
22
  isLocalhost,
23
23
  } from './config.mjs';
24
- import { detectAgents, AgentSession, pickDefaultAgent } from './agent.mjs';
24
+ import { detectAgents, AgentSession, pickDefaultAgent, refreshActiveAgent } from './agent.mjs';
25
25
  import {
26
26
  mintShareToken,
27
27
  mintDeviceToken,
@@ -1541,6 +1541,20 @@ export async function createServer(overrides = {}) {
1541
1541
  if (!fresh && _readinessCache && now - _readinessCache.at < READINESS_TTL_MS) {
1542
1542
  return c.json({ agent: agentTag(activeAgent), ...(_readinessCache.verdict) });
1543
1543
  }
1544
+ // On a forced refresh (the gate's "I installed it / signed in" button), RE-DETECT
1545
+ // agents BEFORE probing. A brand-new user installs Claude AFTER the workspace
1546
+ // booted; detection is otherwise frozen at startup, so the gate stayed stuck on
1547
+ // "missing"/"login" until a full restart (the exact "I installed it but it still
1548
+ // says missing" trap). refreshActiveAgent keeps a deliberately-chosen agent and
1549
+ // only flips a now-installed binary to available — it never false-passes.
1550
+ if (fresh) {
1551
+ try {
1552
+ const redetected = (await operatorDeps.detectAgents()) || [];
1553
+ activeAgent = refreshActiveAgent(redetected, activeAgent);
1554
+ } catch (e) {
1555
+ log('[onboarding]', `readiness re-detect failed: ${e?.message || e}`);
1556
+ }
1557
+ }
1544
1558
  const verdict = await probeAgentReadiness(activeAgent);
1545
1559
  _readinessCache = { at: now, verdict };
1546
1560
  log('[onboarding]', `readiness agent=${activeAgent?.id || '-'} status=${verdict.status}${verdict.email ? ` email=${verdict.email}` : ''}`);
@@ -453,6 +453,76 @@ export async function installService(opts = {}, deps = {}) {
453
453
  return unsupported(platform, 'installed');
454
454
  }
455
455
 
456
+ // Bring the installed always-on supervisor UP NOW, rather than waiting for the next
457
+ // login. `installService` deliberately does NOT auto-start (a manually-run
458
+ // `wild-workspace` could already hold :5173, and starting a second server collides).
459
+ // But the BOOTSTRAP installer runs in a CLEAN context — nothing on the port — so it
460
+ // follows `service install` with `service start` so a brand-new user gets a live URL
461
+ // without logging out/in. IDEMPOTENT: if a supervisor already holds the singleton
462
+ // lock we no-op, so a redundant start (or an existing user) never double-starts.
463
+ export async function startService(opts = {}, deps = {}) {
464
+ const platform = deps.platform || process.platform;
465
+ const dir = deps.dir || globalDir();
466
+ const { supervisorAlive } = supervisorLiveness(dir);
467
+ if (supervisorAlive) return { started: false, alreadyRunning: true, platform };
468
+ if (platform === 'darwin') {
469
+ return macStart(
470
+ { uid: deps.uid ?? currentUid() },
471
+ { launchAgentsDir: deps.launchAgentsDir || defaultLaunchAgentsDir(), execFileImpl: deps.execFileImpl || execFileP },
472
+ );
473
+ }
474
+ if (platform === 'linux') {
475
+ return linuxStart({}, { execFileImpl: deps.execFileImpl || execFileP });
476
+ }
477
+ if (platform === 'win32') {
478
+ return winStart({ dir }, { spawnImpl: deps.spawnImpl || spawn });
479
+ }
480
+ return unsupported(platform, 'started');
481
+ }
482
+
483
+ async function macStart({ uid }, { launchAgentsDir, execFileImpl }) {
484
+ const plist = plistPath(launchAgentsDir);
485
+ if (!fs.existsSync(plist)) return { started: false, reason: 'not-installed', platform: 'darwin' };
486
+ const domain = `gui/${uid}`;
487
+ // bootstrap LOADS the agent → RunAtLoad starts it. If it's already loaded from a
488
+ // prior login, bootstrap errors → kickstart it instead to force a (re)start.
489
+ try {
490
+ await execFileImpl('launchctl', ['bootstrap', domain, plist]);
491
+ return { started: true, method: 'launchctl-bootstrap', platform: 'darwin' };
492
+ } catch {
493
+ try {
494
+ await execFileImpl('launchctl', ['kickstart', '-k', `${domain}/${LAUNCHD_LABEL}`]);
495
+ return { started: true, method: 'launchctl-kickstart', platform: 'darwin' };
496
+ } catch (e) {
497
+ return { started: false, error: String(e?.message || e).split('\n')[0], platform: 'darwin' };
498
+ }
499
+ }
500
+ }
501
+
502
+ async function linuxStart(_opts, { execFileImpl }) {
503
+ try {
504
+ await execFileImpl('systemctl', ['--user', 'start', SYSTEMD_UNIT]);
505
+ return { started: true, method: 'systemctl-start', platform: 'linux' };
506
+ } catch (e) {
507
+ return { started: false, error: String(e?.message || e).split('\n')[0], platform: 'linux' };
508
+ }
509
+ }
510
+
511
+ function winStart({ dir }, { spawnImpl }) {
512
+ // Launch the same hidden VBS that HKCU\Run uses, detached, so the supervisor comes
513
+ // up now AND outlives this process. (At next login HKCU\Run launches another; the
514
+ // singleton lock makes it exit — no respawn loop, since HKCU\Run is one-shot.)
515
+ const vbs = path.join(dir, 'launch-hidden.vbs');
516
+ if (!fs.existsSync(vbs)) return { started: false, reason: 'not-installed', platform: 'win32' };
517
+ try {
518
+ const child = spawnImpl('wscript.exe', [vbs], { detached: true, stdio: 'ignore', windowsHide: true });
519
+ if (child && typeof child.unref === 'function') child.unref();
520
+ return { started: true, method: 'wscript-vbs', platform: 'win32' };
521
+ } catch (e) {
522
+ return { started: false, error: String(e?.message || e).split('\n')[0], platform: 'win32' };
523
+ }
524
+ }
525
+
456
526
  export async function uninstallService(deps = {}) {
457
527
  const platform = deps.platform || process.platform;
458
528
  if (platform === 'win32') {
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Copyright (c) 2014 The xterm.js authors. All rights reserved.
3
+ * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
4
+ * https://github.com/chjj/term.js
5
+ * @license MIT
6
+ *
7
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ * of this software and associated documentation files (the "Software"), to deal
9
+ * in the Software without restriction, including without limitation the rights
10
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ * copies of the Software, and to permit persons to whom the Software is
12
+ * furnished to do so, subject to the following conditions:
13
+ *
14
+ * The above copyright notice and this permission notice shall be included in
15
+ * all copies or substantial portions of the Software.
16
+ *
17
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23
+ * THE SOFTWARE.
24
+ *
25
+ * Originally forked from (with the author's permission):
26
+ * Fabrice Bellard's javascript vt100 for jslinux:
27
+ * http://bellard.org/jslinux/
28
+ * Copyright (c) 2011 Fabrice Bellard
29
+ * The original design remains. The terminal itself
30
+ * has been extended to include xterm CSI codes, among
31
+ * other features.
32
+ */.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{font-family:monospace;-webkit-user-select:text;user-select:text;white-space:pre}.xterm .xterm-accessibility-tree>div{transform-origin:left;width:fit-content}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;background:#0000;transition:opacity .1s linear;z-index:11}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{position:absolute;display:none}.xterm .xterm-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow, #000) 0 6px 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.ob-root{position:fixed;top:0;right:0;bottom:0;left:0;background:radial-gradient(1200px 600px at 12% -10%,var(--canvas-1),transparent 60%),radial-gradient(1000px 700px at 100% 0%,var(--canvas-2),transparent 55%),linear-gradient(160deg,var(--canvas-3),var(--bg) 70%);display:flex;align-items:center;justify-content:center;z-index:1000;overflow-y:auto;padding:32px 16px}.ob-layout{width:100%;max-width:900px;display:grid;grid-template-columns:minmax(0,1fr) 256px;align-items:center;gap:44px}.ob-stage{width:100%;max-width:560px;justify-self:end;display:flex;flex-direction:column;gap:24px}.ob-aside{align-self:center}.ob-aside-inner{border-left:1px solid var(--border);padding-left:26px}.ob-aside-label{font-size:var(--fs-xs);font-weight:600;text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--accent-hot);opacity:.85;margin-bottom:6px}.ob-aside .peer-stream-ambient{margin-top:10px;max-width:none}@media (max-width: 860px){.ob-layout{grid-template-columns:1fr;max-width:560px;gap:0}.ob-stage{max-width:none;justify-self:stretch}.ob-aside{align-self:stretch}.ob-aside-inner{border-left:none;padding-left:0;margin-top:20px;text-align:center}.ob-aside .peer-stream-ambient{margin-left:auto;margin-right:auto;max-width:340px}}.ob-brand{font-size:13px;font-weight:700;letter-spacing:.02em;color:var(--text);opacity:.85;display:flex;align-items:center;gap:6px}.ob-brand .ob-brand-mark{color:var(--accent-hot);font-size:15px}.ob-header{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:32px}.ob-step-dots{display:flex;gap:8px}.ob-dot{width:8px;height:8px;border-radius:999px;background:var(--border);transition:background .2s,transform .2s}.ob-dot.active{background:var(--accent);transform:scale(1.4)}.ob-dot.done{background:var(--accent);opacity:.55}.ob-back{background:transparent;border:none;color:var(--text-muted);font-size:13px;padding:4px 8px}.ob-back:hover{color:var(--text)}.ob-step{display:flex;flex-direction:column;gap:24px;animation:ob-rise .44s var(--ease-out, cubic-bezier(.16, 1, .3, 1)) both}@keyframes ob-rise{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){.ob-step,.ob-reveal{animation:none}}.ob-bubble{padding:16px 18px;border-radius:16px;border:1px solid var(--border);background:var(--bg-elev);max-width:90%;align-self:flex-start}.ob-bubble-agent{border-top-left-radius:4px}.ob-bubble-user{align-self:flex-end;background:var(--bg-elev-2);border-top-right-radius:4px}.ob-bubble-text{margin:0 0 6px;font-size:17px;line-height:1.4}.ob-bubble-text:last-child{margin-bottom:0}.ob-bubble-wow{font-size:19px;line-height:1.5;font-weight:500}.ob-bubble-subtle{margin:0;font-size:14px;color:var(--text-muted);line-height:1.5}.ob-bubble code{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12px;padding:1px 6px;background:var(--bg-elev-2);border-radius:4px}.ob-bubble-streaming{border-color:var(--accent)}.ob-caret{display:inline-block;margin-left:2px;color:var(--accent);animation:ob-blink .9s steps(2,end) infinite;font-weight:600}.ob-bubble-error{color:var(--error)}@keyframes ob-blink{to{visibility:hidden}}.ob-reveal{animation:ob-rise .28s ease-out both}.ob-card{display:flex;flex-direction:column;gap:8px}.ob-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-top:12px}.ob-input{background:var(--bg-elev);border:1px solid var(--border);border-radius:10px;padding:12px 14px;font-size:16px;outline:none;transition:border-color .16s}.ob-input:focus{border-color:var(--accent)}.ob-tone-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.ob-tone{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:12px 14px;background:var(--bg-elev);border:1px solid var(--border);border-radius:10px;text-align:left;transition:border-color .16s,background .16s}.ob-tone:hover{background:var(--bg-elev-2)}.ob-tone.selected{border-color:var(--accent);background:var(--bg-elev-2)}.ob-tone-label{font-size:14px;font-weight:500}.ob-tone-sample{font-size:12px;color:var(--text-muted);font-style:italic}.ob-color-row{display:flex;gap:10px;flex-wrap:wrap}.ob-color-swatch{width:32px;height:32px;padding:0;border-radius:999px;border:2px solid transparent;cursor:pointer;transition:transform .16s}.ob-color-swatch:hover{transform:scale(1.1)}.ob-color-swatch.selected{border-color:var(--text);transform:scale(1.15)}.ob-error{background:#f871711f;border:1px solid rgba(248,113,113,.4);color:var(--error);padding:8px 12px;border-radius:8px;font-size:13px}.ob-login-cmd{background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:12px 14px;font-family:ui-monospace,JetBrains Mono,Menlo,Consolas,monospace;font-size:14px;color:var(--text);overflow-x:auto;white-space:nowrap}.ob-login-cmd code{color:var(--accent)}.ob-login-link{display:inline-block;background:var(--accent);color:#0b0b0c;text-decoration:none;border-radius:10px;padding:12px 16px;font-size:14px;font-weight:600}.ob-login-link:hover{filter:brightness(1.08)}.ob-disclose{font-size:13px;color:var(--text-muted);line-height:1.5;margin-top:8px}.ob-disclose summary{cursor:pointer;color:var(--accent-hot);font-weight:550;list-style:none;width:fit-content}.ob-disclose summary::-webkit-details-marker{display:none}.ob-disclose summary:before{content:"▸ ";opacity:.7}.ob-disclose[open] summary:before{content:"▾ "}.ob-disclose[open] summary{margin-bottom:6px}.ob-consent-note{margin:22px auto 0;max-width:520px;font-size:12px;line-height:1.5;color:var(--text-muted);opacity:.85}.ob-consent-note summary{cursor:pointer;list-style:none;text-align:center;color:var(--text-muted)}.ob-consent-note summary::-webkit-details-marker{display:none}.ob-consent-note[open] summary{margin-bottom:6px}.ob-consent-note[open]{text-align:center;padding:0 6px}.ob-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.ob-actions-block{justify-content:stretch;margin-top:14px}.ob-next-full{width:100%;text-align:center}.ob-next{padding:10px 18px;font-size:14px;border-radius:10px}.ob-skip{padding:10px 14px;font-size:13px;color:var(--text-muted);background:transparent;border:1px solid transparent}.ob-skip:hover{color:var(--text);border-color:var(--border)}.ob-dropzone{border:2px dashed var(--border);border-radius:16px;padding:48px 24px;display:flex;flex-direction:column;align-items:center;gap:8px;cursor:pointer;transition:border-color .2s,background .2s;background:var(--bg-elev)}.ob-dropzone:hover{border-color:var(--accent)}.ob-dropzone.over{border-color:var(--accent);background:var(--bg-elev-2)}.ob-dropzone.peeking{cursor:wait}.ob-drop-icon{font-size:40px}.ob-drop-title{font-size:16px;font-weight:500}.ob-drop-sub{font-size:13px;color:var(--text-muted)}.ob-drop-hint{margin-top:8px;font-size:12px;color:var(--accent);text-align:center}.ob-tile-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.ob-tile{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:14px 16px;background:var(--bg-elev);border:1px solid var(--border);border-radius:10px;text-align:left;transition:border-color .16s,background .16s}.ob-tile:hover{background:var(--bg-elev-2)}.ob-tile.selected{border-color:var(--accent);background:var(--bg-elev-2)}.ob-tile-label{font-size:14px;font-weight:500}.ob-tile-note{font-size:12px;color:var(--text-muted)}.ob-tile-check{position:absolute;top:10px;right:12px;color:var(--accent);font-size:14px}.ob-soon{font-size:12px;color:var(--text-muted);font-style:italic;padding:8px 4px}.ob-qr-placeholder{display:flex;flex-direction:column;align-items:center;gap:8px;padding:24px}.ob-qr-box{width:200px;height:200px;border:2px dashed var(--border);border-radius:12px;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:13px;text-align:center;background:var(--bg-elev)}.ob-qr-soon{line-height:1.5}.ob-jobs{display:flex;flex-direction:column;gap:8px}.ob-job{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:14px 18px;background:var(--bg-elev);border:1px solid var(--border);border-radius:12px;text-align:left;transition:border-color .16s,transform .16s}.ob-job:hover{border-color:var(--accent);transform:translate(2px)}.ob-job-title{font-size:15px;font-weight:500}.ob-job-sub{font-size:13px;color:var(--text-muted)}.ob-job-remix{margin-bottom:4px;border-color:color-mix(in srgb,var(--accent) 55%,var(--border));background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 12%,var(--bg-elev)),var(--bg-elev) 70%)}.ob-job-remix .ob-job-title{color:var(--accent)}.ob-job-remix:disabled{opacity:.7;cursor:default;transform:none}.ob-remix{display:flex;flex-direction:column;gap:8px}.ob-remix-card{display:flex;align-items:center;gap:14px;padding:14px 18px;text-align:left;background:var(--bg-elev);border:1px solid var(--border);border-radius:12px;transition:border-color .16s,transform .16s,background .16s}.ob-remix-card:hover{border-color:var(--accent);transform:translate(2px);background:var(--bg-elev-2)}.ob-remix-main{display:flex;flex-direction:column;gap:3px;flex:1;min-width:0}.ob-remix-title{font-size:15px;font-weight:600}.ob-remix-by{font-size:12px;color:var(--text-muted)}.ob-remix-pitch{font-size:12.5px;color:var(--text-muted);line-height:1.45;margin-top:2px}.ob-remix-worked{font-size:11.5px;font-weight:600;color:var(--positive);margin-top:5px;font-variant-numeric:tabular-nums}.ob-remix-go{flex:none;align-self:center;white-space:nowrap;font-size:13px;font-weight:600;color:var(--accent-hot)}.ob-remix-card:hover .ob-remix-go{color:var(--accent)}.ob-login-remote{margin-top:4px}.ob-login-advanced>summary{cursor:pointer;font-size:13px;font-weight:600;color:var(--accent);list-style:none;-webkit-user-select:none;user-select:none}.ob-login-advanced>summary::-webkit-details-marker{display:none}.ob-login-advanced>summary:before{content:"▸ "}.ob-login-advanced[open]>summary:before{content:"▾ "}.react-grid-layout{position:relative;transition:height .2s ease}.react-grid-item{transition:all .2s ease;transition-property:left,top,width,height}.react-grid-item img{pointer-events:none;-webkit-user-select:none;user-select:none}.react-grid-item.cssTransforms{transition-property:transform,width,height}.react-grid-item.resizing{transition:none;z-index:1;will-change:width,height}.react-grid-item.react-draggable-dragging{transition:none;z-index:3;will-change:transform}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{background:red;opacity:.2;transition-duration:.1s;z-index:2;-webkit-user-select:none;user-select:none}.react-grid-item.react-grid-placeholder.placeholder-resizing{transition:none}.react-grid-item>.react-resizable-handle{position:absolute;width:20px;height:20px;opacity:0}.react-grid-item:hover>.react-resizable-handle{opacity:1}.react-grid-item>.react-resizable-handle:after{content:"";position:absolute;right:3px;bottom:3px;width:5px;height:5px;border-right:2px solid rgba(0,0,0,.4);border-bottom:2px solid rgba(0,0,0,.4)}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-w,.react-grid-item>.react-resizable-handle.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.react-resizable{position:relative}.react-resizable-handle{position:absolute;width:20px;height:20px;background-repeat:no-repeat;background-origin:content-box;box-sizing:border-box;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+);background-position:bottom right;padding:0 3px 3px 0}.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-resizable-handle-w,.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-resizable-handle-n,.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-italic-DpCbqKDY.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Literata Variable;font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/literata-latin-wght-normal-DLxlUchJ.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Literata Variable;font-style:italic;font-display:swap;font-weight:200 900;src:url(/assets/literata-latin-wght-italic-Bm_GJfSc.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/atkinson-hyperlegible-latin-400-normal-BrHNak5F.woff2) format("woff2")}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/atkinson-hyperlegible-latin-700-normal-GZI4o3u0.woff2) format("woff2")}@font-face{font-family:Atkinson Hyperlegible;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/atkinson-hyperlegible-latin-400-italic-D-qjh7ci.woff2) format("woff2")}@font-face{font-family:Atkinson Hyperlegible;font-style:italic;font-display:swap;font-weight:700;src:url(/assets/atkinson-hyperlegible-latin-700-italic-Bq4J7U7l.woff2) format("woff2")}:root{--canvas-1: #e8f7f0;--canvas-2: #e7f0fb;--canvas-3: #fef8ee;--bg: #ffffff;--bg-elev: #ffffff;--bg-elev-2: #eef1f6;--surface: #ffffff;--surface-2: #fbfcfe;--surface-tint: #ffffff;--border: #e2e6ee;--text: #1d2430;--text-muted: #687083;--accent: #0891b2;--accent-hot: #0e7490;--accent-ink: #ffffff;--positive: #0f9d58;--warn: #c2790b;--error: #dc2626;--chat-user: #eef2ff;--chat-agent: #ffffff;--glass: rgba(255, 255, 255, .72);--shadow: 0 1px 2px rgba(16,24,40,.05), 0 10px 28px -14px rgba(16,24,40,.22);--shadow-sm: 0 1px 2px rgba(16,24,40,.06), 0 2px 6px -2px rgba(16,24,40,.1);--shadow-lg: 0 2px 4px rgba(16,24,40,.05), 0 24px 60px -22px rgba(16,24,40,.3);--fs-hero: clamp(30px, 4.6vw, 46px);--fs-h1: 28px;--fs-h2: 22px;--fs-h3: 18px;--fs-lead: 17px;--fs-body: 15px;--fs-sm: 13px;--fs-xs: 11px;--lh-tight: 1.15;--lh-snug: 1.35;--lh-body: 1.55;--tracking-caps: .08em;--reading-font: -apple-system, BlinkMacSystemFont, "Segoe UI Variable", "Segoe UI", system-ui, Roboto, "Helvetica Neue", Arial, sans-serif;--reading-scale: 1;--reading-leading: 1.6;--r-xs: 6px;--r-sm: 8px;--r-md: 10px;--r-lg: 12px;--r-xl: 16px;--r-2xl: 20px;--r-pill: 999px;--radius: 16px;--border-w: 1px;--shadow-theme: var(--shadow);--font-ui: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-weight-strong: 650;--ease-spring: cubic-bezier(.22, 1, .36, 1);--ease-out: cubic-bezier(.16, 1, .3, 1);--dur-1: .14s;--dur-2: .22s;--dur-3: .32s;--dur-4: .52s}:root[data-theme=dark]{--canvas-1: #0b1620;--canvas-2: #0c1320;--canvas-3: #0a0f14;--bg: #0a0c10;--bg-elev: #11141a;--bg-elev-2: #161b22;--surface: #11141a;--surface-2: #0d1117;--surface-tint: #11141a;--border: #1f242d;--text: #e8eaed;--text-muted: #8b95a3;--positive: #34d399;--warn: #fbbf24;--error: #f87171;--chat-user: #161b22;--chat-agent: #0d1117;--glass: rgba(10, 14, 20, .66);--shadow: 0 1px 2px rgba(0,0,0,.45), 0 10px 28px -14px rgba(0,0,0,.75);--shadow-sm: 0 1px 2px rgba(0,0,0,.5), 0 2px 6px -2px rgba(0,0,0,.6);--shadow-lg: 0 2px 4px rgba(0,0,0,.5), 0 24px 60px -22px rgba(0,0,0,.85)}:root[data-theme=dark] *{scrollbar-color:rgba(255,255,255,.16) transparent}:root[data-theme=dark] *::-webkit-scrollbar-thumb{background:#ffffff24}:root[data-theme=dark] *::-webkit-scrollbar-thumb:hover{background:#ffffff42}.fd-wallpaper,.app.fd-wallpaper{background:radial-gradient(1200px 600px at 12% -10%,var(--canvas-1),transparent 60%),radial-gradient(1000px 700px at 100% 0%,var(--canvas-2),transparent 55%),linear-gradient(160deg,var(--canvas-3),var(--bg) 70%)}.fd-brand{display:inline-flex;align-items:center;gap:7px;font-size:var(--fs-sm);font-weight:700;letter-spacing:.01em;color:var(--text)}.fd-brand-mark{color:var(--accent-hot);font-size:15px;line-height:1}.fd-eyebrow{font-size:var(--fs-xs);font-weight:600;text-transform:uppercase;letter-spacing:var(--tracking-caps);color:var(--text-muted)}.fd-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);box-shadow:var(--shadow-lg)}@media (prefers-reduced-motion: reduce){.fd-anim,.fd-anim *{animation:none!important;transition:none!important}}*{box-sizing:border-box}*{scrollbar-width:thin;scrollbar-color:rgba(20,30,50,.22) transparent}*::-webkit-scrollbar{width:8px;height:8px}*::-webkit-scrollbar-thumb{background:#141e3233;border-radius:999px}*::-webkit-scrollbar-thumb:hover{background:#141e3257}*::-webkit-scrollbar-track{background:transparent}html,body,#root{height:100%;margin:0;font-family:var(--font-ui, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-feature-settings:"cv11","ss01"}#root{padding-top:var(--support-banner-h, 0px)}button,input,textarea,select{font-family:inherit;color:inherit}button{cursor:pointer;background:var(--bg-elev-2);color:var(--text);border:var(--border-w, 1px) solid var(--border);padding:6px 12px;border-radius:calc(var(--radius, 16px) * .375);font-size:13px;transition:background .12s,border-color .12s}button:hover:not(:disabled){background:var(--bg);border-color:var(--accent)}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}button.primary:hover:not(:disabled){background:var(--accent-hot)}button:disabled{opacity:.45;cursor:not-allowed}.app{display:grid;grid-template-rows:auto 1fr 32px;height:100%;background:var(--bg)}.topbar{display:flex;align-items:center;flex-wrap:wrap;gap:8px 16px;align-content:center;min-height:48px;padding:6px 16px;border-bottom:1px solid var(--border);background:var(--bg-elev);position:relative}.topbar-more{display:inline-flex}.more-menu{position:absolute;top:calc(100% + 4px);right:10px;z-index:30;display:flex;flex-direction:column;gap:2px;padding:6px;width:max-content;min-width:160px;max-width:calc(100vw - 16px);border:1px solid var(--border);border-radius:10px;background:var(--bg-elev);box-shadow:var(--shadow)}.more-menu button{display:block;width:100%;min-height:38px;padding:9px 12px;text-align:left;white-space:nowrap;font-size:13px;border:none;border-radius:7px;background:transparent;color:inherit;cursor:pointer}.more-menu button:hover{background:var(--surface-2, var(--surface))}.topbar .brand{font-weight:600;font-size:14px;letter-spacing:.02em}.topbar .badge{font-size:11px;padding:3px 8px;border-radius:999px;border:1px solid var(--border);color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em}.topbar .badge.partner{color:var(--positive);border-color:#34d3994d}.topbar .badge.viewer{color:var(--accent-hot);border-color:#818cf866}.topbar .badge.client{color:var(--warn);border-color:#fbbf2466}.topbar .spacer{flex:1}.bottombar{display:flex;align-items:center;gap:16px;padding:0 16px;border-top:1px solid var(--border);background:var(--bg-elev);font-size:12px;color:var(--text-muted)}.bottombar .pill{padding:2px 8px;border-radius:999px;background:var(--bg-elev-2);border:1px solid var(--border)}.bottombar .pill.live:before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--positive);margin-right:6px;animation:pulse 1.6s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.workspace{display:grid;grid-template-columns:240px 1fr 1fr;gap:0;overflow:hidden}.workspace.collapsed-tree{grid-template-columns:36px 1fr 1fr}.workspace.no-preview{grid-template-columns:240px 1fr}.workspace.no-preview.collapsed-tree{grid-template-columns:36px 1fr}.workspace.no-tree{grid-template-columns:1fr 1fr}.workspace.no-tree.no-preview{grid-template-columns:1fr}.tree-pane,.chat-pane,.preview-pane{border-right:1px solid var(--border);overflow:hidden;display:flex;flex-direction:column;min-width:0}.preview-pane{border-right:none}.chat-pane{background:var(--bg)}.chat-header{display:flex;align-items:center;gap:8px;padding:10px 16px;border-bottom:1px solid var(--border);background:var(--bg-elev);font-size:13px}.chat-messages{flex:1;min-height:0;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px}.chat-msg{font-size:14px;line-height:1.6;word-wrap:break-word}.chat-msg.user{align-self:flex-end;max-width:85%;padding:9px 13px;border-radius:13px 13px 3px;background:var(--chat-user);border:1px solid rgba(99,102,241,.28)}.chat-msg.user .msg-plain{white-space:pre-wrap;font-family:var(--reading-font);font-size:calc(16px * var(--reading-scale));line-height:var(--reading-leading)}.chat-msg.agent{align-self:stretch;max-width:100%;display:flex;flex-direction:column;gap:10px}.chat-msg.error{align-self:stretch;padding:10px 14px;border-radius:10px;background:#f8717117;border:1px solid rgba(248,113,113,.4);color:var(--error);font-size:13px}.chat-msg.system{align-self:center;max-width:90%;text-align:center;font-size:12px;color:var(--text-muted);padding:5px 14px;border:1px dashed var(--border);border-radius:999px}.chat-toolbar{display:flex;align-items:center;flex:none;gap:8px;padding:6px 16px;border-bottom:1px solid var(--border);background:var(--bg-elev)}.chat-toolbar-spacer{flex:1}.chat-newbtn{font-size:12px;padding:3px 10px;background:transparent;border:1px solid var(--border);color:var(--text-muted)}.chat-newbtn:hover:not(:disabled){color:var(--accent-hot);border-color:var(--accent)}.chat-aabtn{display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:3px 10px;background:transparent;border:1px solid var(--border);color:var(--text-muted)}.chat-aabtn:hover:not(:disabled){color:var(--accent-hot);border-color:var(--accent)}.chat-aa-glyph{font-weight:700;letter-spacing:.02em;font-size:13px}.chat-aa-glyph:first-letter{font-size:1.15em}.chat-input{flex:none;border-top:1px solid var(--border);padding:12px;background:var(--bg-elev);display:flex;gap:8px}.chat-input textarea{flex:1;resize:none;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:10px 12px;font-size:14px;min-height:44px;max-height:200px}.chat-input textarea:focus{outline:none;border-color:var(--accent)}.chat-input .send-btn{align-self:flex-end}.tree-pane{background:var(--bg-elev)}.tree-header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--border);font-size:12px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em}.tree-list{flex:1;overflow:auto;padding:8px;font-size:13px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.tree-node{padding:2px 4px;border-radius:4px;cursor:pointer;display:flex;align-items:center;gap:4px;color:var(--text)}.tree-node:hover{background:var(--bg-elev-2)}.tree-node.dir{color:var(--accent-hot)}.tree-node .indent{display:inline-block;width:12px}.tree-collapsed-rail{width:36px;background:var(--bg-elev);display:flex;align-items:center;justify-content:center;padding-top:12px}.preview-pane{background:#050507}.preview-tabs{display:flex;align-items:center;gap:4px;padding:6px 8px;border-bottom:1px solid var(--border);background:var(--bg-elev);font-size:12px}.preview-tabs button{border:1px solid transparent;background:transparent;border-radius:6px;padding:4px 10px;color:var(--text-muted)}.preview-tabs button.active{background:var(--bg-elev-2);color:var(--text);border-color:var(--border)}.preview-body{flex:1;overflow:hidden;position:relative;background:#0c0c10}.preview-iframe{width:100%;height:100%;border:0;background:#fff}.preview-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--text-muted);font-size:13px;text-align:center;padding:20px}.preview-port-input{display:flex;gap:6px;align-items:center}.preview-port-input input{width:80px;background:var(--bg);color:var(--text);border:1px solid var(--border);padding:4px 8px;border-radius:6px}.preview-code-view{width:100%;height:100%;overflow:auto;padding:12px 14px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:var(--text)}.preview-code-view pre{margin:0;white-space:pre}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:50}.modal{background:var(--bg-elev);border:1px solid var(--border);border-radius:12px;padding:24px;width:min(520px,90%);box-shadow:0 20px 60px #00000073;max-height:calc(100vh - 48px);overflow-y:auto}.modal h2{margin:0 0 4px;font-size:16px}.modal .muted{color:var(--text-muted);font-size:12px;margin-bottom:18px}.modal label{font-size:12px;color:var(--text-muted);margin-bottom:6px;display:block}.modal .row{display:flex;gap:8px;align-items:center;margin-bottom:12px}.modal .url-output{background:var(--bg);border:1px solid var(--border);padding:10px 12px;border-radius:8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;word-break:break-all;margin-bottom:12px}.modal .actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.inbox-card{margin:0 16px 16px;padding:12px 14px;border:1px dashed rgba(129,140,248,.45);border-radius:10px;background:#818cf812;font-size:13px;color:var(--text)}.inbox-card strong{color:var(--accent-hot)}.inbox-card .muted{color:var(--text-muted);font-size:12px;margin-top:6px;display:block}.terminal-overlay{position:fixed;bottom:32px;left:0;right:0;height:320px;display:flex;flex-direction:column;background:#1e1e1e;border-top:1px solid var(--border);padding:10px 12px 12px;z-index:30;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:var(--text-muted)}.terminal-overlay header{flex:none;display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.terminal-overlay header strong{color:#d4d4d4}.terminal-block{flex:1;min-height:0;display:flex;flex-direction:column}.terminal-host{flex:1;min-height:0;width:100%}.terminal-msg{padding:6px 2px;font-size:12px}.terminal-msg.err{color:var(--error)}.spinner{width:14px;height:14px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;display:inline-block;animation:spin .8s linear infinite;vertical-align:middle}@keyframes spin{to{transform:rotate(360deg)}}.agent-text{font-family:var(--reading-font);font-size:calc(16px * var(--reading-scale));line-height:var(--reading-leading)}.agent-error{padding:8px 12px;border-radius:8px;background:#f8717117;border:1px solid rgba(248,113,113,.35);color:var(--error);font-size:13px}.stream-cursor{display:inline-block;width:7px;height:1.05em;margin-left:1px;background:var(--accent-hot);border-radius:1px;vertical-align:text-bottom;animation:blink 1.05s steps(2,start) infinite}@keyframes blink{50%{opacity:0}}.agent-working{display:flex;align-items:center;gap:8px;color:var(--text-muted);font-size:13px}.agent-working .dots{display:inline-flex;gap:3px}.agent-working .dots i{width:5px;height:5px;border-radius:50%;background:var(--accent-hot);display:inline-block;animation:dotpulse 1.2s ease-in-out infinite}.agent-working .dots i:nth-child(2){animation-delay:.18s}.agent-working .dots i:nth-child(3){animation-delay:.36s}@keyframes dotpulse{0%,to{opacity:.25;transform:translateY(0)}50%{opacity:1;transform:translateY(-2px)}}.usage-footer{display:flex;gap:12px;font-size:11px;color:var(--text-muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.stderr-block{font-size:12px}.stderr-block summary{color:var(--warn);cursor:pointer}.stderr-block pre{white-space:pre-wrap;margin:6px 0 0;color:var(--text-muted);font-size:11px}.chat-empty{margin:auto;text-align:center;max-width:380px;padding:32px 16px;color:var(--text-muted)}.chat-empty-mark{font-size:28px;color:var(--accent-hot);margin-bottom:8px}.chat-empty-title{font-size:16px;color:var(--text);font-weight:600;margin:0 0 6px}.chat-empty-sub{font-size:13px;margin:0 0 16px;line-height:1.5}.chat-empty-hints{display:flex;flex-direction:column;gap:6px}.chat-empty-hints span{font-size:12px;padding:6px 10px;background:var(--bg-elev);border:1px solid var(--border);border-radius:8px}.chat-empty-starters{display:flex;flex-direction:column;gap:8px}.chat-empty-starter{font-size:13px;font-weight:550;padding:10px 14px;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:10px;cursor:pointer;text-align:center;transition:border-color .14s,background .14s,transform .14s,box-shadow .14s}.chat-empty-starter:hover:not(:disabled){border-color:color-mix(in srgb,var(--accent) 55%,var(--border));background:color-mix(in srgb,var(--accent) 8%,var(--surface));transform:translateY(-1px)}.chat-empty-starter.primary{color:var(--accent-ink);background:var(--accent);border-color:var(--accent);box-shadow:0 4px 14px color-mix(in srgb,var(--accent) 30%,transparent)}.chat-empty-starter.primary:hover:not(:disabled){background:var(--accent-hot);border-color:var(--accent-hot)}.chat-empty-starter:disabled{opacity:.5;cursor:default}.chat-empty-warn{font-size:12px;color:var(--warn);margin-top:14px}.chat-readonly-banner{padding:10px 16px;border-top:1px solid var(--border);color:var(--text-muted);font-size:12px}.markdown{font-family:var(--reading-font)}.markdown>:first-child{margin-top:0}.markdown>:last-child{margin-bottom:0}.markdown p{margin:.5em 0}.markdown h1,.markdown h2,.markdown h3,.markdown h4{margin:16px 0 8px;line-height:1.3;font-weight:600}.markdown h1{font-size:1.3em}.markdown h2{font-size:1.15em}.markdown h3{font-size:1.05em}.markdown h4{font-size:.95em;color:var(--text-muted)}.markdown ul,.markdown ol{margin:.5em 0;padding-left:1.4em}.markdown li{margin:.2em 0}.markdown li::marker{color:var(--text-muted)}.markdown a{color:var(--accent-hot);text-decoration:none}.markdown a:hover{text-decoration:underline}.markdown strong{color:var(--text);font-weight:650}.markdown blockquote{margin:8px 0;padding:2px 12px;border-left:3px solid var(--border);color:var(--text-muted)}.markdown hr{border:none;border-top:1px solid var(--border);margin:14px 0}.md-code-inline{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.86em;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:4px;padding:1px 5px;color:var(--accent-hot)}.md-table-wrap{overflow-x:auto;margin:10px 0}.markdown table{border-collapse:collapse;font-size:.85em;width:100%}.markdown th,.markdown td{border:1px solid var(--border);padding:5px 10px;text-align:left}.markdown th{background:var(--bg-elev)}.code-block{margin:10px 0;border:1px solid var(--border);border-radius:9px;overflow:hidden;background:var(--bg-elev-2)}.code-block-head{display:flex;align-items:center;justify-content:space-between;padding:5px 10px;background:var(--bg-elev);border-bottom:1px solid var(--border)}.code-lang{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}.code-copy{font-size:11px;padding:2px 8px;background:transparent}.code-block-body{margin:0;padding:11px 13px;overflow-x:auto;max-height:440px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;line-height:1.55;background:transparent}.tool-card{border:1px solid var(--border);border-left:3px solid var(--border);border-radius:8px;background:var(--bg-elev);font-size:13px;overflow:hidden}.tool-card.running{border-left-color:var(--accent)}.tool-card.done{border-left-color:var(--positive)}.tool-card.error{border-left-color:var(--error)}.tool-head{display:flex;align-items:center;gap:7px;padding:7px 11px}.tool-icon{font-size:13px}.tool-verb{font-weight:600;color:var(--text);white-space:nowrap}.tool-target{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:var(--accent-hot);background:var(--bg-elev-2);padding:1px 6px;border-radius:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1}.tool-tag{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--warn);border:1px solid rgba(251,191,36,.4);border-radius:4px;padding:0 5px}.tool-status{margin-left:auto;font-size:12px}.tool-card.done .tool-status{color:var(--positive)}.tool-card.error .tool-status{color:var(--error)}.tool-spinner{width:11px;height:11px;display:inline-block;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}.tool-desc{padding:0 11px 8px;color:var(--text-muted);font-size:12px}.tool-raw{margin:0 11px 9px;padding:8px;font-size:11px;background:var(--bg);border-radius:6px;overflow-x:auto;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--text-muted)}.tool-result{border-top:1px solid var(--border);font-size:12px}.tool-result summary{padding:6px 11px;cursor:pointer;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.tool-result.err summary{color:var(--error)}.tool-result pre{margin:0;padding:8px 11px 11px;white-space:pre-wrap;word-break:break-word;font-size:11.5px;color:var(--text-muted);max-height:280px;overflow-y:auto;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.diff-view{margin:0 11px 10px;border:1px solid var(--border);border-radius:7px;overflow:hidden;background:var(--bg)}.diff-stat{display:flex;gap:10px;padding:4px 10px;background:var(--bg-elev);border-bottom:1px solid var(--border);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}.diff-stat-add{color:var(--positive)}.diff-stat-del{color:var(--error)}.diff-body{margin:0;padding:5px 0;overflow-x:auto;max-height:360px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:1.5}.diff-line{display:flex;padding:0 4px}.diff-line.add{background:#34d3991c}.diff-line.del{background:#f871711c}.diff-gutter{width:16px;flex:none;text-align:center;color:var(--text-muted);-webkit-user-select:none;user-select:none}.diff-line.add .diff-gutter{color:var(--positive)}.diff-line.del .diff-gutter{color:var(--error)}.diff-line.add .diff-text{color:#b9f4dc}.diff-line.del .diff-text{color:#f8c4c4}.diff-line.ctx .diff-text{color:var(--text-muted)}.diff-text{white-space:pre-wrap;word-break:break-word}.diff-more{padding:4px 10px;font-size:11px;color:var(--text-muted);background:var(--bg-elev);border-top:1px solid var(--border)}.thinking-block{border:1px dashed var(--border);border-radius:7px;background:#818cf80a;font-size:12px}.thinking-block summary{padding:6px 11px;cursor:pointer;color:var(--text-muted)}.thinking-body{padding:0 11px 9px;color:var(--text-muted);white-space:pre-wrap;line-height:1.5;font-size:12px}.sync-state{padding:10px 12px;border-radius:8px;border:1px solid var(--border);background:var(--bg-elev-2);font-size:13px;margin-bottom:14px;display:flex;flex-direction:column;gap:4px}.sync-state.ok{border-color:#34d39966;background:#34d39912}.sync-state.warn{border-color:#fbbf2466;background:#fbbf2412}.sync-state .muted{margin:0;font-size:12px}.sync-input{background:var(--bg);color:var(--text);border:1px solid var(--border);padding:6px 10px;border-radius:6px;font-size:13px}.sync-input:focus{outline:none;border-color:var(--accent)}.conflict-banner{position:fixed;top:48px;left:0;right:0;z-index:40;display:flex;align-items:center;gap:10px;padding:8px 16px;background:#fbbf2421;border-bottom:1px solid rgba(251,191,36,.5);color:var(--text);font-size:13px}.conflict-banner .ico{font-size:14px}.conflict-banner code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:var(--warn)}.conflict-banner .spacer{flex:1}.conflict-banner button{font-size:11px;padding:3px 9px}.bottombar .pill.synced{color:var(--positive);border-color:#34d39959}.bottombar .pill.sync-off{color:var(--text-muted)}.bottombar .pill.conflict-badge{background:#f871711f;border-color:#f8717173;color:var(--error, #ef4444);cursor:pointer;font-weight:600}.bottombar .pill.conflict-badge:hover{background:#f8717138}.conflict-panel{position:fixed;right:16px;bottom:56px;width:min(720px,92vw);max-height:70vh;z-index:60;display:flex;flex-direction:column;background:var(--surface, #1f2937);color:var(--text);border:1px solid var(--border, rgba(255,255,255,.1));border-radius:8px;box-shadow:0 14px 40px #0006;overflow:hidden}.conflict-panel-header{display:flex;align-items:center;gap:10px;padding:10px 14px;background:#f8717114;border-bottom:1px solid var(--border, rgba(255,255,255,.1));font-size:13px}.conflict-panel-header .spacer{flex:1}.conflict-panel-header button{font-size:11px;padding:3px 9px}.conflict-panel-error{padding:8px 14px;font-size:12px;color:var(--error, #ef4444)}.conflict-list{list-style:none;margin:0;padding:0;overflow:auto}.conflict-row{border-bottom:1px solid var(--border, rgba(255,255,255,.06))}.conflict-row-head{display:flex;align-items:center;gap:8px;padding:8px 14px;cursor:pointer;font-size:13px}.conflict-row-head:hover{background:#ffffff0a}.conflict-row-head code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.conflict-row-head .spacer{flex:1}.conflict-row-head .muted{color:var(--text-muted);font-size:12px}.conflict-row-body{padding:8px 14px 14px}.conflict-meta{display:flex;gap:14px;font-size:11px;color:var(--text-muted);margin-bottom:8px}.conflict-meta code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.conflict-actions{margin-top:10px;display:flex;gap:8px}.conflict-actions button{font-size:12px;padding:6px 12px}.bazaar-card{margin:10px 0;border-radius:12px;font-size:13.5px;line-height:1.55;animation:bz-in .32s cubic-bezier(.2,.8,.2,1)}@keyframes bz-in{0%{opacity:0;transform:translateY(6px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}.bz-call{display:flex;align-items:center;gap:8px;padding:9px 13px;background:var(--bg-elev);border:1px solid var(--border);color:var(--text-muted)}.bz-call-label{color:var(--text);font-weight:500}.bz-call-need{color:var(--text-muted);font-style:italic}.bz-icon{font-size:15px}.bz-dots{display:inline-flex;gap:3px;margin-left:2px}.bz-dots i{width:4px;height:4px;border-radius:50%;background:var(--accent-hot);opacity:.5;animation:bz-blink 1s infinite}.bz-dots i:nth-child(2){animation-delay:.2s}.bz-dots i:nth-child(3){animation-delay:.4s}@keyframes bz-blink{0%,to{opacity:.25}50%{opacity:1}}.bz-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}.bz-head-title{font-weight:600;font-size:13px;letter-spacing:.01em}.bz-search,.bz-recipe,.bz-preview,.bz-publish,.bz-empty{padding:13px 15px;background:var(--bg-elev);border:1px solid var(--border)}.bz-search{border-left:3px solid var(--accent)}.bz-empty{display:flex;align-items:center;gap:8px;color:var(--text-muted)}.bz-hit{display:flex;align-items:center;justify-content:space-between;gap:12px}.bz-hit-main{display:flex;flex-direction:column}.bz-hit-title{font-weight:600;color:var(--text)}.bz-hit-by{font-size:12px;color:var(--text-muted)}.bz-outcome{flex:none;text-align:right;font-size:12px;color:var(--text-muted)}.bz-outcome strong{color:var(--positive);font-size:15px;display:block}.bz-hit-pitch{margin:8px 0 0;color:var(--text-muted);font-size:12.5px}.bz-others{margin-top:8px;font-size:11.5px;color:var(--text-muted)}.bz-recipe,.bz-preview{display:flex;align-items:center;gap:9px;border-left:3px solid var(--accent-hot)}.bz-recipe-text strong{color:var(--text)}.bz-badge{margin-left:8px;font-size:10px;text-transform:uppercase;letter-spacing:.04em;padding:1px 6px;border-radius:999px;vertical-align:middle;background:#34d39924;color:var(--positive)}.bz-badge-new{background:#818cf829;color:var(--accent-hot)}.bz-trust-ok{background:#34d39924;color:var(--positive);border:1px solid rgba(52,211,153,.35)}.bz-trust-neutral{background:#818cf81f;color:var(--accent-hot);border:1px solid rgba(129,140,248,.3)}.bz-trust-warn{background:#f59e0b29;color:var(--warn);border:1px solid rgba(245,158,11,.4);cursor:help}.bz-threeway{padding:16px;background:linear-gradient(180deg,#6366f11a,#6366f105),var(--bg-elev);border:1px solid rgba(129,140,248,.35);box-shadow:0 6px 24px -12px #6366f180}.bz-receipt{padding:13px 15px;margin-bottom:8px;border-radius:12px;background:var(--bg-elev);border:1px solid var(--border)}.bz-receipt-high{border-color:#f59e0b80;background:#f59e0b0f}.bz-receipt-head{display:flex;align-items:center;gap:8px;font-weight:600;font-size:13px;color:var(--text)}.bz-receipt-title{min-width:0}.bz-receipt-lines{margin:8px 0 0;padding-left:18px;font-size:12.5px;line-height:1.55;color:var(--text)}.bz-receipt-lines li{margin:2px 0}.bz-receipt-lines strong{color:var(--text)}.bz-receipt-warn{color:var(--warn)}.bz-receipt-foot{color:var(--text-muted);font-size:11.5px}.bz-receipt-confirm{margin-top:10px;padding:8px 10px;border-radius:8px;font-size:12px;background:#f59e0b1f;color:var(--warn);border:1px solid rgba(245,158,11,.35)}.bz-tw-head{font-weight:700;font-size:13px;letter-spacing:.02em;margin-bottom:12px;color:var(--text);display:flex;align-items:center;gap:7px}.bz-tw-spark{color:var(--accent-hot)}.bz-tw-cols{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}@media (max-width: 720px){.bz-tw-cols{grid-template-columns:1fr}}.bz-tw-col{background:var(--bg);border:1px solid var(--border);border-radius:9px;padding:11px;display:flex;flex-direction:column;gap:5px}.bz-tw-producer{border-color:#818cf866}.bz-tw-who{font-size:12px;font-weight:600;color:var(--text)}.bz-tw-what{font-size:12px;color:var(--text-muted);line-height:1.5}.bz-tw-meter{margin-top:auto;padding-top:6px;display:flex;align-items:baseline;gap:7px}.bz-meter-amount{font-size:18px;font-weight:700;color:var(--positive);transition:color .3s}.bz-meter-sub{font-size:11px;color:var(--text-muted)}.bz-represented{display:inline-block;font-size:10px;color:var(--text-muted);opacity:.85;font-style:italic}.bz-publish{border-left:3px solid var(--positive)}.bz-publish-text{margin:0 0 8px}.bz-draft{padding:13px 15px;background:var(--bg-elev);border:1px solid var(--border);border-left:3px solid var(--warn)}.bz-draft-source{font-size:11.5px;color:var(--text-muted);margin:6px 0 2px}.bz-draft-knowhow{margin:8px 0}.bz-draft-knowhow summary{cursor:pointer;font-size:12px;color:var(--accent-hot)}.bz-draft-knowhow pre{margin:8px 0 0;max-height:220px;overflow:auto;font-size:11.5px;background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:10px;white-space:pre-wrap;word-break:break-word;line-height:1.5}.bz-draft-hint{font-size:11.5px;color:var(--text-muted);margin-top:6px;font-style:italic}.bz-draft-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:10px}.bz-draft-actions .bz-draft-hint{margin:0}.bz-draft-skip{padding:6px 12px;border-radius:8px;font-size:12px;background:transparent;border:1px solid var(--border);color:var(--text-muted)}.bz-draft-skip:hover:not(:disabled){color:var(--text);border-color:#3a3a48;background:var(--bg-elev-2)}.bazaar-modal{max-width:880px;width:94vw}.bz-store-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.bz-store-headings h2{margin:0 0 4px}.bz-store-sub{margin:0;font-size:12.5px;line-height:1.55;max-width:58ch}.bz-store-stats{display:flex;gap:8px;flex:none}.bz-stat{display:flex;flex-direction:column;align-items:center;gap:1px;padding:6px 13px;border-radius:10px;background:var(--bg-elev);border:1px solid var(--border);font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.bz-stat strong{font-size:17px;color:var(--text);font-variant-numeric:tabular-nums}.bz-err{color:var(--error);font-size:12px;margin-bottom:10px}.bz-you-banner{display:flex;align-items:center;gap:9px;margin:0 0 14px;padding:9px 13px;border-radius:10px;font-size:12.5px;color:var(--text);background:linear-gradient(90deg,#6366f129,#6366f108);border:1px solid rgba(129,140,248,.32)}.bz-you-banner strong{color:var(--accent-hot)}.bz-you-spark{color:var(--accent-hot);font-size:15px;flex:none}.bz-shelf-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;max-height:58vh;overflow:auto;padding:2px 4px 2px 2px}@media (max-width: 640px){.bz-shelf-grid{grid-template-columns:1fr}}.bz-browse{display:flex;flex-direction:column;gap:8px;margin:4px 0 14px}.bz-search{width:100%;box-sizing:border-box;padding:9px 12px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--text);font-size:13px}.bz-search:focus{outline:none;border-color:var(--accent)}.bz-chips{display:flex;flex-wrap:wrap;gap:6px}.bz-chip{padding:5px 11px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--text-muted);font-size:12px;cursor:pointer}.bz-chip:hover{border-color:var(--accent);color:var(--text)}.bz-chip.active{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.bz-rail{margin-bottom:14px}.bz-rail-head{font-size:12.5px;font-weight:650;color:var(--text);margin:2px 0 8px}.bz-rail-track{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(240px,1fr);gap:12px;overflow-x:auto;padding-bottom:8px;align-items:start}.bz-all-head{font-size:12.5px;font-weight:650;color:var(--text);margin:6px 0 8px}.bz-no-results{padding:18px 4px}.bz-detail-badges{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}.bz-theme-section{margin:6px 0 14px}.bz-theme-section-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:8px}.bz-theme-section-head .gallery-section{margin:0}.bz-theme-section-sub{font-size:11.5px}.bz-theme-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}@media (max-width: 720px){.bz-theme-grid{grid-template-columns:repeat(2,1fr)}}.bz-theme-card-wrap{border:1px solid var(--border);border-radius:12px;overflow:hidden;background:var(--surface);display:flex;flex-direction:column}.bz-theme-card-wrap.mine{border-color:var(--accent)}.bz-theme-swatch{position:relative;height:64px;width:100%;border-bottom:1px solid var(--border)}.bz-theme-card{position:absolute;left:10px;top:12px;width:56%;height:38px;border-radius:7px;border:1px solid;box-shadow:0 2px 6px #0000001f;display:flex;flex-direction:column;justify-content:center;gap:5px;padding:0 8px}.bz-theme-line{height:4px;width:80%;border-radius:2px;opacity:.9}.bz-theme-line.short{width:50%;opacity:.6}.bz-theme-dot{position:absolute;right:12px;bottom:12px;width:18px;height:18px;border-radius:999px;box-shadow:0 0 0 3px #fff9,0 2px 6px #0003}.bz-theme-meta{display:flex;flex-direction:column;gap:2px;padding:9px 11px 4px}.bz-theme-title{font-size:13px;font-weight:650;color:var(--text)}.bz-theme-by{font-size:11px;color:var(--text-muted)}.bz-theme-pitch{font-size:11.5px;color:var(--text-muted);line-height:1.4;margin-top:2px}.bz-theme-foot{display:flex;align-items:center;gap:8px;margin-top:6px;flex-wrap:wrap}.bz-theme-rating{font-size:11px;color:var(--warn);letter-spacing:1px}.bz-theme-actions{display:flex;gap:6px;margin:8px 11px 4px}.bz-theme-apply{flex:1;padding:7px 0;border-radius:8px;background:var(--accent);border:1px solid var(--accent);color:var(--accent-ink);font-size:12.5px;font-weight:600}.bz-theme-apply:hover:not(:disabled){background:var(--accent-hot);border-color:var(--accent-hot)}.bz-theme-remix{flex:none;padding:7px 12px;border-radius:8px;background:var(--surface);border:1px solid var(--border);color:var(--text);font-size:12.5px;font-weight:600;cursor:pointer}.bz-theme-remix:hover{border-color:var(--accent);color:var(--accent)}.bz-theme-lineage{display:block;padding:0 11px 9px;font-size:10.5px;color:var(--text-muted);font-style:italic}.bz-theme-report{flex:none;padding:7px 10px;border-radius:8px;background:transparent;border:1px solid var(--border);color:var(--text-muted);font-size:11.5px;font-weight:500;cursor:pointer}.bz-theme-report:hover:not(:disabled){border-color:var(--danger, #e5484d);color:var(--danger, #e5484d)}.bz-theme-report:disabled{opacity:.7;cursor:default}.bz-loading{padding:14px 2px;font-size:13px}.bz-net-note{display:block;font-size:11px;margin-top:4px}.bz-net-info,.bz-net-empty{color:var(--text-muted)}.bz-net-offline{color:var(--warn, #c98a00)}.bz-net-live{color:var(--accent)}.bz-earn-honesty{font-size:11px}.bz-card{border:1px solid var(--border);border-radius:12px;padding:13px 14px;background:var(--bg-elev);display:flex;flex-direction:column;gap:9px;cursor:pointer;transition:border-color .14s,transform .14s,box-shadow .14s,background .14s}.bz-card:hover{border-color:color-mix(in srgb,var(--text) 28%,var(--border));transform:translateY(-1px);box-shadow:var(--shadow)}.bz-card.mine{border-color:#818cf88c;background:linear-gradient(180deg,rgba(99,102,241,.08),var(--bg-elev) 60%)}.bz-card.open{background:var(--bg-elev-2)}.bz-card-head{display:flex;align-items:flex-start;gap:11px}.bz-card-glyph{font-size:20px;line-height:1;flex:none;width:38px;height:38px;display:grid;place-items:center;border-radius:10px;background:var(--bg-elev-2);border:1px solid var(--border)}.bz-card.mine .bz-card-glyph{border-color:#818cf866}.bz-card-titles{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.bz-card-title{font-weight:650;font-size:13.5px;line-height:1.3}.bz-card-by{font-size:11.5px;color:var(--text-muted);display:flex;align-items:center;gap:6px;flex-wrap:wrap}.bz-kind{font-size:9.5px;text-transform:uppercase;letter-spacing:.05em;font-weight:600;padding:1px 6px;border-radius:999px;border:1px solid var(--border);color:var(--text-muted)}.bz-kind-vendor{color:var(--accent-hot);border-color:#818cf866;background:#818cf814}.bz-kind-you{color:var(--accent-ink);border-color:var(--accent);background:var(--accent)}.bz-kind-tool{color:var(--warn);border-color:#fbbf2466;background:#fbbf2412}.bz-card-score{flex:none;display:flex;flex-direction:column;align-items:flex-end;line-height:1}.bz-score-pct{color:var(--positive);font-weight:750;font-size:16px;font-variant-numeric:tabular-nums}.bz-score-label{font-size:9px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-top:2px}.bz-new{font-size:9.5px;font-weight:700;letter-spacing:.06em;color:var(--accent-hot);border:1px solid rgba(129,140,248,.5);border-radius:999px;padding:2px 7px;background:#818cf814}.bz-score-bar{height:4px;border-radius:999px;background:var(--bg-elev-2);overflow:hidden}.bz-score-bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--positive),#6ee7b7)}.bz-card-pitch{margin:0;font-size:12px;color:var(--text);opacity:.82;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.bz-card.open .bz-card-pitch{-webkit-line-clamp:unset}.bz-card-foot{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:11px;margin-top:auto}.bz-card-rating{color:var(--warn);font-size:12px;letter-spacing:.5px}.bz-reward-pill{font-size:10px;padding:2px 8px;border-radius:999px;color:var(--text-muted);border:1px solid var(--border);background:var(--bg-elev-2)}.bz-badge-verified{background:#34d39924;color:var(--positive);border:1px solid rgba(52,211,153,.35)}.bz-badge-tested{background:#818cf81f;color:var(--accent-hot);border:1px solid rgba(129,140,248,.3)}.bz-card-expand{margin-left:auto;color:var(--text-muted);font-size:11px}.bz-card-detail{border-top:1px solid var(--border);margin-top:2px;padding-top:9px;display:flex;flex-direction:column;gap:6px}.bz-detail-summary{margin:0;font-size:12px;line-height:1.55;color:var(--text);opacity:.9}.bz-detail-stat{margin:0;font-size:11px}.bz-detail-hint{margin:0;font-size:11.5px;color:var(--accent-hot);opacity:.9}.bz-build-btn{align-self:flex-start;margin-top:2px;padding:6px 13px;border-radius:8px;background:var(--accent);border:1px solid var(--accent);color:var(--accent-ink);font-size:12px;font-weight:600}.bz-build-btn:hover:not(:disabled){background:var(--accent-hot);border-color:var(--accent-hot)}.ask-card{border:1px solid rgba(129,140,248,.35);border-radius:12px;padding:12px 13px;margin:8px 0;background:linear-gradient(180deg,rgba(99,102,241,.07),var(--bg-elev) 70%);display:flex;flex-direction:column;gap:10px}.ask-head{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:600;color:var(--accent-hot)}.ask-icon{font-size:14px}.ask-q{display:flex;flex-direction:column;gap:8px}.ask-q-header{font-size:9.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}.ask-q-text{margin:0;font-size:13px;line-height:1.45;color:var(--text)}.ask-options{display:flex;flex-direction:column;gap:6px}.ask-opt{display:flex;align-items:center;gap:10px;text-align:left;width:100%;padding:9px 11px;border-radius:9px;border:1px solid var(--border);background:var(--bg-elev-2);transition:border-color .12s,background .12s,transform .12s}.ask-opt:hover:not(:disabled){border-color:var(--accent);background:#20202c;transform:translate(2px)}.ask-opt:disabled{opacity:.5;cursor:default}.ask-opt.sel{border-color:var(--accent);background:#6366f11f}.ask-opt-main{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.ask-opt-label{font-size:12.5px;font-weight:600;color:var(--text)}.ask-opt-desc{font-size:11px;color:var(--text-muted);line-height:1.4}.ask-opt-go{color:var(--accent-hot);font-size:14px;flex:none}.ask-opt-check{font-size:14px;color:var(--accent-hot);flex:none}.ask-send{align-self:flex-start}.ask-foot{font-size:11px;color:var(--text-muted);font-style:italic}.markdown strong{color:var(--text)}:where(:root:not([data-theme=dark])) button:hover:not(:disabled){background:#e6eaf2}:where(:root:not([data-theme=dark])) .ask-opt:hover:not(:disabled){background:#eef1fb}:where(:root:not([data-theme=dark])) .diff-line.add .diff-text{color:#15803d}:where(:root:not([data-theme=dark])) .diff-line.del .diff-text{color:#b91c1c}.usage-footer{display:none}.workspace-body{display:flex;min-height:0;min-width:0;overflow:hidden}.canvas-wrap{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;overflow:hidden;background:radial-gradient(1200px 600px at 12% -10%,var(--canvas-1),transparent 60%),radial-gradient(1000px 700px at 100% 0%,var(--canvas-2),transparent 55%),linear-gradient(160deg,var(--canvas-3),var(--bg) 70%)}.block-canvas{flex:1;min-height:0;overflow:auto}.block-canvas .rgl{min-height:100%}.arrange-bar{display:flex;align-items:center;gap:12px;padding:8px 18px;background:var(--glass);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-bottom:1px solid var(--border)}.arrange-hint{font-size:12.5px;color:var(--text-muted)}.arrange-bar .spacer{flex:1}.block{display:flex;flex-direction:column;height:100%;background:var(--surface);border:var(--border-w, 1px) solid var(--border);border-radius:var(--radius, 16px);box-shadow:var(--shadow-theme, var(--shadow));overflow:hidden;transition:box-shadow .16s,transform .16s;animation:block-enter .28s var(--ease-spring) both}@keyframes block-enter{0%{opacity:0;translate:0 10px;scale:.985}to{opacity:1;translate:0 0;scale:1}}@media (prefers-reduced-motion: reduce){.block{animation:none}}.block.is-arranging{box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 35%,transparent),var(--shadow-theme, var(--shadow));animation:block-enter .28s var(--ease-spring) both,block-jiggle .4s ease-in-out}@keyframes block-jiggle{0%,to{rotate:0deg}25%{rotate:-.4deg}75%{rotate:.4deg}}.block-header{display:flex;align-items:center;gap:8px;padding:9px 13px;border-bottom:1px solid var(--border);background:linear-gradient(180deg,var(--surface),var(--surface-2));font-size:13px;flex:none}.block-header.block-handle{cursor:grab}.block-header.block-handle:active{cursor:grabbing}.block-icon{font-size:14px}.block-title{font-weight:var(--font-weight-strong, 650);color:var(--text);letter-spacing:.01em}:root[data-surface=glass] .block{background:color-mix(in srgb,var(--surface) 64%,transparent);backdrop-filter:blur(14px) saturate(1.4);-webkit-backdrop-filter:blur(14px) saturate(1.4)}:root[data-surface=glass] .block-header{background:color-mix(in srgb,var(--surface-2) 50%,transparent)}:root[data-surface=paper] .block{background-image:linear-gradient(0deg,color-mix(in srgb,var(--accent) 5%,transparent),transparent 55%)}.block-header .spacer{flex:1}.block-actions{display:inline-flex;gap:4px}.block-actions button{padding:2px 7px;font-size:12px;border-radius:7px;background:var(--bg-elev-2);border:1px solid var(--border);color:var(--text-muted)}.block-actions button:hover:not(:disabled){color:var(--text)}.block-pin{font-size:12px;opacity:.55}.block-body{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.chat-block-bar{display:flex;align-items:center;gap:8px;padding:7px 12px;border-bottom:1px solid var(--border);flex:none}.session-picker{position:relative}.session-picker-toggle{display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:4px 9px;border-radius:8px;border:1px solid var(--border);background:var(--surface, transparent);color:var(--text);cursor:pointer;max-width:240px}.session-picker-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.session-live-dot{width:7px;height:7px;border-radius:999px;background:#22c55e;flex:none}.session-sidebar{flex:none;width:256px;display:flex;flex-direction:column;background:var(--surface-2, var(--bg-elev));border-right:1px solid var(--border);min-height:0;overflow:hidden}.sess-head{display:flex;align-items:center;gap:8px;padding:12px 12px 8px;border-bottom:1px solid var(--border)}.sess-ws{font-weight:650;font-size:13px;color:var(--text);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sess-collapse{padding:2px 8px;font-size:14px;line-height:1}.sess-new-wrap{position:relative;padding:10px 12px 6px}.sess-new{width:100%}.sess-provider-menu{position:absolute;z-index:30;left:12px;right:12px;top:calc(100% - 2px);background:var(--surface, #fff);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-lg);padding:4px;display:flex;flex-direction:column;gap:2px}.sess-provider-menu button{text-align:left;background:transparent;border:none;padding:8px 10px;border-radius:7px}.sess-provider-menu button:hover{background:var(--bg-elev-2)}.sess-list{flex:1;min-height:0;overflow-y:auto;padding:6px 8px 12px}.sess-row{display:flex;align-items:center;gap:2px;border-radius:8px}.sess-row.active{background:color-mix(in srgb,var(--accent) 12%,transparent)}.sess-open{flex:1;min-width:0;display:flex;flex-direction:column;align-items:stretch;gap:3px;background:transparent;border:none;padding:8px 10px;border-radius:8px;text-align:left}.sess-open:hover{background:var(--bg-elev-2)}.sess-title-row{display:flex;align-items:center;gap:6px;min-width:0}.sess-title{font-size:13px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.sess-meta-row{display:flex;align-items:center;gap:6px}.sess-rename{flex:1;padding:6px 8px;border:1px solid var(--accent);border-radius:7px;background:var(--surface);color:var(--text);font-size:13px}.sess-actions{display:flex;gap:0;opacity:0;transition:opacity .12s}.sess-row:hover .sess-actions{opacity:1}.sess-actions button{padding:4px 6px;background:transparent;border:none;font-size:12px}.sess-provider{font-size:10px;font-weight:700;letter-spacing:.04em;padding:1px 6px;border-radius:999px;background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent-hot)}.sess-ctx{font-size:10.5px;font-weight:650;padding:1px 6px;border-radius:999px}.sess-ctx-ok{color:var(--text-muted);background:var(--bg-elev-2)}.sess-ctx-amber{color:#9a6700;background:color-mix(in srgb,#f5b301 26%,transparent)}.sess-ctx-red{color:#b42318;background:color-mix(in srgb,#f04438 26%,transparent)}.sessions-block{display:flex;flex-direction:column;height:100%;min-height:0}.sblock-new-wrap{position:relative;padding:8px 10px 4px;flex:none}.sblock-new{width:100%}.sblock-list{flex:1;min-height:0;overflow-y:auto;padding:4px 8px 8px}.sblock-row{display:flex;align-items:center;gap:2px;border-radius:8px}.sblock-row.active{background:color-mix(in srgb,var(--accent) 12%,transparent)}.sblock-open{flex:1;min-width:0;display:flex;align-items:center;gap:6px;background:transparent;border:none;padding:7px 9px;border-radius:8px;text-align:left}.sblock-open:hover{background:var(--bg-elev-2)}.sblock-title{font-size:13px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.sblock-meta{display:flex;align-items:center;gap:5px;flex:none}.sblock-del{padding:4px 6px;background:transparent;border:none;font-size:12px;opacity:0}.sblock-row:hover .sblock-del{opacity:1}.chat-ctx-hint{flex:none;display:flex;align-items:center;gap:10px;margin:0 12px 8px;padding:8px 12px;border-radius:10px;font-size:12.5px;background:color-mix(in srgb,#f5b301 16%,var(--surface));color:var(--text);border:1px solid color-mix(in srgb,#f5b301 40%,transparent)}.chat-ctx-hint.urgent{background:color-mix(in srgb,#f04438 14%,var(--surface));border-color:color-mix(in srgb,#f04438 40%,transparent)}.chat-ctx-hint span{flex:1}.chat-ctx-hint button{padding:2px 7px;background:transparent;border:none;color:var(--text-muted);font-size:13px}@media (max-width: 640px){.session-sidebar{position:fixed;z-index:60;top:0;bottom:0;left:0;width:min(82vw,300px);box-shadow:var(--shadow-lg)}}.session-menu{position:absolute;top:calc(100% + 4px);left:0;z-index:40;min-width:260px;max-width:340px;max-height:320px;overflow-y:auto;background:var(--surface, #fff);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-lg);padding:4px}.session-empty{padding:12px;font-size:12px;color:var(--text-muted)}.session-row{display:flex;align-items:center;gap:4px;border-radius:7px}.session-row.active{background:var(--bg-elev, rgba(127,127,127,.08))}.session-open{flex:1;min-width:0;display:flex;align-items:center;gap:6px;text-align:left;background:none;border:none;color:inherit;font:inherit;cursor:pointer;padding:7px 8px;border-radius:7px}.session-title{font-weight:600;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-meta{margin-left:auto;font-size:11px;color:var(--text-muted);white-space:nowrap;flex:none}.session-actions{display:inline-flex;gap:2px;padding-right:4px}.session-actions button{background:none;border:none;cursor:pointer;color:var(--text-muted);font-size:12px;padding:4px;border-radius:6px}.session-actions button:hover{color:var(--text)}.session-rename{flex:1;margin:4px;padding:6px 8px;font:inherit;font-size:13px;border:1px solid var(--accent, #4a90d9);border-radius:6px;background:var(--surface, transparent);color:inherit}.session-new{width:100%;text-align:left;padding:8px;margin-top:2px;background:none;border:none;border-top:1px solid var(--border);color:var(--accent, #4a90d9);cursor:pointer;font:inherit;font-size:12.5px}.liveview-frame{width:100%;height:100%;border:0;background:#fff;flex:1}.liveview-wrap{display:flex;flex-direction:column;height:100%;min-height:0}.liveview-bar{flex:none;display:flex;align-items:center;gap:4px;padding:5px 8px;border-bottom:1px solid var(--border);background:var(--surface-2, var(--bg-elev))}.liveview-devices{display:inline-flex;gap:2px}.liveview-device{padding:3px 8px;font-size:14px;line-height:1;background:transparent;border:1px solid transparent;border-radius:7px}.liveview-device:hover{background:var(--bg-elev-2)}.liveview-device.active{background:color-mix(in srgb,var(--accent) 16%,transparent);border-color:color-mix(in srgb,var(--accent) 40%,transparent)}.liveview-stage{flex:1;min-height:0;display:flex;justify-content:center;align-items:stretch;overflow:auto;background:var(--bg-elev-2)}.liveview-stage-desktop{background:none}.liveview-device-frame{display:flex;height:100%}.liveview-stage-tablet .liveview-device-frame,.liveview-stage-phone .liveview-device-frame{margin:10px auto;height:calc(100% - 20px);border:2px solid var(--border);border-radius:18px;overflow:hidden;box-shadow:var(--shadow-lg);background:#fff}.requests-block{display:flex;flex-direction:column;height:100%;min-height:0}.req-new{flex:none;display:flex;gap:6px;padding:8px 10px;border-bottom:1px solid var(--border)}.req-title{flex:1;min-width:0;padding:6px 9px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font-size:12.5px}.req-new select{padding:6px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font-size:12px}.req-list{flex:1;min-height:0;overflow-y:auto;padding:4px 6px 8px}.req-empty{padding:14px 12px;font-size:12.5px;color:var(--text-muted);line-height:1.5}.req-row{display:flex;align-items:center;gap:8px;padding:8px;border-bottom:1px solid var(--border)}.req-glyph{font-size:15px;flex:none}.req-body{display:flex;flex-direction:column;gap:1px;flex:1;min-width:0}.req-row-title{font-size:13px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.req-meta{font-size:11px;color:var(--text-muted)}.req-status-pick{flex:none;padding:3px 5px;border:1px solid var(--border);border-radius:7px;background:var(--surface);color:var(--text);font-size:11.5px}.req-badge{flex:none;font-size:10.5px;font-weight:650;padding:2px 8px;border-radius:999px;background:var(--bg-elev-2);color:var(--text-muted)}.req-row.req-status-done .req-row-title,.req-row.req-status-wont-do .req-row-title{color:var(--text-muted);text-decoration:line-through}.req-badge-done{background:color-mix(in srgb,var(--positive) 22%,transparent);color:var(--positive)}.liveview-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;padding:24px;color:var(--text-muted)}.liveview-empty-mark{font-size:30px;opacity:.7}.liveview-empty-title{font-size:14px;font-weight:600;color:var(--text);margin:0}.liveview-empty-sub{font-size:12.5px;margin:0;max-width:240px;line-height:1.5}.notes-block{flex:1;width:100%;border:0;resize:none;outline:none;padding:14px 16px;font-size:14px;line-height:1.6;color:var(--text);background:var(--surface);font-family:inherit}.earn-block{flex:1;min-height:0;display:flex;flex-direction:column;gap:5px;padding:16px 18px;overflow:hidden}.earn-who{display:flex;flex-direction:column;gap:1px}.earn-name{font-size:14px;font-weight:700;color:var(--text);display:inline-flex;align-items:center;gap:6px}.earn-you-tag{font-size:9px;text-transform:uppercase;letter-spacing:.05em;font-weight:700;color:var(--accent-ink);background:var(--accent);border-radius:999px;padding:1px 6px}.earn-sub{font-size:11.5px;color:var(--text-muted)}.earn-amount{font-size:30px;font-weight:800;letter-spacing:-.01em;margin-top:2px;color:color-mix(in srgb,var(--accent) 80%,#134e4a);font-variant-numeric:tabular-nums}.earn-meta{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font-size:12px;color:var(--text-muted)}.earn-meta strong{color:var(--text)}.earn-rep,.an-foot{font-size:10.5px;color:var(--text-muted);opacity:.85}.earn-spark{margin-top:auto;position:relative;height:50px;padding-top:6px;display:flex;align-items:flex-end}.earn-bars{flex:1;display:flex;align-items:flex-end;gap:3px;height:100%}.earn-bar{flex:1 1 0;min-width:3px;max-width:14px;border-radius:3px 3px 0 0;background:linear-gradient(180deg,var(--accent),color-mix(in srgb,var(--accent) 38%,var(--surface-tint)));transition:height .32s cubic-bezier(.2,.8,.2,1)}.earn-spark.is-baseline .earn-bar{background:color-mix(in srgb,var(--accent) 22%,var(--bg-elev-2))}.earn-spark-live{position:absolute;top:0;right:0;font-size:9.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--accent);display:inline-flex;align-items:center;gap:4px}.earn-spark-live:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent);animation:earn-pulse 1.6s ease-in-out infinite}@keyframes earn-pulse{0%,to{opacity:.3}50%{opacity:1}}.earn-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;padding:22px;color:var(--text-muted)}.earn-empty-mark{font-size:28px;opacity:.75}.earn-empty-title{font-size:14px;font-weight:650;color:var(--text);margin:0}.earn-empty-sub{font-size:12px;margin:0;max-width:230px;line-height:1.5}.analytics-block{flex:1;min-height:0;display:flex;flex-direction:column;gap:12px;padding:14px 16px;overflow:auto}.an-stats{display:flex;gap:9px}.an-stat{flex:1;min-width:0;background:var(--bg-elev-2);border:1px solid var(--border);border-radius:11px;padding:9px 10px;display:flex;flex-direction:column;gap:1px}.an-stat-num{font-size:16px;font-weight:750;color:var(--text);font-variant-numeric:tabular-nums}.an-stat-lbl{font-size:10px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.an-board{display:flex;flex-direction:column;gap:7px}.an-row{display:grid;grid-template-columns:1fr 1.3fr auto;align-items:center;gap:8px;font-size:12px}.an-row-name{font-weight:600;color:var(--text);display:inline-flex;align-items:center;gap:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.an-row-bar{height:8px;background:var(--bg-elev-2);border-radius:999px;overflow:hidden}.an-row-fill{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 52%,var(--surface-tint)),var(--accent));transition:width .36s cubic-bezier(.2,.8,.2,1)}.an-row-val{font-variant-numeric:tabular-nums;color:var(--text-muted);font-size:11.5px}.an-foot{text-align:right}.usage-block{flex:1;min-height:0;display:flex;flex-direction:column;gap:12px;padding:16px 18px;overflow:hidden}.usage-gauge{display:flex;flex-direction:column;gap:5px}.usage-gauge-head{display:flex;align-items:baseline;justify-content:space-between}.usage-gauge-label{font-size:12px;font-weight:650;color:var(--text)}.usage-gauge-val{font-size:14px;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums}.usage-bar{height:9px;background:var(--bg-elev-2);border-radius:999px;overflow:hidden}.usage-bar-fill{display:block;height:100%;border-radius:999px;transition:width .42s cubic-bezier(.2,.8,.2,1);background:var(--accent)}.usage-bar-fill.tone-weekly{background:color-mix(in srgb,var(--accent) 60%,#6d28d9)}.usage-bar-fill.tone-memory{background:color-mix(in srgb,var(--accent) 45%,#0e7490)}.usage-gauge-sub{font-size:10.5px;color:var(--text-muted)}.usage-extra{font-size:11px;color:var(--text-muted)}.usage-foot{margin-top:auto;display:flex;align-items:center;gap:6px;font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted)}.usage-live-dot{width:7px;height:7px;border-radius:999px;background:var(--text-muted)}.usage-live-dot[data-status=live]{background:#16a34a;box-shadow:0 0 0 3px color-mix(in srgb,#16a34a 22%,transparent)}.usage-live-dot[data-status=stale]{background:#d97706}.usage-live-dot[data-status=unavailable]{background:#9ca3af}.usage-block.is-stale{opacity:.82}.usage-stale-note{font-size:10.5px;color:#b45309}.usage-unavailable{display:flex;flex-direction:column;gap:2px;padding:4px 0}.usage-unavailable-title{font-size:12.5px;font-weight:650;color:var(--text)}.usage-unavailable-sub{font-size:11px;color:var(--text-muted);line-height:1.45}.usage-skeleton{height:26px;border-radius:8px;background:var(--bg-elev-2);animation:usage-pulse 1.4s ease-in-out infinite}.usage-skeleton.short{width:55%}@keyframes usage-pulse{0%,to{opacity:.55}50%{opacity:.95}}.usage-disclose{align-items:flex-start;justify-content:center;gap:8px}.usage-disclose-mark{font-size:26px}.usage-disclose-title{font-size:14px;font-weight:700;color:var(--text);margin:0}.usage-disclose-body{font-size:12px;color:var(--text-muted);line-height:1.5;margin:0}.usage-disclose-ok{margin-top:4px;align-self:flex-start;padding:7px 14px;border-radius:8px;border:none;background:var(--accent);color:var(--accent-ink);font-weight:650;font-size:12.5px;cursor:pointer}.usage-disclose-ok:disabled{opacity:.6;cursor:default}.powers-block{flex:1;min-height:0;display:flex;flex-direction:column;gap:8px;padding:14px 16px;overflow:hidden}.powers-head{display:flex;align-items:center;justify-content:space-between}.powers-title{font-size:13px;font-weight:750;color:var(--text)}.powers-edit{font-size:11px;font-weight:600;color:var(--accent-hot);background:none;border:none;cursor:pointer;padding:2px 4px}.powers-list{display:flex;flex-direction:column;gap:6px;overflow:auto;min-height:0}.powers-run{display:flex;flex-direction:column;gap:1px;align-items:flex-start;text-align:left;padding:8px 10px;border-radius:9px;border:1px solid var(--border);background:var(--bg-elev-2);cursor:pointer;position:relative}.powers-run:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--bg-elev-2))}.powers-run-name{font-size:12.5px;font-weight:650;color:var(--text);font-family:var(--mono, ui-monospace, monospace)}.powers-run-desc{font-size:11px;color:var(--text-muted);line-height:1.4;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.powers-tag{position:absolute;top:7px;right:8px;font-size:8.5px;text-transform:uppercase;letter-spacing:.04em;font-weight:700;color:var(--accent-ink);background:var(--accent);border-radius:999px;padding:1px 5px}.powers-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;padding:5px 8px;border-radius:8px;background:var(--bg-elev-2);font-size:12px}.powers-row.is-hidden{opacity:.5}.powers-row-name{font-family:var(--mono, ui-monospace, monospace);color:var(--text)}.powers-reorder{display:inline-flex;flex-direction:column;gap:1px}.powers-reorder button{border:none;background:none;cursor:pointer;color:var(--text-muted);font-size:8px;line-height:1;padding:1px}.powers-reorder button:hover{color:var(--accent)}.powers-hide{font-size:10.5px;color:var(--text-muted);background:none;border:1px solid var(--border);border-radius:6px;padding:2px 8px;cursor:pointer}.powers-allhidden{font-size:11.5px;color:var(--text-muted);padding:6px 2px}.powers-empty{display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;padding:14px 8px}.powers-empty-mark{font-size:26px;opacity:.75}.powers-empty-title{font-size:13.5px;font-weight:650;color:var(--text);margin:0}.powers-empty-sub{font-size:11.5px;color:var(--text-muted);margin:0;line-height:1.5;max-width:230px}.powers-empty-sub code,.powers-run-name code{font-size:.92em}.powers-bazaar{margin-top:auto;padding-top:4px}.powers-divider{text-align:center;font-size:9.5px;letter-spacing:.06em;color:var(--text-muted);opacity:.7}.powers-bazaar-note{font-size:10px;color:var(--text-muted);text-align:center;margin:2px 0 0;line-height:1.35;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.powers-skel{height:38px;border-radius:9px;background:var(--bg-elev-2);animation:usage-pulse 1.4s ease-in-out infinite}.settings-menu{max-width:520px}.set-section{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin:16px 0 8px}.muted.small{font-size:11px;margin-top:6px}.autonomy-dial{display:flex;flex-direction:column;gap:8px}.autonomy-tier{display:flex;gap:11px;align-items:flex-start;text-align:left;padding:11px 13px;border-radius:11px;border:1.5px solid var(--border);background:var(--bg-elev-2);cursor:pointer;transition:border-color .12s,background .12s}.autonomy-tier:hover:not(:disabled){border-color:color-mix(in srgb,var(--accent) 55%,var(--border))}.autonomy-tier.selected{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,var(--bg-elev-2))}.autonomy-tier.coming-soon{opacity:.6;cursor:not-allowed}.autonomy-emoji{font-size:20px;line-height:1.2}.autonomy-body{display:flex;flex-direction:column;gap:3px}.autonomy-title{font-size:13.5px;font-weight:700;color:var(--text);display:inline-flex;align-items:center;gap:7px}.autonomy-desc{font-size:11.5px;color:var(--text-muted);line-height:1.45}.autonomy-soon{font-size:8.5px;text-transform:uppercase;letter-spacing:.04em;font-weight:700;color:var(--text-muted);background:var(--border);border-radius:999px;padding:1px 6px}.autonomy-check{color:var(--accent);font-weight:800}.autonomy-note{font-size:11.5px;color:var(--text-muted);margin:8px 2px 0;line-height:1.5;padding:8px 10px;border-radius:8px;background:var(--bg-elev-2)}.set-rename{display:flex;gap:8px}.set-rename input{flex:1;padding:8px 11px;border-radius:8px;border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:13px}.set-rename button,.set-row{padding:8px 13px;border-radius:8px;border:1px solid var(--border);background:var(--bg-elev-2);color:var(--text);font-size:13px;cursor:pointer}.set-row{width:100%;text-align:left}.set-row:hover{border-color:var(--accent)}.set-account{display:flex;flex-direction:column;gap:3px;font-size:12.5px;color:var(--text)}.set-account-email{font-size:11.5px;color:var(--text-muted)}.set-providers{display:flex;flex-direction:column;gap:8px}.set-provider-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.set-provider-name{font-size:13px;color:var(--text);flex:1;min-width:90px}.set-provider-state,.set-provider-connect{display:flex;align-items:center;gap:6px}.set-provider-ok{font-size:12px;color:var(--positive)}.set-provider-connect input{padding:6px 9px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font-size:12.5px;width:180px;max-width:46vw}.set-provider-msg{margin:0;font-size:12px}.set-provider-msg.ok{color:var(--positive)}.set-provider-msg.err{color:var(--error)}.set-support{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:13px;color:var(--text)}.set-support label{display:flex;align-items:center;gap:6px}.set-support select{padding:6px 8px;border-radius:8px;border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:13px}.set-support button{padding:8px 13px;border-radius:8px;border:1px solid var(--border);background:var(--bg-elev-2);color:var(--text);font-size:13px;cursor:pointer;font-weight:600;margin-left:auto}.set-support button:hover{border-color:var(--accent)}.set-support-warn{color:#b45309;font-weight:600;font-size:12px;width:100%}.files-block{flex:1;min-height:0;overflow:auto;padding:6px 4px;font-size:12.5px}.fnode{display:flex;align-items:center;gap:5px;padding:3px 6px;border-radius:7px;cursor:pointer;white-space:nowrap;color:var(--text)}.fnode:hover{background:var(--bg-elev-2)}.fnode.sel{background:color-mix(in srgb,var(--accent) 16%,var(--surface-tint))}.fnode-tw{width:12px;flex:none;color:var(--text-muted);font-size:10px}.fnode-ic{flex:none;font-size:12px}.fnode-nm{overflow:hidden;text-overflow:ellipsis}.files-msg{padding:10px;color:var(--text-muted);font-size:12px}.files-msg.err{color:var(--error)}.logs-block{flex:1;min-height:0;display:flex;flex-direction:column}.logs-bar{flex:none;display:flex;gap:8px;align-items:center;padding:6px 10px;border-bottom:1px solid var(--border);background:var(--surface-2)}.logs-select{border:1px solid var(--border);border-radius:7px;padding:3px 8px;font-size:12px;color:var(--text);background:var(--surface)}.logs-select:focus{outline:none;border-color:var(--accent)}.logs-hint{font-size:10px;color:var(--text-muted);margin-left:auto}.logs-body{flex:1;min-height:0;overflow:auto}.logs-msg{padding:12px;color:var(--text-muted);font-size:12px}.logs-msg.err{color:var(--error)}.logs-out{margin:0;padding:10px 12px;min-height:100%;box-sizing:border-box;background:#1e1e1e;color:#d4d4d4;white-space:pre-wrap;word-break:break-word;font:11.5px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace}.dtable-block{flex:1;min-height:0;display:flex;flex-direction:column}.dtable-bar{flex:none;display:flex;gap:8px;align-items:center;padding:6px 10px;border-bottom:1px solid var(--border);background:var(--surface-2)}.dtable-path,.dtable-filter{border:1px solid var(--border);border-radius:7px;padding:4px 8px;font-size:12px;color:var(--text);background:var(--surface)}.dtable-path{flex:1;min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.dtable-filter{width:130px;flex:none}.dtable-path:focus,.dtable-filter:focus{outline:none;border-color:var(--accent)}.dtable-load{flex:none}.dtable-body{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.dtable-scroll{flex:1;min-height:0;overflow:auto}.dtable-msg{padding:14px;color:var(--text-muted);font-size:12.5px;line-height:1.5}.dtable-msg.err{color:var(--error)}.dtable{border-collapse:collapse;font-size:12px;width:100%}.dtable th,.dtable td{border:1px solid var(--border);padding:4px 8px;text-align:left;white-space:nowrap;max-width:280px;overflow:hidden;text-overflow:ellipsis}.dtable th{position:sticky;top:0;background:var(--surface-2);color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:600}.dtable th:hover{background:var(--bg-elev-2)}.dtable tbody tr:nth-child(2n){background:color-mix(in srgb,var(--text) 3%,transparent)}.dtable td{color:var(--text)}.dtable-foot{flex:none;padding:5px 10px;font-size:10.5px;color:var(--text-muted);border-top:1px solid var(--border)}.deploy-block{flex:1;min-height:0;display:flex;flex-direction:column;overflow:auto}.deploy-empty{padding:18px 16px;text-align:center}.deploy-icon{font-size:30px}.deploy-title{margin:8px 0 4px;font-weight:600;color:var(--text)}.deploy-sub{margin:0 auto 12px;max-width:320px;font-size:12px;line-height:1.5;color:var(--text-muted)}.deploy-note{font-size:12px;color:var(--text-muted)}.deploy-history{border-top:1px solid var(--border);padding:10px 14px}.deploy-history-h{font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.deploy-msg{padding:8px 0 2px;font-size:12px;color:var(--text-muted)}.codeblock{flex:1;min-height:0;display:flex;flex-direction:column}.codeblock-bar{flex:none;display:flex;gap:8px;align-items:center;padding:6px 10px;border-bottom:1px solid var(--border);background:var(--surface-2)}.codeblock-path{flex:1;min-width:0;border:1px solid var(--border);border-radius:7px;padding:4px 8px;font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--text);background:var(--surface)}.codeblock-path:focus{outline:none;border-color:var(--accent)}.codeblock-trunc{flex:none;font-size:10px;color:var(--text-muted)}.codeblock-body{flex:1;min-height:0;overflow:auto}.codeblock-msg{padding:16px;color:var(--text-muted);font-size:12.5px;line-height:1.5}.codeblock-msg.err{color:var(--error)}.codeblock-pre{margin:0;padding:10px 0;min-height:100%;box-sizing:border-box;background:#1e1e1e;color:#d4d4d4;font:12px/1.55 ui-monospace,SFMono-Regular,Menlo,monospace}.codeblock-line{display:flex;padding:0 12px}.codeblock-ln{width:34px;flex:none;text-align:right;padding-right:14px;color:#5a5a5a;-webkit-user-select:none;user-select:none}.codeblock-lc{white-space:pre}.todo-block{flex:1;min-height:0;display:flex;flex-direction:column}.todo-add{flex:none;display:flex;gap:6px;padding:10px;border-bottom:1px solid var(--border)}.todo-add input{flex:1;min-width:0;border:1px solid var(--border);border-radius:8px;padding:6px 10px;font-size:13px;color:var(--text);background:var(--surface);font-family:inherit}.todo-add input:focus{outline:none;border-color:var(--accent)}.todo-list{flex:1;min-height:0;overflow:auto;padding:6px}.todo-msg{padding:10px;color:var(--text-muted);font-size:12.5px}.todo-item{display:flex;align-items:center;gap:8px;padding:4px 6px;border-radius:8px;font-size:13px}.todo-item:hover{background:var(--bg-elev-2)}.todo-item label{display:flex;align-items:center;gap:8px;flex:1;cursor:pointer;min-width:0}.todo-item input[type=checkbox]{accent-color:var(--accent);flex:none}.todo-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.todo-item.done .todo-text{text-decoration:line-through;color:var(--text-muted)}.todo-del{flex:none;opacity:0;padding:1px 6px;font-size:11px;border-radius:6px;color:var(--text-muted);background:var(--bg-elev-2);border:1px solid var(--border)}.todo-item:hover .todo-del{opacity:1}.todo-del:hover{color:var(--error);border-color:var(--error)}.todo-foot{flex:none;padding:7px 12px;font-size:11px;color:var(--text-muted);border-top:1px solid var(--border)}.react-grid-item.react-grid-placeholder{background:color-mix(in srgb,var(--accent) 22%,var(--surface-tint));border:2px dashed color-mix(in srgb,var(--accent) 55%,var(--surface-tint));border-radius:16px;opacity:.7}.react-grid-item>.react-resizable-handle{display:none}.block-canvas.arranging .react-grid-item>.react-resizable-handle{display:block;z-index:4;width:24px;height:24px;padding:0;background-image:none;transform:none}.block-canvas.arranging .react-grid-item>.react-resizable-handle:after{content:"";position:absolute;width:12px;height:12px;border-radius:5px;background:var(--accent);border:2px solid var(--surface, #fff);box-shadow:0 1px 4px #00000052;transition:transform .12s var(--ease-spring, ease),background .12s ease}.block-canvas.arranging .react-resizable-handle-se:after{bottom:3px;right:3px}.block-canvas.arranging .react-resizable-handle-sw:after{bottom:3px;left:3px}.block-canvas.arranging .react-resizable-handle-ne:after{top:3px;right:3px}.block-canvas.arranging .react-resizable-handle-nw:after{top:3px;left:3px}.block-canvas.arranging .react-grid-item>.react-resizable-handle:hover:after{transform:scale(1.25);background:color-mix(in srgb,var(--accent) 80%,#fff)}@media (prefers-reduced-motion: reduce){.block-canvas.arranging .react-grid-item>.react-resizable-handle:after{transition:none}}.react-grid-item.cssTransforms:not(.react-draggable-dragging):not(.resizing){transition-property:transform,width,height;transition-duration:.24s;transition-timing-function:var(--ease-spring)}@media (prefers-reduced-motion: reduce){.react-grid-item.cssTransforms:not(.react-draggable-dragging):not(.resizing){transition-duration:0ms}}.block-canvas.arranging{background-image:radial-gradient(circle,color-mix(in srgb,var(--accent) 32%,transparent) 1.3px,transparent 1.6px);background-size:var(--row-pitch, 46px) var(--row-pitch, 46px);background-position:20px 20px}.add-gallery{max-width:560px;width:92vw}.gallery-section{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin:16px 0 8px}.gallery-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}@media (max-width: 520px){.gallery-grid{grid-template-columns:1fr 1fr}}.gallery-item{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:13px;border-radius:13px;border:1px solid var(--border);background:var(--surface);text-align:left;transition:border-color .13s,transform .13s,box-shadow .13s}.gallery-item:hover:not(:disabled){border-color:var(--accent);transform:translateY(-2px);box-shadow:var(--shadow)}.gallery-item:disabled{opacity:.6;cursor:not-allowed}.gallery-glyph{font-size:22px}.gallery-name{font-size:13px;font-weight:650;color:var(--text)}.gallery-desc{font-size:11.5px;color:var(--text-muted);line-height:1.4}.gallery-soon{position:absolute;top:9px;right:9px;font-size:9px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);background:var(--bg-elev-2);border:1px solid var(--border);border-radius:999px;padding:1px 6px}.template-gallery{max-width:600px;width:94vw}.template-card{gap:6px}.tpl-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.tpl-chip{display:inline-flex;align-items:center;gap:3px;font-size:10.5px;color:var(--text-muted);background:var(--bg-elev-2);border:1px solid var(--border);border-radius:999px;padding:1px 7px}.tpl-chip-icon{font-size:10px}.template-card.saved{padding:0;position:relative;overflow:hidden}.template-card.saved:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:var(--shadow)}.tpl-apply{display:flex;flex-direction:column;align-items:flex-start;gap:5px;width:100%;padding:13px;background:transparent;border:0;text-align:left}.tpl-del{position:absolute;top:8px;right:8px;width:22px;height:22px;padding:0;border-radius:7px;font-size:12px;line-height:1;color:var(--text-muted);background:var(--bg-elev-2);border:1px solid var(--border)}.tpl-del:hover{color:var(--error);border-color:var(--error)}.tpl-save-row{display:flex;gap:8px;margin-top:16px}.tpl-save-input{flex:1;padding:9px 12px;border-radius:10px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:13px;font-family:inherit}.tpl-save-input:focus{outline:none;border-color:var(--accent)}.mobile-canvas{flex:1;min-height:0;display:flex;flex-direction:column}.mobile-tabs{display:flex;gap:6px;padding:8px 10px;flex:none;overflow-x:auto;border-bottom:1px solid var(--border);background:var(--glass);-webkit-overflow-scrolling:touch;scrollbar-width:none}.mobile-tabs::-webkit-scrollbar{display:none}.mtab{display:inline-flex;align-items:center;gap:6px;flex:none;padding:7px 12px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--text-muted);font-size:12.5px;font-weight:600}.mtab.active{color:var(--accent-ink);background:var(--accent);border-color:var(--accent)}.mtab-label{white-space:nowrap}.mtab-x{margin-left:2px;opacity:.85;font-size:11px}.mobile-block{flex:1;min-height:0;padding:12px;display:flex}.mobile-block .block{width:100%;height:100%;border-radius:14px}@media (min-width: 641px) and (max-width: 1024px){.topbar{gap:8px 10px;padding:6px 12px}.topbar [data-testid=role-badge]{display:none}.topbar button{padding:6px 10px}.topbar .brand{font-size:13px}}@media (max-width: 640px){.app{overflow-x:hidden;max-width:100vw}.topbar{gap:6px 8px;padding:0 10px}.topbar .brand{font-size:13px}.topbar [data-testid=role-badge],.topbar [data-testid=agent-name]{display:none}.topbar [data-testid=workspace-switcher]{max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar button{padding:5px 9px;font-size:12px}.more-menu button{padding:9px 12px;font-size:13px}.arrange-bar{padding:8px 12px}.arrange-hint{display:none}}.cb-block{flex:1;min-height:0;display:flex;flex-direction:column;gap:8px;padding:14px 16px;overflow:auto}.cb-note{font-size:11.5px;color:var(--text-muted);margin:0}.cb-empty{flex:1;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:12.5px;text-align:center;padding:16px}.cb-metric{flex:1;min-height:0;display:flex;flex-direction:column;gap:3px}.cb-metric-value{font-size:34px;font-weight:800;letter-spacing:-.01em;color:color-mix(in srgb,var(--accent) 80%,#134e4a);font-variant-numeric:tabular-nums;line-height:1.05}.cb-metric-label{font-size:12.5px;color:var(--text-muted)}.cb-metric-delta{font-size:12px;font-weight:600;color:var(--text-muted)}.cb-metric-delta.is-up{color:#15803d}.cb-metric-delta.is-down{color:var(--error, #dc2626)}.cb-spark{margin-top:auto;padding-top:8px;height:46px;display:flex;align-items:flex-end;gap:3px}.cb-spark-bar{flex:1 1 0;min-width:3px;max-width:16px;border-radius:3px 3px 0 0;background:linear-gradient(180deg,var(--accent),color-mix(in srgb,var(--accent) 38%,var(--surface-tint)))}.cb-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.cb-list-row{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:6px 0;border-bottom:1px solid var(--border);font-size:13px}.cb-list-row:last-child{border-bottom:none}.cb-list-label{color:var(--text);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cb-list-value{color:var(--text-muted);font-variant-numeric:tabular-nums;font-weight:600;white-space:nowrap}.cb-table-wrap{overflow:auto;flex:1;min-height:0}.cb-table{border-collapse:collapse;width:100%;font-size:12.5px}.cb-table th,.cb-table td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--border);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px}.cb-table th{color:var(--text-muted);font-weight:700;background:var(--bg-elev);position:sticky;top:0}.cb-table td{color:var(--text)}.cb-markdown{font-size:13px}.canvas-card{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;margin:4px 0;border-radius:10px;background:color-mix(in srgb,var(--accent) 7%,var(--bg-elev));border:1px solid color-mix(in srgb,var(--accent) 24%,var(--border));font-size:13px;color:var(--text)}.canvas-card.is-pending{color:var(--text-muted)}.canvas-card.is-error{border-color:color-mix(in srgb,var(--error, #dc2626) 40%,var(--border))}.canvas-card-icon{font-size:16px}.gallery-agent-hint{margin-top:14px;padding:10px 14px;border-radius:10px;background:color-mix(in srgb,var(--accent) 6%,var(--bg-elev));border:1px dashed color-mix(in srgb,var(--accent) 30%,var(--border));font-size:12.5px;color:var(--text-muted);line-height:1.5}.gallery-agent-hint em{color:var(--text);font-style:italic}.peer-stream{display:flex;flex-direction:column;gap:8px;font-size:12px;color:var(--text-muted);text-align:center}.peer-stream-ambient{margin-top:22px;max-width:300px}.chat-empty .peer-stream-ambient{margin-left:auto;margin-right:auto}.peer-stream-block{flex:1;min-height:0;overflow:auto;padding:14px 16px;text-align:left;gap:11px}.peer-item{display:flex;flex-direction:column;gap:2px}.peer-stream-ambient .peer-item{animation:peer-in .7s ease both}@keyframes peer-in{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){.peer-stream-ambient .peer-item{animation:none}}.peer-who{font-weight:650;color:var(--text);font-size:12.5px}.peer-occ{font-weight:500;color:var(--text-muted)}.peer-built{line-height:1.45}.peer-honest{margin:4px 0 0;font-size:10.5px;font-style:italic;color:var(--text-muted);opacity:.8;line-height:1.4}.peer-stream-block .peer-item{padding:9px 11px;border-radius:10px;background:var(--bg-elev-2);border:1px solid var(--border)}.peer-stream-block .peer-honest{margin-top:auto;padding-top:8px;text-align:center}.win-card{align-self:stretch;display:flex;gap:11px;align-items:flex-start;padding:13px 15px;border-radius:12px;background:color-mix(in srgb,var(--accent) 8%,var(--bg-elev));border:1px solid color-mix(in srgb,var(--accent) 35%,var(--border));box-shadow:0 6px 22px -12px color-mix(in srgb,var(--accent) 55%,transparent);animation:bz-in .32s cubic-bezier(.2,.8,.2,1)}.win-spark{font-size:18px;line-height:1.2;flex:none}.win-body{display:flex;flex-direction:column;gap:3px;min-width:0}.win-lead{font-size:13px;font-weight:700;color:var(--text)}.win-url{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13.5px;font-weight:650;color:var(--accent-hot);text-decoration:none;word-break:break-all}.win-url:hover{text-decoration:underline}.win-sub{font-size:11.5px;color:var(--text-muted)}.theme-picker{width:min(440px,92%)}.theme-section{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin:16px 0 8px}.theme-modes{display:flex;gap:10px}.theme-mode{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:12px 14px;border-radius:12px;border:1px solid var(--border);background:var(--surface);text-align:left}.theme-mode.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.theme-mode-glyph{font-size:18px}.theme-mode-name{font-size:13px;font-weight:600;color:var(--text)}.theme-mode-desc{font-size:11.5px;color:var(--text-muted)}.theme-swatches{display:flex;flex-wrap:wrap;gap:10px}.theme-swatch{width:34px;height:34px;border-radius:999px;border:2px solid transparent;padding:0;font-size:14px;font-weight:700;line-height:1;box-shadow:0 1px 3px #0000002e;transition:transform .1s}.theme-swatch:hover:not(:disabled){transform:scale(1.08)}.theme-swatch.active{border-color:var(--text)}.theme-custom{display:flex;align-items:center;gap:10px;margin-top:14px}.theme-custom label{margin:0}.theme-custom input[type=color]{width:34px;height:34px;padding:0;border:1px solid var(--border);border-radius:8px;background:var(--surface);cursor:pointer}.theme-hex-input{width:96px;padding:6px 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font-family:ui-monospace,Menlo,monospace;font-size:12.5px}.theme-remixing{margin:-2px 0 6px;font-size:12px;color:var(--accent)}.theme-publish-sub{margin:2px 0 8px;font-size:12px}.theme-publish{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.theme-publish-title{flex:1 1 100%;width:auto;font-family:inherit}.theme-publish-pitch{flex:1 1 60%;width:auto;font-family:inherit}.theme-publish .primary{flex:0 0 auto}.theme-publish-msg{margin:8px 0 0;font-size:12px}.theme-publish-msg.ok{color:var(--accent)}.theme-publish-msg.err{color:var(--error)}.theme-picker{width:min(560px,94%)}.theme-frameworks{display:grid;grid-template-columns:1fr 1fr;gap:10px}@media (max-width: 520px){.theme-frameworks{grid-template-columns:1fr}}.theme-fw{display:flex;flex-direction:column;padding:0;overflow:hidden;text-align:left;border:1px solid var(--border);border-radius:12px;background:var(--surface);cursor:pointer;transition:border-color .12s,box-shadow .12s}.theme-fw:hover{border-color:var(--accent)}.theme-fw.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.theme-fw-name{font-size:12.5px;font-weight:650;color:var(--text);padding:8px 10px 2px}.theme-fw-blurb{font-size:11px;color:var(--text-muted);line-height:1.4;padding:0 10px 10px}.tp-swatch{position:relative;height:56px;width:100%;border-bottom:1px solid var(--border)}.tp-swatch-card{position:absolute;left:9px;top:10px;width:54%;height:34px;border-radius:6px;border:1px solid;box-shadow:0 2px 6px #0000001f;display:flex;flex-direction:column;justify-content:center;gap:5px;padding:0 7px}.tp-swatch-line{height:4px;width:80%;border-radius:2px;opacity:.9}.tp-swatch-line.short{width:50%;opacity:.6}.tp-swatch-dot{position:absolute;right:10px;bottom:10px;width:16px;height:16px;border-radius:999px;box-shadow:0 0 0 3px #fff9,0 2px 6px #0003}.theme-community{display:grid;grid-template-columns:1fr 1fr;gap:10px}@media (max-width: 520px){.theme-community{grid-template-columns:1fr}}.tp-look{border:1px solid var(--border);border-radius:12px;overflow:hidden;background:var(--surface);display:flex;flex-direction:column}.tp-look.mine{border-color:var(--accent)}.tp-look-meta{display:flex;flex-direction:column;gap:2px;padding:8px 10px 4px}.tp-look-title{font-size:12.5px;font-weight:650;color:var(--text)}.tp-look-by{font-size:11px;color:var(--text-muted)}.tp-look-lineage{font-size:10.5px;color:var(--text-muted);font-style:italic}.tp-look-actions{display:flex;gap:6px;padding:6px 10px 10px}.tp-look-apply{flex:1;padding:6px 0;border-radius:8px;background:var(--accent);border:1px solid var(--accent);color:var(--accent-ink);font-size:12px;font-weight:600}.tp-look-apply:hover:not(:disabled){background:var(--accent-hot);border-color:var(--accent-hot)}.tp-look-remix,.tp-look-report{flex:none;padding:6px 10px;border-radius:8px;background:var(--surface);border:1px solid var(--border);color:var(--text-muted);font-size:12px;font-weight:600;cursor:pointer}.tp-look-remix:hover{border-color:var(--accent);color:var(--accent)}.tp-look-report:hover:not(:disabled){border-color:var(--error);color:var(--error)}.reading-panel{width:min(440px,92%)}.reading-panel h2{display:flex;align-items:center;gap:8px}.reading-aa{display:inline-grid;place-items:center;min-width:30px;height:24px;padding:0 6px;border-radius:7px;background:color-mix(in srgb,var(--accent) 14%,var(--surface));color:var(--accent-hot);font-weight:700;letter-spacing:.02em;font-size:14px}.reading-controls{display:flex;flex-direction:column}.reading-section{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin:14px 0 8px}.reading-preview{padding:16px;border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface-2);color:var(--text);margin-top:4px;min-height:64px;transition:font-size .12s var(--ease-out)}.reading-fonts{display:flex;flex-direction:column;gap:8px}.reading-font{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;width:100%;text-align:left;padding:10px 14px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);transition:border-color .12s,background .12s,transform .12s}.reading-font:hover:not(:disabled){border-color:color-mix(in srgb,var(--accent) 55%,var(--border));background:color-mix(in srgb,var(--accent) 6%,var(--surface))}.reading-font.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.reading-font-name{font-size:17px;font-weight:600;color:var(--text);line-height:1.1}.reading-font-vibe{font-size:11.5px;color:var(--text-muted);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;flex-basis:100%}.reading-font-check{margin-left:auto;color:var(--accent-hot);font-weight:700}.reading-sizes{display:flex;align-items:center;justify-content:center;gap:14px;padding:4px 0}.reading-step{display:inline-flex;align-items:baseline;justify-content:center;gap:1px;min-width:54px;height:44px;padding:0 12px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);color:var(--text)}.reading-step:hover:not(:disabled){border-color:var(--accent)}.reading-step:disabled{opacity:.4}.reading-step-a{font-weight:600}.reading-step-a.small{font-size:13px}.reading-step-a.large{font-size:20px}.reading-step-minus,.reading-step-plus{font-size:14px;color:var(--text-muted)}.reading-size-label{min-width:78px;text-align:center;font-size:13px;font-weight:600;color:var(--text)}.reading-spacings{display:flex;gap:8px}.reading-spacing{flex:1;padding:8px 6px;font-size:12.5px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);color:var(--text-muted)}.reading-spacing:hover:not(:disabled){border-color:var(--accent);color:var(--text)}.reading-spacing.active{border-color:var(--accent);color:var(--text);box-shadow:0 0 0 1px var(--accent) inset}.set-row-aa{display:inline-grid;place-items:center;min-width:22px;height:18px;margin-right:4px;font-weight:700;font-size:12px;color:var(--accent-hot)}.update-nudge{display:flex;align-items:center;gap:10px;padding:8px 14px;background:var(--surface);background:color-mix(in srgb,var(--accent) 12%,var(--surface));border-bottom:1px solid var(--border);color:var(--text);font-size:13px}.update-nudge.is-error{background:color-mix(in srgb,var(--warn) 14%,var(--surface))}.update-nudge-spark{font-size:14px;flex:0 0 auto}.update-nudge-text{flex:1 1 auto;min-width:0}.update-nudge-go{flex:0 0 auto;border:0;background:var(--accent);color:var(--accent-ink);padding:5px 12px;border-radius:8px;font-weight:600;cursor:pointer}.update-nudge-go:hover{background:var(--accent-hot)}.update-nudge-x{flex:0 0 auto;border:0;background:transparent;color:var(--text-muted);cursor:pointer;font-size:13px;line-height:1;padding:4px 6px}.update-nudge-x:hover{color:var(--text)}.update-nudge.is-busy .update-nudge-spark{animation:nudge-pulse 1.2s ease-in-out infinite}@keyframes nudge-pulse{0%,to{opacity:1}50%{opacity:.4}}.set-signout{margin-top:8px;color:var(--text-muted)}.set-signout:hover:not(:disabled){color:var(--error);border-color:var(--error)}.bgtask-glyph.live,.task-row-glyph.live,.tasks-block-glyph.live{color:var(--accent)}.bgtask-glyph.warn,.task-row-glyph.warn,.tasks-block-glyph.warn{color:var(--warn)}.bgtask-glyph.ok,.task-row-glyph.ok,.tasks-block-glyph.ok{color:#16a34a}.bgtask-glyph.err,.task-row-glyph.err,.tasks-block-glyph.err{color:var(--error)}.bgtask-glyph.muted,.task-row-glyph.muted,.tasks-block-glyph.muted{color:var(--text-muted)}@keyframes bgtask-pulse{0%,to{opacity:1}50%{opacity:.32}}.bgtask-glyph.live,.task-row-glyph.live,.tasks-block-glyph.live{animation:bgtask-pulse 1.4s ease-in-out infinite}.bgtask-pill,.task-row-pill,.tasks-block-rpill{flex:0 0 auto;font-size:10.5px;font-weight:650;letter-spacing:.01em;padding:2px 8px;border-radius:999px;white-space:nowrap;border:1px solid var(--border);color:var(--text-muted);background:var(--bg)}.bgtask-pill.live,.task-row-pill.live,.tasks-block-rpill.live{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 45%,var(--border))}.bgtask-pill.warn,.task-row-pill.warn,.tasks-block-rpill.warn{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 45%,var(--border))}.bgtask-pill.ok,.task-row-pill.ok,.tasks-block-rpill.ok{color:#16a34a;border-color:color-mix(in srgb,#16a34a 45%,var(--border))}.bgtask-pill.err,.task-row-pill.err,.tasks-block-rpill.err{color:var(--error);border-color:color-mix(in srgb,var(--error) 45%,var(--border))}.bgtask-card{margin:6px 0;border:1px solid var(--border);border-radius:12px;background:var(--bg-elev);overflow:hidden;box-shadow:var(--shadow-sm)}.bgtask-card.live{border-color:color-mix(in srgb,var(--accent) 32%,var(--border))}.bgtask-card.warn{border-color:color-mix(in srgb,var(--warn) 36%,var(--border))}.bgtask-card.err{border-color:color-mix(in srgb,var(--error) 36%,var(--border))}.bgtask-head{width:100%;display:flex;align-items:center;gap:9px;text-align:left;padding:9px 11px;background:transparent;border:0;cursor:pointer}.bgtask-head:hover{background:var(--bg-elev-2)}.bgtask-glyph{flex:0 0 auto;font-size:13px;width:16px;text-align:center}.bgtask-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.bgtask-title{font-size:13px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bgtask-detail{font-size:11px;color:var(--text-muted)}.bgtask-caret{flex:0 0 auto;color:var(--text-muted);font-size:10px}.bgtask-body{border-top:1px solid var(--border);padding:8px 11px}.bgtask-cmd{margin:0 0 6px;padding:6px 8px;border-radius:7px;background:var(--bg-elev-2);color:var(--text);font:11.5px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;white-space:pre-wrap;word-break:break-word}.bgtask-out{margin:0;max-height:220px;overflow:auto;padding:8px;border-radius:7px;background:var(--bg);color:var(--text);font:11.5px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;white-space:pre-wrap}.bgtask-msg{font-size:12px;color:var(--text-muted);padding:4px 0}.bgtask-foot{margin-top:6px;font-size:10.5px;color:var(--text-muted)}.bgtask-foot code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.tasks-tray{position:relative;display:inline-flex}.tasks-pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:4px 10px;border-radius:999px}.tasks-pill.is-live{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 50%,var(--border))}.tasks-pill-glyph{font-size:12px;line-height:1}.tasks-pill-label{display:inline-flex;align-items:baseline;gap:4px}@media (max-width: 640px){.tasks-pill-word{display:none}}@keyframes tasks-spin{to{transform:rotate(360deg)}}.tasks-pill.is-live .tasks-pill-glyph{display:inline-block;animation:tasks-spin 2.2s linear infinite}.tasks-dropdown{position:absolute;top:calc(100% + 8px);right:0;width:min(360px,86vw);background:var(--bg-elev);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-lg);z-index:60;overflow:hidden}.tasks-dropdown-head{padding:10px 12px;font-size:12px;font-weight:650;color:var(--text);border-bottom:1px solid var(--border)}.tasks-dropdown-list{max-height:60vh;overflow:auto}.tasks-dropdown-foot{padding:8px 12px;font-size:10.5px;color:var(--text-muted);border-top:1px solid var(--border)}.task-row{border-bottom:1px solid var(--border)}.task-row:last-child{border-bottom:0}.task-row-head{width:100%;display:flex;align-items:center;gap:9px;text-align:left;padding:9px 12px;background:transparent;border:0;cursor:pointer}.task-row-head:hover{background:var(--bg-elev-2)}.task-row-glyph{flex:0 0 auto;width:16px;text-align:center;font-size:13px}.task-row-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.task-row-title{font-size:12.5px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.task-row-detail{font-size:10.5px;color:var(--text-muted)}.task-row-body{padding:0 12px 10px}.task-row-cmd,.tasks-block-cmd{margin:0 0 6px;padding:6px 8px;border-radius:7px;background:var(--bg-elev-2);color:var(--text);font:11px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;white-space:pre-wrap;word-break:break-word}.task-row-out,.tasks-block-out{margin:0;max-height:180px;overflow:auto;padding:7px 8px;border-radius:7px;background:var(--bg);color:var(--text);font:11px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;white-space:pre-wrap}.task-row-msg,.tasks-block-msg{font-size:11.5px;color:var(--text-muted);padding:4px 0}.tasks-block{flex:1;min-height:0;display:flex;flex-direction:column}.tasks-block-bar{display:flex;align-items:center;padding:4px 2px 8px;gap:8px;font-size:11.5px;color:var(--text-muted)}.tasks-block-count{font-weight:600;color:var(--text)}.tasks-block-live{color:var(--accent);font-weight:600}.tasks-block-list{flex:1;min-height:0;overflow:auto}.tasks-block-empty{padding:16px 8px;font-size:12px;color:var(--text-muted);line-height:1.5}.tasks-block-row{border:1px solid var(--border);border-radius:10px;margin-bottom:7px;background:var(--bg-elev);overflow:hidden}.tasks-block-row.live{border-color:color-mix(in srgb,var(--accent) 30%,var(--border))}.tasks-block-row-head{width:100%;display:flex;align-items:center;gap:9px;text-align:left;padding:8px 10px;background:transparent;border:0;cursor:pointer}.tasks-block-row-head:hover{background:var(--bg-elev-2)}.tasks-block-glyph{flex:0 0 auto;width:16px;text-align:center;font-size:13px}.tasks-block-rmain{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.tasks-block-rtitle{font-size:12.5px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tasks-block-rdetail{font-size:10.5px;color:var(--text-muted)}.tasks-block-rbody{padding:0 10px 9px}.bgtask-headrow,.task-row-headrow,.tasks-block-headrow{display:flex;align-items:stretch}.bgtask-headrow .bgtask-head,.task-row-headrow .task-row-head,.tasks-block-headrow .tasks-block-row-head{flex:1;min-width:0}.task-stop{flex:0 0 auto;align-self:center;margin-right:8px;font-size:11px;font-weight:600;line-height:1;white-space:nowrap;padding:5px 9px;border-radius:7px;color:var(--text-muted);background:var(--bg);border:1px solid var(--border);cursor:pointer}.task-stop:hover:not(:disabled){color:var(--error);border-color:color-mix(in srgb,var(--error) 55%,var(--border));background:color-mix(in srgb,var(--error) 8%,var(--bg))}.task-stop:disabled{opacity:.55;cursor:default}