pragma-so 0.1.17 → 0.1.18
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/dist/server/connectorRegistry.js +128 -12
- package/dist/server/conversation/executeRunner.js +14 -0
- package/dist/server/index.js +49 -12
- package/dist/server/stores/connectorStore.js +15 -1
- package/package.json +1 -1
- package/ui/dist/assets/index-CnbsWKQq.css +1 -0
- package/ui/dist/assets/{index-DN7kKpUm.js → index-DdqXmEKt.js} +26 -26
- package/ui/dist/index.html +2 -2
- package/ui/dist/assets/index-DrdPye55.css +0 -1
|
@@ -97,29 +97,143 @@ Run \`agent-slack --help\` to see all commands.
|
|
|
97
97
|
name: "notion",
|
|
98
98
|
displayName: "Notion",
|
|
99
99
|
description: "Search, read, and create Notion pages and databases",
|
|
100
|
-
content: `#
|
|
100
|
+
content: `# notion
|
|
101
101
|
|
|
102
|
-
|
|
103
|
-
|
|
102
|
+
Use the Notion API to create/read/update pages, data sources (databases), and blocks.
|
|
103
|
+
|
|
104
|
+
## API Basics
|
|
105
|
+
|
|
106
|
+
All requests need:
|
|
107
|
+
\`\`\`bash
|
|
108
|
+
curl -X GET "https://api.notion.com/v1/..." \\
|
|
109
|
+
-H "Authorization: Bearer $NOTION_TOKEN" \\
|
|
110
|
+
-H "Notion-Version: 2025-09-03" \\
|
|
111
|
+
-H "Content-Type: application/json"
|
|
112
|
+
\`\`\`
|
|
113
|
+
|
|
114
|
+
> **Note:** The \`Notion-Version\` header is required. This skill uses \`2025-09-03\` (latest). In this version, databases are called "data sources" in the API.
|
|
115
|
+
|
|
116
|
+
## Common Operations
|
|
117
|
+
|
|
118
|
+
**Search for pages and data sources:**
|
|
119
|
+
\`\`\`bash
|
|
120
|
+
curl -X POST "https://api.notion.com/v1/search" \\
|
|
121
|
+
-H "Authorization: Bearer $NOTION_TOKEN" \\
|
|
122
|
+
-H "Notion-Version: 2025-09-03" \\
|
|
123
|
+
-H "Content-Type: application/json" \\
|
|
124
|
+
-d '{"query": "page title"}'
|
|
125
|
+
\`\`\`
|
|
126
|
+
|
|
127
|
+
**Get page:**
|
|
128
|
+
\`\`\`bash
|
|
129
|
+
curl "https://api.notion.com/v1/pages/{page_id}" \\
|
|
130
|
+
-H "Authorization: Bearer $NOTION_TOKEN" \\
|
|
131
|
+
-H "Notion-Version: 2025-09-03"
|
|
132
|
+
\`\`\`
|
|
104
133
|
|
|
105
|
-
|
|
134
|
+
**Get page content (blocks):**
|
|
135
|
+
\`\`\`bash
|
|
136
|
+
curl "https://api.notion.com/v1/blocks/{page_id}/children" \\
|
|
137
|
+
-H "Authorization: Bearer $NOTION_TOKEN" \\
|
|
138
|
+
-H "Notion-Version: 2025-09-03"
|
|
106
139
|
\`\`\`
|
|
107
|
-
|
|
140
|
+
|
|
141
|
+
**Create page in a data source:**
|
|
142
|
+
\`\`\`bash
|
|
143
|
+
curl -X POST "https://api.notion.com/v1/pages" \\
|
|
144
|
+
-H "Authorization: Bearer $NOTION_TOKEN" \\
|
|
145
|
+
-H "Notion-Version: 2025-09-03" \\
|
|
146
|
+
-H "Content-Type: application/json" \\
|
|
147
|
+
-d '{
|
|
148
|
+
"parent": {"database_id": "xxx"},
|
|
149
|
+
"properties": {
|
|
150
|
+
"Name": {"title": [{"text": {"content": "New Item"}}]},
|
|
151
|
+
"Status": {"select": {"name": "Todo"}}
|
|
152
|
+
}
|
|
153
|
+
}'
|
|
108
154
|
\`\`\`
|
|
109
155
|
|
|
110
|
-
|
|
156
|
+
**Query a data source (database):**
|
|
157
|
+
\`\`\`bash
|
|
158
|
+
curl -X POST "https://api.notion.com/v1/data_sources/{data_source_id}/query" \\
|
|
159
|
+
-H "Authorization: Bearer $NOTION_TOKEN" \\
|
|
160
|
+
-H "Notion-Version: 2025-09-03" \\
|
|
161
|
+
-H "Content-Type: application/json" \\
|
|
162
|
+
-d '{
|
|
163
|
+
"filter": {"property": "Status", "select": {"equals": "Active"}},
|
|
164
|
+
"sorts": [{"property": "Date", "direction": "descending"}]
|
|
165
|
+
}'
|
|
111
166
|
\`\`\`
|
|
112
|
-
|
|
113
|
-
|
|
167
|
+
|
|
168
|
+
**Create a data source (database):**
|
|
169
|
+
\`\`\`bash
|
|
170
|
+
curl -X POST "https://api.notion.com/v1/data_sources" \\
|
|
171
|
+
-H "Authorization: Bearer $NOTION_TOKEN" \\
|
|
172
|
+
-H "Notion-Version: 2025-09-03" \\
|
|
173
|
+
-H "Content-Type: application/json" \\
|
|
174
|
+
-d '{
|
|
175
|
+
"parent": {"page_id": "xxx"},
|
|
176
|
+
"title": [{"text": {"content": "My Database"}}],
|
|
177
|
+
"properties": {
|
|
178
|
+
"Name": {"title": {}},
|
|
179
|
+
"Status": {"select": {"options": [{"name": "Todo"}, {"name": "Done"}]}},
|
|
180
|
+
"Date": {"date": {}}
|
|
181
|
+
}
|
|
182
|
+
}'
|
|
114
183
|
\`\`\`
|
|
115
184
|
|
|
116
|
-
|
|
185
|
+
**Update page properties:**
|
|
186
|
+
\`\`\`bash
|
|
187
|
+
curl -X PATCH "https://api.notion.com/v1/pages/{page_id}" \\
|
|
188
|
+
-H "Authorization: Bearer $NOTION_TOKEN" \\
|
|
189
|
+
-H "Notion-Version: 2025-09-03" \\
|
|
190
|
+
-H "Content-Type: application/json" \\
|
|
191
|
+
-d '{"properties": {"Status": {"select": {"name": "Done"}}}}'
|
|
117
192
|
\`\`\`
|
|
118
|
-
|
|
119
|
-
|
|
193
|
+
|
|
194
|
+
**Add blocks to page:**
|
|
195
|
+
\`\`\`bash
|
|
196
|
+
curl -X PATCH "https://api.notion.com/v1/blocks/{page_id}/children" \\
|
|
197
|
+
-H "Authorization: Bearer $NOTION_TOKEN" \\
|
|
198
|
+
-H "Notion-Version: 2025-09-03" \\
|
|
199
|
+
-H "Content-Type: application/json" \\
|
|
200
|
+
-d '{
|
|
201
|
+
"children": [
|
|
202
|
+
{"object": "block", "type": "paragraph", "paragraph": {"rich_text": [{"text": {"content": "Hello"}}]}}
|
|
203
|
+
]
|
|
204
|
+
}'
|
|
120
205
|
\`\`\`
|
|
121
206
|
|
|
122
|
-
|
|
207
|
+
## Property Types
|
|
208
|
+
|
|
209
|
+
Common property formats for database items:
|
|
210
|
+
- **Title:** \`{"title": [{"text": {"content": "..."}}]}\`
|
|
211
|
+
- **Rich text:** \`{"rich_text": [{"text": {"content": "..."}}]}\`
|
|
212
|
+
- **Select:** \`{"select": {"name": "Option"}}\`
|
|
213
|
+
- **Multi-select:** \`{"multi_select": [{"name": "A"}, {"name": "B"}]}\`
|
|
214
|
+
- **Date:** \`{"date": {"start": "2024-01-15", "end": "2024-01-16"}}\`
|
|
215
|
+
- **Checkbox:** \`{"checkbox": true}\`
|
|
216
|
+
- **Number:** \`{"number": 42}\`
|
|
217
|
+
- **URL:** \`{"url": "https://..."}\`
|
|
218
|
+
- **Email:** \`{"email": "a@b.com"}\`
|
|
219
|
+
- **Relation:** \`{"relation": [{"id": "page_id"}]}\`
|
|
220
|
+
|
|
221
|
+
## Key Differences in 2025-09-03
|
|
222
|
+
|
|
223
|
+
- **Databases -> Data Sources:** Use \`/data_sources/\` endpoints for queries and retrieval
|
|
224
|
+
- **Two IDs:** Each database now has both a \`database_id\` and a \`data_source_id\`
|
|
225
|
+
- Use \`database_id\` when creating pages (\`parent: {"database_id": "..."}\`)
|
|
226
|
+
- Use \`data_source_id\` when querying (\`POST /v1/data_sources/{id}/query\`)
|
|
227
|
+
- **Search results:** Databases return as \`"object": "data_source"\` with their \`data_source_id\`
|
|
228
|
+
- **Parent in responses:** Pages show \`parent.data_source_id\` alongside \`parent.database_id\`
|
|
229
|
+
- **Finding the data_source_id:** Search for the database, or call \`GET /v1/data_sources/{data_source_id}\`
|
|
230
|
+
|
|
231
|
+
## Notes
|
|
232
|
+
|
|
233
|
+
- Page/database IDs are UUIDs (with or without dashes)
|
|
234
|
+
- The API cannot set database view filters — that's UI-only
|
|
235
|
+
- Rate limit: ~3 requests/second average
|
|
236
|
+
- Use \`is_inline: true\` when creating data sources to embed them in pages
|
|
123
237
|
`,
|
|
124
238
|
provider: "notion",
|
|
125
239
|
binaryName: "notion",
|
|
@@ -128,6 +242,8 @@ Run \`notion --help\` to see all commands.
|
|
|
128
242
|
oauthAuthUrl: "https://api.notion.com/v1/oauth/authorize",
|
|
129
243
|
oauthTokenUrl: "https://api.notion.com/v1/oauth/token",
|
|
130
244
|
scopes: "",
|
|
245
|
+
proxyProvider: "notion",
|
|
246
|
+
useBasicAuth: true,
|
|
131
247
|
getBinaryUrl: (platform, arch) => {
|
|
132
248
|
const targets = {
|
|
133
249
|
"darwin-arm64": "darwin_arm64",
|
|
@@ -726,6 +726,20 @@ async function refreshConnectorTokenForRunner(db, connector) {
|
|
|
726
726
|
body: JSON.stringify({ refresh_token: connector.refresh_token }),
|
|
727
727
|
});
|
|
728
728
|
}
|
|
729
|
+
else if (registryDef?.useBasicAuth) {
|
|
730
|
+
const basicAuth = Buffer.from(`${connector.oauth_client_id}:${connector.oauth_client_secret}`).toString("base64");
|
|
731
|
+
response = await fetch(connector.oauth_token_url, {
|
|
732
|
+
method: "POST",
|
|
733
|
+
headers: {
|
|
734
|
+
"Content-Type": "application/json",
|
|
735
|
+
Authorization: `Basic ${basicAuth}`,
|
|
736
|
+
},
|
|
737
|
+
body: JSON.stringify({
|
|
738
|
+
grant_type: "refresh_token",
|
|
739
|
+
refresh_token: connector.refresh_token,
|
|
740
|
+
}),
|
|
741
|
+
});
|
|
742
|
+
}
|
|
729
743
|
else {
|
|
730
744
|
response = await fetch(connector.oauth_token_url, {
|
|
731
745
|
method: "POST",
|
package/dist/server/index.js
CHANGED
|
@@ -3748,6 +3748,20 @@ VALUES ($1, $2, 'queued', $3, NULL, NULL, $4)
|
|
|
3748
3748
|
body: JSON.stringify({ refresh_token: connector.refresh_token }),
|
|
3749
3749
|
});
|
|
3750
3750
|
}
|
|
3751
|
+
else if (registryDef?.useBasicAuth) {
|
|
3752
|
+
const basicAuth = Buffer.from(`${connector.oauth_client_id}:${connector.oauth_client_secret}`).toString("base64");
|
|
3753
|
+
response = await fetch(connector.oauth_token_url, {
|
|
3754
|
+
method: "POST",
|
|
3755
|
+
headers: {
|
|
3756
|
+
"Content-Type": "application/json",
|
|
3757
|
+
Authorization: `Basic ${basicAuth}`,
|
|
3758
|
+
},
|
|
3759
|
+
body: JSON.stringify({
|
|
3760
|
+
grant_type: "refresh_token",
|
|
3761
|
+
refresh_token: connector.refresh_token,
|
|
3762
|
+
}),
|
|
3763
|
+
});
|
|
3764
|
+
}
|
|
3751
3765
|
else {
|
|
3752
3766
|
response = await fetch(connector.oauth_token_url, {
|
|
3753
3767
|
method: "POST",
|
|
@@ -4008,6 +4022,10 @@ VALUES ($1, $2, 'queued', $3, NULL, NULL, $4)
|
|
|
4008
4022
|
access_type: "offline",
|
|
4009
4023
|
prompt: "consent",
|
|
4010
4024
|
});
|
|
4025
|
+
// Notion requires owner=user for user-level OAuth tokens
|
|
4026
|
+
if (connector.name === "notion") {
|
|
4027
|
+
params.set("owner", "user");
|
|
4028
|
+
}
|
|
4011
4029
|
const url = `${connector.oauth_auth_url}?${params.toString()}`;
|
|
4012
4030
|
return c.json({ url });
|
|
4013
4031
|
});
|
|
@@ -4064,24 +4082,43 @@ VALUES ($1, $2, 'queued', $3, NULL, NULL, $4)
|
|
|
4064
4082
|
oauthStateStore.delete(state);
|
|
4065
4083
|
const workspaceName = c.get("workspace");
|
|
4066
4084
|
const db = c.get("db");
|
|
4067
|
-
const result = await db.query(`SELECT id, oauth_client_id, oauth_client_secret, oauth_token_url, redirect_uri
|
|
4085
|
+
const result = await db.query(`SELECT id, name, oauth_client_id, oauth_client_secret, oauth_token_url, redirect_uri
|
|
4068
4086
|
FROM connectors WHERE id = $1 LIMIT 1`, [stateEntry.connectorId]);
|
|
4069
4087
|
if (result.rows.length === 0) {
|
|
4070
4088
|
return c.html("<html><body><h2>Error</h2><p>Connector not found.</p></body></html>", 404);
|
|
4071
4089
|
}
|
|
4072
4090
|
const connector = result.rows[0];
|
|
4091
|
+
const connRegistryDef = connectorRegistry_1.CONNECTOR_REGISTRY.find((d) => d.name === connector.name);
|
|
4073
4092
|
// Exchange code for tokens
|
|
4074
|
-
|
|
4075
|
-
|
|
4076
|
-
|
|
4077
|
-
|
|
4078
|
-
|
|
4079
|
-
|
|
4080
|
-
|
|
4081
|
-
|
|
4082
|
-
|
|
4083
|
-
|
|
4084
|
-
|
|
4093
|
+
let tokenResponse;
|
|
4094
|
+
if (connRegistryDef?.useBasicAuth) {
|
|
4095
|
+
const basicAuth = Buffer.from(`${connector.oauth_client_id}:${connector.oauth_client_secret}`).toString("base64");
|
|
4096
|
+
tokenResponse = await fetch(connector.oauth_token_url, {
|
|
4097
|
+
method: "POST",
|
|
4098
|
+
headers: {
|
|
4099
|
+
"Content-Type": "application/json",
|
|
4100
|
+
Authorization: `Basic ${basicAuth}`,
|
|
4101
|
+
},
|
|
4102
|
+
body: JSON.stringify({
|
|
4103
|
+
grant_type: "authorization_code",
|
|
4104
|
+
code,
|
|
4105
|
+
redirect_uri: connector.redirect_uri,
|
|
4106
|
+
}),
|
|
4107
|
+
});
|
|
4108
|
+
}
|
|
4109
|
+
else {
|
|
4110
|
+
tokenResponse = await fetch(connector.oauth_token_url, {
|
|
4111
|
+
method: "POST",
|
|
4112
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
4113
|
+
body: new URLSearchParams({
|
|
4114
|
+
grant_type: "authorization_code",
|
|
4115
|
+
code,
|
|
4116
|
+
client_id: connector.oauth_client_id,
|
|
4117
|
+
client_secret: connector.oauth_client_secret,
|
|
4118
|
+
redirect_uri: connector.redirect_uri,
|
|
4119
|
+
}),
|
|
4120
|
+
});
|
|
4121
|
+
}
|
|
4085
4122
|
if (!tokenResponse.ok) {
|
|
4086
4123
|
const errorBody = await tokenResponse.text().catch(() => "");
|
|
4087
4124
|
console.error(`OAuth token exchange failed: ${tokenResponse.status} ${errorBody}`);
|
|
@@ -67,7 +67,7 @@ async function disconnectConnector(db, connectorId) {
|
|
|
67
67
|
refresh_token = NULL, token_expires_at = NULL
|
|
68
68
|
WHERE id = $1`, [connectorId]);
|
|
69
69
|
}
|
|
70
|
-
async function refreshConnectorToken(db, connector, proxyUrl, proxyProvider, hasCustomCredentials) {
|
|
70
|
+
async function refreshConnectorToken(db, connector, proxyUrl, proxyProvider, hasCustomCredentials, useBasicAuth) {
|
|
71
71
|
if (connector.auth_type === "api_key") {
|
|
72
72
|
return connector.access_token;
|
|
73
73
|
}
|
|
@@ -85,6 +85,20 @@ async function refreshConnectorToken(db, connector, proxyUrl, proxyProvider, has
|
|
|
85
85
|
body: JSON.stringify({ refresh_token: connector.refresh_token }),
|
|
86
86
|
});
|
|
87
87
|
}
|
|
88
|
+
else if (useBasicAuth) {
|
|
89
|
+
const basicAuth = Buffer.from(`${connector.oauth_client_id}:${connector.oauth_client_secret}`).toString("base64");
|
|
90
|
+
response = await fetch(connector.oauth_token_url, {
|
|
91
|
+
method: "POST",
|
|
92
|
+
headers: {
|
|
93
|
+
"Content-Type": "application/json",
|
|
94
|
+
Authorization: `Basic ${basicAuth}`,
|
|
95
|
+
},
|
|
96
|
+
body: JSON.stringify({
|
|
97
|
+
grant_type: "refresh_token",
|
|
98
|
+
refresh_token: connector.refresh_token,
|
|
99
|
+
}),
|
|
100
|
+
});
|
|
101
|
+
}
|
|
88
102
|
else {
|
|
89
103
|
response = await fetch(connector.oauth_token_url, {
|
|
90
104
|
method: "POST",
|
package/package.json
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,sans-serif;color:#37352f;background:#fff}*{box-sizing:border-box;margin:0;padding:0}*{scrollbar-color:rgba(0,0,0,.25) transparent}*::-webkit-scrollbar{width:8px;height:8px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background:#00000040;border-radius:9999px}*::-webkit-scrollbar-thumb:hover{background:#00000059}body,html,#root{width:100%;height:100%}button{font-family:inherit}textarea::placeholder{color:#c4c3bf}select{cursor:pointer}@keyframes pulse{0%,to{opacity:.2;transform:scale(1)}50%{opacity:.06;transform:scale(1.6)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.app-shell{height:100%;display:flex;overflow:hidden;background:#fff}.sidebar{width:220px;background:#f7f7f5;display:flex;flex-direction:column;flex-shrink:0}.workspace-btn{width:100%;padding:14px 14px 8px;border:none;background:transparent;cursor:pointer;display:flex;align-items:center;gap:10px;text-align:left;font-family:inherit}.workspace-logo{width:20px;height:20px;border-radius:5px;background:linear-gradient(135deg,#2383e2,#1d6fbe);color:#fff;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}.workspace-name{font-size:14px;font-weight:600;color:#37352f;flex:1}.workspace-chevron-icon{color:#b0afa8;transition:transform .15s ease;flex-shrink:0}.workspace-chevron-icon.open{transform:rotate(180deg)}.workspace-dropdown{position:absolute;top:100%;left:8px;right:8px;background:#fff;border-radius:10px;box-shadow:0 4px 16px #0000001a;z-index:100;padding:6px;animation:fadeIn .12s ease}.workspace-option{padding:7px 10px;border-radius:6px;display:flex;align-items:center;gap:9px;cursor:pointer}.workspace-option:hover,.workspace-option.active{background:#f7f7f5}.workspace-option .ws-label{font-size:13px;color:#9b9a97}.workspace-option.active .ws-label{font-weight:600;color:#37352f}.sidebar-nav{margin-top:6px;padding:2px 10px;display:flex;flex-direction:column;gap:2px}.sidebar-item{padding:7px 10px;border-radius:7px;background:transparent;border:none;display:flex;align-items:center;gap:10px;cursor:pointer;font-size:14px;font-weight:500;color:#91918e;text-align:left;font-family:inherit;transition:background .12s,color .12s}.sidebar-item:hover{background:#0000000a;color:#37352f}.sidebar-item.active{background:#0000000d;font-weight:600;color:#37352f}.sidebar-badge{margin-left:auto;font-size:10px;font-weight:700;background:#eb5757;color:#fff;padding:1px 6px;border-radius:8px;line-height:1.4}.sidebar-plans,.sidebar-services{margin-top:10px;padding:0 10px;min-height:0}.sidebar-services-title{padding:4px 10px 6px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#b0afa8}.sidebar-services-list{display:flex;flex-direction:column;gap:2px;max-height:150px;overflow-y:auto;padding-right:2px}.sidebar-service-row{position:relative}.sidebar-service-item{border:none;background:transparent;text-align:left;width:100%;border-radius:8px;padding:5px 24px 5px 10px;cursor:pointer;font-family:inherit;transition:background .12s ease;display:flex;align-items:center;gap:6px;color:#91918e}.sidebar-service-item:hover{background:#0000000a;color:#37352f}.sidebar-service-item.active{background:#0000000f;color:#37352f}.sidebar-service-title{font-size:13px;font-weight:500;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-service-dot{width:7px;height:7px;border-radius:50%;background:#b0afa8;flex-shrink:0}.sidebar-service-dot.running{background:#2fa67e}.sidebar-service-stop{position:absolute;right:7px;top:50%;transform:translateY(-50%);border:none;background:#f7f7f5;color:#9b9a97;width:16px;height:16px;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;pointer-events:none;transition:opacity .12s ease,background .12s ease,color .12s ease}.sidebar-service-row:hover .sidebar-service-stop{opacity:1;pointer-events:auto}.sidebar-service-stop:hover{background:#ecebe8;color:#6f6e69}.sidebar-services-header{display:flex;align-items:center;justify-content:space-between;padding-right:10px}.sidebar-processes-add-btn{border:none;background:transparent;color:#b0afa8;cursor:pointer;padding:2px;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;transition:background .12s ease,color .12s ease}.sidebar-processes-add-btn:hover{background:#0000000a;color:#37352f}.sidebar-service-actions{position:absolute;right:7px;top:50%;transform:translateY(-50%);display:flex;gap:2px;opacity:0;pointer-events:none;transition:opacity .12s ease}.sidebar-service-row:hover .sidebar-service-actions{opacity:1;pointer-events:auto}.sidebar-service-action-btn{border:none;background:#f7f7f5;color:#9b9a97;width:18px;height:18px;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background .12s ease,color .12s ease}.sidebar-service-action-btn:hover{background:#ecebe8;color:#6f6e69}.sidebar-service-action-btn:disabled{opacity:.5;cursor:default}.sidebar-service-play-btn:hover{color:#2fa67e}.sidebar-service-restart-btn:hover{color:#d97706}.sidebar-process-add-form{display:flex;flex-direction:column;gap:4px;padding:4px 10px 8px}.sidebar-process-add-input{border:1px solid #E3E2DE;border-radius:6px;padding:4px 8px;font-size:12px;font-family:inherit;background:#fff;outline:none;transition:border-color .12s ease}.sidebar-process-add-input:focus{border-color:#2383e2}.sidebar-process-add-actions{display:flex;gap:4px;margin-top:2px}.sidebar-process-add-submit{border:none;background:#2383e2;color:#fff;border-radius:6px;padding:3px 10px;font-size:11px;font-weight:600;cursor:pointer;font-family:inherit}.sidebar-process-add-submit:disabled{opacity:.5;cursor:default}.sidebar-process-add-cancel{border:none;background:transparent;color:#9b9a97;border-radius:6px;padding:3px 8px;font-size:11px;cursor:pointer;font-family:inherit}.sidebar-process-add-cancel:hover{color:#37352f}.sidebar-plans-title{padding:4px 10px 6px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#b0afa8}.sidebar-plans-list{display:flex;flex-direction:column;gap:2px;max-height:180px;overflow-y:auto;padding-right:2px}.sidebar-plan-item{border:none;background:transparent;text-align:left;width:100%;border-radius:8px;padding:5px 10px;cursor:pointer;font-family:inherit;transition:background .12s ease}.sidebar-plan-item:hover{background:#0000000a}.sidebar-plan-item.active{background:#0000000f}.sidebar-plan-item-title{font-size:13px;font-weight:500;color:#91918e;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-plan-item:hover .sidebar-plan-item-title,.sidebar-plan-item.active .sidebar-plan-item-title{color:#37352f}.sidebar-chats{margin-top:10px;padding:0 10px;min-height:0;flex:1;display:flex;flex-direction:column;overflow:hidden}.sidebar-chats-header{display:flex;align-items:center;justify-content:space-between;padding:4px 10px 6px}.sidebar-chats-title{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#b0afa8}.sidebar-new-chat-btn{display:flex;align-items:center;gap:6px;border:none;background:transparent;font-family:inherit;font-size:13px;font-weight:500;color:#91918e;cursor:pointer;padding:5px 10px;border-radius:8px;width:100%;text-align:left;transition:background .12s ease,color .12s ease}.sidebar-new-chat-icon{flex-shrink:0;stroke-width:1.75}.sidebar-new-chat-btn:hover{background:#0000000a;color:#37352f}.sidebar-new-chat-btn.active{background:#0000000d;font-weight:600;color:#37352f}.sidebar-chats-list{display:flex;flex-direction:column;gap:2px;overflow-y:auto;padding-right:2px;flex:1;min-height:0;scrollbar-width:none;-ms-overflow-style:none}.sidebar-chats-list::-webkit-scrollbar{display:none}.sidebar-chat-item{border:none;background:transparent;text-align:left;width:100%;border-radius:8px;padding:5px 24px 5px 10px;cursor:pointer;font-family:inherit;transition:background .12s ease;display:flex;align-items:center;gap:6px}.sidebar-chat-spinner{flex-shrink:0;margin-left:auto;color:#2383e2;animation:sidebar-chat-spin .8s linear infinite}@keyframes sidebar-chat-spin{to{transform:rotate(360deg)}}.sidebar-chat-unread-dot{flex-shrink:0;margin-left:auto;width:7px;height:7px;border-radius:50%;background:#2383e2}.sidebar-chat-row{position:relative}.sidebar-chat-item:hover{background:#0000000a}.sidebar-chat-item.active{background:#0000000f}.sidebar-chat-item.active .sidebar-chat-item-title{color:#37352f}.sidebar-chat-item-title{font-size:13px;font-weight:500;color:#91918e;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.sidebar-chat-item:hover .sidebar-chat-item-title{color:#37352f}.sidebar-chat-hide{position:absolute;right:7px;top:50%;transform:translateY(-50%);border:none;background:#f7f7f5;color:#9b9a97;width:16px;height:16px;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;pointer-events:none;transition:opacity .12s ease,background .12s ease,color .12s ease}.sidebar-chat-row:hover .sidebar-chat-hide{opacity:1;pointer-events:auto}.sidebar-chat-hide:hover{background:#ecebe8;color:#6f6e69}.sidebar-chat-empty{padding:6px 10px;font-size:11px;color:#9b9a97}.sidebar-footer-settings{margin:auto 10px 10px}.avatar{border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-weight:600}.main-column{min-width:0;display:flex;flex-direction:column;flex:1}.feed-page{position:relative;flex:1;min-height:0;display:flex;flex-direction:column}.main-topbar{padding:12px 22px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0;position:relative;z-index:1}.main-topbar h1{font-size:14px;font-weight:600;color:#37352f;margin:0}.feed{flex:1;min-height:0;overflow-y:auto;padding:0 20px 24px}.section-label{padding:24px 4px 10px;display:flex;align-items:center;gap:7px;-webkit-user-select:none;user-select:none}.section-label:not(:first-child){border-top:1px solid #F0EFEC}.section-label-text{font-size:12.5px;font-weight:600;color:#37352f;letter-spacing:.3px}.section-count{font-size:11px;font-weight:500;color:#9b9a97}.section-count.badge{padding:1px 7px;border-radius:10px;background:#eb5757;color:#fff;font-weight:600;font-size:10.5px}.section-label-action{margin-left:auto;font-size:12px;color:#9b9a97;cursor:pointer;background:none;border:none;padding:0}.section-label-action:hover{color:#37352f}.section-collapse-btn{background:none;border:none;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;width:16px;height:16px;color:#c4c3bf;transition:color .15s,transform .2s ease;flex-shrink:0}.section-collapse-btn:hover{color:#787774}.section-collapse-btn svg{width:10px;height:10px}.section-collapse-btn.collapsed{transform:rotate(-90deg)}.section-content{overflow:hidden;transition:max-height .2s ease,opacity .2s ease}.section-content.collapsed{max-height:0!important;opacity:0;pointer-events:none}.needs-you-card{padding:14px 16px;background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 4%,#fff),#fff 50%);border-radius:12px;cursor:pointer;box-shadow:0 1px 4px #0000000f,0 0 0 1px #00000008;display:flex;align-items:center;gap:12px;border-left:3px solid var(--accent);transition:all .15s ease}.needs-you-card:hover{background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 5%,#FAFAF8),#fafaf8 50%);box-shadow:0 3px 10px #00000012,0 0 0 1px #00000008;transform:translateY(-1px)}.needs-you-card.urgent{background:linear-gradient(90deg,#fffaf8,#fff 50%)}.needs-you-card.urgent:hover{background:linear-gradient(90deg,#fff7f4,#fafaf8 50%)}.needs-you-title{font-size:14px;font-weight:600;color:#37352f;line-height:1.4;margin-bottom:3px}.needs-you-subtitle{font-size:12px;color:#787774;line-height:1.35}.needs-you-action{padding:6px 16px;border-radius:8px;border:none;color:#fff;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;flex-shrink:0;transition:filter .12s,transform .12s}.needs-you-action:hover{filter:brightness(1.1);transform:translateY(-.5px)}.needs-you-action:active{transform:scale(.97)}.needs-you-card-wrap,.active-task-row-wrap{position:relative;display:flex;align-items:center}.needs-you-card-wrap>.followup-chain-number-wrap,.active-task-row-wrap>.followup-chain-number-wrap{margin-top:-3px}.needs-you-card-wrap>.needs-you-card,.active-task-row-wrap>.task-row{flex:1;min-width:0}.followup-item{margin-top:-3px}.followup-chain-number-wrap{position:relative;display:flex;align-items:center;justify-content:center;width:24px;flex-shrink:0;margin-right:2px;overflow:visible}.followup-chain-number-wrap.has-line:after{content:"";position:absolute;left:50%;top:50%;height:40px;width:1px;background:#d5d4d0;transform:translate(-50%);z-index:0}.followup-item .followup-chain-number-wrap:before{content:"";position:absolute;left:50%;bottom:50%;height:40px;width:1px;background:#d5d4d0;transform:translate(-50%);z-index:0}.followup-chain-number{display:flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:4px;background:#f0eff0;color:#6b6a68;font-size:10px;font-weight:600;line-height:1;position:relative;z-index:1}.followup-add-btn{width:22px;height:22px;border-radius:6px;border:1.5px solid #E0DFDC;background:#fff;color:#9b9a97;font-size:14px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;flex-shrink:0;transition:all .12s ease;line-height:1}.followup-add-btn:hover{border-color:#4b83d6;color:#4b83d6;background:#f0f6ff}.followup-popover{position:relative;margin-top:4px;padding:12px;background:#fff;border-radius:10px;box-shadow:0 4px 16px #0000001a,0 1px 3px #0000000f;border:1px solid #E0DFDC;z-index:10}.followup-popover-header{font-size:12px;font-weight:600;color:#37352f;margin-bottom:8px}.followup-popover-input{width:100%;padding:8px 10px;border:1px solid #E0DFDC;border-radius:6px;font-size:13px;font-family:inherit;resize:vertical;min-height:48px;color:#37352f;background:#fafaf8;box-sizing:border-box}.followup-popover-input:focus{outline:none;border-color:#4b83d6;box-shadow:0 0 0 2px #4b83d626}.followup-popover-actions{display:flex;justify-content:flex-end;gap:6px;margin-top:8px}.followup-popover-cancel{padding:5px 12px;border:1px solid #E0DFDC;border-radius:6px;background:#fff;color:#9b9a97;font-size:12px;font-weight:500;cursor:pointer;font-family:inherit}.followup-popover-cancel:hover{background:#fafaf8}.followup-popover-submit{padding:5px 14px;border:none;border-radius:6px;background:#4b83d6;color:#fff;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit}.followup-popover-submit:hover{background:#3d72c0}.followup-popover-submit:disabled{opacity:.5;cursor:default}.task-row{padding:9px 12px;cursor:pointer;display:flex;align-items:center;gap:9px;border-radius:8px;transition:background .12s}.task-row:hover{background:#f9f9f7}.task-dot{position:relative;width:16px;height:16px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.task-dot-inner{width:10px;height:10px;border-radius:50%;opacity:.85}.task-dot-pulse{position:absolute;width:16px;height:16px;border-radius:50%;opacity:.2;animation:pulse 2.5s ease-in-out infinite}.task-done-check{width:18px;height:18px;border-radius:5px;display:flex;align-items:center;justify-content:center;font-size:10px;flex-shrink:0}.task-suggested-circle{width:16px;height:16px;border-radius:8px;flex-shrink:0;box-sizing:border-box}.task-title{font-size:13px;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.task-title.active{font-weight:500;color:#37352f}.task-title.done{font-weight:400;color:#c4c3bf;text-decoration:line-through;text-decoration-thickness:1px;text-decoration-color:#e8e7e4}.task-title.failed{font-weight:400;color:#eb5757;text-decoration:line-through;text-decoration-color:#f5c4c0}.task-title.suggested{font-weight:500;color:#9b9a97}.task-meta-right{display:flex;align-items:center;gap:8px;flex-shrink:0}.type-tag{font-size:10px;font-weight:600;padding:2px 8px;border-radius:6px}.progress-bar{width:40px;height:4px;background:#f0efec;border-radius:2px;overflow:hidden}.progress-fill{height:100%;border-radius:2px;opacity:.6}.task-time{font-size:11px;color:#c4c3bf}.task-source{font-size:10.5px;color:#d3d1cc;flex-shrink:0}.suggested-actions{display:flex;align-items:center;gap:3px;flex-shrink:0}.dismiss-btn{width:22px;height:22px;border-radius:6px;border:none;background:transparent;color:#c4c3bf;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center}.go-btn{padding:3px 10px;border-radius:6px;background:transparent;font-size:11px;font-weight:600;cursor:pointer;font-family:inherit}.followup-context-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 8px;margin-bottom:4px;background:#e8f0fe;border-radius:8px;font-size:12px;color:#37352f;line-height:1.4}.followup-context-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.followup-context-text strong{font-weight:600}.followup-context-cancel{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:20px;height:20px;border:none;background:transparent;color:#6f6e69;border-radius:4px;cursor:pointer;padding:0}.followup-context-cancel:hover{background:#0000000f;color:#37352f}.input-wrap{padding:8px 18px 24px;flex-shrink:0;display:flex;justify-content:center;position:relative;z-index:60}.input-container{position:relative;display:flex;flex-direction:column;align-items:stretch;background:#f7f7f5;border-radius:14px;padding:10px;width:100%;max-width:840px;min-width:0;box-shadow:0 1px 3px #0000000f}.input-selector{position:relative;flex-shrink:0}.selector-btn{padding:4px 2px;border-radius:6px;border:none;background:transparent;color:#6f6e69;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;display:flex;align-items:center;gap:5px;white-space:nowrap}.selector-btn-static{cursor:default;color:#5f5d58}.selector-dropdown{position:absolute;bottom:100%;left:0;margin-bottom:8px;background:#fff;border-radius:10px;box-shadow:0 4px 16px #0000001a;padding:4px;z-index:50;animation:fadeIn .1s ease;min-width:180px}.selector-dropdown-title{padding:6px 10px 5px;font-size:11px;font-weight:700;color:#9b9a97}.selector-dropdown-wide{min-width:210px}.selector-dropdown-right{left:auto;right:0}.selector-option{padding:8px 12px;border-radius:7px;cursor:pointer;display:flex;align-items:center;gap:10px;transition:background .1s}.selector-option:hover{background:#fafaf8}.selector-option.active{background:#f7f7f5}.selector-option-label{font-size:13px;font-weight:600;color:#37352f}.selector-option-desc{font-size:11px;color:#c4c3bf}.selector-divider{height:1px;background:#ecebe8;margin:4px 0}.selector-configure{padding:8px 12px;border-radius:7px;cursor:pointer;font-size:12px;font-weight:600;color:#6f6e69}.selector-configure:hover{background:#fafaf8}.selector-empty{padding:8px 10px;font-size:12px;color:#9b9a97}.input-textarea{width:100%;background:transparent;border:none;outline:none;color:#37352f;font-size:14px;font-family:inherit;resize:none;overflow-y:hidden;line-height:1.55;padding:6px 4px 10px}.input-textarea::placeholder{color:#c4c3bf}.input-bottom-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.input-left-tools{display:flex;align-items:center;gap:12px}.attach-btn{border:none;background:transparent;color:#b0afa8;border-radius:7px;width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:color .15s ease,background .15s ease}.attach-btn:hover{background:#0000000a;color:#6f6e69}.attachment-chips{display:flex;flex-wrap:wrap;gap:6px;padding:2px 4px 8px}.attachment-chip{display:inline-flex;align-items:center;gap:4px;background:#edece9;border-radius:7px;padding:4px 6px 4px 9px;font-size:12px;font-weight:500;color:#37352f;max-width:200px;transition:background .15s ease}.attachment-chip:hover{background:#e5e4e0}.attachment-chip-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attachment-chip-remove{border:none;background:transparent;color:#9b9a97;cursor:pointer;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:4px;width:16px;height:16px;flex-shrink:0;transition:background .15s ease,color .15s ease}.attachment-chip-remove:hover{background:#00000014;color:#37352f}.input-actions{display:flex;align-items:center;gap:5px;flex-shrink:0}.input-settings-btn{width:24px;height:24px;border-radius:6px;border:none;background:transparent;color:#6f6e69;cursor:pointer;font-family:inherit;display:inline-flex;align-items:center;justify-content:center;padding:0}.input-settings-btn:hover{background:#f7f7f5}.input-settings-btn:disabled{opacity:.55;cursor:default}.agent-selector-btn{max-width:140px}.agent-selector-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.send-btn{width:32px;height:32px;border-radius:10px;border:none;color:#fff;cursor:pointer;font-family:inherit;display:inline-flex;align-items:center;justify-content:center;padding:0;transition:transform .15s ease,opacity .15s ease,background .15s ease}.send-btn:hover:not(:disabled){transform:scale(1.05)}.send-btn:active:not(:disabled){transform:scale(.95)}.send-btn:disabled{opacity:.4;cursor:default}.send-btn-stop{background:#e03e3e!important;border-radius:10px}.send-btn-stop:hover{background:#c73131!important}.conv-page{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;animation:convPageIn .2s ease-out;background:#fff}@keyframes convPageIn{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}.conv-header{display:flex;align-items:center;justify-content:space-between;padding:14px;flex-shrink:0;position:relative;z-index:1;border-bottom:1px solid #f0efec}.conv-header-left{display:flex;align-items:center;gap:10px;min-width:0;overflow:hidden}.conv-header-right{display:flex;align-items:center;gap:10px;min-width:0}.conv-header-delete-plan-btn{display:inline-flex;align-items:center;gap:5px;border:1px solid #e8d5d5;background:transparent;color:#c4443a;padding:4px 10px;border-radius:6px;font-size:12px;font-weight:500;font-family:inherit;cursor:pointer;transition:background .15s ease,color .15s ease,border-color .15s ease;white-space:nowrap}.conv-header-delete-plan-btn:hover{background:#fdf0f0;border-color:#e0a8a5;color:#b83830}.conv-header-delete-plan-btn:disabled{opacity:.45;cursor:default}.conv-mode-indicator{width:8px;height:8px;border-radius:50%;background:#c4c3bf;flex-shrink:0;position:relative}.conv-mode-indicator.chat{background:#4b83d6}.conv-mode-indicator.plan{background:#e09b3d}.conv-mode-indicator.execute{background:#4b83d6}.conv-header-title{font-size:13px;font-weight:600;color:#37352f;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;letter-spacing:-.01em}.conv-header-agent{display:inline-flex;align-items:center;gap:6px;min-width:0;padding:3px 8px 3px 4px;border-radius:8px;background:#fafaf8;border:1px solid #f0efec;transition:background .15s ease}.conv-header-agent:hover{background:#f3f2ef}.conv-header-agent-avatar{width:22px;height:22px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;font-size:13px;background:#f0efec;flex-shrink:0}.conv-header-agent-name{font-size:12px;font-weight:500;color:#6f6e69;max-width:180px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@keyframes streamPulse{0%,to{opacity:.25}50%{opacity:1}}@keyframes streamDotBounce{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}.conv-streaming-dot{width:6px;height:6px;border-radius:50%;background:#4b83d6;animation:streamPulse 1.2s ease-in-out infinite,streamDotBounce 1.2s ease-in-out infinite;flex-shrink:0}.conv-streaming-label{color:#9b9a97;font-size:12px;font-weight:500;animation:streamPulse 1.5s ease-in-out infinite}.conv-thinking-indicator{display:flex;align-items:center;gap:4px;padding:12px 4px 8px 36px}@keyframes thinkingBounce{0%,80%,to{transform:translateY(0);opacity:.3}40%{transform:translateY(-4px);opacity:1}}.conv-thinking-dot{width:6px;height:6px;border-radius:50%;background:#b0afa8;animation:thinkingBounce 1.4s ease-in-out infinite}.conv-thinking-dot:nth-child(2){animation-delay:.16s}.conv-thinking-dot:nth-child(3){animation-delay:.32s}.conv-back-btn{display:inline-flex;align-items:center;gap:5px;border:none;background:transparent;color:#9b9a97;font-size:13px;font-weight:500;font-family:inherit;cursor:pointer;padding:5px 8px 5px 4px;border-radius:7px;transition:background .15s ease,color .15s ease;flex-shrink:0}.conv-back-btn:hover{background:#f5f4f2;color:#37352f}.conv-header-separator{width:1px;height:16px;background:#eeede9;flex-shrink:0}.conv-body{flex:1;min-height:0;padding:0 14px 12px;overflow:hidden;display:flex;flex-direction:column}.conv-body-split{padding:0 14px 12px;display:grid;grid-template-columns:minmax(0,54%) auto minmax(0,46%);gap:0}.conv-chat-side{min-width:0;min-height:0;display:flex;flex-direction:column;gap:12px}.conv-chat-side .conv-messages{height:auto;flex:1}.conv-output-side{padding-left:0;min-width:0;min-height:0;overflow:hidden;display:flex;flex-direction:column}.conv-resize-handle{width:24px;display:flex;align-items:center;justify-content:center;cursor:col-resize;position:relative;flex-shrink:0;z-index:2}.conv-resize-handle:before{content:"";position:absolute;top:0;bottom:0;left:50%;width:1px;background:#f0efec;transform:translate(-.5px)}.conv-resize-handle:after{content:"";width:24px;height:24px;border-radius:50%;background:#fff;border:1px solid #e0dfdb;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 1px 3px #00000014;z-index:-1}.conv-resize-handle svg{position:relative;z-index:1;color:#9b9a97;transition:color .15s}.conv-resize-handle:hover svg{color:#37352f}.conv-resize-handle:hover:after{border-color:#c8c7c3;box-shadow:0 1px 4px #0000001f}.conv-resize-handle:active:after{background:#f7f6f3;border-color:#b0afab}.conv-output-side-plan{justify-content:space-between}.conv-output-side-plan .plan-proposal-panel{flex:1;min-height:0}.conv-plan-actions{display:flex;gap:8px;justify-content:flex-end;padding:12px 0 4px;border-top:1px solid #f0efec;flex-shrink:0}.conv-output-side-execute{justify-content:space-between}.conv-output-side-execute .output-panel{flex:1;min-height:0}.conv-execute-actions{display:flex;flex-direction:column;gap:8px;padding:12px 0 4px;border-top:1px solid #f0efec;flex-shrink:0}.conv-execute-actions-row{display:flex;justify-content:space-between;align-items:center;gap:10px}.conv-messages{height:100%;min-height:0;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;gap:4px;padding:8px 4px 0}.conv-msg{display:flex;gap:10px;padding:10px 4px;animation:msgFadeIn .2s ease-out}@keyframes msgFadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.conv-msg-user{justify-content:flex-end}.conv-msg-bubble{max-width:78%;background:#37352f;color:#fff;border-radius:18px 18px 4px;padding:10px 16px;overflow:hidden;word-break:break-word;box-shadow:0 1px 3px #00000014}.conv-msg-avatar{width:26px;height:26px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:2px}.conv-msg-avatar-emoji{font-size:15px;line-height:1}.conv-msg-user .conv-msg-text{color:#fff}.conv-msg-assistant .conv-msg-avatar{background:#edf2fb;color:#4b83d6}.conv-msg-body{flex:1;min-width:0;overflow:hidden}.conv-msg-role{font-size:11px;font-weight:600;color:#b0afa8;margin-bottom:4px;letter-spacing:.02em}.conv-msg-text{white-space:pre-wrap;font-size:13.5px;color:#37352f;line-height:1.6;word-break:break-word}.conv-msg-markdown{font-size:13.5px;color:#37352f;line-height:1.6;overflow-x:hidden;word-break:break-word}.conv-msg-markdown>:first-child{margin-top:0}.conv-msg-markdown>:last-child{margin-bottom:0}.conv-msg-markdown p,.conv-msg-markdown ul,.conv-msg-markdown ol,.conv-msg-markdown pre,.conv-msg-markdown blockquote{margin:.5em 0}.conv-msg-markdown ul,.conv-msg-markdown ol{padding-left:1.25rem}.conv-msg-markdown li{margin:.15em 0}.conv-msg-markdown code{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:12px;background:#f0eeea;border-radius:5px;padding:.15em .4em;color:#37352f}.conv-msg-markdown pre{background:#f7f6f3;border-radius:10px;padding:12px 14px;overflow-x:auto;border:1px solid #eeedea}.conv-msg-markdown pre code{font-size:12px;background:transparent;padding:0;border-radius:0}.conv-msg-markdown a{color:#2383e2;text-decoration:none}.conv-msg-markdown a:hover{text-decoration:underline}.conv-msg-markdown blockquote{border-left:3px solid #e0dfdc;padding-left:12px;color:#6f6e69}.conv-msg-markdown table{border-collapse:collapse;width:100%;max-width:100%;margin:.5em 0;font-size:12px;display:block;overflow-x:auto;border-radius:8px}.conv-msg-markdown th,.conv-msg-markdown td{border:1px solid #eeedea;padding:6px 10px;text-align:left}.conv-msg-markdown th{background:#f7f6f3;font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.03em;color:#6f6e69}.conv-msg-markdown tr:nth-child(2n){background:#fcfcfb}.conv-tool{display:flex;align-items:center;gap:6px;padding:3px 4px 3px 36px;font-size:12px;color:#c4c3bf;min-width:0;overflow:hidden;transition:color .15s ease}.conv-tool-label{font-weight:600;color:#b0afa8;flex-shrink:0}.conv-tool-summary{font-family:SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:11px;color:#c4c3bf;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.conv-tool-group{display:flex;align-items:center;gap:6px;padding:5px 10px 5px 12px;font-size:12px;color:#9b9a97;cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:8px;background:#f7f6f3;transition:color .15s ease,background .15s ease;position:relative;z-index:1}.conv-tool-group:hover{color:#6f6e69;background:#f0efec}.conv-tool-group-summary{flex:1;min-width:0}.conv-tool-group-chevron{opacity:.4;transition:transform .15s ease,opacity .15s ease;flex-shrink:0}.conv-tool-group:hover .conv-tool-group-chevron{opacity:.6}.conv-tool-group-chevron.expanded{transform:rotate(90deg)}.conv-tool-group-items{padding:2px 0 2px 22px;border-left:2px solid rgba(176,175,168,.12);margin-left:16px;margin-top:2px}.conv-tool-group-items .conv-tool{padding-left:8px}.conv-status{display:flex;align-items:center;gap:7px;padding:6px 4px 6px 36px;font-size:12px;color:#b0afa8}.conv-question-card{margin:6px 0;padding:10px 14px;border:1px solid #E8E7E4;border-radius:10px;background:#fafaf9;animation:msgFadeIn .2s ease-out}.conv-question-text{font-size:13px;color:#37352f;line-height:1.45;font-weight:500}.conv-question-details{margin-top:4px;font-size:12px;color:#787774;line-height:1.4}.conv-input-has-options{padding-top:0}.conv-input-options{display:flex;flex-direction:column;gap:6px;padding:12px 6px 8px;border-bottom:1px solid #EBEBEA;margin-bottom:6px}.conv-input-options-title{font-size:12.5px;font-weight:500;color:#6b6b66;padding:0 4px 2px;line-height:1.35}.conv-input-option-btn{display:block;width:100%;text-align:left;padding:8px 12px;font-size:13px;font-family:inherit;font-weight:500;color:#37352f;background:#fff;border:1px solid #DDDCD9;border-radius:8px;cursor:pointer;transition:background .1s,border-color .1s,box-shadow .1s;line-height:1.35;box-shadow:0 1px 2px #0000000a}.conv-input-option-btn:hover{background:#fafaf9;border-color:#c4c3bf;box-shadow:0 1px 3px #00000014}.conv-input-option-btn:active{background:#f0efed;border-color:#b8b7b3;box-shadow:none}.conv-footer{padding:12px 14px 16px;display:flex;flex-direction:column;gap:10px;flex-shrink:0;border-top:1px solid #f0efec}.conv-footer-row{display:flex;justify-content:space-between;align-items:center;gap:10px}.conv-footer-end{justify-content:flex-end}.conv-test-commands-row{display:flex;flex-direction:column;gap:6px}.conv-test-commands-list{display:flex;flex-wrap:wrap;gap:6px}.conv-test-command-btn{border:1px solid #e0dfdc;background:#fff;color:#37352f;border-radius:8px;padding:7px 12px;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease}.conv-test-command-btn:hover{background:#f7f7f5;border-color:#d4d3cf;box-shadow:0 1px 3px #0000000a}.conv-test-command-btn:disabled{opacity:.55;cursor:default}.conv-test-result{font-size:12px;font-weight:500;padding:4px 8px;border-radius:6px}.conv-test-result.ok{color:#1c7a5c;background:#ecf8f2}.conv-test-result.fail{color:#a83b34;background:#fdf0f0}.conv-execute-btn{border:none;background:#37352f;color:#fff;border-radius:9px;padding:8px 18px;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;transition:background .15s ease,transform .15s ease,box-shadow .15s ease;box-shadow:0 1px 3px #0000001f}.conv-execute-btn:hover{background:#1a1917;box-shadow:0 2px 6px #00000029;transform:translateY(-.5px)}.conv-execute-btn:active{transform:translateY(0)}.conv-execute-btn:disabled{opacity:.45;cursor:default;transform:none;box-shadow:none}.conv-delete-plan-btn{border:1px solid #e8d5d5;background:transparent;color:#c4443a;border-radius:9px;padding:8px 16px;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;transition:background .15s ease,color .15s ease,border-color .15s ease}.conv-delete-plan-btn:hover{background:#fdf0f0;border-color:#e0a8a5;color:#b83830}.conv-delete-plan-btn:disabled{opacity:.45;cursor:default}.plan-proposal-panel{display:flex;flex-direction:column;gap:8px;height:100%;overflow-y:auto;padding:4px 0}.plan-proposal-header{display:flex;align-items:center;justify-content:space-between;padding:0 4px}.plan-proposal-title{font-size:13px;font-weight:600;color:#37352f}.plan-proposal-count{font-size:11px;color:#9b9a97}.plan-proposal-empty{font-size:12px;color:#9b9a97;padding:16px 4px}.plan-proposal-tasks{display:flex;flex-direction:column}.plan-task-item{display:flex;align-items:stretch}.plan-task-chain-line-wrap{position:relative;display:flex;align-items:flex-start;justify-content:center;width:24px;flex-shrink:0;padding-top:10px}.plan-task-chain-line-wrap.has-line:after{content:"";position:absolute;left:50%;top:26px;bottom:0;width:1px;background:#d5d4d0;transform:translate(-50%)}.plan-task-chain-number{font-size:10px;font-weight:700;color:#fff;background:#37352f;border-radius:50%;width:18px;height:18px;display:flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;z-index:1}.plan-task-content{flex:1;min-width:0;display:flex;flex-direction:column}.plan-task-row{display:flex;align-items:center;gap:6px;padding:7px 8px;border-radius:8px;cursor:pointer;transition:background .12s}.plan-task-row:hover{background:#f9f9f7}.plan-task-expand-icon{color:#9b9a97;flex-shrink:0;transition:transform .15s ease}.plan-task-expand-icon.expanded{transform:rotate(90deg)}.plan-task-title-input{flex:1;min-width:0;font-size:13px;font-weight:500;font-family:inherit;border:none;outline:none;background:transparent;color:#37352f;padding:2px 0}.plan-task-title-input::placeholder{color:#c8c7c3}.plan-task-right{display:flex;align-items:center;gap:6px;flex-shrink:0}.plan-task-recipient-select{font-size:11px;font-family:inherit;border:1px solid #e8e7e4;border-radius:6px;padding:3px 6px;color:#37352f;background:#fafafa;cursor:pointer;max-width:120px}.plan-task-recipient-select:focus{border-color:#d4d3cf;outline:none}.plan-task-actions{display:flex;gap:1px;flex-shrink:0;opacity:0;transition:opacity .12s}.plan-task-row:hover .plan-task-actions{opacity:1}.plan-task-action-btn{border:none;background:transparent;color:#9b9a97;cursor:pointer;padding:2px;border-radius:4px;display:flex;align-items:center;justify-content:center}.plan-task-action-btn:hover{background:#f0efec;color:#37352f}.plan-task-action-btn:disabled{opacity:.3;cursor:default}.plan-task-action-btn:disabled:hover{background:transparent;color:#9b9a97}.plan-task-delete-btn:hover{color:#c4443a;background:#fdf0f0}.plan-task-prompt-section{padding:0 8px 8px 22px}.plan-task-prompt-textarea{width:100%;font-size:12px;font-family:inherit;border:1px solid #e8e7e4;border-radius:6px;padding:8px;color:#37352f;background:#fafafa;resize:vertical;min-height:70px;line-height:1.5;box-sizing:border-box}.plan-task-prompt-textarea:focus{border-color:#d4d3cf;outline:none}.plan-proposal-add-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;margin-left:0;border:1px dashed #d4d3cf;background:transparent;color:#9b9a97;border-radius:50%;font-size:14px;cursor:pointer;font-family:inherit;transition:border-color .15s ease,color .15s ease,background .15s ease}.plan-proposal-add-btn:hover{border-color:#37352f;color:#37352f;background:#f9f9f7}.plan-proposal-add-btn:disabled{opacity:.4;cursor:default}.conv-approve-btn{border:none;background:#2fa67e;color:#fff;border-radius:9px;padding:8px 18px;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;transition:background .15s ease,transform .15s ease,box-shadow .15s ease;box-shadow:0 1px 3px #2fa67e33}.conv-approve-btn:hover{background:#268f6c;box-shadow:0 2px 6px #2fa67e40;transform:translateY(-.5px)}.conv-approve-btn:active{transform:translateY(0)}.conv-approve-btn:disabled{opacity:.45;cursor:default;transform:none;box-shadow:none}.conv-reopen-btn{border:none;background:#d97706;color:#fff;border-radius:9px;padding:8px 18px;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit;transition:background .15s ease,transform .15s ease,box-shadow .15s ease;box-shadow:0 1px 3px #d9770633}.conv-reopen-btn:hover{background:#b85f05;box-shadow:0 2px 6px #d9770640;transform:translateY(-.5px)}.conv-reopen-btn:active{transform:translateY(0)}.conv-reopen-btn:disabled{opacity:.45;cursor:default;transform:none;box-shadow:none}.conv-delete-btn{border:1px solid transparent;background:none;color:#c4443a;padding:6px 14px;border-radius:8px;font-size:12px;cursor:pointer;font-weight:500;font-family:inherit;transition:background .15s ease,color .15s ease}.conv-delete-btn:hover{background:#fdf0f0;color:#b83830}.conv-delete-btn:disabled{opacity:.45;cursor:default}.conv-delete-cancel-btn{border:1px solid #E3E2DF;background:none;color:#9b9a97;padding:6px 14px;border-radius:8px;font-size:12px;cursor:pointer;font-weight:500;font-family:inherit;transition:color .15s ease,border-color .15s ease,background .15s ease}.conv-delete-cancel-btn:hover{color:#37352f;border-color:#d4d3cf;background:#fafaf8}.conv-delete-cancel-btn:disabled{opacity:.45;cursor:default}.conv-prompt-row{background:#f8f8f6;border-radius:12px;padding:6px 10px;display:flex;align-items:center;gap:8px;border:1px solid #eeedea}.conv-prompt-input{border:none;outline:none;background:transparent;color:#37352f;font-size:13px;font-family:inherit;width:100%;min-width:0}.conv-input-container{display:flex;flex-direction:column;align-items:stretch;background:#f8f8f6;border-radius:16px;padding:10px 12px;width:100%;min-width:0;border:1px solid #eeedea;box-shadow:0 1px 4px #0000000a,0 0 0 0 transparent;transition:border-color .2s ease,box-shadow .2s ease}.conv-input-container:focus-within{border-color:#d4d3cf;box-shadow:0 2px 8px #0000000f,0 0 0 3px #2383e20f}.conv-input-bottom-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:2px}.conv-prompt-send{width:28px;height:28px;border-radius:999px;border:none;background:#37352f;color:#fff;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;padding:0;transition:background .12s}.conv-prompt-send:hover{background:#1a1917}.conv-prompt-send:disabled{opacity:.4;cursor:default}.conv-prompt-send-stop{background:#e03e3e}.conv-prompt-send-stop:hover{background:#c73131}.inline-chat-view{flex:1;min-height:0;min-width:0;display:flex;flex-direction:column;padding:0 24px;overflow:hidden}.inline-chat-messages{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;gap:4px;padding:8px 4px 0}.inline-chat-input-row{background:#f8f8f6;border-radius:12px;padding:6px 8px;display:flex;align-items:center;gap:8px;margin-top:10px}.inline-chat-view .conv-input-container{margin-top:10px}.conversation-drawer-body{flex:1;min-height:0;padding:14px;overflow:hidden}.conversation-history-pane{height:100%;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:10px}.conversation-chat-pane{min-width:0;min-height:0;display:flex;flex-direction:column;gap:10px}.conversation-chat-pane .conversation-history-pane{height:auto;flex:1}.conversation-drawer-body.with-output{padding:12px;display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,46%);gap:12px}.conversation-output-pane{border-left:1px solid #f0efec;padding-left:12px;min-width:0;min-height:0;overflow:hidden;display:flex;flex-direction:column}.conversation-message{border-radius:10px;padding:10px 12px}.conversation-message.from-user{background:#f7f7f5}.conversation-message.from-assistant{background:transparent}.conversation-role{font-size:11px;font-weight:700;color:#8d8b87;margin-bottom:4px}.conversation-content{white-space:pre-wrap;font-size:13px;color:#37352f;line-height:1.45}.conversation-markdown{font-size:13px;color:#37352f;line-height:1.45}.conversation-markdown>:first-child{margin-top:0}.conversation-markdown>:last-child{margin-bottom:0}.conversation-markdown p,.conversation-markdown ul,.conversation-markdown ol,.conversation-markdown pre,.conversation-markdown blockquote{margin:.45em 0}.conversation-markdown ul,.conversation-markdown ol{padding-left:1.25rem}.conversation-markdown code{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:12px}.conversation-markdown pre{background:#f6f6f4;border-radius:8px;padding:8px 10px;overflow-x:auto}.conversation-markdown pre code{font-size:12px}.conversation-markdown a{color:#1f6fbe}.conversation-markdown table{border-collapse:collapse;width:100%;margin:.45em 0;font-size:12px}.conversation-markdown th,.conversation-markdown td{border:1px solid #e3e0d8;padding:5px 8px;text-align:left}.conversation-markdown th{background:#f7f6f3;font-weight:600}.conversation-markdown tr:nth-child(2n){background:#fafaf8}.conversation-tool-row{padding:4px 10px;font-size:12px;color:#b0afa8}.conversation-tool-name{font-size:11px;font-weight:700;color:#9b9a97;margin-bottom:2px}.conversation-tool-summary{font-size:12px;color:#b0afa8;line-height:1.35;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;white-space:pre-wrap;overflow-wrap:anywhere}.conversation-status{font-size:12px;color:#8d8b87}.conversation-status-row{border-radius:8px;color:#b0afa8;font-size:12px;padding:4px 10px}.output-panel{width:100%;min-height:0;display:flex;flex-direction:column;gap:10px;flex:1}.output-tabs{display:flex;gap:2px;border-bottom:1px solid #f0efec;padding-top:6px;padding-bottom:6px}.output-tab-btn{border:none;background:transparent;color:#8d8b87;border-radius:6px;padding:5px 10px;font-size:12px;font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s,color .15s}.output-tab-btn:hover{background:#f5f4f1;color:#5f5d58}.output-tab-btn.active{color:#37352f;background:#f0efec}.output-tab-body{padding:4px 0 0;min-height:0;flex:1;display:flex;flex-direction:column;gap:10px}.output-plan-body{overflow-y:auto}.output-plan-markdown{font-size:13px;color:#37352f;line-height:1.6}.output-plan-markdown h1,.output-plan-markdown h2,.output-plan-markdown h3,.output-plan-markdown h4{margin:12px 0 6px;font-weight:600}.output-plan-markdown h1{font-size:16px}.output-plan-markdown h2{font-size:15px}.output-plan-markdown h3{font-size:14px}.output-plan-markdown p{margin:6px 0}.output-plan-markdown ul,.output-plan-markdown ol{margin:6px 0;padding-left:20px}.output-plan-markdown li{padding:2px 0}.output-plan-markdown code{background:#f5f4f0;padding:1px 4px;border-radius:3px;font-size:12px}.output-plan-markdown pre{background:#f5f4f0;padding:8px 12px;border-radius:4px;overflow-x:auto;font-size:12px;margin:6px 0}.output-plan-markdown pre code{background:none;padding:0}.output-run-card{display:flex;flex-direction:column;gap:8px}.output-run-list{display:flex;flex-direction:column;gap:6px}.output-run-item{display:flex;align-items:center;gap:8px;min-width:0}.output-run-btn{border:1px solid #d9d8d2;background:#f7f7f5;color:#37352f;border-radius:8px;padding:6px 10px;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit}.output-run-btn:hover{background:#efeee9}.output-run-btn:disabled{opacity:.6;cursor:default}.output-run-command,.output-run-command-input{font-family:SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:11px;color:#6f6d68;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1}.output-run-command-input{border:1px solid #d9d8d2;background:#fff;border-radius:7px;padding:6px 8px}.output-run-command-input:focus{outline:none;border-color:#2383e2;box-shadow:0 0 0 2px #2383e21f}.output-run-command-input:disabled{background:#f5f4f1;color:#8d8b87}.output-run-edit-btn,.output-run-save-btn{border:1px solid #d9d8d2;background:#fff;color:#5f5d58;border-radius:7px;padding:5px 8px;font-size:11px;font-weight:600;cursor:pointer;font-family:inherit;flex-shrink:0}.output-run-edit-btn:hover,.output-run-save-btn:hover{background:#f3f2ef}.output-run-edit-btn:disabled,.output-run-save-btn:disabled{opacity:.6;cursor:default}.output-runtime-card{border-top:1px solid #f0efec;padding:10px 0 0;display:flex;flex-direction:column;gap:8px}.output-runtime-header{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.output-runtime-title{font-size:12px;font-weight:700;color:#37352f}.output-runtime-meta{font-size:11px;color:#8d8b87;margin-top:2px}.output-runtime-stop{border:1px solid #d8d6d2;background:#fff;color:#5f5d58;border-radius:7px;padding:4px 8px;font-size:11px;font-weight:600;cursor:pointer;font-family:inherit}.output-runtime-log{margin:0;border:1px solid #dedcd7;background:#101217;color:#d7e6ff;border-radius:8px;padding:8px;font-size:11px;line-height:1.35;min-height:120px;max-height:220px;overflow:auto;white-space:pre-wrap;word-break:break-word;font-family:SFMono-Regular,Menlo,Monaco,Consolas,monospace}.output-actions{display:flex;align-items:center;gap:8px}.output-download-btn{border:1px solid #d9d7d3;background:#fff;color:#5f5d58;border-radius:8px;padding:6px 10px;font-size:12px;font-weight:600;font-family:inherit;text-decoration:none;cursor:pointer}.output-outputs-layout{display:flex;flex-direction:column;min-height:0;gap:12px;overflow-y:auto}.output-file-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:8px;align-content:start}.output-file-tile{border:1px solid #eeedea;background:#fafaf9;border-radius:8px;padding:10px 8px;min-height:88px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:6px;cursor:pointer;font-family:inherit;text-align:center;transition:background .15s,border-color .15s}.output-file-tile:hover{background:#f3f2ef;border-color:#e0dfdb}.output-file-tile.active{border-color:#c9ddf1;background:#f1f7fd}.output-file-tile-icon{color:#5f5d58;line-height:0;margin-top:2px}.output-file-tile-name{font-size:11px;font-weight:600;color:#37352f;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.output-file-tile-size{font-size:10px;color:#9b9a97}.output-preview-card{display:flex;flex-direction:column;gap:10px;min-height:0;border-top:1px solid #f0efec;padding-top:10px}.output-preview-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.output-preview-path{font-size:12px;color:#5f5d58;font-weight:600;min-width:0;word-break:break-all}.output-preview-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}.output-markdown-preview{font-size:13px;line-height:1.45;color:#37352f}.output-markdown-preview>:first-child{margin-top:0}.output-markdown-preview>:last-child{margin-bottom:0}.output-markdown-preview table{border-collapse:collapse;width:100%;margin:.45em 0;font-size:12px}.output-markdown-preview th,.output-markdown-preview td{border:1px solid #e3e0d8;padding:5px 8px;text-align:left}.output-markdown-preview th{background:#f7f6f3;font-weight:600}.output-markdown-preview tr:nth-child(2n){background:#fafaf8}.output-html-preview{width:100%;min-height:420px;border:1px solid #ecebe8;border-radius:8px;background:#fff}.output-image-wrap{border:1px solid #ecebe8;border-radius:8px;padding:10px;background:#fff;display:flex;justify-content:center}.output-image-preview{max-width:100%;max-height:520px;object-fit:contain}.output-csv-wrap{border:1px solid #ecebe8;border-radius:8px;overflow:auto}.output-csv-table{border-collapse:collapse;width:100%;min-width:520px}.output-csv-table td{border-bottom:1px solid #f1f0ec;border-right:1px solid #f1f0ec;padding:6px 8px;font-size:12px;color:#37352f;white-space:pre-wrap}.output-fallback-preview{border:1px dashed #d7d5d1;border-radius:8px;padding:12px;display:flex;flex-direction:column;gap:8px;align-items:flex-start}.diff-viewer{display:flex;flex-direction:column;gap:0;overflow:auto;flex:1;min-height:0}.diff-summary{font-size:12px;font-weight:600;color:#5f5d58;padding:6px 0 8px}.diff-file{border:1px solid #d8d6d2;border-radius:8px;overflow:hidden;margin-bottom:8px}.diff-file-header{display:flex;align-items:center;gap:6px;width:100%;padding:8px 10px;background:#f7f7f5;border:none;border-bottom:1px solid transparent;cursor:pointer;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:12px;font-weight:600;color:#37352f;text-align:left}.diff-file-header:hover{background:#eeede9}.diff-file-chevron{display:flex;align-items:center;color:#9b9a97;flex-shrink:0}.diff-file-path{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.diff-file-stats{display:flex;gap:6px;flex-shrink:0;font-weight:700;font-size:11px}.diff-stat-add{color:#1a7f37}.diff-stat-remove{color:#cf222e}.diff-file-body{border-top:1px solid #d8d6d2;background:#fff;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:12px;line-height:1.45;overflow-x:auto}.diff-line{padding:0 10px;white-space:pre}.diff-line.meta{background:#f7f7f5;color:#9b9a97;font-size:11px}.diff-line.header{background:#f5f9ff;color:#1f4f86}.diff-line.hunk{background:#f0f3f6;color:#656d76;padding-top:2px;padding-bottom:2px}.diff-line.add{background:#dafbe1;color:#1a4730}.diff-line.remove{background:#ffebe9;color:#82071e}.output-testing-body{padding:0!important;display:flex;flex-direction:column}.testing-pane{display:flex;flex-direction:column;height:100%;min-height:0;flex:1}.testing-toolbar{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid #f0efec}.testing-start-btn{border:1px solid #d9d8d2;background:#f7f7f5;color:#37352f;border-radius:8px;padding:6px 14px;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit}.testing-start-btn:hover{background:#efeee9}.testing-start-btn:disabled{opacity:.6;cursor:default}.testing-stop-btn{border:1px solid #e8bcbc;background:#fdf2f2;color:#c53030;border-radius:8px;padding:6px 14px;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit}.testing-stop-btn:hover{background:#fde8e8}.testing-process-badges{display:flex;gap:8px;margin-left:auto}.testing-process-badge{display:flex;align-items:center;gap:4px;font-size:11px;color:#8d8b87}.testing-process-dot{width:6px;height:6px;border-radius:50%;background:#d9d8d2}.testing-process-dot.starting{background:#f59e0b}.testing-process-dot.ready{background:#22c55e}.testing-process-dot.exited{background:#ef4444}.testing-panel-tabs{display:flex;gap:0;border-bottom:1px solid #f0efec}.testing-panel-tab{padding:6px 12px;font-size:12px;background:none;border:none;color:#8d8b87;cursor:pointer;border-bottom:2px solid transparent;font-family:inherit;font-weight:600}.testing-panel-tab:hover{color:#5f5d58}.testing-panel-tab.active{color:#37352f;border-bottom-color:#2383e2}.testing-panel-content{flex:1;overflow:auto;min-height:0}.testing-log-drawer-wrap{border-top:1px solid #f0efec}.testing-log-toggle{width:100%;text-align:left;padding:4px 12px;font-size:11px;cursor:pointer;color:#8d8b87;background:none;border:none;font-family:inherit}.testing-log-toggle:hover{color:#5f5d58}.testing-log-drawer{max-height:200px;overflow:auto;padding:0 12px 8px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:11px}.api-tester{padding:8px 12px}.api-endpoint-card{border:1px solid #eeedea;border-radius:6px;margin-bottom:8px;overflow:hidden}.api-endpoint-header{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;transition:background .1s}.api-endpoint-header:hover{background:#fafaf9}.api-method-badge{font-size:11px;font-weight:700;padding:2px 6px;border-radius:3px;color:#fff;text-transform:uppercase;flex-shrink:0;font-family:SFMono-Regular,Menlo,Monaco,Consolas,monospace}.api-method-badge.get{background:#22c55e}.api-method-badge.post{background:#3b82f6}.api-method-badge.put{background:#f59e0b}.api-method-badge.patch{background:#a855f7}.api-method-badge.delete{background:#ef4444}.api-endpoint-path{font-family:SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:13px;color:#37352f}.api-endpoint-desc{font-size:11px;color:#8d8b87;margin-left:auto}.api-endpoint-body{padding:8px 12px 12px;border-top:1px solid #f5f4f1}.api-body-editor{width:100%;min-height:80px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px;background:#fafaf9;border:1px solid #eeedea;border-radius:4px;color:#37352f;padding:8px;resize:vertical}.api-body-editor:focus{outline:none;border-color:#2383e2;box-shadow:0 0 0 2px #2383e21f}.api-headers-editor{margin:8px 0}.api-header-row{display:flex;gap:4px;margin-bottom:4px;align-items:center}.api-header-input{flex:1;font-size:12px;padding:4px 8px;background:#fafaf9;border:1px solid #eeedea;border-radius:3px;color:#37352f;font-family:inherit}.api-header-input:focus{outline:none;border-color:#2383e2}.api-header-remove-btn{border:none;background:none;color:#8d8b87;cursor:pointer;font-size:12px;padding:2px 6px;border-radius:3px;font-family:inherit}.api-header-remove-btn:hover{color:#ef4444}.api-header-add-btn{border:none;background:none;color:#2383e2;cursor:pointer;font-size:11px;font-weight:600;padding:2px 0;font-family:inherit}.api-send-btn{margin-top:8px;padding:6px 16px;border:1px solid #d9d8d2;background:#f7f7f5;color:#37352f;border-radius:8px;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit}.api-send-btn:hover{background:#efeee9}.api-send-btn:disabled{opacity:.6;cursor:default}.api-response{margin-top:12px}.api-response-status{display:flex;align-items:center;gap:8px;font-size:12px;margin-bottom:6px}.api-response-status-code{font-weight:700;padding:2px 6px;border-radius:3px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,monospace}.api-response-status-code.success{background:#dcfce7;color:#166534}.api-response-status-code.client-error{background:#fef3c7;color:#92400e}.api-response-status-code.server-error{background:#fee2e2;color:#991b1b}.api-response-body{font-family:SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px;background:#fafaf9;border:1px solid #eeedea;border-radius:4px;padding:8px;max-height:300px;overflow:auto;white-space:pre-wrap;word-break:break-all}.web-preview{display:flex;flex-direction:column;height:100%}.web-preview-toolbar{display:flex;align-items:center;gap:6px;padding:6px 12px;border-bottom:1px solid #f0efec}.web-preview-device-btn{padding:4px 8px;font-size:11px;background:#fff;border:1px solid #eeedea;border-radius:4px;color:#5f5d58;cursor:pointer;font-family:inherit;font-weight:600}.web-preview-device-btn:hover{background:#f5f4f1}.web-preview-device-btn.active{border-color:#2383e2;color:#2383e2;background:#f0f7ff}.web-preview-url{flex:1;font-family:SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:11px;color:#8d8b87;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.web-preview-container{flex:1;display:flex;align-items:flex-start;justify-content:center;overflow:auto;padding:12px;background:#f5f4f1}.web-preview-frame{background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 2px 12px #00000014}.web-preview-frame.desktop{width:100%;height:100%;border-radius:0;box-shadow:none}.web-preview-frame.tablet{width:768px;height:1024px}.web-preview-frame.mobile{width:375px;height:812px;border-radius:24px}.web-preview-iframe{width:100%;height:100%;border:none}.web-preview-waiting{display:flex;align-items:center;justify-content:center;height:100%;width:100%;color:#8d8b87;font-size:13px}.terminal-panel{display:flex;flex-direction:column;height:100%}.terminal-output{flex:1;overflow:auto;padding:8px 12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px;background:#101217;color:#d7e6ff;white-space:pre-wrap;word-break:break-all;margin:0;min-height:120px}.terminal-suggested{display:flex;gap:4px;padding:4px 12px;flex-wrap:wrap;background:#f7f7f5}.terminal-suggested-btn{font-size:11px;padding:2px 8px;background:#fff;border:1px solid #eeedea;border-radius:3px;color:#37352f;cursor:pointer;font-family:SFMono-Regular,Menlo,Monaco,Consolas,monospace}.terminal-suggested-btn:hover{background:#f5f4f1}.terminal-suggested-btn:disabled{opacity:.5;cursor:default}.terminal-input-row{display:flex;gap:4px;padding:6px 12px;border-top:1px solid #f0efec}.terminal-input{flex:1;font-family:SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px;background:#fafaf9;border:1px solid #eeedea;border-radius:4px;color:#37352f;padding:6px 8px}.terminal-input:focus{outline:none;border-color:#2383e2;box-shadow:0 0 0 2px #2383e21f}.terminal-input:disabled{background:#f5f4f1;color:#8d8b87}.log-viewer{display:flex;flex-direction:column;height:100%}.log-viewer-filters{display:flex;gap:4px;padding:6px 12px;border-bottom:1px solid #f0efec}.log-viewer-filter-btn{font-size:11px;padding:2px 8px;background:#fff;border:1px solid #eeedea;border-radius:3px;color:#5f5d58;cursor:pointer;font-family:inherit;font-weight:600}.log-viewer-filter-btn:hover{background:#f5f4f1}.log-viewer-filter-btn.active{background:#f0f7ff;border-color:#2383e2;color:#2383e2}.log-viewer-content{flex:1;overflow:auto;padding:8px 12px;font-family:SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px}.log-entry{white-space:pre-wrap;word-break:break-all}.log-entry-stdout{color:#37352f}.log-entry-stderr{color:#dc2626}.log-entry-system{color:#8d8b87;font-style:italic}.conversation-drawer-footer{display:flex;justify-content:space-between;align-items:center;gap:10px}.conversation-drawer-footer-end{justify-content:flex-end}.conversation-drawer-footer-stack{padding:10px 16px 14px;display:flex;flex-direction:column;gap:10px}.conversation-drawer-review-footer{padding-top:8px}.conversation-recipient-picker{display:flex;align-items:center;gap:8px;min-width:0}.conversation-recipient-label{font-size:11px;font-weight:700;color:#b0afa8}.conversation-recipient-select{height:30px;border:1.5px solid #ECEBE8;border-radius:8px;background:#fafaf8;color:#37352f;padding:0 8px;font-size:12px;font-family:inherit;min-width:160px;outline:none}.conversation-execute-btn{border:none;background:#37352f;color:#fff;border-radius:9px;padding:8px 16px;font-size:12px;font-weight:700;cursor:pointer;font-family:inherit}.conversation-execute-btn:disabled{opacity:.5;cursor:default}.conversation-approve-btn{border:none;background:#2fa67e;color:#fff;border-radius:9px;padding:8px 18px;font-size:12px;font-weight:700;cursor:pointer;font-family:inherit}.conversation-approve-btn:disabled{opacity:.5;cursor:default}.conversation-drawer-prompt-row{background:#f7f7f5;border-radius:10px;padding:6px 8px;display:flex;align-items:center;gap:8px}.conversation-drawer-prompt-input{border:none;outline:none;background:transparent;color:#37352f;font-size:13px;font-family:inherit;width:100%;min-width:0}.conversation-drawer-prompt-send{width:28px;height:28px;border-radius:999px;border:none;background:#37352f;color:#fff;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;padding:0}.conversation-drawer-prompt-send:disabled{opacity:.4;cursor:default}.right-panel{width:240px;flex-shrink:0;padding:18px 16px;overflow-y:auto}.right-section-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#c4c3bf;padding:0 4px 10px}.right-section-title+.right-section-title{padding-top:20px}.person-card{padding:6px;border-radius:8px;display:flex;align-items:center;gap:10px;cursor:pointer;transition:background .1s}.person-card:hover{background:#00000005}.person-avatar-wrap{position:relative}.person-avatar{width:30px;height:30px;border-radius:15px;display:flex;align-items:center;justify-content:center;font-size:15px}.online-dot{position:absolute;bottom:0;right:0;width:8px;height:8px;border-radius:4px;background:#2383e2;border:2px solid #fff}.person-name{font-size:13px;font-weight:600;color:#37352f}.person-role{font-size:11px;color:#c4c3bf}.agent-row{padding:6px;border-radius:8px;display:flex;align-items:center;gap:10px;cursor:pointer;transition:background .1s}.agent-row:hover{background:#00000005}.agent-icon{width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:14px}.agent-name{font-size:13px;font-weight:600;color:#37352f}.agent-status{font-size:11px;display:flex;align-items:center;gap:4px;color:#6f6e69}.agent-status.idle{color:#c4c3bf}.agent-status.working{color:var(--agent-color, #4B83D6)}.agent-status-dot{width:5px;height:5px;border-radius:3px;opacity:.6;display:inline-block}.agent-model{font-size:10px;color:#9b9a97;margin-top:2px}.add-agent-btn{width:100%;margin-top:10px;border:1px solid #d9d7d3;background:#fff;color:#6f6e69;border-radius:8px;padding:7px 10px;font-size:12px;font-weight:600;font-family:inherit;cursor:pointer}.add-agent-ghost{width:100%;margin-top:6px;border:none;background:transparent;color:#b0afa8;padding:6px;font-size:12px;font-weight:500;font-family:inherit;cursor:pointer;display:flex;align-items:center;gap:6px;border-radius:7px;transition:color .12s,background .12s}.add-agent-ghost:hover{color:#6f6e69;background:#00000008}.waitlist-modal-card{width:100%;max-width:400px;background:#fff;border-radius:16px;padding:24px;box-shadow:0 20px 60px #00000029;position:relative}.waitlist-modal-body{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px}.waitlist-modal-icon{font-size:36px;margin-bottom:4px}.waitlist-modal-title{font-size:17px;font-weight:600;color:#37352f;margin:0}.waitlist-modal-text{font-size:13.5px;color:#787774;line-height:1.5;margin:0 0 8px}.waitlist-modal-input{width:100%;padding:9px 12px;border:1px solid #e3e2de;border-radius:8px;font-size:14px;color:#37352f;outline:none;transition:border-color .15s;box-sizing:border-box}.waitlist-modal-input:focus{border-color:#2383e2}.waitlist-modal-actions{display:flex;justify-content:center;gap:8px;width:100%;padding-top:4px}.agent-profile-card{width:100%;max-width:640px;background:#fff;border-radius:14px;padding:0;box-shadow:0 0 0 1px #0000000a,0 8px 24px #00000014,0 24px 48px #00000014;overflow:hidden;position:relative;animation:modalSlideIn .18s cubic-bezier(.2,.9,.3,1);display:flex;flex-direction:column;max-height:min(820px,90vh)}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.agent-profile-close{position:absolute;top:14px;right:14px;width:28px;height:28px;border-radius:8px;border:none;background:transparent;color:#c4c3bf;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:2;transition:background .12s,color .12s}.agent-profile-close:hover{background:#f3f2ef;color:#6f6e69}.agent-profile-header{display:flex;align-items:center;padding:24px 24px 0;gap:16px}.agent-profile-avatar-wrap{position:relative;flex-shrink:0}.agent-profile-avatar{border-radius:16px;background:#f5f5f3;border:1.5px solid #ECEBE8;display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative;transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease}.agent-profile-avatar:hover{transform:scale(1.06);border-color:#d3d1cc;box-shadow:0 2px 12px #0000000f}.agent-profile-avatar-edit{position:absolute;bottom:0;left:0;right:0;background:#00000080;color:#fff;font-size:9px;font-weight:600;text-align:center;padding:3px 0;border-radius:0 0 16px 16px;opacity:0;transition:opacity .12s;letter-spacing:.02em;text-transform:uppercase}.agent-profile-avatar:hover .agent-profile-avatar-edit{opacity:1}.emoji-picker-popover{position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%);z-index:300;border-radius:12px;overflow:hidden;box-shadow:0 0 0 1px #0000000a,0 8px 32px #00000024;animation:emojiPickerFadeIn .12s ease}@keyframes emojiPickerFadeIn{0%{opacity:0;transform:translate(-50%) translateY(-4px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.agent-profile-identity{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;padding-right:28px}.agent-profile-name-input{border:none;background:transparent;text-align:left;font-size:18px;font-weight:700;color:#37352f;font-family:inherit;outline:none;width:100%;line-height:1.3}.agent-profile-name-input::placeholder{color:#d3d1cc}.agent-profile-description-input{border:none;background:transparent;text-align:left;font-size:13px;color:#91918e;font-family:inherit;outline:none;width:100%;line-height:1.4}.agent-profile-description-input::placeholder{color:#d3d1cc}.agent-profile-subtitle{font-size:11px;color:#b0afa8;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;letter-spacing:-.01em}.agent-profile-body{overflow-y:auto;flex:1;padding:4px 0}.agent-profile-section{padding:16px 24px}.agent-profile-section+.agent-profile-section{border-top:1px solid #F0EFEC}.agent-profile-section-title{font-size:11.5px;font-weight:600;color:#91918e;text-transform:uppercase;letter-spacing:.05em;margin-bottom:12px}.agent-profile-field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.agent-profile-field{display:flex;flex-direction:column;gap:6px}.agent-profile-field-label{font-size:12px;font-weight:500;color:#6f6e69;letter-spacing:0;text-transform:none}.agent-profile-select-wrap{position:relative}.agent-profile-select{width:100%;padding:8px 28px 8px 10px;border-radius:8px;border:1.5px solid #ECEBE8;background:#fafaf8;font-size:13px;color:#37352f;font-family:inherit;outline:none;-moz-appearance:none;appearance:none;-webkit-appearance:none;cursor:pointer;transition:border-color .12s,box-shadow .12s}.agent-profile-select:hover{border-color:#d3d1cc}.agent-profile-select:focus{border-color:#b0afa8;box-shadow:0 0 0 3px #37352f0f}.agent-profile-select-icon{position:absolute;right:9px;top:50%;transform:translateY(-50%);color:#b0afa8;pointer-events:none}.agent-profile-textarea{width:100%;padding:10px 12px;border-radius:8px;border:1.5px solid #ECEBE8;background:#fafaf8;font-size:13px;color:#37352f;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12.5px;line-height:1.6;resize:vertical;outline:none;min-height:260px;transition:border-color .12s,box-shadow .12s;box-sizing:border-box}.agent-profile-textarea:hover{border-color:#d3d1cc}.agent-profile-textarea:focus{border-color:#b0afa8;box-shadow:0 0 0 3px #37352f0f}.agent-profile-error{padding:8px 24px;font-size:12.5px;color:#dc3545;font-weight:500}.agent-profile-actions{display:flex;align-items:center;gap:8px;padding:16px 24px;border-top:1px solid #F0EFEC;background:#fcfcfb;flex-shrink:0}.agent-profile-actions-right{display:flex;align-items:center;gap:6px;margin-left:auto}.agent-profile-cancel{padding:7px 14px;border-radius:8px;border:1.5px solid #ECEBE8;background:#fff;color:#6f6e69;font-size:13px;font-weight:500;cursor:pointer;font-family:inherit;transition:border-color .12s,background .12s,color .12s}.agent-profile-cancel:hover{border-color:#d3d1cc;background:#f7f7f5;color:#37352f}.agent-profile-save{padding:7px 18px;border-radius:8px;border:1.5px solid transparent;background:#37352f;color:#fff;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;transition:background .12s,box-shadow .12s}.agent-profile-save:hover:not(:disabled){background:#222;box-shadow:0 1px 4px #0000001f}.agent-profile-save:disabled{opacity:.5;cursor:default}.agent-profile-delete{display:inline-flex;align-items:center;gap:5px;padding:7px 12px;border-radius:8px;border:none;background:none;color:#b0afa8;font-size:12.5px;font-weight:500;cursor:pointer;font-family:inherit;transition:color .12s,background .12s}.agent-profile-delete:hover:not(:disabled){color:#dc3545;background:#dc35450f}.agent-profile-delete:disabled{opacity:.5;cursor:default}.agent-chooser-card{width:100%;max-width:380px;background:#fff;border-radius:14px;padding:28px 24px 22px;box-shadow:0 0 0 1px #0000000a,0 8px 24px #00000014,0 24px 48px #00000014;position:relative;animation:modalSlideIn .18s cubic-bezier(.2,.9,.3,1)}.agent-chooser-title{font-size:15px;font-weight:700;color:#37352f;margin:0 0 18px;text-align:center}.agent-chooser-options{display:flex;flex-direction:column;gap:8px}.agent-chooser-option{display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:10px;border:1.5px solid #ECEBE8;background:#fff;cursor:pointer;text-align:left;transition:border-color .12s,background .12s,box-shadow .12s}.agent-chooser-option:hover{border-color:#d3d1cc;background:#fafaf8;box-shadow:0 1px 4px #0000000a}.agent-chooser-option-icon{font-size:24px;flex-shrink:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:10px;background:#f5f5f3}.agent-chooser-option-label{font-size:13px;font-weight:600;color:#37352f}.agent-chooser-option-desc{font-size:12px;color:#91918e;margin-top:2px;line-height:1.4}.template-picker-card{width:100%;max-width:520px;max-height:80vh;background:#fff;border-radius:14px;box-shadow:0 0 0 1px #0000000a,0 8px 24px #00000014,0 24px 48px #00000014;position:relative;animation:modalSlideIn .18s cubic-bezier(.2,.9,.3,1);display:flex;flex-direction:column;overflow:hidden}.template-picker-header{padding:24px 24px 16px;flex-shrink:0}.template-picker-title{font-size:15px;font-weight:700;color:#37352f;margin:0 0 14px;text-align:center}.template-picker-search-wrap{position:relative}.template-picker-search-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:#b0afa8;pointer-events:none}.template-picker-search{width:100%;padding:8px 10px 8px 30px;border-radius:8px;border:1.5px solid #ECEBE8;background:#fafaf8;font-size:13px;color:#37352f;outline:none;transition:border-color .12s,box-shadow .12s;box-sizing:border-box}.template-picker-search:focus{border-color:#b0afa8;box-shadow:0 0 0 3px #37352f0f}.template-picker-body{overflow-y:auto;padding:0 24px 20px;flex:1}.template-picker-group{margin-bottom:8px}.template-picker-category{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:#91918e;padding:12px 0 6px}.template-picker-item{display:flex;align-items:center;gap:12px;padding:10px;border-radius:8px;cursor:pointer;transition:background .1s}.template-picker-item:hover{background:#f5f5f3}.template-picker-emoji{font-size:20px;flex-shrink:0;width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:8px;background:#f5f5f3}.template-picker-info{flex:1;min-width:0}.template-picker-name{font-size:13px;font-weight:600;color:#37352f}.template-picker-desc{font-size:12px;color:#91918e;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4}.context-view{flex:1;min-height:0;display:flex}.context-sidebar{width:220px;border-right:1px solid #F0EFEC;padding:18px 12px;overflow-y:auto;flex-shrink:0;display:flex;flex-direction:column}.context-section-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#c4c3bf;padding:0}.context-sidebar-header{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}.context-subtitle{font-size:11px;color:#9b9a97;line-height:1.4;margin-bottom:10px}.context-sidebar-actions{display:flex;align-items:center;gap:6px}.context-top-action,.context-icon-action{border:none;background:transparent;color:#5f5d58;border-radius:7px;padding:5px 6px;font-size:11px;font-weight:600;font-family:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:5px}.context-icon-action{padding:5px}.context-top-action:hover,.context-icon-action:hover{background:#f3f2ef}.context-parent{padding:6px 8px;font-size:13px;font-weight:600;color:#37352f;display:flex;align-items:center;gap:7px;cursor:pointer}.context-item{width:100%;border:0;background:transparent;text-align:left;padding:5px 8px;border-radius:6px;font-size:12.5px;color:#9b9a97;cursor:pointer;display:flex;align-items:center;gap:6px;transition:background .1s;font-family:inherit}.context-item:hover{background:#fafaf8}.context-item.active{color:#37352f;background:#f0efec;font-weight:600}.context-item-nested{padding-left:22px}.context-folder-label{font-size:12px;color:#7a7974;padding:7px 8px 4px;font-weight:600;display:inline-flex;align-items:center;gap:6px}.context-folder-group{margin-top:2px}.context-folder-row{display:flex;align-items:center;justify-content:space-between;gap:6px}.context-folder-add-file{border:none;background:transparent;color:#716f69;border-radius:6px;padding:3px 5px;cursor:pointer;margin-right:4px;opacity:0;pointer-events:none;transition:opacity .12s ease}.context-folder-row:hover .context-folder-add-file{opacity:1;pointer-events:auto}.context-folder-add-file:hover{background:#f3f2ef}.context-add{padding:10px 8px;font-size:12.5px;color:#c4c3bf;cursor:pointer;display:flex;align-items:center;gap:6px;margin-top:4px}.context-content{flex:1;padding:20px 48px 32px;overflow-y:auto;max-width:none;width:100%}.context-content h1{font-size:28px;font-weight:700;color:#37352f;margin:0 0 6px}.context-header-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.context-file-name{font-size:14px;font-weight:600;color:#66645f;line-height:1}.context-edit-actions{display:flex;gap:8px}.context-edit-btn,.context-cancel-btn,.context-save-btn{border:1px solid #ddd8cf;background:#fff;color:#5f5d58;border-radius:8px;padding:6px 10px;font-size:12px;font-weight:600;font-family:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:6px}.context-save-btn{background:#2383e2;border-color:#2383e2;color:#fff}.context-updated{font-size:12px;color:#c4c3bf;margin-bottom:28px}.context-body{font-size:15px;color:#37352f;line-height:1.75;white-space:pre-wrap;word-break:break-word}.context-markdown{color:#37352f;line-height:1.7;font-size:15px}.context-markdown h1,.context-markdown h2,.context-markdown h3{line-height:1.25;margin-top:1.2em;margin-bottom:.5em}.context-markdown p,.context-markdown ul,.context-markdown ol{margin:.5em 0}.context-markdown code{background:#f4f2ee;border-radius:4px;padding:.1em .35em;font-size:.9em}.context-markdown pre{background:#f7f6f3;border:1px solid #ece8e1;border-radius:8px;padding:10px 12px;overflow-x:auto}.context-markdown table{border-collapse:collapse;width:100%;margin:.5em 0;font-size:14px}.context-markdown th,.context-markdown td{border:1px solid #e3e0d8;padding:6px 10px;text-align:left}.context-markdown th{background:#f7f6f3;font-weight:600}.context-markdown tr:nth-child(2n){background:#fafaf8}.context-editor{width:100%;min-height:420px;border:1px solid #ddd8cf;border-radius:10px;padding:12px;color:#37352f;font-size:14px;line-height:1.55;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;resize:vertical}.context-draft-row{width:100%;border:none;border-radius:6px;background:transparent;text-align:left;padding:5px 8px;font-size:12.5px;color:#9b9a97;display:flex;align-items:center;gap:6px;margin:2px 0}.context-draft-row.context-item-nested{padding-left:22px}.context-draft-input{border:none;outline:none;width:100%;font-size:12.5px;color:#37352f;background:transparent;font-family:inherit}.context-node-icon{width:14px;min-width:14px;font-size:11px;display:inline-flex;align-items:center;justify-content:center}.files-view{flex:1;min-height:0;display:flex}.files-empty{flex:1;display:flex;align-items:center;justify-content:center}.files-empty-inner{text-align:center;display:flex;flex-direction:column;align-items:center;gap:6px}.files-empty-icon{color:#c4c3bf;margin-bottom:4px}.files-empty-title{font-size:15px;font-weight:600;color:#37352f}.files-empty-desc{font-size:13px;color:#9b9a97}.files-sidebar{width:240px;border-right:1px solid #F0EFEC;padding:18px 12px;overflow-y:auto;flex-shrink:0;display:flex;flex-direction:column}.files-sidebar-header{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}.files-section-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#c4c3bf}.files-count{font-size:11px;color:#9b9a97;font-weight:600}.files-list{display:flex;flex-direction:column;gap:1px}.files-item{width:100%;border:0;background:transparent;text-align:left;padding:6px 8px;border-radius:6px;font-size:12.5px;color:#9b9a97;cursor:pointer;display:flex;align-items:center;gap:7px;transition:background .1s;font-family:inherit}.files-item:hover{background:#fafaf8}.files-item.active{color:#37352f;background:#f0efec;font-weight:600}.files-item-icon{flex-shrink:0;line-height:0}.files-item-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.files-item-size{flex-shrink:0;font-size:10px;color:#c4c3bf;font-weight:500}.files-content{flex:1;padding:20px 32px 32px;overflow-y:auto;min-width:0}.files-preview-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.files-preview-path{font-size:13px;color:#5f5d58;font-weight:600;min-width:0;word-break:break-all}.settings-layout{flex:1;display:flex;min-height:0}.settings-sidebar{width:180px;flex-shrink:0;background:#fff;border-right:1px solid #ebe7df;padding:12px 8px;display:flex;flex-direction:column;gap:2px}.settings-sidebar-item{padding:7px 10px;border-radius:7px;background:transparent;border:none;display:flex;align-items:center;gap:10px;cursor:pointer;font-size:14px;font-weight:500;color:#91918e;text-align:left;font-family:inherit;transition:background .12s,color .12s}.settings-sidebar-item:hover{background:#0000000a;color:#37352f}.settings-sidebar-item.active{background:#0000000d;font-weight:600;color:#37352f}.settings-view{flex:1;padding:24px;overflow-y:auto}.settings-card{border:1px solid #ebe7df;border-radius:12px;background:#fff;padding:16px;max-width:760px}.settings-card h2{font-size:20px;color:#37352f;margin-bottom:16px}.settings-danger-title{font-size:12px;font-weight:700;color:#b24141;text-transform:uppercase;letter-spacing:.08em;margin-bottom:8px}.settings-danger-row{border:1px solid #f0d5d5;background:#fff8f8;border-radius:10px;padding:12px;display:flex;align-items:center;justify-content:space-between;gap:12px}.settings-danger-label{font-size:14px;font-weight:700;color:#6d1f1f;margin-bottom:4px}.settings-danger-help{font-size:13px;color:#8a5454;line-height:1.35}.settings-delete-btn{border:1px solid #c63f3f;background:#d84a4a;color:#fff;border-radius:8px;padding:7px 10px;font-size:12px;font-weight:700;font-family:inherit;cursor:pointer;white-space:nowrap}.settings-section-title{font-size:12px;font-weight:700;color:#6b6b5e;text-transform:uppercase;letter-spacing:.08em;margin-bottom:8px}.settings-feedback-form{margin-bottom:20px}.settings-feedback-textarea{width:100%;border:1px solid #ebe7df;border-radius:10px;padding:10px 12px;font-size:13px;font-family:inherit;color:#37352f;background:#fafaf8;resize:vertical;line-height:1.5;box-sizing:border-box}.settings-feedback-textarea:focus{outline:none;border-color:#b8b4ac}.settings-feedback-footer{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:8px}.settings-feedback-btn{border:1px solid #c4c0b8;background:#37352f;color:#fff;border-radius:8px;padding:7px 14px;font-size:12px;font-weight:700;font-family:inherit;cursor:pointer;white-space:nowrap}.settings-feedback-btn:disabled{opacity:.45;cursor:default}.settings-feedback-success{font-size:12px;color:#2e7d32}.settings-feedback-error{font-size:12px;color:#b24141}.settings-harness-card{border:1px solid #ebe7df;background:#fafaf8;border-radius:10px;padding:16px;margin-bottom:12px}.settings-harness-header{display:flex;align-items:center;gap:10px;margin-bottom:14px}.settings-harness-name{font-size:15px;font-weight:700;color:#37352f}.settings-harness-status{display:flex;align-items:center;gap:5px;font-size:12px;font-weight:500}.settings-harness-status-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.settings-harness-status-dot.available{background:#2e7d32}.settings-harness-status-dot.unavailable{background:#91918e}.settings-harness-command{font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:#91918e;background:#0000000a;padding:2px 7px;border-radius:4px;margin-left:auto}.settings-harness-models{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:4px}.settings-harness-model-pill{font-size:12px;font-weight:500;color:#37352f;background:#fff;border:1px solid #ebe7df;border-radius:6px;padding:3px 10px}.settings-harness-detail-row{display:flex;align-items:baseline;gap:8px;font-size:13px;color:#37352f;margin-bottom:4px}.settings-harness-detail-label{font-weight:600;color:#6b6b5e;flex-shrink:0}.settings-harness-path{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:#91918e}.cv{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.cv-header{flex-shrink:0;padding:20px 24px 0}.cv-header-inner{display:flex;align-items:baseline;gap:10px}.cv-title{font-size:20px;font-weight:700;color:#37352f;margin:0}.cv-subtitle{font-size:13px;color:#9b9a97;font-weight:400}.cv-content{flex:1;min-height:0;overflow-y:auto;padding:16px 24px 24px}.cv-loading{display:flex;align-items:center;gap:10px;color:#9b9a97;font-size:13px;padding:40px 0;justify-content:center}.cv-spinner{width:16px;height:16px;border:2px solid #e8e7e4;border-top-color:#2383e2;border-radius:50%;animation:cv-spin .6s linear infinite}.cv-spinner-sm{width:12px;height:12px;border:1.5px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:cv-spin .6s linear infinite}@keyframes cv-spin{to{transform:rotate(360deg)}}.cv-error{display:flex;align-items:center;gap:8px;padding:10px 14px;background:#fef2f2;border:1px solid #fecaca;border-radius:10px;color:#dc2626;font-size:13px}.cv-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:48px 0;color:#b0afa8}.cv-empty-title{font-size:15px;font-weight:600;color:#6f6e69;margin:4px 0 0}.cv-empty-desc{font-size:13px;color:#9b9a97;margin:0}.cv-repos{display:flex;flex-direction:column;gap:10px;margin-bottom:20px}.cv-repo-card{border:1px solid #e8e7e4;border-radius:12px;background:#fff;padding:14px 16px;transition:border-color .15s}.cv-repo-card:hover{border-color:#d4d3d0}.cv-repo-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.cv-repo-name-row{display:flex;align-items:center;gap:8px;min-width:0}.cv-repo-icon{flex-shrink:0;color:#6f6e69}.cv-repo-name{font-size:14px;font-weight:700;color:#37352f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cv-badge{flex-shrink:0;font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px;white-space:nowrap}.cv-badge-clean{background:#ecfdf5;color:#059669}.cv-badge-dirty{background:#fffbeb;color:#d97706}.cv-push-btn{display:flex;align-items:center;gap:5px;flex-shrink:0;border:none;border-radius:8px;background:#2383e2;color:#fff;font-size:12px;font-weight:600;padding:5px 12px;cursor:pointer;transition:background .15s;font-family:inherit}.cv-push-btn:hover:not(:disabled){background:#1b6ec2}.cv-push-btn:disabled{opacity:.7;cursor:default}.cv-repo-nogit{font-size:12px;color:#9b9a97;font-style:italic}.cv-repo-details{display:flex;flex-direction:column;gap:6px}.cv-repo-detail-row{display:flex;align-items:center;gap:6px;font-size:12px;color:#6f6e69;min-width:0}.cv-repo-detail-row svg{flex-shrink:0;color:#b0afa8}.cv-repo-detail-label{flex-shrink:0;font-weight:600;color:#9b9a97;min-width:58px}.cv-repo-detail-value{color:#37352f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cv-repo-detail-secondary{flex-shrink:0;color:#b0afa8;font-size:11px}.cv-repo-remote{overflow:hidden;text-overflow:ellipsis}.cv-repo-hash{flex-shrink:0;font-size:11px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;background:#f5f4f2;padding:1px 6px;border-radius:4px;color:#6f6e69}.cv-repo-commit-msg{overflow:hidden;text-overflow:ellipsis}.cv-unpushed-highlight{color:#2383e2;font-weight:600}.cv-actions{display:flex;flex-direction:column;gap:10px}.cv-action-card{border:1px solid #e8e7e4;border-radius:12px;background:#fafaf8;padding:14px 16px}.cv-action-header{display:flex;align-items:center;gap:8px;margin-bottom:10px;color:#6f6e69}.cv-action-title{font-size:13px;font-weight:700;color:#37352f}.cv-action-body{display:flex;align-items:center;gap:8px}.cv-input{flex:1;min-width:0;border:1px solid #deddd8;border-radius:8px;padding:7px 10px;font-size:13px;font-family:inherit;color:#37352f;background:#fff;transition:border-color .15s}.cv-input:focus{outline:none;border-color:#2383e2;box-shadow:0 0 0 2px #2383e21a}.cv-btn{flex-shrink:0;border:none;border-radius:8px;font-size:12px;font-weight:700;padding:8px 14px;cursor:pointer;font-family:inherit;transition:background .15s,opacity .15s}.cv-btn-primary{background:#2383e2;color:#fff}.cv-btn-primary:hover:not(:disabled){background:#1b6ec2}.cv-btn-secondary{background:#e8e7e4;color:#37352f}.cv-btn-secondary:hover:not(:disabled){background:#dddcd8}.cv-btn:disabled{opacity:.5;cursor:default}.cv-inline-error{display:flex;align-items:center;gap:6px;margin-top:8px;font-size:12px;color:#dc2626}.cv-processes{margin-top:12px;padding-top:12px;border-top:1px solid #F0EFEC}.cv-processes-header{display:flex;align-items:center;gap:6px;color:#6f6e69;margin-bottom:8px}.cv-processes-title{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;flex:1}.cv-processes-actions{display:flex;gap:4px}.cv-processes-empty{font-size:12px;color:#b0afa8;padding:4px 0}.cv-proc-row{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:8px;margin-bottom:2px}.cv-proc-row:hover{background:#00000008}.cv-proc-dot{width:7px;height:7px;border-radius:50%;background:#b0afa8;flex-shrink:0}.cv-proc-dot.running{background:#2fa67e}.cv-proc-dot.exited{background:#dc2626}.cv-proc-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.cv-proc-label{font-size:13px;font-weight:600;color:#37352f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cv-proc-command{font-size:11px;color:#9b9a97;font-family:SF Mono,Menlo,Consolas,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cv-proc-type-badge{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.3px;padding:2px 6px;border-radius:4px;flex-shrink:0}.cv-proc-type-service{background:#e8f5e9;color:#2e7d32}.cv-proc-type-script{background:#e3f2fd;color:#1565c0}.cv-proc-actions{display:flex;gap:4px;opacity:0;transition:opacity .12s ease}.cv-proc-row:hover .cv-proc-actions{opacity:1}.cv-proc-btn{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border:none;border-radius:6px;font-size:11px;font-weight:600;cursor:pointer;background:transparent;color:#6f6e69;transition:background .12s ease,color .12s ease}.cv-proc-btn:hover:not(:disabled){background:#0000000f;color:#37352f}.cv-proc-btn:disabled{opacity:.4;cursor:default}.cv-proc-btn-ghost{color:#9b9a97}.cv-proc-btn-ghost:hover:not(:disabled){color:#37352f;background:#0000000a}.cv-proc-btn-start{color:#2fa67e}.cv-proc-btn-start:hover:not(:disabled){background:#2fa67e1a}.cv-proc-btn-stop{color:#e67e22}.cv-proc-btn-stop:hover:not(:disabled){background:#e67e221a}.cv-proc-btn-delete{color:#dc2626}.cv-proc-btn-delete:hover:not(:disabled){background:#dc26261a}.cv-proc-add-form{display:flex;flex-direction:column;gap:6px;padding:10px;margin-top:6px;border:1px solid #E8E7E4;border-radius:8px;background:#fafaf8}.cv-proc-add-row{display:flex;gap:6px;align-items:center}.cv-proc-add-input{flex:1;min-width:0}.cv-proc-add-select{width:90px;flex-shrink:0}.cv-proc-add-submit{flex-shrink:0}.sidebar-service-dot.exited{background:#dc2626}.empty-pane{flex:1;display:flex;align-items:center;justify-content:center}.empty-pane-inner{text-align:center;color:#c4c3bf}.empty-pane-icon{font-size:40px;margin-bottom:12px}.empty-pane-title{font-size:16px;font-weight:600;color:#9b9a97}.empty-pane-desc{font-size:13px;margin-top:4px}.muted{color:#c4c3bf;font-size:12.5px;padding:12px 10px}.skeleton-row{height:40px;border-radius:8px;background:linear-gradient(90deg,#f0efec 25%,#f7f6f3,#f0efec 75%);background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.task-elapsed{font-size:11px;color:#c4c3bf;white-space:nowrap;flex-shrink:0}@keyframes completionFlash{0%{background:#2fa67e14}to{background:transparent}}.task-row.just-completed{animation:completionFlash 1.2s ease-out forwards}@keyframes checkIn{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}.error{color:#b00020;font-size:13px;padding:8px 0}.workspace-error{background:#fff3cd;color:#6f5a00;border-bottom:1px solid #f3e3a4;padding:8px 16px;font-size:13px}.tasks-list{display:flex;flex-direction:column;gap:8px}.task-row{border:none;border-radius:10px;background:#fff;display:flex;align-items:stretch;justify-content:space-between;gap:14px;transition:box-shadow .12s ease,background .12s ease;position:relative}.task-row:hover{box-shadow:0 1px 6px #0000000a;background:#fcfcfb}.task-row-main{border:none;background:transparent;padding:12px;font-family:inherit;text-align:left;cursor:pointer;min-width:0;flex:1}.task-row-right{padding:10px 12px 10px 0;display:flex;flex-direction:column;align-items:flex-end;gap:8px;flex-shrink:0}.task-title{font-size:14px;color:#37352f;font-weight:600;margin-bottom:6px}.task-meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap;color:#8d8b87;font-size:12px}.task-chip{border-radius:999px;background:#f1f0ed;color:#6f6d67;font-size:11px;padding:1px 8px;font-weight:600}.task-time{color:#9b9a97;font-size:12px;white-space:nowrap}.task-recipient-wrap{position:relative}.task-recipient-btn{border:1px solid #d8d6d2;background:#fff;color:#5e5c58;border-radius:7px;padding:4px 8px;font-size:11px;font-weight:600;font-family:inherit;cursor:pointer}.task-recipient-menu{position:absolute;right:0;top:calc(100% + 6px);min-width:220px;background:#fff;border:1px solid #ecebe8;border-radius:10px;box-shadow:0 8px 22px #0000001f;padding:5px;z-index:40}.task-recipient-empty{padding:8px 10px;font-size:12px;color:#9b9a97}.task-recipient-option{width:100%;border:none;background:transparent;border-radius:8px;padding:8px 9px;display:flex;flex-direction:column;gap:2px;text-align:left;cursor:pointer;font-family:inherit}.task-recipient-option:hover{background:#f7f7f5}.task-recipient-name{font-size:12px;font-weight:600;color:#37352f}.task-recipient-id{font-size:11px;color:#9b9a97}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000040;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:200;padding:16px;animation:backdropFadeIn .15s ease}@keyframes backdropFadeIn{0%{opacity:0}to{opacity:1}}.modal-card{width:100%;max-width:520px;background:#fff;border-radius:16px;padding:24px;box-shadow:0 20px 60px #00000029}.modal-card h2{font-size:20px;color:#37352f;margin-bottom:6px}.modal-card p{font-size:13px;color:#8f8e8a;margin-bottom:14px}.modal-label{display:block;font-size:12px;font-weight:700;color:#6f6e69;margin-bottom:6px}.modal-input,.modal-textarea{width:100%;border:1.5px solid #ECEBE8;border-radius:8px;padding:9px 10px;font-size:14px;font-family:inherit;color:#37352f;margin-bottom:12px;background:#fafaf8;outline:none;transition:border-color .12s}.modal-input:focus,.modal-textarea:focus{border-color:#b0afa8}.modal-textarea{resize:vertical;min-height:100px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.modal-cancel,.modal-create{border-radius:8px;border:none;padding:8px 16px;font-size:13px;font-weight:600;font-family:inherit;cursor:pointer;transition:background .12s,color .12s}.modal-cancel{background:transparent;color:#9b9a97}.modal-cancel:hover{color:#6f6e69}.modal-create{background:#37352f;color:#fff}.modal-create:hover{background:#1a1917}.modal-create:disabled{opacity:.4;cursor:not-allowed}.modal-card--wide{max-width:620px}.cn-auth-type-toggle{display:flex;gap:8px;margin-bottom:12px}.cn-auth-type-btn{display:inline-flex;align-items:center;gap:5px;padding:6px 14px;border:1px solid #e0dfdb;border-radius:8px;background:#fff;color:#6f6e69;font-size:12px;font-weight:500;cursor:pointer;transition:all .15s ease}.cn-auth-type-btn:hover{border-color:#c4c3bf;color:#37352f}.cn-auth-type-btn--active{background:#37352f;color:#fff;border-color:#37352f}.cn-auth-type-btn--active:hover{background:#1a1917;border-color:#1a1917;color:#fff}.orchestrator-config-section{margin-top:4px;margin-bottom:4px}.orchestrator-config-loading{font-size:13px;color:#9b9a97;padding:12px 0}.orchestrator-cli-options{display:flex;gap:8px}.orchestrator-cli-option{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:12px 8px;border:1.5px solid #ecebe8;border-radius:8px;background:#fff;cursor:pointer;transition:border-color .12s,background .12s}.orchestrator-cli-option:hover:not(:disabled){border-color:#b0afa8}.orchestrator-cli-option--selected{border-color:#37352f;background:#f7f6f3}.orchestrator-cli-option--disabled{opacity:.45;cursor:not-allowed}.orchestrator-cli-name{font-size:13px;font-weight:600;color:#37352f}.orchestrator-cli-command{font-size:11px;color:#9b9a97;font-family:SF Mono,Menlo,monospace}.orchestrator-cli-unavailable{font-size:10px;color:#e16259;margin-top:2px}.cn{display:flex;flex-direction:column;height:100%}.cn-header{flex-shrink:0;padding:16px 24px 0}.cn-header-inner{display:flex;align-items:baseline;gap:10px}.cn-title{font-size:20px;font-weight:700;color:#37352f;margin:0}.cn-subtitle{font-size:13px;color:#9b9a97;font-weight:400}.cn-content{flex:1;min-height:0;overflow-y:auto;padding:16px 24px 24px}.cn-loading{display:flex;align-items:center;gap:10px;color:#9b9a97;font-size:13px;padding:40px 0;justify-content:center}.cn-spinner{width:16px;height:16px;border:2px solid #e8e7e4;border-top-color:#2383e2;border-radius:50%;animation:cv-spin .6s linear infinite}.cn-spinner-sm{width:12px;height:12px;border:1.5px solid rgba(0,0,0,.15);border-top-color:#37352f;border-radius:50%;animation:cv-spin .6s linear infinite}.cn-error{display:flex;align-items:center;gap:8px;padding:10px 14px;background:#fef2f2;border:1px solid #fecaca;border-radius:10px;color:#dc2626;font-size:13px}.cn-retry-btn{margin-left:auto;border:1px solid #fecaca;background:#fff;color:#dc2626;font-size:12px;font-weight:600;padding:4px 12px;border-radius:6px;cursor:pointer;font-family:inherit}.cn-retry-btn:hover{background:#fef2f2}.cn-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:48px 0;color:#b0afa8}.cn-empty-title{font-size:15px;font-weight:600;color:#6f6e69;margin:4px 0 0}.cn-empty-desc{font-size:13px;color:#9b9a97;margin:0}.cn-section{margin-bottom:20px}.cn-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.cn-section-header .cn-section-title{margin-bottom:0}.cn-section-title{font-size:13px;font-weight:700;color:#37352f;margin:0 0 4px;text-transform:uppercase;letter-spacing:.03em}.cn-section-desc{font-size:12.5px;color:#9b9a97;margin:2px 0 10px;line-height:1.45}.cn-create-skill-btn{display:inline-flex;align-items:center;gap:4px;border:1.5px solid #ECEBE8;border-radius:6px;background:#fff;padding:3px 10px;font-size:12px;font-weight:600;font-family:inherit;color:#37352f;cursor:pointer;transition:background .12s,border-color .12s}.cn-create-skill-btn:hover{background:#f5f5f3;border-color:#b0afa8}.cn-section-source{font-size:12px;color:#9b9a97;margin:0 0 10px;font-family:SF Mono,Menlo,monospace}.cn-list{display:flex;flex-direction:column;border:1px solid #e8e7e4;border-radius:10px;overflow:hidden}.cn-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 14px;background:#fff;transition:background .1s;min-height:38px}.cn-row:not(:last-child){border-bottom:1px solid #f0efec}.cn-row:hover{background:#fafaf9}.cn-row--clickable{cursor:pointer}.cn-row--connected{background:#f9fafb}.cn-skill-block{background:#fff}.cn-skill-block:not(:last-child){border-bottom:1px solid #f0efec}.cn-skill-block .cn-row{border-bottom:none}.cn-skill-modal{max-width:600px;display:flex;flex-direction:column;max-height:80vh}.cn-skill-modal-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.cn-skill-modal-header h2{margin-bottom:0}.cn-skill-modal-close{background:none;border:none;color:#9b9a97;cursor:pointer;padding:4px;border-radius:6px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .1s,color .1s}.cn-skill-modal-close:hover{background:#f0efec;color:#37352f}.cn-skill-modal-desc{font-size:13px;color:#55534e;line-height:1.55;margin:8px 0 0}.cn-skill-modal-content{font-size:12px;line-height:1.55;color:#37352f;background:#f9fafb;border:1px solid #e8e7e4;border-radius:6px;padding:12px 14px;margin:14px 0 0;white-space:pre-wrap;word-break:break-word;max-height:50vh;overflow-y:auto;font-family:SFMono-Regular,Menlo,Monaco,Consolas,monospace}.cn-row-left{display:flex;align-items:center;gap:8px;min-width:0;flex:1}.cn-row-name{font-size:13px;font-weight:600;color:#37352f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:0}.cn-row-desc{font-size:12px;color:#9b9a97;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.cn-row-meta{font-size:11px;color:#9b9a97;font-weight:500;padding:1px 6px;border-radius:4px;background:#f7f6f3;white-space:nowrap;flex-shrink:0}.cn-row-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}.cn-row-chips{display:flex;flex-wrap:wrap;align-items:center;gap:4px;flex:1;min-width:0}.cn-agent-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}.cn-agent-card{background:#fff;border:1px solid #e8e7e4;border-radius:10px;padding:14px;display:flex;flex-direction:column;gap:12px;transition:border-color .15s,box-shadow .15s}.cn-agent-card:hover{border-color:#d3d1cc;box-shadow:0 1px 4px #0000000a}.cn-agent-card-header{display:flex;align-items:center;gap:10px}.cn-agent-card-avatar{width:36px;height:36px;display:flex;align-items:center;justify-content:center;font-size:20px;background:#f7f7f5;border-radius:8px;flex-shrink:0;line-height:1}.cn-agent-card-identity{display:flex;flex-direction:column;min-width:0}.cn-agent-card-name{font-size:13px;font-weight:600;color:#37352f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cn-agent-card-meta{font-size:11.5px;color:#9b9a97;display:flex;align-items:center;gap:4px}.cn-agent-card-sep{color:#d3d1cc}.cn-agent-card-skills{display:flex;flex-wrap:wrap;gap:5px;align-items:center}.cn-agent-skills-section{display:flex;flex-wrap:wrap;gap:5px;align-items:center;width:100%}.cn-agent-skills-section-label{width:100%;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#999;margin-bottom:1px}.cn-agent-skills-section+.cn-agent-skills-section{margin-top:6px}.cn-agent-skill-item{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:#37352f;background:#f7f7f5;border-radius:5px;padding:3px 7px;line-height:1;transition:background .1s}.cn-agent-skill-item:hover{background:#f0efec}.cn-agent-skill-dot{width:6px;height:6px;border-radius:50%;background:#2383e2;flex-shrink:0}.cn-agent-skill-dot--connector{background:#e09b3d}.cn-agent-skill-dot--global{background:#2563eb}.cn-agent-skill-dot--mcp{background:#059669}.cn-agent-skill-name{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:140px}.cn-agent-skill-remove{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;color:#c4c3bf;padding:0;margin-left:-1px;border-radius:3px;transition:color .12s;line-height:1}.cn-agent-skill-remove:hover{color:#dc2626}.cn-agent-skill-item--connector{background:#fef8ee}.cn-agent-skill-item--connector:hover{background:#fef3dd}.cn-agent-skill-item--global{background:#f0f4ff}.cn-agent-skill-item--global:hover{background:#e6edff}.cn-agent-skill-item--mcp{background:#f0fdf4}.cn-agent-skill-item--mcp:hover{background:#e5fbed}.cn-agent-card-empty{font-size:12px;color:#b4b3af;font-style:italic}.cn-agent-skill-add{display:inline-flex;align-items:center;gap:3px;border:1px dashed #d3d1cc;border-radius:5px;background:none;color:#9b9a97;font-size:11.5px;font-weight:500;font-family:inherit;padding:3px 8px;cursor:pointer;transition:all .12s;line-height:1}.cn-agent-skill-add:hover:not(:disabled){border-color:#2383e2;color:#2383e2;background:#f0f7ff}.cn-agent-skill-add:disabled{opacity:.5;cursor:default}.cn-dropdown-group-label{font-size:10px;font-weight:700;color:#9b9a97;text-transform:uppercase;letter-spacing:.05em;padding:6px 12px 2px}.cn-columns{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}.cn-col{min-width:0}.cn-col .cn-section{margin-bottom:0}.cn-conn-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;background:#fff;transition:background .1s}.cn-conn-row:not(:last-child){border-bottom:1px solid #f0efec}.cn-conn-row:hover{background:#fafaf9}.cn-conn-row--connected{background:#f9fafb}.cn-conn-row--connected:hover{background:#f4f5f6}.cn-conn-info{display:flex;align-items:center;gap:10px;min-width:0;flex:1}.cn-conn-logo-wrap{flex-shrink:0;width:28px;height:28px;display:flex;align-items:center;justify-content:center}.cn-conn-logo{width:22px;height:22px}.cn-conn-logo-fallback{width:28px;height:28px;border-radius:6px;background:#f0f0ee;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:#6f6e69}.cn-conn-details{min-width:0;flex:1}.cn-conn-name-row{display:flex;align-items:center;gap:6px}.cn-conn-name{font-size:13px;font-weight:600;color:#37352f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cn-conn-desc{display:block;font-size:11px;color:#9b9a97;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}.cn-list-empty{padding:20px 14px;text-align:center;font-size:13px;color:#9b9a97}.cn-card-name{font-size:14px;font-weight:700;color:#37352f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cn-badge{flex-shrink:0;font-size:11px;font-weight:600;padding:2px 8px;border-radius:10px;white-space:nowrap}.cn-badge--connected{background:#ecfdf5;color:#059669}.cn-badge--disconnected{background:#fefce8;color:#ca8a04}.cn-badge--needs-config{background:#f3f4f6;color:#6b7280}.cn-badge--custom{background:#f0f0ff;color:#6366f1}.cn-badge--global{background:#eff6ff;color:#2563eb}.cn-global-source{font-size:11px;color:#9b9a97;font-family:SF Mono,Fira Code,monospace}.cn-card-desc{font-size:12px;color:#6f6e69;margin:0 0 10px;line-height:1.4;flex:1;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.cn-card-footer{display:flex;align-items:center;gap:8px;margin-top:auto}.cn-remove-btn{display:flex;align-items:center;gap:4px;border:1px solid #e8e7e4;border-radius:6px;background:#fff;color:#6f6e69;font-size:12px;font-weight:500;padding:3px 10px;cursor:pointer;transition:all .15s;font-family:inherit}.cn-remove-btn:hover:not(:disabled){border-color:#dc2626;color:#dc2626}.cn-remove-btn:disabled{opacity:.7;cursor:default}.cn-connect-stack{display:flex;flex-direction:column;align-items:center;gap:4px}.cn-config-btn,.cn-connect-btn,.cn-disconnect-btn{display:flex;align-items:center;gap:4px;border:1px solid #e8e7e4;border-radius:6px;background:#fff;font-size:12px;font-weight:500;padding:3px 10px;cursor:pointer;transition:all .15s;font-family:inherit}.cn-config-btn{color:#6f6e69}.cn-config-btn:hover{border-color:#2383e2;color:#2383e2}.cn-connect-btn{background:#2383e2;color:#fff;border-color:#2383e2;font-weight:600}.cn-connect-btn:hover:not(:disabled){background:#1b6ec2}.cn-connect-btn:disabled{opacity:.7;cursor:default}.cn-disconnect-btn{color:#6f6e69}.cn-disconnect-btn:hover{border-color:#dc2626;color:#dc2626}.cn-manual-config-link{background:none;border:none;padding:0;margin:0;font-size:11px;color:#9b9a97;cursor:pointer;font-family:inherit;text-decoration:underline;text-underline-offset:2px;transition:color .15s}.cn-manual-config-link:hover{color:#37352f}.cn-manual-config-hint{font-size:12px;color:#9b9a97;margin:0 0 12px;line-height:1.5}.cn-card-meta{display:flex;gap:8px;margin-bottom:8px}.cn-card-provider,.cn-card-auth-type{font-size:11px;color:#9b9a97;font-weight:500;padding:1px 6px;border-radius:4px;background:#f7f6f3}.cn-agent-chip--connector{background:#fef3c7!important;border-color:#fcd34d!important}.cn-agents-section{margin-top:8px;padding-top:8px;border-top:1px solid #e8e7e4}.cn-agents-label{font-size:11px;font-weight:600;color:#9b9a97;text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px}.cn-agents-list{display:flex;flex-wrap:wrap;align-items:center;gap:5px}.cn-agents-none{font-size:12px;color:#b4b3af;font-style:italic}.cn-agent-chip{display:inline-flex;align-items:center;gap:3px;background:#f0f0ee;border:1px solid #e0dfdc;border-radius:12px;padding:2px 6px 2px 4px;font-size:12px;color:#37352f;line-height:1}.cn-agent-chip-emoji{font-size:12px}.cn-agent-chip-name{font-weight:500}.cn-agent-chip-remove{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;color:#9b9a97;padding:0;margin-left:1px;border-radius:50%;transition:color .15s}.cn-agent-chip-remove:hover{color:#dc2626}.cn-agent-chip--global{background:#eff6ff;border-color:#bfdbfe;color:#1e40af;padding:2px 8px}.cn-agent-chip--mcp{background:#f0fdf4;border-color:#bbf7d0;color:#166534;padding:2px 8px}.cn-agent-add-wrap{position:relative}.cn-agent-add-btn{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;border:1px dashed #c8c7c3;background:none;color:#9b9a97;cursor:pointer;transition:all .15s}.cn-agent-add-btn:hover:not(:disabled){border-color:#2383e2;color:#2383e2;background:#f0f7ff}.cn-agent-add-btn:disabled{opacity:.6;cursor:default}.cn-agent-dropdown{position:absolute;top:100%;left:0;margin-top:4px;background:#fff;border:1px solid #e0dfdc;border-radius:8px;box-shadow:0 4px 12px #0000001a;min-width:160px;z-index:20;overflow:hidden}.cn-agent-dropdown-item{display:flex;align-items:center;gap:6px;width:100%;padding:7px 12px;border:none;background:none;font-size:13px;color:#37352f;cursor:pointer;text-align:left;font-family:inherit;transition:background .1s}.cn-agent-dropdown-item:hover:not(:disabled){background:#f5f5f4}.cn-agent-dropdown-item:disabled{opacity:.6;cursor:default}.apm-skills-list{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.apm-skills-none{font-size:12.5px;color:#b0afa8;font-style:normal}.apm-skill-chip{display:inline-flex;align-items:center;gap:4px;background:#f5f5f3;border:1px solid #ECEBE8;border-radius:6px;padding:4px 6px 4px 8px;font-size:12px;color:#37352f;line-height:1;transition:border-color .12s}.apm-skill-chip:hover{border-color:#d3d1cc}.apm-skill-chip-name{font-weight:500}.apm-skill-chip-remove{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;color:#c4c3bf;padding:1px;margin-left:1px;line-height:1;border-radius:4px;transition:color .12s,background .12s}.apm-skill-chip-remove:hover{color:#dc3545;background:#dc354514}.apm-skill-add-btn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:6px;border:1.5px dashed #D3D1CC;background:none;color:#b0afa8;cursor:pointer;transition:all .12s}.apm-skill-add-btn:hover:not(:disabled){border-color:#37352f;color:#37352f;background:#f5f5f3}.apm-skill-add-btn:disabled{opacity:.5;cursor:default}.apm-skill-dropdown{position:absolute;top:100%;left:0;margin-top:4px;background:#fff;border:1px solid #ECEBE8;border-radius:8px;box-shadow:0 0 0 1px #0000000a,0 4px 12px #00000014;min-width:190px;z-index:30;overflow:hidden;padding:4px}.apm-skill-dropdown-item{display:flex;align-items:center;gap:6px;width:100%;padding:7px 10px;border:none;background:none;font-size:13px;color:#37352f;cursor:pointer;text-align:left;font-family:inherit;border-radius:6px;transition:background .1s}.apm-skill-dropdown-item:hover:not(:disabled){background:#f5f5f3}.apm-skill-dropdown-item:disabled{opacity:.5;cursor:default}@media (max-width: 980px){.right-panel{display:none}}@media (max-width: 700px){.conv-header{padding:10px}.conv-header-agent-name{max-width:92px}.conv-body-split{grid-template-columns:1fr!important;grid-template-rows:minmax(180px,1fr) minmax(260px,1fr)}.conv-resize-handle{display:none}.conv-output-side{border-top:1px solid #f0efec;padding-top:10px}.conv-body,.conv-body-split{padding:0 10px 10px}.conv-footer{padding:10px 10px 12px}.output-file-grid{grid-template-columns:repeat(auto-fill,minmax(96px,1fr))}.output-html-preview{min-height:300px}.input-wrap{padding:8px 12px 14px}}
|