@xiaolei.shawn/mcp-server 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -20,11 +20,13 @@ You can point the built-in dashboard server to any static bundle via `AL_DASHBOA
20
20
 
21
21
  - Canonical event capture with sequence ordering and timestamps
22
22
  - Gateway tools for low-friction agent instrumentation
23
- - Local dashboard server (`/api/sessions`, `/api/sessions/:key`)
23
+ - Local dashboard server + API
24
24
  - Session storage on local disk (`AL_SESSIONS_DIR`)
25
25
  - Local gateway API for middleware (`/api/gateway/*`)
26
26
  - Export session JSON with normalized snapshot (`agentlens export`)
27
27
  - Raw log adapter ingestion (`agentlens ingest`, `/api/ingest`) with duplicate suppression
28
+ - Canonical MCP session import + raw merge (`/api/import/mcp`, `/api/import/raw-merge`)
29
+ - Local deterministic analysis endpoints (follow-up generation, token breakdown, subagent graph)
28
30
 
29
31
  ## Install
30
32
 
@@ -90,12 +92,17 @@ API endpoints:
90
92
  - `GET /api/sessions`
91
93
  - `GET /api/sessions/:key`
92
94
  - `GET /api/sessions/:key/export`
95
+ - `GET /api/sessions/:key/token-breakdown`
96
+ - `GET /api/sessions/:key/subagent-graph`
93
97
  - `POST /api/gateway/begin`
94
98
  - `POST /api/gateway/act`
95
99
  - `POST /api/gateway/end`
96
100
  - `POST /api/ingest`
101
+ - `POST /api/import/mcp`
102
+ - `POST /api/import/raw-merge`
103
+ - `POST /api/followup/generate`
97
104
 
98
- If web assets are available (default `../webapp/dist`), they are served by the same server.
105
+ When installed from npm, the dashboard UI is bundled and served automatically. When running from the repo, the server uses `../webapp/dist` if present (run `pnpm run build` in the webapp first). Override with `AL_DASHBOARD_WEBAPP_DIR`.
99
106
 
100
107
  ## Automatic instrumentation defaults
101
108
 
@@ -115,6 +122,13 @@ To reduce agent friction:
115
122
  - `AL_WORKSPACE_ROOT` (default: `process.cwd()`): workspace root for safe path operations.
116
123
  - `AL_AUTO_GOAL` (default: `Agent task execution`): fallback goal for auto-started sessions.
117
124
  - `AL_AUTO_USER_PROMPT` (default: `Auto-instrumented run`): fallback prompt for auto-started sessions.
125
+ - `AL_AUTO_REPO` / `AL_AUTO_BRANCH`: optional repo/branch attached to auto-started sessions.
126
+ - `AL_INGEST_FINGERPRINT_MIN_CONFIDENCE` (default: `0.62`): min confidence for automatic merge matching.
127
+ - `AL_INGEST_FINGERPRINT_MAX_WINDOW_HOURS` (default: `72`): max time window for automatic merge matching.
128
+
129
+ Compatibility aliases:
130
+
131
+ - All `AL_*` variables above also accept `MCP_AL_*` aliases (for example `MCP_AL_SESSIONS_DIR`).
118
132
 
119
133
  ## Cursor/Codex MCP configuration example
120
134
 
@@ -134,6 +148,8 @@ To reduce agent friction:
134
148
 
135
149
  ## Build from source
136
150
 
151
+ From the [monorepo root](https://github.com/Xiaolei-Shawn/AgentLens):
152
+
137
153
  ```bash
138
154
  pnpm install
139
155
  pnpm --filter @xiaolei.shawn/mcp-server build
@@ -189,20 +205,20 @@ Notes:
189
205
  - Max time window (hours): `AL_INGEST_FINGERPRINT_MAX_WINDOW_HOURS` (default `72`)
190
206
  - Ingest output includes `merge_strategy` (`explicit_merge`, `adapted_session_id`, `fingerprint_match`, `new_session`) and optional `merge_confidence`.
191
207
 
192
- ## Publish checklist
208
+ ## Import and merge via dashboard API
193
209
 
194
- 1. Update version in `package.json`.
195
- 2. Confirm repository URLs in `package.json` are correct.
196
- 3. Run:
210
+ 1. Import one or more canonical MCP session logs:
197
211
 
198
212
  ```bash
199
- npm run build
200
- npm pack --dry-run
201
- npm publish --access public --dry-run
213
+ curl -X POST http://127.0.0.1:4317/api/import/mcp \
214
+ -H "content-type: application/json" \
215
+ -d '{"files":[{"name":"session.jsonl","content":"...jsonl content..."}]}'
202
216
  ```
203
217
 
204
- 4. Publish:
218
+ 2. Merge supplemental raw logs into an imported session:
205
219
 
206
220
  ```bash
207
- npm publish --access public
221
+ curl -X POST http://127.0.0.1:4317/api/import/raw-merge \
222
+ -H "content-type: application/json" \
223
+ -d '{"import_set_id":"iset_xxx","target_session_id":"sess_xxx","raw":"...raw log...","adapter":"auto","dedupe":true}'
208
224
  ```
@@ -0,0 +1 @@
1
+ :root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:dark;color:#ffffffeb;background-color:#1a1a1e;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;min-width:320px;min-height:100vh;background-color:#1a1a1e}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#ffffff1a;color:#fffffff2;cursor:pointer;transition:border-color .25s,background-color .2s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}#root{background-color:#1a1a1e}.load-session{min-height:100vh;position:relative;overflow-x:hidden;overflow-y:auto;display:flex;flex-direction:column;align-items:center;padding:0 1rem 2rem;box-sizing:border-box;width:100%;max-width:100vw;background:radial-gradient(circle at 15% 20%,rgba(56,189,248,.18),transparent 35%),radial-gradient(circle at 82% 70%,rgba(16,185,129,.14),transparent 38%),linear-gradient(165deg,#030712,#0a1629 42%,#040b17);background-size:200% 200%;animation:load-session-bg-shift 20s ease-in-out infinite;font-family:Space Grotesk,Avenir Next,Segoe UI,sans-serif}@keyframes load-session-bg-shift{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}.load-session h1{margin:0;font-size:clamp(2.2rem,4.5vw,3.2rem);line-height:1.04;letter-spacing:.02em;color:#e0f2fe;text-shadow:0 0 16px rgba(56,189,248,.28)}.load-session p{margin:0;color:#cbd5e1eb;font-size:.97rem;max-width:42ch;text-align:center}.file-input{position:absolute;width:0;height:0;opacity:0;pointer-events:none}.browse-btn{margin-top:.4rem;padding:.62rem 1.12rem;border-radius:999px;border:1px solid rgba(56,189,248,.64);background:linear-gradient(180deg,#22d3ee3d,#0891b24d);color:#ecfeff;font-size:.86rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;cursor:pointer;box-shadow:inset 0 0 0 1px #e0f2fe47,0 10px 24px #0284c757;transition:transform .18s ease,box-shadow .18s ease,filter .18s ease}.browse-btn:hover{transform:translateY(-1px);filter:brightness(1.08);box-shadow:inset 0 0 0 1px #e0f2fe52,0 12px 30px #06b6d470}.load-session__stars{position:absolute;inset:0;background-image:radial-gradient(1px 1px at 10% 18%,rgba(255,255,255,.62),transparent),radial-gradient(1px 1px at 28% 72%,rgba(186,230,253,.55),transparent),radial-gradient(1.2px 1.2px at 68% 22%,rgba(255,255,255,.58),transparent),radial-gradient(1.2px 1.2px at 82% 78%,rgba(56,189,248,.56),transparent),radial-gradient(1px 1px at 95% 44%,rgba(125,211,252,.48),transparent);background-size:230px 230px;opacity:.5;animation:load-session-drift 16s linear infinite;pointer-events:none}.load-session__nebula{position:absolute;border-radius:999px;filter:blur(42px);opacity:.28;pointer-events:none}.load-session__nebula--one{width:38vw;height:38vw;max-width:460px;max-height:460px;left:-8vw;top:-12vh;background:radial-gradient(circle,rgba(56,189,248,.7),transparent 64%);animation:load-session-orbit-a 14s ease-in-out infinite alternate}.load-session__nebula--two{width:34vw;height:34vw;max-width:420px;max-height:420px;right:-10vw;bottom:-16vh;background:radial-gradient(circle,rgba(16,185,129,.56),transparent 62%);animation:load-session-orbit-b 18s ease-in-out infinite alternate}.load-session__workflow-bg-pulse{position:absolute;inset:0;z-index:0;background:radial-gradient(ellipse 80% 50% at 70% 50%,rgba(56,189,248,.08),transparent 50%);animation:load-session-pulse 4s ease-in-out infinite;pointer-events:none}.load-session__hud-line{position:absolute;inset:10% 8%;border:1px solid rgba(56,189,248,.16);border-radius:24px;box-shadow:inset 0 0 0 1px #0891b21a;pointer-events:none}.load-session__travel{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:.82}.load-session__travel-svg{width:100%;height:100%}.load-session__travel-route{fill:none;stroke:url(#travelPath);stroke-width:6;stroke-linecap:round}.load-session__travel-route-dash{fill:none;stroke:#38bdf8d1;stroke-width:2.2;stroke-dasharray:8 10;stroke-linecap:round}.load-session__travel-node{fill:#22d3eeeb;stroke:#bae6fde6;stroke-width:1.2;animation:load-session-node-pulse 2.2s ease-in-out infinite}.load-session__travel-signal{fill:#22d3eef5;stroke:#e0f2fef2;stroke-width:1.4;filter:drop-shadow(0 0 8px rgba(34,211,238,.85)) drop-shadow(0 0 20px rgba(6,182,212,.55))}.load-session__header{position:relative;z-index:5;width:100%;max-width:1200px;display:flex;align-items:center;justify-content:space-between;padding:1rem .5rem;margin-bottom:.5rem}.load-session__brand{display:flex;align-items:center;gap:.5rem}.load-session__logo{position:relative;width:36px;height:36px;flex-shrink:0}.load-session__logo-outer{position:absolute;inset:0;border-radius:50%;background:linear-gradient(180deg,#38bdf8e6,#0e7490d9);box-shadow:0 0 12px #38bdf866}.load-session__logo-inner{position:absolute;inset:6px;border-radius:50%;background:#082f49f2;border:1px solid rgba(56,189,248,.5)}.load-session__brand-name{font-size:1.25rem;font-weight:700;color:#fff;letter-spacing:.02em}.load-session__workflow-status{display:flex;flex-direction:column;align-items:flex-end}.load-session__workflow-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:#94a3b8f2}.load-session__workflow-value{font-size:.95rem;color:#fff;font-weight:500}.load-session__profile{width:36px;height:36px;border-radius:50%;background:#47556999;border:1px solid rgba(148,163,184,.3)}.load-session__profile-icon{display:block;width:100%;height:100%;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='12' cy='7' r='4'/%3E%3C/svg%3E") center/60% no-repeat}.load-session__hero{position:relative;z-index:3;margin-bottom:2rem;width:100%;max-width:min(640px,calc(100vw - 2rem));margin-left:auto;margin-right:auto;box-sizing:border-box;display:flex;flex-direction:column;align-items:center}.load-session__hero-title{margin:0 0 .5rem;font-size:clamp(2rem,4vw,2.75rem);font-weight:700;color:#fff;letter-spacing:.02em;text-align:center}.load-session__hero-title-accent{color:#38bdf8}.load-session__hero-subtitle{margin:0;font-size:.95rem;color:#94a3b8f2;max-width:62ch;width:100%;text-align:center;display:block}.load-session__workflow{position:relative;z-index:3;width:100%;max-width:min(1000px,calc(100vw - 2rem));padding:0 1.5rem;display:grid;grid-template-columns:1fr 80px auto;grid-template-areas:"left connector right";align-items:center;gap:0 3.5rem;margin-bottom:2rem;margin-left:auto;margin-right:auto;box-sizing:border-box}.load-session__workflow-left{grid-area:left;display:flex;flex-direction:column;gap:.75rem;min-width:0;max-width:520px;justify-self:end}.load-session__workflow-connector{grid-area:connector;width:80px;min-width:80px;height:48px;display:flex;align-items:center;justify-content:center;position:relative;flex-shrink:0}.load-session__workflow-line{position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);height:2px;background:linear-gradient(90deg,#38bdf859,#38bdf826);border-radius:1px}.load-session__workflow-arrow{position:relative;z-index:1;width:0;height:0;border-top:8px solid transparent;border-bottom:8px solid transparent;border-left:12px solid rgba(56,189,248,.6)}.load-session__workflow-right{grid-area:right;display:flex;align-items:center;justify-content:flex-end;min-width:0}.load-session__open-cta{position:relative;padding:1rem 2rem;border-radius:14px;border:2px solid rgba(56,189,248,.4);background:linear-gradient(135deg,#0f172af2,#082f4999);color:#e0f2fe;font-size:1.1rem;font-weight:700;letter-spacing:.04em;cursor:pointer;overflow:hidden;transition:border-color .25s ease,transform .25s ease,box-shadow .25s ease;box-shadow:0 8px 32px #0284c740}.load-session__open-cta:disabled{cursor:not-allowed;opacity:.6;border-color:#64748b66}.load-session__open-cta:not(:disabled):hover{transform:translateY(-2px);border-color:#38bdf8b3;box-shadow:0 12px 40px #06b6d459}.load-session__open-cta-glow{position:absolute;inset:-6px;border-radius:18px;background:radial-gradient(circle at 50% 50%,rgba(56,189,248,.35),rgba(2,132,199,.15) 50%,transparent 75%);opacity:0;animation:none;pointer-events:none}.load-session__open-cta--ready .load-session__open-cta-glow{opacity:1;animation:load-session-open-glow 2s ease-in-out infinite}.load-session__open-cta--ready{border-color:#38bdf8a6;animation:load-session-open-pulse 2s ease-in-out infinite}.load-session__open-cta--ready:not(:disabled):hover{animation:none;transform:translateY(-2px) scale(1.02)}.load-session__open-cta--ready:not(:disabled):hover .load-session__open-cta-glow{animation:none;opacity:1}@keyframes load-session-open-glow{0%,to{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.08)}}@keyframes load-session-open-pulse{0%,to{box-shadow:0 8px 32px #0284c759,0 0 #38bdf833}50%{box-shadow:0 12px 48px #38bdf880,0 0 24px 2px #38bdf840}}.load-session__open-cta-text{position:relative;z-index:1}.load-session__workflow-right .load-session__open-cta{flex-shrink:0}.load-session__step{position:relative;z-index:3;width:min(640px,calc(100% - 2rem));display:flex;gap:1rem;margin-bottom:1.5rem;align-items:flex-start;margin-left:auto;margin-right:auto}.load-session__step--inline{width:100%;min-width:0;margin-bottom:0;max-width:100%}.load-session__step--inline .load-session__step-content{min-width:0}.load-session__step--inline .load-session__dropzone--primary{padding:.85rem 1.25rem;max-width:100%;box-sizing:border-box}.load-session__step--optional{opacity:.7}.load-session__step--optional.load-session__step--enabled{opacity:1}.load-session__step-badge{width:2.25rem;height:2.25rem;border-radius:50%;background:#64748b80;color:#94a3b8e6;font-size:1rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}.load-session__step-badge--active{background:#38bdf859;color:#7dd3fc;border:1px solid rgba(56,189,248,.5)}.load-session__step-content{flex:1;min-width:0;text-align:center}.load-session__step-content .load-session__dropzone--primary,.load-session__step-content .load-session__raw-section{margin-left:auto;margin-right:auto}.load-session__open-btn{margin-top:.75rem}.load-session__step-title{margin:0 0 .4rem;font-size:.95rem;font-weight:600;color:#fff}.load-session__step--optional .load-session__step-title{color:#94a3b8e6}.load-session__dropzone{position:relative;z-index:3;width:100%;border-radius:14px;border:1px solid rgba(56,189,248,.34);background:linear-gradient(180deg,#020c1ed6,#020617e0);box-shadow:inset 0 0 0 1px #0e749038,0 24px 50px #0206179e;padding:.75rem 1rem;text-align:center}.load-session__dropzone--primary{padding:.9rem 1.5rem;border:1px solid rgba(56,189,248,.45);background:linear-gradient(180deg,#0f172ae6,#082f4940);transition:border-color .2s ease,box-shadow .2s ease}.load-session__dropzone--primary:hover{border-color:#38bdf899;box-shadow:0 0 0 1px #38bdf833}.load-session__dropzone--browse{cursor:pointer}.load-session__drop-icon--doc{margin:0 auto .4rem;width:32px;height:32px;display:flex;align-items:center;justify-content:center;color:#7dd3fc}.load-session__drop-icon--doc svg{width:24px;height:24px}.load-session__drop-desc{margin:.2rem auto .5rem;font-size:.8rem;color:#94a3b8e6;max-width:100%;text-align:center}.load-session__browse-btn{display:inline-flex;align-items:center;gap:.4rem;padding:.6rem 1.25rem;border-radius:10px;border:1px solid rgba(56,189,248,.5);background:linear-gradient(180deg,#22d3ee40,#0891b259);color:#ecfeff;font-size:.9rem;font-weight:600;cursor:pointer;transition:transform .15s ease,filter .15s ease,box-shadow .15s ease}.load-session__browse-btn:hover{transform:translateY(-1px);filter:brightness(1.08);box-shadow:0 4px 16px #06b6d459}.load-session__browse-btn--secondary{background:#47556966;border-color:#64748b80;color:#cbd5e1e6}.load-session__browse-btn--secondary:disabled{opacity:.5;cursor:not-allowed;transform:none}.load-session__drop-formats{margin:.35rem 0 0;font-size:.72rem;color:#94a3b8d9;text-align:center}.load-session__selection-summary{display:flex;align-items:center;justify-content:center;gap:.5rem;flex-wrap:wrap;margin:.5rem 0 0}.load-session__selection-count{font-size:.9rem;color:#e0f2fef2}.load-session__selection-change{background:none;border:none;padding:0;color:#7dd3fc;font-size:.85rem;cursor:pointer;text-decoration:underline}.load-session__selection-change:hover{color:#bae6fd}.load-session__selection-list{margin-top:.75rem;text-align:left}.load-session__selection-ul{list-style:none;margin:0;padding:0;max-height:160px;overflow-y:auto;border-radius:8px;border:1px solid rgba(56,189,248,.25);background:#0f172a99}.load-session__selection-li{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.4rem .6rem;border-bottom:1px solid rgba(56,189,248,.1)}.load-session__selection-li:last-child{border-bottom:none}.load-session__selection-filename{font-size:.8rem;color:#e2e8f0f2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.load-session__selection-remove{flex-shrink:0;width:1.5rem;height:1.5rem;padding:0;border:none;border-radius:4px;background:#64748b66;color:#e2e8f0;font-size:1.1rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s ease}.load-session__selection-remove:hover{background:#ef444480}.load-session__selection-actions{display:flex;align-items:center;justify-content:center;gap:.75rem;margin-top:.6rem;flex-wrap:wrap}.load-session__import-btn{background:linear-gradient(180deg,#22d3ee4d,#0891b266);border-color:#38bdf899}.load-session__raw-target-name{margin:.5rem 0 0;font-size:.8rem;color:#94a3b8e6;text-align:center}.load-session__drop-status{margin:.35rem 0 0;font-size:.8rem;color:#86efacf2;text-align:center}.load-session__raw-section{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.5rem 1rem;padding:.6rem 1rem;border-radius:12px;border:1px solid rgba(100,116,139,.3);background:#1e293b66;text-align:center;max-width:100%;box-sizing:border-box}.load-session__step--optional .load-session__raw-section{border-color:#64748b40;background:#1e293b40}.load-session__raw-icon{color:#64748be6;flex-shrink:0}.load-session__raw-text{flex:1 1 auto;min-width:0;text-align:center}.load-session__raw-label{display:block;font-size:.9rem;font-weight:600;color:#94a3b8e6;white-space:nowrap}.load-session__raw-desc{margin:.25rem 0 0;font-size:.75rem;color:#94a3b8b3;max-width:36ch;margin-left:auto;margin-right:auto;text-align:center}.load-session__target-select{margin-top:.5rem;padding:.4rem .75rem;border-radius:8px;border:1px solid rgba(56,189,248,.4);background:#0f172acc;color:#e2e8f0;font-size:.85rem;min-width:200px}.load-session__local{position:relative;z-index:3;width:min(1240px,calc(100% - 2rem));border-radius:16px;border:1px solid rgba(56,189,248,.26);background:linear-gradient(180deg,#020c1ea3,#020617ad);box-shadow:inset 0 0 0 1px #0891b229,0 18px 38px #02061785;padding:1rem 1.25rem;margin-top:2rem;margin-bottom:2rem}.load-session__local-head{display:flex;align-items:center;justify-content:space-between;gap:.6rem;margin-bottom:.75rem}.load-session__local-title-wrap{display:flex;align-items:center;gap:.4rem}.load-session__local-icon{color:#7dd3fc;flex-shrink:0}.load-session__local-heading{margin:0;font-size:1rem;font-weight:600;color:#fff}.load-session__clear-history{background:none;border:none;padding:0;color:#7dd3fc;font-size:.85rem;cursor:pointer;text-decoration:none}.load-session__clear-history:hover:not(:disabled){text-decoration:underline}.load-session__clear-history:disabled{opacity:.6;cursor:default}.load-session__local-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:.75rem}.load-session__local-card{display:flex;flex-wrap:wrap;align-items:flex-start;gap:.35rem;text-align:left;border:1px solid rgba(56,189,248,.35);border-radius:12px;background:#0f172ab3;color:#f1f5f9fa;padding:.9rem 1rem;cursor:pointer;transition:border-color .15s ease,transform .15s ease,background .15s ease;position:relative}.load-session__local-card:hover{transform:translateY(-2px);border-color:#38bdf88c;background:#082f4973}.load-session__local-card-icon{font-size:1.1rem;color:#7dd3fc;font-weight:700;flex-shrink:0}.load-session__local-card-name{flex:1;font-size:.9rem;font-weight:600;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.load-session__local-card-desc{width:100%;margin:0;font-size:.72rem;color:#94a3b8d9;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.load-session__local-card-chevron{position:absolute;top:.9rem;right:1rem;font-size:1rem;color:#7dd3fc;font-weight:600}.load-session__view-all{margin-top:.75rem;background:none;border:none;padding:0;color:#7dd3fc;font-size:.9rem;cursor:pointer;display:inline-flex;align-items:center;gap:.25rem}.load-session__view-all:hover{text-decoration:underline}.load-session__footer{position:relative;z-index:3;width:100%;max-width:1200px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.75rem;padding:1rem .5rem .5rem;margin-top:auto;border-top:1px solid rgba(56,189,248,.12)}.load-session__footer-copy{font-size:.75rem;color:#94a3b8e6}.load-session__footer-links{display:flex;align-items:center;gap:1rem}.load-session__footer-link{font-size:.75rem;color:#94a3b8e6;text-decoration:none}.load-session__footer-link:hover{color:#7dd3fc}.load-session__footer-version{font-size:.75rem;color:#94a3b8cc}.load-session__local-title{font-size:.82rem;font-weight:700;color:#e2e8f0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.load-session__local-meta{margin-top:.16rem;font-size:.72rem;color:#bae6fdd6}.load-session__local-error,.load-session__local-empty{margin:0 0 .5rem;font-size:.75rem;color:#f8fafce6;text-align:left}.load-session__local-error{color:#fca5a5f5}.load-session__drop-icon{margin:0 auto .35rem;width:2.2rem;height:2.2rem;border-radius:999px;display:grid;place-items:center;color:#67e8f9;background:#0891b233;border:1px solid rgba(34,211,238,.55);box-shadow:0 0 24px #06b6d447}.load-session__drop-title{font-size:1rem;font-weight:700;color:#e2e8f0;text-align:center}.load-session__drop-subtitle{margin-top:.2rem;font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:#7dd3fccc}.load-session__footnote{position:relative;z-index:3;margin-top:.3rem;font-size:.68rem;color:#94a3b8eb}.load-session.is-drag-active .load-session__dropzone{border-color:#5eead4e0;box-shadow:inset 0 0 0 1px #99f6e459,0 0 0 1px #14b8a659,0 26px 56px #14b8a652}.load-session.is-drag-active .load-session__drop-title{color:#99f6e4}@keyframes load-session-drift{0%{transform:translateZ(0)}to{transform:translate3d(-72px,0,0)}}@keyframes load-session-orbit-a{0%{transform:translateZ(0) scale(1)}to{transform:translate3d(24px,18px,0) scale(1.06)}}@keyframes load-session-orbit-b{0%{transform:translateZ(0) scale(1)}to{transform:translate3d(-30px,-16px,0) scale(1.05)}}@keyframes load-session-pulse{0%,to{opacity:.4;transform:scale(1)}50%{opacity:.8;transform:scale(1.02)}}@keyframes load-session-node-pulse{0%,to{transform:scale(1);opacity:.82}50%{transform:scale(1.22);opacity:1}}@media(max-width:900px){.load-session__workflow{grid-template-columns:1fr;grid-template-areas:"left" "connector" "right";justify-items:center;gap:1rem 0}.load-session__workflow-left{max-width:520px;width:100%;justify-self:center}.load-session__workflow-connector{width:48px;height:32px}.load-session__workflow-line{width:2px;height:100%;left:50%;top:0;right:auto;transform:translate(-50%);background:linear-gradient(180deg,#38bdf859,#38bdf826)}.load-session__workflow-arrow{position:absolute;bottom:0;left:50%;margin:0;transform:translate(-50%) rotate(-90deg)}.load-session__workflow-right{justify-content:center;width:100%}}@media(max-width:768px){.load-session{padding:1.2rem .75rem}.load-session__dropzone{width:calc(100% - .8rem);padding:1rem .8rem .9rem}.load-session__local{width:calc(100% - .8rem);padding:.7rem}.load-session__local-list{grid-template-columns:1fr}}.current-event-renderer{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.event-header{display:flex;align-items:center;gap:.75rem;padding:.5rem 0;border-bottom:1px solid rgba(255,255,255,.1);margin-bottom:.75rem}.event-type{font-size:.9rem;text-transform:uppercase;letter-spacing:.05em;color:#ffffff80}.event-index{font-size:.95rem;color:#fff9}.event-body{flex:1;overflow:auto}.event-text h3{margin:0 0 .5rem;font-size:1.1rem}.event-text p{margin:0;font-size:.95rem;line-height:1.45;white-space:pre-wrap;word-break:break-word}.event-meta{color:#ffffff80;font-size:1rem}.event-path{margin:0 0 .5rem;font-size:1rem;color:#646cff;font-family:ui-monospace,monospace}.code-block,.diff-block{margin:0;padding:.75rem;background:#00000040;border-radius:6px;font-size:.95rem;line-height:1.5;overflow-x:auto;white-space:pre}.diff-line{font-family:ui-monospace,monospace}.diff-add{background:#00800033;color:#9f9}.diff-remove{background:#80000033;color:#f99}details{margin-top:.5rem}details summary{cursor:pointer;font-size:1rem;color:#ffffffb3}.event-audit--readable p{margin:0 0 .65rem}.event-audit--readable p:last-child{margin-bottom:0}.event-audit--readable strong{color:#94a3b8f2;font-weight:600}.event-audit-block{margin:.5rem 0 .65rem}.event-audit-block strong{color:#94a3b8f2;font-weight:600}.event-audit-list{margin:.35rem 0 0;padding-left:1.25rem}.event-audit-list li{margin:.25rem 0;font-size:.95rem;line-height:1.45}.flow-view{--flow-primary: #0da6f2;--flow-bg: #101c22;--flow-text: rgba(255, 255, 255, .95);--flow-muted: rgba(255, 255, 255, .5);--intent-color: #38bdf8;display:flex;flex-direction:row;gap:1rem;height:100%;min-height:0;padding:1rem}.flow-view--empty{align-items:center;justify-content:center;color:var(--flow-muted)}.flow-view__main{flex:1;min-width:0;display:flex;flex-direction:column;gap:.5rem;min-height:0}.flow-view__canvas-wrap{flex:1;min-height:320px;position:relative;min-width:0;border-radius:12px;border:1px solid rgba(56,189,248,.2);background:radial-gradient(circle at 8% 15%,rgba(56,189,248,.15),transparent 40%),radial-gradient(circle at 92% 85%,rgba(16,185,129,.12),transparent 42%),linear-gradient(180deg,#0f172af2,#020617f5)}.flow-view__space-layer{position:absolute;inset:0;z-index:0;pointer-events:none;background-image:radial-gradient(1px 1px at 12% 18%,rgba(255,255,255,.55),transparent),radial-gradient(1px 1px at 24% 72%,rgba(186,230,253,.48),transparent),radial-gradient(1.4px 1.4px at 68% 26%,rgba(255,255,255,.6),transparent),radial-gradient(1px 1px at 82% 78%,rgba(125,211,252,.45),transparent),radial-gradient(1.2px 1.2px at 94% 44%,rgba(224,242,254,.5),transparent);background-size:220px 220px;opacity:.35;transition:transform .24s ease-out}.flow-view__space-layer.is-traveling{opacity:.55}.flow-view__warp-overlay{position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(90deg,transparent 0%,rgba(56,189,248,.2) 24%,transparent 40%,rgba(34,211,238,.22) 58%,transparent 78%),radial-gradient(circle at 50% 50%,transparent 0%,rgba(15,23,42,.12) 58%,rgba(2,6,23,.5) 100%);mix-blend-mode:screen}.flow-view__warp-overlay.is-active{animation:flow-warp-sweep .5s ease-out}.flow-view__mission-log{position:absolute;left:.8rem;bottom:4.4rem;z-index:2;width:min(17rem,calc(100% - 2rem));border-radius:12px;border:1px solid rgba(56,189,248,.2);background:#020c1e94;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:.55rem}.flow-view__panel-title{font-size:.85rem;letter-spacing:.08em;text-transform:uppercase;color:#67e8f9eb;font-weight:700}.flow-view__hint{margin-left:.35rem;display:inline-flex;align-items:center;justify-content:center;width:.78rem;height:.78rem;border-radius:999px;border:1px solid rgba(34,211,238,.5);color:#22d3eef2;font-size:.58rem;font-weight:700;line-height:1;text-transform:none}.flow-view__mission-items{margin-top:.4rem;display:grid;gap:.35rem}.flow-view__mission-item{display:grid;grid-template-columns:.62rem 1fr;gap:.42rem;align-items:start;padding:.35rem .4rem;border-radius:8px;border:1px solid rgba(255,255,255,.1);background:#ffffff08;color:#e2e8f0f2;text-align:left;cursor:pointer}@keyframes flow-mission-current-pulse{0%,to{box-shadow:0 0 16px #38bdf880,0 0 28px #38bdf833,0 0 0 2px #38bdf899}50%{box-shadow:0 0 28px #38bdf8d9,0 0 48px #38bdf873,0 0 0 2px #7dd3fcf2}}.flow-view__mission-item.is-current{border-color:#38bdf8bf;background:#38bdf82e;animation:flow-mission-current-pulse 1.4s ease-in-out infinite}.flow-view__mission-dot{width:.5rem;height:.5rem;border-radius:999px;background:#22d3ee;box-shadow:0 0 .4rem #22d3eebf;margin-top:.2rem}.flow-view__mission-time{font-size:.75rem;color:#22d3eee6}.flow-view__mission-head{font-size:.82rem;font-weight:700;margin-top:.1rem}.flow-view__mission-detail{margin-top:.12rem;font-size:.8rem;color:#94a3b8e0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.flow-view__canvas{position:absolute;inset:0;display:flex;overflow:hidden;cursor:grab;touch-action:none;z-index:1}.flow-view__toolbar--float{position:absolute;top:.5rem;left:50%;transform:translate(-50%);z-index:2;display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;gap:.5rem;padding:.35rem .5rem;min-width:28rem;max-width:min(48rem,calc(100% - 2rem));width:max-content;background:#00000059;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-radius:8px;border:1px solid rgba(255,255,255,.08);box-shadow:0 2px 8px #0003}.flow-view__toolbar-sep{width:1px;height:1.25rem;background:#ffffff26;flex-shrink:0}.flow-view__progress-track--toolbar{flex:1 1 auto;min-width:4rem;max-width:10rem;height:.45rem}.flow-view__open-node-btn--top{flex-shrink:0}.flow-view__ride-btn{border:1px solid rgba(255,255,255,.2);border-radius:6px;background:#ffffff0f;color:var(--flow-text);font-size:.72rem;font-weight:700;letter-spacing:.02em;padding:.24rem .45rem;cursor:pointer}.flow-view__ride-btn.is-active{background:#10b98133;border-color:#10b981b3;color:#bbf7d0}.flow-view__zoom-btn{width:1.75rem;height:1.75rem;display:flex;align-items:center;justify-content:center;border:none;border-radius:4px;background:transparent;color:var(--flow-text);font-size:1rem;font-weight:600;line-height:1;cursor:pointer;transition:background .15s,color .15s}.flow-view__toolbar--float .flow-view__zoom-btn:hover:not(:disabled){background:#ffffff1f;color:var(--flow-primary)}.flow-view__zoom-btn:disabled{opacity:.35;cursor:not-allowed}.flow-view__canvas:active{cursor:grabbing}.flow-view__svg{width:100%;height:100%;display:block}.flow-view__node-wrap{cursor:pointer}.flow-view__connector-hit{outline:none}.flow-view__connector-hit:focus-visible .flow-view__connector-line{filter:drop-shadow(0 0 4px rgba(56,189,248,.8))}.flow-view__connector-hit--selected .flow-view__connector-line{stroke-width:3.5;filter:drop-shadow(0 0 8px rgba(56,189,248,.9));opacity:1}.flow-view__event-card{fill:#020c1eb8;stroke:color-mix(in srgb,var(--intent-color) 66%,#38bdf8 34%);stroke-width:1.6;filter:drop-shadow(0 8px 16px rgba(2,6,23,.55))}@keyframes flow-current-pulse{0%,to{filter:drop-shadow(0 0 12px rgba(56,189,248,.45)) drop-shadow(0 0 24px rgba(56,189,248,.2))}50%{filter:drop-shadow(0 0 20px rgba(56,189,248,.7)) drop-shadow(0 0 40px rgba(56,189,248,.35))}}@keyframes flow-current-pulse-ride{0%,to{filter:drop-shadow(0 0 18px rgba(56,189,248,.6)) drop-shadow(0 0 36px rgba(56,189,248,.35))}50%{filter:drop-shadow(0 0 32px rgba(56,189,248,.9)) drop-shadow(0 0 56px rgba(56,189,248,.5))}}.flow-view__event-card.is-current{stroke:#7dd3fcfa;stroke-width:3.2;fill:color-mix(in srgb,var(--intent-color) 20%,rgba(2,12,30,.78));filter:drop-shadow(0 0 16px rgba(56,189,248,.58));animation:flow-current-pulse 1.8s ease-in-out infinite}.flow-view--ride .flow-view__event-card.is-current{animation:flow-current-pulse-ride 1.4s ease-in-out infinite}.flow-view__event-card:focus,.flow-view__event-card:focus-visible{outline:none}.flow-view__event-card.is-critical:not(.is-current){stroke:#f87171e0}.flow-view__event-card.is-warning:not(.is-current){stroke:#f59e0bdb}.flow-view__event-card-subtitle{fill:#22d3eef2;letter-spacing:.07em;text-transform:uppercase;font-weight:700;pointer-events:none}.flow-view__event-card-title{fill:#f8fafcf5;font-weight:800;pointer-events:none}.flow-view__event-card-summary{fill:#94a3b8e6;pointer-events:none}.flow-view__node{fill:#ffffff0a;stroke:#0da6f233;stroke-width:2;transition:fill,stroke .2s ease}.flow-view__node-wrap:hover .flow-view__node{stroke:#0da6f280;fill:#0da6f214}.flow-view__node--completed{fill:color-mix(in srgb,var(--intent-color) 24%,transparent);stroke:color-mix(in srgb,var(--intent-color) 72%,#ffffff 8%)}.flow-view__node--key{stroke:#fbbf24cc}.flow-view__node--critical{stroke:#f87171d9;fill:#f8717129}.flow-view__node--warning{stroke:#f59e0bcc;fill:#f59e0b24}.flow-view__node--current{stroke:color-mix(in srgb,var(--intent-color) 88%,#ffffff 10%);fill:color-mix(in srgb,var(--intent-color) 28%,transparent);stroke-width:2.5;filter:drop-shadow(0 0 12px rgba(56,189,248,.5));animation:flow-current-pulse 1.8s ease-in-out infinite}.flow-view--ride .flow-view__node--current{animation:flow-current-pulse-ride 1.4s ease-in-out infinite}.flow-view__node--playing{stroke:var(--flow-primary);fill:#0da6f273;stroke-width:4;filter:drop-shadow(0 0 12px rgba(13,166,242,.8));animation:flow-node-playing .6s ease-in-out infinite alternate}.flow-view__transaction-panel{position:absolute;right:.6rem;bottom:.75rem;z-index:2;width:min(18rem,calc(100% - 2rem))}.flow-view__transaction-card{border-radius:10px;border:1px solid rgba(56,189,248,.2);background:#020c1e99;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:.48rem}.flow-view__transaction-card .flow-view__panel-title{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.flow-view__transaction-close{flex-shrink:0;width:1.25rem;height:1.25rem;display:flex;align-items:center;justify-content:center;border:none;border-radius:4px;background:#ffffff14;color:#ffffffe6;font-size:1rem;line-height:1;cursor:pointer}.flow-view__transaction-close:hover{background:#ffffff26}.flow-view__transaction-body{margin-top:.32rem;display:grid;gap:.35rem}.flow-view__transaction-duration{display:flex;justify-content:space-between;align-items:center;gap:.45rem;font-size:.8rem;color:#e2e8f0eb}.flow-view__transaction-label{color:#94a3b8e6;font-size:.78rem}.flow-view__transaction-row{display:flex;flex-direction:column;gap:.2rem}.flow-view__transaction-seek{text-align:left;padding:.25rem .3rem;border-radius:6px;border:1px solid rgba(255,255,255,.1);background:#ffffff0a;color:#e2e8f0f2;font-size:.82rem;line-height:1.35;cursor:pointer;white-space:normal;word-break:break-word}.flow-view__transaction-seek:hover{background:#38bdf826;border-color:#38bdf859}.flow-view__transaction-meta{margin-top:.2rem;padding-top:.35rem;border-top:1px dashed rgba(255,255,255,.12);display:grid;gap:.28rem}.flow-view__desc-panel--float{position:absolute;bottom:.75rem;left:50%;transform:translate(-50%);z-index:2;display:flex;align-items:center;padding:.5rem 1rem;min-width:12rem;max-width:min(42rem,calc(100% - 2rem));background:#0006;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-radius:10px;border:1px solid rgba(255,255,255,.08);box-shadow:0 4px 16px #00000040}.flow-view__signal-panel{position:absolute;right:.6rem;top:3.2rem;z-index:2;width:min(15rem,calc(100% - 1rem));border-radius:10px;border:1px solid rgba(255,255,255,.1);background:#0000006b;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:.5rem}.flow-view__signal-title{font-size:.9rem;font-weight:800;color:#fffffff5}.flow-view__signal-stats{margin-top:.35rem;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.25rem;font-size:.82rem;color:#ffffffbd}.flow-view__signal-actions{margin-top:.45rem;display:grid;grid-template-columns:1fr 1fr;gap:.35rem}.flow-view__signal-btn{border:1px solid rgba(255,255,255,.2);background:#ffffff0f;color:#fffffff0;border-radius:7px;font-size:.82rem;font-weight:700;padding:.28rem .4rem;cursor:pointer}.flow-view__signal-btn:disabled{opacity:.38;cursor:not-allowed}.flow-view__signal-btn--critical{border-color:#f871718c;background:#f8717126}.flow-view__signal-list{margin-top:.45rem;display:grid;gap:.3rem}.flow-view__signal-item{text-align:left;border:1px solid rgba(248,113,113,.5);border-radius:6px;background:#f8717121;color:#fffffff0;font-size:.82rem;padding:.25rem .4rem;cursor:pointer}.flow-view__signal-item.is-current{box-shadow:0 0 0 1px #38bdf8cc inset}.flow-view__signal-empty{font-size:.8rem;color:#ffffffa6}.flow-view__telemetry{position:absolute;right:.8rem;top:5.2rem;z-index:2;width:13rem;display:grid;gap:.45rem}.flow-view__telemetry-card{border-radius:10px;border:1px solid rgba(56,189,248,.2);background:#020c1e94;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:.5rem}.flow-view__bars{margin-top:.35rem;height:1.9rem;display:flex;align-items:end;gap:.22rem}.flow-view__bars span{flex:1;border-radius:2px;background:linear-gradient(180deg,#22d3eef2,#06b6d473)}.flow-view__stability-track{margin-top:.35rem;height:.42rem;border-radius:999px;background:#0f172ae6;overflow:hidden}.flow-view__stability-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,#10b981e0,#22d3eee6)}.flow-view__telemetry-value{margin-top:.3rem;font-size:.8rem;color:#e2e8f0eb;text-align:right}.flow-view__ops-panels{position:absolute;right:.8rem;bottom:4.4rem;z-index:2;width:min(18rem,calc(100% - 2rem));display:grid;gap:.45rem}.flow-view__ops-card{border-radius:10px;border:1px solid rgba(56,189,248,.2);background:#020c1e99;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:.48rem}.flow-view__ops-list{margin-top:.32rem;display:grid;gap:.28rem}.flow-view__ops-row{display:flex;justify-content:space-between;gap:.45rem;font-size:.8rem;color:#e2e8f0eb}.flow-view__ops-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;color:#94a3b8f2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.flow-view__ops-config{margin-top:.32rem;font-size:.85rem;color:#e2e8f0f2}.flow-view__ops-card--logs{min-height:5.6rem}.flow-view__ops-logs{margin-top:.32rem;max-height:5.8rem;overflow:auto;display:grid;gap:.24rem}.flow-view__ops-log-line{font-size:.78rem;color:#94a3b8e0;line-height:1.3;border-radius:6px;padding:.24rem .3rem;background:#0f172a6b}.flow-view__ops-log-line.is-current{color:#e2e8f0fa;border:1px solid rgba(56,189,248,.4);background:#38bdf81f}.flow-view__event-detail-panel{position:absolute;left:50%;transform:translate(-50%);bottom:4rem;z-index:2;width:min(28rem,calc(100% - 2rem));height:min(200px,24vh);border-radius:12px;border:1px solid rgba(56,189,248,.24);background:#020c1e9e;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:0 14px 34px #00000052;padding:.6rem .75rem;display:flex;flex-direction:column;overflow:hidden}.flow-view__event-detail-panel .flow-view__panel-title{flex-shrink:0}.flow-view__event-detail-body{margin-top:.4rem;flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;font-size:.9375rem;-webkit-overflow-scrolling:touch}.flow-view__active-card{position:absolute;left:50%;top:47%;transform:translate(-50%,-50%);z-index:2;width:min(23rem,calc(100% - 3rem));border-radius:12px;border:1px solid rgba(56,189,248,.4);background:#020c1eab;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 16px 40px #00000059;padding:.75rem .85rem}.flow-view__active-subtitle{color:#22d3eeed;letter-spacing:.08em;text-transform:uppercase;font-size:.62rem;font-weight:700}.flow-view__active-card h3{margin:.32rem 0 0;font-size:1.28rem;line-height:1.05;letter-spacing:.02em}.flow-view__active-card p{margin:.45rem 0 0;color:#e2e8f0eb;font-size:.77rem;line-height:1.4}.flow-view__intent-legend{margin-top:.45rem;display:grid;gap:.25rem}.flow-view__intent-chip{display:flex;align-items:center;gap:.35rem;font-size:.66rem;color:#ffffffd1}.flow-view__intent-dot{width:.46rem;height:.46rem;border-radius:999px;box-shadow:0 0 .28rem currentColor}.flow-view__intent-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.flow-view__marker-legend{margin-top:.45rem;border-top:1px dashed rgba(255,255,255,.18);padding-top:.45rem;display:grid;gap:.25rem}.flow-view__marker-item{display:flex;align-items:center;gap:.35rem;font-size:.65rem;color:#ffffffd1;line-height:1.25}.flow-view__marker-glyph{width:.9rem;height:.9rem;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;font-size:.65rem;font-weight:800}.flow-view__marker-glyph--key{background:#fbbf242e;color:#fbbf24;border:1px solid rgba(251,191,36,.5)}.flow-view__marker-glyph--critical{background:#f8717133;color:#fda4af;border:1px solid rgba(248,113,113,.58)}.flow-view__marker-glyph--done{background:#22c55e33;color:#bbf7d0;border:1px solid rgba(34,197,94,.58)}.flow-view__control-desc{flex:1;min-width:0;font-size:.85rem;color:var(--flow-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.35}.flow-view__control-summary{color:var(--flow-text)}.flow-view__play-btn{flex-shrink:0;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;border:none;border-radius:6px;background:#ffffff1a;color:var(--flow-text);font-size:.9rem;cursor:pointer;transition:background .2s,color .2s}.flow-view__play-btn:hover:not(:disabled){background:#0da6f240;color:var(--flow-primary)}.flow-view__play-btn:disabled{opacity:.5;cursor:not-allowed}.flow-view__progress-track{flex:0 0 6rem;width:6rem;height:.5rem;background:#ffffff1f;border-radius:9999px;overflow:hidden;cursor:pointer}.flow-view__toolbar--float .flow-view__progress-pct{flex-shrink:0;font-size:.75rem;font-weight:600;color:var(--flow-muted);min-width:2.25rem;text-align:right}.flow-view__progress-fill{height:100%;background:var(--flow-primary);border-radius:9999px;transition:width .15s ease}.flow-view__open-node-btn{flex-shrink:0;padding:.35rem .65rem;border-radius:6px;border:1px solid rgba(13,166,242,.4);background:#0da6f226;color:var(--flow-primary);font-size:.78rem;font-weight:600;cursor:pointer;transition:background .2s,border-color .2s}.flow-view__open-node-btn:hover{background:#0da6f240;border-color:var(--flow-primary)}.flow-view__node-wrap--playing .flow-view__label{fill:#fffffffa;font-weight:700}@keyframes flow-node-playing{0%{filter:drop-shadow(0 0 10px rgba(13,166,242,.7))}to{filter:drop-shadow(0 0 18px rgba(13,166,242,.95))}}.flow-view__node-icon{color:var(--flow-text);pointer-events:none}.flow-view__node-aura{animation:flow-aura-spin 8s linear infinite;transform-origin:center}.flow-view__label{pointer-events:none}@keyframes flow-aura-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes flow-warp-sweep{0%{transform:translate(16%) scaleX(.92);opacity:.15}45%{transform:translate(0) scaleX(1.04);opacity:.6}to{transform:translate(-12%) scaleX(.98);opacity:0}}@media(max-width:768px){.flow-view__toolbar--float{min-width:12rem;max-width:calc(100% - 1rem);padding:.3rem .4rem;gap:.35rem}.flow-view__progress-track--toolbar{max-width:5rem}.flow-view__desc-panel--float{max-width:calc(100% - 1rem)}.flow-view__signal-panel,.flow-view__mission-log,.flow-view__telemetry,.flow-view__ops-panels{display:none}.flow-view__event-detail-panel{left:50%;right:auto;transform:translate(-50%);bottom:3.5rem;width:min(28rem,calc(100% - 1rem));height:min(180px,26vh)}.flow-view__active-card{left:50%;top:auto;bottom:4.5rem;transform:translate(-50%);width:calc(100% - 1rem)}.flow-view__transaction-panel{right:.5rem;bottom:.5rem;width:min(18rem,calc(100% - 1rem))}}.reviewer-highlights{border:1px solid rgba(255,255,255,.08);border-radius:12px;background:#ffffff08;padding:.75rem;margin-bottom:.85rem}.reviewer-highlights__header h2{margin:0;font-size:1rem}.reviewer-summary-line{margin-top:.4rem;display:flex;gap:.4rem;flex-wrap:wrap}.reviewer-pill{display:inline-block;padding:.15rem .45rem;border-radius:9999px;font-size:.75rem;border:1px solid rgba(255,255,255,.2);background:#ffffff0a}.reviewer-grid{margin-top:.75rem;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.6rem}.reviewer-card{border:1px solid rgba(255,255,255,.06);background:#0000002e;border-radius:10px;padding:.6rem;min-width:0}.reviewer-card h3{margin:0 0 .45rem;font-size:.85rem}.reviewer-card ul{margin:0;padding-left:1rem;display:grid;gap:.35rem;font-size:.8rem}.reviewer-empty{margin:0;color:#ffffff8c;font-size:.8rem}.reviewer-chip{display:inline-block;border-radius:999px;font-size:.68rem;text-transform:uppercase;padding:.08rem .38rem;border:1px solid transparent;margin-right:.2rem}.reviewer-chip--high{background:#ef444433;border-color:#ef444499}.reviewer-chip--medium{background:#f59e0b33;border-color:#f59e0b99}.reviewer-chip--low{background:#22c55e33;border-color:#22c55e99}@media(max-width:980px){.reviewer-grid{grid-template-columns:1fr}}.reviewer-focus{border:1px solid rgba(239,68,68,.25);border-radius:14px;background:linear-gradient(180deg,#7f1d1d33,#0000002e);padding:.75rem;margin-bottom:.9rem}.reviewer-focus__alert{border:1px solid rgba(239,68,68,.55);border-radius:10px;padding:.6rem .75rem;background:#ef44441f}.reviewer-focus__alert h2{margin:0;font-size:.98rem;color:#fecaca}.reviewer-focus__alert p{margin:.3rem 0 0;font-size:.82rem;color:#ffffffeb}.reviewer-focus__grid{margin-top:.72rem;display:grid;gap:.6rem;grid-template-columns:repeat(3,minmax(0,1fr))}.reviewer-focus__grid--2{grid-template-columns:repeat(3,minmax(0,1fr))}.reviewer-focus__card{border:1px solid rgba(255,255,255,.1);border-radius:10px;padding:.55rem .65rem;background:#00000040;min-width:0}.reviewer-focus__card--danger{border-color:#ef444480;background:#7f1d1d38}.reviewer-focus__card--warn{border-color:#f59e0b80;background:#78350f33}.reviewer-focus__card h3{margin:0 0 .45rem;font-size:.84rem}.reviewer-focus__card ul{margin:0;padding-left:1rem;display:grid;gap:.35rem;font-size:.79rem;line-height:1.35}.reviewer-focus__card p{margin:0;font-size:.8rem;color:#ffffffe6}.reviewer-focus__badge{display:inline-flex;align-items:center;border:1px solid rgba(56,189,248,.45);border-radius:999px;padding:.05rem .35rem;font-size:.65rem;text-transform:uppercase;letter-spacing:.04em;color:#7dd3fcf2;background:#082f4959}.reviewer-focus__actions{margin-top:.22rem;display:flex;flex-wrap:wrap;gap:.25rem}.reviewer-focus__actions code{border:1px solid rgba(255,255,255,.15);border-radius:6px;padding:.08rem .3rem;font-size:.67rem;color:#e0f2fef2;background:#ffffff0f}.reviewer-focus__jump-list{display:grid;gap:.35rem;max-height:14rem;overflow:auto}.reviewer-focus__jump{text-align:left;border:1px solid rgba(255,255,255,.15);border-radius:8px;background:#ffffff0a;color:#fffffff2;padding:.32rem .44rem;font-size:.76rem;cursor:pointer}.reviewer-focus__jump.is-high{border-color:#ef4444a6;background:#ef444429}.reviewer-focus__jump.is-medium{border-color:#f59e0b8c;background:#f59e0b1f}.reviewer-focus__jump.is-current{box-shadow:0 0 0 1px #38bdf8d9 inset}.reviewer-focus__footnote{margin-top:.5rem!important;font-size:.72rem!important;color:#ffffffb8!important}.reviewer-focus__card--wide{grid-column:span 3}@media(max-width:1080px){.reviewer-focus__grid,.reviewer-focus__grid--2{grid-template-columns:1fr}}.context-path{display:grid;gap:1rem}.context-path__header h2{margin:0 0 .35rem;font-size:1.1rem}.context-path__header p{margin:0;color:#ffffffc2}.context-path__summary{display:flex;flex-wrap:wrap;gap:.65rem;font-size:.83rem;color:#ffffffd6}.context-path__summary span{border:1px solid rgba(45,212,191,.3);background:#0f172a80;border-radius:999px;padding:.2rem .6rem}.context-path__grid{display:grid;gap:.8rem;grid-template-columns:repeat(4,minmax(0,1fr))}.context-path__col{border:1px solid rgba(148,163,184,.25);border-radius:12px;padding:.7rem;background:#0f172a8c;min-height:200px}.context-path__col h3{margin:0 0 .65rem;font-size:.88rem}.context-path__col p{color:#ffffff9e;margin:0}.context-path__node{width:100%;text-align:left;border:1px solid rgba(148,163,184,.25);background:#02061773;color:#ffffffeb;border-radius:10px;padding:.55rem;margin-bottom:.45rem;cursor:pointer}.context-path__node strong{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;margin-right:.35rem}.context-path__node div{margin-top:.3rem;font-size:.78rem;color:#ffffffbd;line-height:1.35}.context-path__node.is-current{border-color:#2dd4bfcc;background:#14b8a633}.context-path__links{border:1px solid rgba(148,163,184,.22);border-radius:12px;padding:.8rem;background:#0f172a73}.context-path__links h3{margin:0 0 .6rem}.context-path__links ul{margin:0;padding-left:1.15rem}.context-path__links li{margin-bottom:.35rem}@media(max-width:1080px){.context-path__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:680px){.context-path__grid{grid-template-columns:1fr}}.orchestration{display:flex;flex-direction:column;gap:.75rem}.orchestration__header h2{margin:0}.orchestration__header p{margin:.25rem 0 0;color:#94a3b8f2}.orchestration__summary{display:flex;flex-wrap:wrap;gap:.45rem;font-size:.82rem}.orchestration__summary span{border:1px solid rgba(56,189,248,.35);border-radius:999px;padding:.2rem .5rem;background:#0f172aa6}.orchestration__dag{display:grid;grid-template-columns:1fr 2fr;gap:.75rem}.orchestration__lane{border:1px solid rgba(56,189,248,.22);border-radius:12px;padding:.65rem;background:#0f172a8f}.orchestration__lane h3,.orchestration__bottlenecks h3,.orchestration__detail h3,.orchestration__detail h4{margin:0 0 .45rem}.orchestration__lane-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.55rem}.orchestration__node-card{border:1px solid rgba(13,166,242,.28);border-radius:10px;background:#020617a8;color:#fffffff5;text-align:left;padding:.55rem;cursor:pointer}.orchestration__node-card:hover{border-color:#38bdf894}.orchestration__node-card.is-selected{border-color:#22d3eee6;box-shadow:inset 0 0 0 1px #bae6fd38}.orchestration__node-card p{margin:.22rem 0 0;font-size:.8rem}.orchestration__node-head{display:flex;align-items:baseline;justify-content:space-between;gap:.35rem}.orchestration__node-head h3{margin:0;font-size:.93rem}.orchestration__node-head span{font-size:.72rem;color:#94a3b8f2}.orchestration__bottlenecks,.orchestration__detail{border:1px solid rgba(56,189,248,.22);border-radius:12px;padding:.65rem;background:#0f172a80}.orchestration__bottlenecks ul{margin:0;padding-left:1rem;display:flex;flex-direction:column;gap:.3rem}.orchestration__detail p{margin:.25rem 0}.orchestration__detail-actions{display:flex;gap:.4rem;margin-top:.45rem}.orchestration__detail-actions button{border:1px solid rgba(56,189,248,.35);border-radius:8px;background:#0f172abf;color:#fffffff2;padding:.3rem .55rem;cursor:pointer}@media(max-width:960px){.orchestration__dag{grid-template-columns:1fr}}.deliverables-list{padding:.9rem;display:flex;flex-direction:column;gap:.65rem}.deliverables-list__ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.5rem}.deliverables-list__item{width:100%;border:1px solid rgba(13,166,242,.3);border-radius:10px;background:#0f172aad;color:#fffffff5;text-align:left;cursor:pointer;padding:.6rem .62rem}.deliverables-list__item:hover{border-color:#38bdf88c;background:#1e293bd6}.deliverables-list__item.is-selected{border-color:#22d3eee6;background:linear-gradient(180deg,#0e74903d,#0f172adb);box-shadow:inset 0 0 0 1px #bae6fd3d}.deliverables-list__title{font-weight:700;font-size:.92rem;margin-bottom:.25rem}.deliverables-list__meta{display:flex;gap:.45rem;font-size:.75rem;color:#fffc}.deliverables-list__path{margin-top:.3rem;font-size:.75rem;color:#94a3b8f2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.deliverable-work-overview{padding:0}.deliverable-work-overview__title{font-size:1rem;font-weight:600;margin:0 0 .25rem}.deliverable-work-overview__subtitle{font-size:.875rem;color:var(--muted, #64748b);margin:0 0 .75rem}.deliverable-work-overview__empty{margin:0 0 .5rem;color:var(--muted, #64748b)}.deliverable-work-overview__list{list-style:none;margin:0 0 1rem;padding:0}.deliverable-work-overview__item{display:flex;align-items:center;gap:.5rem;padding:.35rem 0;border-bottom:1px solid var(--border, #e2e8f0)}.deliverable-work-overview__item:last-child{border-bottom:none}.deliverable-work-overview__btn{flex-shrink:0;padding:.2rem .5rem;font-size:.75rem;font-weight:500;color:var(--link, #2563eb);background:transparent;border:1px solid var(--border, #e2e8f0);border-radius:4px;cursor:pointer}.deliverable-work-overview__btn:hover{background:var(--hover, #f1f5f9)}.deliverable-work-overview__action{flex:1;font-size:.875rem;min-width:0}.deliverable-work-overview__ts{flex-shrink:0;font-size:.75rem;color:var(--muted, #64748b)}.deliverable-work-overview__hint{font-size:.8125rem;color:var(--muted, #64748b);margin:0}.replay-view{display:flex;flex-direction:column;height:100vh;overflow:hidden}.replay-header{flex-shrink:0;padding:.75rem 1rem;border-bottom:1px solid rgba(255,255,255,.08);display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.replay-controls{flex-shrink:0;padding:.4rem 1rem;border-bottom:1px solid rgba(255,255,255,.08);display:flex;align-items:center;gap:1rem}.replay-controls .replay-toolbar{margin-left:auto}.replay-body{flex:1;min-height:0;display:flex}.replay-nav-strip{width:52px;flex-shrink:0;display:flex;flex-direction:column;gap:.35rem;padding:.5rem .25rem;border-right:1px solid rgba(13,166,242,.22);background:linear-gradient(180deg,#0f172aeb,#020617e0);align-items:center}.replay-nav-strip__btn{width:2.25rem;height:2.25rem;display:flex;align-items:center;justify-content:center;padding:0;border:1px solid rgba(13,166,242,.25);border-radius:8px;background:#0f172abf;color:#ffffffe6;cursor:pointer;font-size:1.15rem;line-height:1;transition:background .15s,border-color .15s}.replay-nav-strip__btn:hover{background:#1e293bf5;border-color:#38bdf880}.replay-nav-strip__btn.active{background:linear-gradient(180deg,#0e749094,#0c4a6ea3);border-color:#22d3eed1;color:#fff;box-shadow:inset 0 0 0 1px #bae6fd33,0 0 10px #22d3ee4d}.replay-nav-strip__btn--pivot{border-color:#10b98159;color:#ccfbf1f2}.replay-nav-strip__btn--pivot:hover{border-color:#2dd4bf99}.replay-nav-strip__btn--pivot.active{background:linear-gradient(180deg,#14b8a673,#0f172ad9);border-color:#5eead4e6;color:#ecfeff}.back-btn{padding:.4rem .6rem;font-size:.9rem}.replay-title{margin:0;font-size:1.25rem;font-weight:600}.replay-meta{margin:0;font-size:.85rem;color:#ffffff80}.replay-nav{display:flex;gap:.25rem;padding:.24rem;border:1px solid rgba(56,189,248,.28);border-radius:10px;background:linear-gradient(180deg,#0f172af0,#020617e6);box-shadow:inset 0 0 0 1px #0284c724,0 8px 22px #0206176b;flex:1;min-width:0}.replay-nav button{flex:1;min-width:0;padding:.35rem .75rem;font-size:.85rem;border:1px solid rgba(13,166,242,.2);border-radius:8px;background:#0f172ab8;color:#fffffff2;cursor:pointer;font-weight:700;letter-spacing:.02em}.replay-nav button:hover{background:#1e293bf5;border-color:#38bdf866}.replay-nav button.active{background:linear-gradient(180deg,#0e749094,#0c4a6ea3);border-color:#22d3eed1;color:#fff;box-shadow:inset 0 0 0 1px #bae6fd40,0 0 14px #22d3ee5c}.replay-nav__pivot{border-color:#10b9816b!important;background:linear-gradient(180deg,#064e3b9e,#0f172ad6)!important;color:#ccfbf1!important}.replay-nav__pivot:hover{border-color:#2dd4bfbd!important;box-shadow:0 0 12px #14b8a659}.replay-nav__pivot.active{background:linear-gradient(180deg,#14b8a673,#0f172ad9)!important;border-color:#5eead4f2!important;color:#ecfeff!important;box-shadow:inset 0 0 0 1px #99f6e459,0 0 0 1px #2dd4bf66,0 0 20px #14b8a680}.replay-toolbar{display:flex;align-items:center;gap:.5rem;padding:.25rem .5rem;border:1px solid rgba(56,189,248,.25);border-radius:10px;background:#0f172a99;min-width:180px}.replay-toolbar__play{flex-shrink:0;width:32px;height:28px;display:flex;align-items:center;justify-content:center;border:1px solid rgba(56,189,248,.4);border-radius:6px;background:#0f172ae6;color:#7dd3fc;cursor:pointer;font-size:.9rem}.replay-toolbar__play:hover:not(:disabled){background:#1e3a5fe6;border-color:#38bdf899}.replay-toolbar__play:disabled{opacity:.5;cursor:not-allowed}.replay-toolbar__progress{flex:1;min-width:60px;height:8px;border-radius:4px;background:#020617cc;cursor:pointer;overflow:hidden}.replay-toolbar__progress-fill{height:100%;background:linear-gradient(90deg,#38bdf880,#22d3eeb3);border-radius:4px;transition:width .15s ease}.replay-toolbar__label{flex-shrink:0;font-size:.75rem;color:#94a3b8f2;min-width:2.5rem}.replay-layout{flex:1;min-height:0;min-width:0;display:flex}.replay-sidebar{width:260px;min-width:220px;border-right:1px solid rgba(13,166,242,.2);overflow-y:auto;display:flex;flex-direction:column}.replay-main{flex:1;min-width:0;padding:1rem;overflow:auto;view-transition-name:replay-main}.replay-subtabs{display:inline-flex;gap:.25rem;margin-bottom:.75rem;padding:.2rem;border:1px solid rgba(13,166,242,.2);border-radius:8px;background:#ffffff08}.replay-subtabs button{padding:.32rem .7rem;font-size:.8rem;border:1px solid transparent;border-radius:6px;background:transparent;color:#ffffffeb;cursor:pointer}.replay-subtabs button:hover{background:#ffffff14}.replay-subtabs button.active{background:#0da6f24d;border-color:#0da6f294}.replay-placeholder{padding:2rem;color:#fffffff2}.replay-placeholder p{margin:0 0 .5rem}.replay-placeholder-note{font-size:.9rem;color:#ffffff80;margin-top:1rem}.replay-placeholder-note code{font-size:.85em;padding:.1em .3em;background:#ffffff0a;border:1px solid rgba(13,166,242,.2);border-radius:4px}.replay-footer{flex-shrink:0;padding:.75rem 1rem;border-top:1px solid rgba(255,255,255,.08);display:flex;flex-direction:column;gap:.5rem}.replay-view--workflow .replay-main{padding:0}.replay-title--workflow{display:flex;align-items:center;gap:.5rem}.replay-title{color:#fffffff2}.workflow-logo{color:#0da6f2;font-size:1.1em}.replay-view-toggle--all{flex-wrap:wrap}.replay-view-toggle--all button{padding:.4rem .85rem;font-size:.8rem}.reviewer-focus__table{width:100%;border-collapse:collapse;font-size:.84rem}.reviewer-focus__table th,.reviewer-focus__table td{border-bottom:1px solid rgba(148,163,184,.22);padding:.42rem .35rem;text-align:left;vertical-align:top}.reviewer-focus__table tbody tr{cursor:pointer}.reviewer-focus__table tbody tr.is-selected{background:#2dd4bf1f}.token-bar{margin-top:.25rem;width:100%;height:7px;border-radius:999px;overflow:hidden;background:#1e293bcc;display:flex}.token-bar span{height:100%}.token-bar__context{background:#38bdf8}.token-bar__output{background:#22c55e}.token-bar__unknown{background:#f59e0b}@supports (view-transition-name: none){::view-transition-old(replay-main),::view-transition-new(replay-main){animation-duration:.25s;animation-timing-function:ease-out}}.deliverable-summary{border:1px solid rgba(13,166,242,.24);border-radius:12px;padding:.75rem .9rem;background:#0f172a99}.deliverable-summary__header h2{margin:0}.deliverable-summary__header p{margin:.25rem 0 0;color:#94a3b8f2;font-size:.86rem}.deliverable-summary__meta{margin-top:.65rem;display:flex;flex-wrap:wrap;gap:.45rem;font-size:.82rem}.deliverable-tabs{margin-top:.75rem;display:inline-flex;gap:.25rem;padding:.2rem;border:1px solid rgba(13,166,242,.2);border-radius:8px;background:#ffffff08}.deliverable-tabs button{padding:.32rem .7rem;font-size:.8rem;border:1px solid transparent;border-radius:6px;background:transparent;color:#ffffffeb;cursor:pointer}.deliverable-tabs button:hover{background:#ffffff14}.deliverable-tabs button.active{background:#0da6f24d;border-color:#0da6f294}.deliverable-pane{margin-top:.75rem}.deliverable-pane__title{margin:0 0 .35rem;font-size:1rem;font-weight:600}.deliverable-pane__hint{margin:0 0 .5rem;font-size:.84rem;color:#94a3b8f2}.deliverable-event-links{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem;margin-bottom:.6rem}.deliverable-event-links__label{font-size:.8rem;color:#94a3b8e6;margin-right:.2rem}.deliverable-event-links button{padding:.2rem .45rem;border-radius:999px;border:1px solid rgba(14,165,233,.35);background:#0f172ab3;color:#ffffffeb;font-size:.75rem;cursor:pointer}.deliverable-event-links button:hover{border-color:#38bdf8a6}.deliverable-intents{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:.65rem}.deliverable-intent-card{border:1px solid rgba(13,166,242,.22);border-radius:10px;padding:.62rem;background:#0f172a8c}.deliverable-intent-card header{display:flex;justify-content:space-between;align-items:baseline;gap:.4rem}.deliverable-intent-card h4{margin:0}.deliverable-intent-card header span{font-size:.73rem;color:#94a3b8f2}.deliverable-intent-card__badge{font-size:.7rem;padding:.15rem .4rem;border-radius:6px;background:#94a3b833;color:#94a3b8f2}.deliverable-intent-card__badge--primary{background:#22c55e40;color:#86efacfa}.deliverable-intent-card p{margin:.4rem 0 0;font-size:.82rem}.deliverable-intent-card__events{margin-top:.5rem;display:flex;flex-wrap:wrap;align-items:center;gap:.3rem}.deliverable-intent-card__events-label{font-size:.78rem;color:#94a3b8e6;margin-right:.2rem}.deliverable-intent-card__event-btn{padding:.15rem .35rem;font-size:.72rem;border-radius:6px;border:1px solid rgba(14,165,233,.3);background:#0f172a99;color:#ffffffe6;cursor:pointer}.deliverable-intent-card__event-btn:hover{border-color:#38bdf88c}.deliverable-why-changed{display:flex;flex-direction:column;gap:1rem}.deliverable-why-changed__section{margin:0}.deliverable-why-changed__heading{margin:0 0 .4rem;font-size:.9rem;font-weight:600;color:#e2e8f0f2}.deliverable-why-changed__list{list-style:none;margin:0;padding:0}.deliverable-why-changed__list li{display:flex;align-items:center;gap:.4rem;padding:.3rem 0;border-bottom:1px solid rgba(148,163,184,.2)}.deliverable-why-changed__list li:last-child{border-bottom:none}.deliverable-why-changed__event-btn{flex-shrink:0;padding:.15rem .35rem;font-size:.72rem;border-radius:6px;border:1px solid rgba(14,165,233,.3);background:#0f172a99;color:#ffffffe6;cursor:pointer}.deliverable-why-changed__event-btn:hover{border-color:#38bdf88c}.deliverable-why-changed__detail{font-size:.85rem;color:#94a3b8e6}.verification-result--pass{color:#22c55ef2}.verification-result--fail{color:#ef4444f2}.verification-result--unknown{color:#94a3b8f2}#root{width:100%;min-height:100vh}.app-error{position:fixed;top:0;left:0;right:0;padding:.75rem 1rem;background:#b40000e6;color:#fff;font-size:.9rem;white-space:pre-wrap;z-index:10}.app-error+*{margin-top:3rem}