harness-wingman 0.9.1 → 0.9.2

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.
@@ -663,6 +663,12 @@ var init_render = __esm({
663
663
  "panel.render.pluginsUnobserved": "{enabled} plugins enabled \xB7 No plugin calls observed this session",
664
664
  "panel.render.pluginsSummarySource": "Source: enabled entries in slots.skills[].enabled scanned from config.toml plugin configuration; session usage is the deduplicated pluginsUsed from matching MCP tool calls in the Codex transcript against configured plugin names (with a few aliases); configuration enablement does not prove session use",
665
665
  "panel.render.skillConfigurationTip": "Whether this session actually loaded a skill is determined by the transcript",
666
+ "panel.render.ccSkillsSummary": "{enabled} skills enabled \xB7 {used} used this session",
667
+ "panel.render.ccSkillsUnobserved": "{enabled} skills enabled \xB7 No skill calls observed this session",
668
+ "panel.render.ccSkillsSummarySource": "Source: entries that are not off according to scanned slots.skills[].enabled and invocation (SKILL.md frontmatter); session usage is deduplicated skillsUsed from Skill tool calls or explicit skill command loading records in the Claude Code transcript; configuration enablement does not prove session use",
669
+ "panel.render.ccToolsSummary": "{enabled} MCP servers enabled \xB7 {used} used this session",
670
+ "panel.render.ccToolsUnobserved": "{enabled} MCP servers enabled \xB7 No MCP calls observed this session",
671
+ "panel.render.ccToolsSummarySource": "Source: enabled entries among mcpServers.* in scanned slots.tools[]; session usage is deduplicated mcpUsed from matching mcp__<server>__<tool> calls in the Claude Code transcript against configured server names (- and _ are equivalent); configuration enablement does not prove session use",
666
672
  "panel.render.skillsUsed": "Used this session: {skills}",
667
673
  "panel.render.skillsUsedSource": "Source: observed Skill tool calls / skill command triggers in the transcript",
668
674
  "panel.render.projectMenu": "Project menu",
@@ -1122,6 +1128,11 @@ var init_render = __esm({
1122
1128
  "panel.render.feedbackSignalsAreNotConnectedOr": "Feedback signals are not connected or unavailable; cannot determine whether you are needed",
1123
1129
  "panel.render.viewPlanProtocol": "\xB7 View plan protocol",
1124
1130
  "panel.render.currentBranch": "Current branch",
1131
+ "panel.render.moreBranches": "{count} more branches",
1132
+ "panel.render.oneMoreBranch": "{count} more branch",
1133
+ "panel.render.branchCurrentPoints": "{count} current points",
1134
+ "panel.render.branchCurrentPoint": "{count} current point",
1135
+ "panel.render.branchCurrentPointsSource": "Source: currentPoints within this top-level node subtree",
1125
1136
  "panel.render.noCurrentBranchProvided": "No current branch provided",
1126
1137
  "panel.render.currentTaskLabel": "Current task",
1127
1138
  "panel.render.sourceFirstScreenCurrentPointsLength": "Source: firstScreen.currentPoints.length",
@@ -1880,6 +1891,12 @@ var init_render2 = __esm({
1880
1891
  "panel.render.pluginsUnobserved": "{enabled} \u4E2A\u63D2\u4EF6\u5DF2\u542F\u7528 \xB7 \u672C\u4F1A\u8BDD\u672A\u89C2\u5BDF\u5230\u63D2\u4EF6\u8C03\u7528",
1881
1892
  "panel.render.pluginsSummarySource": "\u6765\u6E90:config.toml \u63D2\u4EF6\u914D\u7F6E\u626B\u63CF slots.skills[].enabled \u7684\u542F\u7528\u6761\u76EE\u6570\uFF1B\u672C\u4F1A\u8BDD\u7528\u5230\u6570\u6765\u81EA\u6309\u914D\u7F6E\u63D2\u4EF6\u540D\u5339\u914D Codex transcript \u91CC\u7684 MCP \u5DE5\u5177\u8C03\u7528\uFF08\u5C11\u91CF\u522B\u540D\uFF09\u540E\u53BB\u91CD\u7684 pluginsUsed\uFF0C\u914D\u7F6E\u542F\u7528\u4E0D\u7B49\u4E8E\u4F1A\u8BDD\u4F7F\u7528",
1882
1893
  "panel.render.skillConfigurationTip": "\u672C\u4F1A\u8BDD\u662F\u5426\u771F\u7684\u52A0\u8F7D\u4EE5 transcript \u4E3A\u51C6",
1894
+ "panel.render.ccSkillsSummary": "{enabled} \u4E2A\u6280\u80FD\u5DF2\u542F\u7528 \xB7 \u672C\u4F1A\u8BDD\u7528\u5230 {used} \u4E2A",
1895
+ "panel.render.ccSkillsUnobserved": "{enabled} \u4E2A\u6280\u80FD\u5DF2\u542F\u7528 \xB7 \u672C\u4F1A\u8BDD\u672A\u89C2\u5BDF\u5230\u6280\u80FD\u8C03\u7528",
1896
+ "panel.render.ccSkillsSummarySource": "\u6765\u6E90:\u914D\u7F6E\u626B\u63CF slots.skills[].enabled \u4E0E invocation\uFF08SKILL.md frontmatter\uFF09\u7684\u975E\u5173\u95ED\u6761\u76EE\u6570\uFF1B\u672C\u4F1A\u8BDD\u7528\u5230\u6570\u6765\u81EA Claude Code transcript \u4E2D Skill \u5DE5\u5177\u8C03\u7528\u6216\u660E\u786E\u6280\u80FD\u547D\u4EE4\u52A0\u8F7D\u8BB0\u5F55\uFF0C\u53BB\u91CD\u540E\u4E3A skillsUsed\uFF0C\u914D\u7F6E\u542F\u7528\u4E0D\u7B49\u4E8E\u4F1A\u8BDD\u4F7F\u7528",
1897
+ "panel.render.ccToolsSummary": "{enabled} \u4E2A MCP \u670D\u52A1\u5DF2\u542F\u7528 \xB7 \u672C\u4F1A\u8BDD\u7528\u5230 {used} \u4E2A",
1898
+ "panel.render.ccToolsUnobserved": "{enabled} \u4E2A MCP \u670D\u52A1\u5DF2\u542F\u7528 \xB7 \u672C\u4F1A\u8BDD\u672A\u89C2\u5BDF\u5230 MCP \u8C03\u7528",
1899
+ "panel.render.ccToolsSummarySource": "\u6765\u6E90:\u914D\u7F6E\u626B\u63CF slots.tools[] \u4E2D mcpServers.* \u6761\u76EE\u7684 enabled \u542F\u7528\u6570\uFF1B\u672C\u4F1A\u8BDD\u7528\u5230\u6570\u6765\u81EA Claude Code transcript \u4E2D mcp__<server>__<tool> \u8C03\u7528\u4E0E\u914D\u7F6E\u670D\u52A1\u540D\u5339\u914D\uFF08- / _ \u7B49\u4EF7\uFF09\uFF0C\u53BB\u91CD\u540E\u4E3A mcpUsed\uFF0C\u914D\u7F6E\u542F\u7528\u4E0D\u7B49\u4E8E\u4F1A\u8BDD\u4F7F\u7528",
1883
1900
  "panel.render.skillsUsed": "\u672C\u4F1A\u8BDD\u5DF2\u7528:{skills}",
1884
1901
  "panel.render.skillsUsedSource": "\u6765\u6E90:transcript \u4E2D\u89C2\u5BDF\u5230\u7684 Skill \u5DE5\u5177\u8C03\u7528 / \u6280\u80FD\u547D\u4EE4\u89E6\u53D1\u8BB0\u5F55",
1885
1902
  "panel.render.projectMenu": "\u9879\u76EE\u83DC\u5355",
@@ -2339,6 +2356,11 @@ var init_render2 = __esm({
2339
2356
  "panel.render.feedbackSignalsAreNotConnectedOr": "\u53CD\u9988\u4FE1\u53F7\u672A\u63A5\u7EBF\u6216\u4E0D\u53EF\u7528\uFF0C\u65E0\u6CD5\u786E\u8BA4\u662F\u5426\u9700\u8981\u4F60",
2340
2357
  "panel.render.viewPlanProtocol": "\xB7 \u67E5\u770B\u8BA1\u5212\u534F\u8BAE",
2341
2358
  "panel.render.currentBranch": "\u6240\u5728\u5206\u652F",
2359
+ "panel.render.moreBranches": "\u8FD8\u6709 {count} \u6761\u5206\u652F",
2360
+ "panel.render.oneMoreBranch": "\u8FD8\u6709 {count} \u6761\u5206\u652F",
2361
+ "panel.render.branchCurrentPoints": "{count} \u4E2A\u5F53\u524D\u70B9",
2362
+ "panel.render.branchCurrentPoint": "{count} \u4E2A\u5F53\u524D\u70B9",
2363
+ "panel.render.branchCurrentPointsSource": "\u6765\u6E90:currentPoints \u4E2D\u5C5E\u4E8E\u8BE5\u9876\u5C42\u8282\u70B9\u5B50\u6811\u7684\u5F53\u524D\u70B9",
2342
2364
  "panel.render.noCurrentBranchProvided": "\u5C1A\u672A\u63D0\u4F9B\u6240\u5728\u5206\u652F",
2343
2365
  "panel.render.currentTaskLabel": "\u5F53\u524D\u4EFB\u52A1",
2344
2366
  "panel.render.sourceFirstScreenCurrentPointsLength": "\u6765\u6E90:firstScreen.currentPoints.length",
@@ -13724,6 +13746,20 @@ var init_generic_waiting = __esm({
13724
13746
  }
13725
13747
  });
13726
13748
 
13749
+ // packages/adapter-cc/dist/mcp-tools.js
13750
+ function recognizeMcpTool(name, configuredServers) {
13751
+ const [prefix, server, ...tool] = name.split("__");
13752
+ if (prefix !== "mcp" || !server || tool.length === 0 || ![server, ...tool].every((part) => /^[a-zA-Z][a-zA-Z0-9_-]*$/.test(part))) {
13753
+ return void 0;
13754
+ }
13755
+ return configuredServers.find((configured) => configured.replaceAll("-", "_") === server.replaceAll("-", "_"));
13756
+ }
13757
+ var init_mcp_tools = __esm({
13758
+ "packages/adapter-cc/dist/mcp-tools.js"() {
13759
+ "use strict";
13760
+ }
13761
+ });
13762
+
13727
13763
  // packages/adapter-cc/dist/protocol.js
13728
13764
  import { existsSync as existsSync10, mkdirSync as mkdirSync6, readdirSync as readdirSync3, readFileSync as readFileSync10, rmdirSync, rmSync as rmSync5, writeFileSync as writeFileSync7 } from "node:fs";
13729
13765
  import { homedir as homedir10 } from "node:os";
@@ -13968,6 +14004,7 @@ __export(dist_exports2, {
13968
14004
  installProtocolCcUser: () => installProtocolCcUser,
13969
14005
  protocolStatusCc: () => protocolStatusCc,
13970
14006
  protocolStatusCcUser: () => protocolStatusCcUser,
14007
+ recognizeMcpTool: () => recognizeMcpTool,
13971
14008
  uninstallProtocolCc: () => uninstallProtocolCc,
13972
14009
  uninstallProtocolCcUser: () => uninstallProtocolCcUser
13973
14010
  });
@@ -13991,6 +14028,7 @@ var init_dist4 = __esm({
13991
14028
  init_scan();
13992
14029
  init_generic_waiting();
13993
14030
  init_hooks2();
14031
+ init_mcp_tools();
13994
14032
  init_protocol2();
13995
14033
  init_scan();
13996
14034
  init_protocol_user();
@@ -19145,7 +19183,7 @@ function resolveWingmanVersion({ defined, moduleUrl = import.meta.url, readPacka
19145
19183
  return void 0;
19146
19184
  }
19147
19185
  function wingmanVersion() {
19148
- const defined = false ? void 0 : "0.9.1";
19186
+ const defined = false ? void 0 : "0.9.2";
19149
19187
  return resolveWingmanVersion({
19150
19188
  defined,
19151
19189
  readPackage: (url) => JSON.parse(readFileSync17(url, "utf8"))
@@ -19175,6 +19213,7 @@ function acceptanceView(homeDir, overlay, key) {
19175
19213
  }
19176
19214
  function createNarrativeService(options = {}) {
19177
19215
  let codexPluginsProvider = options.codexPlugins;
19216
+ let ccMcpServersProvider = options.ccMcpServers;
19178
19217
  const follow = options.followTranscripts ?? true;
19179
19218
  const intervalMs = options.intervalMs ?? 500;
19180
19219
  const now = options.now ?? (() => /* @__PURE__ */ new Date());
@@ -19792,15 +19831,17 @@ function createNarrativeService(options = {}) {
19792
19831
  session.dirty = true;
19793
19832
  notify(harness);
19794
19833
  }
19795
- function deriveCached(harness, session, configuredPlugins) {
19834
+ function deriveCached(harness, session, configuredPlugins, configuredMcpServers) {
19796
19835
  const pluginKey = JSON.stringify(configuredPlugins);
19797
- if (!session.dirty && session.cached !== void 0 && session.cachedLocale === getLocale() && session.cachedCodexPlugins === pluginKey) {
19836
+ const mcpKey = JSON.stringify(configuredMcpServers);
19837
+ if (!session.dirty && session.cached !== void 0 && session.cachedLocale === getLocale() && session.cachedCodexPlugins === pluginKey && session.cachedCcMcpServers === mcpKey) {
19798
19838
  return session.cached;
19799
19839
  }
19800
- session.cached = derive(harness, session, now().toISOString(), configuredPlugins);
19840
+ session.cached = derive(harness, session, now().toISOString(), configuredPlugins, configuredMcpServers);
19801
19841
  session.dirty = false;
19802
19842
  session.cachedLocale = getLocale();
19803
19843
  session.cachedCodexPlugins = pluginKey;
19844
+ session.cachedCcMcpServers = mcpKey;
19804
19845
  return session.cached;
19805
19846
  }
19806
19847
  function getOverview(harness) {
@@ -19813,6 +19854,13 @@ function createNarrativeService(options = {}) {
19813
19854
  } catch {
19814
19855
  configuredPlugins = [];
19815
19856
  }
19857
+ let configuredMcpServers = [];
19858
+ try {
19859
+ if (harness === "cc")
19860
+ configuredMcpServers = ccMcpServersProvider?.() ?? [];
19861
+ } catch {
19862
+ configuredMcpServers = [];
19863
+ }
19816
19864
  const overlay = options.homeDir === void 0 ? void 0 : readTaskOverlay(options.homeDir);
19817
19865
  const overlayEntries = overlay === void 0 || "unavailable" in overlay ? {} : overlay.entries;
19818
19866
  let feedback;
@@ -19838,7 +19886,7 @@ function createNarrativeService(options = {}) {
19838
19886
  }).sort((a, b) => a.lastActivity < b.lastActivity ? 1 : a.lastActivity > b.lastActivity ? -1 : 0);
19839
19887
  const states = {};
19840
19888
  for (const [id, session] of sessions) {
19841
- const state = deriveCached(harness, session, configuredPlugins);
19889
+ const state = deriveCached(harness, session, configuredPlugins, configuredMcpServers);
19842
19890
  const verification = state.taskWorkflow?.verification;
19843
19891
  states[id] = state.taskWorkflow === void 0 ? state : {
19844
19892
  ...state,
@@ -20158,6 +20206,9 @@ function createNarrativeService(options = {}) {
20158
20206
  setCodexPluginsProvider(provider) {
20159
20207
  codexPluginsProvider = provider;
20160
20208
  },
20209
+ setCcMcpServersProvider(provider) {
20210
+ ccMcpServersProvider = provider;
20211
+ },
20161
20212
  handleEvent,
20162
20213
  getState,
20163
20214
  getOverview,
@@ -20399,6 +20450,21 @@ function feedbackView(harness, capability, state) {
20399
20450
  }
20400
20451
  return state ?? { state: "no_open_request", source: `${harness} explicit feedback signals` };
20401
20452
  }
20453
+ function observedMcpServers(lines2, configuredServers) {
20454
+ const names = /* @__PURE__ */ new Set();
20455
+ for (const line of lines2) {
20456
+ if (line.kind !== "assistant")
20457
+ continue;
20458
+ for (const block of line.blocks) {
20459
+ if (block.kind !== "tool_use")
20460
+ continue;
20461
+ const server = recognizeMcpTool(block.name, configuredServers);
20462
+ if (server !== void 0)
20463
+ names.add(server);
20464
+ }
20465
+ }
20466
+ return [...names];
20467
+ }
20402
20468
  function observedPlugins(lines2, configuredPlugins) {
20403
20469
  const names = /* @__PURE__ */ new Set();
20404
20470
  for (const line of lines2) {
@@ -20445,7 +20511,7 @@ function observedSkills(lines2) {
20445
20511
  }
20446
20512
  return [...names];
20447
20513
  }
20448
- function derive(harness, session, nowIso, configuredPlugins) {
20514
+ function derive(harness, session, nowIso, configuredPlugins, configuredMcpServers) {
20449
20515
  const codexLines = sortedCodexByTimestamp(session.codexLines);
20450
20516
  const lines2 = harness === "codex" ? adaptCodexNarrativeLines(codexLines) : sortedByTimestamp(session.lines);
20451
20517
  const timeline = deriveTodoTimeline(extractTodoSnapshots(lines2));
@@ -20589,12 +20655,14 @@ function derive(harness, session, nowIso, configuredPlugins) {
20589
20655
  }
20590
20656
  };
20591
20657
  const skillsUsed = harness === "cc" ? observedSkills(lines2) : [];
20658
+ const mcpUsed = harness === "cc" ? observedMcpServers(lines2, configuredMcpServers) : [];
20592
20659
  const pluginsUsed = harness === "codex" ? observedPlugins(codexLines, configuredPlugins) : [];
20593
20660
  return {
20594
20661
  harness,
20595
20662
  sessionId: session.id,
20596
20663
  transcriptPath: session.transcriptPath ?? null,
20597
20664
  ...skillsUsed.length === 0 ? {} : { skillsUsed },
20665
+ ...mcpUsed.length === 0 ? {} : { mcpUsed },
20598
20666
  ...pluginsUsed.length === 0 ? {} : { pluginsUsed },
20599
20667
  ...session.cwd === void 0 ? {} : { cwd: session.cwd },
20600
20668
  ...session.cwd === void 0 ? {} : {
@@ -21813,6 +21881,7 @@ function createWingmanServer(options) {
21813
21881
  const warn = options.warn ?? ((message) => console.error(message));
21814
21882
  const runtime = { anatomy: null };
21815
21883
  options.narrative?.setCodexPluginsProvider(() => runtime.anatomy?.configs.find((config) => config.harness === "codex")?.slots.skills.filter((item) => item.nativeName.startsWith("plugins.")).map((item) => item.nativeName.slice("plugins.".length)) ?? []);
21884
+ options.narrative?.setCcMcpServersProvider(() => runtime.anatomy?.configs.find((config) => config.harness === "cc")?.slots.tools.filter((item) => item.nativeName.startsWith("mcpServers.")).map((item) => item.nativeName.slice("mcpServers.".length)) ?? []);
21816
21885
  return createServer({ requireHostHeader: false }, (req, res) => {
21817
21886
  handle(req, res, options, warn, runtime).catch((error) => {
21818
21887
  warn(t("cli.server.requestFailed", { error: errorMessage3(error) }));
@@ -21949,7 +22018,7 @@ async function handle(req, res, options, warn, runtime) {
21949
22018
  });
21950
22019
  return;
21951
22020
  }
21952
- if (harness === "codex")
22021
+ if (harness === "codex" || harness === "cc")
21953
22022
  await cachedAnatomy(options, warn, runtime);
21954
22023
  const overview = options.narrative.getOverview(harness);
21955
22024
  if (overview.sessions.length > 0) {
@@ -1 +1 @@
1
- :root{color-scheme:dark;--page: #0d0d0d;--surface: #1a1a19;--pill: #050505;--ink: #ffffff;--ink2: #c3c2b7;--muted: #898781;--hairline: rgba(255, 255, 255, .1);--grid: #2c2c2a;--s1: #3987e5;--s2: #d95926;--s3: #199e70;--s4: #c98500;--s5: #d55181;--warn: #fab219;--bad: #e5534b;--fs-1: 18px;--fs-2: 14px;--fs-3: 12px}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--page);color:var(--ink);font-family:system-ui,-apple-system,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:28px 16px 48px}.wrap{display:flex;width:100%;max-width:100%;min-width:0;flex-direction:column;align-items:center}.pill{display:flex;max-width:min(100%,640px);min-width:0;align-items:center;gap:10px;background:var(--pill);border:1px solid var(--hairline);border-radius:999px;padding:10px 18px;cursor:pointer;-webkit-user-select:none;user-select:none;box-shadow:0 8px 30px #0000008c;transition:transform .15s ease}.pill:hover{transform:scale(1.03)}.dot{width:8px;height:8px;border-radius:50%;background:var(--s1);animation:pulse 1.6s infinite;flex:none}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.dot.quiet{animation:none;background:var(--muted);opacity:.6}.dot.live{background:var(--s3);box-shadow:0 0 8px #199e70cc}.pill .t1{font-size:13px;font-weight:600;flex:none}.pill .t2{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:var(--ink2)}.pill .chev{color:var(--muted);font-size:11px;flex:none}.dot.wait{background:var(--warn);box-shadow:0 0 8px #fab219cc;animation:pulse 1.2s infinite}.pill.waiting{border-color:#fab2198c}.pill.waiting .t2{color:var(--warn)}.panel{display:none;width:min(700px,94vw);background:var(--surface);border:1px solid var(--hairline);border-radius:20px;padding:20px 22px 16px;box-shadow:0 18px 60px #0009;transform-origin:top center}.open .panel{display:block;animation:drop .22s ease}.open .pill{display:none}.panel-region{display:contents}@keyframes drop{0%{opacity:0;transform:scale(.92) translateY(-8px)}to{opacity:1;transform:none}}.head{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}.head .title{font-size:15px;font-weight:700}.head .meta{font-size:12px;color:var(--muted)}.badge{font-size:10px;letter-spacing:.1em;color:var(--warn);border:1px solid var(--warn);border-radius:4px;padding:2px 6px}.collapse{margin-left:auto;background:none;border:1px solid var(--hairline);color:var(--ink2);border-radius:8px;padding:4px 10px;font-size:12px;cursor:pointer}.collapse:hover{border-color:var(--muted)}.tabs{display:flex;gap:4px;background:var(--pill);border:1px solid var(--hairline);border-radius:10px;padding:3px;width:max-content;margin-bottom:6px}.tab{border:none;background:none;color:var(--muted);font-size:12.5px;padding:5px 14px;border-radius:8px;cursor:pointer;font-family:inherit}.tab.act{background:var(--surface);color:var(--ink);font-weight:600;border:1px solid var(--hairline)}.tabnum{display:inline-block;margin-left:6px;min-width:16px;text-align:center;font-size:10px;color:var(--ink2);background:var(--grid);border-radius:999px;padding:0 4px;font-variant-numeric:tabular-nums}.now{background:var(--pill);border:1px solid var(--hairline);border-radius:12px;padding:10px 14px;margin:8px 0 10px}.now .ntask{font-size:14px;font-weight:700;display:flex;align-items:center;gap:8px}.now .ntask .muted{color:var(--muted);font-weight:400}.now .ndoing{font-size:12px;color:var(--ink2);margin-top:5px}.now .ndoing b{color:var(--ink);font-weight:600}.now .nquote{font-size:11.5px;color:var(--muted);margin-top:5px;line-height:1.6}.now .nwait{font-size:12px;color:var(--warn);border:1px solid rgba(250,178,25,.55);border-radius:8px;padding:5px 9px;margin-bottom:8px;animation:pulse 1.2s infinite}.taskflow{margin:8px 0 10px;font-size:var(--fs-2);line-height:1.55}.box{background:var(--pill);border:1px solid var(--hairline);border-radius:12px;padding:12px}.box+.box,.ask-line+.box,.fold{margin-top:16px}.box>*+*{margin-top:8px}.ask-box.active{border-color:var(--warn);color:var(--warn)}.ask-text{font-size:var(--fs-2);font-weight:650}.ask-meta{display:flex;align-items:center;flex-wrap:wrap;gap:6px 8px;font-size:var(--fs-3)}.ask-generic{font-size:var(--fs-3)}.ask-meta button{margin-left:auto;border:1px solid currentColor;border-radius:8px;background:transparent;color:inherit;cursor:pointer;font:inherit;padding:4px 8px}.ask-line{display:flex;align-items:baseline;gap:8px;color:var(--muted);font-size:var(--fs-3)}.wfheading{display:flex;align-items:baseline;gap:12px}.wfheading :where(.wftitle){flex:1;min-width:0}.wfheading :where(.task-status){flex-shrink:0}.wftitle{font-size:var(--fs-1);font-weight:650}.wfgoal,.wflead{display:flex;align-items:baseline;gap:8px;color:var(--ink2)}.wfsteps[data-expanded=false]{max-height:3.1em;-webkit-line-clamp:unset}.wfsteps[data-expanded=true]{max-height:none}.wflabel{display:inline-block;margin-right:8px;color:var(--muted);font-size:var(--fs-3);flex:none}.wfsource{color:var(--muted);font-size:var(--fs-3)}.wfsteps{margin-top:5px}.wfstep{display:flex;gap:7px;align-items:baseline}.wfstep.completed{color:var(--muted)}.wfstep.in_progress{font-weight:600}.wfrecent{display:flex;flex-wrap:wrap;gap:4px 8px}.wfrecent-step{color:var(--ink2)}.wfproject,.wfproject-details{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 6px;color:var(--ink2)}.wfcurrent{display:flex;align-items:baseline;min-width:0;gap:6px}.wfproject-node{padding:1px 7px}.wfproject-link{border:1px solid var(--hairline);border-radius:999px;background:transparent;color:var(--ink2);cursor:pointer;font:inherit;font-size:var(--fs-3);padding:2px 8px}.wfverify{display:flex;align-items:center;flex-wrap:wrap;gap:6px;color:var(--ink2)}.wfverify-sep{color:var(--muted)}.wfverify-action{border:1px solid var(--hairline);border-radius:999px;background:transparent;color:var(--ink2);cursor:pointer;font:inherit;font-size:var(--fs-3);padding:2px 8px}.wfverify-error{margin-top:5px}.fold>summary{display:flex;align-items:baseline;gap:8px;cursor:pointer;list-style:none}.fold>summary::-webkit-details-marker{display:none}.fold>summary:before{content:"▸";color:var(--muted);font-size:var(--fs-3);flex:none}.fold[open]>summary:before{content:"▾"}.fold>summary .wflabel{min-width:5em;margin-right:0}.fold-summary{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink2);font-size:var(--fs-2)}.fold-body{margin-top:8px;padding:8px 12px;border-left:1px solid var(--hairline);color:var(--ink2);overflow-wrap:anywhere}.protocol-foot{margin-top:16px;color:var(--muted);font-size:var(--fs-3)}.protocol-foot button{margin-left:8px;border:0;padding:0;background:transparent;color:inherit;font:inherit;text-decoration:underline;cursor:pointer}.evidencegroup+.evidencegroup{margin-top:6px}.vtabs{display:flex;gap:22px;border-bottom:1px solid var(--grid);margin-bottom:4px}.vtab{background:none;border:none;font-family:inherit;font-size:13px;color:var(--muted);padding:8px 2px;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}.vtab.act{color:var(--ink);font-weight:700;border-bottom-color:var(--s1)}.vtab .vcnt{font-size:11px;color:var(--muted);font-weight:400;font-variant-numeric:tabular-nums}.pane{display:none}.pane.act{display:block}.td{padding:8px 0;border-top:1px dashed var(--grid);font-size:13px}.td:first-child{border-top:none}.tdr{display:flex;align-items:center;gap:9px}.tdr[data-act]{cursor:pointer}.mk{width:16px;flex:none;text-align:center;font-size:12px;color:var(--s3)}.mk.doing{color:var(--s1)}.td .tdc{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.td.done .tdr{color:var(--muted)}.td.done .tdc{text-decoration:line-through}.td.todo .tdr{color:var(--muted)}.td .tdc b{font-weight:700}.ag{font-size:10px;color:var(--s1);border:1px solid rgba(57,135,229,.5);border-radius:999px;padding:0 8px;flex:none}.loc{margin-left:auto;flex:none;font-size:10.5px;font-family:inherit;color:var(--ink2);background:none;border:1px solid var(--grid);border-radius:7px;padding:2px 8px;cursor:pointer}.loc:hover{border-color:var(--muted)}.trace{margin:8px 0 2px 24px;border-left:2px solid var(--grid);padding-left:14px}.tr{display:flex;align-items:center;gap:8px;padding:5px 0;font-size:12px;color:var(--ink2);cursor:pointer}.tr .ic{width:8px;height:8px;border-radius:50%;background:var(--s3);flex:none;margin-left:-19px;border:2px solid var(--surface)}.tr.bad .ic{background:var(--bad)}.tr.run .ic{background:var(--s1)}.tr .trlabel{flex:none}.tr .dur,.trs .dur{margin-left:auto;color:var(--muted);font-size:10.5px;font-variant-numeric:tabular-nums;flex:none;white-space:nowrap}.failchip{font-size:10px;color:var(--bad);border:1px solid var(--bad);border-radius:999px;padding:0 7px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.steps{margin-left:6px;padding:2px 0 4px}.trs{display:flex;align-items:center;gap:8px;padding:3px 0;font-size:11.5px;color:var(--muted)}.trs .cmd{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:11px;color:var(--ink2);flex:none}.trs .sdetail{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trs.bad .cmd{color:var(--bad)}.rawsec .rawhead{background:none;border:none;font-family:inherit;font-size:11px;letter-spacing:.14em;color:var(--muted);padding:0;cursor:pointer}.rawsec .rawhead:hover{color:var(--ink2)}.rawsec .rawbody{display:none}.rawsec .rawbody.open{display:block;margin-top:8px}.ubox{max-height:220px;overflow-y:auto;border:1px solid var(--grid);border-radius:8px;padding:2px 10px}.urow{display:flex;align-items:center;gap:8px;padding:5px 0;font-size:11.5px;border-top:1px dashed var(--grid);color:var(--ink2)}.urow:first-child{border-top:none}.urow .utime{color:var(--muted);font-size:10.5px;font-variant-numeric:tabular-nums;flex:none}.urow .unums{color:var(--muted);font-variant-numeric:tabular-nums;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.urow .utot{margin-left:auto;color:var(--ink);font-variant-numeric:tabular-nums;flex:none}.urow .ucost{color:var(--s3);font-variant-numeric:tabular-nums;flex:none}.sessions-empty,.session-notice{margin-top:8px;padding:7px 10px;border:1px solid var(--grid);border-radius:6px;color:var(--ink2);font-size:11px}.session-notice{display:flex;gap:8px;cursor:pointer}.session-notice-close{margin-left:auto;color:var(--ink3)}.session-chip-group{margin-top:8px}.old-sessions{margin:6px 0}.schips{display:flex;flex-wrap:wrap;gap:6px;padding:8px 0 2px}.schip{display:inline-flex;align-items:center;gap:5px;background:none;border:1px solid var(--grid);border-radius:999px;padding:2px 10px;font-family:inherit;font-size:11px;color:var(--ink2);cursor:pointer}.schip:hover{border-color:var(--ink2)}.schip.act{color:var(--ink);border-color:var(--ink2);font-weight:600}.schip.ended{opacity:.55}.schip .sdot{width:6px;height:6px;border-radius:50%;background:var(--s1);flex:none}.schip .sdot.wait{background:var(--warn);animation:pulse 1.2s infinite}.schip .snew{padding:0 5px;border:1px solid var(--s1);border-radius:999px;color:var(--s1);font-size:9px;font-weight:700}.feedbacksignal{margin:8px 0 2px;border:1px solid rgba(250,178,25,.4);border-radius:8px;padding:5px 9px;color:var(--warn);font-size:12px}.suggslot:empty{display:none}.suggslot{border-top:1px solid var(--grid);padding:8px 0 2px}.sugg{display:flex;align-items:center;gap:8px;padding:5px 0;font-size:12px;color:var(--ink2)}.sugg .sugtext{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sugg.r-waiting-timeout .sugtext{color:var(--warn)}.sugg .sugbtn,.sugg .sugdismiss{background:none;border:1px solid var(--grid);border-radius:6px;padding:1px 8px;font-family:inherit;font-size:11px;color:var(--ink2);cursor:pointer;flex:none}.sugg .sugbtn{color:var(--ink);border-color:var(--ink2);margin-left:auto}.sugg .sugbtn:hover{background:var(--grid)}.sugg .sugdismiss{color:var(--muted)}.sugg .sugbtn+.sugdismiss{margin-left:0}.sugg .sugdismiss:only-of-type{margin-left:auto}.sugg .sugdismiss:hover{color:var(--ink2)}.tr.waitrow{cursor:default}.tr.waitrow .trlabel{color:var(--warn)}.sec{border-top:1px solid var(--grid);padding:13px 0}.sec.first{border-top:none;padding-top:2px}.sec .label{font-size:11px;letter-spacing:.14em;color:var(--muted);margin-bottom:8px;display:flex;align-items:center;gap:8px}.tier{font-size:10px;letter-spacing:0;color:var(--ink2);border:1px solid var(--grid);border-radius:999px;padding:1px 8px;font-weight:400}.sec .headline{font-size:13px;color:var(--ink2);margin-bottom:10px}.sec .headline b{color:var(--ink);font-weight:700}.stack{display:flex;height:16px;margin-bottom:10px}.seg{margin-right:2px;cursor:default}.seg:last-child{margin-right:0}.seg:first-child{border-radius:4px 0 0 4px}.seg:last-child{border-radius:0 4px 4px 0}.seg:hover{filter:brightness(1.18)}.legend{display:grid;grid-template-columns:1fr 1fr;gap:5px 18px}@media(max-width:560px){.legend{grid-template-columns:1fr}}.lrow{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink2);min-width:0}.sw{width:10px;height:10px;border-radius:3px;flex:none}.lrow .nat,.gtitle .nat{font-size:10.5px;color:var(--muted);border:1px solid var(--grid);border-radius:4px;padding:0 5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lrow .v{margin-left:auto;color:var(--ink);font-variant-numeric:tabular-nums;flex:none}.lrow .cnt{color:var(--muted);font-size:10.5px;flex:none}.lrow.na,.lrow.na .v{color:var(--muted)}.grp{margin-bottom:10px}.grp:last-child{margin-bottom:0}.gtitle{font-size:11.5px;color:var(--muted);margin-bottom:4px;display:flex;align-items:center;gap:7px}.gdot{width:8px;height:8px;border-radius:2px;flex:none}.crow{display:flex;align-items:center;gap:10px;padding:6px 0;font-size:12.5px;border-top:1px dashed var(--grid)}.cname{color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.offrow .cname{color:var(--muted)}.chip{font-size:10px;color:var(--muted);border:1px solid var(--grid);border-radius:999px;padding:1px 7px;flex:none}.statechip{font-size:10px;border-radius:999px;padding:1px 7px;flex:none}.statechip.off{color:var(--warn);border:1px solid var(--warn)}.statechip.invocation:not(.off){color:var(--s3);border:1px solid var(--grid)}.statechip.nofile{color:var(--muted);border:1px dashed var(--grid)}.ctok{margin-left:auto;color:var(--muted);font-size:11.5px;font-variant-numeric:tabular-nums;flex:none}.crow.emptyrow{color:var(--muted);font-size:12px}.livenone{font-size:12.5px;color:var(--muted);border:1px dashed var(--grid);border-radius:8px;padding:10px 12px;margin-bottom:8px;line-height:1.7}.livenone:last-child{margin-bottom:0}.livenone code{color:var(--ink2);background:var(--pill);border:1px solid var(--grid);border-radius:4px;padding:1px 5px}.tier.none{color:var(--muted);border-style:dashed}.conn{font-size:10px;letter-spacing:0;font-weight:400;border-radius:999px;padding:1px 8px;border:1px solid var(--grid);color:var(--muted)}.conn.open{color:var(--s3);border-color:var(--s3)}.conn.retrying{color:var(--warn);border-color:var(--warn)}.conn.replay{color:var(--warn);border-style:dashed}.demobtn{margin-left:auto;background:none;border:1px dashed var(--warn);color:var(--warn);border-radius:6px;padding:2px 8px;font-size:10.5px;letter-spacing:0;cursor:pointer;font-family:inherit}.demobtn:hover:not(:disabled){border-style:solid}.demobtn:disabled{opacity:.5;cursor:default}.feed{max-height:240px;overflow-y:auto;border:1px solid var(--grid);border-radius:8px;padding:2px 10px}.lvrow{display:flex;align-items:center;gap:8px;padding:5px 0;font-size:12px;border-top:1px dashed var(--grid)}.lvrow:first-child{border-top:none}.lvtime{color:var(--muted);font-size:11px;font-variant-numeric:tabular-nums;flex:none}.lvname{color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lvrow.own .lvname{font-weight:600}.lvrow.other{opacity:.45}.lvharness{margin-left:auto;font-size:10px;color:var(--muted);border:1px solid var(--grid);border-radius:4px;padding:0 5px;flex:none}.lvrow.own .lvharness{color:var(--ink2);border-color:var(--hairline)}.mockchip{font-size:9px;letter-spacing:.08em;color:var(--warn);border:1px solid var(--warn);border-radius:4px;padding:0 4px;flex:none}.labr{margin-left:auto;display:flex;align-items:center;gap:8px}.sharelink{background:none;border:1px solid var(--grid);color:var(--muted);border-radius:6px;padding:2px 8px;font-size:10.5px;letter-spacing:0;cursor:pointer;font-family:inherit}.sharelink:hover{color:var(--ink2);border-color:var(--muted)}.sharebox{max-height:320px;overflow:auto;border:1px solid var(--grid);border-radius:8px;background:var(--pill);padding:6px 8px;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:11px;line-height:1.5}.shline{display:flex;gap:7px;align-items:flex-start;padding:1px 0}.shdel{flex:none;background:none;border:1px solid var(--grid);color:var(--muted);border-radius:4px;font-size:9px;line-height:1.3;padding:0 4px;margin-top:1px;cursor:pointer}.shdel:hover{color:var(--s2);border-color:var(--s2)}.shtext{color:var(--ink2);white-space:pre-wrap;word-break:break-all}.btn:disabled{opacity:.45;cursor:default}.btn:disabled:hover{filter:none}.empty-state{display:flex;flex-direction:column;align-items:center}.empty-card{width:min(460px,94vw);background:var(--surface);border:1px solid var(--hairline);border-radius:16px;padding:28px 26px;text-align:center}.empty-title{font-size:15px;font-weight:700;margin-bottom:8px}.empty-detail{font-size:12px;color:var(--warn);margin-bottom:8px;word-break:break-all}.empty-hint{font-size:12.5px;color:var(--muted);line-height:1.7}.empty-hint code{color:var(--ink2);background:var(--pill);border:1px solid var(--grid);border-radius:4px;padding:1px 5px}#tip{position:fixed;display:none;pointer-events:none;z-index:9;background:#050505;border:1px solid var(--hairline);border-radius:8px;padding:6px 10px;font-size:12px;color:var(--ink);max-width:300px;box-shadow:0 8px 24px #00000080;white-space:pre-line;line-height:1.5}.toggle{width:30px;height:17px;border-radius:999px;background:var(--grid);position:relative;cursor:pointer;flex:none;transition:background .15s;border:none;padding:0}.toggle:after{content:"";position:absolute;top:2px;left:2px;width:13px;height:13px;border-radius:50%;background:var(--ink2);transition:left .15s}.toggle.on{background:var(--s1)}.toggle.on:after{left:15px;background:#fff}.cc-feature{flex-wrap:wrap}.cc-feature .cname{flex:1;min-width:140px}.cc-warning{color:var(--muted);margin-left:6px}.cc-status{flex-basis:100%;font-size:11px;color:var(--muted)}.cc-status.blocked{color:var(--warn)}.cc-segments{display:inline-flex;border:1px solid var(--grid);border-radius:6px;overflow:hidden}.cc-segments button{padding:4px 7px;font:inherit;font-size:11px;color:var(--muted);background:none;border:none;cursor:pointer}.cc-segments button+button{border-left:1px solid var(--grid)}.cc-segments button[aria-pressed=true]{background:var(--s1);color:#fff}.cc-feature button:disabled{opacity:.45;cursor:not-allowed}.cc-disable-all{padding:3px 7px;font-size:11px}.cright{display:flex;align-items:center;gap:8px;flex:none}.cfgnote{font-size:11px;color:var(--muted);padding:5px 0 2px;border-top:1px dashed var(--grid);line-height:1.6}.licbar{display:block;width:100%;text-align:left;font-size:12px;font-family:inherit;color:var(--warn);background:none;border:1px solid var(--warn);border-radius:8px;padding:6px 10px;margin-bottom:10px;cursor:pointer}.licbar.expired{color:var(--s2);border-color:var(--s2)}.licbar:hover{filter:brightness(1.12)}.licrow{display:flex;align-items:stretch;gap:8px;margin-bottom:10px}.licrow .licbar{flex:1;margin-bottom:0}.licimport{flex:none;font-size:11px;font-family:inherit;color:var(--muted);background:none;border:1px solid var(--grid);border-radius:8px;padding:6px 10px;cursor:pointer}.licimport:hover{color:var(--ink2);border-color:var(--muted)}.licfoot{margin-top:12px;text-align:center}.licfootlink{font-size:11px;font-family:inherit;color:var(--muted);background:none;border:none;padding:2px 4px;cursor:pointer;text-decoration:underline;text-decoration-color:var(--grid);text-underline-offset:3px}.licfootlink:hover{color:var(--ink2)}.feedbackfoot{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;padding:0 18px 16px;color:var(--muted);font-size:10.5px;line-height:1.45;text-align:center}.feedbackfoot a{color:var(--ink2);text-underline-offset:2px}.feedbackfoot a:hover{color:var(--ink)}.feedbacklink{font-weight:650}.lictrial{margin:-2px 0 8px;text-align:right}.lictrial .licfootlink{text-decoration:none}#drop{position:fixed;inset:0;z-index:40;display:none;align-items:center;justify-content:center;background:#000000a6;border:2px dashed var(--s1);color:var(--ink);font-size:15px;pointer-events:none}.overlay{position:fixed;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;padding:20px}.scrim{position:absolute;inset:0;background:#0009}.modal{position:relative;width:min(560px,94vw);max-height:86vh;overflow-y:auto;background:var(--surface);border:1px solid var(--hairline);border-radius:16px;padding:16px 18px;box-shadow:0 18px 60px #0009;animation:drop .18s ease}.mhead{display:flex;align-items:center;gap:8px;margin-bottom:10px}.mtitle{font-size:14px;font-weight:700}.mclose{margin-left:auto;background:none;border:1px solid var(--hairline);color:var(--ink2);border-radius:8px;padding:2px 8px;font-size:12px;cursor:pointer}.mclose:hover{border-color:var(--muted)}.mnote{font-size:11px;color:var(--warn);border:1px dashed var(--warn);border-radius:8px;padding:8px 10px;margin-bottom:10px;line-height:1.6}.msec{border-top:1px solid var(--grid);padding:10px 0}.mlabel{font-size:11px;letter-spacing:.1em;color:var(--muted);margin-bottom:6px}.mtext{font-size:12.5px;color:var(--ink2);line-height:1.7;word-break:break-all}.mtext.muted{color:var(--muted)}.mtext code,.mpath{color:var(--ink2);background:var(--pill);border:1px solid var(--grid);border-radius:4px;padding:1px 5px;font-size:11px;word-break:break-all}.mfile{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:12px;flex-wrap:wrap}.mkind{font-size:10px;border-radius:4px;padding:1px 6px;flex:none;border:1px solid var(--grid);color:var(--ink2)}.mkind.create{color:var(--s3);border-color:var(--s3)}.mkind.modify{color:var(--s4);border-color:var(--s4)}.mkind.delete{color:var(--s2);border-color:var(--s2)}.mlines{margin-left:auto;font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums;flex:none}.mref{display:flex;gap:8px;padding:4px 0;font-size:12px;align-items:baseline;flex-wrap:wrap}.mctx{color:var(--muted);font-size:11.5px;line-height:1.5}.merror{font-size:12px;color:var(--warn);border:1px solid var(--warn);border-radius:8px;padding:8px 10px;margin-bottom:8px;white-space:pre-wrap;word-break:break-all}.mact{display:flex;gap:8px;justify-content:flex-end;margin-top:12px}.btn{border-radius:8px;padding:6px 14px;font-size:12.5px;cursor:pointer;font-family:inherit}.btn.ghost{background:none;border:1px solid var(--hairline);color:var(--ink2)}.btn.ghost:hover{border-color:var(--muted)}.btn.primary{background:var(--s1);border:1px solid var(--s1);color:#fff;font-weight:600}.btn.primary:hover{filter:brightness(1.1)}.projects{display:grid;gap:12px;padding:12px 14px 16px}.projects-empty,.project-empty{color:var(--muted);font-size:12px;padding:8px 0}.project-card{border:1px solid var(--hairline);border-radius:12px;padding:12px;background:var(--surface)}.project-card.compact,.project-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.project-organization{display:flex;align-items:center;gap:6px}.project-organization button{color:var(--muted);background:transparent;border:0;cursor:pointer;font-size:12px;padding:4px}.project-organization button:disabled{opacity:.35;cursor:default}.project-organization button[aria-pressed=true]{color:var(--ink2)}.project-row{display:grid;grid-template-columns:minmax(90px,1fr) minmax(110px,2fr) minmax(100px,1.5fr) auto;align-items:center;gap:14px;min-height:36px;cursor:pointer}.project-card.compact>.project-row{flex:1;min-width:0}.project-row>span{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.project-row-name{font-weight:600}.project-row-goal,.project-row-task{color:var(--muted)}.project-row-action{font-size:12px;border:1px solid var(--hairline);border-radius:4px;padding:3px 6px}.project-row-action[data-kind=ended]{color:var(--muted)}.project-row-action[data-kind=decision],.project-row-action[data-kind=checkpoint]{color:var(--warn)}.project-row:focus-visible{outline:2px solid var(--ink2);outline-offset:4px}.projects-toggle,.project-collapse{color:var(--muted);background:transparent;border:0;font-size:12px;padding:6px 0;cursor:pointer}.project-collapse{display:block;margin-left:auto}.project-progress{display:grid;gap:7px;margin-top:12px;font-size:12px}.project-progress>div{display:flex;align-items:baseline;flex-wrap:wrap;gap:5px}.project-action{margin-top:14px;padding:10px 0;border-block:1px solid var(--hairline);font-size:12px}.project-action[data-kind=decision],.project-action[data-kind=checkpoint]{color:var(--warn)}.project-action-title{font-weight:650}.project-action-title>span{margin-left:6px;font-weight:400}.project-action-item{display:flex;align-items:baseline;flex-wrap:wrap;gap:7px;margin-top:8px}.project-tech{margin-top:14px;color:var(--muted);font-size:11px}.project-tech>summary,.project-plan-help>summary,.project-node-children>summary{cursor:pointer}.project-tech>summary{margin-bottom:7px}.project-node-children>summary{color:var(--muted);font-size:11px}.project-plan-help{margin-top:7px}.project-plan-help pre{white-space:pre-wrap}.project-action button:focus-visible,.project-tech summary:focus-visible,.project-node-children summary:focus-visible{outline:2px solid var(--s1);outline-offset:3px}.project-card.unavailable,.project-last-good{background:color-mix(in srgb,var(--surface) 88%,var(--grid))}.project-card-head{display:flex;justify-content:space-between;gap:12px;align-items:baseline}.project-title{font-size:15px;font-weight:700}.project-source{margin-left:7px;color:var(--muted);font-size:10.5px}.project-presence{color:var(--muted);font-size:11px;margin-top:4px}.project-memory-warning,.anatomy-refresh-warning{color:var(--warn);font-size:11px}.project-memory-warning{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.project-memory-warning button{color:inherit;background:transparent;border:0;cursor:pointer}.project-root,.project-meta,.project-counts,.project-facts{color:var(--muted);font-size:11px;overflow-wrap:anywhere}.project-meta{margin-top:4px}.project-protocols{display:grid;gap:6px;margin-top:8px}.project-protocol-row{display:flex;align-items:center;flex-wrap:wrap;gap:5px}.project-protocol-chip,.project-protocol-copy{border:1px solid var(--hairline);border-radius:999px;color:var(--ink2);font-family:inherit;font-size:10.5px;padding:2px 7px}.project-protocol-chip.plan_present,.project-protocol-chip.session_wrote_plan{border-color:var(--s3);color:var(--s3)}.project-protocol-chip.installed_not_loaded{border-color:var(--warn);color:var(--warn)}.project-protocol-note{color:var(--muted);font-size:10px;overflow-wrap:anywhere}.project-protocol-copy{background:transparent;cursor:pointer;padding-inline:6px}.project-protocol-copy:hover{border-color:var(--s1)}.project-goal,.project-section,.project-counts,.project-facts,.project-complete,.project-l0,.project-error,.project-last-good{margin-top:10px}.project-label{color:var(--ink2);font-size:11px;font-weight:650;margin-right:8px}.project-l0,.project-error{border:1px solid var(--hairline);border-radius:8px;padding:8px 10px;font-size:12px}.project-error{color:var(--warn);border-color:var(--warn)}.project-complete{color:var(--s3);font-size:12px;font-weight:650}.project-points{display:flex;flex-wrap:wrap;gap:6px;margin-top:5px}.project-checkpoints{margin-top:5px}.project-checkpoint{font-size:12px;font-weight:400}.project-crumb{border:1px solid var(--hairline);border-radius:999px;background:transparent;color:var(--ink2);cursor:pointer;font-family:inherit;font-size:11px;padding:3px 8px}.project-crumb:hover{border-color:var(--s1)}.project-node-text,.project-crumb,.project-checkpoint{display:-webkit-box;min-width:0;max-width:100%;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere}.project-node-text{flex:1}.project-facts-group+.project-facts-group{margin-top:4px}.project-facts-toggle{border:0;background:transparent;color:inherit;cursor:pointer;font:inherit;padding:0;text-align:left}.project-facts-items{display:grid;gap:3px;margin:4px 0 0 14px}.task-filters{display:grid;gap:7px;padding:12px 14px 0}.task-filter-group{display:flex;align-items:center;flex-wrap:wrap;gap:5px;color:var(--muted);font-size:10.5px}.task-filter-chip,.task-badge,.task-status{border:1px solid var(--hairline);border-radius:999px;background:transparent;color:var(--ink2);font-family:inherit;font-size:10.5px;padding:2px 7px}.task-filter-chip{cursor:pointer}.task-filter-chip:hover,.task-filter-chip.act{border-color:var(--s1);color:var(--s1)}.task-filter-summary,.task-hidden{color:var(--muted);font-size:11px}.task-filter-summary{padding:7px 14px 0}.task-hidden{margin:5px 0 0 19px}.task-card-list{display:grid;grid-template-columns:minmax(0,1fr);gap:7px;margin-top:6px}.task-card{display:block;width:100%;border:1px solid var(--hairline);border-radius:10px;background:color-mix(in srgb,var(--surface) 94%,var(--grid));color:var(--ink);cursor:pointer;font-family:inherit;padding:9px 38px 9px 10px;text-align:left}.task-card:hover{border-color:var(--s1)}.task-card-head,.task-card-meta{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.task-card-meta{margin-top:7px}.task-title{font-size:12px;font-weight:650;overflow-wrap:anywhere}.task-title-source,.task-progress,.task-activity,.task-context,.task-skills,.task-feedback,.task-checks,.task-accept{color:var(--muted);font-size:10.5px}.task-status.waiting{border-color:var(--warn);color:var(--warn)}.task-status.active,.task-status.complete{border-color:var(--s3);color:var(--s3)}.task-status.ended{color:var(--muted)}.task-feedback,.task-context,.task-skills{display:block;margin-top:6px}.task-feedback{color:var(--warn)}.task-card-wrap{position:relative}.task-menu-button{position:absolute;top:6px;right:7px;width:28px;height:26px;border:1px solid transparent;border-radius:7px;background:transparent;color:var(--muted);cursor:pointer;font:700 17px / 1 inherit}.task-menu-button:hover,.task-menu-button[aria-expanded=true]{border-color:var(--hairline);color:var(--ink)}.task-menu{display:grid;gap:7px;max-width:100%;margin-top:5px;padding:8px;border:1px solid var(--hairline);border-radius:9px;background:color-mix(in srgb,var(--surface) 92%,var(--grid))}.task-menu label{display:grid;grid-template-columns:auto minmax(0,1fr);gap:7px;align-items:center;color:var(--muted);font-size:10.5px}.task-menu input{min-width:0;border:1px solid var(--hairline);border-radius:6px;background:var(--surface);color:var(--ink);font:inherit;padding:5px 7px}.task-menu-actions{display:flex;flex-wrap:wrap;gap:6px}.return-target-option,.return-settings-dismiss,.task-menu-actions button,.task-resume-command button,.task-unhide,.task-hidden-toggle{border:1px solid var(--hairline);border-radius:999px;background:transparent;color:var(--ink2);cursor:pointer;font:inherit;font-size:10.5px;padding:3px 8px}.task-resume-command{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;align-items:center}.task-resume-command code{min-width:0;overflow-wrap:anywhere;white-space:pre-wrap}.task-return-result,.task-resume-note,.task-resume-unavailable,.task-error{grid-column:1 / -1;color:var(--muted);font-size:10.5px;overflow-wrap:anywhere}.task-error{margin-top:5px;color:var(--warn)}.task-pin-mark{color:var(--s1);font-size:10px;font-weight:700}.session-archived{margin-top:8px}.session-archived-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:6px 0}.task-hidden-group{margin-top:6px}.task-hidden-toggle{color:var(--muted)}.project-organization .task-menu-button{position:static}.project-archived{display:grid;gap:8px;margin-top:12px}.project-archived>.task-hidden-toggle{justify-self:start}.task-card-hidden{opacity:.58}.task-unhide{margin-top:5px}@media(max-width:560px){.task-menu label{grid-template-columns:1fr}}.project-tree,.project-tree ul,.project-session-plan ul{list-style:none;margin:5px 0 0;padding-left:17px}.project-tree{padding-left:0}.project-node{margin:4px 0;font-size:12px}.project-node-line{display:flex;gap:7px;align-items:baseline}.project-node.in_progress>.project-node-line{color:var(--s3)}.project-node.completed,.project-node.cancelled,.project-node.collapsed{color:var(--muted)}.project-mark{width:12px;flex:none;text-align:center}.project-verify{color:var(--muted);font-size:11px;margin:3px 0 0 19px}.project-session-wrap,.task-card-wrap{margin:5px 0 6px 19px}.project-session-plan{border-left:1px solid var(--hairline);margin:5px 0 0 8px;padding-left:8px;font-size:11px}.project-session-plan .project-source{margin-left:0}.project-last-good{opacity:.72;border-radius:8px;padding:8px}html.island,html.island body{background:transparent}html.island body{padding:8px 0 12px;overflow:hidden}html.island #app{display:flex;flex-direction:column;width:100%;height:calc(100vh - 20px)}html.island[data-island-edge=bottom] #app{justify-content:flex-end}html.island[data-island-edge=left] .wrap{align-items:flex-start;padding-left:8px}html.island[data-island-edge=right] .wrap{align-items:flex-end;padding-right:8px}html.island-compact body{padding:8px 0}html.island-compact #app{height:calc(100vh - 16px)}html.island-compact .pill{height:32px;max-width:min(100%,360px);gap:8px;padding:0 12px;cursor:default}html.island-compact .pill:hover{transform:none}html.island-tab-mode body{padding:0}html.island-tab-mode #app{height:100vh}.island-tab{width:6px;height:64px;border:0;border-radius:3px;padding:0;flex:none;cursor:pointer;background:var(--muted);opacity:.6}.island-tab.live{background:var(--s3);opacity:1}.island-tab.wait{background:var(--warn);opacity:1}.island-tab.pulse{animation:pulse 1.2s 1}.island-tab:focus-visible{outline:1px solid var(--ink);outline-offset:-1px}html.island .open .panel{height:calc(100vh - 20px);overflow-y:auto}html.island .scrim{border-radius:20px}.return-target-options{display:flex;flex-wrap:wrap;gap:6px}.return-target-option.act{color:var(--s1);border-color:var(--s1);background:var(--surface)}.return-target-option:hover,.return-settings-dismiss:hover{color:var(--ink)}.return-target-option:focus-visible,.return-settings-dismiss:focus-visible{outline:2px solid var(--s1);outline-offset:2px}.return-target-option:disabled{opacity:.6;cursor:default}[data-expand-text]{display:-webkit-box;min-width:0;max-width:100%;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere}[data-expand-text][data-expanded=true]{-webkit-line-clamp:unset;white-space:normal;overflow:visible}.ask-line>[data-expand-text],.wfgoal>[data-expand-text],.wflead>[data-expand-text]{flex:1}.expand{border:0;background:transparent;color:var(--s1);cursor:pointer;font:inherit;font-size:11px;padding:2px 4px}.expand[hidden]{display:none}.expand:focus-visible{outline:2px solid var(--s1);outline-offset:2px}.protocol-banner{display:flex;align-items:center;flex-wrap:wrap;gap:8px;border-color:var(--hairline);color:var(--ink2);font-size:var(--fs-3)}.protocol-banner small{color:var(--muted);font-size:var(--fs-3)}.protocol-banner.highlighted{outline:2px solid var(--ink2);outline-offset:2px}.taskflow .task-status{color:var(--ink2);border-color:var(--hairline)}.panel:has(.taskflow) .head .dot,.panel:has(.taskflow) .schip .sdot{background:var(--muted)}.panel:has(.taskflow) .schip .snew,.panel:has(.taskflow) .head .badge{color:var(--muted);border-color:var(--muted)}.panel:has(.taskflow) .vtab.act{border-bottom-color:var(--muted)}.ask-box .task-return-result{font-size:var(--fs-3)}.taskflow .mk,.taskflow .ag,.taskflow .expand,.taskflow .mockchip,.taskflow .failchip,.taskflow .trs.bad .cmd,.taskflow .tr.waitrow .trlabel,.taskflow .task-error{color:var(--ink2)}.taskflow .box .muted,.taskflow .fold .muted{color:var(--muted)}.taskflow .tr .ic{background:var(--muted)}.taskflow .mockchip,.taskflow .ag,.taskflow .failchip,.taskflow .project-crumb:hover,.taskflow .project-protocol-copy:hover,.protocol-banner .project-protocol-copy:hover{border-color:var(--muted)}.taskflow .cfgnote,.taskflow .ag,.taskflow .mockchip,.taskflow .task-error,.taskflow .statechip,.taskflow .mk,.taskflow .tr,.taskflow .tr .dur,.taskflow .trs,.taskflow .trs .cmd,.taskflow .trs .dur,.taskflow .failchip,.taskflow .expand,.taskflow .livenone,.taskflow .project-crumb,.taskflow .project-protocol-copy,.taskflow .project-protocol-note{font-size:var(--fs-3)}.taskflow button:focus-visible,.taskflow summary:focus-visible,.protocol-banner button:focus-visible,.protocol-foot button:focus-visible{outline:2px solid var(--ink2);outline-offset:3px}.lang{font-size:12px;color:inherit;background:transparent;border:0}.project-card.compact>.task-error,.project-card.compact>.project-error{flex-basis:100%}
1
+ :root{color-scheme:dark;--page: #0d0d0d;--surface: #1a1a19;--pill: #050505;--ink: #ffffff;--ink2: #c3c2b7;--muted: #898781;--hairline: rgba(255, 255, 255, .1);--grid: #2c2c2a;--s1: #3987e5;--s2: #d95926;--s3: #199e70;--s4: #c98500;--s5: #d55181;--warn: #fab219;--bad: #e5534b;--fs-1: 18px;--fs-2: 14px;--fs-3: 12px}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--page);color:var(--ink);font-family:system-ui,-apple-system,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:28px 16px 48px}.wrap{display:flex;width:100%;max-width:100%;min-width:0;flex-direction:column;align-items:center}.pill{display:flex;max-width:min(100%,640px);min-width:0;align-items:center;gap:10px;background:var(--pill);border:1px solid var(--hairline);border-radius:999px;padding:10px 18px;cursor:pointer;-webkit-user-select:none;user-select:none;box-shadow:0 8px 30px #0000008c;transition:transform .15s ease}.pill:hover{transform:scale(1.03)}.dot{width:8px;height:8px;border-radius:50%;background:var(--s1);animation:pulse 1.6s infinite;flex:none}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.dot.quiet{animation:none;background:var(--muted);opacity:.6}.dot.live{background:var(--s3);box-shadow:0 0 8px #199e70cc}.pill .t1{font-size:13px;font-weight:600;flex:none}.pill .t2{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:var(--ink2)}.pill .chev{color:var(--muted);font-size:11px;flex:none}.dot.wait{background:var(--warn);box-shadow:0 0 8px #fab219cc;animation:pulse 1.2s infinite}.pill.waiting{border-color:#fab2198c}.pill.waiting .t2{color:var(--warn)}.panel{display:none;width:min(700px,94vw);background:var(--surface);border:1px solid var(--hairline);border-radius:20px;padding:20px 22px 16px;box-shadow:0 18px 60px #0009;transform-origin:top center}.open .panel{display:block;animation:drop .22s ease}.open .pill{display:none}.panel-region{display:contents}@keyframes drop{0%{opacity:0;transform:scale(.92) translateY(-8px)}to{opacity:1;transform:none}}.head{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}.head .title{font-size:15px;font-weight:700}.head .meta{font-size:12px;color:var(--muted)}.badge{font-size:10px;letter-spacing:.1em;color:var(--warn);border:1px solid var(--warn);border-radius:4px;padding:2px 6px}.collapse{margin-left:auto;background:none;border:1px solid var(--hairline);color:var(--ink2);border-radius:8px;padding:4px 10px;font-size:12px;cursor:pointer}.collapse:hover{border-color:var(--muted)}.tabs{display:flex;gap:4px;background:var(--pill);border:1px solid var(--hairline);border-radius:10px;padding:3px;width:max-content;margin-bottom:6px}.tab{border:none;background:none;color:var(--muted);font-size:12.5px;padding:5px 14px;border-radius:8px;cursor:pointer;font-family:inherit}.tab.act{background:var(--surface);color:var(--ink);font-weight:600;border:1px solid var(--hairline)}.tabnum{display:inline-block;margin-left:6px;min-width:16px;text-align:center;font-size:10px;color:var(--ink2);background:var(--grid);border-radius:999px;padding:0 4px;font-variant-numeric:tabular-nums}.now{background:var(--pill);border:1px solid var(--hairline);border-radius:12px;padding:10px 14px;margin:8px 0 10px}.now .ntask{font-size:14px;font-weight:700;display:flex;align-items:center;gap:8px}.now .ntask .muted{color:var(--muted);font-weight:400}.now .ndoing{font-size:12px;color:var(--ink2);margin-top:5px}.now .ndoing b{color:var(--ink);font-weight:600}.now .nquote{font-size:11.5px;color:var(--muted);margin-top:5px;line-height:1.6}.now .nwait{font-size:12px;color:var(--warn);border:1px solid rgba(250,178,25,.55);border-radius:8px;padding:5px 9px;margin-bottom:8px;animation:pulse 1.2s infinite}.taskflow{margin:8px 0 10px;font-size:var(--fs-2);line-height:1.55}.box{background:var(--pill);border:1px solid var(--hairline);border-radius:12px;padding:12px}.box+.box,.ask-line+.box,.fold{margin-top:16px}.box>*+*{margin-top:8px}.ask-box.active{border-color:var(--warn);color:var(--warn)}.ask-text{font-size:var(--fs-2);font-weight:650}.ask-meta{display:flex;align-items:center;flex-wrap:wrap;gap:6px 8px;font-size:var(--fs-3)}.ask-generic{font-size:var(--fs-3)}.ask-meta button{margin-left:auto;border:1px solid currentColor;border-radius:8px;background:transparent;color:inherit;cursor:pointer;font:inherit;padding:4px 8px}.ask-line{display:flex;align-items:baseline;gap:8px;color:var(--muted);font-size:var(--fs-3)}.wfheading{display:flex;align-items:baseline;gap:12px}.wfheading :where(.wftitle){flex:1;min-width:0}.wfheading :where(.task-status){flex-shrink:0}.wftitle{font-size:var(--fs-1);font-weight:650}.wfgoal,.wflead{display:flex;align-items:baseline;gap:8px;color:var(--ink2)}.wfsteps[data-expanded=false]{max-height:3.1em;-webkit-line-clamp:unset}.wfsteps[data-expanded=true]{max-height:none}.wflabel{display:inline-block;margin-right:8px;color:var(--muted);font-size:var(--fs-3);flex:none}.wfsource{color:var(--muted);font-size:var(--fs-3)}.wfsteps{margin-top:5px}.wfstep{display:flex;gap:7px;align-items:baseline}.wfstep.completed{color:var(--muted)}.wfstep.in_progress{font-weight:600}.wfrecent{display:flex;flex-wrap:wrap;gap:4px 8px}.wfrecent-step{color:var(--ink2)}.wfproject,.wfproject-details{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 6px;color:var(--ink2)}.wfcurrent{display:flex;align-items:baseline;min-width:0;gap:6px}.wfproject-node{padding:1px 7px}.wfproject-link{border:1px solid var(--hairline);border-radius:999px;background:transparent;color:var(--ink2);cursor:pointer;font:inherit;font-size:var(--fs-3);padding:2px 8px}.wfverify{display:flex;align-items:center;flex-wrap:wrap;gap:6px;color:var(--ink2)}.wfverify-sep{color:var(--muted)}.wfverify-action{border:1px solid var(--hairline);border-radius:999px;background:transparent;color:var(--ink2);cursor:pointer;font:inherit;font-size:var(--fs-3);padding:2px 8px}.wfverify-error{margin-top:5px}.fold>summary{display:flex;align-items:baseline;gap:8px;cursor:pointer;list-style:none}.fold>summary::-webkit-details-marker{display:none}.fold>summary:before{content:"▸";color:var(--muted);font-size:var(--fs-3);flex:none}.fold[open]>summary:before{content:"▾"}.fold>summary .wflabel{min-width:5em;margin-right:0}.fold-summary{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink2);font-size:var(--fs-2)}.fold-body{margin-top:8px;padding:8px 12px;border-left:1px solid var(--hairline);color:var(--ink2);overflow-wrap:anywhere}.protocol-foot{margin-top:16px;color:var(--muted);font-size:var(--fs-3)}.protocol-foot button{margin-left:8px;border:0;padding:0;background:transparent;color:inherit;font:inherit;text-decoration:underline;cursor:pointer}.evidencegroup+.evidencegroup{margin-top:6px}.vtabs{display:flex;gap:22px;border-bottom:1px solid var(--grid);margin-bottom:4px}.vtab{background:none;border:none;font-family:inherit;font-size:13px;color:var(--muted);padding:8px 2px;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}.vtab.act{color:var(--ink);font-weight:700;border-bottom-color:var(--s1)}.vtab .vcnt{font-size:11px;color:var(--muted);font-weight:400;font-variant-numeric:tabular-nums}.pane{display:none}.pane.act{display:block}.td{padding:8px 0;border-top:1px dashed var(--grid);font-size:13px}.td:first-child{border-top:none}.tdr{display:flex;align-items:center;gap:9px}.tdr[data-act]{cursor:pointer}.mk{width:16px;flex:none;text-align:center;font-size:12px;color:var(--s3)}.mk.doing{color:var(--s1)}.td .tdc{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.td.done .tdr{color:var(--muted)}.td.done .tdc{text-decoration:line-through}.td.todo .tdr{color:var(--muted)}.td .tdc b{font-weight:700}.ag{font-size:10px;color:var(--s1);border:1px solid rgba(57,135,229,.5);border-radius:999px;padding:0 8px;flex:none}.loc{margin-left:auto;flex:none;font-size:10.5px;font-family:inherit;color:var(--ink2);background:none;border:1px solid var(--grid);border-radius:7px;padding:2px 8px;cursor:pointer}.loc:hover{border-color:var(--muted)}.trace{margin:8px 0 2px 24px;border-left:2px solid var(--grid);padding-left:14px}.tr{display:flex;align-items:center;gap:8px;padding:5px 0;font-size:12px;color:var(--ink2);cursor:pointer}.tr .ic{width:8px;height:8px;border-radius:50%;background:var(--s3);flex:none;margin-left:-19px;border:2px solid var(--surface)}.tr.bad .ic{background:var(--bad)}.tr.run .ic{background:var(--s1)}.tr .trlabel{flex:none}.tr .dur,.trs .dur{margin-left:auto;color:var(--muted);font-size:10.5px;font-variant-numeric:tabular-nums;flex:none;white-space:nowrap}.failchip{font-size:10px;color:var(--bad);border:1px solid var(--bad);border-radius:999px;padding:0 7px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.steps{margin-left:6px;padding:2px 0 4px}.trs{display:flex;align-items:center;gap:8px;padding:3px 0;font-size:11.5px;color:var(--muted)}.trs .cmd{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:11px;color:var(--ink2);flex:none}.trs .sdetail{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trs.bad .cmd{color:var(--bad)}.rawsec .rawhead{background:none;border:none;font-family:inherit;font-size:11px;letter-spacing:.14em;color:var(--muted);padding:0;cursor:pointer}.rawsec .rawhead:hover{color:var(--ink2)}.rawsec .rawbody{display:none}.rawsec .rawbody.open{display:block;margin-top:8px}.ubox{max-height:220px;overflow-y:auto;border:1px solid var(--grid);border-radius:8px;padding:2px 10px}.urow{display:flex;align-items:center;gap:8px;padding:5px 0;font-size:11.5px;border-top:1px dashed var(--grid);color:var(--ink2)}.urow:first-child{border-top:none}.urow .utime{color:var(--muted);font-size:10.5px;font-variant-numeric:tabular-nums;flex:none}.urow .unums{color:var(--muted);font-variant-numeric:tabular-nums;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.urow .utot{margin-left:auto;color:var(--ink);font-variant-numeric:tabular-nums;flex:none}.urow .ucost{color:var(--s3);font-variant-numeric:tabular-nums;flex:none}.sessions-empty,.session-notice{margin-top:8px;padding:7px 10px;border:1px solid var(--grid);border-radius:6px;color:var(--ink2);font-size:11px}.session-notice{display:flex;gap:8px;cursor:pointer}.session-notice-close{margin-left:auto;color:var(--ink3)}.session-chip-group{margin-top:8px}.old-sessions{margin:6px 0}.schips{display:flex;flex-wrap:wrap;gap:6px;padding:8px 0 2px}.schip{display:inline-flex;align-items:center;gap:5px;background:none;border:1px solid var(--grid);border-radius:999px;padding:2px 10px;font-family:inherit;font-size:11px;color:var(--ink2);cursor:pointer}.schip:hover{border-color:var(--ink2)}.schip.act{color:var(--ink);border-color:var(--ink2);font-weight:600}.schip.ended{opacity:.55}.schip .sdot{width:6px;height:6px;border-radius:50%;background:var(--s1);flex:none}.schip .sdot.wait{background:var(--warn);animation:pulse 1.2s infinite}.schip .snew{padding:0 5px;border:1px solid var(--s1);border-radius:999px;color:var(--s1);font-size:9px;font-weight:700}.feedbacksignal{margin:8px 0 2px;border:1px solid rgba(250,178,25,.4);border-radius:8px;padding:5px 9px;color:var(--warn);font-size:12px}.suggslot:empty{display:none}.suggslot{border-top:1px solid var(--grid);padding:8px 0 2px}.sugg{display:flex;align-items:center;gap:8px;padding:5px 0;font-size:12px;color:var(--ink2)}.sugg .sugtext{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sugg.r-waiting-timeout .sugtext{color:var(--warn)}.sugg .sugbtn,.sugg .sugdismiss{background:none;border:1px solid var(--grid);border-radius:6px;padding:1px 8px;font-family:inherit;font-size:11px;color:var(--ink2);cursor:pointer;flex:none}.sugg .sugbtn{color:var(--ink);border-color:var(--ink2);margin-left:auto}.sugg .sugbtn:hover{background:var(--grid)}.sugg .sugdismiss{color:var(--muted)}.sugg .sugbtn+.sugdismiss{margin-left:0}.sugg .sugdismiss:only-of-type{margin-left:auto}.sugg .sugdismiss:hover{color:var(--ink2)}.tr.waitrow{cursor:default}.tr.waitrow .trlabel{color:var(--warn)}.sec{border-top:1px solid var(--grid);padding:13px 0}.sec.first{border-top:none;padding-top:2px}.sec .label{font-size:11px;letter-spacing:.14em;color:var(--muted);margin-bottom:8px;display:flex;align-items:center;gap:8px}.tier{font-size:10px;letter-spacing:0;color:var(--ink2);border:1px solid var(--grid);border-radius:999px;padding:1px 8px;font-weight:400}.sec .headline{font-size:13px;color:var(--ink2);margin-bottom:10px}.sec .headline b{color:var(--ink);font-weight:700}.stack{display:flex;height:16px;margin-bottom:10px}.seg{margin-right:2px;cursor:default}.seg:last-child{margin-right:0}.seg:first-child{border-radius:4px 0 0 4px}.seg:last-child{border-radius:0 4px 4px 0}.seg:hover{filter:brightness(1.18)}.legend{display:grid;grid-template-columns:1fr 1fr;gap:5px 18px}@media(max-width:560px){.legend{grid-template-columns:1fr}}.lrow{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink2);min-width:0}.sw{width:10px;height:10px;border-radius:3px;flex:none}.lrow .nat,.gtitle .nat{font-size:10.5px;color:var(--muted);border:1px solid var(--grid);border-radius:4px;padding:0 5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lrow .v{margin-left:auto;color:var(--ink);font-variant-numeric:tabular-nums;flex:none}.lrow .cnt{color:var(--muted);font-size:10.5px;flex:none}.lrow.na,.lrow.na .v{color:var(--muted)}.grp{margin-bottom:10px}.grp:last-child{margin-bottom:0}.gtitle{font-size:11.5px;color:var(--muted);margin-bottom:4px;display:flex;align-items:center;gap:7px}.gdot{width:8px;height:8px;border-radius:2px;flex:none}.crow{display:flex;align-items:center;gap:10px;padding:6px 0;font-size:12.5px;border-top:1px dashed var(--grid)}.cname{color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.offrow .cname{color:var(--muted)}.chip{font-size:10px;color:var(--muted);border:1px solid var(--grid);border-radius:999px;padding:1px 7px;flex:none}.statechip{font-size:10px;border-radius:999px;padding:1px 7px;flex:none}.statechip.off{color:var(--warn);border:1px solid var(--warn)}.statechip.invocation:not(.off){color:var(--s3);border:1px solid var(--grid)}.statechip.nofile{color:var(--muted);border:1px dashed var(--grid)}.ctok{margin-left:auto;color:var(--muted);font-size:11.5px;font-variant-numeric:tabular-nums;flex:none}.crow.emptyrow{color:var(--muted);font-size:12px}.livenone{font-size:12.5px;color:var(--muted);border:1px dashed var(--grid);border-radius:8px;padding:10px 12px;margin-bottom:8px;line-height:1.7}.livenone:last-child{margin-bottom:0}.livenone code{color:var(--ink2);background:var(--pill);border:1px solid var(--grid);border-radius:4px;padding:1px 5px}.tier.none{color:var(--muted);border-style:dashed}.conn{font-size:10px;letter-spacing:0;font-weight:400;border-radius:999px;padding:1px 8px;border:1px solid var(--grid);color:var(--muted)}.conn.open{color:var(--s3);border-color:var(--s3)}.conn.retrying{color:var(--warn);border-color:var(--warn)}.conn.replay{color:var(--warn);border-style:dashed}.demobtn{margin-left:auto;background:none;border:1px dashed var(--warn);color:var(--warn);border-radius:6px;padding:2px 8px;font-size:10.5px;letter-spacing:0;cursor:pointer;font-family:inherit}.demobtn:hover:not(:disabled){border-style:solid}.demobtn:disabled{opacity:.5;cursor:default}.feed{max-height:240px;overflow-y:auto;border:1px solid var(--grid);border-radius:8px;padding:2px 10px}.lvrow{display:flex;align-items:center;gap:8px;padding:5px 0;font-size:12px;border-top:1px dashed var(--grid)}.lvrow:first-child{border-top:none}.lvtime{color:var(--muted);font-size:11px;font-variant-numeric:tabular-nums;flex:none}.lvname{color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lvrow.own .lvname{font-weight:600}.lvrow.other{opacity:.45}.lvharness{margin-left:auto;font-size:10px;color:var(--muted);border:1px solid var(--grid);border-radius:4px;padding:0 5px;flex:none}.lvrow.own .lvharness{color:var(--ink2);border-color:var(--hairline)}.mockchip{font-size:9px;letter-spacing:.08em;color:var(--warn);border:1px solid var(--warn);border-radius:4px;padding:0 4px;flex:none}.labr{margin-left:auto;display:flex;align-items:center;gap:8px}.sharelink{background:none;border:1px solid var(--grid);color:var(--muted);border-radius:6px;padding:2px 8px;font-size:10.5px;letter-spacing:0;cursor:pointer;font-family:inherit}.sharelink:hover{color:var(--ink2);border-color:var(--muted)}.sharebox{max-height:320px;overflow:auto;border:1px solid var(--grid);border-radius:8px;background:var(--pill);padding:6px 8px;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:11px;line-height:1.5}.shline{display:flex;gap:7px;align-items:flex-start;padding:1px 0}.shdel{flex:none;background:none;border:1px solid var(--grid);color:var(--muted);border-radius:4px;font-size:9px;line-height:1.3;padding:0 4px;margin-top:1px;cursor:pointer}.shdel:hover{color:var(--s2);border-color:var(--s2)}.shtext{color:var(--ink2);white-space:pre-wrap;word-break:break-all}.btn:disabled{opacity:.45;cursor:default}.btn:disabled:hover{filter:none}.empty-state{display:flex;flex-direction:column;align-items:center}.empty-card{width:min(460px,94vw);background:var(--surface);border:1px solid var(--hairline);border-radius:16px;padding:28px 26px;text-align:center}.empty-title{font-size:15px;font-weight:700;margin-bottom:8px}.empty-detail{font-size:12px;color:var(--warn);margin-bottom:8px;word-break:break-all}.empty-hint{font-size:12.5px;color:var(--muted);line-height:1.7}.empty-hint code{color:var(--ink2);background:var(--pill);border:1px solid var(--grid);border-radius:4px;padding:1px 5px}#tip{position:fixed;display:none;pointer-events:none;z-index:9;background:#050505;border:1px solid var(--hairline);border-radius:8px;padding:6px 10px;font-size:12px;color:var(--ink);max-width:300px;box-shadow:0 8px 24px #00000080;white-space:pre-line;line-height:1.5}.toggle{width:30px;height:17px;border-radius:999px;background:var(--grid);position:relative;cursor:pointer;flex:none;transition:background .15s;border:none;padding:0}.toggle:after{content:"";position:absolute;top:2px;left:2px;width:13px;height:13px;border-radius:50%;background:var(--ink2);transition:left .15s}.toggle.on{background:var(--s1)}.toggle.on:after{left:15px;background:#fff}.cc-feature{flex-wrap:wrap}.cc-feature .cname{flex:1;min-width:140px}.cc-warning{color:var(--muted);margin-left:6px}.cc-status{flex-basis:100%;font-size:11px;color:var(--muted)}.cc-status.blocked{color:var(--warn)}.cc-segments{display:inline-flex;border:1px solid var(--grid);border-radius:6px;overflow:hidden}.cc-segments button{padding:4px 7px;font:inherit;font-size:11px;color:var(--muted);background:none;border:none;cursor:pointer}.cc-segments button+button{border-left:1px solid var(--grid)}.cc-segments button[aria-pressed=true]{background:var(--s1);color:#fff}.cc-feature button:disabled{opacity:.45;cursor:not-allowed}.cc-disable-all{padding:3px 7px;font-size:11px}.cright{display:flex;align-items:center;gap:8px;flex:none}.cfgnote{font-size:11px;color:var(--muted);padding:5px 0 2px;border-top:1px dashed var(--grid);line-height:1.6}.licbar{display:block;width:100%;text-align:left;font-size:12px;font-family:inherit;color:var(--warn);background:none;border:1px solid var(--warn);border-radius:8px;padding:6px 10px;margin-bottom:10px;cursor:pointer}.licbar.expired{color:var(--s2);border-color:var(--s2)}.licbar:hover{filter:brightness(1.12)}.licrow{display:flex;align-items:stretch;gap:8px;margin-bottom:10px}.licrow .licbar{flex:1;margin-bottom:0}.licimport{flex:none;font-size:11px;font-family:inherit;color:var(--muted);background:none;border:1px solid var(--grid);border-radius:8px;padding:6px 10px;cursor:pointer}.licimport:hover{color:var(--ink2);border-color:var(--muted)}.licfoot{margin-top:12px;text-align:center}.licfootlink{font-size:11px;font-family:inherit;color:var(--muted);background:none;border:none;padding:2px 4px;cursor:pointer;text-decoration:underline;text-decoration-color:var(--grid);text-underline-offset:3px}.licfootlink:hover{color:var(--ink2)}.feedbackfoot{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;padding:0 18px 16px;color:var(--muted);font-size:10.5px;line-height:1.45;text-align:center}.feedbackfoot a{color:var(--ink2);text-underline-offset:2px}.feedbackfoot a:hover{color:var(--ink)}.feedbacklink{font-weight:650}.lictrial{margin:-2px 0 8px;text-align:right}.lictrial .licfootlink{text-decoration:none}#drop{position:fixed;inset:0;z-index:40;display:none;align-items:center;justify-content:center;background:#000000a6;border:2px dashed var(--s1);color:var(--ink);font-size:15px;pointer-events:none}.overlay{position:fixed;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;padding:20px}.scrim{position:absolute;inset:0;background:#0009}.modal{position:relative;width:min(560px,94vw);max-height:86vh;overflow-y:auto;background:var(--surface);border:1px solid var(--hairline);border-radius:16px;padding:16px 18px;box-shadow:0 18px 60px #0009;animation:drop .18s ease}.mhead{display:flex;align-items:center;gap:8px;margin-bottom:10px}.mtitle{font-size:14px;font-weight:700}.mclose{margin-left:auto;background:none;border:1px solid var(--hairline);color:var(--ink2);border-radius:8px;padding:2px 8px;font-size:12px;cursor:pointer}.mclose:hover{border-color:var(--muted)}.mnote{font-size:11px;color:var(--warn);border:1px dashed var(--warn);border-radius:8px;padding:8px 10px;margin-bottom:10px;line-height:1.6}.msec{border-top:1px solid var(--grid);padding:10px 0}.mlabel{font-size:11px;letter-spacing:.1em;color:var(--muted);margin-bottom:6px}.mtext{font-size:12.5px;color:var(--ink2);line-height:1.7;word-break:break-all}.mtext.muted{color:var(--muted)}.mtext code,.mpath{color:var(--ink2);background:var(--pill);border:1px solid var(--grid);border-radius:4px;padding:1px 5px;font-size:11px;word-break:break-all}.mfile{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:12px;flex-wrap:wrap}.mkind{font-size:10px;border-radius:4px;padding:1px 6px;flex:none;border:1px solid var(--grid);color:var(--ink2)}.mkind.create{color:var(--s3);border-color:var(--s3)}.mkind.modify{color:var(--s4);border-color:var(--s4)}.mkind.delete{color:var(--s2);border-color:var(--s2)}.mlines{margin-left:auto;font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums;flex:none}.mref{display:flex;gap:8px;padding:4px 0;font-size:12px;align-items:baseline;flex-wrap:wrap}.mctx{color:var(--muted);font-size:11.5px;line-height:1.5}.merror{font-size:12px;color:var(--warn);border:1px solid var(--warn);border-radius:8px;padding:8px 10px;margin-bottom:8px;white-space:pre-wrap;word-break:break-all}.mact{display:flex;gap:8px;justify-content:flex-end;margin-top:12px}.btn{border-radius:8px;padding:6px 14px;font-size:12.5px;cursor:pointer;font-family:inherit}.btn.ghost{background:none;border:1px solid var(--hairline);color:var(--ink2)}.btn.ghost:hover{border-color:var(--muted)}.btn.primary{background:var(--s1);border:1px solid var(--s1);color:#fff;font-weight:600}.btn.primary:hover{filter:brightness(1.1)}.projects{display:grid;gap:12px;padding:12px 14px 16px}.projects-empty,.project-empty{color:var(--muted);font-size:12px;padding:8px 0}.project-card{border:1px solid var(--hairline);border-radius:12px;padding:12px;background:var(--surface)}.project-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.project-organization{display:flex;align-items:center;gap:6px}.project-organization button{color:var(--muted);background:transparent;border:0;cursor:pointer;font-size:12px;padding:4px}.project-organization button:disabled{opacity:.35;cursor:default}.project-organization button[aria-pressed=true]{color:var(--ink2)}.project-row{display:flex;align-items:center;gap:10px;min-height:36px;cursor:pointer}.project-row-layout{display:flex;align-items:center;gap:12px;overflow-x:auto}.project-row-layout>.project-row{flex:1;min-width:min-content}.project-row-actions{display:flex;flex:none;align-items:center;gap:6px;white-space:nowrap}.project-row>span{white-space:nowrap}.project-row-name{flex:none;font-weight:600}.project-row-goal,.project-row-task{flex:1;width:0;min-width:0;overflow:hidden;text-overflow:ellipsis;color:var(--muted)}.project-row-action{flex:none;min-width:max-content;font-size:12px;border:1px solid var(--hairline);border-radius:4px;padding:3px 6px}.project-row-action[data-kind=ended]{color:var(--muted)}.project-row-action[data-kind=decision],.project-row-action[data-kind=checkpoint]{color:var(--warn)}.project-row:focus-visible{outline:2px solid var(--ink2);outline-offset:4px}.projects-toggle,.project-collapse{color:var(--muted);background:transparent;border:0;font-size:12px;padding:6px 0;cursor:pointer}.project-collapse{display:block;margin-left:auto}.project-progress{display:grid;gap:7px;margin-top:12px;font-size:12px}.project-progress>div{display:flex;align-items:baseline;flex-wrap:wrap;gap:5px}.project-branches{flex:1;min-width:0;display:grid;gap:5px}.project-branch{display:flex;align-items:baseline;gap:5px}.project-branches .fold{margin-top:0}.project-action{margin-top:14px;padding:10px 0;border-block:1px solid var(--hairline);font-size:12px}.project-action[data-kind=decision],.project-action[data-kind=checkpoint]{color:var(--warn)}.project-action-title{font-weight:650}.project-action-title>span{margin-left:6px;font-weight:400}.project-action-item{display:flex;align-items:baseline;flex-wrap:wrap;gap:7px;margin-top:8px}.project-tech{margin-top:14px;color:var(--muted);font-size:11px}.project-tech>summary,.project-plan-help>summary,.project-node-children>summary{cursor:pointer}.project-tech>summary{margin-bottom:7px}.project-node-children>summary{color:var(--muted);font-size:11px}.project-plan-help{margin-top:7px}.project-plan-help pre{white-space:pre-wrap}.project-action button:focus-visible,.project-tech summary:focus-visible,.project-node-children summary:focus-visible{outline:2px solid var(--s1);outline-offset:3px}.project-card.unavailable,.project-last-good{background:color-mix(in srgb,var(--surface) 88%,var(--grid))}.project-card-head{display:flex;justify-content:space-between;gap:12px;align-items:baseline}.project-title{font-size:15px;font-weight:700}.project-source{margin-left:7px;color:var(--muted);font-size:10.5px}.project-branch .project-source{flex:none;white-space:nowrap}.project-presence{color:var(--muted);font-size:11px;margin-top:4px}.project-memory-warning,.anatomy-refresh-warning{color:var(--warn);font-size:11px}.project-memory-warning{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.project-memory-warning button{color:inherit;background:transparent;border:0;cursor:pointer}.project-root,.project-meta,.project-counts,.project-facts{color:var(--muted);font-size:11px;overflow-wrap:anywhere}.project-meta{margin-top:4px}.project-protocols{display:grid;gap:6px;margin-top:8px}.project-protocol-row{display:flex;align-items:center;flex-wrap:wrap;gap:5px}.project-protocol-chip,.project-protocol-copy{border:1px solid var(--hairline);border-radius:999px;color:var(--ink2);font-family:inherit;font-size:10.5px;padding:2px 7px}.project-protocol-chip.plan_present,.project-protocol-chip.session_wrote_plan{border-color:var(--s3);color:var(--s3)}.project-protocol-chip.installed_not_loaded{border-color:var(--warn);color:var(--warn)}.project-protocol-note{color:var(--muted);font-size:10px;overflow-wrap:anywhere}.project-protocol-copy{background:transparent;cursor:pointer;padding-inline:6px}.project-protocol-copy:hover{border-color:var(--s1)}.project-goal,.project-section,.project-counts,.project-facts,.project-complete,.project-l0,.project-error,.project-last-good{margin-top:10px}.project-label{color:var(--ink2);font-size:11px;font-weight:650;margin-right:8px}.project-l0,.project-error{border:1px solid var(--hairline);border-radius:8px;padding:8px 10px;font-size:12px}.project-error{color:var(--warn);border-color:var(--warn)}.project-complete{color:var(--s3);font-size:12px;font-weight:650}.project-points{display:flex;flex-wrap:wrap;gap:6px;margin-top:5px}.project-checkpoints{margin-top:5px}.project-checkpoint{font-size:12px;font-weight:400}.project-crumb{border:1px solid var(--hairline);border-radius:999px;background:transparent;color:var(--ink2);cursor:pointer;font-family:inherit;font-size:11px;padding:3px 8px}.project-crumb:hover{border-color:var(--s1)}.project-node-text,.project-crumb,.project-checkpoint{display:-webkit-box;min-width:0;max-width:100%;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere}.project-node-text{flex:1}.project-facts-group+.project-facts-group{margin-top:4px}.project-facts-toggle{border:0;background:transparent;color:inherit;cursor:pointer;font:inherit;padding:0;text-align:left}.project-facts-items{display:grid;gap:3px;margin:4px 0 0 14px}.task-filters{display:grid;gap:7px;padding:12px 14px 0}.task-filter-group{display:flex;align-items:center;flex-wrap:wrap;gap:5px;color:var(--muted);font-size:10.5px}.task-filter-chip,.task-badge,.task-status{border:1px solid var(--hairline);border-radius:999px;background:transparent;color:var(--ink2);font-family:inherit;font-size:10.5px;padding:2px 7px}.task-filter-chip{cursor:pointer}.task-filter-chip:hover,.task-filter-chip.act{border-color:var(--s1);color:var(--s1)}.task-filter-summary,.task-hidden{color:var(--muted);font-size:11px}.task-filter-summary{padding:7px 14px 0}.task-hidden{margin:5px 0 0 19px}.task-card-list{display:grid;grid-template-columns:minmax(0,1fr);gap:7px;margin-top:6px}.task-card{display:block;width:100%;border:1px solid var(--hairline);border-radius:10px;background:color-mix(in srgb,var(--surface) 94%,var(--grid));color:var(--ink);cursor:pointer;font-family:inherit;padding:9px 38px 9px 10px;text-align:left}.task-card:hover{border-color:var(--s1)}.task-card-head,.task-card-meta{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.task-card-meta{margin-top:7px}.task-title{font-size:12px;font-weight:650;overflow-wrap:anywhere}.task-title-source,.task-progress,.task-activity,.task-context,.task-skills,.task-feedback,.task-checks,.task-accept{color:var(--muted);font-size:10.5px}.task-status.waiting{border-color:var(--warn);color:var(--warn)}.task-status.active,.task-status.complete{border-color:var(--s3);color:var(--s3)}.task-status.ended{color:var(--muted)}.task-feedback,.task-context,.task-skills{display:block;margin-top:6px}.task-feedback{color:var(--warn)}.task-card-wrap{position:relative}.task-menu-button{position:absolute;top:6px;right:7px;width:28px;height:26px;border:1px solid transparent;border-radius:7px;background:transparent;color:var(--muted);cursor:pointer;font:700 17px / 1 inherit}.task-menu-button:hover,.task-menu-button[aria-expanded=true]{border-color:var(--hairline);color:var(--ink)}.task-menu{display:grid;gap:7px;max-width:100%;margin-top:5px;padding:8px;border:1px solid var(--hairline);border-radius:9px;background:color-mix(in srgb,var(--surface) 92%,var(--grid))}.task-menu label{display:grid;grid-template-columns:auto minmax(0,1fr);gap:7px;align-items:center;color:var(--muted);font-size:10.5px}.task-menu input{min-width:0;border:1px solid var(--hairline);border-radius:6px;background:var(--surface);color:var(--ink);font:inherit;padding:5px 7px}.task-menu-actions{display:flex;flex-wrap:wrap;gap:6px}.return-target-option,.return-settings-dismiss,.task-menu-actions button,.task-resume-command button,.task-unhide,.task-hidden-toggle{border:1px solid var(--hairline);border-radius:999px;background:transparent;color:var(--ink2);cursor:pointer;font:inherit;font-size:10.5px;padding:3px 8px}.task-resume-command{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;align-items:center}.task-resume-command code{min-width:0;overflow-wrap:anywhere;white-space:pre-wrap}.task-return-result,.task-resume-note,.task-resume-unavailable,.task-error{grid-column:1 / -1;color:var(--muted);font-size:10.5px;overflow-wrap:anywhere}.task-error{margin-top:5px;color:var(--warn)}.task-pin-mark{color:var(--s1);font-size:10px;font-weight:700}.session-archived{margin-top:8px}.session-archived-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:6px 0}.task-hidden-group{margin-top:6px}.task-hidden-toggle{color:var(--muted)}.project-organization .task-menu-button{position:static}.project-archived{display:grid;gap:8px;margin-top:12px}.project-archived>.task-hidden-toggle{justify-self:start}.project-archived>.project-card,.project-archived>.project-shell{min-width:0}.task-card-hidden{opacity:.58}.task-unhide{margin-top:5px}@media(max-width:560px){.task-menu label{grid-template-columns:1fr}}.project-tree,.project-tree ul,.project-session-plan ul{list-style:none;margin:5px 0 0;padding-left:17px}.project-tree{padding-left:0}.project-node{margin:4px 0;font-size:12px}.project-node-line{display:flex;gap:7px;align-items:baseline}.project-node.in_progress>.project-node-line{color:var(--s3)}.project-node.completed,.project-node.cancelled,.project-node.collapsed{color:var(--muted)}.project-mark{width:12px;flex:none;text-align:center}.project-verify{color:var(--muted);font-size:11px;margin:3px 0 0 19px}.project-session-wrap,.task-card-wrap{margin:5px 0 6px 19px}.project-session-plan{border-left:1px solid var(--hairline);margin:5px 0 0 8px;padding-left:8px;font-size:11px}.project-session-plan .project-source{margin-left:0}.project-last-good{opacity:.72;border-radius:8px;padding:8px}html.island,html.island body{background:transparent}html.island body{padding:8px 0 12px;overflow:hidden}html.island .pill{box-shadow:0 2px 6px #0000008c}html.island .panel{box-shadow:0 2px 6px #0009}html.island #app{display:flex;flex-direction:column;width:100%;height:calc(100vh - 20px)}html.island[data-island-edge=bottom] #app{justify-content:flex-end}html.island[data-island-edge=left] .wrap{align-items:flex-start;padding-left:8px}html.island[data-island-edge=right] .wrap{align-items:flex-end;padding-right:8px}html.island-compact body{padding:8px 0}html.island-compact #app{height:calc(100vh - 16px)}html.island-compact .pill{height:32px;max-width:min(100%,360px);gap:8px;padding:0 12px;cursor:default}html.island-compact .pill:hover{transform:none}html.island-tab-mode body{padding:0}html.island-tab-mode #app{height:100vh}.island-tab{width:6px;height:64px;border:0;border-radius:3px;padding:0;flex:none;cursor:pointer;background:var(--muted);opacity:.6}.island-tab.live{background:var(--s3);opacity:1}.island-tab.wait{background:var(--warn);opacity:1}.island-tab.pulse{animation:pulse 1.2s 1}.island-tab:focus-visible{outline:1px solid var(--ink);outline-offset:-1px}.island-transition-tab{position:fixed;pointer-events:none}html.island[data-island-edge=left] .wrap:not(.open),html.island[data-island-edge=right] .wrap:not(.open){min-height:64px;justify-content:center}html.island .pill.island-edge-left{--island-edge-offset: calc(-100% - 8px) }html.island .pill.island-edge-right{--island-edge-offset: calc(100% + 8px) }html.island .pill.island-reveal{transform:translate(0);opacity:1;transition:transform .2s ease-out,opacity .2s ease-out}html.island .pill.island-retract{transform:translate(var(--island-edge-offset));opacity:0;transition:transform .15s ease-in,opacity .15s ease-in}html.island .pill.island-prepare{transform:translate(var(--island-edge-offset));opacity:0;transition:none}html.island .pill.island-motion-reduced{transform:none;transition:opacity 80ms linear}html.island .pill.island-motion-reduced.island-prepare{transition:none}@media(prefers-reduced-motion:reduce){html.island .pill.island-reveal,html.island .pill.island-retract{transform:none;transition:opacity 80ms linear}html.island .pill.island-prepare{transition:none}}html.island .open .panel{height:calc(100vh - 20px);overflow-y:auto}html.island .scrim{border-radius:20px}.return-target-options{display:flex;flex-wrap:wrap;gap:6px}.return-target-option.act{color:var(--s1);border-color:var(--s1);background:var(--surface)}.return-target-option:hover,.return-settings-dismiss:hover{color:var(--ink)}.return-target-option:focus-visible,.return-settings-dismiss:focus-visible{outline:2px solid var(--s1);outline-offset:2px}.return-target-option:disabled{opacity:.6;cursor:default}[data-expand-text]{display:-webkit-box;min-width:0;max-width:100%;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere}[data-expand-text][data-expanded=true]{-webkit-line-clamp:unset;white-space:normal;overflow:visible}.ask-line>[data-expand-text],.wfgoal>[data-expand-text],.wflead>[data-expand-text]{flex:1}.expand{border:0;background:transparent;color:var(--s1);cursor:pointer;font:inherit;font-size:11px;padding:2px 4px}.expand[hidden]{display:none}.expand:focus-visible{outline:2px solid var(--s1);outline-offset:2px}.protocol-banner{display:flex;align-items:center;flex-wrap:wrap;gap:8px;border-color:var(--hairline);color:var(--ink2);font-size:var(--fs-3)}.protocol-banner small{color:var(--muted);font-size:var(--fs-3)}.protocol-banner.highlighted{outline:2px solid var(--ink2);outline-offset:2px}.taskflow .task-status{color:var(--ink2);border-color:var(--hairline)}.panel:has(.taskflow) .head .dot,.panel:has(.taskflow) .schip .sdot{background:var(--muted)}.panel:has(.taskflow) .schip .snew,.panel:has(.taskflow) .head .badge{color:var(--muted);border-color:var(--muted)}.panel:has(.taskflow) .vtab.act{border-bottom-color:var(--muted)}.ask-box .task-return-result{font-size:var(--fs-3)}.taskflow .mk,.taskflow .ag,.taskflow .expand,.taskflow .mockchip,.taskflow .failchip,.taskflow .trs.bad .cmd,.taskflow .tr.waitrow .trlabel,.taskflow .task-error{color:var(--ink2)}.taskflow .box .muted,.taskflow .fold .muted{color:var(--muted)}.taskflow .tr .ic{background:var(--muted)}.taskflow .mockchip,.taskflow .ag,.taskflow .failchip,.taskflow .project-crumb:hover,.taskflow .project-protocol-copy:hover,.protocol-banner .project-protocol-copy:hover{border-color:var(--muted)}.taskflow .cfgnote,.taskflow .ag,.taskflow .mockchip,.taskflow .task-error,.taskflow .statechip,.taskflow .mk,.taskflow .tr,.taskflow .tr .dur,.taskflow .trs,.taskflow .trs .cmd,.taskflow .trs .dur,.taskflow .failchip,.taskflow .expand,.taskflow .livenone,.taskflow .project-crumb,.taskflow .project-protocol-copy,.taskflow .project-protocol-note{font-size:var(--fs-3)}.taskflow button:focus-visible,.taskflow summary:focus-visible,.protocol-banner button:focus-visible,.protocol-foot button:focus-visible{outline:2px solid var(--ink2);outline-offset:3px}.lang{font-size:12px;color:inherit;background:transparent;border:0}.project-card.compact>.task-error,.project-card.compact>.project-error{flex-basis:100%}