terminalos 0.4.0 → 0.5.0
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/README.md +26 -40
- package/bin/cli.js +53 -7
- package/build/after.png +0 -0
- package/build/apple-touch-icon.png +0 -0
- package/build/assets/index-CYAe4D_R.css +32 -0
- package/build/assets/index-CbqV7Qrz.js +135 -0
- package/build/before.png +0 -0
- package/build/favicon.ico +0 -0
- package/build/icon-128x128.png +0 -0
- package/build/icon-16x16.png +0 -0
- package/build/icon-256x256.png +0 -0
- package/build/icon-32x32.png +0 -0
- package/build/icon-48x48.png +0 -0
- package/build/icon-512x512.png +0 -0
- package/build/icon.png +0 -0
- package/build/index.html +29 -3
- package/build/manifest.json +18 -0
- package/build/og.png +0 -0
- package/build/site.webmanifest +32 -0
- package/package.json +8 -49
- package/public/after.png +0 -0
- package/public/apple-touch-icon.png +0 -0
- package/public/before.png +0 -0
- package/public/favicon.ico +0 -0
- package/public/icon-128x128.png +0 -0
- package/public/icon-16x16.png +0 -0
- package/public/icon-256x256.png +0 -0
- package/public/icon-32x32.png +0 -0
- package/public/icon-48x48.png +0 -0
- package/public/icon-512x512.png +0 -0
- package/public/icon.png +0 -0
- package/public/manifest.json +18 -0
- package/public/og.png +0 -0
- package/public/site.webmanifest +32 -0
- package/runtime-dist/server.js +1 -626
- package/build/assets/html2pdf-S6WA7sS3.js +0 -240
- package/build/assets/index-CfXPiaFw.css +0 -32
- package/build/assets/index-DfoqUTmD.js +0 -141
- package/electron/fs-watcher.js +0 -181
- package/electron/fs-watcher.ts +0 -183
- package/electron/main.js +0 -245
- package/electron/main.ts +0 -241
- package/electron/preload.js +0 -77
- package/electron/preload.ts +0 -105
- package/electron/process-detector.js +0 -63
- package/electron/process-detector.ts +0 -70
- package/electron/pty-manager.js +0 -188
- package/electron/pty-manager.ts +0 -181
- package/electron/tsconfig.json +0 -14
- package/electron/versions-manager.js +0 -74
- package/electron/versions-manager.ts +0 -98
- package/electron/window-state.js +0 -49
- package/electron/window-state.ts +0 -52
package/README.md
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
|
-
<img src="public/icon.png" alt="terminalOS Logo" width="96" />
|
|
3
|
+
<img src="https://unpkg.com/terminalos/public/icon.png" alt="terminalOS Logo" width="96" />
|
|
4
4
|
|
|
5
5
|
# terminalOS
|
|
6
6
|
|
|
7
|
-
**The terminal built for AI-native developers.**
|
|
7
|
+
**The browser-based terminal workspace built for AI-native developers.**
|
|
8
|
+
One command. Runs locally. Opens in your browser\*\*
|
|
8
9
|
|
|
9
|
-
[](package.json)
|
|
11
|
+
[]()
|
|
11
12
|
[]()
|
|
12
13
|
|
|
13
14
|
</div>
|
|
@@ -31,9 +32,9 @@ You're using a 1980s tool to run 2025 software.
|
|
|
31
32
|
|
|
32
33
|
## What terminalOS Does
|
|
33
34
|
|
|
34
|
-
terminalOS is a **
|
|
35
|
+
terminalOS is a **browser-based terminal multiplexer purpose-built for AI coding workflows**. Run it instantly with a single command — no installation, no download. It understands AI tools natively — detecting when they're running, tracking how much you're spending, and giving you a workspace that matches the way AI-assisted development actually works.
|
|
35
36
|
|
|
36
|
-
> Think iTerm2, but redesigned from scratch around Claude Code, Aider, and OpenCode.
|
|
37
|
+
> Think iTerm2, but redesigned from scratch around Claude Code, Aider, and OpenCode — and running right in your browser.
|
|
37
38
|
|
|
38
39
|
---
|
|
39
40
|
|
|
@@ -186,7 +187,6 @@ Team leads and senior engineers rolling out AI coding tools across their org. Th
|
|
|
186
187
|
|
|
187
188
|
### Who This Is NOT For (Yet)
|
|
188
189
|
|
|
189
|
-
- Developers who only use AI through browser-based IDEs (Cursor, GitHub Copilot in VS Code).
|
|
190
190
|
- Non-technical users — this is a power-user terminal tool.
|
|
191
191
|
- Teams already satisfied with Warp AI or Ghostty — though terminalOS goes deeper on AI-specific tooling.
|
|
192
192
|
|
|
@@ -194,16 +194,18 @@ Team leads and senior engineers rolling out AI coding tools across their org. Th
|
|
|
194
194
|
|
|
195
195
|
## Why terminalOS vs. Alternatives
|
|
196
196
|
|
|
197
|
-
|
|
|
198
|
-
|
|
|
199
|
-
| Native AI tool detection
|
|
200
|
-
| Real-time token tracking
|
|
201
|
-
| API error alerts
|
|
202
|
-
| Multi-pane AI sessions
|
|
203
|
-
| Integrated markdown editor
|
|
204
|
-
| Markdown version history
|
|
205
|
-
| Built for CLI AI tools
|
|
206
|
-
| Works with any AI tool
|
|
197
|
+
| | terminalOS | iTerm2 / Warp | VS Code Terminal | AI IDEs (Cursor) |
|
|
198
|
+
| ----------------------------------- | ---------- | ------------- | ---------------- | ---------------- |
|
|
199
|
+
| Native AI tool detection | ✅ | ❌ | ❌ | Partial |
|
|
200
|
+
| Real-time token tracking | ✅ | ❌ | ❌ | ❌ |
|
|
201
|
+
| API error alerts | ✅ | ❌ | ❌ | ❌ |
|
|
202
|
+
| Multi-pane AI sessions | ✅ | Manual | Manual | ❌ |
|
|
203
|
+
| Integrated markdown editor | ✅ | ❌ | Extension | ❌ |
|
|
204
|
+
| Markdown version history | ✅ | ❌ | ❌ | ❌ |
|
|
205
|
+
| Built for CLI AI tools | ✅ | ❌ | ❌ | ❌ |
|
|
206
|
+
| Works with any AI tool | ✅ | — | — | ❌ (locked in) |
|
|
207
|
+
| Zero-install, browser-based | ✅ | ❌ | ❌ | ❌ |
|
|
208
|
+
| 100% local — no cloud, full privacy | ✅ | ✅ | Partial | ❌ |
|
|
207
209
|
|
|
208
210
|
The key distinction: Warp and others add AI **to** a terminal. terminalOS is a terminal built **for** AI.
|
|
209
211
|
|
|
@@ -211,30 +213,15 @@ The key distinction: Warp and others add AI **to** a terminal. terminalOS is a t
|
|
|
211
213
|
|
|
212
214
|
## Installation
|
|
213
215
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
| Platform | Download |
|
|
219
|
-
| ----------------------------- | ----------------------- |
|
|
220
|
-
| macOS (Apple Silicon + Intel) | `.dmg` universal binary |
|
|
221
|
-
| Windows | `.exe` NSIS installer |
|
|
222
|
-
| Linux | `.AppImage` |
|
|
216
|
+
```bash
|
|
217
|
+
npx terminalos
|
|
218
|
+
```
|
|
223
219
|
|
|
224
|
-
|
|
220
|
+
That's it. terminalOS starts a **local server on your machine** and opens automatically in your browser. Everything runs locally — no cloud, no telemetry, no data sent anywhere. Your terminal sessions, files, and token usage never leave your machine.
|
|
225
221
|
|
|
226
222
|
**Requirements:** Node.js 18+, npm 9+
|
|
227
223
|
|
|
228
|
-
|
|
229
|
-
git clone https://github.com/your-org/terminalOS
|
|
230
|
-
cd terminalOS
|
|
231
|
-
npm install
|
|
232
|
-
npm run rebuild # Compiles native terminal module
|
|
233
|
-
npm run build # Production build
|
|
234
|
-
npm run dist # Package for your platform
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
**Development (hot reload):**
|
|
224
|
+
### Development (hot reload)
|
|
238
225
|
|
|
239
226
|
```bash
|
|
240
227
|
npm run dev
|
|
@@ -244,7 +231,7 @@ npm run dev
|
|
|
244
231
|
|
|
245
232
|
## Getting Started
|
|
246
233
|
|
|
247
|
-
1. **
|
|
234
|
+
1. **Start terminalOS** — run `npx terminalos` in your shell. It opens automatically in your browser. Then use `⌘O` or the command palette to set your workspace root.
|
|
248
235
|
2. **Launch an AI tool** — press `⌘⇧C` for Claude Code, `⌘⇧O` for OpenCode, or type the command manually.
|
|
249
236
|
3. **Watch the badge appear** — terminalOS detects the AI process and shows a live status indicator.
|
|
250
237
|
4. **Split your workspace** — `⌘D` to split right, `⌘⇧D` to split below. Run your tests alongside AI.
|
|
@@ -275,7 +262,7 @@ npm run dev
|
|
|
275
262
|
|
|
276
263
|
| Layer | Technology |
|
|
277
264
|
| ------------------- | --------------------- |
|
|
278
|
-
|
|
|
265
|
+
| Server runtime | Node.js 18+ |
|
|
279
266
|
| UI framework | React 19 + TypeScript |
|
|
280
267
|
| Build tooling | Vite 6 |
|
|
281
268
|
| Terminal emulator | XTerm.js 5.3 |
|
|
@@ -284,7 +271,6 @@ npm run dev
|
|
|
284
271
|
| File watching | Chokidar 4 |
|
|
285
272
|
| Markdown rendering | Marked 17 |
|
|
286
273
|
| Syntax highlighting | Highlight.js 11 |
|
|
287
|
-
| Auto-updater | electron-updater |
|
|
288
274
|
| Virtualized lists | React Window |
|
|
289
275
|
|
|
290
276
|
---
|
package/bin/cli.js
CHANGED
|
@@ -1,17 +1,63 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
3
|
|
|
4
|
+
const W = "\x1b[97m"; // bright white
|
|
5
|
+
const GR = "\x1b[90m"; // dark gray
|
|
6
|
+
const B = "\x1b[1m"; // bold
|
|
7
|
+
const D = "\x1b[2m"; // dim
|
|
8
|
+
const R = "\x1b[0m"; // reset
|
|
9
|
+
|
|
10
|
+
let version = "";
|
|
11
|
+
try {
|
|
12
|
+
version = require("../package.json").version;
|
|
13
|
+
} catch {}
|
|
14
|
+
|
|
4
15
|
const args = process.argv.slice(2);
|
|
16
|
+
const hasRun = args.includes("--start") || args.includes("--run");
|
|
5
17
|
|
|
6
|
-
const hasRun = args.includes("--run") || args.includes("--start");
|
|
7
18
|
if (!hasRun) {
|
|
8
|
-
|
|
9
|
-
|
|
19
|
+
const T = W + B;
|
|
20
|
+
const O = GR + B;
|
|
21
|
+
|
|
22
|
+
const logo = [
|
|
23
|
+
`${T}████████╗███████╗██████╗ ███╗ ███╗██╗███╗ ██╗ █████╗ ██╗ ${O} ██████╗ ███████╗${R}`,
|
|
24
|
+
`${T} ██╔══╝██╔════╝██╔══██╗████╗ ████║██║████╗ ██║██╔══██╗██║ ${O}██╔═══██╗██╔════╝${R}`,
|
|
25
|
+
`${T} ██║ █████╗ ██████╔╝██╔████╔██║██║██╔██╗ ██║███████║██║ ${O}██║ ██║███████╗${R}`,
|
|
26
|
+
`${T} ██║ ██╔══╝ ██╔══██╗██║╚██╔╝██║██║██║╚██╗██║██╔══██║██║ ${O}██║ ██║╚════██║${R}`,
|
|
27
|
+
`${T} ██║ ███████╗██║ ██║██║ ╚═╝ ██║██║██║ ╚████║██║ ██║███████╗${O}╚██████╔╝███████║${R}`,
|
|
28
|
+
`${T} ╚═╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚═╝ ╚═╝╚══════╝${O} ╚═════╝ ╚══════╝${R}`,
|
|
29
|
+
];
|
|
10
30
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
31
|
+
const pad = " ";
|
|
32
|
+
console.log("");
|
|
33
|
+
logo.forEach((line) => console.log(pad + line));
|
|
34
|
+
console.log("");
|
|
35
|
+
console.log(
|
|
36
|
+
`${pad}${D}The terminal purpose-built for AI coding workflows.${R} ${D}v${version}${R}`,
|
|
37
|
+
);
|
|
38
|
+
console.log(`${pad}${W}${B}terminalos.dev${R}`);
|
|
39
|
+
console.log("");
|
|
40
|
+
console.log(`${pad}${B}Features${R}`);
|
|
41
|
+
console.log(
|
|
42
|
+
`${pad} ${W}›${R} AI-native terminal with context-aware sessions`,
|
|
43
|
+
);
|
|
44
|
+
console.log(`${pad} ${W}›${R} Built-in token tracking for AI model usage`);
|
|
45
|
+
console.log(`${pad} ${W}›${R} File browser, markdown viewer & PDF reader`);
|
|
46
|
+
console.log(
|
|
47
|
+
`${pad} ${W}›${R} Full shell access — runs directly in your browser`,
|
|
48
|
+
);
|
|
49
|
+
console.log(
|
|
50
|
+
`${pad} ${W}›${R} No install required · ${W}npx terminalos --start${R}`,
|
|
51
|
+
);
|
|
52
|
+
console.log("");
|
|
53
|
+
console.log(`${pad}${B}Usage${R}`);
|
|
54
|
+
console.log(
|
|
55
|
+
`${pad} ${D}$${R} npx terminalos ${W}--start${R} ${D}start on port 7513${R}`,
|
|
56
|
+
);
|
|
57
|
+
console.log(
|
|
58
|
+
`${pad} ${D}$${R} npx terminalos ${W}--start --port N${R} ${D}use a custom port${R}`,
|
|
59
|
+
);
|
|
60
|
+
console.log("");
|
|
15
61
|
process.exit(0);
|
|
16
62
|
}
|
|
17
63
|
|
package/build/after.png
ADDED
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
._overlay_80qn7_1{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;z-index:200;animation:_overlayIn_80qn7_1 var(--dur-fast) var(--ease-out)}@keyframes _overlayIn_80qn7_1{0%{opacity:0}to{opacity:1}}._dialog_80qn7_19{width:520px;max-height:500px;background:var(--bg-elevated);border:1px solid rgba(255,255,255,.07);border-radius:var(--radius-lg);display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow-palette);animation:_dialogIn_80qn7_1 var(--dur-slow) var(--ease)}@keyframes _dialogIn_80qn7_1{0%{opacity:0;transform:scale(.97) translateY(-6px)}to{opacity:1;transform:scale(1) translateY(0)}}._header_80qn7_37{height:40px;display:flex;align-items:center;gap:6px;padding:0 12px;border-bottom:1px solid var(--border);flex-shrink:0}._upBtn_80qn7_47{width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--text-secondary);cursor:pointer;border-radius:var(--radius-sm);flex-shrink:0;transition:background var(--dur-fast),color var(--dur-fast)}._upBtn_80qn7_47:hover:not(:disabled){background:var(--bg-hover);color:var(--text-primary)}._upBtn_80qn7_47:disabled{opacity:.3;cursor:default}._pathDisplay_80qn7_72{flex:1;font-size:11px;color:var(--text-secondary);font-family:var(--font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;direction:rtl;text-align:left}._list_80qn7_84{flex:1;overflow-y:auto;padding:4px 0}._entry_80qn7_90{height:32px;display:flex;align-items:center;gap:8px;padding:0 14px;cursor:pointer;font-size:12px;color:var(--text-secondary);font-family:var(--font-ui);transition:background var(--dur-fast),color var(--dur-fast);-webkit-user-select:none;user-select:none}._entry_80qn7_90:hover,._entry_80qn7_90._selected_80qn7_109{background:var(--bg-hover);color:var(--text-primary)}._entryIcon_80qn7_114{color:var(--text-tertiary);font-size:11px;width:14px;flex-shrink:0}._entry_80qn7_90:hover ._entryIcon_80qn7_114,._entry_80qn7_90._selected_80qn7_109 ._entryIcon_80qn7_114{color:var(--accent)}._entryName_80qn7_126{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._empty_80qn7_132,._loading_80qn7_140{padding:24px 16px;text-align:center;color:var(--text-tertiary);font-size:11px;font-family:var(--font-ui)}._footer_80qn7_148{height:44px;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:0 14px;flex-shrink:0}._cancelBtn_80qn7_159{height:28px;padding:0 14px;font-size:12px;font-family:var(--font-ui);background:none;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;transition:background var(--dur-fast),color var(--dur-fast)}._cancelBtn_80qn7_159:hover{background:var(--bg-hover);color:var(--text-primary)}._selectBtn_80qn7_177{height:28px;padding:0 14px;font-size:12px;font-family:var(--font-ui);background:var(--accent-dim);border:1px solid var(--accent-border);border-radius:var(--radius-sm);color:var(--text-primary);cursor:pointer;transition:background var(--dur-fast)}._selectBtn_80qn7_177:hover{background:#ffffff1f}._titlebar_tqz7x_1{height:var(--titlebar-h);background:var(--bg2);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 12px 0 22px;-webkit-app-region:drag;flex-shrink:0;position:relative;z-index:10}._trafficLights_tqz7x_14{width:72px;flex-shrink:0;-webkit-app-region:no-drag}._center_tqz7x_21{position:absolute;left:50%;transform:translate(-50%);pointer-events:none}._title_tqz7x_1{font-size:13px;font-family:var(--font-mono);color:var(--muted2);white-space:nowrap;letter-spacing:0}._right_tqz7x_37{margin-left:auto;display:flex;align-items:center;gap:6px;-webkit-app-region:no-drag}._sessionCount_tqz7x_45{font-size:11px;font-family:var(--font-ui);color:var(--muted)}._connectedDot_tqz7x_51{width:6px;height:6px;border-radius:50%;background:var(--green);box-shadow:0 0 6px var(--green);flex-shrink:0}._connectedLabel_tqz7x_60{font-size:11px;font-family:var(--font-ui);color:var(--muted)}._offlineDot_tqz7x_66{width:6px;height:6px;border-radius:50%;background:#ef4444;box-shadow:0 0 6px #ef4444;flex-shrink:0}._offlineLabel_tqz7x_75{font-size:11px;font-family:var(--font-ui);color:#ef4444}._windowControls_tqz7x_82{display:flex;align-items:center;gap:1px;-webkit-app-region:no-drag;margin-left:8px}._winBtn_tqz7x_90{width:36px;height:36px;display:flex;align-items:center;justify-content:center;color:var(--muted2);transition:color var(--dur-fast),background var(--dur-fast);border-radius:0;border:none;background:none;cursor:pointer}._winBtn_tqz7x_90:hover{background:var(--bg3);color:var(--text)}._closeBtn_tqz7x_109:hover{background:#c42b1c;color:#fff}._tabBar_1wcxv_2{height:var(--tabbar-h);background:var(--bg2);border-bottom:1px solid var(--border);display:flex;align-items:stretch;flex-shrink:0;overflow:hidden;-webkit-app-region:drag}._tabs_1wcxv_13{display:flex;align-items:stretch;flex:1;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;gap:4px;padding:0 4px;-webkit-app-region:no-drag}._tabs_1wcxv_13::-webkit-scrollbar{display:none}._tab_1wcxv_2{display:flex;align-items:center;gap:6px;padding:0 10px;min-width:120px;max-width:200px;cursor:pointer;position:relative;color:var(--muted2);font-size:11px;font-family:var(--font-ui);background:transparent;border:1px solid transparent;border-bottom:none;border-radius:var(--radius-sm) var(--radius-sm) 0 0;-webkit-user-select:none;user-select:none;transition:color var(--dur-fast),background var(--dur-fast);flex-shrink:0;-webkit-app-region:no-drag}._tab_1wcxv_2:hover{background:var(--bg3)}._tab_1wcxv_2._active_1wcxv_56{background:var(--bg3);border-color:var(--border2);color:var(--text)}._tab_1wcxv_2._active_1wcxv_56:after{content:"";position:absolute;bottom:-1px;left:0;right:0;height:1px;background:var(--bg3)}._statusDot_1wcxv_74{width:6px;height:6px;border-radius:50%;flex-shrink:0}._dotrunning_1wcxv_81{background:var(--green);box-shadow:0 0 5px var(--green)}._dotwaiting_1wcxv_86{background:var(--amber);box-shadow:0 0 5px var(--amber)}._doterror_1wcxv_91{background:var(--red);box-shadow:0 0 5px var(--red)}._dotidle_1wcxv_96{background:var(--muted)}._paneCountBadge_1wcxv_101{font-size:9px;font-weight:700;font-family:var(--font-ui);padding:1px 5px;border-radius:3px;background:var(--bg);color:var(--muted);flex-shrink:0;line-height:14px;border:1px solid var(--border)}._tab_1wcxv_2._active_1wcxv_56 ._paneCountBadge_1wcxv_101{background:var(--bg2);color:var(--muted2);border-color:var(--border2)}._agentBadge_1wcxv_121{font-size:9px;font-family:var(--font-ui);font-weight:700;letter-spacing:.05em;padding:1px 5px;border-radius:3px;flex-shrink:0;line-height:14px}._badgeSmall_1wcxv_132{font-size:8px;padding:1px 4px;line-height:12px}._badgeCLAUDE_1wcxv_138{background:#2a1e0a;color:var(--amber)}._badgeOC_1wcxv_143{background:#1e1a2e;color:var(--purple)}._badgeSHELL_1wcxv_148{background:#1a1a2e;color:var(--blue)}._tabName_1wcxv_154{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}._tab_1wcxv_2._active_1wcxv_56 ._tabName_1wcxv_154{cursor:text}._closeTabBtn_1wcxv_167{background:none;border:none;color:var(--muted);cursor:pointer;padding:2px 3px;line-height:1;border-radius:3px;flex-shrink:0;opacity:0;transition:color var(--dur-fast),opacity var(--dur-fast);margin-left:2px;display:inline-flex;align-items:center;justify-content:center}._tab_1wcxv_2:hover ._closeTabBtn_1wcxv_167,._tab_1wcxv_2._active_1wcxv_56 ._closeTabBtn_1wcxv_167{opacity:1}._closeTabBtn_1wcxv_167:hover{color:var(--red)}._tabNameInput_1wcxv_194{flex:1;background:none;border:none;border-bottom:1px solid var(--amber);color:var(--text);font-size:11px;font-family:var(--font-ui);padding:0;outline:none;min-width:0}._newTabBtn_1wcxv_208{width:36px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:var(--muted);cursor:pointer;border:none;background:none;padding:0;transition:color var(--dur-fast);-webkit-app-region:no-drag}._newTabBtn_1wcxv_208:hover:not(:disabled){color:var(--text)}._newTabBtn_1wcxv_208:disabled{opacity:.3;cursor:default}._overlay_pbdh5_1{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:2000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}._dialog_pbdh5_12{background:var(--bg2);border:1px solid var(--border2);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:360px;max-width:calc(100vw - 48px);padding:24px;display:flex;flex-direction:column;gap:10px;animation:_dialogIn_pbdh5_1 .1s ease-out}@keyframes _dialogIn_pbdh5_1{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}._title_pbdh5_31{font-size:14px;font-weight:600;color:var(--text);font-family:var(--font-ui)}._body_pbdh5_38{font-size:12px;color:var(--muted2);font-family:var(--font-ui);line-height:1.6}._actions_pbdh5_45{display:flex;gap:8px;justify-content:flex-end;margin-top:6px}._cancelBtn_pbdh5_52{background:var(--bg3);border:1px solid var(--border2);color:var(--text);font-size:12px;font-family:var(--font-ui);padding:6px 14px;border-radius:var(--radius-sm);cursor:pointer;transition:background var(--dur-fast)}._cancelBtn_pbdh5_52:hover{background:var(--bg-hover)}._confirmBtn_pbdh5_68{background:var(--accent);border:none;color:#fff;font-size:12px;font-family:var(--font-ui);font-weight:600;padding:6px 14px;border-radius:var(--radius-sm);cursor:pointer;transition:filter var(--dur-fast)}._confirmBtn_pbdh5_68:hover{filter:brightness(1.15)}._danger_pbdh5_85{background:var(--red)}._tooltip_1mqcl_1{position:fixed;z-index:9999;background:var(--bg3);border:1px solid var(--border2);border-radius:var(--radius-sm);padding:4px 8px;font-size:11px;font-family:var(--font-ui);color:var(--text);pointer-events:none;white-space:nowrap;box-shadow:var(--shadow-md);display:flex;flex-direction:column;align-items:center;gap:2px;animation:_tooltipIn_1mqcl_1 80ms ease-out}@keyframes _tooltipIn_1mqcl_1{0%{opacity:0}to{opacity:1}}._kbd_1mqcl_26{display:block;font-size:10px;color:var(--muted);font-family:var(--font-mono);letter-spacing:.04em}._paneGrid_mkqeb_1{flex:1;display:flex;min-height:0;overflow:hidden}._splitContainer_mkqeb_9{display:flex;width:100%;height:100%;min-width:0;min-height:0}._splitContainer_mkqeb_9._horizontal_mkqeb_17{flex-direction:row}._splitContainer_mkqeb_9._vertical_mkqeb_21{flex-direction:column}._splitChild_mkqeb_25{min-width:0;min-height:0;overflow:hidden;display:flex;flex-direction:column}._divider_mkqeb_34{flex-shrink:0;position:relative;z-index:10}._dividerH_mkqeb_41{width:5px;cursor:col-resize}._dividerH_mkqeb_41:after{content:"";position:absolute;top:0;bottom:0;left:2px;width:1px;background:var(--border);transition:background .12s}._dividerH_mkqeb_41:hover:after{background:#e8a44a80}._dividerH_mkqeb_41:active:after{background:var(--amber)}._dividerV_mkqeb_66{height:5px;cursor:row-resize}._dividerV_mkqeb_66:after{content:"";position:absolute;left:0;right:0;top:2px;height:1px;background:var(--border);transition:background .12s}._dividerV_mkqeb_66:hover:after{background:#e8a44a80}._dividerV_mkqeb_66:active:after{background:var(--amber)}._termPane_gnhay_2{display:flex;flex-direction:column;width:100%;height:100%;min-width:0;min-height:0;overflow:hidden;background:var(--bg);position:relative;cursor:default}._termPane_gnhay_2._focused_gnhay_15{outline:1px solid rgba(232,164,74,.3);outline-offset:-1px}._termPane_gnhay_2._minimized_gnhay_21 ._terminal_gnhay_21,._termPane_gnhay_2._minimized_gnhay_21 ._inlineAlert_gnhay_22{display:none}._termPane_gnhay_2._minimized_gnhay_21 ._paneHeader_gnhay_26{border-bottom:none}._paneActionsMinimized_gnhay_31{opacity:1!important}._termPane_gnhay_2:not(._focused_gnhay_15) ._paneHeader_gnhay_26{background:var(--bg)}._termPane_gnhay_2:not(._focused_gnhay_15) ._terminal_gnhay_21:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#0000002e;pointer-events:none}._paneHeader_gnhay_26{height:var(--pane-header-h);background:var(--bg2);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 6px 0 10px;flex-shrink:0;position:relative}._paneHeaderLeft_gnhay_61{display:flex;align-items:center;gap:7px;min-width:0;overflow:hidden;flex:1}._paneCost_gnhay_70{font-size:10px;font-family:var(--font-ui);color:var(--teal);opacity:.85;flex-shrink:0}._envBadge_gnhay_78{display:inline-flex;align-items:center;gap:3px;background:#e8a44a14;border:1px solid rgba(232,164,74,.2);border-radius:var(--radius-sm);padding:1px 6px 1px 4px;flex-shrink:0}._envIcon_gnhay_89{font-size:11px;color:var(--amber);font-family:var(--font-mono);line-height:1;font-weight:600}._envName_gnhay_97{font-size:11px;font-family:var(--font-mono);color:var(--amber);line-height:1}._workspaceBadge_gnhay_104{display:inline-flex;align-items:center;background:#5ec5b114;border:1px solid rgba(94,197,177,.22);border-radius:var(--radius-sm);padding:1px 7px;flex-shrink:0}._workspaceName_gnhay_114{font-size:11px;font-family:var(--font-mono);font-weight:600;color:var(--teal);line-height:1;letter-spacing:.01em}._copiedFlash_gnhay_123{font-size:11px;font-family:var(--font-ui);color:var(--teal);opacity:.85;flex-shrink:0}._sessionPath_gnhay_131{font-size:11px;font-family:var(--font-ui);color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._pathBtn_gnhay_140{background:none;border:none;padding:0;cursor:pointer;display:inline-flex;align-items:center;gap:4px;font-size:11px;font-family:var(--font-ui);color:var(--muted);overflow:hidden;min-width:0;transition:color var(--dur-fast)}._pathBtn_gnhay_140 span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._pathBtn_gnhay_140:hover{color:var(--fg)}._paneActions_gnhay_31{display:flex;align-items:center;gap:1px;flex-shrink:0;opacity:0;transition:opacity var(--dur-fast)}._paneHeader_gnhay_26:hover ._paneActions_gnhay_31,._paneHeader_gnhay_26._focused_gnhay_15 ._paneActions_gnhay_31{opacity:1}._paneActionBtn_gnhay_181{background:none;border:none;color:var(--muted);cursor:pointer;padding:1px 6px;line-height:1;border-radius:3px;transition:color var(--dur-fast),background var(--dur-fast);font-family:var(--font-mono);display:inline-flex;align-items:center;justify-content:center;height:22px}._paneActionBtn_gnhay_181:hover{color:var(--text);background:var(--bg3)}._closePaneBtn_gnhay_202:hover{color:var(--red)}._mdBtn_gnhay_206:hover{color:var(--amber)}._inlineAlert_gnhay_22{background:#f871710f;border:1px solid rgba(248,113,113,.2);border-radius:4px;margin:6px 6px 0;padding:5px 10px;font-size:12px;font-family:var(--font-ui);color:var(--red);flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:8px}._alertDismiss_gnhay_227{background:none;border:none;color:var(--red);opacity:.5;cursor:pointer;font-size:14px;line-height:1;padding:0;flex-shrink:0}._alertDismiss_gnhay_227:hover{opacity:1}._placeholder_gnhay_244{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;-webkit-user-select:none;user-select:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;pointer-events:none}._placeholderIcon_gnhay_257{color:var(--muted);opacity:.35}._placeholderTitle_gnhay_262{font-size:14px;font-family:var(--font-ui);font-weight:500;color:var(--muted2);opacity:.7}._placeholderHint_gnhay_270{font-size:12px;font-family:var(--font-ui);color:var(--muted);opacity:.5}._placeholderBtn_gnhay_277{pointer-events:all;background:none;border:1px solid var(--border2);color:var(--muted2);font-size:12px;font-family:var(--font-ui);padding:6px 14px;border-radius:var(--radius-sm);cursor:pointer;margin-top:4px;opacity:.7;transition:opacity var(--dur-fast),border-color var(--dur-fast);letter-spacing:.02em}._placeholderBtn_gnhay_277:hover{opacity:1;border-color:var(--accent)}@keyframes _tokenPulse_gnhay_1{0%{color:var(--muted)}50%{color:var(--amber)}to{color:var(--muted)}}._aiPulse_gnhay_305{animation:_tokenPulse_gnhay_1 1s ease-out}._exitedBadge_gnhay_310{font-size:10px;font-family:var(--font-ui);color:var(--muted);border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 5px;margin-left:4px;flex-shrink:0}._terminal_gnhay_21{flex:1;overflow:hidden;background:var(--bg);padding:4px 0 0;position:relative;min-height:0}._statusDot_gnhay_332{width:5px;height:5px;border-radius:50%;flex-shrink:0}._menu_1aoic_2{position:fixed;z-index:9999;background:var(--bg2);border:1px solid var(--border2);border-radius:var(--radius-md);box-shadow:var(--shadow-lg),0 0 0 1px #ffffff0a;padding:4px;min-width:236px;animation:_menuIn_1aoic_1 var(--dur-fast) var(--ease);-webkit-user-select:none;user-select:none}@keyframes _menuIn_1aoic_1{0%{opacity:0;transform:scale(.96) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}._divider_1aoic_27{height:1px;background:var(--border);margin:4px 0}._item_1aoic_34{display:flex;align-items:center;gap:8px;width:100%;background:none;border:none;padding:6px 8px;border-radius:var(--radius-sm);cursor:pointer;text-align:left;color:var(--text);font-size:12.5px;font-family:var(--font-ui);line-height:1;transition:background var(--dur-fast)}._item_1aoic_34:hover:not(._itemDisabled_1aoic_52){background:var(--bg3)}._item_1aoic_34:active:not(._itemDisabled_1aoic_52){background:var(--border)}._item_1aoic_34._danger_1aoic_61,._item_1aoic_34._danger_1aoic_61 ._icon_1aoic_65{color:var(--red)}._item_1aoic_34._danger_1aoic_61:hover:not(._itemDisabled_1aoic_52){background:#f8717114}._itemDisabled_1aoic_52{opacity:.32;cursor:default;pointer-events:none}._icon_1aoic_65{font-size:12px;width:16px;text-align:center;flex-shrink:0;color:var(--muted2);line-height:1}._label_1aoic_91{flex:1;white-space:nowrap}._shortcut_1aoic_97{font-size:10.5px;font-family:var(--font-mono);color:var(--muted);background:var(--bg3);border:1px solid var(--border);border-bottom-width:2px;border-radius:3px;padding:1px 5px;flex-shrink:0;font-style:normal;font-weight:500;letter-spacing:.01em}._pane_1w4ra_2{display:flex;flex-direction:column;width:100%;height:100%;min-width:0;min-height:0;overflow:hidden;background:var(--bg);position:relative;cursor:default}._sessionPath_1w4ra_15{font-size:11px;font-family:var(--font-ui);color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._pane_1w4ra_2._focused_1w4ra_24{outline:1px solid rgba(232,164,74,.3);outline-offset:-1px}._pane_1w4ra_2:not(._focused_1w4ra_24):after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#00000024;pointer-events:none;z-index:1}._header_1w4ra_39{height:var(--pane-header-h);background:var(--bg2);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 6px 0 10px;flex-shrink:0;position:relative;z-index:2}._headerLeft_1w4ra_52{display:flex;align-items:center;gap:7px;min-width:0;flex:1;overflow:hidden}._headerIcon_1w4ra_61{color:var(--amber);font-size:10px;flex-shrink:0}._headerLabel_1w4ra_67{font-size:13px;font-family:var(--font-mono);color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._headerActions_1w4ra_76{display:flex;align-items:center;gap:1px;flex-shrink:0;opacity:0;transition:opacity var(--dur-fast)}._headerActionsMinimized_1w4ra_86{opacity:1!important}._pane_1w4ra_2._minimized_1w4ra_91 ._browser_1w4ra_91,._pane_1w4ra_2._minimized_1w4ra_91 ._editorLayout_1w4ra_92{display:none}._pane_1w4ra_2._minimized_1w4ra_91 ._header_1w4ra_39{border-bottom:none}._minimizeBtn_1w4ra_100{font-size:11px}._header_1w4ra_39:hover ._headerActions_1w4ra_76,._headerFocused_1w4ra_105 ._headerActions_1w4ra_76{opacity:1}._headerBtn_1w4ra_109{background:none;border:none;color:var(--muted);cursor:pointer;padding:1px 6px;line-height:1;border-radius:3px;transition:color var(--dur-fast),background var(--dur-fast);font-family:var(--font-mono);display:inline-flex;align-items:center;justify-content:center;height:22px}._headerBtn_1w4ra_109:hover{color:var(--text);background:var(--bg3)}._closeBtn_1w4ra_132:hover{color:var(--red)}._browser_1w4ra_91{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative;z-index:2}._browserPath_1w4ra_146{display:flex;align-items:center;gap:6px;padding:7px 10px;border-bottom:1px solid var(--border);background:var(--bg2);flex-shrink:0}._upBtn_1w4ra_156{background:none;border:none;color:var(--muted);cursor:pointer;padding:2px 5px;border-radius:3px;font-family:var(--font-mono);transition:color var(--dur-fast),background var(--dur-fast);flex-shrink:0;display:inline-flex;align-items:center;justify-content:center}._upBtn_1w4ra_156:hover{color:var(--text);background:var(--bg3)}._pathText_1w4ra_178{font-size:11px;font-family:var(--font-ui);color:var(--muted);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._createBtns_1w4ra_188{display:flex;gap:4px;flex-shrink:0}._createBtn_1w4ra_188{background:none;border:none;color:var(--muted);cursor:pointer;font-size:11px;font-family:var(--font-ui);padding:2px 6px;border-radius:3px;transition:color var(--dur-fast),background var(--dur-fast);white-space:nowrap;display:inline-flex;align-items:center;gap:3px}._createBtn_1w4ra_188:hover{color:var(--amber);background:var(--accent-dim)}._entries_1w4ra_217{flex:1;overflow-y:auto;padding:4px 0}._entries_1w4ra_217::-webkit-scrollbar{width:4px}._entries_1w4ra_217::-webkit-scrollbar-thumb{background:var(--border2);border-radius:2px}._loadingMsg_1w4ra_232{font-size:12px;font-family:var(--font-ui);color:var(--muted);padding:16px 14px}._emptyDir_1w4ra_239{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:32px 16px;text-align:center}._emptyDirIcon_1w4ra_249{color:var(--muted);opacity:.3}._emptyDirTitle_1w4ra_254{font-size:12px;font-family:var(--font-ui);font-weight:500;color:var(--muted2);opacity:.7}._emptyDirHint_1w4ra_262{font-size:11px;font-family:var(--font-ui);color:var(--muted);opacity:.5}._entry_1w4ra_269{display:flex;align-items:center;gap:7px;padding:5px 14px;cursor:pointer;transition:background var(--dur-fast);-webkit-user-select:none;user-select:none}._entry_1w4ra_269:hover{background:var(--bg2)}._dragOver_1w4ra_283{background:#e8a44a1f;outline:1px dashed rgba(232,164,74,.45);outline-offset:-1px}._dirEntry_1w4ra_289{color:var(--text-secondary)}._mdEntry_1w4ra_293{color:var(--text)}._entryIcon_1w4ra_297{font-size:9px;color:var(--muted);flex-shrink:0;width:10px;text-align:center}._dirEntry_1w4ra_289 ._entryIcon_1w4ra_297{color:var(--amber);font-size:8px}._mdEntry_1w4ra_293 ._entryIcon_1w4ra_297{color:var(--amber)}._entryName_1w4ra_314{font-size:13px;font-family:var(--font-mono);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._tokenCount_1w4ra_323{font-size:11px;font-family:var(--font-ui);color:var(--muted);flex-shrink:0;white-space:nowrap}._newEntryRow_1w4ra_332{display:flex;align-items:center;gap:7px;padding:4px 14px;background:var(--accent-dim);border-top:1px solid var(--accent-border);border-bottom:1px solid var(--accent-border)}._newEntryIcon_1w4ra_342{font-size:9px;color:var(--amber);width:10px;flex-shrink:0}._newEntryInput_1w4ra_349{flex:1;background:none;border:none;color:var(--text);font-size:13px;font-family:var(--font-mono);outline:none;padding:1px 0}._newEntryInput_1w4ra_349::placeholder{color:var(--muted)}._editorLayout_1w4ra_92{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative;z-index:2}._editorHeader_1w4ra_374{display:flex;align-items:center;gap:8px;padding:0 10px;height:34px;background:var(--bg2);border-bottom:1px solid var(--border);flex-shrink:0}._backBtn_1w4ra_385{background:none;border:none;color:var(--muted);cursor:pointer;font-size:14px;line-height:1;padding:2px 5px;border-radius:3px;font-family:var(--font-mono);transition:color var(--dur-fast),background var(--dur-fast);flex-shrink:0}._backBtn_1w4ra_385:hover{color:var(--text);background:var(--bg3)}._filename_1w4ra_406{font-size:13px;font-family:var(--font-mono);color:var(--text);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._dirtyDot_1w4ra_416{font-size:11px;color:var(--amber);flex-shrink:0}._savedLabel_1w4ra_422{font-size:10px;font-family:var(--font-ui);color:var(--muted);flex-shrink:0}._saveBtn_1w4ra_429{background:none;border:1px solid var(--border2);color:var(--muted2);cursor:pointer;font-size:11px;font-family:var(--font-ui);padding:2px 8px;border-radius:3px;transition:color var(--dur-fast),border-color var(--dur-fast);flex-shrink:0}._saveBtn_1w4ra_429:hover{color:var(--amber);border-color:var(--accent-border)}._editorBody_1w4ra_449{flex:1;display:flex;overflow:hidden;position:relative}._syntaxError_1w4ra_457{font-size:10px;font-family:var(--font-ui);color:#f55;flex-shrink:0;cursor:help;opacity:.85}._syntaxError_1w4ra_457:hover{opacity:1}._searchBar_1w4ra_471{position:absolute;top:8px;right:12px;z-index:20;display:flex;align-items:center;gap:4px;background:var(--bg2);border:1px solid var(--border2);border-radius:4px;padding:3px 6px;box-shadow:0 2px 8px #00000059}._searchInput_1w4ra_486{background:transparent;border:none;outline:none;color:var(--fg);font-family:var(--font-ui);font-size:12px;width:160px;caret-color:var(--amber)}._searchInput_1w4ra_486::placeholder{color:var(--muted)}._searchCount_1w4ra_501{font-size:10px;font-family:var(--font-ui);color:var(--muted);min-width:40px;text-align:center;flex-shrink:0}._searchNoMatch_1w4ra_510{color:#f55}._searchNav_1w4ra_514{background:none;border:none;color:var(--muted2);font-size:12px;cursor:pointer;padding:0 3px;line-height:1;border-radius:2px}._searchNav_1w4ra_514:hover:not(:disabled){color:var(--amber);background:var(--accent-dim)}._searchNav_1w4ra_514:disabled{opacity:.3;cursor:default}._searchClose_1w4ra_535{background:none;border:none;color:var(--muted2);font-size:14px;cursor:pointer;padding:0 2px;line-height:1;border-radius:2px;margin-left:2px}._searchClose_1w4ra_535:hover{color:var(--fg)}._pdfViewer_1w4ra_551{flex:1;width:100%;height:100%;border:none;background:#fff}._editorSide_1w4ra_559{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}._textarea_1w4ra_567{flex:1;resize:none;background:var(--bg);color:var(--text);border:none;outline:none;font-size:13px;font-family:var(--font-mono);line-height:1.65;padding:16px 14px;overflow-y:auto;caret-color:var(--amber);-moz-tab-size:2;tab-size:2}._textarea_1w4ra_567::-webkit-scrollbar{width:4px}._textarea_1w4ra_567::-webkit-scrollbar-thumb{background:var(--border2);border-radius:2px}._textarea_1w4ra_567::selection{background:#e8a44a2e}._editorDivider_1w4ra_596{width:1px;background:var(--border);flex-shrink:0}._preview_1w4ra_603{flex:1;overflow-y:auto;padding:16px 20px;background:var(--bg);min-width:0;font-family:var(--font-ui);font-size:13px;line-height:1.7;color:var(--text)}._preview_1w4ra_603::-webkit-scrollbar{width:4px}._preview_1w4ra_603::-webkit-scrollbar-thumb{background:var(--border2);border-radius:2px}._preview_1w4ra_603 h1,._preview_1w4ra_603 h2,._preview_1w4ra_603 h3,._preview_1w4ra_603 h4,._preview_1w4ra_603 h5,._preview_1w4ra_603 h6{font-family:var(--font-mono);color:var(--text);margin:1.4em 0 .5em;line-height:1.3;font-weight:600}._preview_1w4ra_603 h1{font-size:1.55em;color:var(--amber);padding-bottom:.3em;border-bottom:1px solid var(--border);margin-top:0}._preview_1w4ra_603 h2{font-size:1.22em;color:var(--text);padding-bottom:.2em;border-bottom:1px solid var(--border)}._preview_1w4ra_603 h3{font-size:1.06em;color:var(--muted2)}._preview_1w4ra_603 h4,._preview_1w4ra_603 h5,._preview_1w4ra_603 h6{font-size:.95em;color:var(--muted)}._preview_1w4ra_603 p{margin:0 0 .9em}._preview_1w4ra_603 a{color:var(--blue);text-decoration:none}._preview_1w4ra_603 a:hover{text-decoration:underline}._preview_1w4ra_603 strong{color:var(--text);font-weight:600}._preview_1w4ra_603 em{color:var(--muted2);font-style:italic}._preview_1w4ra_603 code{font-family:var(--font-mono);font-size:.88em;background:var(--bg3);color:var(--amber);border:1px solid var(--border);border-radius:3px;padding:.1em .35em}._preview_1w4ra_603 pre{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius-md);padding:12px 14px;overflow-x:auto;margin:0 0 1em}._preview_1w4ra_603 pre code{background:none;border:none;padding:0;color:var(--text);font-size:.9em}._preview_1w4ra_603 pre::-webkit-scrollbar{height:4px}._preview_1w4ra_603 pre::-webkit-scrollbar-thumb{background:var(--border2);border-radius:2px}._preview_1w4ra_603 blockquote{margin:0 0 1em;padding:2px 0 2px 14px;border-left:2px solid var(--amber);color:var(--muted2)}._preview_1w4ra_603 ul,._preview_1w4ra_603 ol{margin:0 0 .9em;padding-left:1.4em}._preview_1w4ra_603 li{margin:.2em 0}._preview_1w4ra_603 ul li::marker{color:var(--amber)}._preview_1w4ra_603 ol li::marker{color:var(--muted)}._preview_1w4ra_603 hr{border:none;border-top:1px solid var(--border);margin:1.5em 0}._preview_1w4ra_603 table{border-collapse:collapse;width:100%;margin:0 0 1em;font-size:.9em}._preview_1w4ra_603 th,._preview_1w4ra_603 td{border:1px solid var(--border);padding:6px 10px;text-align:left}._preview_1w4ra_603 th{background:var(--bg2);color:var(--muted2);font-family:var(--font-mono);font-size:.88em;font-weight:600;letter-spacing:.03em}._preview_1w4ra_603 tr:nth-child(2n) td{background:#ffffff05}._preview_1w4ra_603 img{max-width:100%;border-radius:var(--radius-md);border:1px solid var(--border)}._preview_1w4ra_603 input[type=checkbox]{accent-color:var(--amber);margin-right:5px}._codeWrap_1w4ra_794{position:relative;flex:1;overflow:hidden;background:var(--bg)}._codePre_1w4ra_802{position:absolute;top:0;right:0;bottom:0;left:0;margin:0;padding:16px 14px;font-size:13px;font-family:var(--font-mono);line-height:1.65;overflow:hidden;pointer-events:none;white-space:pre-wrap;word-wrap:break-word;-moz-tab-size:2;tab-size:2;background:transparent;color:var(--text);border:none;outline:none}._codePre_1w4ra_802 code{font-family:inherit;font-size:inherit;background:none;padding:0;border:none;color:inherit;display:block}._codeTextarea_1w4ra_832{position:absolute;top:0;right:0;bottom:0;left:0;resize:none;background:transparent;color:transparent;-webkit-text-fill-color:transparent;caret-color:var(--amber);border:none;outline:none;font-size:13px;font-family:var(--font-mono);line-height:1.65;padding:16px 14px;overflow-y:auto;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word;-moz-tab-size:2;tab-size:2;z-index:1}._codeTextarea_1w4ra_832::selection{background:#e8a44a38;-webkit-text-fill-color:transparent}._codeTextarea_1w4ra_832::-webkit-scrollbar{width:4px;height:4px}._codeTextarea_1w4ra_832::-webkit-scrollbar-thumb{background:var(--border2);border-radius:2px}._codePre_1w4ra_802 .hljs-keyword,._codePre_1w4ra_802 .hljs-selector-tag,._codePre_1w4ra_802 .hljs-built_in,._codePre_1w4ra_802 .hljs-name{color:#c792ea}._codePre_1w4ra_802 .hljs-string,._codePre_1w4ra_802 .hljs-template-string,._codePre_1w4ra_802 .hljs-selector-attr,._codePre_1w4ra_802 .hljs-addition{color:#c3e88d}._codePre_1w4ra_802 .hljs-number,._codePre_1w4ra_802 .hljs-literal,._codePre_1w4ra_802 .hljs-selector-class{color:#f78c6c}._codePre_1w4ra_802 .hljs-comment,._codePre_1w4ra_802 .hljs-quote,._codePre_1w4ra_802 .hljs-deletion{color:var(--muted);font-style:italic}._codePre_1w4ra_802 .hljs-title,._codePre_1w4ra_802 .hljs-title\.class_,._codePre_1w4ra_802 .hljs-title\.function_,._codePre_1w4ra_802 .hljs-section{color:#82aaff}._codePre_1w4ra_802 .hljs-type,._codePre_1w4ra_802 .hljs-class .hljs-title,._codePre_1w4ra_802 .hljs-attr,._codePre_1w4ra_802 .hljs-attribute,._codePre_1w4ra_802 .hljs-symbol{color:#ffcb6b}._codePre_1w4ra_802 .hljs-params,._codePre_1w4ra_802 .hljs-variable{color:#f07178}._codePre_1w4ra_802 .hljs-operator,._codePre_1w4ra_802 .hljs-punctuation{color:#89ddff}._codePre_1w4ra_802 .hljs-regexp{color:#f2ff00}._codePre_1w4ra_802 .hljs-meta,._codePre_1w4ra_802 .hljs-meta .hljs-string{color:var(--muted2)}._codePre_1w4ra_802 .hljs-tag{color:#f07178}._codePre_1w4ra_802 .hljs-subst{color:var(--text)}._versionBadge_1w4ra_942{font-size:10px;font-family:var(--font-mono);color:var(--amber);background:var(--accent-dim);border:1px solid var(--accent-border);border-radius:3px;padding:1px 5px;flex-shrink:0;cursor:default}._saveBtnActive_1w4ra_954{color:var(--amber)!important;border-color:var(--accent-border)!important;background:var(--accent-dim)!important}._versionPanel_1w4ra_961{position:absolute;top:0;right:0;width:240px;height:100%;background:var(--bg2);border-left:1px solid var(--border);display:flex;flex-direction:column;z-index:10;overflow:hidden}._versionPanelHeader_1w4ra_975{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;border-bottom:1px solid var(--border);flex-shrink:0}._versionPanelTitle_1w4ra_984{font-size:11px;font-family:var(--font-ui);font-weight:600;color:var(--muted2);letter-spacing:.04em;text-transform:uppercase}._versionPanelClose_1w4ra_993{background:none;border:none;color:var(--muted);cursor:pointer;font-size:11px;padding:2px 4px;border-radius:3px;transition:color var(--dur-fast),background var(--dur-fast);line-height:1}._versionPanelClose_1w4ra_993:hover{color:var(--text);background:var(--bg3)}._versionList_1w4ra_1010{flex:0 0 auto;max-height:50%;overflow-y:auto;padding:4px 0}._versionList_1w4ra_1010::-webkit-scrollbar{width:3px}._versionList_1w4ra_1010::-webkit-scrollbar-thumb{background:var(--border2);border-radius:2px}._versionEmpty_1w4ra_1026{font-size:12px;font-family:var(--font-ui);color:var(--muted);padding:16px 12px}._versionItem_1w4ra_1033{display:flex;align-items:center;gap:8px;padding:6px 10px;cursor:pointer;transition:background var(--dur-fast);-webkit-user-select:none;user-select:none}._versionItem_1w4ra_1033:hover{background:var(--bg3)}._versionItemSelected_1w4ra_1047{background:var(--accent-dim)}._versionItemCurrent_1w4ra_1051 ._versionNum_1w4ra_1051{color:var(--amber)}._versionNum_1w4ra_1051{font-size:12px;font-family:var(--font-mono);color:var(--text);flex-shrink:0;min-width:28px}._versionTime_1w4ra_1063{font-size:11px;font-family:var(--font-ui);color:var(--muted);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._versionCurrentLabel_1w4ra_1073{font-size:10px;font-family:var(--font-ui);color:var(--amber);background:var(--accent-dim);border:1px solid var(--accent-border);border-radius:3px;padding:0 4px;flex-shrink:0}._versionPreviewArea_1w4ra_1085{flex:1;display:flex;flex-direction:column;overflow:hidden;border-top:1px solid var(--border)}._versionPreviewHeader_1w4ra_1093{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;border-bottom:1px solid var(--border);flex-shrink:0}._versionPreviewLabel_1w4ra_1102{font-size:10px;font-family:var(--font-ui);font-weight:600;color:var(--muted);letter-spacing:.04em;text-transform:uppercase}._versionRestoreBtn_1w4ra_1111{background:none;border:1px solid var(--accent-border);color:var(--amber);cursor:pointer;font-size:10px;font-family:var(--font-ui);padding:2px 8px;border-radius:3px;transition:background var(--dur-fast),opacity var(--dur-fast)}._versionRestoreBtn_1w4ra_1111:hover:not(:disabled){background:var(--accent-dim)}._versionRestoreBtn_1w4ra_1111:disabled{opacity:.4;cursor:default}._versionPreviewBody_1w4ra_1132{flex:1;overflow:auto;padding:8px 10px}._versionPreviewBody_1w4ra_1132::-webkit-scrollbar{width:3px}._versionPreviewBody_1w4ra_1132::-webkit-scrollbar-thumb{background:var(--border2);border-radius:2px}._versionPreviewContent_1w4ra_1147{font-size:11px;font-family:var(--font-mono);color:var(--muted2);white-space:pre-wrap;word-break:break-word;margin:0;line-height:1.55}._versionPreviewLoading_1w4ra_1157{font-size:11px;font-family:var(--font-ui);color:var(--muted)}._statusBar_cxz5o_1{height:var(--statusbar-h);background:var(--bg);border-top:1px solid var(--border);display:flex;align-items:center;padding:0 12px;flex-shrink:0;font-family:var(--font-ui);font-size:11px}._left_cxz5o_14{display:flex;align-items:center;gap:6px;flex:1;min-width:0;overflow:hidden}._right_cxz5o_23{display:flex;align-items:center;gap:2px;flex-shrink:0;margin-left:16px}._envTag_cxz5o_32{display:flex;align-items:center;gap:3px;flex-shrink:0}._envArrow_cxz5o_39{color:var(--muted)}._envName_cxz5o_43{color:var(--muted2);font-weight:500}._gitBranch_cxz5o_49{color:var(--teal);white-space:nowrap;flex-shrink:0;opacity:.8}._cwd_cxz5o_57{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:1;min-width:0}._sep_cxz5o_67{color:var(--border2);padding:0 2px;flex-shrink:0;-webkit-user-select:none;user-select:none}._label_cxz5o_75{color:var(--muted);white-space:nowrap;flex-shrink:0}._value_cxz5o_81{color:var(--muted2);white-space:nowrap;flex-shrink:0}._workspaceTokens_cxz5o_88{display:flex;align-items:center;gap:0;margin-right:12px}._copiedFlash_cxz5o_96{font-size:10px;color:var(--teal);opacity:1;animation:_fadeOut_cxz5o_1 2s ease-out forwards;flex-shrink:0}@keyframes _fadeOut_cxz5o_1{0%{opacity:1}60%{opacity:1}to{opacity:0}}._updateInline_cxz5o_111{display:flex;align-items:center;gap:6px;margin-right:4px}._updateNewVersion_cxz5o_118{color:var(--teal);font-weight:600;white-space:nowrap}._updateLabel_cxz5o_124{color:var(--muted2);white-space:nowrap}._updateDownloadBtn_cxz5o_129{background:none;border:none;padding:0;color:var(--teal);font-family:var(--font-ui);font-size:11px;font-weight:600;cursor:pointer;white-space:nowrap;text-decoration:underline;text-underline-offset:2px;transition:opacity .15s}._updateDownloadBtn_cxz5o_129:hover{opacity:.75}._updateDismiss_cxz5o_148{background:none;border:none;padding:0 2px;color:var(--muted);font-size:9px;cursor:pointer;line-height:1;transition:color .15s}._updateDismiss_cxz5o_148:hover{color:var(--text)}._updateSep_cxz5o_163{color:var(--border2);-webkit-user-select:none;user-select:none}._appVersion_cxz5o_169{color:var(--muted);opacity:.5;white-space:nowrap;margin-right:8px}._windowControls_cxz5o_177{display:flex;align-items:center;gap:1px}._winBtn_cxz5o_183{width:28px;height:22px;display:flex;align-items:center;justify-content:center;color:var(--muted2);transition:color var(--dur-fast),background var(--dur-fast);border-radius:3px;border:none;background:none;cursor:pointer}._winBtn_cxz5o_183:hover{background:var(--bg3);color:var(--text)}._closeBtn_cxz5o_202:hover{background:#c42b1c;color:#fff}._overlay_1797m_1{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;align-items:flex-start;justify-content:center;padding-top:80px;z-index:100;animation:_overlayIn_1797m_1 var(--dur-fast) var(--ease-out)}@keyframes _overlayIn_1797m_1{0%{opacity:0}to{opacity:1}}._palette_1797m_20{width:560px;max-height:400px;background:var(--bg-elevated);border:1px solid rgba(255,255,255,.07);border-radius:var(--radius-lg);display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow-palette);animation:_paletteIn_1797m_1 var(--dur-slow) var(--ease)}@keyframes _paletteIn_1797m_1{0%{opacity:0;transform:scale(.97) translateY(-6px)}to{opacity:1;transform:scale(1) translateY(0)}}._input_1797m_38{height:44px;padding:0 16px;font-size:13px;color:var(--text-primary);background:transparent;border:none;border-bottom:1px solid var(--border);font-family:var(--font-ui);outline:none;width:100%}._input_1797m_38::placeholder{color:var(--text-tertiary)}._results_1797m_55{overflow-y:auto;flex:1}._result_1797m_55{height:36px;display:flex;align-items:center;gap:10px;padding:0 14px;cursor:pointer;font-size:12px;color:var(--text-secondary);font-family:var(--font-ui);transition:background var(--dur-fast),color var(--dur-fast)}._result_1797m_55:hover,._result_1797m_55._selected_1797m_74{background:var(--bg-hover);color:var(--text-primary)}._result_1797m_55._selected_1797m_74 ._resultIcon_1797m_79{color:var(--accent)}._resultIcon_1797m_79{font-size:11px;color:var(--text-tertiary);width:16px;text-align:center;flex-shrink:0;transition:color var(--dur-fast)}._resultLabel_1797m_92{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._resultShortcut_1797m_99{font-size:10px;color:var(--text-tertiary);font-family:var(--font-ui);background:var(--bg-surface);border:1px solid var(--border);border-radius:3px;padding:1px 5px;letter-spacing:.01em;flex-shrink:0}._noResults_1797m_111{padding:20px;text-align:center;color:var(--text-tertiary);font-size:11px;font-family:var(--font-ui);letter-spacing:.04em}._footer_1797m_120{height:30px;border-top:1px solid var(--border-subtle);display:flex;align-items:center;padding:0 14px;gap:12px;flex-shrink:0}._footerHint_1797m_130{font-size:10px;color:var(--text-tertiary);font-family:var(--font-ui);display:flex;align-items:center;gap:4px}._footerKey_1797m_139{background:var(--bg-surface);border:1px solid var(--border);border-radius:3px;padding:0 4px;font-size:10px;color:var(--text-muted)}._overlay_1ngvy_1{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}._panel_1ngvy_12{background:var(--bg2);border:1px solid var(--border2);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:480px;max-width:calc(100vw - 48px);padding:0;overflow:hidden}._header_1ngvy_23{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border)}._title_1ngvy_31{font-size:14px;font-weight:600;color:var(--text);letter-spacing:.01em}._closeBtn_1ngvy_38{background:none;border:none;color:var(--muted);font-size:12px;cursor:pointer;padding:4px 6px;border-radius:var(--radius-sm);line-height:1;transition:color var(--dur-fast),background var(--dur-fast)}._closeBtn_1ngvy_38:hover{color:var(--text);background:var(--bg-hover)}._section_1ngvy_55{padding:20px}._sectionLabel_1ngvy_59{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:12px}._themeGrid_1ngvy_68{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}._themeCard_1ngvy_74{background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius-md);padding:12px 8px 10px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:8px;position:relative;transition:border-color var(--dur-fast),background var(--dur-fast)}._themeCard_1ngvy_74:hover{border-color:var(--border2);background:var(--bg-hover)}._themeCard_1ngvy_74._selected_1ngvy_93{border-color:var(--accent);background:var(--accent-dim)}._themePreview_1ngvy_98{display:flex;gap:4px}._previewSwatch_1ngvy_103{width:16px;height:16px;border-radius:50%;flex-shrink:0}._themeName_1ngvy_110{font-size:11px;color:var(--text);text-align:center;white-space:nowrap}._checkmark_1ngvy_117{position:absolute;top:6px;right:6px;font-size:10px;color:var(--accent);line-height:1}._backdrop_1q0cq_1{position:fixed;top:0;right:0;bottom:0;left:0;z-index:900}._panel_1q0cq_7{position:fixed;top:0;right:0;bottom:0;width:280px;background:var(--bg2);border-left:1px solid var(--border2);z-index:950;display:flex;flex-direction:column;box-shadow:-6px 0 24px #00000059;animation:_slideIn_1q0cq_1 .15s ease-out}@keyframes _slideIn_1q0cq_1{0%{transform:translate(100%)}to{transform:translate(0)}}._header_1q0cq_27{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--border);flex-shrink:0}._title_1q0cq_36{font-size:12px;font-weight:600;font-family:var(--font-ui);color:var(--text);letter-spacing:.01em}._closeBtn_1q0cq_44{background:none;border:none;color:var(--muted);cursor:pointer;padding:3px 5px;border-radius:var(--radius-sm);display:flex;align-items:center;transition:color var(--dur-fast),background var(--dur-fast)}._closeBtn_1q0cq_44:hover{color:var(--text);background:var(--bg-hover)}._content_1q0cq_61{flex:1;overflow-y:auto;padding:8px 0}._section_1q0cq_67{padding:4px 0 10px}._sectionLabel_1q0cq_71{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding:6px 16px}._row_1q0cq_80{display:flex;align-items:center;justify-content:space-between;padding:5px 16px}._label_1q0cq_87{font-size:12px;font-family:var(--font-ui);color:var(--muted2)}._kbd_1q0cq_93{font-size:11px;font-family:var(--font-mono);color:var(--text);background:var(--bg3);border:1px solid var(--border2);border-radius:4px;padding:1px 6px;letter-spacing:.02em}._hint_1q0cq_104{padding:10px 16px;font-size:10px;font-family:var(--font-ui);color:var(--muted);border-top:1px solid var(--border);text-align:center;flex-shrink:0}._app_nwfeq_1{display:flex;flex-direction:column;height:100vh;overflow:hidden;background:var(--bg)}/**
|
|
2
|
+
* Copyright (c) 2014 The xterm.js authors. All rights reserved.
|
|
3
|
+
* Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
|
|
4
|
+
* https://github.com/chjj/term.js
|
|
5
|
+
* @license MIT
|
|
6
|
+
*
|
|
7
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
8
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
9
|
+
* in the Software without restriction, including without limitation the rights
|
|
10
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
11
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
12
|
+
* furnished to do so, subject to the following conditions:
|
|
13
|
+
*
|
|
14
|
+
* The above copyright notice and this permission notice shall be included in
|
|
15
|
+
* all copies or substantial portions of the Software.
|
|
16
|
+
*
|
|
17
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
18
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
19
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
20
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
21
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
22
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
23
|
+
* THE SOFTWARE.
|
|
24
|
+
*
|
|
25
|
+
* Originally forked from (with the author's permission):
|
|
26
|
+
* Fabrice Bellard's javascript vt100 for jslinux:
|
|
27
|
+
* http://bellard.org/jslinux/
|
|
28
|
+
* Copyright (c) 2011 Fabrice Bellard
|
|
29
|
+
* The original design remains. The terminal itself
|
|
30
|
+
* has been extended to include xterm CSI codes, among
|
|
31
|
+
* other features.
|
|
32
|
+
*/.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm .xterm-scroll-area{visibility:hidden}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}:root{--bg: #0a0a0c;--bg2: #111115;--bg3: #18181e;--border: #1e1e26;--border2: #2a2a36;--text: #dddbd4;--muted: #5a5a62;--muted2: #8a8a94;--amber: #ffffff;--purple: #7b6ef6;--green: #4ade80;--red: #f87171;--blue: #60a5fa;--teal: #dddbd4;--bg-base: var(--bg);--bg-pane: var(--bg);--bg-surface: var(--bg2);--bg-elevated: var(--bg3);--bg-hover: #1e1e26;--bg-input: var(--bg3);--bg-glass: rgba(10, 10, 12, .94);--tab-active-bg: var(--bg3);--tab-hover-bg: var(--bg3);--border-subtle: var(--border);--border-focus: var(--border2);--border-strong: var(--border2);--text-primary: var(--text);--text-secondary: var(--muted2);--text-tertiary: #383844;--text-muted: var(--muted);--text-inverse: var(--bg);--accent: var(--amber);--accent-dim: rgba(255, 255, 255, .07);--accent-border: rgba(255, 255, 255, .22);--ai-claude: var(--amber);--ai-opencode: var(--purple);--ai-aider: #a27fd4;--ai-continue: var(--teal);--ai-default: var(--muted);--ok: var(--green);--warn: var(--amber);--err: var(--red);--info: var(--blue);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .6);--shadow-md: 0 4px 16px rgba(0, 0, 0, .7);--shadow-lg: 0 12px 40px rgba(0, 0, 0, .85);--shadow-palette: 0 0 0 1px rgba(255, 255, 255, .05), 0 20px 56px rgba(0, 0, 0, .9);--titlebar-h: 44px;--tabbar-h: 40px;--statusbar-h: 28px;--inputbar-h: 52px;--pane-header-h: 34px;--filetree-w: 220px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 10px;--border-radius: var(--radius-sm);--dur-fast: 80ms;--dur-base: .14s;--dur-slow: .22s;--ease: cubic-bezier(.16, 1, .3, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--font-mono: "JetBrains Mono", "TX-02", "Berkeley Mono", "Cascadia Code", monospace;--font-ui: "JetBrains Mono", "Geist Mono", "Fira Code", "Cascadia Mono", monospace}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;overflow:hidden}button{background:none;border:none;cursor:pointer;font:inherit;color:inherit}input,textarea{font:inherit;background:none;border:none;outline:none;color:inherit}ul,ol{list-style:none}a{color:inherit;text-decoration:none}body{background:var(--bg-base);color:var(--text-primary);font-family:var(--font-ui);font-size:13px;line-height:1.4;-webkit-font-smoothing:subpixel-antialiased;-webkit-user-select:none;user-select:none}::-webkit-scrollbar{width:3px;height:3px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-focus);border-radius:2px}::-webkit-scrollbar-thumb:hover{background:var(--border-strong)}::selection{background:#e8e8e61a}:focus-visible{outline:1px solid var(--accent-border);outline-offset:-1px}.xterm .xterm-screen canvas{pointer-events:none}button{cursor:pointer;border:none;background:none;padding:0;color:inherit;font:inherit}
|