@pi-harness/pi-harness 0.1.81 → 0.1.83
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/web/dist/assets/index-C7RpW7Oa.js +29 -0
- package/apps/web/dist/assets/index-CC_tsix-.css +2 -0
- package/apps/web/dist/index.html +2 -2
- package/apps/web/package.json +1 -1
- package/apps/web/src/style.css +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/index.d.ts.map +1 -1
- package/node_modules/@pi-harness/api-gateway/dist/index.js +31 -9
- package/node_modules/@pi-harness/api-gateway/dist/index.js.map +1 -1
- package/node_modules/@pi-harness/api-gateway/package.json +1 -1
- package/node_modules/@pi-harness/cli/package.json +1 -1
- package/node_modules/@pi-harness/host-webserver/package.json +1 -1
- package/node_modules/@pi-harness/web-app/package.json +1 -1
- package/package.json +6 -6
- package/packages/api-gateway/dist/index.d.ts.map +1 -1
- package/packages/api-gateway/dist/index.js +31 -9
- package/packages/api-gateway/dist/index.js.map +1 -1
- package/packages/api-gateway/package.json +1 -1
- package/packages/api-gateway/src/index.ts +31 -10
- package/packages/api-gateway/test/index.test.ts +127 -3
- package/packages/bundle-web-app/package.json +1 -1
- package/packages/cli/package.json +1 -1
- package/packages/host-webserver/package.json +1 -1
- package/apps/web/dist/assets/index-DlUBh7Ct.css +0 -2
- package/apps/web/dist/assets/index-EvIu91Q3.js +0 -29
|
@@ -1782,18 +1782,39 @@ export default {
|
|
|
1782
1782
|
sendJson(response, 405, { error: "Method not allowed" });
|
|
1783
1783
|
return;
|
|
1784
1784
|
}
|
|
1785
|
-
|
|
1786
|
-
sendJson(response, 409, { error: "Another prompt is already running" });
|
|
1787
|
-
return;
|
|
1788
|
-
}
|
|
1789
|
-
busy = true;
|
|
1785
|
+
let ownsBusy = false;
|
|
1790
1786
|
let unsubscribe: (() => void) | undefined;
|
|
1791
1787
|
try {
|
|
1792
|
-
const payload = JSON.parse(await bodyText(request)) as { prompt?: unknown };
|
|
1788
|
+
const payload = JSON.parse(await bodyText(request)) as { prompt?: unknown; streamingBehavior?: unknown };
|
|
1793
1789
|
if (typeof payload.prompt !== "string" || payload.prompt.trim().length === 0) {
|
|
1794
1790
|
sendJson(response, 400, { error: "Prompt must be a non-empty string" });
|
|
1795
1791
|
return;
|
|
1796
1792
|
}
|
|
1793
|
+
if (payload.streamingBehavior !== undefined && payload.streamingBehavior !== "steer" && payload.streamingBehavior !== "followUp") {
|
|
1794
|
+
sendJson(response, 400, { error: 'streamingBehavior must be "steer" or "followUp"' });
|
|
1795
|
+
return;
|
|
1796
|
+
}
|
|
1797
|
+
const streamingBehavior = payload.streamingBehavior;
|
|
1798
|
+
if (services.runtime.session.isStreaming) {
|
|
1799
|
+
if (!streamingBehavior) {
|
|
1800
|
+
sendJson(response, 409, { error: "Another prompt is already running; choose steer or followUp delivery" });
|
|
1801
|
+
return;
|
|
1802
|
+
}
|
|
1803
|
+
await services.runtime.prompt(payload.prompt, { streamingBehavior });
|
|
1804
|
+
sendJson(response, 200, {
|
|
1805
|
+
reply: "",
|
|
1806
|
+
messages: services.runtime.session.messages.length,
|
|
1807
|
+
queued: true,
|
|
1808
|
+
streamingBehavior,
|
|
1809
|
+
});
|
|
1810
|
+
return;
|
|
1811
|
+
}
|
|
1812
|
+
if (busy) {
|
|
1813
|
+
sendJson(response, 409, { error: "Another prompt is already running" });
|
|
1814
|
+
return;
|
|
1815
|
+
}
|
|
1816
|
+
busy = true;
|
|
1817
|
+
ownsBusy = true;
|
|
1797
1818
|
const chunks: string[] = [];
|
|
1798
1819
|
unsubscribe = services.runtime.session.subscribe((event) => {
|
|
1799
1820
|
if (event.type === "message_update" && event.assistantMessageEvent.type === "text_delta") chunks.push(event.assistantMessageEvent.delta);
|
|
@@ -1813,7 +1834,7 @@ export default {
|
|
|
1813
1834
|
sendJson(response, 400, { error: errorText(error) });
|
|
1814
1835
|
} finally {
|
|
1815
1836
|
unsubscribe?.();
|
|
1816
|
-
busy = false;
|
|
1837
|
+
if (ownsBusy) busy = false;
|
|
1817
1838
|
}
|
|
1818
1839
|
},
|
|
1819
1840
|
});
|
|
@@ -1920,7 +1941,7 @@ export default {
|
|
|
1920
1941
|
sendJson(response, 409, { error: "Session switching requires JSONL session storage" });
|
|
1921
1942
|
return;
|
|
1922
1943
|
}
|
|
1923
|
-
const items = await SessionManager.list(services
|
|
1944
|
+
const items = await SessionManager.list(activeCwd(services), manager.getSessionDir());
|
|
1924
1945
|
const target = items.find(
|
|
1925
1946
|
(item) =>
|
|
1926
1947
|
(typeof payload.path === "string" && item.path === payload.path) || (typeof payload.sessionId === "string" && item.id === payload.sessionId),
|
|
@@ -2144,7 +2165,7 @@ export default {
|
|
|
2144
2165
|
sendJson(response, 400, { error: "Invalid session path" });
|
|
2145
2166
|
return;
|
|
2146
2167
|
}
|
|
2147
|
-
const sessions = await SessionManager.list(services
|
|
2168
|
+
const sessions = await SessionManager.list(activeCwd(services), manager.getSessionDir());
|
|
2148
2169
|
const source = sessions.find((item) => item.path === sourcePath);
|
|
2149
2170
|
if (!source) {
|
|
2150
2171
|
sendJson(response, 404, { error: "Session not found" });
|
|
@@ -2262,7 +2283,7 @@ export default {
|
|
|
2262
2283
|
const includeArchived = url.searchParams.get("includeArchived") === "true";
|
|
2263
2284
|
const metadata = await readSessionMetadataLocked(manager, context.logger);
|
|
2264
2285
|
const items =
|
|
2265
|
-
typeof manager.isPersisted === "function" && manager.isPersisted() ? await SessionManager.list(services
|
|
2286
|
+
typeof manager.isPersisted === "function" && manager.isPersisted() ? await SessionManager.list(activeCwd(services), manager.getSessionDir()) : [];
|
|
2266
2287
|
const filtered = items.filter((item) => includeArchived || metadata[item.path]?.archived !== true);
|
|
2267
2288
|
const sorted = filtered.sort(
|
|
2268
2289
|
(a, b) => Number(metadata[b.path]?.pinned === true) - Number(metadata[a.path]?.pinned === true) || b.modified.getTime() - a.modified.getTime(),
|
|
@@ -57,6 +57,8 @@ const contexts: Context[] = [];
|
|
|
57
57
|
const temporaryDirectories: string[] = [];
|
|
58
58
|
const execFile = promisify(execFileCallback);
|
|
59
59
|
const sleep = (ms: number) => new Promise<void>((resolveSleep) => setTimeout(resolveSleep, ms));
|
|
60
|
+
const persistedUserSession = (id: string, cwd: string, text: string) =>
|
|
61
|
+
`${JSON.stringify({ type: "session", version: 3, id, timestamp: new Date().toISOString(), cwd })}\n${JSON.stringify({ type: "message", id: `${id}-message`, parentId: null, timestamp: new Date().toISOString(), message: { role: "user", content: [{ type: "text", text }], timestamp: Date.now() } })}\n`;
|
|
60
62
|
|
|
61
63
|
afterEach(async () => {
|
|
62
64
|
await Promise.all(contexts.splice(0).map(async (context) => context.fiber.dispose()));
|
|
@@ -1688,16 +1690,27 @@ describe("API gateway plugin", () => {
|
|
|
1688
1690
|
});
|
|
1689
1691
|
});
|
|
1690
1692
|
|
|
1691
|
-
test("serializes
|
|
1693
|
+
test("serializes ordinary prompts, accepts steering while streaming, and validates input", async () => {
|
|
1692
1694
|
const context = new Context();
|
|
1693
1695
|
contexts.push(context);
|
|
1694
1696
|
await context.plugin(webServerPlugin, { host: "127.0.0.1", port: 0 });
|
|
1695
|
-
const session = {
|
|
1697
|
+
const session = {
|
|
1698
|
+
messages: [],
|
|
1699
|
+
subscribe: () => () => {},
|
|
1700
|
+
get isStreaming() {
|
|
1701
|
+
return promptStarted;
|
|
1702
|
+
},
|
|
1703
|
+
};
|
|
1696
1704
|
let promptStarted = false;
|
|
1697
1705
|
let releasePrompt: (() => void) | undefined;
|
|
1706
|
+
const queued: Array<{ text: string; streamingBehavior?: string }> = [];
|
|
1698
1707
|
const runtime = {
|
|
1699
1708
|
session,
|
|
1700
|
-
prompt: () => {
|
|
1709
|
+
prompt: (text: string, options?: { streamingBehavior?: string }) => {
|
|
1710
|
+
if (options?.streamingBehavior) {
|
|
1711
|
+
queued.push({ text, streamingBehavior: options.streamingBehavior });
|
|
1712
|
+
return Promise.resolve();
|
|
1713
|
+
}
|
|
1701
1714
|
promptStarted = true;
|
|
1702
1715
|
return new Promise<void>((resolve) => {
|
|
1703
1716
|
releasePrompt = resolve;
|
|
@@ -1722,6 +1735,14 @@ describe("API gateway plugin", () => {
|
|
|
1722
1735
|
body: JSON.stringify({ prompt: "second" }),
|
|
1723
1736
|
}),
|
|
1724
1737
|
).resolves.toMatchObject({ status: 409 });
|
|
1738
|
+
const steering = await fetch(context.webServer.url + "/api/prompt", {
|
|
1739
|
+
method: "POST",
|
|
1740
|
+
headers: { "content-type": "application/json" },
|
|
1741
|
+
body: JSON.stringify({ prompt: "correct course", streamingBehavior: "steer" }),
|
|
1742
|
+
});
|
|
1743
|
+
expect(steering.status).toBe(200);
|
|
1744
|
+
await expect(steering.json()).resolves.toMatchObject({ queued: true, streamingBehavior: "steer" });
|
|
1745
|
+
expect(queued).toEqual([{ text: "correct course", streamingBehavior: "steer" }]);
|
|
1725
1746
|
releasePrompt?.();
|
|
1726
1747
|
await expect(first).resolves.toMatchObject({ status: 200 });
|
|
1727
1748
|
await expect(
|
|
@@ -1964,6 +1985,109 @@ describe("API gateway plugin", () => {
|
|
|
1964
1985
|
expect(resetCount).toBe(1);
|
|
1965
1986
|
});
|
|
1966
1987
|
|
|
1988
|
+
test("lists sessions from the active runtime workspace after a workspace switch", async () => {
|
|
1989
|
+
const context = new Context();
|
|
1990
|
+
contexts.push(context);
|
|
1991
|
+
await context.plugin(webServerPlugin, { host: "127.0.0.1", port: 0 });
|
|
1992
|
+
const directory = await mkdtemp(join(tmpdir(), "pi-harness-api-active-session-list-"));
|
|
1993
|
+
temporaryDirectories.push(directory);
|
|
1994
|
+
const launchCwd = join(directory, "launch");
|
|
1995
|
+
const activeCwd = join(directory, "active");
|
|
1996
|
+
const launchPath = join(directory, "2026-08-30T00-00-00-000Z_launch.jsonl");
|
|
1997
|
+
const activePath = join(directory, "2026-08-30T00-00-01-000Z_active.jsonl");
|
|
1998
|
+
await writeFile(launchPath, persistedUserSession("launch-session", launchCwd, "launch workspace"), "utf8");
|
|
1999
|
+
await writeFile(activePath, persistedUserSession("active-session", activeCwd, "active workspace"), "utf8");
|
|
2000
|
+
const manager = SessionManager.create(activeCwd, directory);
|
|
2001
|
+
const session = { sessionId: "current", sessionFile: undefined, messages: [], isStreaming: false, sessionManager: manager, subscribe: () => () => {} };
|
|
2002
|
+
context.provide("piRuntime", { session, sessionRuntime: { cwd: activeCwd }, prompt: () => Promise.resolve() } as never);
|
|
2003
|
+
context.provide("piModels", { model: { provider: "test", id: "model" } } as never);
|
|
2004
|
+
context.provide("piHarnessLaunch", { cwd: launchCwd, agentDir: directory, args: [], requestExit() {} });
|
|
2005
|
+
await context.plugin(apiPlugin);
|
|
2006
|
+
|
|
2007
|
+
const response = await fetch(context.webServer.url + "/api/sessions");
|
|
2008
|
+
|
|
2009
|
+
expect(response.status).toBe(200);
|
|
2010
|
+
await expect(response.json()).resolves.toMatchObject({ items: [{ sessionId: "active-session", path: activePath }], total: 1 });
|
|
2011
|
+
});
|
|
2012
|
+
|
|
2013
|
+
test("opens a persisted session from the active runtime workspace after a workspace switch", async () => {
|
|
2014
|
+
const context = new Context();
|
|
2015
|
+
contexts.push(context);
|
|
2016
|
+
await context.plugin(webServerPlugin, { host: "127.0.0.1", port: 0 });
|
|
2017
|
+
const directory = await mkdtemp(join(tmpdir(), "pi-harness-api-active-session-open-"));
|
|
2018
|
+
temporaryDirectories.push(directory);
|
|
2019
|
+
const launchCwd = join(directory, "launch");
|
|
2020
|
+
const activeCwd = join(directory, "active");
|
|
2021
|
+
const path = join(directory, "2026-08-30T00-00-00-000Z_active.jsonl");
|
|
2022
|
+
await writeFile(path, persistedUserSession("active-session", activeCwd, "active workspace"), "utf8");
|
|
2023
|
+
const manager = SessionManager.create(activeCwd, directory);
|
|
2024
|
+
let openedPath = "";
|
|
2025
|
+
const session = {
|
|
2026
|
+
get sessionId() {
|
|
2027
|
+
return manager.getSessionId();
|
|
2028
|
+
},
|
|
2029
|
+
get sessionFile() {
|
|
2030
|
+
return manager.getSessionFile();
|
|
2031
|
+
},
|
|
2032
|
+
get messages() {
|
|
2033
|
+
return manager.buildSessionContext().messages;
|
|
2034
|
+
},
|
|
2035
|
+
isStreaming: false,
|
|
2036
|
+
sessionManager: manager,
|
|
2037
|
+
extensionRunner: { setUIContext() {} },
|
|
2038
|
+
subscribe: () => () => {},
|
|
2039
|
+
};
|
|
2040
|
+
const sessionRuntime = {
|
|
2041
|
+
cwd: activeCwd,
|
|
2042
|
+
switchSession(target: string) {
|
|
2043
|
+
openedPath = target;
|
|
2044
|
+
manager.setSessionFile(target);
|
|
2045
|
+
return Promise.resolve({ cancelled: false });
|
|
2046
|
+
},
|
|
2047
|
+
};
|
|
2048
|
+
context.provide("piRuntime", { session, sessionRuntime, prompt: () => Promise.resolve() } as never);
|
|
2049
|
+
context.provide("piModels", { model: { provider: "test", id: "model" } } as never);
|
|
2050
|
+
context.provide("piHarnessLaunch", { cwd: launchCwd, agentDir: directory, args: [], requestExit() {} });
|
|
2051
|
+
await context.plugin(apiPlugin);
|
|
2052
|
+
|
|
2053
|
+
const response = await fetch(context.webServer.url + "/api/session/open", {
|
|
2054
|
+
method: "POST",
|
|
2055
|
+
headers: { "content-type": "application/json" },
|
|
2056
|
+
body: JSON.stringify({ path }),
|
|
2057
|
+
});
|
|
2058
|
+
|
|
2059
|
+
expect(response.status).toBe(200);
|
|
2060
|
+
expect(openedPath).toBe(path);
|
|
2061
|
+
await expect(response.json()).resolves.toMatchObject({ sessionId: "active-session", sessionFile: path, messages: [{ role: "user" }] });
|
|
2062
|
+
});
|
|
2063
|
+
|
|
2064
|
+
test("forks a persisted session from the active runtime workspace after a workspace switch", async () => {
|
|
2065
|
+
const context = new Context();
|
|
2066
|
+
contexts.push(context);
|
|
2067
|
+
await context.plugin(webServerPlugin, { host: "127.0.0.1", port: 0 });
|
|
2068
|
+
const directory = await mkdtemp(join(tmpdir(), "pi-harness-api-active-session-fork-"));
|
|
2069
|
+
temporaryDirectories.push(directory);
|
|
2070
|
+
const launchCwd = join(directory, "launch");
|
|
2071
|
+
const activeCwd = join(directory, "active");
|
|
2072
|
+
const path = join(directory, "2026-08-30T00-00-00-000Z_active.jsonl");
|
|
2073
|
+
await writeFile(path, persistedUserSession("active-session", activeCwd, "active workspace"), "utf8");
|
|
2074
|
+
const manager = SessionManager.create(activeCwd, directory);
|
|
2075
|
+
const session = { sessionId: "current", sessionFile: undefined, messages: [], isStreaming: false, sessionManager: manager, subscribe: () => () => {} };
|
|
2076
|
+
context.provide("piRuntime", { session, sessionRuntime: { cwd: activeCwd }, prompt: () => Promise.resolve() } as never);
|
|
2077
|
+
context.provide("piModels", { model: { provider: "test", id: "model" } } as never);
|
|
2078
|
+
context.provide("piHarnessLaunch", { cwd: launchCwd, agentDir: directory, args: [], requestExit() {} });
|
|
2079
|
+
await context.plugin(apiPlugin);
|
|
2080
|
+
|
|
2081
|
+
const response = await fetch(context.webServer.url + "/api/session/fork", {
|
|
2082
|
+
method: "POST",
|
|
2083
|
+
headers: { "content-type": "application/json" },
|
|
2084
|
+
body: JSON.stringify({ path }),
|
|
2085
|
+
});
|
|
2086
|
+
|
|
2087
|
+
expect(response.status).toBe(200);
|
|
2088
|
+
await expect(response.json()).resolves.toMatchObject({ cwd: activeCwd });
|
|
2089
|
+
});
|
|
2090
|
+
|
|
1967
2091
|
test("opens a persisted session from the session list", async () => {
|
|
1968
2092
|
const context = new Context();
|
|
1969
2093
|
contexts.push(context);
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
|
|
2
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-outline-style:solid}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--font-mono:"JetBrains Mono", "SFMono-Regular", Consolas, monospace;--color-white:#fff;--spacing:.25rem;--container-3xl:48rem;--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-medium:500;--font-weight-semibold:600;--radius-md:.375rem;--radius-lg:.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--animate-pulse-soft:pulse-soft 1.4s ease-in-out infinite;--color-green-soft:#f0fbf4;--color-red-soft:#fff5f5;--color-amber-soft:#fff9ed;--color-surface:#fff;--color-inverse:#fff;--color-ink:#0f1115;--color-muted:#65707b;--color-faint:#687381;--color-line:#0f11151f;--color-soft:#f6f8fa;--color-blue:#3565c5;--color-blue-soft:#edf3fe;--color-green:#14733f;--color-red:#b42318;--color-amber:#754c00;--color-empty:#9aa0a6;--color-starter-border:#0f111524}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.mx-3{margin-inline:calc(var(--spacing) * 3)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mb-1{margin-bottom:var(--spacing)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.ml-1{margin-left:var(--spacing)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-8{height:calc(var(--spacing) * 8)}.h-10{height:calc(var(--spacing) * 10)}.h-fit{height:fit-content}.h-full{height:100%}.max-h-16{max-height:calc(var(--spacing) * 16)}.max-h-28{max-height:calc(var(--spacing) * 28)}.max-h-32{max-height:calc(var(--spacing) * 32)}.max-h-36{max-height:calc(var(--spacing) * 36)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-44{max-height:calc(var(--spacing) * 44)}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-52{max-height:calc(var(--spacing) * 52)}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[32rem\]{max-height:32rem}.max-h-\[40rem\]{max-height:40rem}.min-h-0{min-height:0}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-20{width:calc(var(--spacing) * 20)}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-48{max-width:calc(var(--spacing) * 48)}.max-w-\[65\%\]{max-width:65%}.max-w-\[150px\]{max-width:150px}.max-w-full{max-width:100%}.min-w-0{min-width:0}.flex-1{flex:1}.flex-none{flex:none}.shrink-0{flex-shrink:0}.basis-full{flex-basis:100%}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-\[3rem_minmax\(0\,1fr\)\]{grid-template-columns:3rem minmax(0,1fr)}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.grid-cols-\[auto_minmax\(0\,1fr\)\]{grid-template-columns:auto minmax(0,1fr)}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-y-1{row-gap:var(--spacing)}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-\[\#e3e7ee\]>:not(:last-child)){border-color:#e3e7ee}:where(.divide-\[\#eef0f3\]>:not(:last-child)){border-color:#eef0f3}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\[10px\]{border-radius:10px}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-\[\#7aa2e8\]{border-color:#7aa2e8}.border-\[\#b8ccf5\]{border-color:#b8ccf5}.border-\[\#b9d0ff\]{border-color:#b9d0ff}.border-\[\#b9e6c9\]{border-color:#b9e6c9}.border-\[\#bfe4cb\]{border-color:#bfe4cb}.border-\[\#c9d9f7\]{border-color:#c9d9f7}.border-\[\#cbd8ef\]{border-color:#cbd8ef}.border-\[\#cbdaf6\]{border-color:#cbdaf6}.border-\[\#cdddf8\]{border-color:#cdddf8}.border-\[\#cfe0ff\]{border-color:#cfe0ff}.border-\[\#d9e4f7\]{border-color:#d9e4f7}.border-\[\#dce5f5\]{border-color:#dce5f5}.border-\[\#dde3ec\]{border-color:#dde3ec}.border-\[\#e3eaf8\]{border-color:#e3eaf8}.border-\[\#eef0f3\]{border-color:#eef0f3}.border-\[\#eef1f5\]{border-color:#eef1f5}.border-\[\#f0c8c4\]{border-color:#f0c8c4}.border-\[\#f0d59b\]{border-color:#f0d59b}.border-\[\#f0f2f5\]{border-color:#f0f2f5}.border-\[\#f1d7a8\]{border-color:#f1d7a8}.border-\[\#f1ddb1\]{border-color:#f1ddb1}.border-\[\#f3c4c4\]{border-color:#f3c4c4}.border-\[\#f3dfab\]{border-color:#f3dfab}.border-\[\#f4caca\]{border-color:#f4caca}.border-\[\#f4d8a8\]{border-color:#f4d8a8}.border-\[\#fff0c2\]{border-color:#fff0c2}.border-\[var\(--color-line\)\]{border-color:var(--color-line)}.border-current{border-color:currentColor}.bg-\[\#4c83e8\]{background-color:#4c83e8}.bg-\[\#5d8bea\]{background-color:#5d8bea}.bg-\[\#22a06b\]{background-color:#22a06b}.bg-\[\#22c55e\]{background-color:#22c55e}.bg-\[\#32a35a\]{background-color:#32a35a}.bg-\[\#3565c5\]{background-color:#3565c5}.bg-\[\#111318\]{background-color:#111318}.bg-\[\#a0a7b0\]{background-color:#a0a7b0}.bg-\[\#a0a8b2\]{background-color:#a0a8b2}.bg-\[\#d64545\]{background-color:#d64545}.bg-\[\#d97706\]{background-color:#d97706}.bg-\[\#e0a11a\]{background-color:#e0a11a}.bg-\[\#e6a21a\]{background-color:#e6a21a}.bg-\[\#fff8e7\]{background-color:#fff8e7}.bg-\[var\(--color-amber-soft\)\]{background-color:var(--color-amber-soft)}.bg-\[var\(--color-blue-soft\)\]{background-color:var(--color-blue-soft)}.bg-\[var\(--color-green-soft\)\]{background-color:var(--color-green-soft)}.bg-\[var\(--color-red-soft\)\]{background-color:var(--color-red-soft)}.bg-\[var\(--color-soft\)\]{background-color:var(--color-soft)}.bg-\[var\(--color-surface\)\]{background-color:var(--color-surface)}.bg-\[var\(--color-surface\)\]\/70{background-color:#ffffffb3}@supports (color:color-mix(in lab, red, red)){.bg-\[var\(--color-surface\)\]\/70{background-color:color-mix(in oklab, var(--color-surface) 70%, transparent)}}.bg-current{background-color:currentColor}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-px{padding-block:1px}.pt-1{padding-top:var(--spacing)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pb-7{padding-bottom:calc(var(--spacing) * 7)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-8{padding-left:calc(var(--spacing) * 8)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11\.5px\]{font-size:11.5px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[16px\]{font-size:16px}.text-\[17px\]{font-size:17px}.text-\[20px\]{font-size:20px}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-7{--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[-0\.03em\]{--tw-tracking:-.03em;letter-spacing:-.03em}.tracking-\[0\.1em\]{--tw-tracking:.1em;letter-spacing:.1em}.tracking-\[0\.08em\]{--tw-tracking:.08em;letter-spacing:.08em}.tracking-\[0\.12em\]{--tw-tracking:.12em;letter-spacing:.12em}.tracking-\[0\.14em\]{--tw-tracking:.14em;letter-spacing:.14em}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-normal{white-space:normal}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[\#9ba6b2\]{color:#9ba6b2}.text-\[\#75520b\]{color:#75520b}.text-\[\#e6edf3\]{color:#e6edf3}.text-\[var\(--color-amber\)\]{color:var(--color-amber)}.text-\[var\(--color-blue\)\]{color:var(--color-blue)}.text-\[var\(--color-faint\)\]{color:var(--color-faint)}.text-\[var\(--color-green\)\]{color:var(--color-green)}.text-\[var\(--color-ink\)\]{color:var(--color-ink)}.text-\[var\(--color-muted\)\]{color:var(--color-muted)}.text-\[var\(--color-red\)\]{color:var(--color-red)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow-\[0_8px_24px_rgba\(27\,39\,64\,0\.04\)\]{--tw-shadow:0 8px 24px var(--tw-shadow-color,#1b27400a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-300{--tw-duration:.3s;transition-duration:.3s}.outline-none{--tw-outline-style:none;outline-style:none}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media (hover:hover){.hover\:border-\[\#bdd0f5\]:hover{border-color:#bdd0f5}.hover\:bg-\[var\(--color-soft\)\]:hover{background-color:var(--color-soft)}.hover\:underline:hover{text-decoration-line:underline}}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-\[var\(--color-blue\)\]:focus-visible{outline-color:var(--color-blue)}@media (width>=360px){.min-\[360px\]\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width>=40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}@media (width>=64rem){.lg\:grid-cols-\[minmax\(0\,1fr\)_280px\]{grid-template-columns:minmax(0,1fr) 280px}}@media (width>=80rem){.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@keyframes pulse-soft{50%{opacity:.3}}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0;overflow:hidden}body{color:var(--color-ink);-webkit-font-smoothing:antialiased;background:var(--color-surface);font:13px/1.5 var(--font-sans)}button,input,textarea,select{color:inherit;font:inherit}button{cursor:pointer;background:0 0;border:0}button:focus-visible,summary:focus-visible,a:focus-visible,[role=button]:focus-visible{outline-offset:2px;outline:2px solid #1f23286b}input:focus,textarea:focus,select:focus{outline:none}input:not([type=checkbox]):not([type=radio]):focus-visible,textarea:focus-visible,select:focus-visible{border-color:#4176e685;box-shadow:0 0 0 3px #4176e61a}input[type=checkbox]:focus-visible,input[type=radio]:focus-visible{outline-offset:2px;outline:2px solid #4176e67a}button:disabled{cursor:not-allowed;opacity:.55}[hidden]{display:none!important}.app-frame{width:100%;height:100%;color:var(--color-ink);background:var(--color-surface);display:flex;overflow:hidden}.sidebar{background:var(--color-soft);border-right:1px solid #0000000f;flex-direction:column;flex:0 0 264px;width:264px;min-height:0;display:flex}.brand-row{flex:0 0 48px;align-items:center;gap:9px;height:48px;padding:0 14px;display:flex}.brand-row strong{letter-spacing:-.1px;font-size:13px;font-weight:600}.pi-mark{background:#0f1115;border-radius:6px;flex:none;place-items:center;width:22px;height:22px;display:grid;overflow:hidden}.pi-mark.large{border-radius:11px;width:38px;height:38px}.pi-mark img{object-fit:contain;width:82%;height:82%}.version{color:var(--color-faint);font:10px var(--font-mono);margin-left:auto}.sidebar-actions{flex-direction:column;gap:8px;padding:0 10px 10px;display:flex;position:relative}.new-session{height:32px;color:var(--color-inverse);background:var(--color-ink);border-radius:8px;justify-content:center;align-items:center;gap:6px;font-size:12.5px;font-weight:500;display:flex}.new-session:hover,.send-button:hover{background:var(--color-blue)}.workspace-chooser{z-index:60;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0f172a52;place-items:center;padding:40px;display:grid;position:fixed;inset:0}.workspace-chooser-dialog{background:var(--color-surface);border:1px solid #0f172a24;border-radius:10px;flex-direction:column;gap:2px;width:100%;max-width:640px;max-height:min(680px,100vh - 96px);padding:14px;display:flex;overflow:auto;box-shadow:0 28px 80px #0f172a42}.workspace-chooser-heading{justify-content:space-between;align-items:center;padding:3px 4px 4px 6px;display:flex}.workspace-chooser-heading strong{font-size:12px}.workspace-chooser-heading button{width:24px;height:24px;color:var(--color-muted);border-radius:6px}.workspace-chooser-dialog>small{color:var(--color-faint);padding:0 6px 8px;font-size:10px}.workspace-pick-directory{text-align:left;background:var(--color-surface);border:1px solid var(--color-line);border-radius:8px;justify-content:space-between;align-items:center;padding:9px 8px;display:flex}.workspace-pick-directory:hover{border-color:var(--color-blue);background:var(--color-blue-soft)}.workspace-pick-directory span{font-size:11.5px;font-weight:600}.workspace-pick-directory small{color:var(--color-faint);font-size:10px}.workspace-chooser-divider{color:var(--color-faint);align-items:center;gap:8px;padding:0 6px 5px;font-size:9px;display:flex}.workspace-chooser-divider:before,.workspace-chooser-divider:after{content:"";background:var(--color-line);flex:1;height:1px}.workspace-chooser-empty{color:var(--color-faint);padding:20px 6px;font-size:11px}.workspace-chooser-error{color:var(--color-red);background:var(--color-red-soft);border:1px solid #b91c1c2e;border-radius:7px;margin:0 6px 7px;padding:8px 9px;font-size:10.5px;line-height:1.45}.workspace-chooser-row{text-align:left;border-radius:7px;align-items:center;gap:8px;min-height:48px;padding:7px 6px;display:flex}.workspace-chooser-row:hover{background:var(--color-blue-soft)}.workspace-chooser-row>span:nth-child(2){flex-direction:column;flex:1;min-width:0;display:flex}.workspace-chooser-row strong,.workspace-chooser-row code{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.workspace-chooser-row strong{font-size:11.5px}.workspace-chooser-row code{color:var(--color-faint);font:9px var(--font-mono);margin-top:2px}.workspace-chooser-row>small{color:var(--color-faint);font:9px var(--font-mono);flex:none}.sidebar-actions input{background:var(--color-surface);border:1px solid #0000001a;border-radius:8px;width:100%;height:30px;padding:0 10px;font-size:12px}.sidebar-actions input:focus-visible{border-color:#4176e68c;box-shadow:0 0 0 3px #4176e61f}.sidebar-scroll{flex:1;min-height:0;padding:0 8px 8px;overflow:auto}.session-group{margin-bottom:8px}.group-label{letter-spacing:.04em;color:var(--color-faint);padding:6px 8px 4px;font-size:10px}.session-row{text-align:left;border-radius:8px;align-items:center;gap:7px;width:100%;padding:7px 9px;display:flex}.session-row-wrap{align-items:center;gap:4px;display:flex}.session-row-wrap>input{accent-color:var(--color-blue);margin:0 0 0 6px}.session-list-toolbar{border-bottom:1px solid #0000000f;justify-content:space-between;align-items:center;padding:2px 14px 6px;display:flex}.session-list-title{align-items:baseline;gap:6px;display:flex}.session-list-title strong{font-size:12px;font-weight:600}.session-list-title span{color:var(--color-faint);font:10px var(--font-mono)}.session-list-tools{align-items:center;gap:3px;display:flex}.session-tool-button{height:25px;color:var(--color-muted);border-radius:6px;padding:0 7px;font-size:11px}.session-tool-button:hover,.session-tool-button.active{color:var(--color-blue);background:var(--color-blue-soft)}.session-tool-button.icon{width:26px;padding:0;font-size:15px}.session-tools-wrap{position:relative}.session-tools-popover{z-index:70;background:var(--color-surface);border:1px solid #0000001a;border-radius:9px;flex-direction:column;width:150px;padding:4px;display:flex;position:fixed;box-shadow:0 12px 30px #0f172a29}.session-tools-popover button{text-align:left;border-radius:6px;padding:7px 8px;font-size:11px}.session-tools-popover button:hover{background:var(--color-soft)}.session-row-wrap{position:relative}.session-row-more{pointer-events:none;width:24px;height:24px;color:var(--color-muted);opacity:0;background:var(--color-surface);z-index:1;border-radius:6px;font-size:14px;display:block;position:absolute;right:6px}.session-row-wrap:hover .session-row-more,.session-row-wrap:focus-within .session-row-more,.session-row-more:focus-visible{pointer-events:auto;opacity:1}.session-row-more:hover{color:var(--color-blue);background:var(--color-blue-soft)}.session-row-menu-popover{z-index:70;background:var(--color-surface);border:1px solid #0f172a24;border-radius:8px;flex-direction:column;width:142px;padding:4px;display:flex;position:fixed;box-shadow:0 10px 24px #0f172a2e}.session-row-menu-popover button{text-align:left;border-radius:5px;padding:6px 8px;font-size:11px}.session-row-menu-popover button:hover{background:var(--color-soft)}.session-row-menu-popover button.danger{color:var(--color-red)}.current-session-row .session-row-more{right:4px}.compact-session-menu{width:190px}.session-dialog-backdrop{z-index:80;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0f172a47;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.session-dialog{background:var(--color-surface);border:1px solid #0f172a24;border-radius:10px;width:100%;max-width:380px;box-shadow:0 24px 70px #0f172a38}.session-dialog-header{justify-content:space-between;align-items:flex-start;gap:18px;padding:16px 17px 10px;display:flex}.session-dialog-header strong,.session-dialog-header small{display:block}.session-dialog-header strong{font-size:14px}.session-dialog-header small{color:var(--color-muted);margin-top:4px;font-size:11px;line-height:1.45}.session-dialog-header button{width:24px;height:24px;color:var(--color-muted);border-radius:6px;font-size:17px}.session-dialog-header button:hover{background:var(--color-soft)}.session-dialog-field{flex-direction:column;gap:5px;padding:5px 17px 15px;font-size:11px;font-weight:600;display:flex}.session-dialog-field input{border:1px solid var(--color-line);border-radius:7px;height:34px;padding:0 9px;font-size:12px;font-weight:400}.session-dialog-field input:focus{border-color:var(--color-blue);box-shadow:0 0 0 3px #4176e61f}.session-dialog-target{text-overflow:ellipsis;white-space:nowrap;color:var(--color-muted);background:var(--color-soft);font:11px var(--font-mono);border-radius:7px;margin:5px 17px 15px;padding:9px;overflow:hidden}.session-dialog-actions{border-top:1px solid #0000000f;justify-content:flex-end;gap:7px;padding:11px 17px 15px;display:flex}.session-dialog-actions button{border:1px solid var(--color-line);border-radius:7px;height:30px;padding:0 11px;font-size:11px}.session-dialog-actions button.primary{border-color:var(--color-ink);color:var(--color-inverse);background:var(--color-ink)}.session-dialog-actions button.danger{color:var(--color-red);background:var(--color-red-soft);border-color:#b91c1c33}.config-editor{flex-direction:column;min-height:0;display:flex}.toml-toolbar>div{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.toml-toolbar strong{color:var(--color-ink);font-size:12px}.toml-toolbar span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.config-state{color:var(--color-blue);font:10px var(--font-mono);margin:-3px 0 9px}.config-state.error{color:var(--color-red)}.config-source{resize:vertical;white-space:pre;width:100%;min-height:420px;color:var(--color-ink);background:var(--color-soft);border:1px solid var(--color-line);font:11px/1.7 var(--font-mono);border-radius:10px;margin:0;padding:16px;display:block;overflow:auto}.config-source:focus{border-color:var(--color-blue);box-shadow:0 0 0 3px #4176e61f}.config-source-editor{flex-direction:column;gap:8px;display:flex}.config-source-actions{justify-content:space-between;align-items:center;gap:12px;display:flex}.config-source-actions small{color:var(--color-muted);font-size:10.5px}.config-source-actions button{height:30px;color:var(--color-inverse);background:var(--color-ink);border-radius:7px;flex:none;padding:0 11px;font-size:11px}.config-sections{grid-template-columns:1fr 1fr;gap:12px;display:grid}.config-section{background:var(--color-surface);border:1px solid var(--color-line);border-radius:10px;padding:13px}.config-section:last-child{grid-column:1/-1}.config-section>header{flex-direction:column;gap:2px;margin-bottom:10px;display:flex}.config-section>header strong{font-size:12.5px}.config-section>header small,.config-toggle small{color:var(--color-muted);font-size:10.5px}.config-field{border-bottom:1px solid #0000000d;justify-content:space-between;align-items:center;gap:12px;min-height:35px;font-size:11.5px;display:flex}.config-field:last-child{border-bottom:0}.config-field select{background:var(--color-surface);border:1px solid var(--color-line);border-radius:6px;max-width:65%;padding:5px 7px;font-size:11px}.config-toggle{border-bottom:1px solid #0000000d;justify-content:space-between;align-items:center;gap:14px;padding:7px 0;display:flex}.config-toggle:last-child{border-bottom:0}.config-toggle span{flex-direction:column;gap:2px;display:flex}.config-toggle strong{font-size:11.5px}.config-toggle input{width:16px;height:16px;accent-color:var(--color-blue)}.session-batch-bar,.session-pagination{color:var(--color-muted);align-items:center;gap:7px;padding:7px 12px;font-size:11px;display:flex}.session-batch-bar button,.session-pagination button{background:var(--color-surface);border:1px solid var(--color-line);border-radius:6px;padding:4px 8px;font-size:11px}.session-batch-bar button.danger{color:var(--color-red)}.session-pagination{justify-content:space-between}.session-row:hover{background:var(--color-soft)}.session-row.active{background:var(--color-line)}.session-dot{background:var(--color-blue-soft);border-radius:50%;flex:none;width:6px;height:6px}.session-dot.running{animation:var(--animate-pulse-soft);background:var(--color-green)}.session-dot.ok{background:var(--color-green)}.session-dot.warn{background:var(--color-amber)}.session-dot.error{background:var(--color-red)}.session-copy{flex-direction:column;gap:2px;min-width:0;display:flex}.session-copy strong{text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;font-weight:600;overflow:hidden}.session-copy small{text-overflow:ellipsis;white-space:nowrap;color:var(--color-faint);font:10px var(--font-mono);overflow:hidden}.runtime-cells{color:var(--color-faint);font:9.5px var(--font-mono);border-top:1px solid #0000000f;flex-wrap:wrap;gap:4px 12px;padding:8px 19px 9px;display:flex}.runtime-cells span{gap:5px;display:flex}.runtime-cells b{font-weight:400}.runtime-cells strong{color:var(--color-muted);font-weight:400}.sidebar-footer{border-top:1px solid #0000000f;flex-direction:column;gap:2px;padding:6px 10px 8px;display:flex}.sidebar-link{text-align:left;border-radius:8px;align-items:center;gap:9px;height:30px;padding:0 9px;font-size:12.5px;display:flex}.compact-new-session,.compact-session-search{display:none}.sidebar-link:hover{background:var(--color-soft)}.sidebar-link span:nth-child(2){flex:1}.sidebar-link b{color:var(--color-muted);background:var(--color-line);font-weight:400;font:10px var(--font-mono);border-radius:20px;padding:1px 6px}.link-glyph{color:var(--color-blue);font:11.5px var(--font-mono)}.main-pane{flex-direction:column;flex:1;min-width:0;display:flex}.main-header{border-bottom:1px solid #0000000f;flex:0 0 48px;align-items:center;gap:12px;height:48px;padding:0 24px;display:flex;position:relative}.refresh-warning{min-height:42px;color:var(--color-amber);background:var(--color-amber-soft);border-bottom:1px solid #f3d7aa;flex:none;align-items:center;gap:12px;padding:8px 24px;font-size:11.5px;display:flex}.refresh-warning span{flex:1;min-width:0}.refresh-warning strong{color:var(--color-amber);margin-right:6px}.refresh-warning button{min-height:30px;color:var(--color-amber);background:var(--color-surface);border:1px solid #e8c58c;border-radius:7px;flex:none;padding:4px 10px}.initial-loading{color:var(--color-muted);font:11.5px var(--font-mono);flex:1;justify-content:center;align-items:center;gap:9px;display:flex}.initial-loading>span{border-top-color:var(--color-blue);border:2px solid #d9e2f4;border-radius:50%;width:14px;height:14px;animation:.8s linear infinite control-room-spin}@keyframes control-room-spin{to{transform:rotate(360deg)}}.active-heading{flex-direction:column;min-width:0;display:flex}.active-heading strong,.active-heading small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.active-heading strong{font-size:13px;font-weight:600}.active-heading small{color:var(--color-faint);font:10px var(--font-mono)}.header-spacer{flex:1}.run-indicator{min-width:0;max-width:min(52vw,560px);color:var(--color-muted);background:var(--color-blue-soft);font:10.5px var(--font-mono);border:1px solid #3565c52e;border-radius:8px;flex:none;align-items:center;gap:6px;padding:4px 5px 4px 8px;display:flex}.run-indicator .run-dot{width:6px;height:6px;animation:var(--animate-pulse-soft);background:var(--color-green);border-radius:50%}.run-indicator>span:not(.run-dot){white-space:nowrap}.run-indicator button{color:var(--color-red);background:var(--color-surface);border:1px solid #ec13133d;border-radius:6px;flex:none;padding:2px 8px;font-size:11px}.run-indicator.running .run-dot{background:var(--color-blue)}.run-indicator .run-phase{color:var(--color-ink);font-weight:600}.run-indicator .run-clock{color:var(--color-blue);font-variant-numeric:tabular-nums;background:#ffffffb8;border-radius:4px;padding:1px 5px}.run-indicator .run-activity{text-overflow:ellipsis;min-width:0;color:var(--color-muted);overflow:hidden}.run-indicator.quiet,.run-indicator.connecting,.run-indicator.reconnecting{background:var(--color-amber-soft);border-color:#b4530938}.run-indicator.quiet .run-dot,.run-indicator.connecting .run-dot,.run-indicator.reconnecting .run-dot{background:var(--color-amber)}.run-indicator.quiet .run-clock,.run-indicator.connecting .run-clock,.run-indicator.reconnecting .run-clock{color:var(--color-amber)}.run-indicator.disconnected,.run-indicator.offline{background:var(--color-red-soft);border-color:#ec131338}.run-indicator.disconnected .run-dot,.run-indicator.offline .run-dot{background:var(--color-red);animation:none}.run-indicator.disconnected .run-clock,.run-indicator.offline .run-clock{color:var(--color-red)}.run-indicator button:hover{color:var(--color-inverse);background:var(--color-red)}.run-indicator button:focus-visible{outline:2px solid var(--color-red);outline-offset:2px}.view-tabs{background:var(--color-soft);border-radius:8px;gap:2px;padding:2px;display:flex}.view-tab{white-space:nowrap;color:var(--color-muted);border-radius:6px;padding:4px 11px;font-size:12px}.view-tab.active{color:var(--color-ink);background:var(--color-surface);font-weight:600;box-shadow:0 1px 3px #00000014}.header-divider{background:#00000014;flex:none;width:1px;height:18px}.session-menu,.details-toggle{height:28px;color:var(--color-muted);background:var(--color-surface);border:1px solid #0000001a;border-radius:8px}.session-menu{width:28px;font-size:15px;position:relative}.details-toggle{white-space:nowrap;flex:none;padding:0 9px;font-size:12px}.details-backdrop{display:none}.session-menu:hover,.details-toggle:hover{background:var(--color-soft)}.view-host,.view-panel{flex-direction:column;flex:1;min-height:0;display:flex}.chat-scroll{flex:1;min-height:0;padding:20px 24px 4px;overflow-y:auto}.turn{max-width:748px;margin:0 auto 16px;font-size:13.5px;line-height:1.78}.turn.user{justify-content:flex-end;display:flex}.user-bubble{white-space:pre-wrap;background:var(--color-blue-soft);border-radius:10px;max-width:84%;padding:10px 14px}.pending-turn .user-bubble{opacity:.72}.turn-stopped{color:var(--color-red);font:10.5px var(--font-mono);border:1px solid #ec13133d;border-radius:6px;margin:8px 0 0;padding:1px 7px;display:inline-block}.turn-markdown{min-width:0;margin:0;font-size:13.5px;line-height:1.78}.turn-markdown p{white-space:pre-wrap;margin:0 0 10px}.turn-markdown p:last-child{margin-bottom:0}.turn-markdown h1,.turn-markdown h2,.turn-markdown h3,.turn-markdown h4,.turn-markdown h5,.turn-markdown h6{margin:16px 0 8px;font-weight:600;line-height:1.35}.turn-markdown h1{font-size:20px}.turn-markdown h2{font-size:17px}.turn-markdown h3{font-size:15px}.turn-markdown h4,.turn-markdown h5,.turn-markdown h6{font-size:13.5px}.turn-markdown ul,.turn-markdown ol{margin:0 0 10px;padding-left:22px}.turn-markdown li{padding-left:3px}.turn-markdown blockquote{color:var(--color-muted);border-left:2px solid #d9e2f4;margin:0 0 10px;padding-left:12px}.turn-markdown code{background:var(--color-soft);font:12px var(--font-mono);border-radius:4px;padding:1px 4px}.turn-markdown .markdown-code{white-space:pre;color:#e5e7eb;line-height:1.6;font:12px var(--font-mono);background:#111827;border-radius:8px;margin:0 0 12px;padding:12px 14px;overflow:auto}.turn-markdown .markdown-code code{color:inherit;background:0 0;padding:0}.turn-markdown a{color:var(--color-blue);text-underline-offset:2px;text-decoration:underline}.reasoning-head{color:var(--color-muted);align-items:center;gap:6px;padding:0;font-size:11.5px;display:flex}.reasoning-head .caret{color:var(--color-faint);font-size:9px}.reasoning-body{white-space:pre-wrap;color:var(--color-muted);border-left:2px solid var(--color-line);margin:6px 0 0;padding-left:11px;font-size:12.5px;line-height:1.75;display:none}.reasoning[open] .reasoning-body{display:block}.message-reasoning{margin-bottom:10px}.message-reasoning .reasoning-body{margin-top:6px}.turn-tool{background:var(--color-surface);border:1px solid var(--color-line);border-radius:8px;margin:0 0 10px;overflow:hidden}.turn-tool.failed{background:var(--color-red-soft);border-color:#ec131347}.turn-tool-head{cursor:pointer;color:var(--color-muted);align-items:baseline;gap:8px;padding:7px 10px;font-size:11.5px;display:flex}.turn-tool-head strong{color:var(--color-blue);font:12px var(--font-mono);flex:none}.turn-tool-args{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:11px var(--font-mono);flex:1;overflow:hidden}.turn-tool-status{color:var(--color-faint);flex:none}.turn-tool.failed .turn-tool-status{color:var(--color-red)}.turn-tool-output{word-break:break-word;white-space:pre-wrap;border-top:1px solid var(--color-line);max-height:320px;line-height:1.65;font:11.5px var(--font-mono);margin:0;padding:10px;overflow:auto}.visually-hidden{white-space:nowrap;clip:rect(0,0,0,0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.streaming-placeholder{color:var(--color-muted);align-items:center;gap:8px;font-size:12px;display:flex}.streaming-turn.quiet,.streaming-turn.connecting,.streaming-turn.reconnecting{border-left:2px solid var(--color-amber);padding-left:12px}.streaming-turn.disconnected,.streaming-turn.offline{border-left:2px solid var(--color-red);padding-left:12px}.streaming-activity{width:fit-content;color:var(--color-muted);background:var(--color-soft);font:10.5px var(--font-mono);border-radius:5px;margin-top:8px;padding:3px 7px}.streaming-activity.quiet,.streaming-activity.connecting,.streaming-activity.reconnecting{color:var(--color-amber);background:var(--color-amber-soft)}.streaming-activity.disconnected,.streaming-activity.offline{color:var(--color-red);background:var(--color-red-soft)}@keyframes spin-smooth{to{transform:rotate(360deg)}}@keyframes thinking-dots{0%,20%{content:"."}40%{content:".."}60%,to{content:"..."}}.streaming-spinner{border:1.5px solid var(--color-line);border-top-color:var(--color-muted);border-radius:50%;width:12px;height:12px;animation:.8s linear infinite spin-smooth;display:inline-block}.reasoning-head:after{content:"...";min-width:1.5em;animation:1.5s step-end infinite thinking-dots;display:inline-block}.streaming-elapsed{background:var(--color-soft);color:var(--color-faint);font-variant-numeric:tabular-nums;border-radius:4px;align-items:center;margin-left:8px;padding:1px 6px;font-size:10px;display:inline-flex}.streaming-timeout-warning{color:#856404;background:#fef3cd;border:1px solid #ffc107;border-radius:6px;align-items:center;gap:8px;margin-top:8px;padding:6px 10px;font-size:12px;display:flex}.streaming-timeout-warning button{color:#856404;cursor:pointer;background:0 0;border:1px solid #856404;border-radius:4px;flex:none;padding:2px 10px;font-size:11px}.streaming-timeout-warning button:hover{color:#fff;background:#856404}.workspace-path-input-row{gap:6px;margin:8px 0;display:flex}.workspace-path-input{border:1px solid var(--color-line);font-size:12px;font-family:var(--font-mono);color:var(--color-ink);background:#fff;border-radius:6px;outline:none;flex:1;padding:6px 10px}.workspace-path-input:focus{border-color:var(--color-blue);box-shadow:0 0 0 2px #3565c526}.workspace-path-input::placeholder{color:var(--color-faint)}.workspace-path-go{border:1px solid var(--color-line);background:var(--color-soft);color:var(--color-ink);cursor:pointer;border-radius:6px;flex:none;padding:6px 14px;font-size:12px}.workspace-path-go:hover{background:#eaeef2}.workspace-path-go:disabled{opacity:.4;cursor:not-allowed}.plugin-event{height:30px;color:var(--color-blue);background:var(--color-blue-soft);font:11px var(--font-mono);border:1px dashed #4176e659;border-radius:8px;align-items:center;gap:8px;padding:0 11px;display:flex}.plugin-event>span:last-child{text-overflow:ellipsis;white-space:nowrap;color:var(--color-muted);font:12px var(--font-sans);overflow:hidden}.plugin-hook{background:var(--color-blue-soft);border-radius:4px;padding:1px 6px;color:var(--color-faint)!important;font:10px var(--font-mono)!important}.tool-card,.approval-card,.subagent-card,.todo-card{background:var(--color-surface);border:1px solid var(--color-line);border-radius:10px;overflow:hidden}.tool-head,.subagent-head{text-align:left;background:var(--color-surface);align-items:center;gap:9px;width:100%;min-height:34px;padding:7px 11px;display:flex}.tool-head{font:11.5px var(--font-mono)}.tool-glyph{width:12px;color:var(--color-muted)}.tool-target,.subagent-goal{text-overflow:ellipsis;white-space:nowrap;color:var(--color-muted);font-size:11px;overflow:hidden}.tool-head .tool-target,.subagent-goal{flex:1}.tool-stat{color:var(--color-muted)}.tool-detail-link{color:var(--color-blue);font:10.5px var(--font-sans)}.tool-output,.diff-preview,.toml{word-break:break-word;white-space:pre-wrap;color:var(--color-muted);background:var(--color-soft);font:11.5px/1.7 var(--font-mono);border-top:1px solid #0000000f;margin:0;padding:10px 12px}.diff-line{font:11.5px/1.7 var(--font-mono);gap:10px;padding:0 8px;display:flex}.diff-line.added{background:var(--color-green-soft)}.diff-line.removed{background:var(--color-red-soft)}.diff-no{text-align:right;width:30px;color:var(--color-faint)}.diff-sign{width:8px;color:var(--color-green)}.diff-line.removed .diff-sign{color:var(--color-red)}.approval-card{background:var(--color-amber-soft);border-color:#f59e0b66;padding:11px 13px}.approval-card pre{background:0 0;border:0;padding:8px 0}.approval-actions{gap:7px;margin-top:4px;display:flex}.approval-actions button{background:var(--color-surface);border:1px solid var(--color-line);border-radius:7px;padding:5px 11px;font-size:11.5px}.approval-actions .primary{color:var(--color-inverse);background:var(--color-ink)}.approval-actions .danger{color:var(--color-red)}.subagent-head{font-size:12.5px}.subagent-glyph{color:var(--color-blue);font:11px var(--font-mono)}.subagent-preset{color:var(--color-faint);background:var(--color-blue-soft);font:10.5px var(--font-mono);border-radius:4px;padding:1px 6px}.subagent-duration{color:var(--color-faint);font:10.5px var(--font-mono)}.subagent-body{border-top:1px solid #0000000f;padding:4px 11px 9px;display:block}.subagent-lineage{color:var(--color-faint);font:10px var(--font-mono);padding:6px 0 4px;display:block}.subagent-step{border-left:2px solid var(--color-blue-soft);align-items:center;gap:8px;padding:4px 0 4px 10px;display:flex}.subagent-step code{width:42px;color:var(--color-muted);font:10.5px var(--font-mono)}.subagent-step span{text-overflow:ellipsis;white-space:nowrap;color:var(--color-muted);font:11px var(--font-mono);flex:1;overflow:hidden}.subagent-step small{color:var(--color-faint);font:10px var(--font-mono)}.subagent-body p{border-top:1px solid #0000000f;margin:8px 0 0;padding-top:8px}.todo-head{border-bottom:1px solid #0000000f;align-items:center;gap:8px;height:32px;padding:0 11px;display:flex}.todo-head small{color:var(--color-faint);font:10.5px var(--font-mono)}.todo-row{border-bottom:1px solid #0000000a;align-items:flex-start;gap:9px;padding:7px 11px;display:flex}.todo-row.done{color:var(--color-muted);text-decoration:line-through}.todo-mark{color:var(--color-green);font:11px var(--font-mono)}.stats-row{color:var(--color-faint);font:10.5px var(--font-mono);flex-wrap:wrap;gap:14px;display:flex}.composer-wrap{flex:none;padding:8px 24px 14px}.composer-stack{width:100%;max-width:960px;margin:0 auto;position:relative}.context-shell{width:100%;max-width:748px;margin:0 auto;position:relative}.context-line{width:100%;color:var(--color-faint);font:10.5px var(--font-mono);align-items:center;gap:9px;margin:0 0 8px;display:flex}.context-line b{color:var(--color-muted);font-weight:400}.context-bar{background:var(--color-line);border-radius:3px;flex:1;height:4px;display:flex;overflow:hidden}.context-bar i{height:100%}.context-bar.expanded{height:8px}.composer{background:var(--color-surface);border:1px solid #0000001f;border-radius:10px;max-width:748px;margin:0 auto;transition:border-color .12s,box-shadow .12s;position:relative;overflow:visible;box-shadow:0 1px 2px #00000008}.composer:focus-within{border-color:#4176e66b;box-shadow:0 8px 24px #0f11150f,0 0 0 3px #4176e614}.composer textarea{resize:none;width:100%;min-height:65px;max-height:180px;color:var(--color-ink);background:0 0;border:0;padding:11px 13px 4px;font-size:13.5px;line-height:1.7;display:block;overflow-y:auto}.composer textarea:focus-visible{box-shadow:none}.composer-tools{align-items:center;gap:6px;padding:6px 8px 8px;display:flex}.composer-tools select,.tool-chip{background:var(--color-surface);height:26px;font:11px var(--font-mono);border:1px solid #0000001a;border-radius:7px;padding:0 7px}.tool-chip{font-family:var(--font-sans);color:var(--color-muted);padding:0 9px;font-size:11.5px}.tool-chip-hint{min-width:0;display:inline-flex}.composer-hint{text-align:right;color:var(--color-faint);font:10px var(--font-mono);flex:1}.send-button{width:28px;height:28px;color:var(--color-inverse);background:var(--color-ink);border-radius:8px;font-size:15px}.send-button:disabled{cursor:not-allowed;opacity:.45}.prompt-completion{z-index:30;background:var(--color-surface);border:1px solid #0f172a24;border-radius:10px;max-height:300px;padding:7px;position:absolute;bottom:calc(100% + 8px);left:8px;right:8px;overflow:auto;box-shadow:0 14px 36px #0f172a2e}.prompt-completion>small{letter-spacing:.08em;color:var(--color-faint);font:10px var(--font-mono);padding:5px 8px 7px;display:block}.prompt-completion button{text-align:left;border-radius:7px;align-items:baseline;gap:12px;width:100%;min-height:38px;padding:8px;display:flex}.prompt-completion button[aria-selected=true]{color:var(--color-blue);background:var(--color-blue-soft)}.prompt-completion button strong{text-overflow:ellipsis;white-space:nowrap;width:210px;font:11px var(--font-mono);flex:none;overflow:hidden}.prompt-completion button span{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--color-muted);font-size:11px;overflow:hidden}.prompt-completion-empty{color:var(--color-faint);padding:9px 8px;font-size:11px;display:block}.new-session-screen{text-align:center;flex-direction:column;align-items:center;gap:11px;max-width:580px;margin:0 auto;padding:40px 0;display:flex}.new-session-screen h2{margin:0;font-size:16.5px}.new-session-screen p{color:var(--color-muted);margin:0}.workspace-picker{text-align:left;gap:6px;width:100%;margin-top:12px;display:grid}.workspace-row{text-align:left;background:var(--color-surface);border:1px solid var(--color-line);border-radius:9px;align-items:center;gap:10px;width:100%;padding:10px 12px;display:flex}.workspace-row:hover{background:var(--color-soft);border-color:#4176e666}.workspace-row code{text-overflow:ellipsis;white-space:nowrap;font:12px var(--font-mono);flex:1;overflow:hidden}.workspace-row small{color:var(--color-faint);font:10px var(--font-mono);margin-top:3px;display:block}.workspace-row .offline{color:var(--color-faint)}.effective-config{text-align:left;background:var(--color-soft);border:1px solid #00000014;border-radius:10px;flex-wrap:wrap;align-items:center;gap:10px;width:100%;padding:9px 12px;display:flex}.effective-config code{color:var(--color-faint);font:10.5px var(--font-mono)}.effective-config span{color:var(--color-muted);font:10.5px var(--font-mono)}.trajectory-summary{color:var(--color-muted);border-bottom:1px solid var(--color-line);flex:none;padding:12px 24px 10px;font-size:11.5px}.trajectory-summary b{color:var(--color-faint);font-weight:400;font:10.5px var(--font-mono);margin-left:9px}.timeline{gap:3px;height:26px;margin-top:8px;display:flex}.timeline-turn{background:var(--color-line);border-radius:3px;align-items:stretch;padding:0;display:flex;overflow:hidden}.timeline-strip{opacity:.9;width:100%;display:block}.source-filters{border-bottom:1px solid var(--color-line);flex-wrap:wrap;flex:none;align-items:center;gap:6px;padding:9px 24px;display:flex}.filter{color:var(--color-muted);border:1px solid #0000001a;border-radius:20px;align-items:center;gap:6px;padding:3px 9px;font-size:11.5px;display:flex}.filter.active{color:var(--color-blue);background:var(--color-blue-soft);border-color:#4176e659}.filter b{color:var(--color-faint);font-weight:400;font:10px var(--font-mono)}.event-count{color:var(--color-faint);font:10.5px var(--font-mono);margin-left:auto}.event-table{flex:1;min-height:0;overflow:auto}.event-head,.event-row{grid-template-columns:78px 132px 1fr 88px 68px;align-items:center;gap:12px;padding:7px 24px;display:grid}.event-head{letter-spacing:.04em;color:var(--color-faint);text-transform:uppercase;background:var(--color-soft);font:10px var(--font-mono);border-bottom:1px solid #0000000f}.event-row{text-align:left;border-bottom:1px solid #0000000a;width:100%;font-size:12px}.event-row:hover{background:var(--color-soft)}.event-row>span,.event-row code{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.event-row>span:first-child,.event-row>span:last-child{color:var(--color-faint);font:10.5px var(--font-mono)}.event-row strong{text-overflow:ellipsis;white-space:nowrap;font-weight:400;overflow:hidden}.event-row>span:nth-child(2){color:var(--color-muted);font:11px var(--font-mono);align-items:center;gap:7px;display:flex}.event-dot{background:var(--color-blue);border-radius:2px;flex:none;width:6px;height:6px}.files-content{flex:1;width:100%;max-width:none;min-height:0;padding:24px;overflow:auto}.files-title{align-items:baseline;gap:10px;margin-bottom:14px;display:flex}.files-title strong{font-size:13px}.files-title span{color:var(--color-faint);font:11px var(--font-mono)}.file-list{border:1px solid var(--color-line);border-radius:10px;overflow:hidden}.file-row{border-bottom:1px solid #0000000a;align-items:center;gap:12px;padding:10px 13px;display:flex}.file-row:last-child{border-bottom:0}.file-row code{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:12px var(--font-mono);flex:1;overflow:hidden}.file-kind{color:var(--color-muted);background:var(--color-soft);font:10px var(--font-mono);border-radius:4px;padding:1px 6px}.file-kind.new{color:var(--color-green);background:var(--color-green-soft)}.file-row .add{color:var(--color-green);font:11px var(--font-mono)}.file-row .del{color:var(--color-red);font:11px var(--font-mono)}.diff-button{color:var(--color-blue);font-size:11.5px}.file-actions{align-items:center;gap:8px;margin-top:12px;display:flex}.file-actions input{background:var(--color-surface);border:1px solid var(--color-line);border-radius:7px;flex:1;min-width:180px;height:34px;padding:0 10px;font-size:12px}.file-actions input:focus{border-color:var(--color-blue)}.file-actions button{background:var(--color-surface);border:1px solid var(--color-line);border-radius:7px;min-height:34px;padding:6px 11px;font-size:11.5px}.file-actions .primary{color:var(--color-inverse);background:var(--color-ink)}.files-error{color:var(--color-red);background:var(--color-red-soft);border:1px solid #ec131329;border-radius:8px;margin:12px 0 0;padding:9px 11px;font-size:11.5px}.details-panel{background:var(--color-surface);border-left:1px solid #0000001a;flex-direction:column;flex:0 336px;width:336px;min-width:268px;min-height:0;display:flex}.details-panel>header{border-bottom:1px solid #0000000f;flex:0 0 56px;align-items:center;gap:8px;height:56px;padding:0 12px 0 16px;display:flex}.details-panel>header strong{flex:1;font-size:13px}.details-panel>header button{width:32px;height:32px;color:var(--color-muted);border-radius:7px;flex:none;place-items:center;font-size:19px;line-height:1;display:grid}.details-panel>header button:hover{background:var(--color-soft)}.details-body{flex:1;min-height:0;padding:16px;overflow:auto}.detail-stats{grid-template-columns:1fr 1fr;gap:7px;margin-bottom:12px;display:grid}.detail-stats>div{border:1px solid #00000014;border-radius:8px;min-width:0;padding:9px}.detail-stats small,.detail-section>small{letter-spacing:.04em;color:var(--color-faint);font:9.5px var(--font-mono);display:block}.detail-stats b{overflow-wrap:anywhere;font-weight:400;font:12.5px var(--font-mono);margin-top:2px;display:block}.detail-section{flex-direction:column;gap:5px;margin-top:14px;display:flex}.detail-plugin{overflow-wrap:anywhere;color:var(--color-blue);font:10.5px var(--font-mono);border:1px solid #00000014;border-radius:8px;padding:6px 9px;display:block}.raw-json{margin:14px 0 0}.plugins-view{min-width:0}.plugins-page{flex-direction:column;flex:1;min-height:0;display:flex}.subnav{min-height:48px;color:var(--color-muted);border-bottom:1px solid var(--color-line);flex:none;align-items:center;gap:12px;padding:8px 24px;font-size:11.5px;display:flex}.subnav>a{color:var(--color-blue);margin-left:auto}.subnav.plugin-detail-subnav{justify-content:flex-start;padding-inline:24px}.subnav.plugin-detail-subnav>a{margin-left:0}.plugin-detail-content{width:100%;max-width:none;margin:0;padding:32px 24px;container-type:inline-size}.plugin-detail-content>.grid>*{min-width:0}.plugin-detail-actions{flex-wrap:wrap;gap:8px;display:flex}.plugin-detail-action{min-height:36px;color:var(--color-ink);background:var(--color-surface);border:1px solid #0000001a;border-radius:6px;padding:6px 12px;font-size:12px}.plugin-detail-action:hover{background:var(--color-blue-soft);border-color:#4176e652}.plugin-detail-action.primary{border-color:var(--color-ink);color:var(--color-inverse);background:var(--color-ink)}.plugin-detail-action.primary:hover{border-color:var(--color-ink);background:var(--color-ink)}.plugin-detail-action.danger{color:var(--color-red);background:var(--color-red-soft);border-color:#f0caca}.plugin-detail-action.danger:hover{background:var(--color-red-soft);border-color:#e7abab}.segmented{background:var(--color-soft);border-radius:8px;gap:2px;padding:2px;display:flex}.segmented button{min-height:28px;color:var(--color-muted);border-radius:6px;padding:4px 12px;font-size:12px}.segmented button.active{color:var(--color-ink);background:var(--color-surface);font-weight:600;box-shadow:0 1px 3px #00000014}.plugins-scroll{flex:1;padding:16px 24px 24px;overflow:auto}.plugins-toolbar{background:var(--color-surface);border-bottom:1px solid var(--color-line);align-items:center;gap:12px;padding:12px 24px;display:flex}.plugins-toolbar input{border:1px solid #0000001f;border-radius:8px;flex:1;min-width:220px;height:38px;padding:0 12px;font-size:12.5px}.plugins-toolbar input:focus{border-color:#4176e68c;box-shadow:0 0 0 3px #4176e61a}.plugins-toolbar>span{color:var(--color-faint);font:10.5px var(--font-mono);flex:none}.plugins-list{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));grid-auto-rows:1fr;gap:16px;width:100%;display:grid}.plugin-card{background:var(--color-surface);border:1px solid var(--color-line);border-radius:10px;flex-direction:column;height:100%;min-height:226px;padding:16px;transition:border-color .12s,box-shadow .12s,transform .12s;display:flex}.plugin-card:hover{border-color:#4176e652;transform:translateY(-1px);box-shadow:0 8px 22px #0f11150f}.plugin-card-head{align-items:flex-start;gap:12px;display:flex}.plugin-heading{align-items:flex-start;gap:12px;min-width:0;display:flex}.plugin-actions{flex:none;align-items:center;gap:8px;margin-left:auto;display:flex}.plugin-switch-button{border-radius:7px;flex:0 0 36px;place-items:center;width:36px;height:28px;display:grid}.plugin-switch-button:hover{background:var(--color-soft)}.plugin-icon{color:var(--color-blue);font:14px var(--font-mono);margin-top:2px}.plugin-copy{flex:1;min-width:0}.plugin-card-body{min-width:0}.plugin-title{flex-wrap:wrap;flex:1;align-items:center;gap:6px;min-width:0;display:flex}.plugin-title strong{font-size:14px;font-weight:600;line-height:1.4}.plugin-state{color:var(--color-faint);background:var(--color-soft);font:10px var(--font-mono);border-radius:4px;padding:1px 6px}.plugin-state.active{color:var(--color-green);background:var(--color-green-soft)}.plugin-package{overflow-wrap:anywhere;color:var(--color-muted);font:10.5px var(--font-mono);margin-top:8px;display:block}.capability,.update,.local{color:var(--color-muted);background:var(--color-line);border-radius:4px;padding:1px 6px;font-size:10px}.update{color:var(--color-blue);background:var(--color-blue-soft)}.local{color:var(--color-amber);background:var(--color-amber-soft);font:10px var(--font-mono)}.plugin-description{color:var(--color-muted);margin:8px 0 12px;font-size:13px;line-height:1.6}.hook-list{flex-wrap:wrap;gap:5px;display:flex}.hook-list span{color:var(--color-muted);font:10px var(--font-mono);border:1px solid #00000014;border-radius:4px;padding:1px 6px}.plugin-card-footer{border-top:1px solid #0000000f;justify-content:space-between;align-items:flex-end;gap:12px;min-height:32px;margin-top:auto;padding-top:12px;display:flex}.plugin-card-footer>span{letter-spacing:.04em;color:var(--color-faint);font:10px var(--font-mono)}.plugin-detail-link{min-height:28px;color:var(--color-blue);align-items:center;font-size:11.5px;display:inline-flex}.switch{background:var(--color-blue-soft);border-radius:999px;flex:0 0 36px;width:36px;height:22px;position:relative}.switch.on{background:var(--color-ink)}.switch i{background:var(--color-surface);border-radius:50%;width:18px;height:18px;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #0003}.switch.on i{left:16px}.settings-overlay{z-index:40;background:#0000003d;place-items:center;padding:40px;display:grid;position:fixed;inset:0}.global-search{z-index:50;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0f172a52;place-items:start center;padding:12vh 40px 40px;display:grid;position:fixed;inset:0}.global-search-dialog{background:var(--color-surface);border:1px solid #0f172a24;border-radius:10px;flex-direction:column;width:100%;max-width:920px;max-height:min(680px,100vh - 96px);display:flex;overflow:hidden;box-shadow:0 28px 80px #0f172a42}.global-search-heading{align-items:baseline;gap:10px;padding:16px 18px 10px;display:flex}.global-search-heading strong{font-size:14px}.global-search-heading small{color:var(--color-muted);font-size:11px}.global-search-heading button{width:32px;height:32px;color:var(--color-muted);border-radius:7px;place-items:center;margin-left:auto;font-size:19px;line-height:1;display:grid}.global-search-heading button:hover{background:var(--color-soft)}.global-search-dialog>input{width:100%;height:52px;color:var(--color-ink);background:var(--color-surface);border-bottom:1px solid var(--color-line);font:14px var(--font-sans);border:0;flex:none;padding:0 18px}.global-search-dialog>input:focus-visible{border-bottom-color:#4176e66b;box-shadow:inset 0 -2px #4176e61f}.global-search-results{min-height:0;padding:8px 10px 12px;overflow:auto}.global-search-group{padding:0 0 8px}.global-search-group>small{letter-spacing:.08em;color:var(--color-faint);font:10px var(--font-mono);padding:6px 8px 7px;display:block}.global-search-group button{text-align:left;border-radius:8px;align-items:baseline;gap:18px;width:100%;min-height:44px;padding:10px 12px;line-height:1.45;display:flex}.global-search-group button[aria-selected=true]{background:var(--color-blue-soft)}.global-search-group button strong{text-overflow:ellipsis;white-space:nowrap;width:260px;color:var(--color-ink);font:12px var(--font-mono);flex:none;overflow:hidden}.global-search-group button[aria-selected=true] strong{color:var(--color-blue)}.global-search-group button span{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--color-muted);font:12px var(--font-sans);overflow:hidden}.settings-page{background:var(--color-soft);flex:1;min-width:0;display:flex}.settings-page .settings-dialog{width:100%;max-width:none;height:100%;max-height:none;box-shadow:none;border-radius:0;flex-direction:column}.settings-top-tabs{background:var(--color-surface);border-bottom:1px solid var(--color-line);flex:none;align-items:center;gap:4px;height:48px;padding:0 24px;display:flex}.settings-top-tabs .settings-tab{border-radius:7px;height:30px;padding:0 12px;font-size:12px}.settings-top-tabs .settings-tab.active{color:var(--color-blue);background:var(--color-blue-soft)}.settings-top-tabs .settings-tab b{float:none;margin-left:4px}.settings-back{color:var(--color-blue);background:var(--color-blue-soft);border:1px solid #4176e647;border-radius:7px;padding:4px 9px;font-size:11px}.settings-back:hover{background:var(--color-blue-soft)}.settings-dialog{background:var(--color-surface);border-radius:10px;width:100%;max-width:880px;height:100%;max-height:620px;display:flex;overflow:hidden;box-shadow:0 24px 64px #0000003d}.settings-dialog>aside{background:var(--color-soft);border-right:1px solid #0000000f;flex-direction:column;flex:0 0 184px;gap:2px;width:184px;padding:12px 8px;display:flex}.settings-dialog>aside>strong{padding:4px 9px 10px;font-size:13px}.settings-tab{text-align:left;border-radius:8px;height:30px;padding:0 9px;font-size:12.5px}.settings-tab.active{background:var(--color-soft);font-weight:600}.settings-tab b{float:right;color:var(--color-muted);font-weight:400;font:10px var(--font-mono)}.settings-dialog>section{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.settings-dialog section>header{border-bottom:1px solid #0000000f;justify-content:flex-start;align-items:center;gap:16px;height:52px;padding:0 24px;display:flex}.settings-header-copy{align-items:baseline;gap:10px;min-width:0;display:flex}.settings-header-copy strong{flex:none;font-size:13px}.settings-header-copy small{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--color-muted);font-size:11px;overflow:hidden}.settings-dialog section>header button{color:var(--color-muted);flex:none;font-size:12px}.settings-dialog section>header .settings-back{color:var(--color-blue);background:0 0;border:0;border-radius:0;padding:0;font-size:11px}.settings-body{flex:1;padding:16px 24px 24px;overflow:auto}.settings-intro{border-bottom:1px solid var(--color-line);padding:5px 0 11px}.settings-intro small{color:var(--color-faint);font:9.5px var(--font-mono)}.settings-intro h3{font-weight:500;font:13px var(--font-mono);margin:4px 0}.settings-intro p{color:var(--color-muted);margin:0;font-size:12px}.general-row{border-bottom:1px solid #0000000f;align-items:center;gap:12px;padding:12px 0;display:flex}.general-row>div{flex:1}.general-row strong{font-size:12.5px;display:block}.general-row small{color:var(--color-muted);margin-top:2px;font-size:11.5px;display:block}.setting-status{color:var(--color-muted);background:var(--color-line);font:10.5px var(--font-mono);border-radius:999px;flex:none;padding:3px 8px}.setting-status.on{color:var(--color-green);background:var(--color-green-soft)}.general-row small.setting-error{color:var(--color-red)}.setting-select{height:30px;color:var(--color-ink);background:var(--color-surface);border:1px solid var(--color-line);border-radius:7px;flex:none;padding:0 8px;font-size:11.5px}.provider-card{border:1px solid var(--color-line);border-radius:10px;margin-bottom:12px;padding:12px 13px}.provider-add-head{border-top:1px solid var(--color-line);justify-content:space-between;align-items:center;gap:12px;padding:11px 12px 10px;display:flex}.provider-add-head>div{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.provider-add-head strong{font-size:12px}.provider-add-head>button{white-space:nowrap;height:30px;color:var(--color-inverse);background:var(--color-ink);border-radius:7px;flex:none;padding:0 11px;font-size:11px}.provider-add-head small,.provider-add-form small{color:var(--color-faint);font-size:10px}.provider-add-form{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:0;display:grid}.provider-add-overlay{z-index:70;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0f172a52;place-items:center;padding:32px;display:grid;position:fixed;inset:0}.provider-add-modal{background:var(--color-surface);border:1px solid #0f172a24;border-radius:10px;width:min(100%,640px);max-height:calc(100vh - 64px);padding:18px;overflow:auto;box-shadow:0 28px 80px #0f172a42}.provider-add-modal>header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.provider-add-modal>header>div{flex-direction:column;gap:3px;display:flex}.provider-add-modal>header strong{font-size:14px}.provider-add-modal>header small{color:var(--color-faint);font-size:10.5px}.provider-add-modal>header button{width:26px;height:26px;color:var(--color-muted);border-radius:7px;font-size:18px}.provider-add-modal .provider-add-form{width:100%;margin:0;padding:0}.provider-add-form label{flex-direction:column;gap:5px;min-width:0;display:flex}.provider-add-form label>span{color:var(--color-muted);font-size:10.5px;font-weight:600}.provider-add-form input,.provider-add-form select,.provider-add-form button{background:var(--color-surface);border:1px solid var(--color-line);border-radius:7px;min-width:0;height:32px;padding:0 9px;font-size:11px}.provider-add-form input:focus,.provider-add-form select:focus{border-color:var(--color-blue)}.provider-add-wide,.provider-add-actions{grid-column:1/-1}.provider-add-actions{align-items:center;gap:10px;display:flex}.provider-add-actions button{width:140px}.provider-add-actions small{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.provider-add-form button{border-color:var(--color-ink);color:var(--color-inverse);background:var(--color-ink)}.provider-head{align-items:center;gap:8px;margin-bottom:10px;display:flex}.provider-dot{color:var(--color-green);font-size:10px}.provider-head strong{font-size:12.5px}.provider-state{color:var(--color-green);font:10.5px var(--font-mono);margin-left:auto}.provider-field{align-items:center;gap:8px;margin-top:7px;display:flex}.provider-field code{width:66px;color:var(--color-muted);font:11px var(--font-mono);flex:0 0 66px}.provider-field input{background:var(--color-surface);min-width:0;height:32px;font:11.5px var(--font-mono);border:1px solid #0000001a;border-radius:7px;flex:1;padding:0 9px}.provider-model-value{background:var(--color-surface);min-width:0;min-height:32px;font:11.5px var(--font-mono);border:1px solid #0000001a;border-radius:7px;flex:1;align-items:center;gap:7px;padding:4px 8px;display:flex}.provider-model-value>span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.provider-models-details{font:10px var(--font-sans);flex:none;margin-left:auto;position:relative}.provider-models-details summary{cursor:pointer;white-space:nowrap;color:var(--color-blue)}.provider-models-details .model-chips{z-index:2;background:var(--color-surface);border:1px solid var(--color-line);border-radius:8px;width:280px;max-height:160px;margin:0;padding:8px;position:absolute;top:22px;right:0;overflow:auto;box-shadow:0 8px 24px #0000001f}.provider-footer{align-items:center;gap:8px;margin-top:9px;display:flex}.provider-footer code{color:var(--color-muted);font:10.5px var(--font-mono)}.provider-footer button{background:var(--color-surface);border:1px solid var(--color-line);border-radius:7px;padding:4px 9px;font-size:11px}.provider-footer button:disabled{cursor:not-allowed;opacity:.5}.provider-footer .link-button{color:var(--color-blue);border:0;margin-left:auto}.model-chips{flex-wrap:wrap;gap:5px;margin-top:10px;display:flex}.model-chips span{color:var(--color-blue);background:var(--color-blue-soft);font:10.5px var(--font-mono);border-radius:4px;padding:1px 7px}.add-provider{text-align:left;width:100%;color:var(--color-muted);border:1px dashed #00000029;border-radius:10px;align-items:center;gap:9px;padding:11px 13px;display:flex}.add-provider small{color:var(--color-faint);font:10.5px var(--font-mono);margin-left:auto}.toml-toolbar{color:var(--color-muted);align-items:center;gap:6px;margin-bottom:10px;font-size:11.5px;display:flex}.toml-toolbar span{flex:1}.toml-toolbar button{background:var(--color-surface);border:1px solid var(--color-line);border-radius:7px;padding:4px 9px;font-size:11px}.toml-toolbar button.active{background:var(--color-soft);font-weight:600}.toml-toolbar .primary{color:var(--color-inverse);background:var(--color-ink)}.toml{min-height:420px;color:var(--color-muted);border:1px solid var(--color-line);border-radius:9px}.session-search{z-index:20;position:relative}.command-palette{background:var(--color-surface);border:1px solid #0f172a24;border-radius:10px;max-height:420px;position:absolute;top:calc(100% + 6px);left:0;right:0;overflow:auto;box-shadow:0 16px 40px #0f172a2e}.palette-group{padding:8px}.palette-group small{z-index:1;letter-spacing:.08em;color:var(--color-faint);background:var(--color-surface);font:10px var(--font-mono);padding:5px 8px 9px;display:block;position:sticky;top:0}.palette-group small span{letter-spacing:0;color:var(--color-faint)}.palette-group button{text-align:left;width:100%;min-height:44px;line-height:1.45;font:12px var(--font-mono);border-radius:8px;align-items:baseline;gap:14px;padding:10px 12px;display:flex}.palette-group button[aria-selected=true]{color:var(--color-blue);background:var(--color-blue-soft)}.palette-group button code{text-overflow:ellipsis;white-space:nowrap;width:150px;color:var(--color-ink);font:12px var(--font-mono);flex:none;overflow:hidden}.palette-group button[aria-selected=true] code{color:var(--color-blue)}.palette-group button span{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--color-muted);line-height:1.45;font:12px var(--font-sans);overflow:hidden}@media (width<=1100px){.details-panel{z-index:56;width:min(380px,100vw - 32px);min-width:0;max-width:100%;display:flex;position:fixed;top:0;bottom:0;right:0;box-shadow:-16px 0 48px #0f172a33}.details-backdrop{z-index:55;cursor:default;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0f172a3d;width:100%;height:100%;display:block;position:fixed;inset:0}}@media (width<=1024px){.composer-hint{display:none}}@media (width<=680px),(height<=845px) and (width>=681px) and (width<=760px),(height<=805px) and (width>=761px) and (width<=900px),(height<=747px) and (width>=901px) and (width<=1023px),(height<=664px) and (width>=1024px){.marketplace-page>div{overflow:auto}.marketplace-page .marketplace-scroll{flex:none;overflow:visible}}@media (height<=560px){.provider-add-overlay{padding:16px}.provider-add-modal{max-height:calc(100vh - 32px)}}@media (height<=400px){.sidebar .runtime-cells{display:none}.sidebar .sidebar-footer{padding-top:2px;padding-bottom:2px}.sidebar .sidebar-scroll{padding-bottom:0}}@media (width<=900px){.config-sections{grid-template-columns:minmax(0,1fr)}.main-header .active-heading small{display:none}.config-section:last-child{grid-column:auto}}@media (width<=760px){.sidebar{flex-basis:216px;width:216px}.main-header{gap:7px;padding:0 10px}:is(.main-header:has(.run-indicator) .active-heading,.main-header:has(.run-indicator) .header-spacer,.main-header:has(.run-indicator) .header-divider,.main-header:has(.run-indicator) .details-toggle){display:none}.main-header:has(.run-indicator) .run-indicator{flex-wrap:nowrap;max-width:none;margin-right:auto}.main-header:has(.run-indicator) .run-activity{display:none}.active-heading small{max-width:180px}.composer-wrap,.chat-scroll{padding-left:12px;padding-right:12px}.view-tabs{margin-left:auto}.run-indicator{gap-x:5px;gap-y:1px;flex-wrap:wrap;max-width:46vw}.run-indicator .run-activity{basis:100%;order:3;padding-left:12px;font-size:9.5px}.composer-hint{display:none}}@media (width<=680px){.sidebar{flex-basis:54px;width:54px}.brand-row{justify-content:center;padding:0}.brand-row strong,.version,.sidebar-actions,.sidebar-scroll{display:none}.sidebar-footer{align-items:center;padding:6px 5px 8px;display:flex}.sidebar-link{flex:0 0 44px;justify-content:center;width:44px;padding:0}.compact-new-session,.compact-session-search{display:flex}.compact-session-search{font-size:18px}.sidebar-link>span:nth-child(2),.sidebar-link>b,.sidebar-link>small,.sidebar-link>span:not(.link-glyph),.main-header .active-heading small,.run-indicator>span:not(.run-dot){display:none}.view-tab{padding:4px 7px}.details-panel{width:calc(100vw - 16px)}.details-toggle{display:none}.provider-models-details .model-chips{width:min(280px,100vw - 86px)}.composer-tools{justify-content:flex-end}.palette-group button code{width:132px}.global-search{place-items:center;padding:16px}.global-search-dialog{max-height:calc(100vh - 32px)}.global-search-group button strong{width:132px}.tool-chip{white-space:nowrap;padding-left:6px;padding-right:6px;font-size:10.5px}.plugins-toolbar{flex-wrap:wrap}.plugins-toolbar input{flex-basis:100%;min-width:0}}@media (width<=760px){.settings-overlay{padding:12px}.settings-dialog{max-height:none}}@media (prefers-reduced-motion:reduce){.session-dot.running,.run-indicator .run-dot,.initial-loading>span,.streaming-spinner,.reasoning-head:after{animation:none}}.empty-state{text-align:center;color:var(--color-muted);padding:28px 16px;font-size:12px}.settings-plugin-row{color:var(--color-muted);font:11.5px var(--font-mono);border-bottom:1px solid #0000000f;padding:8px 0}.settings-body>p{color:var(--color-muted);font-size:12px}.provider-card input{width:100%;height:32px;font:11.5px var(--font-mono);border:1px solid #0000001a;border-radius:7px;margin-top:7px;padding:0 9px;display:block}.stop-button{color:var(--color-red);border:1px solid #ec13133d;border-radius:6px;padding:2px 8px;font-size:11px}.stop-button:disabled{cursor:not-allowed;opacity:.45}.session-menu-popover{z-index:35;background:var(--color-surface);border:1px solid #0000001a;border-radius:10px;width:224px;position:absolute;top:calc(100% + 6px);right:0;overflow:hidden;box-shadow:0 10px 28px #00000024}.session-menu-wrap{flex:none;position:relative}.main-header{background:var(--color-surface);flex-basis:54px;height:54px}.active-heading{gap:1px}.active-heading small{max-width:440px;color:var(--color-faint)}.runtime-cells{background:var(--color-surface);border:1px solid #00000012;border-radius:9px;grid-template-columns:1fr 1fr;gap:5px 10px;margin:4px 8px 6px;padding:9px 10px;display:grid}.runtime-cells span:first-child{grid-column:1/-1;min-width:0}.runtime-cells b{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.session-row.active{background:var(--color-surface);border:1px solid #4176e624;box-shadow:0 1px 2px #00000008}.chat-scroll.is-empty{justify-content:flex-start;align-items:center;padding-top:10px;display:flex}.new-session-screen{text-align:left;gap:12px;width:100%;max-width:700px;margin-block:auto;padding:24px 0 30px}.welcome-kicker{letter-spacing:.11em;color:var(--color-blue);font:10px var(--font-mono)}.welcome-heading{align-items:center;gap:12px;margin-bottom:3px;display:flex}.welcome-heading h2{letter-spacing:-.02em;margin:0;font-size:21px}.welcome-heading p{color:var(--color-muted);margin:4px 0 0;font-size:12.5px}.workspace-picker{margin-top:5px}.workspace-row{border-color:#4176e633;min-height:68px;padding:13px 14px;box-shadow:0 6px 20px #0f11150a}.workspace-row>span:nth-child(2){flex:1;min-width:0}.workspace-status{background:var(--color-green-soft);font:10px var(--font-mono);border-radius:5px;flex:none;padding:3px 7px}.workspace-row .live{color:var(--color-green)}.workspace-arrow{color:var(--color-blue);font-size:16px}.effective-config{background:var(--color-soft);gap:9px;min-height:40px;padding:8px 11px}.effective-config .config-label{font-family:var(--font-sans);color:var(--color-muted)}.starter-grid{grid-template-columns:1fr 1fr;gap:9px;width:100%;margin-top:4px;display:grid}.starter-card{text-align:left;background:var(--color-surface);border:1px solid var(--color-starter-border);border-radius:10px;min-height:72px;padding:12px 13px;transition:background .12s,border-color .12s,transform .12s}.starter-card:hover{background:var(--color-blue-soft);border-color:#4176e666;transform:translateY(-1px)}.starter-card strong,.starter-card small{display:block}.starter-card small{color:var(--color-muted);font:10.5px var(--font-mono);margin-top:4px}.composer-wrap{border-top:1px solid #0000000a;padding-top:10px}.context-line{gap:12px;margin-bottom:7px}.context-label{color:var(--color-muted)}.context-metrics{text-overflow:ellipsis;white-space:nowrap;flex-wrap:wrap;flex:1;gap:10px;min-width:0;display:flex;overflow:hidden}.context-metrics span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.context-bar{display:none}.composer{border-radius:10px;max-width:800px;box-shadow:0 8px 24px #0f11150f}.composer textarea{min-height:74px;padding:13px 15px 5px;font-size:14px}.action-error{z-index:20;max-width:800px;color:var(--color-red);background:var(--color-red-soft);border:1px solid #ec131329;border-radius:9px;flex-direction:column;gap:6px;margin:0;padding:9px 11px;font-size:11.5px;display:flex;position:absolute;bottom:calc(100% + 8px);right:0;box-shadow:0 8px 24px #0f11151a}.action-error-summary{align-items:baseline;gap:8px;display:flex}.provider-auth-notice{color:var(--color-red);background:var(--color-red-soft);border:1px solid #ec131329;border-radius:9px;align-items:center;gap:8px;margin-bottom:8px;padding:9px 11px;font-size:11.5px;display:flex}.provider-auth-notice .action-error-summary{flex-wrap:wrap;flex:1;min-width:0}.action-error-summary strong{color:var(--color-red);flex:none;font-size:11.5px}.action-error-summary span{color:var(--color-red)}.action-error details{min-width:0}.action-error summary{cursor:pointer;color:var(--color-red);font-size:10.5px}.action-error code{overflow-wrap:anywhere;white-space:pre-wrap;max-height:88px;color:var(--color-red);font:10px var(--font-mono);margin-top:5px;display:block;overflow:auto}.marketplace-page{background:var(--color-soft);min-height:0}.marketplace-page>div{background:var(--color-soft)}.marketplace-page .marketplace-grid{align-content:start}.marketplace-toolbar{background:var(--color-surface);border-bottom:1px solid #00000014;flex-wrap:wrap;flex:none;align-items:center;gap:12px;padding:12px 24px;display:flex}.marketplace-search{border:1px solid #0000001f;border-radius:8px;flex:1;min-width:220px;height:38px;padding:0 12px;font-size:12.5px}.marketplace-search:focus{border-color:#4176e68c;box-shadow:0 0 0 3px #4176e61a}.marketplace-filter{height:38px;color:var(--color-muted);background:var(--color-surface);border:1px solid #0000001f;border-radius:8px;padding:0 12px;font-size:12.5px}.marketplace-count{color:var(--color-faint);font:10.5px var(--font-mono);margin-left:auto}.marketplace-toolbar-message{flex-basis:100%;gap:6px;min-width:0;display:grid}.marketplace-toolbar-message:empty{flex-basis:0;gap:0}.marketplace-message{border-radius:8px;flex-wrap:wrap;align-items:center;gap:8px;min-width:0;padding:8px 10px;font-size:11.5px;line-height:1.7;display:flex}.marketplace-message.notice{color:var(--color-blue);background:var(--color-blue-soft);border:1px solid #4176e647}.marketplace-message.error{color:var(--color-red);background:var(--color-red-soft);border:1px solid #b91c1c3d}.marketplace-message-dismiss{border:1px solid;border-radius:6px;flex:none;margin-left:auto;padding:2px 8px;font-size:11px}.marketplace-categories{scrollbar-width:none;background:var(--color-surface);flex-wrap:nowrap;flex:1;gap:4px;min-width:0;padding:8px 48px 8px 24px;display:flex;overflow-x:auto}.marketplace-categories::-webkit-scrollbar{display:none}.marketplace-categories-shell{background:var(--color-surface);border-bottom:1px solid #00000014;flex:none;min-width:0;display:flex;position:relative}.marketplace-categories-shell:before,.marketplace-categories-shell:after{pointer-events:none;z-index:1;content:"";width:64px;position:absolute;top:0;bottom:0}.marketplace-categories-shell.can-scroll-left:before{background:linear-gradient(90deg,#fff 24%,#fff0);left:0}.marketplace-categories-shell.can-scroll-right:after{background:linear-gradient(270deg,#fff 24%,#fff0);right:0}.marketplace-category-scroll{z-index:2;color:#445064;background:#fffffff5;border:1px solid #0000001a;border-radius:999px;place-items:center;width:32px;height:32px;font-size:22px;line-height:1;display:grid;position:absolute;top:50%;transform:translateY(-50%);box-shadow:0 2px 10px #0f172a1f}.marketplace-category-scroll:hover{color:var(--color-blue);background:var(--color-blue-soft);border-color:#4176e659}.marketplace-category-scroll.previous{left:8px}.marketplace-category-scroll.next{right:8px}.marketplace-category{min-height:32px;color:var(--color-muted);border-radius:999px;flex:none;align-items:center;gap:6px;padding:4px 8px;font-size:11px;display:flex}.marketplace-category:hover{background:var(--color-blue-soft)}.marketplace-category.active{color:var(--color-blue);background:var(--color-blue-soft);font-weight:500}.marketplace-scroll{flex:1;min-height:0;padding:0 24px 24px;overflow:auto}.marketplace-grid{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));grid-auto-rows:1fr;gap:16px;width:100%;padding-top:16px;display:grid}.marketplace-card{background:var(--color-surface);border:1px solid #0000001a;border-radius:10px;flex-direction:column;height:100%;min-height:226px;padding:16px;transition:border-color .12s,box-shadow .12s,transform .12s;display:flex}.catalog-card{min-height:260px}.marketplace-card:hover{border-color:#4176e652;transform:translateY(-1px);box-shadow:0 8px 22px #0f11150f}.marketplace-card-head{align-items:flex-start;gap:10px;display:flex}.marketplace-card-body{flex:1;min-width:0}.marketplace-card-mark{color:var(--color-blue);font:14px var(--font-mono)}.marketplace-title{font-size:14px;font-weight:600;line-height:1.4}.marketplace-package{overflow-wrap:anywhere;color:var(--color-muted);font:10.5px var(--font-mono);margin-top:8px;display:block}.marketplace-description{color:var(--color-muted);margin:8px 0 12px;font-size:13px;line-height:1.6}.marketplace-tags{flex-wrap:wrap;gap:5px;display:flex}.marketplace-card-footer{min-height:40px;color:var(--color-faint);font:10.5px var(--font-mono);border-top:1px solid #0000000f;align-items:center;gap:8px;margin-top:auto;padding-top:12px;display:flex}.marketplace-card-footer span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.marketplace-card-footer a{min-height:28px;color:var(--color-blue);font:11px var(--font-sans);flex:none;align-items:center;display:inline-flex}.marketplace-card-footer span+a{margin-left:auto}.marketplace-card-footer button{white-space:nowrap;min-height:28px;color:var(--color-blue);background:var(--color-blue-soft);border:1px solid #4176e64d;border-radius:6px;flex:none;padding:4px 10px;font-size:10.5px}.marketplace-card-footer button:hover{background:var(--color-blue-soft)}.marketplace-pagination{color:var(--color-faint);font:11px var(--font-mono);justify-content:center;align-items:center;gap:12px;margin-top:12px;display:flex}.marketplace-pagination-button{min-height:32px;color:var(--color-ink);background:var(--color-surface);font:11px var(--font-sans);border:1px solid #0000001a;border-radius:6px;padding:4px 12px}.marketplace-pagination-button:hover:not(:disabled){background:var(--color-blue-soft);border-color:#4176e652}.session-action{text-align:left;border-bottom:1px solid #0000000a;flex-direction:column;gap:1px;width:100%;padding:8px 11px;display:flex}.session-action:hover{background:var(--color-soft)}.session-action strong{font-size:12px}.session-action small{color:var(--color-faint);font-size:10px}.context-bar i:first-child{background:var(--color-blue-soft);width:44%}.context-bar i:nth-child(2){background:var(--color-blue-soft);width:33%}.context-bar i:nth-child(3){background:var(--color-blue-soft);width:23%}.file-summary{color:var(--color-muted);font:10.5px var(--font-mono);margin:-8px 0 12px}.settings-note{color:var(--color-muted);margin-top:10px;font-size:11px;line-height:1.5;display:block}.extension-list{width:100%}.extension-list .empty-state{border:1px dashed #00000024;border-radius:10px}.subnav>a{white-space:nowrap}.plugin-card .switch{flex:none}.plugin-uninstall{min-height:28px;color:var(--color-red);background:var(--color-red-soft);border:1px solid #b91c1c29;border-radius:6px;align-items:center;padding:3px 8px;font-size:11px;display:inline-flex}.plugin-uninstall:hover{background:var(--color-red-soft);border-color:#b91c1c47}.plugin-action-error{color:var(--color-red);margin:10px 0 0 37px;font-size:11px}.plugin-action-notice{color:var(--color-amber);margin:10px 0 0 37px;font-size:11px}.plugin-confirm-backdrop{z-index:60;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0f172a52;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.plugin-confirm-dialog{background:var(--color-surface);border:1px solid #0f172a24;border-radius:10px;width:100%;max-width:440px;padding:20px;box-shadow:0 24px 64px #0f172a42}.plugin-confirm-dialog header strong,.plugin-confirm-dialog header small{display:block}.plugin-confirm-dialog header strong{font-size:15px}.plugin-confirm-dialog header small{color:var(--color-muted);margin-top:4px;font-size:12px}.plugin-confirm-dialog>code{overflow-wrap:anywhere;background:var(--color-soft);font:11px var(--font-mono);border-radius:8px;margin-top:16px;padding:10px 11px;display:block}.plugin-confirm-dialog footer{justify-content:flex-end;gap:8px;margin-top:18px;display:flex}.plugin-confirm-dialog footer button{background:var(--color-surface);border:1px solid var(--color-line);border-radius:7px;padding:7px 12px;font-size:12px}.plugin-confirm-dialog footer button.danger{color:var(--color-red);background:var(--color-red-soft);border-color:#b91c1c38}.plugin-confirm-error{color:var(--color-red);margin:10px 0 0;font-size:11px}.session-menu-popover[hidden]{display:none}.timeline-empty{color:var(--color-faint);font:10px var(--font-mono);padding:5px 8px}.timeline-turn{flex:1;min-width:4px}.timeline-strip{background:var(--color-blue);border-radius:3px;height:100%}.timeline-turn:nth-child(3n) .timeline-strip{background:#93c5fd}.timeline-turn:nth-child(4n) .timeline-strip{background:#f59e0b}.raw-json{border:1px solid var(--color-line);border-radius:8px;overflow:hidden}.raw-json summary{cursor:pointer;color:var(--color-muted);font:10.5px var(--font-mono);padding:7px 9px}.raw-json-body{white-space:pre-wrap;border-top:1px solid var(--color-line);margin:0;padding:9px}.detail-actions{gap:7px;margin-top:14px;display:flex}.detail-actions button{color:var(--color-muted);background:var(--color-surface);border:1px solid var(--color-line);border-radius:7px;padding:5px 9px;font-size:11px}.detail-actions button:disabled{cursor:not-allowed;opacity:.5}body{font-size:14px}.sidebar{background:var(--color-soft);border-right-color:#0f11151a;flex-basis:280px;width:280px}.brand-row{flex-basis:56px;height:56px;padding:0 16px}.brand-row strong{font-size:14px}.new-session{height:36px;font-size:13px}.sidebar-actions{gap:9px;padding:0 12px 12px}.sidebar-actions input{height:34px;font-size:12.5px}.sidebar-scroll{padding:0 10px 10px}.group-label{padding:8px 9px 5px;font-size:10.5px}.session-row{padding:9px 10px}.session-copy strong{font-size:13px}.session-copy small{font-size:10.5px}.sidebar-footer{padding:8px 12px 10px}.sidebar-link{height:34px;font-size:13px}.chat-scroll .turn{width:100%;max-width:960px}.main-header{flex-basis:56px;height:56px;padding:0 24px}.main-header.session-track{padding-left:max(24px,50% - 480px);padding-right:max(24px,50% - 480px)}.active-heading strong{font-size:15px}.active-heading small{font-size:10.5px}.view-tab{padding:5px 12px;font-size:12.5px}.session-menu,.details-toggle{height:30px}.chat-scroll{padding:28px 24px 8px}.new-session-screen{max-width:760px;padding:30px 0 36px}.welcome-heading h2{font-size:24px}.welcome-heading p{font-size:13.5px}.workspace-row{min-height:76px;padding:15px 16px}.workspace-row code{font-size:12.5px}.workspace-row small{font-size:10.5px}.effective-config{min-height:44px;padding:10px 13px}.effective-config span,.effective-config code{font-size:11px}.starter-card{min-height:80px;padding:13px 14px}.starter-card strong{font-size:13px}.starter-card small{font-size:11px}.composer-wrap{width:100%;padding:12px 24px 18px}.context-shell{max-width:960px}.composer,.action-error{width:100%;max-width:none}.context-line{font-size:11px}.composer textarea{min-height:82px;font-size:14.5px}.composer-tools select,.tool-chip{height:30px;font-size:11.5px}.send-button{width:30px;height:30px}@media (width<=900px){.sidebar{flex-basis:216px;width:216px}}@media (width<=760px){.sidebar{flex-basis:216px;width:216px}.main-header{flex-basis:48px;height:48px;padding:0 16px}.main-header.session-track,.chat-scroll,.composer-wrap,.trajectory-summary,.source-filters,.event-head,.event-row,.files-content,.settings-top-tabs,.settings-dialog section>header,.settings-body,.subnav,.plugins-toolbar,.plugins-scroll,.marketplace-toolbar,.marketplace-scroll{padding-left:16px;padding-right:16px}.marketplace-categories{padding-left:16px;padding-right:48px}.subnav.plugin-detail-subnav{padding-inline:16px}.plugin-detail-content{padding-left:16px;padding-right:16px}}@media (width<=520px){.detail-stats.is-file{grid-template-columns:minmax(0,1fr)}.file-row{grid-template-columns:auto auto minmax(0,1fr);align-items:center;gap:8px 10px;padding-top:12px;padding-bottom:12px;display:grid}.file-row code{overflow-wrap:anywhere;text-overflow:clip;white-space:normal;grid-area:1/1/auto/-1;line-height:1.45;overflow:visible}.file-kind{grid-area:2/1}.file-row>.add,.file-row>.del{grid-area:2/2}.file-row>.diff-button{grid-area:2/3;justify-self:end}}@media (width<=680px){.catalog-card{min-height:0}.sidebar{flex-basis:54px;width:54px}.runtime-cells,.session-list-toolbar{display:none}.main-header{flex-basis:56px;height:56px}.view-tab,.session-menu,.sidebar-link{min-height:44px}.session-menu{flex:none;width:44px}.settings-top-tabs{flex-wrap:wrap;height:auto;min-height:56px;padding-top:6px;padding-bottom:6px}.settings-top-tabs .settings-tab,.settings-back{min-height:44px}.refresh-warning{flex-direction:column;align-items:flex-start;gap:6px;padding:9px 16px}.refresh-warning button{min-width:44px;min-height:44px}.settings-back{align-items:center;display:inline-flex}.filter{min-height:44px}.event-head,.event-row{grid-template-columns:64px 96px minmax(0,1fr)}.event-head>:nth-child(4),.event-head>:nth-child(5),.event-row>:nth-child(4),.event-row>:nth-child(5){display:none}.file-actions{flex-wrap:wrap}.file-actions input{flex-basis:100%;width:100%;min-width:0;height:44px}.file-actions button,.diff-button{min-height:44px}.provider-add-overlay{padding:16px}.provider-add-form{grid-template-columns:minmax(0,1fr)}.provider-add-wide,.provider-add-actions{grid-column:auto}.provider-add-form input,.provider-add-form select,.provider-add-form button,.provider-add-modal>header button{min-height:44px}.provider-add-modal>header button{width:44px}.plugin-panel-card .grid-cols-3,.plugin-panel-card .grid-cols-4,.plugin-panel-card .grid-cols-5{grid-template-columns:repeat(2,minmax(0,1fr))}.provider-add-actions{flex-direction:column;align-items:stretch}.provider-add-actions button{width:100%}.provider-add-actions small{white-space:normal}.workspace-chooser,.global-search,.session-dialog-backdrop,.plugin-confirm-backdrop{padding:16px}.workspace-chooser-heading button,.global-search-heading button,.session-dialog-header button{width:44px;height:44px}.workspace-pick-directory,.workspace-chooser-row,.session-action,.session-tools-popover button,.session-row-menu-popover button,.session-batch-bar button,.session-pagination button,.session-dialog-field input,.session-dialog-actions button,.plugin-confirm-dialog footer button{min-height:44px}.new-session-screen,.workspace-picker,.workspace-row,.workspace-row>span:nth-child(2){min-width:0}.chat-scroll.is-empty{align-items:flex-start}.workspace-row code,.workspace-row small{text-overflow:ellipsis;white-space:nowrap;max-width:100%;display:block;overflow:hidden}.config-sections{grid-template-columns:minmax(0,1fr)}.config-section:last-child{grid-column:auto}.session-dialog-actions,.plugin-confirm-dialog footer{flex-wrap:wrap}.plugins-list,.marketplace-grid{grid-template-columns:minmax(0,1fr);grid-auto-rows:auto}.subnav{flex-wrap:wrap}.subnav>span{display:none}.subnav:not(.plugin-detail-subnav)>a{align-items:center;width:auto;min-height:44px;margin-left:auto;display:inline-flex}.plugin-detail-content{padding-top:24px;padding-bottom:24px}.marketplace-toolbar>*{min-width:0}.marketplace-search,.marketplace-filter{flex-basis:100%;width:100%}.marketplace-count{width:100%;margin-left:0}.marketplace-card-footer{flex-wrap:wrap}.marketplace-card-footer span{width:100%}.marketplace-card-footer span+a{margin-left:0}.plugins-list>.empty-state,.marketplace-grid>.empty-state{grid-column:1/-1}.segmented button,.effective-config a,.composer-tools select,.tool-chip,.send-button{min-height:44px}.send-button{min-width:44px}.effective-config a{align-items:center;display:inline-flex}.plugin-detail-link,.plugin-detail-subnav>a,.plugin-detail-action,.plugin-uninstall,.plugins-toolbar input,.marketplace-search,.marketplace-filter,.marketplace-category,.marketplace-category-scroll,.marketplace-card-footer a,.marketplace-card-footer button,.marketplace-pagination-button,.provider-add-head>button,.provider-field input,.provider-model-value,.provider-footer button,.provider-models-details summary,.toml-toolbar button,.config-field select,.config-source-actions button,.add-provider{min-height:44px}.plugin-uninstall,.marketplace-category-scroll,.marketplace-card-footer button,.toml-toolbar button{min-width:44px}.plugin-detail-content aside>a{align-items:center;min-height:44px;display:flex}.plugin-switch-button{flex-basis:44px;width:44px;height:44px}.plugin-detail-subnav>a,.provider-models-details summary{align-items:center;display:inline-flex}.composer-tools select{flex:1;min-width:0}.tool-chip,.send-button{flex:none}.marketplace-contribute{flex-wrap:wrap}.marketplace-contribute>span{width:100%}.marketplace-contribute>a{align-items:center;min-height:44px;margin-left:0;display:inline-flex}}@media (width>=681px) and (width<=900px){.marketplace-category-scroll{width:44px;height:44px}.new-session,.sidebar-actions input,.sidebar-link,.session-tool-button,.view-tab,.session-menu,.filter,.refresh-warning button,.settings-top-tabs .settings-tab,.settings-back,.plugin-detail-link,.plugin-detail-subnav>a,.plugin-detail-action,.plugin-uninstall,.plugins-toolbar input,.marketplace-search,.marketplace-filter,.marketplace-category,.marketplace-card-footer a,.marketplace-card-footer button,.marketplace-pagination-button,.provider-add-head>button,.provider-add-form input,.provider-add-form select,.provider-add-form button,.provider-add-modal>header button,.provider-field input,.provider-model-value,.provider-footer button,.provider-models-details summary,.toml-toolbar button,.config-field select,.config-source-actions button,.add-provider,.composer-tools select,.tool-chip,.send-button{min-height:44px}.workspace-chooser-heading button,.session-dialog-header button,.provider-add-modal>header button{width:44px;min-width:44px;height:44px}.workspace-pick-directory,.workspace-chooser-row,.session-action,.session-tools-popover button,.session-row-menu-popover button,.session-batch-bar button,.session-pagination button,.session-dialog-field input,.session-dialog-actions button,.plugin-confirm-dialog footer button{min-height:44px}.session-tool-button.icon,.session-tool-button,.session-menu,.plugin-switch-button,.plugin-uninstall,.toml-toolbar button,.send-button{flex-basis:44px;width:44px;min-width:44px}.segmented button,.subnav>a,.effective-config a,.diff-button,.file-actions input,.file-actions button,.plugin-detail-content aside>a,.marketplace-contribute>a{min-height:44px}.settings-back,.plugin-detail-link,.plugin-detail-subnav>a,.subnav>a,.effective-config a,.diff-button,.plugin-detail-content aside>a,.marketplace-card-footer a,.provider-models-details summary,.marketplace-contribute>a{align-items:center;display:inline-flex}.file-actions input,.file-actions button{height:44px}.settings-top-tabs{height:auto;min-height:56px}.plugin-switch-button{height:44px}.session-row-more{pointer-events:auto;opacity:1;width:44px;height:44px;right:2px}.session-row{padding-right:50px}.session-row-wrap>input{flex:none;width:24px;height:24px;margin-left:0}}@media (width<=360px){.plugin-heading{flex-direction:column;align-items:stretch;gap:8px}.plugin-actions{justify-content:flex-start;margin-left:0}}@media (width<=389px){.provider-field{flex-direction:column;align-items:stretch;gap:4px}.provider-field code{flex:none;width:auto}.provider-field input,.provider-model-value{width:100%}.context-line{gap:6px}.context-label{flex:none}.context-metrics{flex-wrap:nowrap;gap:6px}.context-metrics span:nth-child(3){display:none}.prompt-completion button{flex-direction:column;align-items:flex-start;gap:2px}.prompt-completion button strong,.prompt-completion button span{width:100%}.marketplace-statistics{grid-template-columns:1fr}.marketplace-statistics>span{justify-content:space-between;align-items:center;gap:12px;min-height:30px;display:flex}.marketplace-statistics>span+span{border-top:1px solid #e3e7ee;border-left:0}.marketplace-statistics small,.marketplace-statistics strong{text-overflow:clip;white-space:nowrap;margin-top:0;overflow:visible}}@media (width<=360px){.main-header{gap:4px;padding-left:8px;padding-right:8px}.main-header.session-track,.chat-scroll,.composer-wrap{padding-left:8px;padding-right:8px}.view-tabs{flex:none}.view-tab{min-width:44px;padding-left:7px;padding-right:7px}.active-heading{min-width:0}.active-heading strong{font-size:14px}.composer-tools{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 44px;display:grid}.composer-tools select{grid-column:1/-1;width:100%}.composer-tools .tool-chip{width:100%;min-width:0}}.status-pill.running{color:var(--color-blue)}.status-pill.running:before{background:var(--color-blue);box-shadow:0 0 8px #4176e673}.palette-group button.active{background:#f1f3f5}.action-error{color:var(--color-red);margin:9px 0 0;font-size:11.5px}.provider-result{color:var(--color-blue);font:10.5px var(--font-mono);margin-top:9px;display:block}
|