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.
package/apps/cli/dist/main.js
CHANGED
|
@@ -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.
|
|
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
|
-
|
|
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%}
|