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.
Files changed (53) hide show
  1. package/README.md +26 -40
  2. package/bin/cli.js +53 -7
  3. package/build/after.png +0 -0
  4. package/build/apple-touch-icon.png +0 -0
  5. package/build/assets/index-CYAe4D_R.css +32 -0
  6. package/build/assets/index-CbqV7Qrz.js +135 -0
  7. package/build/before.png +0 -0
  8. package/build/favicon.ico +0 -0
  9. package/build/icon-128x128.png +0 -0
  10. package/build/icon-16x16.png +0 -0
  11. package/build/icon-256x256.png +0 -0
  12. package/build/icon-32x32.png +0 -0
  13. package/build/icon-48x48.png +0 -0
  14. package/build/icon-512x512.png +0 -0
  15. package/build/icon.png +0 -0
  16. package/build/index.html +29 -3
  17. package/build/manifest.json +18 -0
  18. package/build/og.png +0 -0
  19. package/build/site.webmanifest +32 -0
  20. package/package.json +8 -49
  21. package/public/after.png +0 -0
  22. package/public/apple-touch-icon.png +0 -0
  23. package/public/before.png +0 -0
  24. package/public/favicon.ico +0 -0
  25. package/public/icon-128x128.png +0 -0
  26. package/public/icon-16x16.png +0 -0
  27. package/public/icon-256x256.png +0 -0
  28. package/public/icon-32x32.png +0 -0
  29. package/public/icon-48x48.png +0 -0
  30. package/public/icon-512x512.png +0 -0
  31. package/public/icon.png +0 -0
  32. package/public/manifest.json +18 -0
  33. package/public/og.png +0 -0
  34. package/public/site.webmanifest +32 -0
  35. package/runtime-dist/server.js +1 -626
  36. package/build/assets/html2pdf-S6WA7sS3.js +0 -240
  37. package/build/assets/index-CfXPiaFw.css +0 -32
  38. package/build/assets/index-DfoqUTmD.js +0 -141
  39. package/electron/fs-watcher.js +0 -181
  40. package/electron/fs-watcher.ts +0 -183
  41. package/electron/main.js +0 -245
  42. package/electron/main.ts +0 -241
  43. package/electron/preload.js +0 -77
  44. package/electron/preload.ts +0 -105
  45. package/electron/process-detector.js +0 -63
  46. package/electron/process-detector.ts +0 -70
  47. package/electron/pty-manager.js +0 -188
  48. package/electron/pty-manager.ts +0 -181
  49. package/electron/tsconfig.json +0 -14
  50. package/electron/versions-manager.js +0 -74
  51. package/electron/versions-manager.ts +0 -98
  52. package/electron/window-state.js +0 -49
  53. 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
- [![Version](https://img.shields.io/badge/version-0.4.0-blue.svg)](package.json)
10
- [![Platform](https://img.shields.io/badge/platform-macOS%20%7C%20Windows%20%7C%20Linux-lightgrey.svg)]()
10
+ [![Version](https://img.shields.io/badge/version-0.5.0-blue.svg)](package.json)
11
+ [![Platform](https://img.shields.io/badge/platform-browser-blue.svg)]()
11
12
  [![License](https://img.shields.io/badge/license-MIT-green.svg)]()
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 **desktop terminal multiplexer purpose-built for AI coding workflows**. 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
+ 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
- | | 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) |
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
- ### Download (Recommended)
215
-
216
- Download the latest release for your platform from the [Releases page]().
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
- ### Build from Source
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
- ```bash
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. **Open a folder** — use `⌘O` or the command palette to set your workspace root.
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
- | Desktop runtime | Electron 33 |
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
- console.log(`
9
- terminalos CLI
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
- Usage:
12
- npx terminalos --run Start the terminal in your browser (default port 7513)
13
- npx terminalos --run --port N Use a custom port
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
 
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}