@deepseek-insight/dsi 0.5.20 → 0.5.22

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 (95) hide show
  1. package/.agents/skills/dsh-jump-prepare-fix/SKILL.md +99 -0
  2. package/.agents/skills/dsi-ov-setup/SKILL.md +36 -0
  3. package/.agents/skills/dsi-sync/SKILL.md +69 -0
  4. package/README.md +23 -29
  5. package/bin/dsi.mjs +18 -15
  6. package/build/client/_app/immutable/assets/2.DRj7JwRK.css +1 -0
  7. package/build/client/_app/immutable/chunks/Ch36fHI9.js +1 -0
  8. package/build/client/_app/immutable/chunks/D94Od7GQ.js +2 -0
  9. package/build/client/_app/immutable/chunks/DUawi_ZZ.js +1 -0
  10. package/build/client/_app/immutable/chunks/DXSIz1Bv.js +1 -0
  11. package/build/client/_app/immutable/chunks/DlfWhx6l.js +1 -0
  12. package/build/client/_app/immutable/chunks/{CxmtCU9s.js → zBRTraNY.js} +1 -1
  13. package/build/client/_app/immutable/entry/{app.CqYGeqRv.js → app.DLUi0EIr.js} +2 -2
  14. package/build/client/_app/immutable/entry/start.CWU06EOY.js +1 -0
  15. package/build/client/_app/immutable/nodes/{0.u99aBgpL.js → 0.DfmjWWCy.js} +1 -1
  16. package/build/client/_app/immutable/nodes/1.Cy_8L_sF.js +1 -0
  17. package/build/client/_app/immutable/nodes/2.hEv7awQ2.js +171 -0
  18. package/build/client/_app/version.json +1 -1
  19. package/build/handler.js +4 -4
  20. package/build/index.js +4 -4
  21. package/build/server/chunks/chunks/{app-config.svelte.js-CFb4kaFl.js → app-config.svelte.js-DX-xENzY.js} +2 -2
  22. package/build/server/chunks/chunks/{config.js-iG_1bK3r.js → config.js-BvW5LrfQ.js} +3 -2
  23. package/build/server/chunks/chunks/{db.js-9wP1ySFv.js → db.js-DUiYPVrk.js} +2 -2
  24. package/build/server/chunks/chunks/{db2.js-B_Un4Zvq.js → db2.js-B2wnWJ5y.js} +2 -2
  25. package/build/server/chunks/chunks/{dsh-connection.js-CwL9I98w.js → dsh-connection.js-DLLvHgxn.js} +3 -3
  26. package/build/server/chunks/chunks/{dsh-events.js-BtDxaV6Q.js → dsh-events.js-DEZgATm-.js} +4 -2
  27. package/build/server/chunks/chunks/{git-probe.js-C7z6xDzg.js → git-probe.js-CNhqEFLP.js} +4 -4
  28. package/build/server/chunks/chunks/{insight-config.js-COS9LOWZ.js → insight-config.js-BgiNeS6f.js} +3 -3
  29. package/build/server/chunks/chunks/{internal.js-Bf2uRIVS.js → internal.js-Du2x925l.js} +3 -3
  30. package/build/server/chunks/chunks/{permission-state.js-BoJAoWqi.js → permission-state.js-B7UpAHBv.js} +3 -2
  31. package/build/server/chunks/chunks/{runtime.js-BPLc5RLR.js → runtime.js-CCJi3XaY.js} +3 -2
  32. package/build/server/chunks/chunks/{settings-document.js-BKnRkLVq.js → settings-document.js-i5MkkSFH.js} +2 -2
  33. package/build/server/chunks/chunks/{state.js-OWX1K3Yj.js → state.js-BOUZ4Mdx.js} +4 -4
  34. package/build/server/chunks/chunks/{watcher.js-Dc9hzRLI.js → watcher.js-DMNZ6PC_.js} +5 -5
  35. package/build/server/chunks/entries/endpoints/api/a2a/_id_/{_server.ts.js-0rfV7w20.js → _server.ts.js-BFZR8uHn.js} +5 -5
  36. package/build/server/chunks/entries/endpoints/api/a2a/{_server.ts.js-DX0DUIja.js → _server.ts.js-BgqhjoUU.js} +8 -8
  37. package/build/server/chunks/entries/endpoints/api/a2a/register/{_server.ts.js-zB-V9Naa.js → _server.ts.js-CLVptu9i.js} +8 -8
  38. package/build/server/chunks/entries/endpoints/api/config/{_server.ts.js-Bo4VgIna.js → _server.ts.js-D8M_XizI.js} +4 -4
  39. package/build/server/chunks/entries/endpoints/api/dsh/directory/{_server.ts.js-_Wc4NU0Q.js → _server.ts.js-DS8L3_Bt.js} +5 -5
  40. package/build/server/chunks/entries/endpoints/api/dsh/pick-directory/{_server.ts.js-CvoINUYy.js → _server.ts.js-BUEokCIX.js} +5 -5
  41. package/build/server/chunks/entries/endpoints/api/dsh/presets/{_server.ts.js-B4UwZ8nd.js → _server.ts.js-lLG8ls0C.js} +5 -5
  42. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/attachment/{_server.ts.js-Hml2J0Bq.js → _server.ts.js-BSenSXeg.js} +5 -5
  43. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/cancel/{_server.ts.js-CsZ2u8cs.js → _server.ts.js-DCXKkJ0v.js} +5 -5
  44. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/catalog/{_server.ts.js-BhF1Nzig.js → _server.ts.js-BED7HhEP.js} +5 -5
  45. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/command/{_server.ts.js-BGXjV_Ak.js → _server.ts.js-Bg8nHHOZ.js} +5 -5
  46. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/events/{_server.ts.js-BF4vBIja.js → _server.ts.js-Dyo678sQ.js} +7 -7
  47. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/fork/{_server.ts.js-B2OwrEQD.js → _server.ts.js-Bo1MLZzv.js} +5 -5
  48. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/goal/{_server.ts.js-DboY_7cp.js → _server.ts.js-B5hEmzA3.js} +5 -5
  49. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/history/{_server.ts.js-BpioYdnc.js → _server.ts.js-B0YMraSe.js} +6 -6
  50. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/models/{_server.ts.js-CLrgUoq0.js → _server.ts.js-B7E_ugh9.js} +5 -5
  51. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/path/{_server.ts.js-BlZr_mA6.js → _server.ts.js-CpSm33QW.js} +4 -4
  52. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/permission/{_server.ts.js-BiU_IgYD.js → _server.ts.js-qX_48Xfk.js} +5 -5
  53. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/prompt/{_server.ts.js-FV-4ougZ.js → _server.ts.js-BmMx7VT-.js} +5 -5
  54. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/rename/{_server.ts.js-ChxB0XU5.js → _server.ts.js-D9WGgQkP.js} +5 -5
  55. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/respond/{_server.ts.js-DkSydg_X.js → _server.ts.js-JNQ1THCO.js} +5 -5
  56. package/build/server/chunks/entries/endpoints/api/dsh/session/_sessionId_/select-model/{_server.ts.js-Wbuf-vse.js → _server.ts.js-CyYEK2YZ.js} +5 -5
  57. package/build/server/chunks/entries/endpoints/api/dsh/sessions/{_server.ts.js-B-BfCKKL.js → _server.ts.js-9teKQw8I.js} +5 -5
  58. package/build/server/chunks/entries/endpoints/api/dsh/workspace-file/{_server.ts.js-fKfv5g19.js → _server.ts.js-D0EtJceT.js} +5 -5
  59. package/build/server/chunks/entries/endpoints/api/dsh/workspace-file-bytes/{_server.ts.js-DZpRzvas.js → _server.ts.js-DVBe8VFL.js} +5 -5
  60. package/build/server/chunks/entries/endpoints/api/dsh/workspace-tree/{_server.ts.js-Hn5-fnsU.js → _server.ts.js-_ICn-AJI.js} +5 -5
  61. package/build/server/chunks/entries/endpoints/api/dsh/workspaces/{_server.ts.js-CtPDRjV7.js → _server.ts.js-deEnJXis.js} +5 -5
  62. package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/delete/{_server.ts.js-DOp3nIcK.js → _server.ts.js-C99S7qPG.js} +5 -5
  63. package/build/server/chunks/entries/endpoints/api/dsh/workspaces/_workspaceId_/rename/{_server.ts.js-DiwcZfK9.js → _server.ts.js-DIbV5U-C.js} +5 -5
  64. package/build/server/chunks/entries/endpoints/api/prompts/_id_/{_server.ts.js-SoNSMvWj.js → _server.ts.js-C9sx5xeq.js} +5 -5
  65. package/build/server/chunks/entries/endpoints/api/prompts/{_server.ts.js-DIZiiHk-.js → _server.ts.js-BQN2GfYg.js} +5 -5
  66. package/build/server/chunks/entries/endpoints/api/prompts/use/{_server.ts.js-CbsUk0fk.js → _server.ts.js-Ya8ewOIo.js} +5 -5
  67. package/build/server/chunks/entries/endpoints/api/settings/{_server.ts.js-DCeIpzKT.js → _server.ts.js-Dtq_vXJc.js} +4 -4
  68. package/build/server/chunks/entries/endpoints/api/workspace/file-write/{_server.ts.js-Blw1UFX2.js → _server.ts.js-DptPqI-s.js} +8 -8
  69. package/build/server/chunks/entries/endpoints/api/workspace/git-events/{_server.ts.js-yflU8VH2.js → _server.ts.js-B4C7kLHl.js} +8 -8
  70. package/build/server/chunks/entries/endpoints/api/workspace/git-file-head/{_server.ts.js-q9jXuJ1p.js → _server.ts.js-Db9JKnPM.js} +8 -8
  71. package/build/server/chunks/entries/endpoints/api/workspace/git-map/{_server.ts.js-YjwnbPfG.js → _server.ts.js-C8gzgR2I.js} +8 -8
  72. package/build/server/chunks/entries/endpoints/api/workspace/git-status/{_server.ts.js-DRQay15h.js → _server.ts.js-BIlHfNA_.js} +8 -8
  73. package/build/server/chunks/entries/endpoints/api/workspace/write-gate/{_server.ts.js-BiCzLyNH.js → _server.ts.js-DRza8q_m.js} +8 -8
  74. package/build/server/chunks/entries/{hooks.server.js-B_E1wCwG.js → hooks.server.js-Bt6VP5fg.js} +4 -4
  75. package/build/server/chunks/entries/pages/{_error.svelte.js-DkmmDHjP.js → _error.svelte.js-B6QZqJkc.js} +30 -10
  76. package/build/server/chunks/entries/pages/{_page.server.ts.js-BHW1mzYQ.js → _page.server.ts.js-BOFnfJKx.js} +4 -4
  77. package/build/server/chunks/entries/pages/{_page.svelte.js-BSt3-Adz.js → _page.svelte.js-GQS2SRws.js} +2082 -200
  78. package/build/server/chunks/{handler-CEAxnB4f.js → handler-cx07G9-G.js} +3 -3
  79. package/build/server/chunks/{index.js-B-3rUYGC.js → index.js-Dfzyw-2i.js} +2 -2
  80. package/build/server/chunks/{manifest.js--ZDTDlzU.js → manifest.js-CFJqE5Kz.js} +44 -44
  81. package/build/server/chunks/nodes/{0.js-BQXxAZac.js → 0.js-CLm26i36.js} +2 -2
  82. package/build/server/chunks/nodes/1.js-cfJjJ8lx.js +9 -0
  83. package/build/server/chunks/nodes/2.js-BtKfdVVe.js +27 -0
  84. package/package.json +2 -2
  85. package/build/client/_app/immutable/assets/2.Dk-hwaP_.css +0 -1
  86. package/build/client/_app/immutable/chunks/7MCZCUsX.js +0 -1
  87. package/build/client/_app/immutable/chunks/CodI3RGj.js +0 -1
  88. package/build/client/_app/immutable/chunks/DKDzTags.js +0 -2
  89. package/build/client/_app/immutable/chunks/azDKH4zi.js +0 -1
  90. package/build/client/_app/immutable/chunks/qIBjcgkE.js +0 -1
  91. package/build/client/_app/immutable/entry/start.CIXiL_7f.js +0 -1
  92. package/build/client/_app/immutable/nodes/1.qcRcZCY6.js +0 -1
  93. package/build/client/_app/immutable/nodes/2.GgqfB5rv.js +0 -171
  94. package/build/server/chunks/nodes/1.js-DMcugevB.js +0 -9
  95. package/build/server/chunks/nodes/2.js-BrT7uCAN.js +0 -27
@@ -0,0 +1,99 @@
1
+ # DSH Jump Unstick — the `prepare` Scheduler-Symbol Split
2
+
3
+ Every DSH edition jump that dies with `Cannot read properties of undefined
4
+ (reading 'prepare')` on the first tool call has ONE verified cause class and ONE
5
+ validated fix. This skill exists so the jump is never blocked twice on the same
6
+ bug — the 2026-09-18 jump to `dsh-v0.1.6-alpha.2` lost the session to it, and
7
+ the diagnosis had to be rebuilt from scratch on 2026-09-19.
8
+
9
+ Authority: upstream [discussion 783](https://github.com/deepseek-ai/deepseek-harness/discussions/783)
10
+ names the mechanism for global installs; the 2026-09-19 probe (below) proved the
11
+ source-checkout variant and validated the fix end to end.
12
+
13
+ ## When to use
14
+
15
+ - A DSH checkout just moved (pull / tag checkout / rebuild) and EVERY tool call
16
+ in EVERY session fails with `Cannot read properties of undefined (reading
17
+ 'prepare')`, code `UNKNOWN`, ending the turn.
18
+ - Or the jump aborted earlier and `~/.dsh/sessions/**/session.v3.jsonl.zstd`
19
+ shows a `turn/end` with that exact message.
20
+ - Do NOT use for other `undefined` errors — the message must name `prepare`.
21
+
22
+ ## The mechanism, in one paragraph
23
+
24
+ `packages/core/tools` exports `TOOL_RUNTIME_SCHEDULER = Symbol(...)` — a plain
25
+ Symbol, so each loaded copy of the module mints a distinct key. The tools
26
+ registry registers the scheduler under ONE copy's Symbol; the agent loop reads
27
+ it through the OTHER copy's Symbol; the lookup yields `undefined` and
28
+ `.prepare` throws. What splits the copies depends on launch mode: in a global
29
+ install it is a profile-local `pnpm install` materializing `@deepseek-ai/*`
30
+ under `~/.dsh/profiles/<name>/node_modules` (discussion 783); in a
31
+ source-checkout launch (`pnpm dsh …` = `node --import tsx/esm apps/cli/src/bin.ts`)
32
+ the 2026-09-19 probe caught the cordis plugin loader importing BOTH
33
+ `packages/core/tools/src/index.ts` (via tsx tsconfig `paths`) AND
34
+ `packages/core/tools/lib/index.js` (via package `exports`) in the same process.
35
+ Any jump that changes plugin resolution can re-trigger it.
36
+
37
+ ## Confirm before fixing (2 minutes, optional but cheap)
38
+
39
+ Instrument both copies, reproduce, read the stacks:
40
+
41
+ ```sh
42
+ # in the moved checkout, add after the Symbol line in BOTH
43
+ # packages/core/tools/src/index.ts and packages/core/tools/lib/index.js:
44
+ if (process.env.DSH_PROBE_SYMBOL) console.error('[PROBE]', import.meta.url, new Error('stack').stack)
45
+
46
+ export DSH_PROBE_SYMBOL=1
47
+ pnpm dsh --profile headless "Use the bash tool to run: echo probe" 2>&1 | grep PROBE
48
+ ```
49
+
50
+ Two `[PROBE]` lines with different URLs (one `src/`, one `lib/`, or two
51
+ distinct trees) = this bug. One line only = something else; stop and re-diagnose.
52
+
53
+ ## The fix (validated 2026-09-19 against a pristine alpha.2 worktree)
54
+
55
+ Make the scheduler key copy-robust with the global symbol registry, in BOTH
56
+ copies of `packages/core/tools`:
57
+
58
+ - `src/index.ts`:
59
+ `export const TOOL_RUNTIME_SCHEDULER: unique symbol = Symbol.for('@deepseek-ai/dsh-tools.scheduler')`
60
+ - `lib/index.js` (after the line `const TOOL_RUNTIME_SCHEDULER = …`):
61
+ `Symbol.for("@deepseek-ai/dsh-tools.scheduler")`
62
+
63
+ Patching only one copy does NOT work — either copy may provide the registry or
64
+ read it, and a `Symbol.for` key on one side still mismatches a plain `Symbol()`
65
+ on the other.
66
+
67
+ ## Verify, then clean up
68
+
69
+ 1. Remove any `[PROBE]` instrumentation lines added above.
70
+ 2. Headless proof (isolated home so the running web host is untouched):
71
+ ```sh
72
+ export DSH_HOME="$(mktemp -d)" && cp ~/.dsh/settings.yaml "$DSH_HOME/"
73
+ export ZAI_API_KEY="$(grep -oE 'ZAI_API_KEY=?["'"'"']?[A-Za-z0-9._-]+' ~/.zshrc | head -1 | sed -E 's/^ZAI_API_KEY=?["'"'"']?//')"
74
+ pnpm dsh --profile headless "Use the bash tool to run: echo <tag> — then reply with exactly its output."
75
+ ```
76
+ Green = the reply is exactly the echoed tag.
77
+ 3. Web profile: boot briefly with the isolated `DSH_HOME`; plugin activation
78
+ must pass (an `EADDRINUSE` on the running host's port means plugins are
79
+ healthy). Only then restart the real `pnpm dsh web`.
80
+
81
+ ## Standing caveats
82
+
83
+ - `lib/` is a build artifact: re-apply the lib patch after every
84
+ `pnpm run build`. The src patch dirties the tree across pulls — re-apply
85
+ after checking out a new edition, drop when upstream adopts the fix.
86
+ - Never commit the patched files; this is a local unblock only.
87
+ - The error also litters the session ledger with orphan `tool/call` events
88
+ (persisted before the throwing lookup). DeepSeek's endpoint rejects later
89
+ turns of such sessions with a 400 (`tool_calls` must be followed by `tool`
90
+ messages) — affected sessions are lost for that provider; start a new session
91
+ rather than resuming.
92
+
93
+ ## Retire this skill when
94
+
95
+ Upstream ships the key as `Symbol.for` (or otherwise guarantees singleton
96
+ resolution) in a tag this machine runs — verify with:
97
+ `git grep -n "Symbol.for('@deepseek-ai/dsh-tools.scheduler')" <tag> -- packages/core/tools/src/index.ts`,
98
+ then delete the repo copy and the mirror and note the retirement in the DSI
99
+ release KB note covering that jump.
@@ -17,10 +17,12 @@ Run in order; stop at the first failing gate:
17
17
  | Server config | `ls ~/.openviking/ov.conf` | exists |
18
18
  | Client config | `cat ~/.openviking/ovcli.conf` | `url` = `http://127.0.0.1:1933` |
19
19
  | Package | `openviking-server --version` | prints a version |
20
+ | Plugin installed | `grep @openviking ~/.dsh/profiles/web/package.json` + `ls ~/.dsh/profiles/web/node_modules/@openviking/dsh-memory-plugin` | both the bundle entry and the package exist |
20
21
  | MCP connection | harness tool list shows `mcp__openviking__*` | tools present |
21
22
 
22
23
  - Health fails + `ov.conf` missing → **Recovery path (§2)**, the common case.
23
24
  - Health fails + `ov.conf` exists → run `openviking-server doctor`, fix what it names, go to §2 step 4.
25
+ - Plugin missing from manifest or `node_modules` → reinstall via the sanctioned path (§2 step 6): from the running host's checkout, `pnpm dsh plugin --profile web add @openviking/dsh-memory-plugin`. This persists both the dependency and the `dsh.profile.bundles` entry, so profile rebuilds keep it. A bare `pnpm install` in the profile dir is a dead end — bundles are not `dependencies` and pnpm reports "Already up to date" while the plugin stays missing (RCA 2026-09-18 — The Vanished Plugin).
24
26
  - Health ok but MCP disconnected → the plugin reconnects on its own within a turn or two; if not after a full turn, restart the harness session. Do not reinstall anything.
25
27
  - Package missing → fresh install: do §2 steps 1–6 from scratch.
26
28
 
@@ -82,6 +84,11 @@ openviking-server doctor # expect: all checks PASS (config, auth, disk ≥ se
82
84
  openviking-server # foreground proof; then move to a supervisor
83
85
  ```
84
86
 
87
+ Sandbox warning: server startup acquires a PID lock at
88
+ `~/.openviking/data/.openviking.pid` — under a workspace-only file sandbox it
89
+ dies with `PermissionError` / exit 3 at once. Start the server with full file
90
+ access (same as step 2's CLI housekeeping).
91
+
85
92
  For persistence: launchd/nohup/systemd — never rely on an agent shell outliving the session. Verify:
86
93
 
87
94
  ```sh
@@ -95,6 +102,14 @@ A stale `~/.openviking/pending/` queue (hundreds of files) from the downtime dra
95
102
 
96
103
  Within a turn of the server going healthy, the plugin reconnects (MCP tools answer, `<openviking-context>` appears at the next session start). If MCP tools still error after a full turn: restart the harness session once. Only then suspect the bundle (`~/.dsh/profiles/web/package.json` must list `@openviking/dsh-memory-plugin` in `dsh.profile.bundles`).
97
104
 
105
+ If the plugin must be (re)installed, run from the **running host's checkout** (find it: `lsof -p <dsh-web-pid> | grep cwd`):
106
+
107
+ ```sh
108
+ pnpm dsh plugin --profile web add @openviking/dsh-memory-plugin
109
+ ```
110
+
111
+ This is the only install path that reconciles `dsh.profile.bundles` and survives profile rebuilds. With `patchReload: "live"` in the manifest the profile recomposes without a host restart and `<openviking-context>` returns mid-session.
112
+
98
113
  ## 3. Verification checklist (all seven, in order)
99
114
 
100
115
  1. `openviking-server --version` → prints version
@@ -112,3 +127,24 @@ Within a turn of the server going healthy, the plugin reconnects (MCP tools answ
112
127
  - `auth_mode: "dev"` = no auth, localhost only. Never bind `0.0.0.0` without switching to API-key auth (docs: Authentication guide).
113
128
  - Piped `init` answers are prompt-order-fragile (Step 3) — count prompts, don't trust defaults.
114
129
  - Re-examine actual prompt output on every version bump; this sequence was tested against OpenViking 0.4.20 / plugin 0.3.2 (2026-09-16) and the wizard's prompts are not a stable contract.
130
+
131
+ ## 5. Report the run — always, before finishing
132
+
133
+ Every execution of this skill — recovery, install, or clean-bill-of-health —
134
+ ends by writing an RCA report so the next run diffs from a written baseline.
135
+
136
+ - Path: `~/.dsi/dev/ov/YYYY-MM-DD HH-MM - <Short Name> — <What Happened>.md`
137
+ (mkdir the directory first; date = when the analysis ran, 24h `HH-MM` to
138
+ keep colons out of the filename).
139
+ - Required sections: TL;DR (+ layman glossary), symptom & diagnosis path
140
+ (the §0 gate table with pass/fail per gate), one RCA block per root cause
141
+ with file/line evidence, a mermaid **flowchart** (the journey, failed
142
+ branches colored) and a mermaid **sequenceDiagram** (who talks to whom),
143
+ fix application & testing (command → result table), corrective actions,
144
+ and a closing **open question**.
145
+ - Exemplar: `~/.dsi/dev/ov/2026-09-18 09-56 - The Vanished Plugin and the
146
+ Sandboxed Lock — OpenViking Recovery RCA.md`.
147
+ - If the run surfaced a new trap or fixed a gap in this skill, update this
148
+ SKILL.md (repo copy at `deepseek-insight/.agents/skills/dsi-ov-setup/`),
149
+ then re-copy to the mirror `~/.agents/skills/dsi-ov-setup/` — a skill the
150
+ slash menu never sees is a skill nobody invokes.
@@ -0,0 +1,69 @@
1
+ ---
2
+ name: dsi-sync
3
+ description: Use when the user runs /dsi-sync or says to sync/mirror DeepSeek Insight (DSI) to its GitHub mirror — re-syncs ~/agentic-ai/deepseek-insight into ~/github/deepseek-insight (excluding dev/ and .git/), then commits and pushes the mirror. Covers resync, commit, push, and no-change skip.
4
+ ---
5
+
6
+ # DSI → GitHub Mirror Sync
7
+
8
+ Mirror DSI into a publishable GitHub repo, then commit & push. The mirror lives at
9
+ `~/github/deepseek-insight` and has its own `.git` (origin:
10
+ `git@github.com:mitmplay/deepseek-insight.git`). Never touch the mirror's `.git`
11
+ or DSI's `dev/` folder.
12
+
13
+ ## Source of truth
14
+
15
+ - SOURCE: `~/agentic-ai/deepseek-insight/`
16
+ - MIRROR: `~/github/deepseek-insight/`
17
+ - EXCLUDED from sync (always): `dev/`, `.git/`
18
+ - The mirror's own `.git` is protected because rsync excludes `.git/` — with
19
+ `--delete`, excluded target paths are never deleted.
20
+
21
+ ## 1. Re-sync
22
+
23
+ ```bash
24
+ rsync -a --delete \
25
+ --exclude 'dev/' \
26
+ --exclude '.git/' \
27
+ ~/agentic-ai/deepseek-insight/ \
28
+ ~/github/deepseek-insight/
29
+ ```
30
+
31
+ Trailing slashes matter: they copy CONTENTS of source into target, not the folder itself.
32
+
33
+ ## 2. Verify the exclusions held
34
+
35
+ ```bash
36
+ test -d ~/github/deepseek-insight/dev && echo 'BAD: dev leaked' || echo 'ok: no dev'
37
+ test -d ~/github/deepseek-insight/.git && echo 'ok: .git intact' || echo 'BAD: .git lost'
38
+ ```
39
+
40
+ If either BAD line prints, stop and fix before committing — do not push a broken mirror.
41
+
42
+ ## 3. Commit & push (skip if nothing changed)
43
+
44
+ ```bash
45
+ cd ~/github/deepseek-insight
46
+ git add -A
47
+ if git diff --cached --quiet; then
48
+ echo 'no changes to sync'
49
+ else
50
+ git commit -m "sync from DSI $(date '+%Y-%m-%d %H:%M')"
51
+ git push origin main
52
+ fi
53
+ ```
54
+
55
+ - Always use `git add -A` then check the staged diff — never commit blind.
56
+ - Quote the date format: `(date '+%Y-%m-%d %H:%M')` — unquoted, the space
57
+ word-splits the expansion and `date` errors with "illegal time format"
58
+ (observed 2026-09-18).
59
+ - Report to the user: file count changed (or "no changes"), commit hash, push result.
60
+ - If push is rejected (non-fast-forward), STOP and ask the user — never force-push
61
+ without explicit approval.
62
+
63
+ ## Failure handling
64
+
65
+ - `rsync` errors: report the failing path; do not commit a partial sync.
66
+ - Remote unreachable (SSH): report the error verbatim; the sync itself is still
67
+ complete and committed locally.
68
+ - Mirror `.git` missing entirely: ask the user before re-initializing — do not
69
+ invent a remote URL.
package/README.md CHANGED
@@ -1,48 +1,42 @@
1
1
  # DeepSeek Insight
2
2
 
3
- - `DSH web` shows you a conversation.
4
- - [DeepSeek Insight](https://gitlab.com/wharsojo.dev/deepseek-insight) (DSI) shows you the **whole floor**
3
+ > [DeepSeek Insight](https://github.com/mitmplay/deepseek-insight) (**DSI**) **See your multiple agents run on the floor (agent, sub-agent, etc)**, each **conversation on the floor are updated instantly**.
5
4
 
6
- > `DSI` as a `Control room` built on your harness's own records: every session, past and running, side by side on one page; lineage tree of sub-agents pinned under the parent that spawned them; every tool call with its pass/fail receipt; history you can search; prompts worth keeping filed for reuse. It speaks the same wire as the `DSH` you already run — nothing new to configure.
5
+ > A `Control room` built on [Deepseek Harness's](https://github.com/deepseek-ai/deepseek-harness) (**DSH**) **records**: any (running) session, show side by side on the floor; **Lineage tree** of **parent to sub-agents**; Clean conversation with **tool-call(s) chips** with status **+** auto-expand **thingking chips**.
7
6
 
8
- ## Run
7
+ > A `Prompt Input` with **Slash-command(/)**, **Macros(!)** and **Auto-complete(?)**. Prompt-manager you can search it and to manage macros & autocomplete; user-prompts worth keeping is one-click-away tobe reuse.
9
8
 
10
- The whole DX loop lives in the home page: pick a preset + workspace, press **+ New chat** and watch your agent work.
11
- > tool chips pass/fail with durations and receipts, reasoning folds open, older turns load as you scroll up, and when a turn needs permission the approval card answers it with one click.
9
+ > Included skills for:
10
+ > - Spec and Tasks execution,
11
+ > - Integration helper for [OpenViking](https://openviking.ai/)
12
12
 
13
- ### What you'll see
13
+ > **Your language.** The interface speaks English, Chinese, Indonesian & Spanish.
14
14
 
15
- Everything on the page is **real harness activity**, not a mock — every chip, diff, and reply is read straight from the running harness.
15
+ <details>
16
+ <summary>Deepseek-insight-panels</summary>
17
+ <img src="docs/images/deepseek-insight-panels.png"/>
18
+ </details>
16
19
 
17
- - **Conversation, with receipts.** Each tool the agent runs shows as a chip that passes or fails, with its duration and its receipt; open it to see exactly what ran. Reasoning folds away until you want it, and long sessions load older turns as you scroll up.
18
- - **The workspace explorer, with git diff.** A side panel shows the files your agent is touching. Changed files are flagged and pulsing while the agent works; click one and you get a **real git diff** — additions in green, removals in red — rendered from the file's live buffer, so it updates as the agent edits and refreshes if you (or anything else) change the file underneath.
19
- - **Presets and workspaces.** Start each chat with the right agent for the job — a coder, a researcher, a generalist — pointed at the right folder.
20
- - **Many conversations, one page.** Conversations live in panels you can open side by side; compare two runs, or keep a scratch chat next to the main one.
21
- - **A family tree under every chat.** When your agent spawns sub-agents, they appear as their own panels **below the parent that made them** — a ghost-tinted panel that stays put on refresh, so you always know who was working for whom. And when one conversation is worth a second try, **fork it**: one click clones the loaded context into a fresh session that starts exactly where the original stood — same history, new task.
22
- - **A prompt library that files itself.** Save any bubble into the library and give it short filing words (tags) at save time; filter the prompt manager by tag chips or `+tag` words in the search box, and narrow the suggestion strip with its own tag chips — filters survive a reload. Tune the offered tags in `~/.dsi/settings.yaml` under `prompts.tags`.
23
- - **Your language.** The interface speaks English, Chinese, and Indonesian.
20
+ ---
24
21
 
25
- ### Run from npm
22
+ ## Quick Start
26
23
 
27
- Install [Node.js](https://nodejs.org) (>= 22.19), open a terminal, and run the **recommended one-liner**:
28
-
29
- ```sh
24
+ ```bash
30
25
  npx @deepseek-insight/dsi@latest dsh --sync --zai
26
+ # Open http://localhost:5174
31
27
  ```
32
28
 
33
- What that single command does, in plain words:
29
+ - **`npx @deepseek-insight/dsi@latest`** — get latest DSI.
30
+ - `dsh` — starts **DSH** (`dsh web`) and **DSI** together, as one pair and runs it.
31
+ - `--sync` — copies DSH token to DSI config — **one window, one Ctrl-C stops both**.
32
+ - `--zai` — **optional.** It bootstraps the GLM (Z.AI) provider into the harness settings (`~/.dsh/settings.yaml`). **If you do not have a GLM account, simply leave it off** — DSI will use whatever provider your harness is already configured with.
33
+
34
34
 
35
- - `npx @deepseek-insight/dsi@latest` — fetches the newest published DSI and runs it, **no install step**; nothing is added to your project, and `@latest` is what keeps it the latest.
36
- - `dsh` — talk to the harness side: this subcommand starts the **DSH host** (`dsh web`) and the **DSI page** together, as one pair.
37
- - `--sync` — copies the harness one-time launch token into DSI config (`~/.dsi/settings.yaml`) so the page can speak to the host, then serves both in the foreground — **one window, one Ctrl-C stops both**.
38
- - `--zai` — **optional.** It bootstraps the GLM (Z.AI) provider into the harness settings (`~/.dsh/settings.yaml`). **If you do not have a GLM account, simply leave it off** — DSI will use whatever provider your harness is already configured with:
39
35
 
40
- ```sh
41
- npx @deepseek-insight/dsi@latest dsh --sync
42
- ```
43
36
 
44
- When it is up, your browser opens the page by itself (default `http://127.0.0.1:5174`). Run it again later and DSI even cleans up after a lost previous run: `dsi dsh --sync-kills`.
37
+ When it is up, your browser opens the page by itself (default `http://127.0.0.1:5174`).
45
38
 
46
39
  ## License
47
40
 
48
- [Apache-2.0](LICENSE) — Copyright © 2026 Widi Harsojo
41
+ [Apache-2.0](LICENSE) — Copyright © 2026 [Widi Harsojo](https://www.linkedin.com/in/wharsojo/)
42
+ > OPEN TO WORK (SG_PR)
package/bin/dsi.mjs CHANGED
@@ -4,15 +4,18 @@
4
4
  // prepares the artifacts, this launcher only runs them. The build is resolved
5
5
  // relative to this file, not the cwd, so a globally installed or npx-run
6
6
  // package serves its own bundled build from any directory.
7
- // `dsi zai` bootstraps a fresh DSH install: it adds the ZAI provider and the
8
- // default model to ~/.dsh/settings.yaml (idempotent — existing entries win).
7
+ // `--zai` (on `dsi web` / `dsi dsh --sync`) bootstraps a fresh DSH install:
8
+ // it adds the ZAI provider and the default model to ~/.dsh/settings.yaml
9
+ // (idempotent — existing entries win). The standalone `dsi zai` command was
10
+ // decommissioned — the flag does the same work before anything boots.
9
11
  // `dsi dsh --token <token>` copies a dsh launch token into DSI's config
10
12
  // ($DSI_CONFIG_PATH or ~/.dsi/settings.yaml, key dsh.authToken — the same
11
13
  // file scripts/dsh-web-synced.sh keeps fresh). `dsi dsh --sync` runs that
12
14
  // script AND serves the dsi build — one foreground pair, one Ctrl-C.
13
15
  // `--dev` serves the Vite dev server instead of the build (sources only).
14
16
  // `dsi dsh --sync-kills` sweeps orphans a lost previous run left behind.
15
- // `dsi dsh --ov` (or --sync --ov) installs the OpenViking memory plugin into
17
+ // `dsi dsh --ov` (or --sync --ov, or web --ov) installs the OpenViking
18
+ // memory plugin into
16
19
  // the active dsh profile by delegating to `dsh plugin ... add` (idempotent).
17
20
 
18
21
  import { spawn, spawnSync } from 'node:child_process';
@@ -65,11 +68,9 @@ const USAGE = [
65
68
  '',
66
69
  ' All commands (flags — see above):',
67
70
  '',
68
- ' dsi web [--zai] [--dev] [--token <token>]',
71
+ ' dsi web [--zai] [--ov] [--dev] [--token <token>]',
69
72
  ' serve the DSI page alone (PORT env default 5174,',
70
73
  ' HOST env default 127.0.0.1)',
71
- ' dsi zai add the ZAI provider + default model to',
72
- ' ~/.dsh/settings.yaml',
73
74
  ' dsi dsh --token <token>',
74
75
  ' store the dsh launch token in ~/.dsi/settings.yaml',
75
76
  ' dsi dsh --sync [--zai] [--dev] [--ov]',
@@ -87,7 +88,7 @@ if (command === '--help' || command === '-h' || command === 'help') {
87
88
  console.log(USAGE);
88
89
  process.exit(0);
89
90
  }
90
- if (command !== 'web' && command !== 'zai' && command !== 'dsh') {
91
+ if (command !== 'web' && command !== 'dsh') {
91
92
  console.error(command === undefined ? 'dsi: missing command' : `dsi: unknown command "${command}"`);
92
93
  console.error(USAGE);
93
94
  process.exit(64);
@@ -137,11 +138,6 @@ function isRecord(value) {
137
138
  return typeof value === 'object' && value !== null && !Array.isArray(value);
138
139
  }
139
140
 
140
- if (command === 'zai') {
141
- addZaiProvider();
142
- process.exit(0);
143
- }
144
-
145
141
  // ── dsi dsh ────────────────────────────────────────────────────────────────
146
142
 
147
143
  /** One pkill -f sweep per orphan signature. The patterns match only the
@@ -525,12 +521,14 @@ function startDsiServer(defaultPort = '5174') {
525
521
  if (command === 'web') {
526
522
  // Optional dsi-side flags, the same meanings as `dsi dsh --sync`: --zai
527
523
  // bootstraps the ZAI provider BEFORE anything boots (so this run picks it
528
- // up), --token stores the dsh launch token before the page serves, --dev
529
- // swaps the built server for the Vite dev server. Everything is done
524
+ // up), --token stores the dsh launch token before the page serves, --ov
525
+ // installs the OpenViking memory plugin, --dev swaps the built server for
526
+ // the Vite dev server. Everything is done
530
527
  // first, then the one child spawns and the script falls off the end.
531
528
  const rest = process.argv.slice(3);
532
529
  const withZai = rest.includes('--zai');
533
530
  const withDev = rest.includes('--dev');
531
+ const withOv = rest.includes('--ov');
534
532
  const tokenIdx = rest.indexOf('--token');
535
533
  let token;
536
534
  if (tokenIdx !== -1) {
@@ -541,7 +539,7 @@ if (command === 'web') {
541
539
  }
542
540
  }
543
541
  const unknown = rest.filter((arg, i) =>
544
- arg !== '--zai' && arg !== '--dev'
542
+ arg !== '--zai' && arg !== '--ov' && arg !== '--dev'
545
543
  && arg !== '--token' && !(tokenIdx !== -1 && i === tokenIdx + 1)
546
544
  );
547
545
  if (unknown.length > 0) {
@@ -550,9 +548,14 @@ if (command === 'web') {
550
548
  process.exit(64);
551
549
  }
552
550
  if (withZai) addZaiProvider();
551
+ if (withOv) runOvPlugin();
553
552
  if (token !== undefined) setDshAuthToken(token);
554
553
  runSkillsMirror();
555
554
  const child = withDev ? startDsiDevServer() : startDsiServer();
555
+ // Same browser-follows-the-UI contract as the pair (runSyncedPair): open
556
+ // the default browser at the serving port — --dev's Vite server takes
557
+ // 5175, the built server 5174; PORT/HOST overrides apply.
558
+ openBrowser(`http://${process.env.HOST ?? '127.0.0.1'}:${process.env.PORT ?? (withDev ? '5175' : '5174')}/`);
556
559
 
557
560
  for (const signal of ['SIGINT', 'SIGTERM']) {
558
561
  process.on(signal, () => {
@@ -0,0 +1 @@
1
+ .status.svelte-x2ntn8{flex-shrink:0;justify-content:center;align-items:center;width:.5rem;height:.5rem;display:inline-flex}.status.run.svelte-x2ntn8{gap:.0625rem}.bar.svelte-x2ntn8{background:var(--si-run,#b91c1c);border-radius:9999px;width:.125rem;height:100%;animation:1.1s ease-in-out infinite svelte-x2ntn8-ss-stream}.bar.svelte-x2ntn8:nth-child(2){animation-delay:.18s}.bar.svelte-x2ntn8:nth-child(3){animation-delay:.36s}@keyframes svelte-x2ntn8-ss-stream{0%,to{height:30%}50%{height:100%}}@media (prefers-reduced-motion:reduce){.bar.svelte-x2ntn8{animation:none}.bar.svelte-x2ntn8:first-child{height:55%}.bar.svelte-x2ntn8:nth-child(2){height:100%}.bar.svelte-x2ntn8:nth-child(3){height:35%}}.status.idle.svelte-x2ntn8:after{content:"";background:var(--si-idle,#52606d);border-radius:9999px;width:.5rem;height:.5rem}.status.delegated.run.svelte-x2ntn8 .bar:where(.svelte-x2ntn8){background:var(--si-run-delegated,#b91c1c)}.status.delegated.idle.svelte-x2ntn8:after{background:var(--si-idle-delegated,#b91c1c)}.status.svelte-x2ntn8{position:relative}.badge.svelte-x2ntn8{color:#fff;text-align:center;background:#b91c1c;border-radius:9999px;min-width:.5rem;padding:0 .0625rem;font-size:.5rem;font-weight:600;line-height:.625rem;position:absolute;top:-.375rem;left:.4375rem}.title-chip.svelte-ds4wzl{white-space:nowrap;flex:auto;align-items:center;gap:.1875rem;min-width:0;padding:.125rem .375rem;line-height:1;display:flex}.chip-label.svelte-ds4wzl{text-overflow:ellipsis;min-width:0;overflow:hidden}.title-chip.dead.svelte-ds4wzl{color:#991b1b;--si-idle:#991b1b;background:0 0;border-color:#991b1b}.ws-chip.svelte-u6vikv{align-items:center;gap:var(--wsc-gap,.1875rem);width:var(--wsc-width,auto);max-width:var(--wsc-max-width,6.5rem);font-size:var(--wsc-font-size,.75rem);padding:var(--wsc-padding,.15rem .375rem);vertical-align:middle;white-space:nowrap;border:1px solid var(--wsc-border,color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a));background:var(--wsc-bg,color-mix(in srgb, var(--color-accent-blue,#3b82f6) 8%, transparent));color:var(--wsc-fg,color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a));border-radius:9999px;flex-shrink:0;line-height:1;transition:color .15s,border-color .15s,background-color .15s;display:inline-flex}.ws-chip.svelte-u6vikv svg{color:inherit;flex-shrink:0}.ws-chip.ghost.svelte-u6vikv{border-color:var(--wsc-border,#52606d73);background:var(--wsc-bg,var(--si-chip-ghost-bg,color-mix(in srgb, var(--color-surface-alt,#f1f3f5) 35%, transparent)));color:var(--wsc-fg,var(--si-chip-ghost,#52606d))}.chip-label.svelte-u6vikv{text-overflow:ellipsis;min-width:0;overflow:hidden}.ws-slot.svelte-1weslq2{flex-shrink:0;width:6.5rem}.ws-slot.branch.svelte-1weslq2{color:var(--color-text-muted,#adb5bd);align-items:center;display:inline-flex;overflow:hidden}.ws-slot.branch.fork.svelte-1weslq2{color:#00a802}.ws-slot.branch.doc-child.svelte-1weslq2{color:maroon}.ws-slot.branch.ws-child.svelte-1weslq2{color:#06c}.tree-line.svelte-1weslq2{flex:1;height:10px;position:relative}.tree-line.svelte-1weslq2:before{content:"";border-bottom:2px solid;border-left:2px solid;border-bottom-left-radius:5px;position:absolute;inset:0 3px 0 0}.tree-line.svelte-1weslq2:after{content:"";border-top:2px solid;border-right:2px solid;width:4px;height:4px;position:absolute;top:7px;right:1.5px;transform:rotate(45deg)}.label.svelte-1weslq2{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.group-rows.svelte-y4gy65{flex-direction:column;gap:.125rem;display:flex}.row.svelte-y4gy65{min-width:0;color:var(--color-text-primary,#212529);border-radius:.3rem;align-items:center;gap:.3rem;padding:.25rem .375rem;font-size:.75rem;transition:background-color .15s;display:flex}.row.current.svelte-y4gy65{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 30%, #fff);box-shadow:inset 0 0 0 1.5px color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);font-weight:600}.row.panel-row.svelte-y4gy65{cursor:pointer}.row.panel-row.svelte-y4gy65 .label,.row.panel-row.svelte-y4gy65 .ws{color:#9400d3}.row.panel-row.dead.svelte-y4gy65:not(.current) .label,.row.panel-row.dead.svelte-y4gy65:not(.current) .ws{color:#991b1b}.row.panel-row.svelte-y4gy65 .row-btn{color:#9400d3;opacity:.7}.row.panel-row.dead.svelte-y4gy65:not(.current) .row-btn{color:#991b1b}.row.ghost-row.svelte-y4gy65{cursor:pointer;opacity:.88;font-size:.6875rem}.row.ghost-row.svelte-y4gy65:hover{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 20%, #fff);opacity:1}.row.ghost-row.svelte-y4gy65:focus-visible{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 20%, #fff);outline-offset:-2px;outline:2px solid #1e3a8a}.adopt-hint.svelte-y4gy65{color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 30%, #1e3a8a);opacity:0;flex-shrink:0;font-size:.5625rem;font-style:italic;transition:opacity .15s}.row.ghost-row.svelte-y4gy65:hover .adopt-hint:where(.svelte-y4gy65),.row.ghost-row.svelte-y4gy65:focus-visible .adopt-hint:where(.svelte-y4gy65){opacity:1}.spawned-by.svelte-y4gy65{text-overflow:ellipsis;white-space:nowrap;max-width:7rem;color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 30%, #1e3a8a);flex-shrink:0;align-items:center;gap:.125rem;font-size:.5625rem;display:inline-flex;overflow:hidden}.spawned-by.svelte-y4gy65 svg{flex-shrink:0}.row.panel-row.svelte-y4gy65:hover{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 20%, #fff)}.row.panel-row.svelte-y4gy65:focus-visible{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 20%, #fff);outline-offset:-2px;outline:2px solid #1e3a8a}.row.current.panel-row.svelte-y4gy65:hover,.row.current.panel-row.svelte-y4gy65:focus-visible{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 34%, #fff)}.row.dead.svelte-y4gy65:not(.current){color:#991b1b;--si-idle:#991b1b}.row-actions.svelte-y4gy65{flex-shrink:0;align-items:center;gap:.125rem;margin-right:-.25rem;display:inline-flex}.row-btn{width:1.125rem;height:1.125rem;color:inherit;cursor:pointer;opacity:.6;background:0 0;border:none;border-radius:.25rem;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.row.panel-row.svelte-y4gy65:hover .row-btn,.row-btn:focus-visible{opacity:1}.row-btn:hover,.row-btn:focus-visible{background:var(--color-surface-hover,#0000001a);outline:none}.row.current.svelte-y4gy65 .row-btn:hover,.row.current.svelte-y4gy65 .row-btn:focus-visible{background:#00000014}.seg-group.svelte-akbq14{flex-shrink:0;align-items:stretch;display:flex}.seg.svelte-akbq14{border:1px solid color-mix(in srgb, var(--color-accent-blue,#3b82f6) 35%, #fff);color:#52606d;cursor:pointer;background:0 0;justify-content:center;align-items:center;padding:.15rem .275rem;line-height:1;transition:color .15s,border-color .15s,background-color .15s;display:inline-flex}.seg.svelte-akbq14 svg{display:block}.seg.svelte-akbq14:disabled{cursor:default;opacity:.6}.seg.left.svelte-akbq14{border-radius:9999px 0 0 9999px}.seg.right.svelte-akbq14{border-left-width:0;border-radius:0 9999px 9999px 0}.seg.svelte-akbq14:not(:disabled):hover{border-color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 12%, #fff)}.seg.svelte-akbq14:focus-visible{outline-offset:-2px;outline:2px solid #1e3a8a}.pane.svelte-1pi3b2j{flex-direction:column;flex:none;max-height:50%;margin-top:.125rem;display:flex}.panel-group.svelte-1pi3b2j{border:1px solid color-mix(in srgb, var(--color-accent-blue,#3b82f6) 35%, #fff);background:linear-gradient(180deg, color-mix(in srgb, var(--color-accent-blue,#3b82f6) 14%, #fff), color-mix(in srgb, var(--color-accent-blue,#3b82f6) 7%, #fff));border-radius:.5rem;flex-direction:column;flex:auto;gap:.125rem;min-height:0;padding:.25rem;display:flex}.panel-container.svelte-1pi3b2j{flex:auto;min-height:0;overflow-y:auto}.group-head-row.svelte-1pi3b2j{flex-shrink:0;align-items:center;gap:.25rem;min-width:0;display:flex}.group-head.svelte-1pi3b2j{min-width:0;color:var(--color-text-primary,#212529);cursor:pointer;background:0 0;border:none;border-radius:.375rem;flex:auto;align-items:center;gap:.375rem;padding:.25rem .375rem;font-size:.6875rem;line-height:1.25;transition:background-color .15s;display:flex}.group-head.svelte-1pi3b2j:hover{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 18%, #fff)}.group-head.svelte-1pi3b2j:focus-visible{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 18%, #fff);outline-offset:-2px;outline:2px solid #1e3a8a}.group-head.svelte-1pi3b2j svg{color:#1e3a8a;flex-shrink:0}.head-title.svelte-1pi3b2j{white-space:nowrap;color:#1e3a8a;flex:auto;align-items:center;min-width:0;font-weight:600;display:flex;overflow:hidden}.pill.svelte-mm9fzx{border:1px solid color-mix(in srgb, var(--color-accent-blue,#3b82f6) 35%, #fff);color:#52606d;cursor:pointer;white-space:nowrap;background:0 0;border-radius:9999px;align-items:center;gap:.25rem;max-width:9rem;padding:.25rem .5rem;font-size:.625rem;line-height:1;transition:color .15s,border-color .15s,background-color .15s;display:inline-flex}.pill.svelte-mm9fzx:hover{border-color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 12%, #fff)}.pill.on.svelte-mm9fzx{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 65%, #1e3a8a);border-color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 65%, #1e3a8a);color:#fff}.pill.count-only.svelte-mm9fzx:not(.on){color:var(--color-text-primary,#212529);background:#9acd32;border-color:#648520}.pill.count-only.svelte-mm9fzx:not(.on):hover{color:var(--color-text-primary,#212529);background:#83ae2b;border-color:#55711c}.pill.svelte-1f6ce44{border:1px solid color-mix(in srgb, var(--color-accent-blue,#3b82f6) 35%, #fff);color:#52606d;cursor:pointer;white-space:nowrap;background:0 0;border-radius:9999px;align-items:center;gap:.25rem;padding:.25rem;font-size:.625rem;line-height:1;transition:color .15s,border-color .15s,background-color .15s;display:inline-flex}.pill.svelte-1f6ce44:hover{border-color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 12%, #fff)}.blank-group.svelte-1f6ce44{flex-shrink:0;align-items:stretch;display:flex}.pill.left.svelte-1f6ce44{border-radius:9999px 0 0 9999px}.pill.mid.svelte-1f6ce44{border-left-width:0;border-radius:0}.pill.right.svelte-1f6ce44{border-left-width:0;border-radius:0 9999px 9999px 0}.pill.on.svelte-1f6ce44{color:var(--color-text-primary,#212529);background:#9acd32;border-color:#648520}.pill.on.svelte-1f6ce44:hover{color:var(--color-text-primary,#212529);background:#83ae2b;border-color:#55711c}.pill.svelte-1f6ce44 svg{flex-shrink:0}.pill.on.svelte-1f6ce44 svg{color:inherit}.icon-btn.svelte-zmx0en{width:22px;height:22px;color:var(--color-text-secondary,#6c757d);background:0 0;border-radius:.25rem;flex-shrink:0;justify-content:center;align-items:center;transition:color .15s,background-color .15s;display:inline-flex}.icon-btn.svelte-zmx0en:hover,.icon-btn.svelte-zmx0en:focus-visible{color:var(--color-accent-blue,#3b82f6);background:var(--color-surface-hover,#0000000d);outline:none}.panel.svelte-zmx0en{z-index:60;border:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface-elevated,#fff);border-radius:.5rem;flex-direction:column;gap:.5rem;padding:.75rem;display:flex;position:fixed;box-shadow:0 4px 16px #0000001f}.panel-head.svelte-zmx0en{justify-content:space-between;align-items:center;display:flex}.panel-title.svelte-zmx0en{color:var(--color-text-primary,#212529);font-size:.75rem;font-weight:600}.hidden-toggle.svelte-zmx0en{border:1px solid var(--color-surface-border,#dee2e6);color:var(--color-text-secondary,#6c757d);cursor:pointer;background:0 0;border-radius:999px;padding:.0625rem .5rem;font-size:.625rem}.hidden-toggle[aria-pressed=true].svelte-zmx0en{color:var(--color-accent-blue,#3b82f6);border-color:var(--color-accent-blue,#3b82f6)}.crumbs.svelte-zmx0en{white-space:nowrap;align-items:center;gap:.125rem;padding-bottom:.125rem;display:flex;overflow-x:auto}.crumb.svelte-zmx0en{color:var(--color-accent-blue,#3b82f6);cursor:pointer;background:0 0;border:none;border-radius:.25rem;align-items:center;gap:.1875rem;padding:.0625rem .25rem;font-size:.6875rem;display:inline-flex}.crumb.svelte-zmx0en:hover{background:var(--color-surface-hover,#0000000d)}.crumb.current.svelte-zmx0en{color:var(--color-text-primary,#212529);cursor:default;font-weight:600}.crumb-sep.svelte-zmx0en{color:var(--color-text-secondary,#6c757d);flex-shrink:0}.rows.svelte-zmx0en{border:1px solid var(--color-surface-border,#dee2e6);border-radius:.375rem;flex-direction:column;max-height:240px;padding:.25rem;display:flex;overflow-y:auto}.row.svelte-zmx0en{width:100%;color:var(--color-text-primary,#212529);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:.25rem;align-items:center;gap:.375rem;padding:.3125rem .375rem;font-size:.75rem;display:flex}.row.svelte-zmx0en:hover,.row.svelte-zmx0en:focus-visible{background:var(--color-surface-hover,#0000000d);outline:none}.row.hidden.svelte-zmx0en{opacity:.55}.row-name.svelte-zmx0en{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.row-chev.svelte-zmx0en{color:var(--color-text-secondary,#6c757d);flex-shrink:0}.hint.svelte-zmx0en{color:var(--color-text-secondary,#6c757d);font-size:.6875rem}.panel-actions.svelte-zmx0en{justify-content:flex-end;gap:.375rem;display:flex}.btn.svelte-zmx0en{cursor:pointer;border-radius:.375rem;padding:.375rem .75rem;font-size:.75rem}.btn.ghost.svelte-zmx0en{border:1px solid var(--color-surface-border,#dee2e6);color:var(--color-text-secondary,#6c757d);background:0 0}.btn.ghost.svelte-zmx0en:hover{color:var(--color-text-primary,#212529)}.btn.solid.svelte-zmx0en{border:1px solid var(--color-accent-blue,#3b82f6);background:var(--color-accent-blue,#3b82f6);color:#fff;font-weight:500}.btn.solid.svelte-zmx0en:disabled,.btn.ghost.svelte-zmx0en:disabled{opacity:.55;cursor:default}.target.svelte-zmx0en{color:var(--color-text-secondary,#6c757d);overflow-wrap:anywhere;margin:0;font-size:.625rem}.mono.svelte-zmx0en{font-family:ui-monospace,monospace;font-weight:400}.error.svelte-zmx0en{color:var(--color-status-fail,#ef4444);overflow-wrap:anywhere;font-size:.6875rem}.meta.svelte-xp425j{flex-shrink:0;align-items:center;gap:.25rem;display:flex}.menu.svelte-1x5rzx5{background:var(--color-surface-elevated,#fff);border:1px solid var(--color-surface-border,#dee2e6);border-radius:.5rem;flex-direction:column;gap:.25rem;min-width:13rem;max-width:16rem;padding:.375rem;display:flex;box-shadow:0 .5rem 1.25rem #00000026}.row.svelte-1x5rzx5{width:100%;color:var(--color-text-primary,#212529);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:.375rem;padding:.375rem .5rem;font-size:.75rem;line-height:1.3;display:block}.row.svelte-1x5rzx5:hover:not(:disabled),.row.svelte-1x5rzx5:focus-visible:not(:disabled){background:var(--color-surface-hover,#e9ecef)}.row.svelte-1x5rzx5:disabled{opacity:.5;cursor:default}.row.danger.svelte-1x5rzx5{color:var(--color-accent-rose,#f43f5e)}.row.danger.svelte-1x5rzx5:hover:not(:disabled),.row.danger.svelte-1x5rzx5:focus-visible:not(:disabled){background:color-mix(in srgb, var(--color-accent-rose,#f43f5e) 12%, transparent)}.row.primary.svelte-1x5rzx5{color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 60%, #1e3a8a);font-weight:600}.pane.svelte-1x5rzx5{flex-direction:column;gap:.375rem;display:flex}.pane.svelte-1x5rzx5 input:where(.svelte-1x5rzx5){border:1px solid var(--color-surface-border,#dee2e6);width:100%;color:var(--color-text-primary,#212529);background:var(--color-surface-elevated,#fff);border-radius:.375rem;padding:.375rem .5rem;font-size:.75rem}.row-set.svelte-1x5rzx5{justify-content:flex-end;gap:.25rem;display:flex}.cost.svelte-1x5rzx5{color:var(--color-text-secondary,#6c757d);margin:0;font-size:.6875rem;line-height:1.35}.error.svelte-1x5rzx5{color:var(--color-accent-rose,#f43f5e);margin:0;font-size:.6875rem}.header.svelte-1x74v2r{align-items:center;gap:.25rem;min-width:0;display:flex;position:relative}.header.svelte-1x74v2r .ws-chip.menuable{cursor:context-menu}.header.svelte-1x74v2r .ws-chip.menuable:hover{--wsc-border:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 80%, #1e3a8a)}.header.svelte-1x74v2r .ws-chip.ghost{--wsc-bg:transparent}.menu-anchor.svelte-1x74v2r{z-index:40;position:absolute;top:100%;left:.375rem}.head.svelte-1x74v2r{min-width:0;color:var(--color-text-primary,#212529);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:.375rem;flex:auto;align-items:center;gap:.375rem;padding:.25rem .375rem;font-size:.6875rem;line-height:1.25;transition:background-color .15s;display:flex}.head.svelte-1x74v2r:hover{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 18%, #fff)}.head.svelte-1x74v2r:focus-visible{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 18%, #fff);outline:2px solid color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);outline-offset:-2px}.head.svelte-1x74v2r>svg{color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);flex-shrink:0}.chip.svelte-1x74v2r{vertical-align:middle;white-space:nowrap;border:1px solid #0000;border-radius:9999px;align-items:center;gap:.1875rem;max-width:6.5rem;padding:.15rem .375rem;font-size:.75em;line-height:1;display:inline-flex}.chip.svelte-1x74v2r svg{flex-shrink:0}.chip-label.svelte-1x74v2r{text-overflow:ellipsis;min-width:0;overflow:hidden}.chip.agent.svelte-1x74v2r{color:color-mix(in srgb, var(--color-accent-purple,#8b5cf6) 50%, #4c1d95);border-color:color-mix(in srgb, var(--color-accent-purple,#8b5cf6) 50%, #4c1d95);background:color-mix(in srgb, var(--color-accent-purple,#8b5cf6) 8%, transparent)}.summary.svelte-1x74v2r{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);font-weight:600;overflow:hidden}.placeholder.svelte-1x74v2r{color:var(--color-text-secondary,#6c757d);font-weight:400}.pill.svelte-1wj0ebt{border:1px solid color-mix(in srgb, var(--color-accent-blue,#3b82f6) 35%, #fff);color:#52606d;cursor:pointer;white-space:nowrap;background:0 0;border-radius:9999px;align-items:center;gap:.25rem;max-width:9rem;padding:.25rem .5rem;font-size:.625rem;line-height:1;transition:color .15s,border-color .15s,background-color .15s;display:inline-flex}.pill.svelte-1wj0ebt:hover{border-color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 12%, #fff)}.pill.on.svelte-1wj0ebt{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 65%, #1e3a8a);border-color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 65%, #1e3a8a);color:#fff}.pill.preset.reg.svelte-1wj0ebt:not(.on){color:color-mix(in srgb, var(--color-accent-purple,#8b5cf6) 50%, #4c1d95);border-color:color-mix(in srgb, var(--color-accent-purple,#8b5cf6) 50%, #4c1d95);background:color-mix(in srgb, var(--color-accent-purple,#8b5cf6) 8%, transparent)}.pill.preset.reg.svelte-1wj0ebt:not(.on):hover{color:color-mix(in srgb, var(--color-accent-purple,#8b5cf6) 50%, #4c1d95);border-color:color-mix(in srgb, var(--color-accent-purple,#8b5cf6) 50%, #4c1d95);background:color-mix(in srgb, var(--color-accent-purple,#8b5cf6) 12%, #fff)}.pill.preset.on.svelte-1wj0ebt{background:color-mix(in srgb, var(--color-accent-purple,#8b5cf6) 75%, #4c1d95);border-color:color-mix(in srgb, var(--color-accent-purple,#8b5cf6) 75%, #4c1d95);color:#fff}.pill.svelte-1wj0ebt svg{flex-shrink:0}.pill.on.svelte-1wj0ebt svg{color:inherit}.label.svelte-1wj0ebt{text-overflow:ellipsis;min-width:0;overflow:hidden}.count.svelte-1wj0ebt{font-variant-numeric:tabular-nums;flex-shrink:0;font-size:.5625rem}.pill.svelte-dam7rh{cursor:pointer;--wsc-fg:#52606d;--wsc-border:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 35%, #fff);--wsc-bg:transparent;--wsc-font-size:.625rem;--wsc-padding:.25rem .5rem;--wsc-gap:.25rem;--wsc-max-width:9rem;background:0 0;border:none;padding:0;display:inline-flex}.pill.svelte-dam7rh:not(.on):hover{--wsc-fg:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);--wsc-border:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);--wsc-bg:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 12%, #fff)}.pill.reg.svelte-dam7rh:not(.on){--wsc-fg:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);--wsc-border:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);--wsc-bg:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 8%, transparent)}.pill.on.svelte-dam7rh{--wsc-fg:#fff;--wsc-border:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 65%, #1e3a8a);--wsc-bg:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 65%, #1e3a8a)}.pill.ghost.svelte-dam7rh:not(.on){--wsc-border:#52606d73}.pill.ghost.svelte-dam7rh:not(.on):hover{--wsc-fg:#495057;--wsc-border:#52606d}.pill.ghost.on.svelte-dam7rh{--wsc-fg:#495057;--wsc-border:#52606d;--wsc-bg:var(--color-surface-hover,#e9ecef)}.count.svelte-dam7rh{font-variant-numeric:tabular-nums;flex-shrink:0;font-size:.5625rem}.divider.svelte-dam7rh{background:var(--color-surface-border,#dee2e6);flex-shrink:0;width:1px;height:.75rem}.filters.svelte-txyks4{border:1px solid color-mix(in srgb, var(--color-accent-blue,#3b82f6) 35%, #fff);background:linear-gradient(135deg,#0000,#6d05ff42);border-radius:.5rem;flex-direction:column;align-items:stretch;gap:.25rem;min-width:0;margin:.125rem 0;padding:.25rem;display:flex}.pills.svelte-txyks4{flex-wrap:wrap;align-items:center;gap:.25rem;min-width:0;display:flex}.row.svelte-vv7jet{min-width:0;color:var(--color-text-primary,#212529);border-radius:.375rem;align-items:center;gap:.3rem;padding:.3rem .5rem;font-size:.75rem;transition:background-color .15s;display:flex}.row.child.svelte-vv7jet .label{font-size:.6875rem}a.row.svelte-vv7jet:hover,a.row.svelte-vv7jet:focus-visible{background:var(--color-surface-hover,#e9ecef);outline:none}.time.svelte-vv7jet{color:var(--color-text-muted,#adb5bd);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:.625rem}.cal.svelte-qbc0wr{z-index:50;background:var(--color-surface-elevated,#fff);border:1px solid var(--color-surface-border,#dee2e6);-webkit-user-select:none;user-select:none;border-radius:.5rem;width:14rem;margin-top:.25rem;padding:.5rem;position:absolute;top:100%;right:0;box-shadow:0 .5rem 1rem #00000026}.cal-head.svelte-qbc0wr{justify-content:space-between;align-items:center;margin-bottom:.25rem;padding:0 .25rem;display:flex}.cal-nav.svelte-qbc0wr{color:var(--color-text-secondary,#6c757d);cursor:pointer;background:0 0;border:none;border-radius:.25rem;justify-content:center;align-items:center;padding:.25rem;transition:background-color .15s,color .15s;display:inline-flex}.cal-nav.svelte-qbc0wr:hover{background:var(--color-surface-hover,#e9ecef);color:var(--color-text-primary,#212529)}.cal-month.svelte-qbc0wr{color:var(--color-text-primary,#212529);font-size:.6875rem;font-weight:600}.cal-row.svelte-qbc0wr{text-align:center;grid-template-columns:repeat(7,1fr);display:grid}.cal-days.svelte-qbc0wr{margin-bottom:.125rem}.cal-day-head.svelte-qbc0wr{color:var(--color-text-secondary,#6c757d);padding:.125rem 0;font-size:.5625rem;font-weight:600}.cal-day.svelte-qbc0wr{width:1.75rem;height:1.75rem;color:var(--color-text-secondary,#6c757d);cursor:pointer;background:0 0;border:none;border-radius:.25rem;flex-direction:column;justify-content:center;align-items:center;margin:0 auto;font-size:.625rem;transition:background-color .15s;display:flex;position:relative}.cal-day.svelte-qbc0wr:hover{background:var(--color-surface-hover,#e9ecef)}.cal-day.empty.svelte-qbc0wr{cursor:default;background:0 0}.cal-day.selected.svelte-qbc0wr{background:var(--color-accent-purple,#8b5cf6);color:#fff;font-weight:600}.cal-day.today.svelte-qbc0wr{color:var(--color-accent-purple,#8b5cf6);font-weight:600}.cal-dot.svelte-qbc0wr{background:var(--color-accent-purple,#8b5cf6);border-radius:9999px;width:.25rem;height:.25rem;position:absolute;bottom:.125rem;left:50%;transform:translate(-50%)}.cal-foot.svelte-qbc0wr{border-top:1px solid color-mix(in srgb, var(--color-surface-border,#dee2e6) 30%, transparent);justify-content:center;margin-top:.25rem;padding-top:.25rem;display:flex}.cal-clear.svelte-qbc0wr{color:var(--color-text-secondary,#6c757d);cursor:pointer;background:0 0;border:none;padding:.125rem .5rem;font-size:.625rem;transition:color .15s}.cal-clear.svelte-qbc0wr:hover{color:var(--color-text-primary,#212529)}.wrap.svelte-tnppsm{flex-shrink:0;position:relative}.badge.svelte-tnppsm{border:1px solid color-mix(in srgb, var(--color-surface-border,#dee2e6) 75%, transparent);background:var(--color-surface-elevated,#fff);height:1.375rem;color:var(--color-text-secondary,#6c757d);border-radius:.375rem;align-items:center;gap:.125rem;padding:0 .25rem 0 .375rem;font-size:.6875rem;transition:color .15s,background-color .15s;display:flex}.badge.svelte-tnppsm:hover{background:var(--color-surface-hover,#e9ecef)}.badge.active.svelte-tnppsm{color:#8a2be2}.trigger.svelte-tnppsm{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;align-items:center;padding:0;display:inline-flex}.trigger.svelte-tnppsm:focus-visible{outline-offset:1px;border-radius:.25rem;outline:2px solid #1e3a8a}.label.svelte-tnppsm{white-space:nowrap;line-height:1}.clear.svelte-tnppsm{color:var(--color-text-secondary,#6c757d);cursor:pointer;background:0 0;border:none;border-radius:.25rem;justify-content:center;align-items:center;padding:.125rem;transition:color .15s,background-color .15s;display:inline-flex}.clear.svelte-tnppsm:hover{color:var(--color-status-fail,#ef4444);background:#ef44441a}.anchor.svelte-tnppsm{position:relative}.pane.svelte-1ckjre5{flex-direction:column;flex:auto;min-height:0;display:flex}.spine-group.svelte-1ckjre5{border:1px solid color-mix(in srgb, var(--color-surface-border,#dee2e6) 75%, transparent);background:linear-gradient(45deg,#10b98142,#0000);border-radius:.5rem;flex-direction:column;flex:1;gap:.125rem;min-height:0;padding:.25rem;display:flex}.group-head.svelte-1ckjre5{flex-shrink:0;align-items:center;gap:.25rem;min-width:0;display:flex}.group-toggle.svelte-1ckjre5{min-width:0;color:var(--color-text-primary,#212529);cursor:pointer;background:0 0;border:none;border-radius:.375rem;flex-shrink:0;align-items:center;gap:.25rem;padding:.1875rem .375rem;font-size:.6875rem;font-weight:600;line-height:1.25;transition:background-color .15s;display:inline-flex}.group-toggle.svelte-1ckjre5:hover{background:var(--color-surface-hover,#e9ecef)}.group-toggle.svelte-1ckjre5:focus-visible{background:var(--color-surface-hover,#e9ecef);outline-offset:-2px;outline:2px solid #1e3a8a}.group-toggle.svelte-1ckjre5 svg{color:var(--color-text-secondary,#6c757d);flex-shrink:0}.head-title.svelte-1ckjre5{text-overflow:ellipsis;white-space:nowrap;color:#8a2be2;min-width:0;overflow:hidden}.filter-input.svelte-1ckjre5{border:1px solid color-mix(in srgb, var(--color-surface-border,#dee2e6) 75%, transparent);background:var(--color-surface-elevated,#fff);min-width:0;height:1.375rem;color:var(--color-text-primary,#212529);border-radius:.375rem;flex:1;padding:0 .375rem;font-size:.6875rem}.filter-input.svelte-1ckjre5::placeholder{color:var(--color-text-secondary,#6c757d)}.filter-input.svelte-1ckjre5:focus-visible{outline-offset:-1px;outline:2px solid #1e3a8a}.row-btn.svelte-1ckjre5{width:1.125rem;height:1.125rem;color:var(--color-text-primary,#212529);cursor:pointer;opacity:.6;background:0 0;border:none;border-radius:.25rem;flex-shrink:0;justify-content:center;align-items:center;transition:background-color .15s,opacity .15s;display:inline-flex}.row-btn.svelte-1ckjre5:hover,.row-btn.svelte-1ckjre5:focus-visible{opacity:1;background:var(--color-surface-hover,#e9ecef);outline:none}.row-btn.active.svelte-1ckjre5{opacity:1;color:#1e3a8a}.group-rows.svelte-1ckjre5{flex-direction:column;flex:auto;gap:.125rem;min-height:0;display:flex;overflow-y:auto}.hint.svelte-1ckjre5{color:var(--color-text-secondary,#6c757d);padding:.5rem;font-size:.6875rem}hr.svelte-1k0m3nb{border:none;border-top:1px solid color-mix(in srgb, var(--color-surface-border,#dee2e6) 75%, transparent);flex-shrink:0;margin:0}.list.svelte-1k0m3nb{flex-direction:column;flex:1;gap:.125rem;min-height:0;display:flex;overflow:hidden}.new-chat.svelte-lgkb7b{border:1px solid color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 15%, #fff);color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);cursor:pointer;border-radius:.375rem;transition:background-color .15s,border-color .15s}.new-chat.svelte-lgkb7b:not(:disabled):hover{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 22%, #fff);border-color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 65%, #1e3a8a);color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 55%, #1e3a8a)}.new-chat.svelte-lgkb7b:disabled{cursor:default;opacity:.6}.seg-group.svelte-lgkb7b{flex-shrink:0;align-items:stretch;display:flex}.seg.svelte-lgkb7b{border:1px solid color-mix(in srgb, var(--color-accent-blue,#3b82f6) 35%, #fff);color:#52606d;cursor:pointer;white-space:nowrap;background:0 0;align-items:center;padding:.15rem .35rem;font-size:.6rem;line-height:1;transition:color .15s,border-color .15s,background-color .15s;display:inline-flex}.seg.svelte-lgkb7b:disabled{cursor:default;opacity:.6}.seg.left.svelte-lgkb7b{border-radius:9999px 0 0 9999px}.seg.right.svelte-lgkb7b{border-left-width:0;border-radius:0 9999px 9999px 0}.seg.svelte-lgkb7b:not(:disabled):hover{border-color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 12%, #fff)}.seg.on.svelte-lgkb7b{color:var(--color-text-primary,#212529);background:#9acd32;border-color:#648520}.seg.on.svelte-lgkb7b:not(:disabled):hover{color:var(--color-text-primary,#212529);background:#83ae2b;border-color:#55711c}.slash-menu.svelte-hiff6x{z-index:5;background:var(--color-surface-elevated,#fff);border:1px solid var(--color-surface-border,#dee2e6);border-radius:.5rem .5rem 0 0;flex-direction:column;max-height:calc(100dvh - 10rem);font-size:.75rem;display:flex;position:absolute;bottom:100%;left:0;right:0;overflow-y:auto;box-shadow:0 -6px 16px #0000001f}.slash-section-label.svelte-hiff6x{color:var(--color-text-muted,#868e96);text-transform:uppercase;letter-spacing:.04em;align-items:baseline;gap:.375rem;padding:.375rem .5rem .125rem;font-size:.625rem;font-weight:600;display:flex}.slash-section-kind.svelte-hiff6x{text-transform:none;letter-spacing:0;color:var(--color-text-muted,#adb5bd);text-overflow:ellipsis;white-space:nowrap;font-weight:400;overflow:hidden}.slash-row.svelte-hiff6x{width:100%;color:var(--color-text-primary,#212529);cursor:pointer;text-align:left;background:0 0;border:none;align-items:baseline;gap:.375rem;padding:.125rem .5rem;font-size:.75rem;display:flex}.slash-row.svelte-hiff6x:hover,.slash-row.active.svelte-hiff6x{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 10%, transparent)}.slash-name.svelte-hiff6x{flex-shrink:0;font-weight:600}.slash-desc.svelte-hiff6x{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--color-text-secondary,#6c757d);overflow:hidden}.slash-hint.svelte-hiff6x{color:var(--color-text-muted,#adb5bd);text-overflow:ellipsis;white-space:nowrap;flex-basis:100%;font-size:.6875rem;overflow:hidden}.slash-row.svelte-hiff6x{flex-wrap:wrap}.slash-badge.svelte-hiff6x{background:var(--color-surface-hover,#e9ecef);color:var(--color-text-secondary,#6c757d);border-radius:9999px;flex-shrink:0;padding:0 .3rem;font-size:.625rem;line-height:1.4}.slash-status.svelte-hiff6x{color:var(--color-text-muted,#868e96);padding:.375rem .5rem}.slash-error.svelte-hiff6x{color:#b91c1c}.strip-tip.svelte-xf8nks{z-index:10002;background:var(--color-surface-elevated,#fff);border:1px solid var(--color-surface-border,#dee2e6);pointer-events:none;border-radius:.375rem;padding:.25rem;position:fixed;transform:translateY(-100%);box-shadow:0 4px 12px #0000001f}.strip-tip-md.svelte-xf8nks{word-break:break-word;max-height:70vh;color:var(--color-text-primary,#212529);margin:0;padding:.25rem .375rem;font-family:inherit;font-size:.75rem;line-height:1.4;overflow-y:auto}.strip-tip-md.svelte-xf8nks p:first-child{margin-top:0}.strip-tip-md.svelte-xf8nks p:last-child{margin-bottom:0}.strip-tip-md.svelte-xf8nks p,.strip-tip-md.svelte-xf8nks ul,.strip-tip-md.svelte-xf8nks ol{margin:.25em 0}.strip-tip-md.svelte-xf8nks code{font-size:.6875rem}.strip-chip.svelte-1ylllv7{background:var(--color-surface,#f8f9fa);align-items:center;width:100%;max-width:100%;display:flex;position:relative}.strip-chip.active.svelte-1ylllv7{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 10%, transparent)}.strip-pick.svelte-1ylllv7{color:var(--color-text-primary,#212529);cursor:pointer;text-align:left;background:0 0;border:none;flex:1;align-items:center;gap:.375rem;min-width:0;max-width:100%;padding:.125rem .5rem;font-size:.75rem;display:flex}.strip-label.svelte-1ylllv7{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.hl.svelte-1ylllv7{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;-webkit-text-decoration-color:var(--color-accent-blue,#3b82f6);text-decoration-color:var(--color-accent-blue,#3b82f6);text-underline-offset:2px;background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 14%, transparent);border-radius:2px}.strip-ml.svelte-1ylllv7,.strip-count.svelte-1ylllv7{color:var(--color-text-muted,#868e96);flex-shrink:0}.strip-menu.svelte-1ylllv7,.strip-step.svelte-1ylllv7{flex-shrink:0;position:relative}.strip-step-btn.svelte-1ylllv7{color:var(--color-text-muted,#868e96);cursor:pointer;background:0 0;border:none;padding:.125rem .25rem;font-size:.75rem;line-height:1}.strip-step-btn.svelte-1ylllv7:hover{color:var(--color-accent-blue,#3b82f6)}.strip-menu-btn.svelte-1ylllv7{color:var(--color-text-muted,#868e96);cursor:pointer;background:0 0;border:none;padding:.125rem .25rem;font-size:.75rem;line-height:1}.strip-menu-btn.svelte-1ylllv7:hover{color:var(--color-text-primary,#212529)}.strip-menu-pop.svelte-1ylllv7{z-index:10001;background:var(--color-surface-elevated,#fff);border:1px solid var(--color-surface-border,#dee2e6);border-radius:.375rem;padding:.5rem;position:fixed;box-shadow:0 4px 12px #0000001f}.strip-menu-form.svelte-1ylllv7{flex-direction:column;gap:.375rem;display:flex}.strip-menu-field.svelte-1ylllv7{color:var(--color-text-muted,#868e96);flex-direction:column;gap:.125rem;font-size:.75rem;display:flex}.strip-menu-input.svelte-1ylllv7{border:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface-elevated,#fff);color:var(--color-text-primary,#212529);border-radius:.25rem;padding:.25rem .375rem;font-size:.75rem}.strip-menu-text.svelte-1ylllv7{border:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface-elevated,#fff);color:var(--color-text-primary,#212529);white-space:nowrap;resize:none;box-sizing:border-box;border-radius:.25rem;width:100%;padding:.25rem .375rem;font-size:.75rem;overflow-x:auto}.strip-menu-actions.svelte-1ylllv7{gap:.5rem;margin-top:.5rem;display:flex}.strip-menu-save.svelte-1ylllv7{background:var(--color-accent-blue,#3b82f6);color:#fff;cursor:pointer;border:none;border-radius:.25rem;flex:1;padding:.25rem .5rem;font-size:.75rem}.strip-menu-save.svelte-1ylllv7:hover{background:#2563eb}.strip-menu-delete.svelte-1ylllv7{border:1px solid var(--color-surface-border,#dee2e6);color:var(--color-text-primary,#212529);cursor:pointer;background:0 0;border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem}.strip-menu-delete.svelte-1ylllv7:hover{background:var(--color-surface-hover,#e9ecef)}.strip-manage.svelte-rgc8xj{color:var(--color-text-muted,#868e96);cursor:pointer;white-space:nowrap;background:0 0;border:none;align-self:flex-start;padding:.125rem .5rem;font-size:.75rem}.strip-manage.svelte-rgc8xj:hover{color:var(--color-accent-blue,#3b82f6)}.strip-tag-chips.svelte-1dki9fw{border-top:1px solid #8b5cf61f;flex-wrap:wrap;gap:.25rem;padding:.375rem .625rem;display:flex}.strip-tag-chip.svelte-1dki9fw{border:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface,#f8f9fa);color:var(--color-text-secondary,#495057);cursor:pointer;border-radius:.625rem;align-items:center;gap:.25rem;padding:0 .5rem;font-size:.6875rem;line-height:1.25rem;display:inline-flex}.strip-tag-chip.on.svelte-1dki9fw{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 14%, transparent);border-color:var(--color-accent-blue,#3b82f6);color:var(--color-accent-blue,#3b82f6);font-weight:600}.strip-tag-chip.svelte-1dki9fw input:where(.svelte-1dki9fw){accent-color:var(--color-accent-blue,#3b82f6);margin:0}.suggest-strip.svelte-17pdojr{z-index:5;background:var(--color-surface-elevated,#fff);flex-direction:column;max-height:calc(100dvh - 8rem);font-size:.75rem;display:flex;position:absolute;bottom:100%;left:0;right:0;overflow-y:auto;box-shadow:0 -6px 16px #0000001f}button.svelte-ec7sz9 svg{color:inherit}.footer.svelte-x4ykdr{border-top:1px solid var(--color-surface-border,#dee2e6);flex-direction:column;gap:.5rem;padding:.5rem;display:flex}.footer-create.svelte-x4ykdr{flex-direction:column;gap:.375rem;display:flex}.footer-create-strip.svelte-x4ykdr{align-items:center;gap:.375rem;display:flex}.footer-create-alert.svelte-x4ykdr{color:var(--color-amber-600,#d97706);justify-content:space-between;align-items:center;gap:.5rem;font-size:.75rem;display:flex}.footer-create-alert-close.svelte-x4ykdr{color:var(--color-amber-700,#b45309);cursor:pointer;border-radius:.125rem;flex-shrink:0;line-height:1}.footer-create-alert-close.svelte-x4ykdr:hover{background:var(--color-amber-100,#fef3c7);color:var(--color-amber-900,#78350f)}.footer-version.svelte-x4ykdr{letter-spacing:.05em;color:var(--color-text-secondary,#6c757d);white-space:nowrap;flex-direction:column;flex-shrink:0;gap:.0625rem;font-size:.625rem;font-weight:600;line-height:1.2;display:flex}.sessions.svelte-1nppouf{flex-direction:column;flex:1;min-height:0;display:flex}.hint.svelte-1nppouf{color:var(--color-text-secondary,#6c757d);padding:.5rem;font-size:.6875rem}.hint.error.svelte-1nppouf{color:var(--color-status-fail,#ef4444)}.rail-header-group.svelte-ild1n1{align-items:center;gap:.375rem;min-width:0;margin-right:auto;display:flex}.rail-title.svelte-ild1n1{text-transform:uppercase;letter-spacing:.05em;color:#4b5563;white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;font-weight:600;overflow:hidden}.rail-header-actions.svelte-ijmtbh{flex-shrink:0;align-items:center;display:flex}.icon-btn.svelte-ijmtbh{width:22px;height:22px;color:var(--color-text-secondary,#6c757d);background:0 0;border-radius:.25rem;flex-shrink:0;justify-content:center;align-items:center;transition:color .15s,background-color .15s;display:inline-flex}.icon-btn.svelte-ijmtbh:hover,.icon-btn.svelte-ijmtbh:focus-visible{color:var(--color-accent-purple,#8b5cf6);background:var(--color-surface-hover,#0000000d);outline:none}.about-backdrop.svelte-2dj481{z-index:10007;background:#0006;position:fixed;inset:0}.about-modal.svelte-2dj481{z-index:10008;text-align:center;--about-gradient:linear-gradient(120deg, #ffe9d6, #c7ddf8, #e4d5f7, #c3f0dc, #ffe9d6);background:var(--about-gradient);border:1px solid var(--color-surface-border,#dee2e6);background-size:300% 300%;border-radius:.5rem;width:90%;max-width:24rem;padding:1.25rem 1.5rem 1.5rem;animation:12s ease-in-out infinite svelte-2dj481-about-gradient-pan;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 4px 16px #0000001f}@keyframes svelte-2dj481-about-gradient-pan{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}@media (prefers-reduced-motion:reduce){.about-modal.svelte-2dj481{animation:none}}.about-close.svelte-2dj481{width:20px;height:20px;color:var(--color-text-secondary,#6c757d);cursor:pointer;background:0 0;border-radius:.25rem;justify-content:center;align-items:center;font-size:.875rem;line-height:1;display:inline-flex;position:absolute;top:.5rem;right:.5rem}.about-close.svelte-2dj481:hover{color:var(--color-text-primary,#212529);background:var(--color-surface-hover,#0000000d)}.about-title.svelte-2dj481{letter-spacing:.06em;color:var(--color-text-primary,#212529);margin:0;font-size:1.125rem;font-weight:700}.about-subtitle.svelte-2dj481{color:#4b5563;margin:.5rem 0 0;font-size:.8125rem;font-weight:500}.about-credit.svelte-2dj481{color:#4b5563;margin:1rem 0 0;font-size:.75rem}.about-link.svelte-2dj481{color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);margin-top:.375rem;font-size:.75rem;text-decoration:none;display:inline-block}.about-link.svelte-2dj481:hover{text-decoration:underline}.about-trigger.svelte-1djxfw6{width:18px;height:18px;color:var(--color-accent-purple,#8b5cf6);border:1.5px solid var(--color-accent-purple,#8b5cf6);cursor:pointer;background:#ffffff8c;border-radius:9999px;flex-shrink:0;justify-content:center;align-items:center;font-size:.625rem;font-weight:700;line-height:1;transition:color .15s,box-shadow .15s;animation:8s ease-in-out infinite svelte-1djxfw6-about-ring-cycle;display:inline-flex;box-shadow:0 0 0 2px #8b5cf62e}@keyframes svelte-1djxfw6-about-ring-cycle{0%,to{background:#ffffff8c;border-color:#8b5cf6}25%{background:#ffe9d6bf;border-color:#f6ad7b}50%{background:#c7ddf8bf;border-color:#60a5fa}75%{background:#c3f0dcbf;border-color:#34d399}}.about-trigger.svelte-1djxfw6:hover,.about-trigger.svelte-1djxfw6:focus-visible{color:#7c3aed;background:#ffffffd9;border-color:#7c3aed;outline:none;animation:none;box-shadow:0 0 0 3px #8b5cf659}@media (prefers-reduced-motion:reduce){.about-trigger.svelte-1djxfw6{animation:none}}.rail-header.svelte-184i93r{--rail-gradient:linear-gradient(120deg, #ffe9d6, #c7ddf8, #e4d5f7, #c3f0dc, #ffe9d6);background:var(--rail-gradient);background-size:300% 300%;border:thin solid #ffa9003d;border-radius:.25rem;justify-content:space-between;align-items:center;gap:.375rem;padding:.5rem;animation:12s ease-in-out infinite svelte-184i93r-rail-header-gradient;display:flex}@keyframes svelte-184i93r-rail-header-gradient{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}@media (prefers-reduced-motion:reduce){.rail-header.svelte-184i93r{animation:none}}.rail-wrap.svelte-113gpvg{flex-shrink:0;height:100%;min-height:0;display:flex}.rail.svelte-113gpvg{background:var(--color-surface-elevated,#fff);flex-direction:column;flex:1;min-width:0;height:100%;min-height:0;display:flex;overflow:hidden}.rail-embedded.svelte-113gpvg{width:100%}.rail-collapsed.svelte-113gpvg{--rail-gradient:linear-gradient(120deg, #ffe9d6, #c7ddf8, #e4d5f7, #c3f0dc, #ffe9d6);background:var(--rail-gradient);background-size:300% 300%;animation:12s ease-in-out infinite svelte-113gpvg-rail-header-gradient}@keyframes svelte-113gpvg-rail-header-gradient{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}@media (prefers-reduced-motion:reduce){.rail-collapsed.svelte-113gpvg{animation:none}}.rail-collapsed.svelte-113gpvg{border:none;border-right:1px solid var(--color-surface-border,#dee2e6);color:#4b5563;flex-direction:column;flex-shrink:0;align-items:center;gap:.25rem;width:34px;min-width:34px;height:100%;padding:.5rem 0;display:flex}.stub-expand.svelte-113gpvg{min-height:0;color:inherit;cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;align-items:center;gap:.25rem;transition:color .15s,background-color .15s;display:flex}.stub-expand.svelte-113gpvg:hover,.stub-expand.svelte-113gpvg:focus-visible{color:var(--color-accent-purple,#8b5cf6);background:var(--color-surface-hover,#00000008);outline:none}.rail-collapsed.svelte-113gpvg .rail-collapsed-label{text-transform:uppercase;letter-spacing:.05em;writing-mode:vertical-rl;font-size:.5625rem;font-weight:600}.rail-gutter.svelte-113gpvg{cursor:col-resize;flex-shrink:0;width:6px;transition:background-color .15s}.rail-gutter.svelte-113gpvg:hover{background:var(--color-accent-blue,#3b82f6);opacity:.25}.stick-toggle.svelte-fe1hyx{width:1.5rem;height:1.5rem;color:var(--color-text-secondary,#6c757d);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;padding:0;transition:color .15s,border-color .15s,background-color .15s;display:flex}.stick-toggle.svelte-fe1hyx:hover{color:maroon;border-color:#80000066}.stick-toggle.on.svelte-fe1hyx{color:maroon;background:#80000014;border-color:#80000073}.stick-toggle.svelte-fe1hyx svg{color:inherit;flex-shrink:0}.streaming-indicator.svelte-5t6kwy{color:#ef4444;pointer-events:none;align-items:center;gap:4px;display:flex;position:absolute;bottom:1rem;right:.25rem;transform:translateY(50%)}.streaming-indicator.centered.svelte-5t6kwy{position:static;bottom:auto;right:auto;transform:none}.dot.svelte-5t6kwy{background:currentColor;border-radius:50%;width:7px;height:7px;animation:1.4s ease-in-out infinite svelte-5t6kwy-dot-bounce}.dot-2.svelte-5t6kwy{animation-delay:.2s}.dot-3.svelte-5t6kwy{animation-delay:.4s}@keyframes svelte-5t6kwy-dot-bounce{0%,80%,to{opacity:.2;transform:scale(.7)}40%{opacity:1;transform:scale(1.2)}}.command-help.svelte-1tbbgiz{z-index:5;background:var(--color-surface-elevated,#fff);border:1px solid var(--color-surface-border,#dee2e6);color:var(--color-text-secondary,#6c757d);border-radius:.5rem .5rem 0 0;flex-direction:column;gap:.375rem;padding:.5rem .625rem;font-size:.75rem;display:flex;position:absolute;bottom:100%;left:0;right:0;box-shadow:0 -6px 16px #0000001f}.help-usage.svelte-1tbbgiz{align-items:center;gap:.5rem;display:flex}.help-usage.svelte-1tbbgiz code:where(.svelte-1tbbgiz){color:var(--color-text-primary,#212529);font-size:.8125rem;font-weight:600}.help-tag.svelte-1tbbgiz{background:var(--color-accent-blue,#3b82f6);color:#fff;text-transform:uppercase;border-radius:9999px;padding:0 .375rem;font-size:.625rem;font-weight:600}.help-summary.svelte-1tbbgiz{margin:0;line-height:1.35}.help-params.svelte-1tbbgiz{flex-direction:column;gap:.125rem;margin:0;display:flex}.help-params.svelte-1tbbgiz dt:where(.svelte-1tbbgiz){float:left;margin-right:.5rem}.help-params.svelte-1tbbgiz dt:where(.svelte-1tbbgiz) code:where(.svelte-1tbbgiz){color:var(--color-accent-purple,#8b5cf6)}.help-params.svelte-1tbbgiz dd:where(.svelte-1tbbgiz){margin:0;line-height:1.35;overflow:hidden}.help-examples.svelte-1tbbgiz{flex-direction:column;gap:.125rem;margin:0;padding:0;list-style:none;display:flex}.help-examples.svelte-1tbbgiz li:where(.svelte-1tbbgiz){align-items:baseline;gap:.5rem;line-height:1.35;display:flex}.help-examples.svelte-1tbbgiz code:where(.svelte-1tbbgiz){color:var(--color-accent-blue,#3b82f6);white-space:nowrap}.help-note.svelte-1tbbgiz{color:var(--color-text-secondary,#6c757d);margin:0;line-height:1.35}.help-hint.svelte-1tbbgiz{color:var(--color-text-muted,#adb5bd);margin:0}.mgr-text-cell.svelte-144v1my{max-width:28rem}.mgr-text-cell.mgr-stacked.svelte-144v1my .mgr-label-tag:where(.svelte-144v1my),.mgr-text-cell.mgr-stacked.svelte-144v1my .mgr-line2:where(.svelte-144v1my){display:block}.mgr-label-tag.svelte-144v1my{color:var(--color-text-secondary,#495057);margin-right:.375rem;padding:0 .375rem;font-size:.6875rem;display:inline-block}.mgr-preview.svelte-144v1my{white-space:pre-wrap;overflow-wrap:anywhere;vertical-align:bottom}.mgr-ml.svelte-144v1my{color:var(--color-text-muted,#adb5bd);font-size:.6875rem}.mgr-line2.svelte-144v1my{margin-bottom:.25rem;padding:0 .375rem}.mgr-search.svelte-w3lpt8{border:1px solid var(--color-surface-border,#dee2e6);resize:none;background:var(--color-surface,#f8f9fa);border-radius:.25rem;flex:1;min-width:10rem;height:calc(2.4em + .5rem + 2px);padding:.25rem;font-size:.75rem;line-height:1.2}.mgr-tags-cell.svelte-108d03j{white-space:nowrap;text-overflow:ellipsis;width:10rem;overflow:hidden}.mgr-tag-chip.svelte-108d03j{color:var(--color-text-secondary,#495057);text-overflow:ellipsis;vertical-align:middle;background:#8b5cf61f;border-radius:.625rem;max-width:6rem;margin-right:.25rem;padding:0 .375rem;font-size:.6875rem;line-height:1.25rem;display:inline-block;overflow:hidden}.mgr-tag-more.svelte-108d03j{color:var(--color-text-muted,#888);cursor:help;font-size:.6875rem;font-weight:600}.mgr-tag-none.svelte-108d03j{color:var(--color-text-muted,#adb5bd)}.mgr-tag-row.svelte-1uamgti{border-bottom:1px solid #8b5cf61f;flex-wrap:wrap;gap:.25rem;width:19rem;display:flex}.mgr-tag-filter-chip.svelte-1uamgti{border:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface,#f8f9fa);color:var(--color-text-secondary,#495057);cursor:pointer;border-radius:.625rem;padding:0 .5rem;font-size:.6875rem;line-height:1.25rem}.mgr-tag-filter-chip.svelte-1uamgti:hover{background:var(--color-surface-alt,#f1f3f5)}.mgr-tag-filter-chip.on.svelte-1uamgti{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 14%, transparent);border-color:var(--color-accent-blue,#3b82f6);color:var(--color-accent-blue,#3b82f6);font-weight:600}.mgr-count.svelte-sqcp1g{white-space:nowrap;font-variant-numeric:tabular-nums;text-align:right}.mgr-edit-portal.svelte-5dpdoo{display:contents}.mgr-btn.svelte-5dpdoo{border:1px solid var(--color-surface-border,#dee2e6);cursor:pointer;background:var(--color-surface,#f8f9fa);border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem}.mgr-btn.svelte-5dpdoo:hover{background:var(--color-surface-alt,#f1f3f5)}.mgr-btn-save.svelte-5dpdoo{color:#16a34a}.mgr-btn-cancel.svelte-5dpdoo{color:var(--color-text-muted,#888)}.mgr-edit-backdrop.svelte-5dpdoo{z-index:10005;background:#00000059;position:fixed;inset:0}.mgr-edit-dialog.svelte-5dpdoo{z-index:10006;background:var(--color-surface-elevated,#fff);border:1px solid #8b5cf64d;border-radius:.5rem;flex-direction:column;gap:.625rem;width:min(90vw,34rem);padding:1rem;display:flex;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 8px 32px #0000002e}.mgr-edit-dialog.svelte-5dpdoo h3:where(.svelte-5dpdoo){margin:0 0 .25rem;font-size:.9375rem}.mgr-field.svelte-5dpdoo{flex-direction:column;gap:.25rem;font-size:.75rem;display:flex}.mgr-field.svelte-5dpdoo>span:where(.svelte-5dpdoo){text-transform:uppercase;color:var(--color-text-muted,#888);font-size:.6875rem;font-weight:600}.mgr-field-pair.svelte-5dpdoo{flex-direction:row;align-items:flex-start;gap:1rem}.mgr-field-macro.svelte-5dpdoo{gap:.375rem}.mgr-edit-macro.svelte-5dpdoo{width:1rem;height:1rem;margin-top:.125rem}.mgr-edit-uses.svelte-5dpdoo{border:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface,#f8f9fa);border-radius:.25rem;width:6rem;padding:.25rem .5rem;font-size:.75rem}.mgr-edit-label.svelte-5dpdoo,.mgr-edit-text.svelte-5dpdoo,.mgr-edit-tags.svelte-5dpdoo{border:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface,#f8f9fa);border-radius:.25rem;padding:.25rem;font-family:inherit;font-size:.75rem}.mgr-edit-text.svelte-5dpdoo{resize:vertical;min-height:5rem}.mgr-edit-tags.svelte-5dpdoo{resize:vertical;height:3.25rem}.mgr-edit-actions.svelte-5dpdoo{justify-content:flex-end;gap:.375rem;margin-top:.25rem;display:flex}.mgr-edit-portal.svelte-14p6cj{display:contents}.mgr-btn.svelte-14p6cj{border:1px solid var(--color-surface-border,#dee2e6);cursor:pointer;background:var(--color-surface,#f8f9fa);border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem}.mgr-btn.svelte-14p6cj:hover{background:var(--color-surface-alt,#f1f3f5)}.mgr-btn-save.svelte-14p6cj{color:#16a34a}.mgr-btn-cancel.svelte-14p6cj{color:var(--color-text-muted,#888)}.mgr-edit-backdrop.svelte-14p6cj{z-index:10005;background:#00000059;position:fixed;inset:0}.mgr-edit-dialog.svelte-14p6cj{z-index:10006;background:var(--color-surface-elevated,#fff);border:1px solid #8b5cf64d;border-radius:.5rem;flex-direction:column;gap:.625rem;width:min(90vw,34rem);padding:1rem;display:flex;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 8px 32px #0000002e}.mgr-edit-dialog.svelte-14p6cj h3:where(.svelte-14p6cj){margin:0 0 .25rem;font-size:.9375rem}.mgr-field.svelte-14p6cj{flex-direction:column;gap:.25rem;font-size:.75rem;display:flex}.mgr-field.svelte-14p6cj>span:where(.svelte-14p6cj){text-transform:uppercase;color:var(--color-text-muted,#888);font-size:.6875rem;font-weight:600}.mgr-field-pair.svelte-14p6cj{flex-direction:row;align-items:flex-start;gap:1rem}.mgr-field-macro.svelte-14p6cj{gap:.375rem}.mgr-edit-macro.svelte-14p6cj{width:1rem;height:1rem;margin-top:.125rem}.mgr-edit-uses.svelte-14p6cj{border:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface,#f8f9fa);border-radius:.25rem;width:6rem;padding:.25rem .5rem;font-size:.75rem}.mgr-add-text.svelte-14p6cj{border:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface,#f8f9fa);resize:vertical;border-radius:.25rem;padding:.25rem;font-family:inherit;font-size:.75rem}.mgr-add-label.svelte-14p6cj,.mgr-add-tags.svelte-14p6cj{border:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface,#f8f9fa);border-radius:.25rem;padding:.25rem;font-family:inherit;font-size:.75rem}.mgr-edit-actions.svelte-14p6cj{justify-content:flex-end;gap:.375rem;margin-top:.25rem;display:flex}.mgr-sticky.svelte-1kuoadm{z-index:5;margin:0 calc(-1 * var(--mgr-bleed,1rem));background:var(--color-surface-elevated,#fff);position:sticky;top:0;box-shadow:0 1px 4px #8b5cf614}.mgr-sticky-bar.svelte-1kuoadm{justify-content:space-between;align-items:center;gap:.5rem;padding:.375rem 1.25rem;display:flex}.mgr-head-table.svelte-1kuoadm{border-collapse:collapse;table-layout:fixed;background:0 0;border:none;border-radius:0;width:100%;margin:0}.mgr-head-table.svelte-1kuoadm thead:where(.svelte-1kuoadm) th:where(.svelte-1kuoadm){border-left:none;border-right:none}.mgr-head-table.svelte-1kuoadm th:where(.svelte-1kuoadm){text-align:left;color:var(--color-text-primary);text-transform:uppercase;white-space:nowrap;background:#8b5cf61f;border:1px solid #8b5cf626;padding:.35em .6em;font-size:.6875rem;font-weight:600}.mgr-unselect-all.svelte-1kuoadm{cursor:pointer;color:var(--color-text-muted,#888);background:0 0;border:none;padding:0;font-size:.875rem;line-height:1}.mgr-unselect-all.svelte-1kuoadm:hover{color:var(--color-accent-blue,#3b82f6)}.mgr-toolbar.svelte-1kuoadm{flex:1;align-items:center;gap:.25rem;display:flex}.mgr-btn.svelte-1kuoadm{border:1px solid var(--color-surface-border,#dee2e6);cursor:pointer;background:var(--color-surface,#f8f9fa);border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem}.mgr-btn.svelte-1kuoadm:hover{background:var(--color-surface-alt,#f1f3f5)}.mgr-btn-add.svelte-1kuoadm{color:var(--color-accent-blue,#3b82f6)}.mgr-btn-cancel.svelte-1kuoadm{color:var(--color-text-muted,#888)}.mgr-btn-danger.svelte-1kuoadm{color:#dc2626}.mgr-btn-danger.svelte-1kuoadm:disabled{opacity:.4;cursor:not-allowed;color:var(--color-text-muted,#888)}.mgr-error.svelte-1kuoadm{color:#dc2626;background:#fef2f2;border:1px solid #fecaca;border-radius:.25rem;margin-bottom:.5rem;padding:.375rem .5rem}.mgr-table.svelte-1kuoadm{border-collapse:collapse;table-layout:fixed;background:#8b5cf60a;border:1px solid #8b5cf633;border-radius:.5em;width:100%;margin:0 0 .5em;overflow:hidden}.mgr-table.svelte-1kuoadm th:where(.svelte-1kuoadm):first-child,.mgr-table.svelte-1kuoadm td:first-child{width:2rem}.mgr-table.svelte-1kuoadm th:where(.svelte-1kuoadm):nth-child(2),.mgr-table.svelte-1kuoadm td:nth-child(2){width:4rem}.mgr-table.svelte-1kuoadm th:where(.svelte-1kuoadm):nth-child(3),.mgr-table.svelte-1kuoadm td:nth-child(3){width:auto}.mgr-table.svelte-1kuoadm th:where(.svelte-1kuoadm):nth-child(4),.mgr-table.svelte-1kuoadm td:nth-child(4){width:3.5rem}.mgr-table.svelte-1kuoadm th:where(.svelte-1kuoadm){text-align:left;border-bottom:1px solid var(--color-surface-border,#dee2e6);text-transform:uppercase;color:var(--color-text-muted,#888);white-space:nowrap;padding:.375rem .5rem;font-size:.6875rem;font-weight:600}.mgr-table.svelte-1kuoadm td:where(.svelte-1kuoadm){text-align:left;vertical-align:top;border:1px solid #8b5cf626;padding:.35em .6em}.mgr-body-table.svelte-1kuoadm tbody:where(.svelte-1kuoadm) tr:where(.svelte-1kuoadm):nth-child(2n){background:#8b5cf608}.mgr-body-table.svelte-1kuoadm tbody:where(.svelte-1kuoadm) tr:where(.svelte-1kuoadm):hover td:where(.svelte-1kuoadm){background:#8b5cf614}.mgr-table.svelte-1kuoadm tr.sel:where(.svelte-1kuoadm) td:where(.svelte-1kuoadm){background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 14%, #8b5cf60a)}.mgr-sel-col.svelte-1kuoadm{width:2rem}.mgr-check.svelte-1kuoadm{cursor:pointer;accent-color:var(--color-accent-blue,#3b82f6)}.mgr-sort-btn.svelte-1kuoadm{font:inherit;color:inherit;cursor:pointer;text-transform:inherit;background:0 0;border:none}.mgr-sort-btn.active.svelte-1kuoadm{color:var(--color-accent-blue,#3b82f6)}.mgr-macro-toggle.svelte-1kuoadm{cursor:pointer;color:var(--color-text-muted,#888);background:0 0;border:none;border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;line-height:1}.mgr-macro-toggle.svelte-1kuoadm:hover{background:var(--color-surface-alt,#f1f3f5)}.mgr-macro-toggle.on.svelte-1kuoadm{color:var(--color-accent-blue,#3b82f6);font-weight:600}.mgr-macro-col.svelte-1kuoadm{white-space:nowrap;text-align:center;color:var(--color-text-muted,#888);font-size:.75rem}.mgr-tags-col.svelte-1kuoadm{white-space:nowrap;text-overflow:ellipsis;width:10rem;overflow:hidden}.mgr-editing.svelte-1kuoadm td:where(.svelte-1kuoadm){background:#8b5cf629!important}.mgr-footer.svelte-1kuoadm{text-align:center;color:var(--color-text-muted,#888);padding:.5rem;font-size:.6875rem}.mgr-loading.svelte-1kuoadm,.mgr-empty.svelte-1kuoadm{text-align:center;color:var(--color-text-muted,#888);padding:2rem}.mgr-backdrop.svelte-13xs6jp{z-index:10003;background:#0006;position:fixed;inset:0}.mgr-modal.svelte-13xs6jp{z-index:10004;background:var(--color-surface-elevated,#fff);border:1px solid var(--color-surface-border,#dee2e6);border-radius:.5rem;flex-direction:column;width:90%;max-width:60rem;min-height:min(28rem,80vh);max-height:80vh;padding:0 1rem 1rem;display:flex;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.mgr-dialog-header.svelte-13xs6jp{flex:none;align-items:center;gap:.5rem;display:flex}.mgr-dialog-body.svelte-13xs6jp{flex:1;min-height:0;overflow-y:auto}.mgr-dialog-title.svelte-13xs6jp{text-align:left;flex:1;margin:0;font-size:.9rem;font-weight:600}.mgr-dialog-close.svelte-13xs6jp{color:var(--color-text-muted,#888);cursor:pointer;background:0 0;border:none;font-size:1.125rem;line-height:1}.mgr-dialog-close.svelte-13xs6jp:hover{color:var(--color-text-primary,#212529);font-size:.8125rem}.cancel-btn.svelte-1gevkmd svg,.send-btn.svelte-1gevkmd svg,.prompt-sync-check.svelte-1gevkmd svg{color:inherit}.prompt-sync-check.on.svelte-1gevkmd{color:#9acd32}.prompt-sync-check.on.svelte-1gevkmd:hover{color:#6c9023;background-color:#f3f9e6}.agent-chip.svelte-mhnbss{border:1px solid color-mix(in srgb, var(--color-accent-purple,#8b5cf6) 50%, #4c1d95);white-space:nowrap;color:color-mix(in srgb, var(--color-accent-purple,#8b5cf6) 50%, #4c1d95);background:color-mix(in srgb, var(--color-accent-purple,#8b5cf6) 8%, transparent);border-radius:9999px;align-items:center;gap:.25rem;padding:.125rem .5rem;font-size:.75rem;line-height:1;display:inline-flex}.save-prompt-wrap.svelte-78up8f{display:inline-flex;position:relative}.save-prompt-popup.svelte-78up8f{z-index:9000;background:var(--color-surface-elevated,#fff);border:1px solid #8b5cf64d;border-radius:.5rem;flex-direction:column;gap:.5rem;width:16rem;padding:.5rem;display:flex;position:fixed;box-shadow:0 8px 24px #00000029}.save-prompt-preview.svelte-78up8f{color:var(--color-text-secondary,#495057);white-space:pre-wrap;overflow-wrap:anywhere;border-bottom:1px solid var(--color-surface-border,#dee2e6);max-height:4.5rem;padding-bottom:.375rem;font-size:.6875rem;overflow:hidden}.save-prompt-chips.svelte-78up8f{flex-wrap:wrap;gap:.25rem;display:flex}.save-prompt-chip.svelte-78up8f{border:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface,#f8f9fa);color:var(--color-text-secondary,#495057);cursor:pointer;border-radius:.625rem;padding:0 .5rem;font-size:.6875rem;line-height:1.25rem}.save-prompt-chip.on.svelte-78up8f{background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 14%, transparent);border-color:var(--color-accent-blue,#3b82f6);color:var(--color-accent-blue,#3b82f6);font-weight:600}.save-prompt-label.svelte-78up8f{border:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface,#f8f9fa);border-radius:.25rem;width:100%;padding:.25rem .375rem;font-size:.75rem}.save-prompt-actions.svelte-78up8f{justify-content:flex-end;gap:.375rem;display:flex}.save-prompt-cancel.svelte-78up8f,.save-prompt-save.svelte-78up8f{border:1px solid var(--color-surface-border,#dee2e6);cursor:pointer;background:var(--color-surface,#f8f9fa);border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem}.save-prompt-save.svelte-78up8f{color:#16a34a}.save-prompt-save.svelte-78up8f:disabled{opacity:.5;cursor:wait}.chip-button.svelte-c1qaf4 svg,.chip-button.svelte-1h02qiz svg,.chip-button.svelte-ts2c91 svg,.chip-button.svelte-1p1wfzw svg{color:var(--color-accent-purple)}.chip-button.svelte-1gttfnp svg{color:var(--color-red-600)}.floating-anchor-btn.svelte-1ebzurb{cursor:pointer;pointer-events:auto;border-radius:9999px;justify-content:center;align-items:center;width:1.75rem;height:1.75rem;transition:background .15s,color .15s,transform .1s;display:flex;box-shadow:0 2px 8px #00000026}.floating-anchor-btn.svelte-1ebzurb:hover{transform:scale(1.08)}.tone-cyan.svelte-1ebzurb{border:1px solid var(--color-accent-cyan,#06b6d4);background:color-mix(in srgb, var(--color-accent-cyan,#06b6d4) 12%, transparent);color:var(--color-accent-cyan,#06b6d4)}.tone-cyan.svelte-1ebzurb:hover{color:var(--color-text-primary,#fff)}.tone-cyan.active.svelte-1ebzurb{background:var(--color-accent-cyan,#06b6d4);color:#fff;border-color:var(--color-accent-cyan,#06b6d4)}.floating-anchor-btn.svelte-1ebzurb svg{color:inherit}.floating-anchor-btn.svelte-1gmo090{cursor:pointer;pointer-events:auto;border-radius:9999px;justify-content:center;align-items:center;width:1.75rem;height:1.75rem;transition:background .15s,color .15s,transform .1s;display:flex;box-shadow:0 2px 8px #00000026}.floating-anchor-btn.svelte-1gmo090:hover{transform:scale(1.08)}.tone-blue.svelte-1gmo090{border:1px solid var(--color-accent-blue,#3b82f6);background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 12%, transparent);color:var(--color-accent-blue,#3b82f6)}.tone-blue.svelte-1gmo090:hover{color:var(--color-text-primary,#fff)}.tone-blue.draining.svelte-1gmo090{background:var(--color-accent-blue,#3b82f6);color:#fff;border-color:var(--color-accent-blue,#3b82f6);cursor:wait}.floating-anchor-btn.svelte-1gmo090 svg{color:inherit}.floating-anchor-btn.svelte-1gmo090 .spin{animation:1s linear infinite svelte-1gmo090-bte-rotate}@keyframes svelte-1gmo090-bte-rotate{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.floating-anchor-btn.svelte-1gmo090 .spin{animation:none}}.floating-anchor-btn.svelte-dnm04b{cursor:pointer;pointer-events:auto;border-radius:9999px;justify-content:center;align-items:center;width:1.75rem;height:1.75rem;transition:background .15s,color .15s,transform .1s;display:flex;box-shadow:0 2px 8px #00000026}.floating-anchor-btn.svelte-dnm04b:hover{transform:scale(1.08)}.tone-purple.svelte-dnm04b{border:1px solid var(--color-accent-purple,#a855f7);background:color-mix(in srgb, var(--color-accent-purple,#a855f7) 12%, transparent);color:var(--color-accent-purple,#a855f7)}.tone-purple.svelte-dnm04b:hover{color:var(--color-text-primary,#fff)}.tone-purple.active.svelte-dnm04b{background:var(--color-accent-purple,#a855f7);color:#fff;border-color:var(--color-accent-purple,#a855f7)}.floating-anchor-btn.svelte-dnm04b svg{color:inherit}.relative.svelte-ntohaz{position:relative}.floating-anchor-btn.svelte-ntohaz{cursor:pointer;pointer-events:auto;border-radius:9999px;justify-content:center;align-items:center;width:1.75rem;height:1.75rem;transition:background .15s,color .15s,transform .1s;display:flex;box-shadow:0 2px 8px #00000026}.floating-anchor-btn.svelte-ntohaz:hover{transform:scale(1.08)}.tone-maroon.svelte-ntohaz{color:maroon;background:#8000001f;border:1px solid maroon}.tone-maroon.svelte-ntohaz:hover{color:var(--color-text-primary,#fff)}.tone-maroon.active.svelte-ntohaz{color:#fff;background:maroon;border-color:maroon}.floating-anchor-btn.svelte-ntohaz svg{color:inherit}.shelf-item.svelte-ntohaz{border-radius:.25rem;align-items:center;gap:.25rem;padding:.125rem .25rem;display:flex}.shelf-item.svelte-ntohaz:hover{background:#80000014}.shelf-divider.svelte-ntohaz{border:none;border-top:1px solid var(--color-surface-border,#dee2e6);width:100%;margin:.125rem 0}.shelf-item.svelte-ntohaz .shelf-copy{width:1.125rem;height:1.125rem;color:inherit;opacity:.6;cursor:pointer;background:0 0;border:none;border-radius:.25rem;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.shelf-item.svelte-ntohaz .shelf-copy:hover{opacity:1;background:var(--color-surface-hover,#0000001a)}.shelf-pick.svelte-ntohaz{color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:.25rem;flex:1;align-items:center;padding:.25rem;font-size:.75rem;display:flex}.shelf-pick.svelte-ntohaz:hover{background:#80000014}.shelf-pick-path.svelte-ntohaz{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:16rem;font-weight:600;overflow:hidden}.stats-bar.svelte-1bg5es8{text-align:center;color:#7c3aed;opacity:.75;white-space:nowrap;flex-shrink:0;justify-content:center;align-items:center;gap:.375rem;height:1.5rem;padding:0 .375rem;font-size:.75rem;display:flex;overflow:hidden}.segment.svelte-1bg5es8{text-overflow:ellipsis;flex-shrink:1;overflow:hidden}.sep.svelte-1bg5es8{opacity:.5;flex-shrink:0}.macro-run.svelte-zl61ov{margin:0 .5rem .25rem;font-size:.75rem}.macro-chip.svelte-zl61ov{color:#1d4ed8;background:#3b82f61a;border-radius:6px;align-items:center;gap:.375rem;padding:.125rem .5rem;display:flex}.macro-chip[data-phase=failed].svelte-zl61ov{color:#b91c1c;background:#ef44441f}.macro-chip[data-phase=stopped].svelte-zl61ov{color:#4b5563;background:#6b72801f}.macro-chip-label.svelte-zl61ov{color:inherit;cursor:pointer;text-align:left;background:0 0;border:none;flex:1;align-items:center;gap:.25rem;min-width:0;padding:.125rem 0;font-size:.75rem;display:flex}.macro-chip-text.svelte-zl61ov{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.macro-chip-caret.svelte-zl61ov{opacity:.7;flex-shrink:0}.macro-stop.svelte-zl61ov{color:inherit;cursor:pointer;background:0 0;border:1px solid;border-radius:4px;flex-shrink:0;padding:0 .375rem;font-size:.6875rem;line-height:1.4}.macro-stop.svelte-zl61ov:hover{background:#ef44441f}.macro-close.svelte-zl61ov{color:inherit;cursor:pointer;opacity:.7;background:0 0;border:none;flex-shrink:0;padding:0 .25rem;font-size:.75rem;line-height:1.4}.macro-close.svelte-zl61ov:hover{opacity:1}.macro-sheet.svelte-zl61ov{background:var(--color-surface-elevated,#fff);border:1px solid #3b82f640;border-radius:6px;flex-direction:column;gap:.125rem;margin-top:.25rem;padding:.375rem .5rem;display:flex}.macro-row.svelte-zl61ov{align-items:baseline;gap:.375rem;min-width:0;display:flex}.macro-row.query-row.svelte-zl61ov .macro-line-text:where(.svelte-zl61ov){opacity:.8;font-style:italic}.macro-mark.svelte-zl61ov{text-align:center;flex-shrink:0;width:1.1em}.macro-line-text.svelte-zl61ov{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--color-text-primary,#212529);flex:1;overflow:hidden}.macro-line-n.svelte-zl61ov{color:var(--color-text-muted,#868e96);flex-shrink:0;font-size:.6875rem}.macro-line-note.svelte-zl61ov{text-overflow:ellipsis;white-space:nowrap;max-width:45%;color:var(--color-text-muted,#868e96);flex-shrink:0;overflow:hidden}.macro-empty.svelte-zl61ov{color:var(--color-text-muted,#868e96);padding:.125rem 0}.macro-controls.svelte-zl61ov{gap:.5rem;margin-top:.25rem;display:flex}.macro-controls.svelte-zl61ov button:where(.svelte-zl61ov){border:1px solid var(--color-surface-border,#dee2e6);color:var(--color-text-primary,#212529);cursor:pointer;background:0 0;border-radius:.25rem;padding:.125rem .5rem;font-size:.75rem}.macro-controls.svelte-zl61ov button:where(.svelte-zl61ov):hover{background:var(--color-surface-hover,#e9ecef)}.goal-bar.svelte-k3rmjz{margin:0 .5rem .25rem;font-size:.75rem}.goal-chip.svelte-k3rmjz{color:#047857;background:#10b9811a;border-radius:6px;align-items:center;gap:.375rem;padding:.125rem .5rem;display:flex}.goal-chip[data-phase=paused].svelte-k3rmjz{color:#4b5563;background:#6b72801f}.goal-chip[data-phase=blocked].svelte-k3rmjz{color:#b45309;background:#f59e0b24}.goal-chip-label.svelte-k3rmjz{color:inherit;cursor:pointer;text-align:left;background:0 0;border:none;flex:1;align-items:center;gap:.25rem;min-width:0;padding:.125rem 0;font-size:.75rem;display:flex}.goal-chip-glyph.svelte-k3rmjz{text-align:center;flex-shrink:0;width:1.1em}.goal-chip-text.svelte-k3rmjz{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.goal-chip-caret.svelte-k3rmjz{opacity:.7;flex-shrink:0}.goal-action.svelte-k3rmjz{color:inherit;cursor:pointer;background:0 0;border:1px solid;border-radius:4px;flex-shrink:0;padding:0 .375rem;font-size:.6875rem;line-height:1.4}.goal-action.svelte-k3rmjz:hover{background:#0000000f}.goal-clear.svelte-k3rmjz{opacity:.7;border:none;padding:0 .25rem;font-size:.75rem}.goal-clear.svelte-k3rmjz:hover{opacity:1;background:0 0}.goal-edit-form.svelte-k3rmjz{background:var(--color-surface-elevated,#fff);border:1px solid #10b9814d;border-radius:6px;flex-direction:column;gap:.25rem;margin-top:.25rem;padding:.375rem .5rem;display:flex}.goal-edit-label.svelte-k3rmjz{color:var(--color-text-muted,#868e96);flex-direction:column;gap:.125rem;font-size:.6875rem;display:flex}.goal-edit-label.svelte-k3rmjz textarea:where(.svelte-k3rmjz),.goal-edit-label.svelte-k3rmjz input:where(.svelte-k3rmjz){border:1px solid var(--color-surface-border,#dee2e6);border-radius:.25rem;padding:.125rem .25rem;font-size:.75rem}.goal-sheet.svelte-k3rmjz{background:var(--color-surface-elevated,#fff);border:1px solid #10b9814d;border-radius:6px;flex-direction:column;gap:.125rem;margin-top:.25rem;padding:.375rem .5rem;display:flex}.goal-row.svelte-k3rmjz{align-items:baseline;gap:.375rem;min-width:0;display:flex}.goal-key.svelte-k3rmjz{width:4.5rem;color:var(--color-text-muted,#868e96);flex-shrink:0}.goal-value.svelte-k3rmjz{white-space:pre-wrap;overflow-wrap:anywhere;min-width:0;color:var(--color-text-primary,#212529);flex:1}.goal-controls.svelte-k3rmjz{gap:.5rem;margin-top:.25rem;display:flex}.goal-controls.svelte-k3rmjz button:where(.svelte-k3rmjz){border:1px solid var(--color-surface-border,#dee2e6);color:var(--color-text-primary,#212529);cursor:pointer;background:0 0;border-radius:.25rem;padding:.125rem .5rem;font-size:.75rem}.goal-controls.svelte-k3rmjz button:where(.svelte-k3rmjz):hover{background:var(--color-surface-hover,#e9ecef)}.command-note.svelte-18u549u{color:#047857;background:#10b9811f;border-radius:6px;margin:0 .5rem .25rem;padding:.25rem .5rem;font-size:.75rem}.command-note-error.svelte-18u549u{color:#b91c1c;background:#ef44441f}.composer-error.svelte-18u549u{flex-direction:column;gap:.125rem;display:flex}.composer-error-hint.svelte-18u549u{opacity:.85}.composer-area.svelte-18u549u{position:relative}.composer-stick.svelte-18u549u{z-index:20;margin-bottom:-2rem;position:absolute;bottom:100%;right:.5rem}.floating-stick.svelte-18u549u{z-index:20;background:var(--color-surface,#fff);border-radius:8px;padding:.125rem;position:absolute;bottom:1.75rem;right:.5rem;box-shadow:0 1px 4px #00000026}.settings-editor-body.svelte-cqvzi6{flex-direction:column;height:100%;min-height:0;display:flex;overflow:hidden}.settings-toolbar.svelte-cqvzi6{border-bottom:1px solid var(--panel-border,#2a2a2a);align-items:center;gap:.5rem;padding:.5rem .75rem;font-size:.85rem;display:flex}.settings-title.svelte-cqvzi6{font-weight:600}.settings-state.svelte-cqvzi6{opacity:.7;flex:1}.settings-error.svelte-cqvzi6{color:#ffb4bb;background:#45161c;margin:0;padding:.4rem .75rem;font-size:.8rem}.settings-editor-host.svelte-cqvzi6{flex:1;min-height:0}.markdown-panel.svelte-db6jsb{height:100%;padding:1rem 1.25rem;overflow:auto}.injected-doc.svelte-147nwn4{flex-direction:column;height:100%;display:flex}.doc-toolbar.svelte-147nwn4{border-bottom:1px solid var(--color-surface-border,#dee2e6);align-items:center;gap:.5rem;padding:.5rem .75rem;font-size:.75rem;display:flex}.doc-title.svelte-147nwn4{color:maroon;font-weight:600}.doc-state.svelte-147nwn4{color:var(--color-text-secondary,#6c757d)}.doc-toolbar.svelte-147nwn4 button:where(.svelte-147nwn4){color:inherit;cursor:pointer;background:0 0;border:none;margin-left:auto;font-size:.875rem}.doc-missing.svelte-147nwn4{color:var(--color-text-secondary,#6c757d);padding:1rem 1.25rem;font-size:.75rem}.doc-editor-host.svelte-147nwn4{flex:1;min-height:0}.actions.svelte-14l0ymn{align-items:center;gap:.25rem;margin-left:auto;display:inline-flex}.head-btn.svelte-14l0ymn{border:1px solid var(--color-border,#d0d7de);width:1.25rem;height:1.25rem;color:var(--color-text-secondary,#6c757d);cursor:pointer;background:0 0;border-radius:.25rem;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.head-btn.svelte-14l0ymn:hover,.head-btn.svelte-14l0ymn:focus-visible{background:var(--color-surface-secondary,#f1f3f5);color:var(--color-text-primary,#212529)}.explorer-toolbar.svelte-b18z79{background:var(--color-surface-primary,#fff);flex-shrink:0;justify-content:flex-start;align-items:center;gap:.25rem;width:100%;display:flex}.tabs.svelte-b18z79{align-items:center;gap:.125rem;margin-right:.375rem;display:inline-flex}.tab.svelte-b18z79{color:var(--color-text-secondary,#6c757d);font:inherit;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:.25rem;padding:.05rem .4rem;font-size:.75rem}.tab.active.svelte-b18z79{border-color:var(--color-border,#d0d7de);background:var(--color-surface-secondary,#f1f3f5);color:var(--color-text-primary,#212529);font-weight:600}.fti.svelte-hurohb{--fti-paper:var(--color-bg,#fff);flex-shrink:0}.fti.code.svelte-hurohb,.fti.html.svelte-hurohb,.fti.markdown.svelte-hurohb{color:#4176e6}.fti.excel.svelte-hurohb{color:#22c55e}.fti.image.svelte-hurohb,.fti.video.svelte-hurohb{color:#8b76f6}.fti.other.svelte-hurohb{color:#cfd3d6}.fti.pdf.svelte-hurohb{color:#ec1313}.fti.ppt.svelte-hurohb{color:#f59e0b}.fti.word.svelte-hurohb{color:#5686fe}.fold.svelte-hurohb,.mark.svelte-hurohb{fill:var(--fti-paper)}.tree.svelte-hbtlo6{margin:0;padding:0;list-style:none}.tree.svelte-hbtlo6 ul:where(.svelte-hbtlo6){margin:0;padding:0 0 0 .75rem;list-style:none}.row-line.svelte-hbtlo6{min-width:0}.row.svelte-hbtlo6{font:inherit;cursor:pointer;text-overflow:ellipsis;white-space:nowrap;text-align:left;background:0 0;border:none;align-items:center;gap:.25rem;max-width:100%;padding:.1rem .25rem;display:inline-flex;overflow:hidden}.caret.svelte-hbtlo6{flex-shrink:0;justify-content:center;align-items:center;width:.75rem;display:inline-flex}.entry-icon.svelte-hbtlo6{flex-shrink:0;align-items:center;display:inline-flex}.entry-icon.svelte-hbtlo6 svg{color:inherit}.dir.svelte-hbtlo6 .entry-icon:where(.svelte-hbtlo6){color:#7c3aed}.row.repo.svelte-hbtlo6 .entry-icon:where(.svelte-hbtlo6){color:#f7ad31}.row.repo.svelte-hbtlo6 .entry-name:where(.svelte-hbtlo6){color:#ff4500;font-weight:600}.row.hot.svelte-hbtlo6 .entry-name:where(.svelte-hbtlo6),.row.changed.svelte-hbtlo6 .entry-name:where(.svelte-hbtlo6){color:#d2691e;font-weight:600}.entry-name.svelte-hbtlo6{text-overflow:ellipsis;overflow:hidden}.note.svelte-hbtlo6{color:var(--color-text-muted,#6b7280);padding:.1rem .25rem;font-size:.75rem}.note.fail.svelte-hbtlo6{color:#b91c1c}.repo-head.svelte-yuc21i{font:inherit;cursor:pointer;background:0 0;border:none;align-items:center;gap:.25rem;max-width:100%;font-weight:600;display:inline-flex}.repo-head.svelte-yuc21i .caret:where(.svelte-yuc21i){color:#ff4500;flex-shrink:0;justify-content:center;align-items:center;width:.75rem;display:inline-flex}.repo-head.svelte-yuc21i .caret:where(.svelte-yuc21i) svg{color:inherit}.tree.svelte-yuc21i{margin:0;padding:0;list-style:none}.row.svelte-yuc21i{font:inherit;cursor:pointer;text-overflow:ellipsis;white-space:nowrap;text-align:left;background:0 0;border:none;align-items:center;gap:.25rem;max-width:100%;padding:.1rem .25rem;display:inline-flex;overflow:hidden}.caret.svelte-yuc21i{flex-shrink:0;justify-content:center;align-items:center;width:.75rem;display:inline-flex}.repo-group.svelte-yuc21i{margin-bottom:.5rem}.repo-head.svelte-yuc21i{color:#ff4500;text-overflow:ellipsis;white-space:nowrap;padding:.1rem .25rem;font-weight:600;overflow:hidden}.change-code.svelte-yuc21i{font-family:var(--font-mono,monospace);color:#d2691e;justify-content:center;width:1.5rem;font-size:.6875rem}.row.svelte-yuc21i .entry-name:where(.svelte-yuc21i){color:#d2691e;font-weight:600}.entry-name.svelte-yuc21i{text-overflow:ellipsis;overflow:hidden}.note.svelte-yuc21i{color:var(--color-text-muted,#6b7280);padding:.1rem .25rem;font-size:.75rem}.tree.svelte-yuc21i .note:where(.svelte-yuc21i){margin-left:1rem}.note.fail.svelte-yuc21i{color:#b91c1c}.explorer.svelte-1l3v1je{flex-direction:column;gap:.25rem;height:100%;padding:.5rem;font-size:.8125rem;display:flex;position:relative;overflow:hidden}.tree-scroll.svelte-1l3v1je{flex:1;min-height:0;overflow:auto}.changes.svelte-1l3v1je{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.file-toolbar.svelte-cqlxfy{align-items:center;gap:.5rem;display:flex}.path.svelte-cqlxfy{color:var(--color-text-secondary,#6c757d);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:.6875rem;overflow:hidden}.dirty.svelte-cqlxfy{color:#b45309;flex-shrink:0;font-size:.6875rem}.save-btn.svelte-cqlxfy{border:1px solid var(--color-border,#d0d7de);cursor:pointer;background:0 0;border-radius:.25rem;flex-shrink:0;padding:.1rem .5rem;font-size:.6875rem}.save-btn.svelte-cqlxfy:disabled{opacity:.5;cursor:not-allowed}.seg-group.svelte-cqlxfy{flex-shrink:0;display:inline-flex}.seg-group.svelte-cqlxfy .seg:where(.svelte-cqlxfy){border:1px solid var(--color-border,#d0d7de);cursor:pointer;background:0 0;padding:.1rem .5rem;font-size:.6875rem}.seg-group.svelte-cqlxfy .seg.left:where(.svelte-cqlxfy){border-radius:.25rem 0 0 .25rem}.seg-group.svelte-cqlxfy .seg.right:where(.svelte-cqlxfy){border-left:none;border-radius:0 .25rem .25rem 0}.seg-group.svelte-cqlxfy .seg.on:where(.svelte-cqlxfy){background:var(--color-accent-blue,#3b82f6);border-color:var(--color-accent-blue,#3b82f6);color:#fff}.seg-group.svelte-cqlxfy .seg:where(.svelte-cqlxfy):disabled{opacity:.5;cursor:not-allowed}.stale.svelte-cqlxfy{color:var(--color-text-muted,#6b7280);flex-shrink:0;font-size:.6875rem}.copy-slot.svelte-cqlxfy{flex-shrink:0;align-items:center;display:inline-flex}.tabs.svelte-cqlxfy{gap:.125rem;display:inline-flex}.tabs.svelte-cqlxfy button:where(.svelte-cqlxfy){border:1px solid var(--color-border,#d0d7de);cursor:pointer;background:0 0;border-radius:.25rem;padding:.1rem .5rem;font-size:.6875rem}.tabs.svelte-cqlxfy button.active:where(.svelte-cqlxfy){background:var(--color-accent-blue,#3b82f6);border-color:var(--color-accent-blue,#3b82f6);color:#fff}.file-panel.svelte-1ewqqbd{flex-direction:column;gap:.25rem;height:100%;padding:.25rem;font-size:.8125rem;display:flex;overflow:hidden}.note.svelte-1ewqqbd{color:var(--color-text-muted,#6b7280);font-size:.75rem}.note.fail.svelte-1ewqqbd{color:#b91c1c}.file-editor-host.svelte-1ewqqbd{border:1px solid var(--color-border,#d0d7de);border-radius:.25rem;flex:1;min-height:0}.file-scroll.svelte-1ewqqbd{flex-direction:column;flex:1;min-height:0;display:flex;overflow:auto}.img-preview.svelte-1ewqqbd{object-fit:contain;border:1px solid var(--color-border,#d0d7de);background:repeating-conic-gradient(#f0f0f0 0% 25%,#fff 0% 50%) 50%/16px 16px;border-radius:.25rem;max-width:100%;max-height:100%}.html-frame.svelte-1ewqqbd{border:1px solid var(--color-border,#d0d7de);background:#fff;border-radius:.25rem;flex:1;width:100%;min-height:0}.file-body.svelte-1pgc8hn{flex-direction:column;flex:1;min-height:0;display:flex}.bar.svelte-9whorb{flex-shrink:0;align-items:center;gap:.375rem;padding:.25rem .5rem;display:flex}.path.svelte-9whorb{color:var(--color-text-secondary,#6c757d);word-break:break-all;flex:1;font-size:.75rem}.dirty.svelte-9whorb{color:#d97706;font-size:.75rem}.save.svelte-9whorb{font:inherit;border:1px solid var(--color-border,#d0d7de);background:var(--color-surface-secondary,#f1f3f5);cursor:pointer;border-radius:.25rem;padding:.1rem .5rem;font-size:.75rem}.save.svelte-9whorb:disabled{opacity:.5;cursor:default}.copy-slot.svelte-9whorb{flex-shrink:0;align-items:center;display:inline-flex}.home-file.svelte-bq960k{flex-direction:column;height:100%;min-height:0;display:flex}.error.svelte-bq960k{color:#b91c1c;flex-shrink:0;padding:.25rem .5rem;font-size:.75rem}.editor-host.svelte-bq960k{border:1px solid var(--color-border,#d0d7de);border-radius:.25rem;flex:1;min-height:0}.file-tabs.svelte-1hdf0bx{flex-direction:column;height:100%;min-height:0;display:flex;overflow:hidden}.strip.svelte-1hdf0bx{border-bottom:1px solid var(--color-border,#ddd);flex:none;gap:2px;padding:2px 4px 0;display:flex;overflow-x:auto}.tab.svelte-1hdf0bx{cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;border-bottom:none;border-radius:6px 6px 0 0;align-items:center;gap:4px;max-width:180px;padding:3px 6px;font-size:.75rem;display:inline-flex}.tab.active.svelte-1hdf0bx{border-color:var(--color-border,#ddd);background:var(--color-surface,#fff);font-weight:600}.label.svelte-1hdf0bx{text-overflow:ellipsis;overflow:hidden}.close.svelte-1hdf0bx{width:14px;height:14px;color:var(--color-text-muted,#888);border-radius:3px;justify-content:center;align-items:center;font-size:.7rem;line-height:1;display:inline-flex}.close.svelte-1hdf0bx:hover{background:var(--color-border,#ddd);color:var(--color-text,#222)}.body.svelte-1hdf0bx{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.empty.svelte-1hdf0bx{flex:1}.body.svelte-1hdf0bx>*{flex:1;height:auto;min-height:0}.gutter.svelte-gujdub{cursor:col-resize;background:0 0;border:none;flex:0 0 6px;align-self:stretch;width:6px;padding:0;transition:background-color .15s;display:block}.gutter.svelte-gujdub:hover,.gutter.svelte-gujdub:active{background:var(--color-accent-blue,#3b82f6)}.gutter.svelte-gujdub:focus-visible{outline:2px solid var(--color-accent-blue,#3b82f6);outline-offset:-2px}.split.svelte-v4uero{height:100%;min-height:0;display:flex;overflow:hidden}.split.svelte-v4uero>.explorer{flex:0 0 var(--tree-basis,100%);min-width:0;overflow:hidden}.split.svelte-v4uero>.file-tabs{flex:1 1 var(--file-basis,0%);min-width:0;overflow:hidden}.panels-viewport.svelte-1yjbji0{background:var(--color-surface-secondary,#f1f3f5);flex:1;min-width:0;overflow:auto hidden}.zoom-frame.svelte-1yjbji0{height:100%}.panels-row.svelte-1yjbji0{width:max-content;transform:scale(var(--zoom,1));transform-origin:0 0;height:calc(100% / var(--zoom,1));align-items:stretch;padding:4px;display:flex}.panel-header.svelte-1xanvl9{min-height:1.75rem;color:var(--color-text-secondary,#6c757d);border-bottom:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface-primary,#fff);flex-shrink:0;justify-content:space-between;align-items:center;gap:.5rem;padding:.25rem .5rem;font-size:.6875rem;display:flex}.panel-header.selected.svelte-1xanvl9{background:#fdf5e6}.label.svelte-1xanvl9{white-space:nowrap;align-items:center;gap:.25rem;min-width:0;display:inline-flex;overflow:hidden}.id.svelte-1xanvl9{letter-spacing:.01em;flex-shrink:0}.actions.svelte-1xanvl9{flex-shrink:0;align-items:center;gap:.125rem;display:inline-flex}.hdr-btn.svelte-1xanvl9{width:1.25rem;height:1.25rem;color:var(--color-text-secondary,#6c757d);cursor:pointer;background:0 0;border:none;border-radius:.25rem;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.hdr-btn.svelte-1xanvl9:hover,.hdr-btn.svelte-1xanvl9:focus-visible{background:var(--color-surface-secondary,#f1f3f5);color:var(--color-text-primary,#212529)}.hdr-btn.svelte-1xanvl9:disabled{opacity:.5;cursor:not-allowed}.column.svelte-1cuodug{background:var(--color-surface-primary,#fff);border-right:1px solid var(--color-surface-border,#dee2e6);flex-direction:column;flex-shrink:0;height:100%;display:flex;position:relative}.width-badge.svelte-1cuodug{z-index:5;pointer-events:none;border:1px solid color-mix(in srgb, var(--color-accent-blue,#3b82f6) 50%, #1e3a8a);background:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 10%, #fff);color:color-mix(in srgb, var(--color-accent-blue,#3b82f6) 30%, #1e3a8a);font-variant-numeric:tabular-nums;white-space:nowrap;opacity:1;border-radius:.375rem;padding:.125rem .375rem;font-size:.6875rem;line-height:1.25;position:absolute;top:2.5rem;right:.875rem}.width-badge.fading.svelte-1cuodug{opacity:0;transition:opacity 10s linear}@media (prefers-reduced-motion:reduce){.width-badge.fading.svelte-1cuodug{transition:none}}.column.selected.svelte-1cuodug:after{content:"";z-index:5;pointer-events:none;-webkit-mask-composite:xor;background:linear-gradient(135deg,#60a5fa 0%,#a78bfa 45%,lch(38.63% 66.68 19.97) 100%);border-radius:.75rem;padding:5px;position:absolute;inset:-3px;-webkit-mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);-webkit-mask-position:0 0,0 0;mask-position:0 0,0 0;-webkit-mask-size:auto,auto;mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.body.svelte-1cuodug{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.rail-column.svelte-s09nms{background:var(--color-surface-elevated,#fff);flex-direction:column;flex-shrink:0;display:flex;position:relative;overflow:visible}.rail-gutter.svelte-s09nms{cursor:col-resize;flex-shrink:0;width:6px;transition:background-color .15s}.rail-gutter.svelte-s09nms:hover{background:var(--color-accent-blue,#3b82f6);opacity:.25}.empty-floor.svelte-z8g5d9{text-align:center;pointer-events:none;color:var(--color-text-secondary,#6c757d);flex-direction:column;justify-content:center;align-items:center;gap:.5rem;font-size:.875rem;display:flex;position:absolute;inset:0}.empty-floor.svelte-z8g5d9 .hint:where(.svelte-z8g5d9){opacity:.8;font-size:.75rem}.add-panel.svelte-10hagb1{align-items:center;gap:.375rem;display:flex}.add-panel.svelte-10hagb1 input:where(.svelte-10hagb1){border:1px solid var(--color-surface-border,#dee2e6);min-width:0;color:var(--color-text-primary,#212529);background:var(--color-surface-primary,#fff);border-radius:.375rem;flex:1;padding:.25rem .5rem;font-family:ui-monospace,monospace;font-size:.75rem}.add-panel.svelte-10hagb1 input:where(.svelte-10hagb1):focus-visible{outline:2px solid var(--color-accent-blue,#3b82f6);outline-offset:-1px}.add-panel.svelte-10hagb1 button:where(.svelte-10hagb1){border:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface-secondary,#f1f3f5);color:var(--color-text-primary,#212529);cursor:pointer;border-radius:.375rem;flex-shrink:0;padding:.25rem .625rem;font-size:.75rem}.add-panel.svelte-10hagb1 button:where(.svelte-10hagb1):focus-visible{outline:2px solid var(--color-accent-blue,#3b82f6);outline-offset:-1px}.slider-width.svelte-1clwddj{color:var(--color-text-secondary,#6c757d);flex-direction:column;gap:.25rem;font-size:.6875rem;display:flex}.caption.svelte-1clwddj{justify-content:space-between;display:flex}.px.svelte-1clwddj{font-variant-numeric:tabular-nums;color:var(--color-text-primary,#212529)}.slider-width.svelte-1clwddj input:where(.svelte-1clwddj){width:100%;accent-color:var(--color-accent-blue,#3b82f6)}.slider-width.svelte-1clwddj input:where(.svelte-1clwddj):focus-visible{outline:2px solid var(--color-accent-blue,#3b82f6);outline-offset:2px}.slider-zoom.svelte-9i0zv0{color:var(--color-text-secondary,#6c757d);flex-direction:column;gap:.25rem;font-size:.6875rem;display:flex}.caption.svelte-9i0zv0{justify-content:space-between;display:flex}.pct.svelte-9i0zv0{font-variant-numeric:tabular-nums;color:var(--color-text-primary,#212529)}.slider-zoom.svelte-9i0zv0 input:where(.svelte-9i0zv0){width:100%;accent-color:var(--color-accent-blue,#3b82f6)}.slider-zoom.svelte-9i0zv0 input:where(.svelte-9i0zv0):focus-visible{outline:2px solid var(--color-accent-blue,#3b82f6);outline-offset:2px}.tray-buttons.svelte-1cnxsid{justify-content:flex-end;align-items:center;gap:.375rem;display:flex}.tray.svelte-xu2fbc{border:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface-primary,#fff);border-radius:.5rem;flex-direction:column;gap:.625rem;min-width:15rem;padding:.75rem;display:flex;position:absolute;top:calc(100% + .375rem);right:0;box-shadow:0 4px 16px #0000001f}.controlbar.svelte-vs008k{z-index:30;position:fixed;top:.5rem;right:.75rem}.trigger.svelte-vs008k{border:1px solid var(--color-surface-border,#dee2e6);background:var(--color-surface-primary,#fff);width:1.75rem;height:1.75rem;color:var(--color-text-secondary,#6c757d);cursor:pointer;opacity:.65;border-radius:.375rem;justify-content:center;align-items:center;margin-left:auto;transition:opacity .15s,color .15s;display:inline-flex;box-shadow:0 1px 2px #00000014}.controlbar.svelte-vs008k:hover .trigger:where(.svelte-vs008k),.controlbar.open.svelte-vs008k .trigger:where(.svelte-vs008k),.trigger.svelte-vs008k:focus-visible{opacity:1;color:var(--color-text-primary,#212529)}.conversation-page.svelte-1uha8ag{background-color:#fff}.panel-manager-body.svelte-1uha8ag{--mgr-bleed:0rem;height:100%;padding:0;font-size:.8125rem;overflow-y:auto}.floor.svelte-1uha8ag{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;position:relative}.panel-error.svelte-1uha8ag{text-align:center;color:#b91c1c;background:#fef2f2;flex-direction:column;justify-content:center;align-items:center;gap:.75rem;height:100%;padding:1rem;font-size:.8125rem;display:flex}.panel-error.svelte-1uha8ag button:where(.svelte-1uha8ag){color:#b91c1c;cursor:pointer;background:#fff;border:1px solid #fca5a5;border-radius:.375rem;padding:.25rem .75rem;font-size:.75rem}.panel-loading.svelte-1uha8ag{height:100%;color:var(--color-text-secondary,#6c757d);justify-content:center;align-items:center;font-size:.875rem;display:flex}
@@ -0,0 +1 @@
1
+ import{at as e,bt as t}from"./DnA33f7e.js";import{a as n}from"./D94Od7GQ.js";import{d as r}from"./DlfWhx6l.js";var i={},a=[`en`,`zh`,`id`,`es`],o=`dsi.locale`,s=3456e4,c=[`cookie`,`preferredLanguage`,`baseLocale`],l=[],u=typeof window>`u`;globalThis.__paraglide=globalThis.__paraglide??{},globalThis.__paraglide.ssr=globalThis.__paraglide.ssr??{};var d=!1,f=()=>{let e=c;!u&&typeof window<`u`&&window.location?.href&&(e=P(window.location.href));let t=p(e,typeof window<`u`?window.location?.href:void 0);if(t)return d||(d=!0,h(t,{reload:!1})),t;throw Error(`No locale found. Read the docs https://paraglidejs.com/errors#no-locale-found`)};function p(e,t){let n;for(let t of e){if(t===`cookie`)n=D();else if(t===`baseLocale`)n=`en`;else if(t===`preferredLanguage`&&!u)n=O();else if(I(t)&&F.has(t)){let e=F.get(t);if(e){let t=e.getLocale();if(t instanceof Promise)continue;if(t!==void 0)return v(t)}}let e=_(n);if(e)return e}}var m=e=>{e?window.location.href=e:window.location.reload()},h=(e,t)=>{let n={reload:!0,...t},r;try{r=f()}catch{}let i=[],a=c;!u&&typeof window<`u`&&window.location?.href&&(a=P(window.location.href));for(let t of a)if(t===`cookie`){if(u||typeof document>`u`||typeof window>`u`)continue;let t=`${o}=${e}; path=/; max-age=${s}`;document.cookie=t,T()}else if(t===`baseLocale`)continue;else if(I(t)&&F.has(t)){let n=F.get(t);if(n){let r=n.setLocale(e);r instanceof Promise&&(r=r.catch(e=>{throw Error(`Custom strategy "${t}" setLocale failed.`,{cause:e})}),i.push(r))}}let l=()=>{!u&&n.reload&&window.location&&e!==r&&m(void 0)};if(i.length)return Promise.all(i).then(()=>{l()});l()},g=()=>typeof window<`u`?window.location.origin:`http://fallback.com`;function _(e){if(typeof e!=`string`)return;let t=e.toLowerCase();for(let e of a)if(e.toLowerCase()===t)return e}function v(e){let t=_(e);if(t)return t;throw Error(`Invalid locale: ${e}. Expected one of: ${a.join(`, `)}`)}function y(e){return e}function b(e,t){return e.exec(t.href)}var x=o.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),S=RegExp(`(?:^|;\\s*)${x}=([^;]*)`),C=Symbol(),w=C;function T(){w=C}function E(){typeof queueMicrotask==`function`?queueMicrotask(T):Promise.resolve().then(T)}function D(){if(typeof document>`u`)return;if(w!==C)return w;let e=document.cookie.match(S)?.[1];return w=_(e),E(),w}function O(){if(!navigator?.languages?.length)return;let e=navigator.languages.map(e=>({fullTag:e,baseTag:e.split(`-`)[0]}));for(let t of e){let e=_(t.fullTag);if(e)return e;let n=_(t.baseTag);if(n)return n}}function k(e){return A(e)}function A(e){let t=y(typeof e==`string`?new URL(e,g()):new URL(e)),n=t.pathname.split(`/`).filter(Boolean);return n.length>0&&_(n[0])&&(t.pathname=`/`+n.slice(1).join(`/`)),y(t)}var j,M;function N(e){if(l.length===0)return;let t=typeof e==`string`?e:e.href;if(j===t)return M;let n=y(new URL(t,`http://example.com`)),r=k(n),a=r.href===n.href?[n]:[n,r],o;for(let e of a){for(let t of l)if(b(new i(t.match,e.href),e)){o=t;break}if(o)break}return j=t,M=o,o}function P(e){let t=N(e);return t&&t.exclude!==!0&&Array.isArray(t.strategy)?t.strategy:c}var F=new Map;function I(e){return typeof e==`string`&&/^custom-[A-Za-z0-9_-]+$/.test(e)}var L=e({locale:`en`});function R(){let e=t(L).locale;try{let e=f();if(r.includes(e))return e}catch{}return r.includes(e)?e:`en`}async function z(e){if(r.includes(e)){await h(e,{reload:!1});try{localStorage.setItem(`dsi.locale`,e)}catch{}L.locale=e}}function B(e){t(L).locale;try{let t=f();if(r.includes(t))return e()}catch{}return e()}var V={get data(){return n.data},get error(){return n.error},get form(){return n.form},get params(){return n.params},get route(){return n.route},get state(){return n.state},get status(){return n.status},get url(){return n.url}};export{f as a,B as i,R as n,z as r,V as t};