@taewooopark/agent-blackbox 0.47.0 → 0.47.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,89 @@
1
+ # Agent-Blackbox
2
+
3
+ **Open your coding agent's black box.**
4
+
5
+ A **local-first flight recorder and context-efficiency profiler** for **[Claude Code](https://www.claude.com/product/claude-code)** and **[OpenCode](https://opencode.ai)**. It turns every agent run into a **live, replayable map** of what the agent actually *did* — what it read, changed, ran, decided, delegated, blocked on, and verified — reconstructed from observed events, not from the agent's own summary. Then it **scores how economically the run used its context window** and tells you, concretely, how to make the next one cheaper and faster.
6
+
7
+ Everything runs on your machine. **No API key. Nothing leaves your computer.**
8
+
9
+ <p align="center">
10
+ <img src="https://raw.githubusercontent.com/TaewoooPark/Agent-Blackbox/main/docs/screenshots/session-map.jpeg" alt="Agent-Blackbox session map — a real multi-agent run rendered as a monochrome Mark Lombardi network of hollow rings and sweeping arcs, with a context-efficiency score on the right." width="100%">
11
+ </p>
12
+
13
+ > *"The transcript is what the agent said. The black box is what it did — and what it cost."*
14
+
15
+ ## Quickstart
16
+
17
+ One command (needs Node 20+):
18
+
19
+ ```bash
20
+ # Record Claude Code — nothing to install; the daemon tails the session
21
+ # transcripts it already writes (~/.claude/projects/)
22
+ npx @taewooopark/agent-blackbox up --host claude-code
23
+
24
+ # …or record OpenCode (installs the recorder into OpenCode's global plugin dir)
25
+ npx @taewooopark/agent-blackbox up
26
+
27
+ # …or record both hosts at once, into one dashboard
28
+ npx @taewooopark/agent-blackbox up --host all
29
+ ```
30
+
31
+ It starts a local daemon and **opens the dashboard** at `http://127.0.0.1:5173/`. Now use your agent exactly the way you already do — the map fills in live:
32
+
33
+ ```bash
34
+ claude # Claude Code, in any folder — zero setup, just run it
35
+ opencode # …or OpenCode (terminal or the desktop app)
36
+ ```
37
+
38
+ Stop recording any time with `npx @taewooopark/agent-blackbox uninstall`.
39
+
40
+ ## Why
41
+
42
+ You can't just **ask** an agent what a task cost. A 2026 study of eight frontier models on agentic coding found they predict their own token usage with a correlation of just **0.39 — and systematically underestimate** the bill; the same task varies **up to 30×** in tokens, and agentic runs burn **~1000× more tokens** than ordinary coding. So don't ask — **measure.**
43
+
44
+ <sub>Bai et al., *How Do AI Agents Spend Your Money?*, [arXiv:2604.22750](https://arxiv.org/abs/2604.22750) (2026).</sub>
45
+
46
+ ## What you get
47
+
48
+ | Feature | What it does |
49
+ |---|---|
50
+ | **Live session map** | the run forms in real time — reads, edits, commands, subagents, decisions — over a WebSocket, no refresh |
51
+ | **Replay** | scrub the timeline to any moment; the graph and files rewind to that exact point |
52
+ | **Subagent genealogy** | real delegations fork into their own lane, attributed to the subagent that did the work |
53
+ | **Context-efficiency score** | cache reuse, redundant re-reads, read-vs-edit amplification, oversized tool dumps, retry waste — with reclaimable tokens |
54
+ | **Concrete fixes** | rule-based by default, or tailored by a **free/local model with no API key** — and optionally written back to `AGENTS.md` so the next run avoids the waste |
55
+ | **Handoff export** | one-click Markdown summary (objective, files, decisions, blockers, next step) to resume elsewhere |
56
+ | **Local-first** | traces stay on your machine; prompts, secrets, and file contents are redacted by default |
57
+
58
+ <p align="center">
59
+ <img src="https://raw.githubusercontent.com/TaewoooPark/Agent-Blackbox/main/docs/screenshots/features.jpeg" alt="Four-panel overview: the live session map, the same console in dark mode, the context-efficiency co-pilot with metric meters, and the handoff export panel." width="100%">
60
+ </p>
61
+
62
+ ## Hosts
63
+
64
+ - **Claude Code** — **no install at all.** The daemon tails the JSONL transcripts the CLI already writes, so any folder, any session is recorded the moment you run `claude`. Add `--optimize` to also install the opt-in in-run actuator hooks.
65
+ - **OpenCode** — records via a recorder dropped into OpenCode's **global** plugin directory (`~/.config/opencode/plugins/`), so any session is captured, the desktop app included. Scope to one project with `up --project <dir>`.
66
+
67
+ ## Common flags
68
+
69
+ ```bash
70
+ up --host claude-code|opencode|all # which agent(s) to record (default: opencode)
71
+ up --suggest free # tailored fixes from a rotating pool of free models
72
+ up --port 48000 --ui-port 4000 # custom daemon / dashboard ports
73
+ up --no-open # don't auto-open the browser
74
+ uninstall # remove the global recorder (+ any Claude Code hooks)
75
+ ```
76
+
77
+ ## Documentation
78
+
79
+ Full docs, screenshots, architecture, and the optimization actuator:
80
+ **https://github.com/TaewoooPark/Agent-Blackbox**
81
+
82
+ [English](https://github.com/TaewoooPark/Agent-Blackbox/blob/main/README.md) ·
83
+ [한국어](https://github.com/TaewoooPark/Agent-Blackbox/blob/main/README.ko.md) ·
84
+ [中文](https://github.com/TaewoooPark/Agent-Blackbox/blob/main/README.zh.md) ·
85
+ [日本語](https://github.com/TaewoooPark/Agent-Blackbox/blob/main/README.ja.md)
86
+
87
+ ## License
88
+
89
+ MIT © [Taewoo Park](https://taewoopark.com)
package/dist/cli.js CHANGED
@@ -1716,7 +1716,7 @@ async function startClaudeCodeTailer(sink, options = {}) {
1716
1716
  const homeDir = options.homeDir ?? homedir();
1717
1717
  const projectsDir = options.projectsDir ?? defaultProjectsDir(homeDir);
1718
1718
  const pollMs = options.pollMs ?? 700;
1719
- const backfillCutoff = Date.now() - (options.backfillDays ?? 2) * 24 * 60 * 60 * 1e3;
1719
+ const backfillCutoff = Date.now() - (options.backfillDays ?? 0) * 24 * 60 * 60 * 1e3;
1720
1720
  const files = /* @__PURE__ */ new Map();
1721
1721
  const seqByRun = /* @__PURE__ */ new Map();
1722
1722
  const nextSeq = (runId) => {
@@ -1792,17 +1792,31 @@ async function startClaudeCodeTailer(sink, options = {}) {
1792
1792
  return entries.filter((e) => e.endsWith(".jsonl")).map((e) => join(projectsDir, e));
1793
1793
  };
1794
1794
  const initial = await listTranscripts();
1795
- const recent = [];
1796
1795
  for (const f of initial) {
1797
1796
  try {
1798
- if ((await stat(f)).mtimeMs >= backfillCutoff)
1799
- recent.push(f);
1797
+ ensureFile(f).offset = (await stat(f)).size;
1800
1798
  } catch {
1801
1799
  }
1802
1800
  }
1803
- recent.sort((a, b) => Number(basename(a).startsWith("agent-")) - Number(basename(b).startsWith("agent-")));
1804
- for (const f of recent)
1805
- await drainFile(f);
1801
+ if ((options.backfillDays ?? 0) > 0) {
1802
+ const recent = [];
1803
+ for (const f of initial) {
1804
+ try {
1805
+ if ((await stat(f)).mtimeMs >= backfillCutoff)
1806
+ recent.push(f);
1807
+ } catch {
1808
+ }
1809
+ }
1810
+ recent.sort((a, b) => Number(basename(a).startsWith("agent-")) - Number(basename(b).startsWith("agent-")));
1811
+ for (const f of recent) {
1812
+ const state = files.get(f);
1813
+ if (state) {
1814
+ state.offset = 0;
1815
+ state.buffer = "";
1816
+ }
1817
+ await drainFile(f);
1818
+ }
1819
+ }
1806
1820
  let running = true;
1807
1821
  const tick = async () => {
1808
1822
  if (!running)
@@ -0,0 +1 @@
1
+ :root{color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;--card-bg:transparent;--card-border-color:var(--hair);--card-radius:2px;--card-shadow:none;--card-blur:none;--fs-title:14px;--fs-body:12px;--fs-label:9.5px;--bg:#f2f2f2;--bg-elevated:#ececec;--panel-grad:transparent;--scrim:#0006;--surface-strong:#00000008;--surface-soft:#00000005;--surface-tint:#00000006;--surface-tint-faint:#00000004;--ink-line:#0000008c;--hair:#00000029;--border:#00000029;--border-strong:#0000004d;--border-contrast:#00000080;--fill-subtle:#0000000d;--fill-hover:#00000012;--node-hover:#0000001a;--control-fill:#0003;--control-fill-hover:#00000061;--dot-fill:var(--text);--tick-fill:var(--text-muted);--fillbar:#2a2a2a;--text:#191919;--text-heading:#191919;--text-secondary:#5c5c5c;--text-muted:#8c8c8c;--text-faint:#bcbcbc;--action-bg:transparent;--action-fg:var(--text);--status-dot:#8c8c8c;--tick-empty:#0000002e;--tick-work:#00000057;--tick-decision:#0000006b;--tick-claim:#00000042;--danger:#8f342b;--danger-2:#8f342b;--danger-solid:#8f342b;--danger-bg:#8f342b1a;--danger-bg-2:#8f342b14;--danger-border:#8f342b6b;--danger-border-soft:#8f342b4d;--danger-border-strong:#8f342b99;--danger-bar:#a7463c;--danger-tint:#8f342b14;--success:#5c5c5c;--success-solid:#5c5c5c;--success-tint:#0000000a;--success-bar:var(--fillbar);--warn-bg:#0000000a;--warn-border:var(--hair);--warn-text:#5c5c5c;--bar-neutral:var(--hair);--bar-work:var(--hair);--bar-info:var(--border-strong);--bar-coord:var(--border-strong);--shadow-color:#0000002e;font-family:Spectral,Georgia,Times New Roman,serif;font-weight:400}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;font-size:var(--fs-body);margin:0;overflow:hidden}button{font:inherit}.shell{background:var(--bg);flex-direction:column;height:100vh;min-height:100vh;display:flex;overflow:hidden}.topbar{color:var(--text);background:0 0;border-bottom:0;justify-content:space-between;align-items:center;gap:14px;min-height:50px;padding:10px 16px 8px;display:flex}.topbar strong{font-size:var(--fs-title);letter-spacing:0;text-overflow:ellipsis;white-space:nowrap;max-width:min(620px,70vw);line-height:1.2;display:block;overflow:hidden}.topbarStatus{flex:none;align-items:center;gap:6px;display:flex}.statusChip{background:var(--card-bg);border:1px solid var(--card-border-color);border-radius:var(--card-radius);color:var(--text-secondary);font-size:var(--fs-body);white-space:nowrap;align-items:center;gap:5px;padding:4px 9px;font-weight:700;display:inline-flex}.runPicker{background:var(--card-bg);border:1px solid var(--card-border-color);border-radius:var(--card-radius);color:var(--text-heading);cursor:pointer;font-size:var(--fs-body);max-width:240px;padding:4px 9px;font-weight:700}.runPicker:hover{border-color:var(--border-strong)}.topbarAction{background:var(--action-bg);border:1px solid var(--border-strong);border-radius:var(--card-radius);color:var(--action-fg);cursor:pointer;font-size:var(--fs-body);padding:4px 11px;font-weight:700}.topbarAction:disabled{cursor:not-allowed;opacity:.4}.themeToggle{background:var(--card-bg);border:1px solid var(--card-border-color);border-radius:var(--card-radius);color:var(--text-heading);cursor:pointer;font-size:var(--fs-title);justify-content:center;align-items:center;min-height:28px;padding:4px 8px;line-height:1;display:inline-flex}.themeToggle:hover{border-color:var(--border-strong)}.handoffOverlay{background:var(--scrim);z-index:50;justify-content:center;align-items:center;padding:40px;display:flex;position:fixed;inset:0}.handoffPanel{background:var(--card-bg);border:1px solid var(--card-border-color);border-radius:var(--card-radius);box-shadow:var(--card-shadow);width:min(720px,90vw);max-height:80vh;-webkit-backdrop-filter:var(--card-blur);backdrop-filter:var(--card-blur);flex-direction:column;padding:14px;display:flex;overflow:hidden}.handoffHeader{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.handoffActions{gap:6px;display:flex}.handoffActions button{background:var(--card-bg);border:1px solid var(--card-border-color);border-radius:var(--card-radius);color:var(--text-heading);cursor:pointer;font-size:var(--fs-body);padding:4px 10px;font-weight:700}.handoffBody{background:var(--surface-soft);border:1px solid var(--card-border-color);border-radius:var(--card-radius);color:var(--text-heading);font-size:var(--fs-body);white-space:pre-wrap;word-break:break-word;margin:0;padding:12px;line-height:1.5;overflow:auto}.statusChip.host{color:var(--text-heading);text-transform:lowercase}.statusChip.state{text-transform:capitalize}.statusDot{background:var(--status-dot);border-radius:999px;width:6px;height:6px}.state-active .statusDot{background:var(--success-solid)}.state-idle .statusDot{background:var(--status-dot)}.state-error{color:var(--danger)}.state-error .statusDot{background:var(--danger-solid)}.statusChip.risk{background:var(--danger-bg);border-color:var(--danger-border);color:var(--danger)}button.statusChip{cursor:pointer;font:inherit}button.statusChip:hover{border-color:var(--danger-border-strong)}.stats{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.metric{background:var(--card-bg);border:1px solid var(--card-border-color);border-radius:var(--card-radius);min-width:60px;padding:5px 7px}.metric span{color:var(--text-muted);font-size:var(--fs-body);margin:0}.metric strong{color:var(--text);font-size:var(--fs-title)}.metric.ok strong{color:var(--success)}.metric.risk strong{color:var(--danger-2)}.banner{background:var(--warn-bg);border-bottom:1px solid var(--warn-border);color:var(--warn-text);font-size:var(--fs-body);padding:7px 16px}.workspace{flex:auto;grid-template-columns:190px minmax(0,1fr) 324px;gap:12px;min-height:0;padding:0 14px 8px;display:grid;position:relative;overflow:hidden}.fileEdgeLayer{pointer-events:none;z-index:5;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.fileEdge{fill:none;opacity:.16;stroke:var(--text);stroke-linecap:round;stroke-width:1.1px;transition:opacity .14s,stroke-width .14s}.fileEdgeLayer.hasFocus .fileEdge:not(.focused){opacity:.04}.fileEdge.focused{opacity:.85;stroke-width:1.8px}.lanes{background:var(--card-bg);border:1px solid var(--card-border-color);border-radius:var(--card-radius);box-shadow:var(--card-shadow);height:100%;min-height:0;-webkit-backdrop-filter:var(--card-blur);backdrop-filter:var(--card-blur);padding:14px;overflow-y:auto}.copilot{height:100%;min-height:0;overflow:hidden auto}h2{color:var(--text-heading);font-size:var(--fs-body);letter-spacing:0;text-transform:uppercase;margin:0 0 8px}h3{font-size:var(--fs-title);overflow-wrap:anywhere;margin:6px 0 8px;line-height:1.25}.muted{color:var(--text-muted);font-size:var(--fs-body)}.lane{background:var(--card-bg);border:1px solid var(--card-border-color);border-radius:var(--card-radius);color:var(--text);cursor:pointer;text-align:left;grid-template-columns:18px minmax(0,1fr) auto;align-items:center;gap:7px;width:100%;min-height:36px;margin-bottom:7px;padding:7px;display:grid}.lane.active,.lane:hover{border-color:var(--border-contrast);box-shadow:0 8px 28px var(--shadow-color)}.laneMarker{background:var(--text-heading);border:3px solid var(--surface-strong);box-shadow:0 0 0 1px var(--border-strong);border-radius:999px;width:12px;height:12px;display:block}.laneMain{gap:1px;min-width:0;display:grid}.laneMain strong{color:var(--text);font-size:var(--fs-body);text-overflow:ellipsis;white-space:nowrap;line-height:1.15;overflow:hidden}.laneMain span{color:var(--text-muted);font-size:var(--fs-label);text-transform:uppercase;font-weight:700}.laneBadges{justify-content:end;align-items:center;display:flex}.timeline{margin-top:18px}.timelineBar{background:var(--card-bg);border:1px solid var(--card-border-color);border-radius:var(--card-radius);box-shadow:var(--card-shadow);-webkit-backdrop-filter:var(--card-blur);backdrop-filter:var(--card-blur);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;margin:0 14px 12px;padding:7px 12px;display:grid}.timelineBar .ticks{grid-column:1;gap:2px;min-width:0;display:flex;overflow:hidden}.timelineBar .tick{border-radius:2px;flex:1 1 0;min-width:0;height:18px}.timelineControls{grid-column:2;align-items:center;gap:10px;display:flex}.timelineLive{background:var(--fill-subtle);border:1px solid var(--card-border-color);border-radius:var(--card-radius);color:var(--text-heading);cursor:pointer;font-size:var(--fs-body);white-space:nowrap;padding:4px 10px;font-weight:700}.timelineLive:disabled{color:var(--success);cursor:default}.timelineRange{width:160px}.timelineLabel{color:var(--text-muted);font-size:var(--fs-label);font-variant-numeric:tabular-nums;white-space:nowrap}.tokenPanel{background:var(--card-bg);border:1px solid var(--card-border-color);border-radius:var(--card-radius);box-shadow:var(--card-shadow);-webkit-backdrop-filter:var(--card-blur);backdrop-filter:var(--card-blur);margin-top:16px;padding:10px}.tokenTotal{color:var(--text);font-size:var(--fs-title);margin-bottom:8px;line-height:1.2;display:block}.tokenRows{gap:3px;display:grid}.tokenRow{color:var(--text-muted);font-size:var(--fs-body);justify-content:space-between;align-items:center;display:flex}.tokenRow strong{color:var(--text-heading);font-size:var(--fs-body)}.contextPanel{background:var(--card-bg);border:1px solid var(--card-border-color);border-radius:var(--card-radius);box-shadow:var(--card-shadow);-webkit-backdrop-filter:var(--card-blur);backdrop-filter:var(--card-blur);padding:12px}.contextHead{align-items:center;gap:10px;margin-bottom:10px;display:flex}.contextScoreBig{letter-spacing:-.02em;font-size:30px;font-weight:700;line-height:.9}.contextHeadMeta{gap:2px;min-width:0;display:grid}.contextHeadMeta h2{margin:0}.contextHeadline{color:var(--text-muted);font-size:var(--fs-label);line-height:1.3}.contextTopFixes{gap:6px;margin-bottom:10px;display:grid}.contextTopFix{background:var(--fill-subtle);border:0;border-left:2px solid var(--text-faint);cursor:pointer;text-align:left;border-radius:5px;gap:2px;padding:7px 9px;display:grid}.contextTopFix:hover{background:var(--fill-hover)}.contextTopFix.severity-warn{border-left-color:var(--warn-text)}.contextTopFix.severity-bad{border-left-color:var(--danger)}.contextTopFixTitle{color:var(--text-heading);font-size:var(--fs-body);font-weight:700}.contextTopFixAction{color:var(--text-secondary);font-size:var(--fs-label);line-height:1.45}.contextAllClear{color:var(--success);font-size:var(--fs-label);margin:0 0 10px;line-height:1.4}.contextMetrics{gap:6px;display:grid}.contextMetricWrap{gap:4px;display:grid}.contextSuggestion{background:var(--fill-subtle);border-left:2px solid var(--text-faint);color:var(--text-secondary);font-size:var(--fs-label);border-radius:4px;margin:0 0 2px;padding:6px 8px;line-height:1.45}.contextSuggestion.severity-warn{border-left-color:var(--warn-text)}.contextSuggestion.severity-bad{border-left-color:var(--danger)}.contextSuggestionSource{color:var(--text-faint);text-transform:uppercase}.contextAi{gap:5px;margin-bottom:10px;display:grid}.contextAiButton{background:var(--fill-subtle);border:1px solid var(--card-border-color);border-radius:var(--card-radius);color:var(--text-heading);cursor:pointer;font-size:var(--fs-body);padding:5px 9px;font-weight:700}.contextAiButton:hover:not(:disabled){border-color:var(--border-strong)}.contextAiButton:disabled{cursor:default;opacity:.6}.contextAiNote{color:var(--text-muted);font-size:var(--fs-label);line-height:1.4}.optimizeButton{background:var(--text-heading);border:1px solid var(--text-heading);border-radius:var(--card-radius);color:var(--bg);cursor:pointer;text-align:left;gap:1px;padding:7px 10px;transition:opacity .12s;display:grid}.optimizeButton:hover:not(:disabled){opacity:.86}.optimizeButton:disabled{cursor:default;opacity:.4}.optimizeButtonLabel{font-size:var(--fs-body);font-weight:700}.optimizeButtonHint{font-size:var(--fs-label);opacity:.8}.optimizeOverlay{background:var(--scrim);z-index:60;justify-content:center;align-items:center;padding:40px;display:flex;position:fixed;inset:0}.optimizePanel{background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--card-radius);flex-direction:column;gap:12px;width:min(560px,92vw);max-height:84vh;padding:18px;display:flex;overflow:hidden}.optimizeHeader{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.optimizeHeaderText h2{font-size:var(--fs-title);margin:0 0 4px}.optimizeSub{color:var(--text-secondary);font-size:var(--fs-body);margin:0;line-height:1.5}.optimizeSub code{background:var(--surface-strong);border-radius:2px;padding:0 3px}.optimizeClose{border:1px solid var(--card-border-color);border-radius:var(--card-radius);color:var(--text-muted);cursor:pointer;font-size:var(--fs-body);background:0 0;flex:none;padding:4px 7px;line-height:1}.optimizeClose:hover:not(:disabled){border-color:var(--border-strong);color:var(--text-heading)}.optimizeClose:disabled{cursor:default;opacity:.4}.optimizeStatus{color:var(--text-secondary);font-size:var(--fs-body);margin:0;line-height:1.5}.optimizeStatus.error{color:var(--danger)}.optimizeStatus.done{color:var(--text-heading)}.optimizeMeta{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.optimizeBadge{border:1px solid var(--card-border-color);font-size:var(--fs-label);letter-spacing:.04em;text-transform:uppercase;border-radius:999px;padding:2px 8px;font-weight:700}.optimizeBadge.on{background:var(--text-heading);border-color:var(--text-heading);color:var(--bg)}.optimizeBadge.off{color:var(--text-muted)}.optimizeReclaim{color:var(--text-secondary);font-size:var(--fs-label)}.optimizePath{color:var(--text-muted);font-size:var(--fs-label);margin-left:auto}.optimizeBlockLabel{color:var(--text-muted);font-size:var(--fs-label);letter-spacing:.05em;text-transform:uppercase;margin:0}.optimizeBlock{background:var(--surface-soft);border:1px solid var(--card-border-color);border-radius:var(--card-radius);color:var(--text);white-space:pre-wrap;word-break:break-word;margin:0;padding:12px;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:11px;line-height:1.55;overflow:auto}.optimizeFooter{align-items:center;gap:8px;margin-top:2px;display:flex}.optimizeApply{background:var(--text-heading);border:1px solid var(--text-heading);border-radius:var(--card-radius);color:var(--bg);cursor:pointer;font-size:var(--fs-body);padding:6px 12px;font-weight:700}.optimizeApply:hover:not(:disabled){opacity:.86}.optimizeApply:disabled{cursor:default;opacity:.5}.optimizeRevert{background:var(--danger-bg);border:1px solid var(--danger-border);border-radius:var(--card-radius);color:var(--danger);cursor:pointer;font-size:var(--fs-body);padding:6px 12px;font-weight:700}.optimizeRevert:hover:not(:disabled){border-color:var(--danger-border-strong)}.optimizeRevert:disabled{cursor:default;opacity:.5}.optimizeCancel{border:1px solid var(--card-border-color);border-radius:var(--card-radius);color:var(--text-secondary);cursor:pointer;font-size:var(--fs-body);background:0 0;margin-left:auto;padding:6px 12px}.optimizeCancel:hover:not(:disabled){border-color:var(--border-strong);color:var(--text-heading)}.optimizeCancel:disabled{cursor:default;opacity:.5}.contextTokensToggle{border:0;border-top:1px solid var(--card-border-color);color:var(--text-muted);cursor:pointer;font-size:var(--fs-body);background:0 0;justify-content:space-between;align-items:center;width:100%;margin-top:10px;padding:8px 0 0;display:flex}.contextTokensTotal{color:var(--text-heading);font-weight:700}.contextTokenRows{gap:3px;margin-top:6px;display:grid}.contextMetric{cursor:pointer;text-align:left;background:0 0;border:0;border-radius:5px;gap:3px;width:calc(100% + 8px);margin:0 -4px;padding:3px 4px;display:grid}.contextMetric:hover:not(:disabled){background:var(--fill-subtle)}.contextMetric:disabled{cursor:default}.contextMetricTop{font-size:var(--fs-body);justify-content:space-between;align-items:center;display:flex}.contextMetricLabel{color:var(--text-muted)}.contextMetricValue{color:var(--text-heading);font-weight:700}.contextBar{background:var(--fill-subtle);border-radius:999px;height:3px;display:block;overflow:hidden}.contextBarFill{background:var(--text-faint);border-radius:999px;height:100%;display:block}.status-good{color:var(--success)}.status-warn{color:var(--warn-text)}.status-bad{color:var(--danger)}.contextMetric.status-good .contextBarFill{background:var(--success)}.contextMetric.status-warn .contextBarFill{background:var(--warn-text)}.contextMetric.status-bad .contextBarFill{background:var(--danger)}.replayControls{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;display:grid}.replayControls input{accent-color:var(--text-heading);width:100%;min-width:0}.replayControls button,.glassInspector button{background:var(--card-bg);border:1px solid var(--card-border-color);border-radius:var(--card-radius);color:var(--text-heading);cursor:pointer;font-size:var(--fs-body);min-height:26px;padding:4px 8px}.replayControls button:disabled{color:var(--text-faint);cursor:not-allowed}.replayLabel{color:var(--text-muted);font-size:var(--fs-body);margin:8px 0}.ticks{grid-template-columns:repeat(12,1fr);gap:3px;display:grid}.tick{background:var(--tick-empty);border:0;border-radius:3px;height:16px;padding:0;display:block}.tick.seen{box-shadow:inset 0 0 0 2px var(--surface-soft)}.tick-work{background:var(--tick-work)}.tick-decision{background:var(--tick-decision)}.tick-risk{background:var(--danger-solid)}.tick-success{background:var(--success-solid)}.tick-claim{background:var(--tick-claim)}.sessionMap{height:100%;min-height:0;padding:14px 0 0;position:relative;overflow:hidden}.workflowHeader{justify-content:space-between;align-items:center;gap:12px;margin:0 0 10px;display:flex}.workflowHeader h2{margin-bottom:2px}.workflowHeader p{color:var(--text-muted);font-size:var(--fs-body);margin:0;line-height:1.3}.workflowTools{flex:none;align-items:center;gap:7px;display:flex}.workflowTools>span{background:var(--card-bg);border:1px solid var(--card-border-color);border-radius:var(--card-radius);color:var(--text-secondary);font-size:var(--fs-body);flex:none;padding:5px 9px;font-weight:700}.workflowTools button{background:var(--action-bg);border:1px solid var(--border-strong);border-radius:var(--card-radius);box-shadow:0 8px 22px var(--shadow-color);color:var(--action-fg);cursor:pointer;font-size:var(--fs-body);min-height:28px;padding:4px 9px;font-weight:700}.zoomControls{background:var(--card-bg);border:1px solid var(--card-border-color);border-radius:var(--card-radius);flex:none;align-items:stretch;display:flex;overflow:hidden}.workflowTools .zoomControls button{box-shadow:none;color:var(--text);background:0 0;border:0;border-radius:0;min-width:30px;padding:4px 8px}.workflowTools .zoomControls button:hover:not(:disabled){background:var(--fill-hover)}.workflowTools .zoomControls button:disabled{color:var(--text-faint);cursor:default}.workflowTools .zoomControls button:nth-child(2){border-left:1px solid var(--card-border-color);border-right:1px solid var(--card-border-color);font-variant-numeric:tabular-nums;min-width:48px}.workflowTools .traceToggle{align-items:center;gap:6px;display:inline-flex}.workflowTools .traceToggle .traceDot{background:var(--text-faint);border-radius:50%;flex:none;width:7px;height:7px}.workflowTools .traceToggle.active{background:var(--text);border-color:var(--text);color:var(--bg)}.workflowTools .traceToggle.active .traceDot{background:var(--bg);animation:1.4s ease-in-out infinite tracePulse}@keyframes tracePulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.3;transform:scale(.6)}}@media (prefers-reduced-motion:reduce){.workflowTools .traceToggle.active .traceDot{animation:none}}.mapCanvas{justify-content:center;align-items:flex-start;height:calc(100vh - 104px);min-height:calc(100vh - 104px);padding:26px;display:flex;position:relative;overflow:hidden}.mapColumn,.workflowTree{z-index:2;grid-column:1;min-width:0;position:relative}.workflowTree{width:var(--tree-render-width,100%);height:var(--tree-render-height,100%);overscroll-behavior:contain;scrollbar-gutter:auto;padding:0;overflow:visible}.connectionLayer{pointer-events:none;z-index:1;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.mapEdge{fill:none;opacity:.32;stroke:var(--text);stroke-linecap:round;stroke-width:1.25px;transition:opacity .14s,stroke-width .14s}.mapCanvas.hasFocus .mapEdge:not(.focused),.mapCanvas.hasFocus .treeEdge:not(.focused){filter:blur(.2px);opacity:.09}.mapEdge.focused{opacity:1;stroke-width:2.05px}.treeEdge{fill:none;opacity:.32;stroke:var(--text);stroke-linecap:round;stroke-width:1.25px;transition:opacity .14s,stroke-width .14s}.treeEdge-trunk,.treeEdge-branch,.treeEdge-lane{opacity:.32}.treeEdge.focused{opacity:1;stroke-width:2.05px}.emptyWorkflow{background:var(--card-bg);border:1px solid var(--card-border-color);border-radius:var(--card-radius);box-shadow:var(--card-shadow);max-width:460px;-webkit-backdrop-filter:var(--card-blur);backdrop-filter:var(--card-blur);padding:18px}.emptySteps{gap:10px;margin:14px 0 6px;padding-left:18px;display:grid}.emptySteps li{color:var(--text-heading);font-size:var(--fs-body);line-height:1.4}.emptySteps code,.banner code{background:var(--fill-subtle);border:1px solid var(--card-border-color);font-family:Helvetica,Arial,sans-serif;font-size:var(--fs-label);overflow-wrap:anywhere;border-radius:6px;margin-top:4px;padding:3px 6px;display:inline-block}.banner code{margin-top:0}.emptyHint{margin-top:12px}.spine,.treeGrid{margin:0;padding:0;list-style:none;display:block;position:relative}.treeGrid{min-width:0;transform:translate(var(--tree-pan-x,0px), var(--tree-pan-y,0px)) scale(var(--tree-scale,1));transform-origin:0 0;transition:none}.mapCanvas.autoLayouting .treeGrid{transition:transform .42s cubic-bezier(.2,.8,.2,1)}.mapCanvas.following .treeGrid{transition:transform .24s cubic-bezier(.2,.8,.2,1)}.treeGrid.fit{min-width:0}.spine:before{background:var(--node-hover);content:"";width:1px;position:absolute;top:22px;bottom:22px;left:17px}.spineItem{min-height:36px;position:relative}.spineStep{background:var(--card-bg);border:1px solid var(--card-border-color);border-radius:var(--card-radius);box-shadow:var(--card-shadow);color:var(--text);cursor:pointer;text-align:left;width:100%;min-height:29px;-webkit-backdrop-filter:var(--card-blur);backdrop-filter:var(--card-blur);grid-template-columns:20px minmax(0,1fr) auto;align-items:center;gap:4px;padding:4px 5px;display:grid;position:relative;overflow:hidden}.treeStep.tone-neutral{box-shadow:var(--card-shadow), inset 3px 0 0 var(--bar-neutral)}.treeStep.tone-claim{box-shadow:var(--card-shadow), inset 3px 0 0 var(--bar-work)}.treeStep.tone-work{box-shadow:var(--card-shadow), inset 3px 0 0 var(--bar-info)}.treeStep.tone-decision{box-shadow:var(--card-shadow), inset 3px 0 0 var(--bar-coord)}.treeStep.tone-success{box-shadow:var(--card-shadow), inset 3px 0 0 var(--success-bar)}.treeStep.tone-success .stepMain strong{color:var(--success)}.treeStep.tone-risk{background:var(--danger-bg-2);border-color:var(--danger-border-soft);box-shadow:var(--card-shadow), inset 3px 0 0 var(--danger-bar)}.treeNode{cursor:grab;touch-action:none;will-change:transform;min-width:0;width:var(--node-width,132px);z-index:2;transition:border-color .14s,box-shadow .14s,filter .14s,opacity .14s,transform .42s cubic-bezier(.2,.8,.2,1);position:absolute}.treeNode:active{cursor:grabbing}.autoLayouting .treeNode{transition:transform .42s cubic-bezier(.2,.8,.2,1),box-shadow .16s,border-color .16s}.mapCanvas.nodeDragging .treeNode{transition:border-color .14s,box-shadow .14s,filter .14s,opacity .14s}.treeStep{min-height:29px}.treeGrid.fit .spineStep{grid-template-columns:minmax(0,1fr);min-height:34px;padding:8px 11px}.mapCanvas.hasFocus .treeNode:not(.selected):not(.agentFocused):not(.manualSelected):not(.fileFocused){filter:blur(.8px)grayscale();opacity:.16}.mapCanvas.hasFocus .treeNode.selected,.mapCanvas.hasFocus .treeNode.agentFocused,.mapCanvas.hasFocus .treeNode.manualSelected,.mapCanvas.hasFocus .treeNode.fileFocused{filter:none;opacity:1;z-index:7}.agentStep{background:var(--surface-soft);border-color:var(--border)}.agentStartCard{background:var(--card-bg);border:1px solid var(--card-border-color);border-radius:var(--card-radius);box-shadow:var(--card-shadow);color:var(--text-heading);cursor:pointer;text-align:left;min-height:26px;-webkit-backdrop-filter:var(--card-blur);backdrop-filter:var(--card-blur);grid-template-columns:13px minmax(0,1fr);align-items:center;gap:4px;padding:4px 5px;display:grid;overflow:hidden}.agentStartCard:hover,.agentStartCard.selected,.agentStartCard.manualSelected,.agentStartCard.agentFocused{border-color:var(--border-contrast);box-shadow:0 8px 28px var(--shadow-color)}.agentStemDot{background:var(--text-heading);border:3px solid var(--surface-strong);box-shadow:0 0 0 1px var(--border-strong);border-radius:999px;width:9px;height:9px;display:block}.agentStartText{gap:1px;min-width:0;display:grid}.agentStartText span,.agentPill{color:var(--text-muted);font-size:var(--fs-label);text-transform:uppercase;font-weight:700}.agentStartText strong{color:var(--text);font-size:var(--fs-body);text-overflow:ellipsis;white-space:nowrap;line-height:1.15;overflow:hidden}.agentMarker{background:var(--fill-subtle)}.agentMarker:after{background:var(--text-heading);content:"";border-radius:999px;width:6px;height:6px}.agentPill{text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:5px;min-width:0;display:flex;overflow:hidden}.agentPill span{background:var(--surface-tint);border:1px solid var(--border);color:var(--text-muted);font-size:var(--fs-label);text-transform:uppercase;border-radius:999px;flex:none;padding:1px 4px}.treeGrid.fit .stepBadges,.treeGrid.fit .stepMarker{display:none}.treeGrid.fit .agentStartCard{grid-template-columns:9px minmax(0,1fr);min-height:34px;padding:8px 11px}.treeGrid.fit .agentStemDot{width:7px;height:7px}.treeGrid.fit .stepMain strong,.treeGrid.fit .agentStartText strong{font-size:var(--fs-body)}.treeGrid.fit .stepInlineStats{font-size:var(--fs-label)}.spineStep:hover,.spineStep.selected,.spineStep.manualSelected,.spineStep.agentFocused{border-color:var(--border-contrast);box-shadow:0 8px 28px var(--shadow-color)}.treeNode.manualSelected{outline:1px solid var(--border-contrast);outline-offset:2px}.treeNode.agentFocused{background:var(--surface-strong)}.treeNode.selected,.treeNode.agentFocused,.treeNode.fileFocused{outline:1px solid var(--border-contrast);outline-offset:2px}.treeNode.expanded{box-shadow:0 18px 52px var(--shadow-color), inset 0 0 0 1px var(--fill-subtle);z-index:8;width:238px;min-height:62px}.treeGrid.fit .treeNode.expanded{width:228px}.selectionBox{background:var(--fill-subtle);border:1px solid var(--border-contrast);border-radius:var(--card-radius);pointer-events:none;z-index:5;position:absolute}.stepMarker{background:var(--surface-strong);border:1px solid var(--border-strong);color:var(--text-heading);font-size:var(--fs-body);z-index:1;border-radius:999px;justify-content:center;align-items:center;width:16px;height:16px;font-weight:700;display:flex;position:relative}.stepMain{gap:1px;min-width:0;display:grid}.stepMeta{color:var(--text-faint);font-size:var(--fs-label);font-weight:700}.stepMain strong{color:var(--text);font-size:var(--fs-body);overflow-wrap:anywhere;text-overflow:ellipsis;white-space:nowrap;line-height:1.15;overflow:hidden}.stepMain em,.stepInlineStats,.stepSummary,.agentStartDetail{display:none}.treeGrid.fit .stepInlineStats,.spineStep.expanded .stepInlineStats{color:var(--text-muted);font-size:var(--fs-label);text-overflow:ellipsis;white-space:nowrap;font-weight:700;line-height:1.1;display:block;overflow:hidden}.spineStep.expanded .stepSummary,.agentStartCard.expanded .agentStartDetail{color:var(--text-secondary);font-size:var(--fs-body);overflow-wrap:anywhere;text-transform:none;max-height:28px;margin-top:3px;font-weight:700;line-height:1.22;display:block;overflow:hidden}.stepCount{background:var(--surface-tint);border:1px solid var(--border);color:var(--text-muted);font-size:var(--fs-label);white-space:nowrap;border-radius:999px;align-self:start;padding:2px 5px;font-weight:700}.stepBadges{justify-content:end;align-self:center;align-items:center;gap:4px;display:flex}.tokenPill{background:var(--fill-subtle);border:1px solid var(--border);color:var(--text-secondary);font-size:var(--fs-label);white-space:nowrap;border-radius:999px;padding:2px 5px;font-weight:700}.fileStructure{background:var(--card-bg);border:1px solid var(--card-border-color);border-radius:var(--card-radius);box-shadow:var(--card-shadow);min-width:0;-webkit-backdrop-filter:var(--card-blur);backdrop-filter:var(--card-blur);margin-top:12px;padding:10px;position:relative;overflow:hidden}.fileAnchorRail{pointer-events:none;z-index:6;width:12px;position:absolute;top:74px;bottom:10px;left:-8px}.fileAnchorTick{background:var(--tick-fill);border:2px solid var(--surface-strong);box-shadow:0 0 0 1px var(--border);border-radius:999px;width:8px;height:8px;transition:background .14s,box-shadow .14s,opacity .14s;display:block;position:absolute;left:2px;transform:translateY(-50%)}.fileAnchorTick.selected,.fileAnchorTick.linked,.fileAnchorTick.agentLinked,.fileAnchorTick.eventLinked{background:var(--action-bg);box-shadow:0 0 0 2px var(--shadow-color), 0 8px 18px var(--shadow-color)}.fileStructure.hasFocus .fileAnchorTick{opacity:.18}.fileStructure.hasFocus .fileAnchorTick.selected,.fileStructure.hasFocus .fileAnchorTick.linked,.fileStructure.hasFocus .fileAnchorTick.agentLinked,.fileStructure.hasFocus .fileAnchorTick.eventLinked{opacity:1}.resizeHandle{cursor:col-resize;z-index:4;background:0 0;border:0;width:12px;padding:0;position:absolute;top:10px;bottom:10px;left:-6px}.resizeHandle:after{background:var(--control-fill);content:"";border-radius:999px;width:2px;height:44px;position:absolute;top:calc(50% - 22px);left:5px}.resizeHandle:hover:after{background:var(--control-fill-hover)}.finderChrome{gap:5px;margin:2px 0 8px;display:flex}.finderChrome span{background:var(--dot-fill);border-radius:999px;width:8px;height:8px;display:block}.fileHeader{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.fileHeader h2{margin:0}.fileHeader span{color:var(--text-muted);font-size:var(--fs-body);font-weight:700}.finderColumns{background:var(--surface-tint);border:1px solid var(--border);color:var(--text-muted);font-size:var(--fs-label);text-transform:uppercase;border-radius:7px 7px 0 0;grid-template-columns:minmax(0,1fr) 40px 52px;align-items:center;min-height:22px;padding:0 7px;font-weight:700;display:grid}.finderColumns span{border-left:1px solid var(--border);text-overflow:ellipsis;white-space:nowrap;min-width:0;padding-left:7px;overflow:hidden}.finderColumns span:first-child{border-left:0;padding-left:0}.fileRows{overscroll-behavior:contain;scrollbar-gutter:stable;max-height:min(430px,100vh - 194px);display:block;position:relative;overflow:auto}.finderRow{color:var(--text-heading);font-size:var(--fs-body);border:0;grid-template-columns:minmax(0,1fr) 40px 52px;align-items:center;gap:0;width:100%;min-height:23px;padding:0 7px;display:grid;position:relative}.finderRow:nth-child(2n){background:var(--surface-tint-faint)}.finderRow>span{border-left:1px solid var(--border);color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;min-width:0;padding-left:7px;overflow:hidden}.finderRow>span:first-child{border-left:0;padding-left:0}.folderRow{color:var(--text-heading);cursor:pointer;text-align:left;background:0 0;font-weight:700}.folderRow:hover{background:var(--fill-subtle)}.fileNode{color:var(--text-heading);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:5px}.fileNode:hover,.fileNode.selected,.fileNode.linked,.fileNode.agentLinked,.fileNode.eventLinked{background:var(--fill-subtle)}.fileNode.selected,.fileNode.linked,.fileNode.agentLinked,.fileNode.eventLinked{box-shadow:inset 0 0 0 1px var(--border-strong)}.fileStructure.hasFocus .finderRow{opacity:.24;transition:background .14s,opacity .14s}.fileStructure.hasFocus .folderRow{opacity:.38}.fileStructure.hasFocus .fileNode.selected,.fileStructure.hasFocus .fileNode.linked,.fileStructure.hasFocus .fileNode.agentLinked,.fileStructure.hasFocus .fileNode.eventLinked{opacity:1}.finderName{color:var(--text-heading);min-width:0;padding-left:var(--depth,0);align-items:center;gap:5px;display:flex}.finderName strong{font-size:var(--fs-body);text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}.disclosure{border-bottom:4px solid #0000;border-left:5px solid var(--text-faint);border-top:4px solid #0000;flex:none;width:0;height:0;display:block;transform:rotate(90deg)}.disclosure.collapsed{transform:rotate(0)}.disclosure.placeholder{border-left-color:#0000}.folderGlyph,.fileGlyph{border:1px solid var(--border-strong);flex:none;display:block}.folderGlyph{background:linear-gradient(to bottom, var(--surface-soft), var(--panel-grad)), var(--bg-elevated);border-radius:3px;width:13px;height:10px;position:relative}.folderGlyph:before{background:var(--bg-elevated);border:1px solid var(--border-strong);content:"";border-bottom:0;border-radius:3px 3px 0 0;width:7px;height:4px;position:absolute;top:-4px;left:1px}.fileGlyph{background:var(--surface-strong);border-radius:2px;width:10px;height:13px}.glassInspector{background:var(--card-bg);border:1px solid var(--card-border-color);border-radius:var(--card-radius);box-shadow:var(--card-shadow);z-index:6;width:296px;-webkit-backdrop-filter:var(--card-blur);backdrop-filter:var(--card-blur);gap:6px;padding:12px;display:grid;position:absolute;overflow:hidden}.glassKicker{color:var(--text-muted);font-size:var(--fs-body);text-transform:uppercase;font-weight:700}.glassInspector strong{color:var(--text);font-size:var(--fs-title);overflow-wrap:anywhere;line-height:1.2}.glassInspector p{color:var(--text-secondary);font-size:var(--fs-body);margin:0;line-height:1.25}.glassInspector .glassFullText{white-space:pre-wrap;max-height:none;padding-right:4px;overflow:auto}.glassMeta{flex-wrap:wrap;gap:5px;display:flex}.glassMeta span{background:var(--surface-tint);border:1px solid var(--border);color:var(--text-secondary);font-size:var(--fs-body);border-radius:999px;padding:3px 6px;font-weight:700}.glassInspector button{justify-self:start}.status{font-size:var(--fs-label);border-radius:999px;justify-self:start;padding:2px 6px;font-weight:700;display:inline-block}.status-active,.status-succeeded{background:var(--success-tint);color:var(--success)}.status-failed,.status-blocked{background:var(--danger-tint);color:var(--danger-2)}.status-needs_approval,.status-unknown,.status-pending{background:var(--bg-elevated);color:var(--text-secondary)}@media (width<=980px){.workspace{grid-template-columns:1fr}.lanes{min-height:auto}.sessionMap{min-height:720px}.mapCanvas{padding-right:calc(var(--files-width,220px) + 20px)}.resizeHandle,.connectionLayer{display:none}}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0d0d0d;--bg-elevated:#131313;--panel-grad:transparent;--scrim:#000000a8;--surface-strong:#ffffff0a;--surface-soft:#ffffff08;--surface-tint:#ffffff06;--surface-tint-faint:#ffffff04;--ink-line:#ffffff85;--hair:#ffffff26;--border:#ffffff26;--border-strong:#ffffff4d;--border-contrast:#ffffff80;--fill-subtle:#ffffff0d;--fill-hover:#ffffff14;--node-hover:#ffffff1a;--control-fill:#fff3;--control-fill-hover:#ffffff61;--dot-fill:var(--text);--tick-fill:var(--text-muted);--fillbar:#d6d6d6;--text:#e9e9e9;--text-heading:#f2f2f2;--text-secondary:#b0b0b0;--text-muted:#8a8a8a;--text-faint:#565656;--action-bg:transparent;--action-fg:var(--text);--status-dot:#6e6e6e;--tick-empty:#ffffff29;--tick-work:#ffffff57;--tick-decision:#ffffff70;--tick-claim:#ffffff3d;--danger:#b5675c;--danger-2:#b5675c;--danger-solid:#b5675c;--danger-bg:#b5675c29;--danger-bg-2:#b5675c1f;--danger-border:#b5675c66;--danger-border-soft:#b5675c4d;--danger-border-strong:#b5675c99;--danger-bar:#a85a4e;--danger-tint:#b5675c24;--success:#b0b0b0;--success-solid:#b0b0b0;--success-tint:#ffffff0d;--success-bar:var(--fillbar);--warn-bg:#ffffff0d;--warn-border:var(--hair);--warn-text:#b0b0b0;--bar-neutral:var(--hair);--bar-work:var(--hair);--bar-info:var(--border-strong);--bar-coord:var(--border-strong);--shadow-color:#00000080;--card-bg:transparent;--card-border-color:var(--hair);--card-blur:none;--card-shadow:none}.treeGrid.fit .treeStep,.treeGrid.fit .agentStartCard{min-height:20px;padding:3px 2px;box-shadow:none!important;background:0 0!important;border:none!important}.treeGrid.fit .spineStep{grid-template-columns:minmax(0,1fr) 11px;align-items:center;gap:9px;display:grid}.treeGrid.fit .spineStep .stepMain{text-align:right;order:1;align-items:flex-end}.treeGrid.fit .spineStep .stepMarker{order:2}.treeGrid.fit .treeStep .stepMarker{background:var(--bg);border:1px solid var(--ink-line);width:9px;min-width:9px;height:9px;box-shadow:none;color:#0000;border-radius:999px;padding:0;font-size:0;display:flex}.treeGrid.fit .stepMarker.agentMarker{background:var(--bg)}.treeGrid.fit .agentMarker:after{display:none}.treeStep.tone-risk .stepMarker{border-color:var(--danger);border-width:1.5px}.treeGrid.fit .stepMain{gap:1px}.treeGrid.fit .stepMain strong{color:var(--text);font-size:13px;font-weight:400}.treeStep.tone-risk .stepMain strong{color:var(--danger)}.treeGrid.fit .stepInlineStats{color:var(--text-secondary);font-size:10.5px;font-style:italic}.treeGrid.fit .agentPill{color:var(--text-muted);letter-spacing:.12em;text-transform:uppercase;font-size:9px}.treeGrid.fit .agentPill span{display:none}.treeGrid.fit .stepBadges{display:none!important}.treeGrid.fit .agentStartCard{grid-template-columns:minmax(0,1fr) 10px;gap:9px}.treeGrid.fit .agentStartCard .agentStartText{text-align:right;order:1}.treeGrid.fit .agentStartCard .agentStemDot{order:2}.treeGrid.fit .agentStemDot{background:var(--bg);border:1px solid var(--ink-line);box-shadow:none;width:9px;height:9px}.treeGrid.fit .treeNode.selected,.treeGrid.fit .treeNode.manualSelected,.treeGrid.fit .treeNode.agentFocused,.treeGrid.fit .treeNode.fileFocused{background:0 0;outline:none}.treeGrid.fit .treeNode.selected .stepMarker,.treeGrid.fit .treeNode.selected .agentStemDot,.treeGrid.fit .treeNode.fileFocused .stepMarker{background:var(--ink-line);border-color:var(--ink-line)}.treeGrid.fit .treeNode.selected .stepMain strong{text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:.5px}.treeEdge{stroke-width:1px;opacity:.5}.treeEdge-branch,.treeEdge-lane{stroke-dasharray:1.5 4;stroke-linecap:round;opacity:.5}.treeEdge.focused{stroke-width:1.4px;opacity:1}.fileEdge{stroke-width:1px;opacity:.26}.timelineBar{border:none;border-top:1px solid var(--hair);box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border-radius:0;margin:0 16px;padding:11px 4px 6px}.timelineBar .ticks{align-items:center;gap:3px;height:22px;position:relative}.timelineBar .ticks:before{content:"";background:var(--ink-line);opacity:.45;height:1px;position:absolute;top:50%;left:0;right:0}.timelineBar .tick{background:var(--tick-empty);border-radius:0;align-self:center;height:7px}.timelineBar .tick.seen{background:var(--tick-decision)}.timelineBar .tick.tick-risk{background:var(--danger);height:14px}.timelineLive{border:1px solid var(--hair);color:var(--text-secondary);background:0 0}.timelineLive:disabled{color:var(--text)}.timelineRange,input[type=range]{accent-color:var(--text)}button:focus-visible,select:focus-visible{outline:1px solid var(--border-contrast);outline-offset:2px}.runPicker{color:var(--text)}.glassInspector{background:var(--bg);border:1px solid var(--border-strong);box-shadow:0 14px 44px var(--shadow-color);z-index:60}.handoffPanel{background:var(--bg);border:1px solid var(--border-strong);box-shadow:0 14px 44px var(--shadow-color)}