@brainpilot/web 0.0.9 → 0.0.10
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/dist/assets/index-D63mUJxx.js +450 -0
- package/dist/assets/index-D8J9Cnup.css +1 -0
- package/dist/index.html +2 -2
- package/package.json +2 -2
- package/src/__tests__/api.test.ts +49 -1
- package/src/__tests__/runningScripts.test.ts +139 -0
- package/src/components/chat/MessageStream.tsx +1 -11
- package/src/components/chat/PromptComposer.tsx +27 -10
- package/src/components/chat/RunningScriptsPanel.tsx +118 -0
- package/src/components/chat/runningScripts.ts +88 -0
- package/src/components/settings/KnowledgeBasePanel.tsx +594 -0
- package/src/components/settings/SettingsDialog.tsx +12 -4
- package/src/i18n/messages/chat.ts +4 -0
- package/src/i18n/messages/settings.ts +57 -0
- package/src/styles/global.css +139 -1
- package/src/utils/api.ts +125 -3
- package/src/utils/format.ts +9 -0
- package/dist/assets/index-CJNvdeGz.js +0 -445
- package/dist/assets/index-DWOsU22G.css +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-wght-normal-BgDaEnEv.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-ext-wght-normal-I4S5GZfc.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-wght-normal-BmXc_FBt.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-symbols2-wght-normal-GZpp1pK2.woff2) format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-vietnamese-wght-normal-D8KDMBhC.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-ext-wght-normal-DrnZ1wKl.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-wght-normal-B_7UjwxQ.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:light;--font-sans: "Geist Variable", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "Geist Mono Variable", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--fs-11: 11px;--fs-12: 12px;--fs-13: 13px;--fs-14: 14px;--fs-16: 16px;--fs-20: 20px;--fs-28: 28px;--color-canvas: #ffffff;--color-sidebar: #f6f7f8;--color-surface: #ffffff;--color-surface-soft: #f6f7f8;--color-surface-raised: #ffffff;--color-surface-elevated: #ffffff;--color-code-bg: #f4f5f7;--color-text: #141618;--color-text-muted: #686c73;--color-text-subtle: #9aa0a6;--color-border: #e6e7e9;--color-border-strong: #d4d6d9;--color-hover: #f0f1f2;--color-active: #e8eaec;--color-accent: #4f46e5;--color-accent-strong: #4338ca;--color-accent-soft: #eef0fe;--color-accent-contrast: #ffffff;--color-accent-ring: rgb(79 70 229 / .32);--color-info: var(--color-accent);--color-info-soft: var(--color-accent-soft);--color-danger: #c0362c;--color-danger-soft: #fbeceb;--color-success: #15924b;--color-success-soft: #e8f5ed;--color-warning: #c77d11;--color-warning-soft: #fbf1e0;--color-overlay: rgb(255 255 255 / .72);--color-overlay-soft: rgb(250 250 250 / .58);--color-overlay-strong: rgb(15 18 24 / .42);--color-inset-highlight: rgb(255 255 255 / .72);--color-code-keyword: #7c3aed;--color-code-string: #047857;--color-code-function: #2563eb;--color-code-number: #d97706;--color-shadow: rgb(15 23 42 / .08);--color-shadow-strong: rgb(15 23 42 / .14);--shadow-sm: 0 1px 2px rgb(15 23 42 / .06);--shadow-md: 0 4px 12px rgb(15 23 42 / .08);--shadow-lg: 0 12px 32px rgb(15 23 42 / .1);--shadow-xl: 0 24px 60px rgb(15 23 42 / .14);--sidebar-width: 268px;--file-sidebar-width: 420px;--toolbar-height: 52px;--composer-width: 720px;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 14px;--radius-xl: 18px;--radius-pill: 999px;--duration-fast: .12s;--duration-base: .2s;--ease-standard: .16s ease;--ease-layout: .26s cubic-bezier(.22, 1, .36, 1);--ease-emphasized: .32s cubic-bezier(.2, 0, 0, 1);--ease-out: cubic-bezier(.16, 1, .3, 1)}:root[data-theme=dark]{color-scheme:dark;--color-canvas: #0c0d10;--color-sidebar: #121317;--color-surface: #16181d;--color-surface-soft: #1b1d23;--color-surface-raised: #1f222a;--color-surface-elevated: #23262f;--color-code-bg: #14161b;--color-text: #f2f3f5;--color-text-muted: #a4aab4;--color-text-subtle: #6f7682;--color-border: #2a2e37;--color-border-strong: #3a3f4a;--color-hover: #22262e;--color-active: #2c313b;--color-accent: #818cf8;--color-accent-strong: #a5b4fc;--color-accent-soft: rgb(99 102 241 / .18);--color-accent-contrast: #0c0d10;--color-accent-ring: rgb(129 140 248 / .45);--color-info: var(--color-accent);--color-info-soft: var(--color-accent-soft);--color-danger: #ff8a80;--color-danger-soft: rgb(255 138 128 / .16);--color-success: #4ade80;--color-success-soft: rgb(74 222 128 / .16);--color-warning: #fbbf24;--color-warning-soft: rgb(251 191 36 / .16);--color-overlay: rgb(10 12 16 / .72);--color-overlay-soft: rgb(10 12 16 / .6);--color-overlay-strong: rgb(0 0 0 / .55);--color-inset-highlight: rgb(255 255 255 / .06);--color-code-keyword: #c4b5fd;--color-code-string: #86efac;--color-code-function: #60a5fa;--color-code-number: #fbbf24;--color-shadow: rgb(0 0 0 / .26);--color-shadow-strong: rgb(0 0 0 / .42);--shadow-sm: 0 1px 2px rgb(0 0 0 / .4);--shadow-md: 0 4px 14px rgb(0 0 0 / .45);--shadow-lg: 0 14px 36px rgb(0 0 0 / .5);--shadow-xl: 0 26px 64px rgb(0 0 0 / .62)}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;overflow:hidden;background:var(--color-canvas);color:var(--color-text);font-family:var(--font-sans);font-size:14px;line-height:1.5;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}button,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}textarea{color:inherit}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}button{-webkit-tap-highlight-color:transparent;touch-action:manipulation}::selection{background:var(--color-accent-soft)}.custom-select{position:relative;min-width:0}.custom-select.is-open{z-index:20}.custom-select__trigger{display:inline-flex;width:100%;min-width:0;height:34px;align-items:center;justify-content:space-between;gap:8px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);padding:0 9px 0 11px;font:inherit;text-align:left;transition:background var(--ease-standard),border-color var(--ease-standard),color var(--ease-standard),box-shadow var(--ease-standard)}.custom-select__trigger:hover:not(:disabled),.custom-select__trigger:focus-visible,.custom-select.is-open .custom-select__trigger{border-color:var(--color-border-strong);background:var(--color-hover);outline:none}.custom-select__trigger:focus-visible{box-shadow:0 0 0 3px var(--color-accent-ring)}.custom-select__trigger:disabled{color:var(--color-text-subtle);opacity:.62}.custom-select__trigger svg{flex:0 0 auto;color:var(--color-text-muted);transition:transform var(--ease-standard)}.custom-select.is-open .custom-select__trigger svg{transform:rotate(180deg)}.custom-select__value{display:inline-flex;align-items:center;gap:6px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.custom-select__value.is-placeholder{color:var(--color-text-muted)}.custom-select__menu{position:absolute;top:calc(100% + 6px);left:0;z-index:30;display:grid;width:100%;min-width:max(100%,160px);max-height:220px;overflow:auto;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-raised);padding:4px;box-shadow:var(--shadow-lg)}.custom-select__menu--floating{position:fixed;top:auto;left:auto;z-index:140}.custom-select__menu--top{transform-origin:bottom center}.custom-select__menu--bottom{transform-origin:top center}@media(prefers-reduced-motion:no-preference){.custom-select__menu{animation:scaleIn var(--duration-fast) var(--ease-out) both}}.custom-select__option{display:flex;width:100%;min-width:0;height:30px;align-items:center;justify-content:space-between;gap:10px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);padding:0 8px;font:inherit;text-align:left}.custom-select__option span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.custom-select__option:hover,.custom-select__option:focus-visible,.custom-select__option.is-selected{background:var(--color-hover);color:var(--color-text);outline:none}.custom-select__option svg{flex:0 0 auto;color:var(--color-text)}.custom-select__option-label{display:inline-flex;align-items:center;gap:6px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.custom-select__option-indicator,.custom-select__value-indicator{display:inline-flex;align-items:center;flex:0 0 auto}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.desktop-shell{display:grid;grid-template-columns:var(--active-sidebar-width, var(--sidebar-width)) minmax(0,1fr);width:100vw;height:100vh;background:var(--color-canvas);transition:grid-template-columns var(--ease-layout)}.desktop-shell--sidebar-collapsed{grid-template-columns:64px minmax(0,1fr)}.desktop-shell--resizing-sidebar{cursor:ew-resize;transition:none;-webkit-user-select:none;user-select:none}.sidebar{position:relative;display:flex;min-width:0;height:100vh;flex-direction:column;gap:22px;padding:14px 16px 16px;background:var(--color-sidebar);border-right:1px solid var(--color-border);color:var(--color-text-muted);overflow:hidden;transition:padding var(--ease-standard),gap var(--ease-standard)}.desktop-shell--resizing-sidebar .sidebar{transition:none}.sidebar__resize-handle{position:absolute;top:0;right:-5px;bottom:0;z-index:5;width:10px;cursor:ew-resize;touch-action:none}.sidebar__resize-handle:before{position:absolute;top:0;right:4px;bottom:0;width:2px;border-radius:2px;background:transparent;content:"";transition:background var(--ease-standard)}.sidebar__resize-handle:hover:before{background:var(--color-border-strong)}.desktop-shell--resizing-sidebar .sidebar__resize-handle:before{background:var(--color-accent)}.sidebar__topbar,.workspace-toolbar__actions,.section-heading,.section-heading__actions,.composer__toolbar,.composer__tools,.composer__send-tools{display:flex;align-items:center}.sidebar__topbar{justify-content:flex-start}.icon-button{display:inline-grid;width:30px;height:30px;place-items:center;flex:0 0 auto;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);transition:background var(--ease-standard),color var(--ease-standard),transform var(--duration-fast) var(--ease-out),box-shadow var(--ease-standard)}.icon-button svg,.nav-item svg,.conversation-row svg,.suggestion-row svg{width:16px;height:16px;flex:0 0 16px}.icon-button:hover:not(:disabled),.icon-button:focus-visible,.icon-button.is-active{background:var(--color-hover);color:var(--color-text);outline:none}.icon-button:disabled{color:var(--color-text-subtle);opacity:.45}.icon-button:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.icon-button:active:not(:disabled){background:var(--color-active);transform:scale(.94)}.icon-button--soft{background:var(--color-surface-soft);border:1px solid var(--color-border)}.icon-button--strong{width:32px;height:32px;border-radius:999px;background:var(--color-text);color:var(--color-canvas)}.icon-button--strong:hover,.icon-button--strong:focus-visible{background:var(--color-text);color:var(--color-canvas);box-shadow:var(--shadow-md)}.sidebar__nav{display:grid;gap:2px}.nav-item,.conversation-row,.suggestion-row{display:flex;width:100%;min-width:0;align-items:center;gap:10px;border:0;border-radius:var(--radius-sm);background:transparent;color:inherit;text-align:left;transition:background var(--ease-standard),color var(--ease-standard)}.nav-item{height:34px;padding:0 7px;font-size:14px}.nav-item span{transition:opacity var(--ease-standard),color var(--ease-standard)}.nav-item:hover,.nav-item:focus-visible,.conversation-row:hover,.conversation-row:focus-visible,.suggestion-row:hover,.suggestion-row:focus-visible{background:var(--color-hover);color:var(--color-text);outline:none}.nav-item--strong{color:var(--color-text)}.sidebar-section{display:grid;gap:8px}.sidebar-section--conversations{flex:0 1 auto;min-height:0;grid-template-rows:auto minmax(0,1fr)}.section-heading{justify-content:space-between;gap:8px;color:var(--color-text-subtle)}.section-heading h2{margin:0;font-size:13px;font-weight:500}.section-heading__actions{gap:0}.section-heading__actions .icon-button{width:24px;height:24px}.conversation-stack{display:grid;gap:2px;min-height:0;overflow-y:auto;scrollbar-gutter:stable;scrollbar-color:var(--color-border) transparent;scrollbar-width:thin}.conversation-row span,.suggestion-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.conversation-row small{margin-left:auto;color:var(--color-text-subtle);font-size:11px;white-space:nowrap}.muted-label{margin:0 0 2px;color:var(--color-text-subtle);font-size:13px}.conversation-row{height:34px;padding:0 7px;font-size:13px}.conversation-edit{display:flex;min-width:0;align-items:center;gap:8px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-muted);padding:0 8px}.conversation-search-trigger{display:flex;width:100%;height:30px;align-items:center;gap:8px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);padding:0 7px;font-size:13px;text-align:left}.conversation-search-trigger:hover,.conversation-search-trigger:focus-visible{background:var(--color-hover);color:var(--color-text);outline:none}.conversation-edit input{min-width:0;flex:1;border:0;outline:none;background:transparent;color:var(--color-text);font:inherit}.conversation-item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:4px;border-radius:var(--radius-sm)}.conversation-item.is-active{background:var(--color-active)}.conversation-item.is-active .conversation-row{color:var(--color-text)}.conversation-item .conversation-row{min-width:0}.conversation-actions{display:flex;align-items:center;opacity:0;transition:opacity var(--ease-standard)}.conversation-item:hover .conversation-actions,.conversation-item:focus-within .conversation-actions,.conversation-item.is-active .conversation-actions{opacity:1}.conversation-edit{grid-column:1 / -1;min-height:36px;padding-right:2px}.sidebar__footer{margin-top:auto}.workspace{position:relative;display:grid;min-width:0;height:100vh;grid-template-columns:minmax(0,1fr) 0;grid-template-rows:var(--toolbar-height) minmax(0,1fr);background:var(--color-canvas);overflow:hidden;transition:grid-template-columns var(--ease-layout)}.workspace--files-open{grid-template-columns:minmax(0,1fr) minmax(320px,var(--active-file-sidebar-width, var(--file-sidebar-width)))}.workspace--resizing-files{transition:none;-webkit-user-select:none;user-select:none}.workspace-toolbar{position:relative;z-index:2;display:flex;grid-column:1;grid-row:1;align-items:center;justify-content:space-between;gap:16px;padding:10px 18px}.workspace-toolbar__actions{gap:6px}.workspace-view-tabs{display:inline-flex;min-width:0;align-items:center;gap:2px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-soft);padding:3px}.workspace-view-tabs button{display:inline-flex;height:26px;align-items:center;gap:5px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);padding:0 9px;font-size:12px;font-weight:500;transition:background var(--ease-standard),color var(--ease-standard),box-shadow var(--ease-standard)}.workspace-view-tabs button:hover:not(.is-active),.workspace-view-tabs button:focus-visible{background:var(--color-hover);color:var(--color-text);outline:none}.workspace-view-tabs button.is-active{background:var(--color-surface-raised);color:var(--color-text);box-shadow:var(--shadow-sm);outline:none}.workspace-view-tabs--icon-only button{width:28px;justify-content:center;gap:0;padding:0}.workspace-view-tab--badged{position:relative}.workspace-view-tab__badge{position:absolute;top:3px;right:3px;width:6px;height:6px;border-radius:999px;background:var(--color-danger, #e5484d);box-shadow:0 0 0 2px var(--color-surface-soft);pointer-events:none}.session-title{display:flex;min-width:0;align-items:baseline;gap:10px;padding-left:2px}.session-title__label{color:var(--color-text-subtle);font-size:12px}.session-title__name{overflow:hidden;color:var(--color-text);font-size:14px;font-weight:520;text-overflow:ellipsis;white-space:nowrap}.session-title__id{color:var(--color-text-subtle);font-size:11px;font-family:var(--font-mono)}.toolbar-select{display:inline-flex;height:30px;align-items:center;justify-content:center;gap:6px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-muted);transition:background var(--ease-standard),border-color var(--ease-standard),color var(--ease-standard)}.toolbar-select:hover{border-color:var(--color-border-strong);background:var(--color-hover);color:var(--color-text)}.prompt-home{display:grid;grid-column:1;grid-row:2;min-width:0;min-height:0;place-items:center;padding:0 40px 12vh}.prompt-home--active{place-items:stretch center;padding:20px 56px 40px}.workspace-panel{display:grid;grid-column:1;grid-row:2;min-width:0;min-height:0;overflow:auto;padding:32px 40px}.workspace-panel__inner{display:grid;width:min(var(--composer-width),100%);align-content:start;gap:16px;justify-self:center}.workspace-panel__inner--wide{width:min(980px,100%)}.workspace-panel__inner--trace{width:min(1180px,100%);min-height:0}.workspace-panel__header{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid var(--color-border);padding-bottom:12px}.workspace-panel__header h2{margin:0;color:var(--color-text);font-size:var(--fs-20);font-weight:600;letter-spacing:-.01em}.workspace-panel__eyebrow{color:var(--color-text-muted);font-size:12px}.workspace-panel__empty{margin:0;color:var(--color-text-muted);font-size:13px}.workspace-panel__empty--error{color:var(--color-danger)}.trace-header{align-items:flex-start}.trace-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px}.trace-segmented{display:inline-flex;height:30px;overflow:hidden;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-soft)}.trace-segmented button{border:0;background:transparent;color:var(--color-text-muted);padding:0 10px;font-size:12px;font-weight:500;transition:background var(--ease-standard),color var(--ease-standard)}.trace-segmented button:hover:not(.is-active),.trace-segmented button:focus-visible{background:var(--color-hover);color:var(--color-text);outline:none}.trace-segmented button.is-active{background:var(--color-accent-soft);color:var(--color-accent);outline:none}.trace-refresh-group{display:inline-flex;height:30px;align-items:center;overflow:hidden;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface)}.trace-refresh-group .icon-button{width:30px;height:28px;border:0;border-right:1px solid var(--color-border);border-radius:0}.trace-live-indicator{display:inline-flex;height:28px;align-items:center;gap:6px;color:var(--color-text);padding:0 9px;font-size:12px}.trace-live-indicator span{width:7px;height:7px;border-radius:999px;background:var(--color-success)}.agent-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}.agent-card{display:grid;gap:10px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);padding:14px;transition:border-color var(--ease-standard),box-shadow var(--ease-standard),transform var(--duration-fast) var(--ease-out)}.agent-card:hover{border-color:var(--color-border-strong);box-shadow:var(--shadow-sm)}.agent-card__header,.trace-detail__title,.trace-meta{display:flex;min-width:0;align-items:center;gap:10px}.agent-card__header{justify-content:space-between}.agent-card strong,.trace-node strong,.trace-detail h3{overflow:hidden;color:var(--color-text);text-overflow:ellipsis;white-space:nowrap}.agent-card p{min-height:42px;margin:0;color:var(--color-text-muted);font-size:13px}.agent-card small,.trace-node small{color:var(--color-text-subtle);font-size:11px}.agent-card__status,.trace-detail__status{border:1px solid var(--color-border);border-radius:999px;color:var(--color-text-muted);padding:2px 7px;font-size:11px}.agent-card__status--running,.agent-card__status--in_progress,.trace-detail__status--running,.trace-detail__status--in_progress{border-color:color-mix(in srgb,var(--color-accent) 35%,var(--color-border));background:var(--color-accent-soft);color:var(--color-accent)}.trace-detail__status--done,.trace-detail__status--completed{border-color:color-mix(in srgb,var(--color-success) 35%,var(--color-border));background:var(--color-success-soft);color:var(--color-success)}.agent-card__status--error,.trace-detail__status--error{border-color:color-mix(in srgb,var(--color-danger) 35%,var(--color-border));background:var(--color-danger-soft);color:var(--color-danger)}.trace-meta{justify-content:space-between;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-soft);color:var(--color-text-muted);padding:9px 10px;font-size:12px}.trace-meta span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trace-controls{display:grid;grid-template-columns:minmax(220px,1fr) minmax(130px,.22fr) minmax(130px,.22fr);gap:8px}.trace-control,.trace-search{display:flex;min-width:0;height:34px;align-items:center;gap:8px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-muted);padding:0 9px}.trace-control>span{font-size:11px}.trace-controls input{width:100%;min-width:0;border:0;outline:0;background:transparent;color:var(--color-text);font:inherit;font-size:12px}.trace-control__select{flex:1 1 auto}.trace-control__select .custom-select__trigger{height:32px;border:0;background:transparent;padding:0;color:var(--color-text);font-size:12px}.trace-control__select .custom-select__trigger:hover:not(:disabled),.trace-control__select .custom-select__trigger:focus-visible,.trace-control__select.is-open .custom-select__trigger{background:transparent;box-shadow:none}.trace-search button{display:inline-grid;width:22px;height:22px;flex:0 0 22px;place-items:center;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);padding:0}.trace-search button:hover,.trace-search button:focus-visible{background:var(--color-hover);color:var(--color-text);outline:none}.trace-layout{display:grid;min-height:0;grid-template-columns:minmax(0,1.45fr) minmax(330px,.55fr);gap:12px}.trace-map{position:relative;min-width:0;min-height:520px;overflow:hidden;border:1px solid var(--color-border);border-radius:var(--radius-md);background:linear-gradient(var(--color-surface-soft) 1px,transparent 1px),linear-gradient(90deg,var(--color-surface-soft) 1px,transparent 1px),var(--color-surface);background-size:28px 28px}.trace-map__viewport{width:100%;height:100%;min-height:520px;overflow:auto;cursor:grab}.trace-map__viewport:active{cursor:grabbing}.trace-map__viewport svg{display:block;min-width:100%;min-height:100%}.trace-zoom-controls{position:absolute;top:10px;left:10px;z-index:3;display:inline-flex;height:30px;align-items:center;gap:2px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--color-surface) 92%,transparent);padding:2px;box-shadow:var(--shadow-md);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.trace-zoom-controls button{display:inline-grid;width:25px;height:24px;place-items:center;border:0;border-radius:5px;background:transparent;color:var(--color-text-muted);padding:0}.trace-zoom-controls button:hover:not(:disabled),.trace-zoom-controls button:focus-visible{background:var(--color-hover);color:var(--color-text);outline:none}.trace-zoom-controls button:disabled{color:var(--color-text-subtle);opacity:.48}.trace-zoom-controls span{min-width:42px;color:var(--color-text-muted);font-size:11px;text-align:center}.trace-edge path{fill:none;stroke:color-mix(in srgb,var(--color-accent) 55%,var(--color-border-strong));stroke-width:2;marker-end:url(#trace-arrow)}.trace-edge--used path{stroke:var(--color-info);stroke-dasharray:4 4}.trace-edge--produced path{stroke:var(--color-success)}.trace-edge--follows path{stroke:color-mix(in srgb,var(--color-accent) 50%,var(--color-border-strong))}.trace-edge-label rect{fill:var(--color-surface-raised);stroke:var(--color-border-strong);stroke-width:.6}.trace-edge-label text{fill:var(--color-text-subtle);font-size:9px;text-anchor:middle;dominant-baseline:middle;paint-order:stroke;stroke:var(--color-surface-raised);stroke-width:2px}#trace-arrow path{fill:color-mix(in srgb,var(--color-accent) 55%,var(--color-border-strong))}.trace-map-node{cursor:grab}.trace-map-node:active{cursor:grabbing}.trace-map-node rect{fill:var(--color-surface-raised);stroke:var(--color-border);stroke-width:1;transition:fill var(--ease-standard),stroke var(--ease-standard)}.trace-map-node--decision rect{stroke:color-mix(in srgb,var(--color-code-keyword) 45%,transparent)}.trace-map-node--observation rect{stroke:color-mix(in srgb,var(--color-accent) 32%,transparent)}.trace-map-node--artifact rect{stroke:color-mix(in srgb,var(--color-success) 36%,transparent)}.trace-map-node--repair rect,.trace-map-node--error rect{stroke:color-mix(in srgb,var(--color-danger) 38%,transparent)}.trace-map-node:hover rect{fill:var(--color-hover);stroke:var(--color-border-strong)}.trace-map-node.is-selected rect{fill:var(--color-accent-soft);stroke:var(--color-accent);stroke-width:1.5}.trace-map-node text{pointer-events:none}.trace-map-node circle{fill:var(--color-text-subtle)}.trace-map-node circle.trace-node__dot--completed,.trace-map-node circle.trace-node__dot--done{fill:var(--color-success)}.trace-map-node circle.trace-node__dot--running,.trace-map-node circle.trace-node__dot--in_progress{fill:var(--color-info)}.trace-map-node circle.trace-node__dot--error{fill:var(--color-danger)}.trace-map-node__title{fill:var(--color-text);font-size:11px;font-weight:560}.trace-map-node__meta{fill:var(--color-text-muted);font-size:10px}.trace-map-node__kind{fill:var(--color-text-subtle);font-size:9px}.trace-empty{display:grid;min-height:420px;margin:0;place-items:center;color:var(--color-text-muted);font-size:13px}.trace-node{display:grid;min-width:0;grid-template-columns:10px minmax(0,1fr);gap:10px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);padding:10px;text-align:left}.trace-node:hover,.trace-node:focus-visible,.trace-node.is-selected{border-color:var(--color-border-strong);background:var(--color-hover);outline:none}.trace-node.is-selected{border-color:var(--color-accent);box-shadow:inset 0 0 0 1px var(--color-accent)}.trace-node span:last-child{display:grid;min-width:0;gap:2px}.trace-node__dot{width:8px;height:8px;margin-top:5px;border-radius:999px;background:var(--color-text-subtle)}.trace-node__dot--completed,.trace-node__dot--done{background:var(--color-success)}.trace-node__dot--running,.trace-node__dot--in_progress{background:var(--color-info)}.trace-node__dot--error{background:var(--color-danger)}@media(prefers-reduced-motion:no-preference){.trace-node__dot--running,.trace-node__dot--in_progress{animation:pulse 1.6s ease-in-out infinite}}.trace-playback-bar{position:absolute;bottom:12px;left:50%;z-index:4;display:inline-flex;height:34px;align-items:center;gap:8px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:color-mix(in srgb,var(--color-surface) 92%,transparent);padding:0 10px;transform:translate(-50%);box-shadow:var(--shadow-md);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.trace-playback-bar__button{display:inline-grid;width:24px;height:24px;flex:0 0 24px;place-items:center;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);padding:0;cursor:pointer}.trace-playback-bar__button:hover,.trace-playback-bar__button:focus-visible{background:var(--color-hover);color:var(--color-text);outline:none}.trace-playback-bar__count{min-width:42px;color:var(--color-text-muted);font-size:11px;text-align:center;-webkit-user-select:none;user-select:none}.trace-playback-bar__slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:160px;height:4px;border-radius:2px;background:var(--color-border-strong);outline:none;cursor:pointer}.trace-playback-bar__slider::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:var(--color-border-strong)}.trace-playback-bar__slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:14px;height:14px;border-radius:999px;background:var(--color-text);border:2px solid var(--color-surface-raised);box-shadow:0 1px 4px var(--color-shadow);margin-top:-5px;cursor:pointer}.trace-playback-bar__slider::-moz-range-track{height:4px;border-radius:2px;background:var(--color-border-strong)}.trace-playback-bar__slider::-moz-range-thumb{width:14px;height:14px;border-radius:999px;background:var(--color-text);border:2px solid var(--color-surface-raised);box-shadow:0 1px 4px var(--color-shadow);cursor:pointer}.trace-playback-bar__slider:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 4px var(--color-accent-ring)}.trace-playback-bar__slider:focus-visible::-moz-range-thumb{box-shadow:0 0 0 4px var(--color-accent-ring)}.trace-detail{display:grid;align-content:start;gap:14px;max-height:620px;overflow:auto;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);padding:16px}.trace-detail__title{justify-content:space-between}.trace-detail__title svg{flex:0 0 auto}.trace-detail h3{flex:1;margin:0;font-size:17px}.trace-detail p{margin:0;color:var(--color-text-muted);font-size:13px;line-height:1.65}.trace-detail__badges,.trace-detail__metrics,.trace-chip-list{display:flex;flex-wrap:wrap;gap:6px}.trace-detail__badges span,.trace-detail__metrics span,.trace-chip-list span{display:inline-flex;min-height:24px;align-items:center;gap:5px;border:1px solid var(--color-border);border-radius:999px;background:var(--color-surface-soft);color:var(--color-text-muted);padding:0 8px;font-size:11px}.trace-detail__badges span.trace-detail__badge--auto{border-color:color-mix(in srgb,var(--color-success) 45%,var(--color-border));background:color-mix(in srgb,var(--color-success) 14%,transparent);color:var(--color-success)}.trace-detail__section{display:grid;gap:8px;border-top:1px solid var(--color-border);padding-top:12px}.trace-detail__section h4{display:inline-flex;align-items:center;gap:6px;margin:0;color:var(--color-text);font-size:12px;font-weight:560}.trace-detail__section--error,.trace-detail__section--error h4,.trace-detail__section--error p{color:var(--color-danger)}.trace-relation-list,.trace-artifact-list{display:grid;gap:6px}.trace-relation-list button,.trace-artifact-list div{display:grid;min-width:0;gap:3px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-soft);color:var(--color-text);padding:9px 10px;text-align:left}.trace-relation-list button:hover,.trace-relation-list button:focus-visible{border-color:var(--color-border-strong);background:var(--color-hover);outline:none}.trace-relation-list strong{font-size:12px}.trace-relation-list span,.trace-relation-list small,.trace-artifact-list small{overflow:hidden;color:var(--color-text-muted);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.trace-artifact-list div{grid-template-columns:16px minmax(0,1fr) auto;align-items:center}.trace-artifact-list span{overflow:hidden;font-family:var(--font-mono);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.trace-detail dl{display:grid;gap:8px;margin:0}.trace-detail dl div{display:grid;min-width:0;grid-template-columns:74px minmax(0,1fr);gap:10px}.trace-detail dt,.trace-detail dd{min-width:0;margin:0;font-size:12px}.trace-detail dt{color:var(--color-text-muted)}.trace-detail dd{overflow:hidden;color:var(--color-text);text-overflow:ellipsis;white-space:nowrap}.trace-detail__children{display:flex;flex-wrap:wrap;gap:5px;overflow:visible!important;white-space:normal!important}.trace-detail__children button{display:inline-flex;min-width:0;max-width:100%;height:24px;align-items:center;border:1px solid var(--color-border);border-radius:999px;background:var(--color-surface-soft);color:var(--color-text-muted);padding:0 8px;font:inherit;font-size:11px}.trace-detail__children button:hover,.trace-detail__children button:focus-visible{border-color:var(--color-border-strong);background:var(--color-hover);color:var(--color-text);outline:none}.prompt-home__inner{display:grid;width:min(var(--composer-width),100%);min-height:0;gap:22px;justify-items:center}.prompt-home--active .prompt-home__inner{width:min(1040px,100%);height:100%;grid-template-rows:minmax(0,1fr) auto auto auto;align-content:end;gap:16px;justify-items:stretch}.prompt-home h1{margin:0;color:var(--color-text);font-size:var(--fs-28);font-weight:600;letter-spacing:-.02em;line-height:1.2;text-align:center}.composer{width:100%;overflow:hidden;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface-raised);box-shadow:var(--shadow-lg),0 1px 0 var(--color-inset-highlight) inset;transition:border-color var(--ease-standard),box-shadow var(--ease-standard)}.composer:focus-within{border-color:var(--color-border-strong);box-shadow:var(--shadow-lg),0 0 0 3px color-mix(in srgb,var(--color-text) 14%,transparent)}.composer textarea{display:block;width:100%;min-height:74px;max-height:220px;resize:none;overflow-y:auto;border:0;outline:0;padding:16px 16px 8px;background:transparent;color:var(--color-text);font-size:14px;line-height:1.5}.composer textarea::placeholder{color:var(--color-text-subtle)}.composer__toolbar{justify-content:space-between;gap:14px;padding:4px 8px 8px}.composer__tools,.composer__send-tools{min-width:0;gap:4px}.composer__attachments{display:flex;flex-wrap:wrap;gap:6px;padding:0 8px 4px}.composer__chip{display:inline-flex;align-items:center;gap:4px;max-width:220px;padding:2px 6px 2px 8px;border-radius:999px;font-size:12px;line-height:1.4;background:var(--surface-2, rgba(127, 127, 127, .12));color:var(--text-2, inherit)}.composer__chip--pending{opacity:.7}.composer__chip-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.composer__chip-remove{display:inline-flex;align-items:center;justify-content:center;padding:0;border:0;background:transparent;color:inherit;cursor:pointer;opacity:.6}.composer__chip-remove:hover{opacity:1}.toolbar-select{padding:0 8px;font-size:13px}.toolbar-select--compact{min-width:58px}.model-select{width:clamp(120px,18vw,188px);min-width:0;height:30px}.model-select .custom-select__trigger{height:30px;color:var(--color-text-muted);font-size:13px;padding:0 28px 0 9px}.model-select .custom-select__trigger:hover:not(:disabled),.model-select .custom-select__trigger:focus-visible,.model-select.is-open .custom-select__trigger{color:var(--color-text)}.model-select .custom-select__menu{right:0;left:auto;min-width:min(280px,calc(100vw - 32px))}.suggestions{display:grid;width:calc(100% - 56px);gap:4px}.suggestion-row{height:42px;border-radius:var(--radius-sm);border:1px solid transparent;padding:0 12px;color:var(--color-text-muted);font-size:13px;transition:background var(--ease-standard),color var(--ease-standard),border-color var(--ease-standard),transform var(--duration-fast) var(--ease-out)}.suggestion-row:hover,.suggestion-row:focus-visible{background:var(--color-hover);border-color:var(--color-border);color:var(--color-text);transform:translate(2px)}@media(max-width:1100px){:root{--sidebar-width: 232px;--composer-width: 640px;--file-sidebar-width: 360px}.prompt-home{padding-inline:28px}.workspace-toolbar{padding-inline:12px}}@media(max-width:860px){.prompt-home{padding-inline:18px}.prompt-home h1{font-size:24px}.suggestions{width:100%}}.sidebar-empty,.file-sidebar__empty,.composer-status{margin:0;color:var(--color-text-muted);font-size:13px}.composer-status{width:min(var(--composer-width),100%)}.prompt-home--active .composer-status{width:min(1040px,100%)}.composer-status--error{color:var(--color-danger)}.agent-running-toast{display:inline-flex;align-items:center;gap:8px;width:auto;max-width:100%;justify-self:start;margin:0 0 6px;padding:6px 8px 6px 14px;border-radius:999px;background:var(--color-surface-soft);border:1px solid var(--color-border);color:var(--color-text);font-size:13px;animation:fadeSlideIn var(--ease-layout) both}.agent-running-toast__label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.agent-running-toast__stop{display:inline-flex;align-items:center;gap:4px;flex:0 0 auto;height:22px;margin-left:auto;padding:0 9px;border:1px solid var(--color-border);border-radius:999px;background:var(--color-surface);color:var(--color-text-muted);font-size:11px;cursor:pointer;transition:background var(--ease-standard),border-color var(--ease-standard),color var(--ease-standard)}.agent-running-toast__stop:hover{background:var(--color-danger-soft);border-color:color-mix(in srgb,var(--color-danger) 40%,var(--color-border));color:var(--color-danger)}.agent-running-toast__dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--color-info);animation:pulse 1.5s infinite}.running-scripts{justify-self:stretch;width:100%;margin:0 0 6px;border:1px solid var(--color-border);border-radius:12px;background:var(--color-surface-soft);color:var(--color-text);font-size:13px;overflow:hidden;animation:fadeSlideIn var(--ease-layout) both}.running-scripts>details>summary{display:flex;align-items:center;gap:8px;padding:8px 10px 8px 14px;cursor:pointer;list-style:none;-webkit-user-select:none;user-select:none}.running-scripts>details>summary::-webkit-details-marker{display:none}.running-scripts__dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--color-info);animation:pulse 1.5s infinite;flex:0 0 auto}.running-scripts__chevron{transition:transform var(--ease-standard);flex:0 0 auto;color:var(--color-text-subtle)}.running-scripts>details:not([open]) .running-scripts__chevron{transform:rotate(-90deg)}.running-scripts__label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.running-scripts__stop{display:inline-flex;align-items:center;gap:4px;flex:0 0 auto;height:22px;padding:0 9px;border:1px solid var(--color-border);border-radius:999px;background:var(--color-surface);color:var(--color-text-muted);font-size:11px;cursor:pointer;transition:background var(--ease-standard),border-color var(--ease-standard),color var(--ease-standard)}.running-scripts__stop:hover{background:var(--color-danger-soft);border-color:color-mix(in srgb,var(--color-danger) 40%,var(--color-border));color:var(--color-danger)}.running-scripts__list{list-style:none;margin:0;padding:0 10px 10px;display:flex;flex-direction:column;gap:8px}.running-scripts__item{border:1px solid var(--color-border);border-radius:10px;background:var(--color-surface);padding:8px 10px;display:flex;flex-direction:column;gap:6px}.running-scripts__item-head{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--color-text-subtle)}.running-scripts__item-agent{padding:1px 8px;border-radius:999px;background:var(--color-hover);color:var(--color-text);font-size:11px}.running-scripts__item-name{font-family:var(--font-mono, ui-monospace, SFMono-Regular, monospace);color:var(--color-text)}.running-scripts__item-elapsed{margin-left:auto;font-variant-numeric:tabular-nums}.running-scripts__cmd{margin:0;padding:8px 10px;border-radius:8px;background:var(--color-surface-raised);color:var(--color-text);font-family:var(--font-mono, ui-monospace, SFMono-Regular, monospace);font-size:12px;line-height:1.45;white-space:pre-wrap;word-break:break-word;overflow-x:auto;max-height:180px}.command-picker{position:relative}.icon-button.command-trigger{width:auto;padding:0 8px;font-size:11px;font-weight:600;letter-spacing:.2px}.command-picker__menu{position:fixed;top:-9999px;left:-9999px;z-index:30;display:grid;width:max-content;min-width:120px;max-height:min(320px,50vh);overflow:auto;overscroll-behavior:contain;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-raised);padding:4px;box-shadow:var(--shadow-lg);scrollbar-color:var(--color-border) transparent;scrollbar-width:thin}.command-picker__menu::-webkit-scrollbar{width:8px}.command-picker__menu::-webkit-scrollbar-track{background:transparent}.command-picker__menu::-webkit-scrollbar-thumb{border:2px solid transparent;border-radius:999px;background:var(--color-border-strong);background-clip:padding-box}.command-picker__menu::-webkit-scrollbar-thumb:hover{background:var(--color-text-subtle);background-clip:padding-box}.command-picker__option{display:flex;width:100%;min-width:0;height:30px;align-items:center;gap:10px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);padding:0 8px;font:inherit;font-size:13px;text-align:left;cursor:pointer}.command-picker__option:hover,.command-picker__option:focus-visible{background:var(--color-hover);color:var(--color-text);outline:none}@media(prefers-reduced-motion:no-preference){.command-picker__menu{animation:scaleIn var(--duration-fast) var(--ease-out) both}}@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes shimmer{0%{background-position:-160% 0}to{background-position:160% 0}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes detailsReveal{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.message-stack{display:grid;width:min(var(--composer-width),100%);min-height:0;max-height:min(42vh,420px);align-content:start;gap:22px;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;padding:4px 14px 20px 4px;scrollbar-gutter:stable;scrollbar-color:var(--color-border) transparent;scrollbar-width:thin}.message-stack::-webkit-scrollbar{width:8px}.message-stack::-webkit-scrollbar-track{background:transparent}.message-stack::-webkit-scrollbar-thumb{border:2px solid transparent;border-radius:999px;background:var(--color-border-strong);background-clip:padding-box}.message-stack::-webkit-scrollbar-thumb:hover{background:var(--color-text-subtle);background-clip:padding-box}.prompt-home--active .message-stack{width:100%;max-height:none}.message-stack__toolbar{display:flex;align-items:center;justify-content:space-between;color:var(--color-text-muted);font-size:12px}.message-row{display:grid;grid-template-columns:28px minmax(0,1fr);gap:12px;align-items:start}.message-row--user{grid-template-columns:minmax(0,1fr);justify-items:end;gap:2px}.message-row__user-actions{display:flex;justify-content:flex-end;min-height:22px;margin-right:2px}@media(prefers-reduced-motion:no-preference){.message-row,.activity-block,.message-hook{animation:fadeSlideIn var(--ease-layout) both}}.message-avatar{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;font-size:12px;font-weight:600;text-transform:uppercase;-webkit-user-select:none;user-select:none;color:var(--color-info);background:color-mix(in srgb,var(--color-info) 16%,var(--color-surface));border:1px solid color-mix(in srgb,var(--color-info) 26%,var(--color-border))}.message-avatar--expert{color:var(--color-success);background:color-mix(in srgb,var(--color-success) 16%,var(--color-surface));border-color:color-mix(in srgb,var(--color-success) 28%,var(--color-border))}.message-avatar--ghost{background:transparent;border-color:transparent;color:transparent}.message-row--continuation{margin-top:-16px}.message-row__body{min-width:0;max-width:720px;display:grid;gap:4px}.message-row__head{display:flex;align-items:center;gap:8px;min-height:22px}.message-row__name{font-size:12px;font-weight:600;color:var(--color-text-muted);text-transform:capitalize}.message-row__name--expert{color:var(--color-success)}.message-row__streaming{font-size:11px;color:var(--color-text-subtle)}.message-row__timer{font-size:11px;color:var(--color-text-subtle);font-variant-numeric:tabular-nums}.message-row--live .message-row__body{position:relative}.message-row--live .message-row__body:after{content:none}.message-row__content{display:grid;min-width:0;gap:2px}.message-row__content--pending .message-card__content{color:var(--color-text-muted)}.message-row__streaming-cursor{display:inline-block;width:7px;height:15px;border-radius:2px;background:var(--color-info);opacity:.82}@media(prefers-reduced-motion:no-preference){.message-row__streaming-cursor{animation:pulse 1.1s infinite}}.message-stack__total{justify-self:center;font-size:12px;color:var(--color-text-muted);font-variant-numeric:tabular-nums;padding:2px 12px;border-radius:999px;background:var(--color-surface-soft);border:1px solid var(--color-border)}.message-row__error{margin:0;white-space:pre-wrap;color:var(--color-danger)}.message-bubble{max-width:80%;padding:10px 14px;border-radius:var(--radius-lg);background:color-mix(in srgb,var(--color-info) 10%,var(--color-surface-soft));color:var(--color-text);line-height:1.6;white-space:pre-wrap;overflow-wrap:break-word;word-break:break-word}.message-card__agent-badge{display:inline-flex;align-items:center;gap:4px;border:1px solid color-mix(in srgb,var(--color-success) 30%,var(--color-border));border-radius:999px;background:color-mix(in srgb,var(--color-success) 10%,var(--color-surface));color:var(--color-success);padding:1px 8px;font-size:11px;font-weight:520;text-transform:capitalize}.message-hook{font-size:12px;color:var(--color-text-muted);padding-left:40px}.message-hook--warning{color:var(--color-warning)}.message-hook--error{color:var(--color-danger)}.message-hook details{display:grid;gap:6px}.message-hook summary{display:flex;align-items:baseline;gap:8px;cursor:pointer;list-style:none;padding:2px 0}.message-hook summary::-webkit-details-marker{display:none}.message-hook__label{flex:none;font-family:var(--font-mono);font-size:11px;opacity:.7}.message-hook__text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.message-hook pre{font-size:11px;margin:0;padding:6px 8px;background:var(--color-surface-soft);border-radius:4px;overflow-x:auto;white-space:pre-wrap;word-break:break-word}.system-message{margin-left:40px;max-width:760px;padding:10px 12px;border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface-soft);display:grid;gap:6px}.system-message__head{display:flex;align-items:center;gap:8px}.system-message__icon{flex:none}.system-message__label{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.03em}.system-message__agent{font-size:11px;color:var(--color-text-muted);font-family:var(--font-mono)}.system-message__text{margin:0;line-height:1.55;white-space:pre-wrap;overflow-wrap:break-word}.system-message__details{font-size:12px}.system-message__details summary{cursor:pointer;color:var(--color-text-muted)}.system-message__details pre{margin:6px 0 0;padding:6px 8px;font-size:11px;background:var(--color-surface-soft);border:1px solid var(--color-border);border-radius:4px;overflow-x:auto;white-space:pre-wrap;word-break:break-word}.system-message--info{border-color:color-mix(in srgb,var(--color-info) 35%,var(--color-border));background:var(--color-info-soft)}.system-message--info .system-message__icon,.system-message--info .system-message__label{color:var(--color-info)}.system-message--warning{border-color:color-mix(in srgb,var(--color-warning) 40%,var(--color-border));background:var(--color-warning-soft)}.system-message--warning .system-message__icon,.system-message--warning .system-message__label{color:var(--color-warning)}.system-message--error{border-color:color-mix(in srgb,var(--color-danger) 40%,var(--color-border));background:var(--color-danger-soft)}.system-message--error .system-message__icon,.system-message--error .system-message__label{color:var(--color-danger)}.system-message--fatal{border-color:var(--color-danger);background:color-mix(in srgb,var(--color-danger) 16%,var(--color-surface));box-shadow:0 0 0 1px color-mix(in srgb,var(--color-danger) 40%,transparent)}.system-message--fatal .system-message__icon,.system-message--fatal .system-message__label{color:var(--color-danger)}.system-message--emphasis .system-message__text{font-weight:560}.ask-user{margin-left:40px;max-width:760px;padding:12px 14px;border-radius:var(--radius-md);border:1px solid color-mix(in srgb,var(--color-accent) 35%,var(--color-border));background:var(--color-accent-soft);display:grid;gap:10px}.ask-user__head{display:flex;align-items:center;gap:8px}.ask-user__icon{flex:none;color:var(--color-accent)}.ask-user__title{font-size:13px;font-weight:600}.ask-user__agent{font-size:11px;font-family:var(--font-mono);color:var(--color-text-muted)}.ask-user__timer{margin-left:auto;font-size:11px;color:var(--color-text-muted);font-variant-numeric:tabular-nums}.ask-user__question{margin:0;line-height:1.55;white-space:pre-wrap}.ask-user__options{display:flex;flex-wrap:wrap;gap:8px}.ask-user__option{padding:6px 12px;border-radius:var(--radius-sm);border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text);font-size:13px;cursor:pointer;transition:background var(--ease-standard),border-color var(--ease-standard)}.ask-user__option:hover:not(:disabled){background:var(--color-hover);border-color:var(--color-accent)}.ask-user__option:disabled{opacity:.5;cursor:default}.ask-user__free{display:flex;gap:8px}.ask-user__input{flex:1;min-width:0;padding:8px 10px;border-radius:var(--radius-sm);border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text);font-size:13px}.ask-user__submit{padding:8px 14px;border-radius:var(--radius-sm);border:none;background:var(--color-accent);color:var(--color-accent-contrast);font-size:13px;font-weight:520;cursor:pointer}.ask-user__submit:disabled{opacity:.5;cursor:default}.ask-user--answered{border-color:color-mix(in srgb,var(--color-success) 35%,var(--color-border));background:var(--color-success-soft)}.ask-user--answered .ask-user__icon{color:var(--color-success)}.ask-user__answer{margin:0;font-size:13px;color:var(--color-success)}.auto-retry{margin-left:40px;max-width:760px;display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:var(--radius-md);border:1px solid color-mix(in srgb,var(--color-warning) 40%,var(--color-border));background:var(--color-warning-soft)}.auto-retry__icon{flex:none;color:var(--color-warning)}.auto-retry__body{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;min-width:0}.auto-retry__title{font-size:13px;font-weight:600;color:var(--color-warning)}.auto-retry__attempt,.auto-retry__countdown,.auto-retry__status{font-size:12px;color:var(--color-text-muted);font-variant-numeric:tabular-nums}.auto-retry__cancel{margin-left:auto;display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:var(--radius-sm);border:1px solid var(--color-border-strong);background:var(--color-surface);color:var(--color-text);font-size:12px;cursor:pointer}.auto-retry__cancel:hover{background:var(--color-hover)}.auto-retry--cancelled{opacity:.7}.activity-block{padding-left:40px;max-width:760px;color:var(--color-text-muted)}.activity-summary{display:flex;align-items:center;gap:8px;cursor:pointer;list-style:none;font-size:12px;padding:3px 8px;margin-left:-8px;border-radius:var(--radius-sm);transition:background var(--ease-standard),color var(--ease-standard)}.activity-summary:hover{background:var(--color-hover);color:var(--color-text)}.activity-summary::-webkit-details-marker{display:none}.activity-summary__dot{flex:none;width:8px;height:8px;border-radius:50%;background:var(--color-info)}@media(prefers-reduced-motion:no-preference){.activity-summary__dot{animation:pulse 1.5s infinite}}.activity-summary__chevron{flex:none;transition:transform var(--ease-standard)}.activity-block details[open] .activity-summary__chevron{transform:rotate(180deg)}.activity-summary__subtitle{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.activity-steps{display:grid;gap:10px;margin:8px 0 4px 4px;padding-left:12px;border-left:1px solid var(--color-border)}.activity-step>details>summary{cursor:pointer}@media(prefers-reduced-motion:no-preference){.activity-block details[open]>.activity-steps{animation:detailsReveal var(--ease-layout) both}.activity-block details[open]>.activity-steps>.activity-step{animation:detailsReveal var(--ease-standard) both}.activity-block details[open]>.activity-steps>.activity-step:nth-child(2){animation-delay:40ms}.activity-block details[open]>.activity-steps>.activity-step:nth-child(3){animation-delay:80ms}.activity-block details[open]>.activity-steps>.activity-step:nth-child(n+4){animation-delay:.12s}.activity-step details[open]>:not(summary),.message-hook details[open]>pre{animation:detailsReveal var(--ease-standard) both}}.message-card__copy{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;border-radius:4px;background:transparent;color:var(--color-text-muted);cursor:pointer;opacity:0;transition:opacity var(--ease-standard),background var(--ease-standard),color var(--ease-standard)}.message-row:hover .message-card__copy,.message-row:focus-within .message-card__copy{opacity:.55}.message-card__copy:hover{opacity:1!important;background:var(--color-hover);color:var(--color-text)}.message-card__copy:focus-visible{opacity:1;outline:2px solid var(--color-accent);outline-offset:1px}.message-card__copy.is-copied{opacity:1;color:var(--color-success)}.message-card__content{overflow-wrap:break-word;word-break:break-word;line-height:1.6}.message-card__content--plain{margin:0;white-space:pre-wrap}.message-card__content p{margin:0 0 .6em}.message-card__content p:last-child{margin-bottom:0}.message-card__content h1,.message-card__content h2,.message-card__content h3,.message-card__content h4{margin:1.2em 0 .6em;color:inherit;font-weight:600;line-height:1.3}.message-card__content h1{font-size:1.35em}.message-card__content h2{font-size:1.2em}.message-card__content h3{font-size:1.1em}.message-card__content h4{font-size:1em}.message-card__content ul,.message-card__content ol{margin:.6em 0;padding-left:1.4em}.message-card__content li{margin:.25em 0}.message-card__content a{color:var(--color-info);text-decoration:underline;text-underline-offset:2px}.message-card__content code{font-family:var(--font-mono);font-size:.92em;background:var(--color-surface-soft);border:1px solid var(--color-border);border-radius:4px;padding:.1em .35em;-webkit-box-decoration-break:clone;box-decoration-break:clone}.message-card__content pre{max-width:100%;overflow-x:hidden;white-space:pre-wrap;word-break:break-word;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-code-bg);margin:.8em 0;padding:10px;font-size:12px}.message-card__content pre code{background:transparent;border:none;padding:0;font-size:.88em}.message-card__content blockquote{margin:.8em 0;padding:8px 12px;border-left:3px solid var(--color-border-strong);background:var(--color-surface-soft);border-radius:0 var(--radius-sm) var(--radius-sm) 0;color:var(--color-text-muted)}.message-card__content blockquote>:first-child{margin-top:0}.message-card__content blockquote>:last-child{margin-bottom:0}.message-card__content table{width:100%;border-collapse:collapse;margin:.8em 0;font-size:13px}.message-card__content th,.message-card__content td{border:1px solid var(--color-border);padding:6px 10px;text-align:left}.message-card__content th{background:var(--color-surface-soft);font-weight:600}.message-card__content tr:nth-child(2n){background:var(--color-surface-soft)}.message-card__content hr{border:0;border-top:1px solid var(--color-border);margin:1em 0}.message-card__content img{max-width:100%;border-radius:var(--radius-sm)}.message-card__content .hljs-keyword{color:var(--color-code-keyword);font-weight:600}.message-card__content .hljs-string{color:var(--color-code-string)}.message-card__content .hljs-comment{color:var(--color-text-subtle);font-style:italic}.message-card__content .hljs-number{color:var(--color-code-number)}.message-card__content .hljs-function,.message-card__content .hljs-title{color:var(--color-code-function)}.message-card__content .hljs-operator{color:inherit}.message-card__content .hljs-punctuation{color:var(--color-text-muted)}.message-card__content .hljs-variable,.message-card__content .hljs-params{color:inherit}.message-card__content .hljs-attr,.message-card__content .hljs-tag,.message-card__content .hljs-name{color:var(--color-code-keyword)}.activity-step details{display:grid;gap:8px}.activity-step summary{cursor:pointer;color:inherit}.activity-step pre{max-width:100%;overflow-x:auto;white-space:pre-wrap;word-break:break-word;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-soft);margin:0;padding:10px;font-size:12px}.activity-step__io{display:grid;gap:4px}.activity-step__io-label{color:var(--color-text-muted);font-size:11px;padding-left:2px;text-transform:uppercase;letter-spacing:.04em}.terminal-input{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px;border-top:1px solid rgb(255 255 255 / .08);background:#0b0b0b;color:#f5f5f5;padding:8px 12px;font-family:var(--font-mono)}.terminal-input input{min-width:0;border:0;outline:none;background:transparent;color:inherit;font:inherit}.app-bootstrapping{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;display:grid;place-items:center;align-content:center;gap:10px;background:var(--color-canvas);color:var(--color-text-muted);text-align:center}@media(prefers-reduced-motion:no-preference){.app-bootstrapping{animation:fadeIn var(--duration-base) ease both}}.desktop-shell--sidebar-collapsed .sidebar{gap:16px}.desktop-shell--sidebar-collapsed .sidebar__resize-handle,.desktop-shell--sidebar-collapsed .sidebar-section{display:none}.desktop-shell--sidebar-collapsed .nav-item span{opacity:0}.sidebar__sessions-popover-anchor{position:relative}.sidebar__sessions-popover{position:absolute;top:0;left:calc(100% + 10px);z-index:40;display:flex;width:300px;max-height:min(70vh,560px);flex-direction:column;gap:8px;padding:12px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-raised, var(--color-surface));box-shadow:var(--shadow-md, 0 12px 32px rgba(0, 0, 0, .18))}.sidebar__sessions-popover .conversation-stack{display:grid;min-height:0;overflow-y:auto}.sidebar__sessions-popover-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.sidebar__sessions-popover-head h2{margin:0;color:var(--color-text-subtle);font-size:13px;font-weight:500}.desktop-shell--sidebar-collapsed .sidebar__sessions-popover .nav-item span,.desktop-shell--sidebar-collapsed .sidebar__sessions-popover .conversation-row span,.desktop-shell--sidebar-collapsed .sidebar__sessions-popover .conversation-row small{opacity:1}.desktop-shell--sidebar-collapsed .sidebar__sessions-popover .conversation-stack{display:grid}.sandbox-status{position:relative;display:inline-flex}.sandbox-status__trigger{display:inline-flex;height:30px;align-items:center;justify-content:center;gap:7px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-muted);padding:0 10px;font-size:13px;cursor:default;-webkit-user-select:none;user-select:none;transition:background var(--ease-standard),border-color var(--ease-standard),color var(--ease-standard)}.sandbox-status__trigger:hover,.sandbox-status__trigger:focus-visible{border-color:var(--color-border-strong);background:var(--color-hover);color:var(--color-text);outline:none}.sandbox-status__dot{width:7px;height:7px;border-radius:999px;background:var(--color-text-subtle)}.sandbox-status__trigger--disconnected .sandbox-status__dot{background:var(--color-danger)}.sandbox-status__trigger--connected .sandbox-status__dot{background:var(--color-success)}.sandbox-status__trigger--connecting .sandbox-status__dot{background:var(--color-info);animation:sandbox-status-pulse 1.4s ease-in-out infinite}.sandbox-status__trigger--creating .sandbox-status__dot{background:var(--color-warning);animation:sandbox-status-pulse 1.4s ease-in-out infinite}@keyframes sandbox-status-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(.78)}}.sandbox-status__popover{position:absolute;top:calc(100% + 10px);right:0;z-index:30;width:360px;max-height:calc(100vh - 60px);overflow-y:auto;visibility:hidden;opacity:0;transform:translateY(-4px);border:1px solid var(--color-border);border-radius:16px;background:var(--color-surface-raised);box-shadow:var(--shadow-lg);padding:14px;pointer-events:none;transition:opacity var(--ease-standard),transform var(--ease-standard),visibility var(--ease-standard)}.sandbox-status__popover.is-open{visibility:visible;opacity:1;transform:translateY(0);pointer-events:auto}.sandbox-status__header{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding-bottom:12px;border-bottom:1px solid var(--color-border)}.sandbox-status__eyebrow{color:var(--color-text-muted);font-size:12px}.sandbox-status__header strong{color:var(--color-text);font-size:14px}.sandbox-status__notice{margin:12px 0 0;border:1px solid var(--color-border);border-radius:10px;background:var(--color-surface-soft);color:var(--color-text-muted);padding:9px 10px;font-size:12px}.sandbox-status__notice.is-loading:before{display:inline-block;width:7px;height:7px;margin-right:7px;border-radius:999px;background:var(--color-info);content:""}.sandbox-status__grid{display:grid;gap:8px;margin:12px 0}.sandbox-status__grid div{display:grid;min-width:0;grid-template-columns:76px minmax(0,1fr);gap:10px}.sandbox-status__grid dt,.sandbox-status__metrics span,.sandbox-status__metrics small{color:var(--color-text-muted)}.sandbox-status__grid dt,.sandbox-status__grid dd{min-width:0;margin:0;font-size:12px}.sandbox-status__grid dd{overflow:hidden;color:var(--color-text);text-overflow:ellipsis;white-space:nowrap}.sandbox-status__metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.sandbox-status__metrics div{display:grid;min-width:0;gap:2px;border:1px solid var(--color-border);border-radius:10px;background:var(--color-surface-soft);padding:9px 10px}.sandbox-status__metrics span,.sandbox-status__metrics small{font-size:11px}.sandbox-status__metrics strong{overflow:hidden;color:var(--color-text);font-size:12px;font-weight:560;text-overflow:ellipsis;white-space:nowrap}.sandbox-status__health{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:8px}.sandbox-status__health div{display:grid;min-width:0;gap:2px;border:1px solid var(--color-border);border-radius:10px;background:var(--color-surface);padding:8px 9px}.sandbox-status__health span{color:var(--color-text-muted);font-size:11px}.sandbox-status__health strong{overflow:hidden;color:var(--color-text);font-size:12px;font-weight:560;text-overflow:ellipsis;white-space:nowrap}.sandbox-status__logs{max-height:128px;margin:8px 0 0;overflow:auto;border:1px solid var(--color-border);border-radius:10px;background:var(--color-code-bg);color:var(--color-text-muted);padding:9px 10px;font-family:var(--font-mono);font-size:11px;line-height:1.5;white-space:pre-wrap}.sandbox-status__empty{margin:12px 0 0;color:var(--color-text-muted);font-size:12px;line-height:1.55}.sandbox-status__actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px;padding-top:12px;border-top:1px solid var(--color-border)}.sandbox-status__actions button{height:30px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);padding:0 10px;font-size:12px}.sandbox-status__actions button:hover:not(:disabled),.sandbox-status__actions button:focus-visible{border-color:var(--color-border-strong);background:var(--color-hover);outline:none}.sandbox-status__actions button:disabled{color:var(--color-text-subtle);opacity:.65}.sandbox-status__danger-action{color:var(--color-danger)!important}.terminal-drawer{position:absolute;right:16px;bottom:16px;left:16px;z-index:20;display:grid;grid-template-rows:40px minmax(0,1fr);overflow:hidden;border:1px solid var(--color-border);border-radius:16px;background:var(--color-surface-raised);box-shadow:var(--shadow-xl);opacity:0;pointer-events:none;transform:translateY(calc(100% + 24px));transition:opacity var(--duration-base) ease,transform var(--ease-layout)}.workspace--files-open .terminal-drawer{right:calc(var(--active-file-sidebar-width, var(--file-sidebar-width)) + 16px)}.terminal-drawer.is-open{opacity:1;pointer-events:auto;transform:translateY(0)}.terminal-drawer.is-resizing{transition:none;-webkit-user-select:none;user-select:none}.terminal-drawer__resize-handle{position:absolute;top:-5px;right:0;left:0;z-index:2;height:10px;cursor:ns-resize}.terminal-drawer__resize-handle:before{position:absolute;top:4px;right:12px;left:12px;height:2px;border-radius:2px;background:transparent;content:"";transition:background var(--ease-standard)}.terminal-drawer__resize-handle:hover:before{background:var(--color-border-strong)}.terminal-drawer.is-resizing .terminal-drawer__resize-handle:before{background:var(--color-accent)}.terminal-drawer__tabs{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid var(--color-border);background:var(--color-surface-soft);padding:5px 8px 0;overflow:hidden}.terminal-drawer__tab-strip{display:flex;min-width:0;align-items:center;gap:4px;overflow-x:auto;overflow-y:hidden}.terminal-tab{display:flex;min-width:0;align-items:center;max-width:220px;border:1px solid transparent;border-bottom:0;border-radius:8px 8px 0 0;color:var(--color-text-muted)}.terminal-tab.is-active{border-color:var(--color-border);background:var(--color-surface-raised);color:var(--color-text)}.terminal-tab:not(.is-active):hover{background:var(--color-hover)}.terminal-tab__select{display:flex;min-width:0;height:34px;flex:1;align-items:center;gap:8px;border:0;background:transparent;color:inherit;padding:0 8px;text-align:left}.terminal-tab__select span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.terminal-tab__status{width:7px;height:7px;flex:0 0 7px;border-radius:999px;background:var(--color-text-subtle)}.terminal-tab__status.is-loading{background:var(--color-info)}@media(prefers-reduced-motion:no-preference){.terminal-tab__status.is-loading{animation:pulse 1.5s infinite}}.terminal-tab__status.is-connected{background:var(--color-success)}.terminal-tab__status.is-error{background:var(--color-danger)}.terminal-tab__close{display:inline-grid;width:24px;height:28px;place-items:center;flex:0 0 auto;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);margin-right:3px}.terminal-tab__select:hover,.terminal-tab__select:focus-visible,.terminal-tab__close:hover,.terminal-tab__close:focus-visible{color:var(--color-text);outline:none}.terminal-tab__close:hover,.terminal-tab__close:focus-visible{background:var(--color-hover)}.terminal-tab-add,.terminal-drawer__tools button{display:inline-grid;width:30px;height:30px;place-items:center;flex:0 0 auto;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted)}.terminal-tab-add{margin-bottom:4px}.terminal-drawer__tools{display:flex;align-items:center;gap:2px;margin-bottom:4px}.terminal-tab-add:hover,.terminal-tab-add:focus-visible,.terminal-drawer__tools button:hover,.terminal-drawer__tools button:focus-visible{background:var(--color-hover);color:var(--color-text);outline:none}.terminal-drawer__body{display:grid;grid-template-rows:auto minmax(0,1fr) auto;min-width:0;min-height:0;background:#050505;color:#f5f5f5}.terminal-loading{display:flex;height:100%;align-items:center;justify-content:center;gap:10px;color:#a3a3a3;font-family:var(--font-mono);font-size:13px}.terminal-loading__dot{width:8px;height:8px;border-radius:999px;background:var(--color-info)}.terminal-statusbar{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:14px;border-bottom:1px solid rgb(255 255 255 / .08);background:#0b0b0b;color:#a3a3a3;padding:6px 12px;font-family:var(--font-mono);font-size:11px}.terminal-statusbar span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.terminal-screen{min-height:0;margin:0;overflow:auto;padding:16px;color:#e5e5e5;font-family:var(--font-mono);font-size:13px;line-height:1.65;white-space:pre-wrap}.file-sidebar{position:relative;z-index:24;display:grid;grid-column:2;grid-row:1 / -1;width:100%;min-width:0;height:100vh;grid-template-rows:auto auto minmax(0,1fr);overflow:visible;border-left:1px solid var(--color-border);background:var(--color-sidebar);pointer-events:none;transform:translate(100%);transition:transform var(--ease-layout)}.file-sidebar.is-open{pointer-events:auto;transform:translate(0)}.workspace--resizing-files .file-sidebar{transition:none}.file-sidebar__resize-handle{position:absolute;top:0;bottom:0;left:-5px;z-index:3;width:10px;cursor:ew-resize}.file-sidebar__resize-handle:before{position:absolute;top:0;bottom:0;left:4px;width:1px;background:transparent;content:"";transition:background var(--ease-standard)}.file-sidebar__resize-handle:hover:before,.workspace--resizing-files .file-sidebar__resize-handle:before{background:var(--color-border-strong)}.file-sidebar__header,.file-preview__header{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:12px}.file-sidebar__header{border-bottom:1px solid var(--color-border);padding:14px 14px 12px}.file-sidebar__header h2,.file-preview__header h3{margin:0;overflow:hidden;color:var(--color-text);text-overflow:ellipsis;white-space:nowrap}.file-sidebar__header h2{font-size:15px}.file-preview__header h3{font-size:13px}.file-sidebar__eyebrow{display:block;color:var(--color-text-muted);font-size:11px}.file-sidebar__actions{display:flex;align-items:center;gap:2px}.file-sidebar__selection-actions{display:flex;min-width:0;align-items:center;gap:4px;padding-right:4px}.file-sidebar__selection-actions>span{max-width:86px;overflow:hidden;color:var(--color-text-muted);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.file-sidebar__download-selected{display:inline-flex;height:28px;align-items:center;gap:5px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);padding:0 8px;font-size:12px}.file-sidebar__download-selected:hover:not(:disabled),.file-sidebar__download-selected:focus-visible{border-color:var(--color-border-strong);background:var(--color-hover);outline:none}.file-sidebar__download-selected:disabled{color:var(--color-text-subtle);opacity:.62}.file-sidebar__path{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--color-border);background:var(--color-surface-soft);padding:8px 14px}.file-sidebar__path span,.file-sidebar__path small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-sidebar__path span{color:var(--color-text);font-family:var(--font-mono);font-size:12px}.file-sidebar__path small{color:var(--color-text-muted);font-size:11px}.file-sidebar__tree{min-width:0;min-height:0;overflow:auto;padding:8px}.file-node{min-width:0}.file-row{display:grid;width:100%;min-width:0;height:30px;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:4px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);padding-right:8px;text-align:left}.file-row__open{display:grid;min-width:0;height:30px;grid-template-columns:16px 18px minmax(0,1fr) auto;align-items:center;gap:7px;border:0;background:transparent;color:inherit;padding:0;text-align:left}.file-row__check{display:inline-grid;width:18px;height:30px;place-items:center}.file-row__check input{width:13px;height:13px;accent-color:var(--color-accent)}.file-row:hover,.file-row:focus-visible{background:var(--color-hover);color:var(--color-text);outline:none}.file-row.is-selected,.file-row.is-download-selected{background:var(--color-accent-soft);color:var(--color-text);outline:none}.file-row__open:focus-visible{outline:none}.file-row__chevron{display:inline-grid;width:16px;height:16px;place-items:center;color:var(--color-text-subtle);transition:transform var(--ease-standard)}.file-row__chevron.is-expanded{transform:rotate(90deg)}.file-row__name,.file-row__size{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-row__name{font-size:12px}.file-row__size{color:var(--color-text-subtle);font-size:11px}.file-preview-panel{position:absolute;top:0;right:var(--active-file-sidebar-width, var(--file-sidebar-width));bottom:0;z-index:22;display:grid;width:min(var(--preview-panel-width, 560px),calc(100vw - var(--sidebar-width) - var(--active-file-sidebar-width, var(--file-sidebar-width))));min-width:360px;grid-template-rows:auto auto minmax(0,1fr);overflow:hidden;border-left:1px solid var(--color-border);border-right:1px solid var(--color-border);background:var(--color-surface);box-shadow:-18px 0 46px var(--color-shadow);transform:translate(100%);transition:box-shadow var(--ease-layout),transform var(--ease-layout),width var(--ease-layout);will-change:transform,width}.file-preview-panel.is-resizing{transition:none;-webkit-user-select:none;user-select:none}.file-preview-panel__resize-handle{position:absolute;top:0;bottom:0;left:-5px;z-index:4;width:10px;cursor:ew-resize}.file-preview-panel__resize-handle:before{position:absolute;top:0;bottom:0;left:4px;width:1px;background:transparent;content:"";transition:background var(--ease-standard)}.file-preview-panel__resize-handle:hover:before,.file-preview-panel.is-resizing .file-preview-panel__resize-handle:before{background:var(--color-border-strong)}.file-preview-panel.is-open{transform:translate(0)}.file-preview-panel.is-maximized{right:var(--active-file-sidebar-width, var(--file-sidebar-width));width:calc(100% - var(--active-file-sidebar-width, var(--file-sidebar-width)));min-width:0;z-index:22;box-shadow:none;transform:translate(0)}.file-preview-panel.is-maximized .file-preview-panel__resize-handle{display:none}.file-preview__download{display:inline-flex;height:28px;align-items:center;gap:6px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-muted);padding:0 8px;font-size:12px}.file-preview__actions{display:flex;align-items:center;gap:4px}.file-preview-panel .file-preview__header{border-bottom:1px solid var(--color-border);padding:14px}.file-preview__download:hover,.file-preview__download:focus-visible{border-color:var(--color-border-strong);background:var(--color-hover);color:var(--color-text);outline:none}.file-preview__download:disabled{color:var(--color-text-subtle);opacity:.55}.file-preview__meta{display:grid;gap:6px;margin:0;border-bottom:1px solid var(--color-border);background:var(--color-surface-soft);padding:10px 14px}.file-preview__meta div{display:grid;min-width:0;grid-template-columns:68px minmax(0,1fr);gap:8px}.file-preview__meta dt,.file-preview__meta dd{min-width:0;margin:0;font-size:11px}.file-preview__meta dt{color:var(--color-text-muted)}.file-preview__meta dd{overflow:hidden;color:var(--color-text);text-overflow:ellipsis;white-space:nowrap}.file-preview__content{margin:0;overflow:auto;border:1px solid var(--color-border);border-radius:10px;background:var(--color-surface-soft);color:var(--color-text);padding:10px;font-family:var(--font-mono);font-size:11px;line-height:1.55;white-space:pre-wrap}.file-preview__media{display:grid;min-height:0;place-items:center;overflow:auto;background:linear-gradient(45deg,var(--color-surface-soft) 25%,transparent 25%),linear-gradient(-45deg,var(--color-surface-soft) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,var(--color-surface-soft) 75%),linear-gradient(-45deg,transparent 75%,var(--color-surface-soft) 75%);background-color:var(--color-surface);background-position:0 0,0 8px,8px -8px,-8px 0;background-size:16px 16px;padding:16px}.file-preview__media img,.file-preview__media iframe{max-width:100%;border:1px solid var(--color-border);border-radius:8px;background:var(--color-surface-raised)}.file-preview__media img{height:auto}.file-preview__media iframe{width:100%;height:100%;min-height:480px}.file-preview__media p{margin:0;color:var(--color-text-muted);font-size:12px}.markdown-preview,.code-preview,.file-preview__content{min-height:0}.file-preview__markdown{min-height:0;overflow:auto;padding:18px 22px 28px}.file-preview__code{padding:16px 18px}.file-preview__markdown>.message-card__content{font-size:13px}.markdown-preview{overflow:auto;padding:16px 18px 24px}.markdown-preview h1,.markdown-preview h2,.markdown-preview p,.markdown-preview ul{margin-top:0}.markdown-preview h1{margin-bottom:16px;color:var(--color-text);font-size:22px;line-height:1.25}.markdown-preview h2{margin-bottom:12px;color:var(--color-text);font-size:17px}.markdown-preview p,.markdown-preview li{color:var(--color-text);font-size:14px;line-height:1.7}.markdown-preview ul{padding-left:20px}.markdown-preview code{border:1px solid var(--color-border);border-radius:5px;background:var(--color-surface-soft);padding:1px 5px;font-family:var(--font-mono);font-size:12px}.code-preview{margin:0;overflow:auto;border-top:1px solid var(--color-border);background:var(--color-surface-soft);color:var(--color-text);padding:16px;font-family:var(--font-mono);font-size:12px;line-height:1.65;white-space:pre-wrap}.syntax-keyword{color:var(--color-code-keyword);font-weight:560}.syntax-string{color:var(--color-code-string)}.syntax-comment{color:var(--color-text-subtle)}.file-preview__notice{margin:14px;border:1px solid var(--color-border);border-radius:10px;background:var(--color-surface-soft);color:var(--color-text-muted);padding:10px;font-size:12px;line-height:1.5}.file-preview__notice-detail{color:var(--color-text-subtle);word-break:break-word}.search-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:grid;place-items:center;padding:24px;background:var(--color-overlay-strong);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.search-dialog{width:min(620px,calc(100vw - 48px));max-height:min(420px,calc(100vh - 48px));overflow:hidden;border:1px solid var(--color-border);border-radius:var(--radius-xl);background:var(--color-surface-raised);box-shadow:var(--shadow-xl),0 2px 0 var(--color-inset-highlight) inset}@media(prefers-reduced-motion:no-preference){.search-modal{animation:fadeIn var(--duration-fast) ease both}.search-dialog{animation:scaleIn var(--ease-layout) both}}.search-dialog__input{display:block;width:100%;height:64px;border:0;outline:0;padding:0 22px;background:transparent;color:var(--color-text);font-size:22px;line-height:1}.search-dialog__input::placeholder{color:var(--color-text-muted)}.search-dialog__body{padding:0 8px 10px}.search-dialog__heading,.search-dialog__empty{margin:0;padding:0 14px 8px;color:var(--color-text-muted);font-size:15px}.search-dialog__empty{padding-block:34px 46px;text-align:center}.search-results{display:grid;gap:0}.search-result{display:grid;width:100%;min-width:0;height:46px;grid-template-columns:28px minmax(0,1fr);align-items:center;gap:10px;border:0;border-radius:14px;background:transparent;color:var(--color-text);padding:0 12px;text-align:left}.search-result:hover,.search-result:focus-visible{background:var(--color-hover);outline:none}.search-result.is-highlighted{background:var(--color-accent-soft);outline:none}.search-result svg{width:17px;height:17px;color:var(--color-text-muted)}.search-result__title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-result__title{font-size:15px}.settings-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90}.settings-modal__backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--color-overlay);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.settings-modal__panel{position:absolute;top:50%;left:50%;display:grid;width:min(1040px,calc(100vw - 64px));height:min(585px,calc(100vh - 64px));aspect-ratio:16 / 9;grid-template-rows:auto minmax(0,1fr);overflow:hidden;transform:translate(-50%,-50%);border:1px solid var(--color-border);border-radius:var(--radius-xl);background:var(--color-surface-raised);box-shadow:var(--shadow-xl)}@media(prefers-reduced-motion:no-preference){.settings-modal__backdrop{animation:fadeIn var(--duration-base) ease both}.settings-modal__panel{animation:modalPop var(--ease-layout) both}}.settings-modal__header{display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid var(--color-border);padding:16px 18px}.settings-modal__header h2{margin:0;color:var(--color-text);font-size:18px}.settings-modal__eyebrow{color:var(--color-text-muted);font-size:12px}.settings-modal__body{display:grid;min-height:0;grid-template-columns:190px minmax(0,1fr)}.settings-tabs{display:grid;align-content:start;gap:3px;border-right:1px solid var(--color-border);background:var(--color-surface-soft);padding:12px}.settings-tabs button{display:flex;height:34px;align-items:center;gap:9px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);padding:0 9px;text-align:left}.settings-tabs button:hover,.settings-tabs button:focus-visible,.settings-tabs button.is-active{background:var(--color-hover);color:var(--color-text);outline:none}.settings-content{min-width:0;min-height:0;overflow:auto;padding:18px}.settings-section{display:grid;align-content:start;gap:14px}.settings-section h3{margin:0;color:var(--color-text);font-size:16px}.settings-section__header{display:flex;min-width:0;align-items:start;justify-content:space-between;gap:16px}.settings-section__header p{max-width:520px;margin:4px 0 0;color:var(--color-text-muted);font-size:12px;line-height:1.5}.provider-active-pill{display:inline-flex;max-width:220px;min-height:28px;align-items:center;gap:6px;overflow:hidden;border:1px solid var(--color-border);border-radius:999px;background:var(--color-surface-soft);color:var(--color-text);padding:0 10px;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.settings-section label,.settings-field,.settings-inline-form{display:grid;gap:6px}.settings-section label span,.settings-field>span{color:var(--color-text-muted);font-size:12px}.settings-section input,.settings-inline-form input{width:100%;min-width:0;height:34px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);padding:0 10px;font:inherit}.settings-section input:focus,.settings-inline-form input:focus{border-color:var(--color-border-strong);outline:none;box-shadow:0 0 0 3px var(--color-active)}.settings-section .custom-select__trigger{height:34px}.settings-inline-form{grid-template-columns:repeat(2,minmax(0,1fr)) auto;align-items:end}.provider-form{display:grid;gap:18px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-soft);padding:14px}.provider-form label,.provider-form__field{display:grid;min-width:0;gap:7px}.provider-form label span,.provider-form__field>span,.provider-form__models-header span,.provider-form__appearance>div>span{color:var(--color-text-muted);font-size:12px;font-weight:520;letter-spacing:0}.provider-form input{width:100%;min-width:0;height:40px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);font:inherit;font-size:13px;line-height:40px;padding:0 12px;outline:none;transition:background var(--ease-standard),border-color var(--ease-standard),box-shadow var(--ease-standard)}.provider-form input::placeholder{color:var(--color-text-subtle)}.provider-form input:hover:not(:disabled){border-color:var(--color-border-strong)}.provider-form input:focus{border-color:var(--color-text-muted);box-shadow:0 0 0 3px var(--color-active)}.provider-form input:disabled{color:var(--color-text-subtle);background-color:var(--color-surface-soft)}.provider-form .custom-select__trigger{height:40px;border-radius:var(--radius-md);font-size:13px;padding:0 12px}.provider-header-actions{display:flex;min-width:0;align-items:center;gap:8px}.provider-form-modal{position:fixed;z-index:70;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:24px}.provider-form-modal__backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--color-overlay-soft);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.provider-form--modal{position:relative;width:min(720px,calc(100vw - 48px));max-height:min(720px,calc(100vh - 48px));overflow:auto;gap:20px;border-radius:var(--radius-lg);background:var(--color-surface-raised);padding:24px;box-shadow:var(--shadow-xl)}@media(prefers-reduced-motion:no-preference){.provider-form-modal__backdrop{animation:fadeIn var(--duration-base) ease both}.provider-form--modal{animation:scaleIn var(--ease-layout) both}}.provider-form-modal__header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding-bottom:2px}.provider-form-modal__header h3{margin:2px 0 0;color:var(--color-text);font-size:18px;line-height:1.2}.provider-form-modal__actions{justify-content:flex-end;padding-top:2px}.provider-form-modal__actions .settings-button{height:40px;min-width:120px;border-radius:var(--radius-md);font-size:14px}.provider-form__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 18px}.mcp-form__wide{grid-column:1 / -1}.provider-form__key{position:relative}.provider-form__key input{padding-right:42px}.provider-form__key button{position:absolute;right:7px;bottom:6px;display:inline-grid;width:28px;height:28px;place-items:center;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted)}.provider-form__key button:hover,.provider-form__key button:focus-visible{background:var(--color-hover);color:var(--color-text);outline:none}.provider-form__models,.provider-form__appearance,.provider-form__appearance>div{display:grid;gap:10px}.provider-form__models-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.provider-form__models-header button{display:inline-flex;height:32px;align-items:center;gap:5px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text-muted);padding:0 10px;font-size:13px;transition:background var(--ease-standard),border-color var(--ease-standard),color var(--ease-standard)}.provider-form__models-header button:hover,.provider-form__models-header button:focus-visible{border-color:var(--color-border-strong);background:var(--color-hover);color:var(--color-text);outline:none}.provider-model-list{display:grid;gap:8px}.provider-form__models-hint{margin:8px 0 0;color:var(--color-text-subtle);font-size:11px;line-height:1.45}.provider-model-row{display:grid!important;grid-template-columns:minmax(0,1fr) 40px;gap:8px!important}.provider-model-row button{display:inline-grid;width:40px;height:40px;place-items:center;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text-muted);transition:background var(--ease-standard),border-color var(--ease-standard),color var(--ease-standard)}.provider-model-row button:hover:not(:disabled),.provider-model-row button:focus-visible{border-color:var(--color-border-strong);background:var(--color-hover);color:var(--color-text);outline:none}.provider-model-row button:disabled{opacity:.42}.provider-form__appearance{grid-template-columns:minmax(0,1fr);gap:18px}.provider-color-row{display:flex;flex-wrap:wrap;gap:6px}.provider-color-row button{width:28px;height:28px;border:2px solid var(--color-surface-raised);border-radius:999px;box-shadow:inset 0 0 0 1px var(--color-inset-highlight)}.provider-color-row button.is-selected{border-color:var(--color-surface-raised);box-shadow:0 0 0 2px var(--color-text),inset 0 0 0 1px var(--color-inset-highlight)}.settings-actions,.settings-list-item__actions{display:flex;gap:8px}.provider-actions{display:grid;grid-template-columns:repeat(3,82px);justify-content:end}.mcp-actions{display:grid;grid-template-columns:repeat(2,82px);justify-content:end}.settings-button,.settings-list-item__actions button{height:34px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-text);color:var(--color-canvas);padding:0 12px;font-size:13px;font-weight:500;transition:background var(--ease-standard),border-color var(--ease-standard),color var(--ease-standard),box-shadow var(--ease-standard)}.provider-actions button,.mcp-actions button{display:inline-flex;width:82px;align-items:center;justify-content:center}.settings-button--ghost,.settings-list-item__actions button{background:var(--color-surface);color:var(--color-text)}.settings-button:not(.settings-button--ghost):hover:not(:disabled),.settings-button:not(.settings-button--ghost):focus-visible{border-color:var(--color-text);box-shadow:var(--shadow-md);outline:none}.settings-button--ghost:hover:not(:disabled),.settings-button--ghost:focus-visible,.settings-list-item__actions button:hover:not(:disabled),.settings-list-item__actions button:focus-visible{border-color:var(--color-border-strong);background:var(--color-hover);color:var(--color-text);outline:none}.settings-list-item__actions button:disabled{color:var(--color-text-subtle);opacity:.55}.settings-kv,.settings-list{display:grid;gap:8px;margin:0}.settings-kv div{display:grid;grid-template-columns:100px minmax(0,1fr);gap:10px}.settings-kv dt,.settings-kv dd{min-width:0;margin:0;font-size:13px}.settings-kv dt{color:var(--color-text-muted)}.settings-kv dd{overflow:hidden;color:var(--color-text);text-overflow:ellipsis;white-space:nowrap}.settings-list-item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);padding:12px}.settings-list-item>div:first-child{display:grid;min-width:0;gap:3px}.settings-list-item strong,.settings-list-item span,.settings-list-item small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.settings-list-item strong{display:inline-flex;align-items:center;gap:7px}.provider-color-dot{width:9px;height:9px;flex:0 0 9px;border-radius:999px}.provider-health-dot{display:inline-block;width:8px;height:8px;border-radius:999px;margin-left:4px}.provider-health-dot--healthy{background-color:var(--color-success)}.provider-health-dot--degraded{background-color:var(--color-warning)}.provider-health-dot--unavailable{background-color:var(--color-danger)}.provider-health-dot--unknown{background-color:var(--color-text-subtle)}.provider-group{margin-bottom:20px}.provider-group-title{margin:0 0 10px;font-size:13px;font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.4px}.provider-model-health-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.provider-model-pill{display:inline-flex;align-items:center;gap:4px;padding:2px 7px;border-radius:999px;font-size:11px;background:var(--color-surface-elevated);color:var(--color-text-muted);border:1px solid var(--color-border)}.model-status-dot{display:inline-block;width:7px;height:7px;border-radius:999px}.model-status-dot--healthy{background-color:var(--color-success)}.model-status-dot--degraded{background-color:var(--color-warning)}.model-status-dot--unavailable{background-color:var(--color-danger)}.model-status-dot--unknown{background-color:var(--color-text-subtle)}@keyframes spin{to{transform:rotate(360deg)}}.spin{animation:spin 1s linear infinite}.settings-list-item span,.settings-list-item small,.settings-note{color:var(--color-text-muted);font-size:12px}.settings-note{margin:0 0 10px}.settings-note--error{color:var(--color-danger)}.settings-version{text-align:right;color:var(--color-text-muted);font-size:12px;font-family:var(--font-mono)}.settings-check{display:flex!important;grid-template-columns:none!important;align-items:center;gap:9px!important}.settings-check input{width:16px;height:16px;position:relative;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--color-border-strong);border-radius:4px;background:var(--color-surface);padding:0}.settings-check input:checked{border-color:var(--color-text);background:var(--color-text)}.settings-check input:checked:after{position:absolute;top:1px;left:4px;width:5px;height:9px;border:solid var(--color-canvas);border-width:0 2px 2px 0;content:"";transform:rotate(45deg)}@media(max-width:860px){.search-dialog{width:calc(100vw - 28px);border-radius:18px}.search-dialog__input{height:60px;font-size:20px}.search-result{height:44px}.search-result__title{font-size:14px}}.sandbox-building-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:75;display:grid;place-items:center;background:var(--color-overlay);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);animation:fadeSlideIn .3s ease-out}.sandbox-building-panel{display:grid;justify-items:center;gap:14px;width:min(420px,calc(100vw - 32px));border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-raised);box-shadow:var(--shadow-xl);padding:36px 28px}.sandbox-building__title{margin:0;font-size:20px;font-weight:600;text-align:center}.sandbox-building__status{margin:0;color:var(--color-text-muted);font-size:14px;text-align:center}.sandbox-building__status.is-timeout{color:var(--color-warning);font-weight:600}.sandbox-building__error{margin:0;color:var(--color-danger);font-size:13px;text-align:center}.sandbox-building__spinner{display:flex;align-items:center;justify-content:center;gap:8px}.sandbox-building__spinner span{display:inline-block;width:10px;height:10px;border-radius:999px;background:var(--color-info);animation:pulse 1.2s ease-in-out infinite}.sandbox-building__spinner span:nth-child(2){animation-delay:.2s}.sandbox-building__spinner span:nth-child(3){animation-delay:.4s}.agent-network{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(280px,1fr);gap:14px;min-height:0}@media(max-width:880px){.agent-network{grid-template-columns:minmax(0,1fr)}}.agent-network--empty{grid-template-columns:1fr}.agent-network__empty-state{display:grid;justify-items:center;gap:10px;border:1px dashed var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface-soft);color:var(--color-text-muted);padding:36px 24px;text-align:center}.agent-network__empty-state svg{color:var(--color-text-subtle)}.agent-network__empty-state p{max-width:380px;margin:0;font-size:13px;line-height:1.55}.agent-network__viewport-shell{display:grid;gap:8px;min-width:0}.agent-network__legend{display:flex;flex-wrap:wrap;align-items:center;gap:12px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-soft);color:var(--color-text-muted);padding:7px 11px;font-size:11px}.agent-network__legend-item{display:inline-flex;align-items:center;gap:6px}.agent-network__legend-divider{width:1px;height:12px;background:var(--color-border)}.agent-network__legend-counter{margin-left:auto;font-variant-numeric:tabular-nums;font-size:11px}.agent-network__available{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-muted);padding:7px 10px;font-size:11px}.agent-network__available summary{cursor:pointer;list-style:none}.agent-network__available summary::-webkit-details-marker{display:none}.agent-network__available summary:before{content:">";display:inline-block;margin-right:6px;color:var(--color-text-subtle);transition:transform var(--ease-standard)}.agent-network__available[open] summary:before{transform:rotate(90deg)}.agent-network__available ul{display:flex;flex-wrap:wrap;gap:5px;margin:8px 0 0;padding:0;list-style:none}.agent-network__available li{border:1px dashed var(--color-border-strong);border-radius:999px;color:var(--color-text-subtle);padding:2px 7px}.agent-network__legend-dot{display:inline-block;width:8px;height:8px;border-radius:999px;background:var(--color-text-subtle)}.agent-network__legend-dot--running{background:var(--color-info);box-shadow:0 0 0 2px color-mix(in srgb,var(--color-accent) 15%,transparent)}.agent-network__legend-dot--idle{background:var(--color-text-subtle)}.agent-network__legend-dot--dormant{background:transparent;border:1px dashed var(--color-border-strong);box-sizing:border-box}.agent-network__legend-dot--error{background:var(--color-danger)}.agent-network__legend-line{display:inline-block;width:18px;height:2px;border-radius:1px;background:var(--color-text-subtle)}.agent-network__legend-line--delegate{background:var(--color-info)}.agent-network__legend-line--result{background:var(--color-success)}.agent-network__viewport{position:relative;min-height:420px;height:clamp(420px,56vh,620px);border:1px solid var(--color-border);border-radius:var(--radius-lg);background-color:var(--color-surface-soft);background-image:radial-gradient(circle at 50% 38%,var(--color-surface) 0%,transparent 70%),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.4'/%3E%3C/svg%3E");background-blend-mode:normal,soft-light;overflow:hidden;-webkit-mask-image:radial-gradient(120% 120% at 50% 50%,#000 72%,transparent 100%);mask-image:radial-gradient(120% 120% at 50% 50%,#000 72%,transparent 100%)}:root[data-theme=dark] .agent-network__viewport{background-image:radial-gradient(circle at 50% 38%,var(--color-surface) 0%,transparent 70%)}.agent-network__svg{display:block;width:100%;height:100%;user-select:none;-webkit-user-select:none}.agent-network__bg-hit{cursor:default}.agent-network__backdrop{pointer-events:none}.agent-network__grid-line{stroke:var(--color-border);stroke-width:.5;opacity:.55}.agent-network__grid-line--major{stroke:color-mix(in srgb,var(--color-border) 60%,var(--color-info));stroke-width:1;opacity:.5}.agent-network__glow-stop-inner{stop-color:var(--color-info);stop-opacity:.1}.agent-network__glow-stop-mid{stop-color:var(--color-info);stop-opacity:.03}.agent-network__glow-stop-outer{stop-color:var(--color-info);stop-opacity:0}.agent-network__guide-ring{fill:none;stroke:color-mix(in srgb,var(--color-border) 70%,var(--color-info));stroke-width:1;stroke-dasharray:4 8;opacity:.4}.agent-network__guide-ring--outer{opacity:.26}.agent-network__scaffold-line{fill:none;stroke:var(--color-border-strong);stroke-width:1;pointer-events:none;transition:stroke .2s ease,opacity .2s ease}.agent-network__scaffold-line--live{stroke-dasharray:4 4;opacity:.55}.agent-network__scaffold-line--dormant{stroke-dasharray:1 6;opacity:.32}.agent-network__edge{cursor:pointer;outline:none;transition:filter .2s ease}.agent-network__edge:focus-visible{filter:drop-shadow(0 0 4px color-mix(in srgb,var(--color-accent) 60%,transparent))}.agent-network__edge-hitbox{fill:none;stroke:transparent;stroke-width:16;pointer-events:stroke}.agent-network__edge-line{fill:none;stroke:var(--color-text-subtle);stroke-linecap:round;pointer-events:none;transition:stroke .18s ease,stroke-width .18s ease,opacity .18s ease}.agent-network__edge--neutral .agent-network__edge-line{stroke:var(--color-text-subtle)}.agent-network__edge--delegate .agent-network__edge-line{stroke:var(--color-info)}.agent-network__edge--result .agent-network__edge-line{stroke:var(--color-success)}#agent-net-arrow-neutral path{fill:var(--color-text-subtle)}#agent-net-arrow-delegate path{fill:var(--color-info)}#agent-net-arrow-result path{fill:var(--color-success)}.agent-network__edge.is-hover .agent-network__edge-line,.agent-network__edge.is-selected .agent-network__edge-line{stroke-width:3!important}.agent-network__edge.is-selected .agent-network__edge-line{filter:drop-shadow(0 0 6px color-mix(in srgb,var(--color-accent) 45%,transparent))}.agent-network__edge-badge circle{fill:var(--color-surface-raised);stroke:var(--color-border-strong);stroke-width:1}.agent-network__edge-badge text{fill:var(--color-text);font-size:10px;font-weight:600;font-variant-numeric:tabular-nums;pointer-events:none}@media(prefers-reduced-motion:no-preference){.agent-network__edge--active .agent-network__edge-line{stroke-dasharray:6 8;animation:agent-edge-flow 1.4s linear infinite}@keyframes agent-edge-flow{to{stroke-dashoffset:-14}}}.agent-network__node{cursor:pointer;outline:none;--agent-accent: var(--color-text-subtle)}.agent-network__node:focus-visible .agent-network__node-ring{stroke:var(--color-info);stroke-width:3}.agent-network__node-ring{fill:var(--color-surface-raised);stroke:var(--color-border-strong);stroke-width:1.5;transition:stroke .18s ease,stroke-width .18s ease,fill .18s ease}.agent-network__node-disc{fill:var(--agent-accent);fill-opacity:.1;stroke:var(--agent-accent);stroke-opacity:.25;stroke-width:1;pointer-events:none;transition:fill-opacity .18s ease,stroke-opacity .18s ease}.agent-network__node--principal .agent-network__node-ring{stroke:var(--agent-accent);stroke-width:2}.agent-network__node--principal .agent-network__node-disc{fill-opacity:.18;stroke-opacity:.5}.agent-network__node--running .agent-network__node-ring{stroke:var(--color-info);stroke-width:2}.agent-network__node--error .agent-network__node-ring{stroke:var(--color-danger);stroke-width:2}.agent-network__node--stopped .agent-network__node-ring{opacity:.55}.agent-network__node--dormant .agent-network__node-ring{stroke:var(--color-border-strong);stroke-width:1;stroke-dasharray:3 3;fill:var(--color-surface);opacity:.85}.agent-network__node--dormant .agent-network__node-disc{fill-opacity:.04;stroke-opacity:.12}.agent-network__node--dormant .agent-network__node-icon{color:var(--color-text-subtle);opacity:.7}.agent-network__node--dormant .agent-network__node-label{fill:var(--color-text-muted);font-weight:500}.agent-network__node.is-selected .agent-network__node-ring{stroke:var(--color-text);stroke-width:2.5;filter:drop-shadow(0 0 6px var(--color-shadow-strong));stroke-dasharray:none}.agent-network__node.is-selected .agent-network__node-disc{fill-opacity:.2;stroke-opacity:.55}.agent-network__node-pulse{fill:var(--color-info);opacity:.18;pointer-events:none}@media(prefers-reduced-motion:no-preference){.agent-network__node--running .agent-network__node-pulse{transform-origin:center;transform-box:fill-box;animation:agent-node-pulse 2.4s ease-out infinite}@keyframes agent-node-pulse{0%{opacity:.28;transform:scale(.86)}70%{opacity:0;transform:scale(1.18)}to{opacity:0;transform:scale(1.18)}}}.agent-network__node-label{fill:var(--color-text);font-size:12px;font-weight:560;pointer-events:none}.agent-network__node--principal .agent-network__node-label{font-weight:700}.agent-network__node-sublabel{fill:var(--color-text-muted);font-size:10px;pointer-events:none}.agent-network__node-sublabel--dormant{fill:var(--color-text-subtle);font-style:italic}.agent-network__node-icon{display:flex;width:24px;height:24px;align-items:center;justify-content:center;color:var(--color-text);pointer-events:none}.agent-network__node--running .agent-network__node-icon{color:var(--color-info)}.agent-network__node--error .agent-network__node-icon{color:var(--color-danger)}.agent-network__node-badge{pointer-events:none}.agent-network__node-badge circle{stroke:var(--color-surface);stroke-width:1.5}.agent-network__node-badge--dormant circle{fill:var(--color-surface);stroke:var(--color-border-strong);stroke-dasharray:1.5 1.5}.agent-network__node-badge--running circle{fill:var(--color-info)}.agent-network__node-badge--error circle{fill:var(--color-danger)}@media(prefers-reduced-motion:no-preference){.agent-network__node-badge--running circle{transform-origin:center;transform-box:fill-box;animation:agent-node-badge-blink 1.6s ease-in-out infinite}@keyframes agent-node-badge-blink{0%,to{opacity:1}50%{opacity:.45}}}.agent-network__detail{display:grid;align-content:start;gap:12px;max-height:clamp(420px,56vh,620px);overflow:auto;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);padding:16px}.agent-network__detail-empty{display:grid;justify-items:start;gap:6px;color:var(--color-text-muted)}.agent-network__detail-empty svg{color:var(--color-text-subtle)}.agent-network__detail-empty p{margin:0;font-size:13px;line-height:1.55}.agent-network__detail-empty small{font-size:11px;color:var(--color-text-subtle)}.agent-network__detail-title{display:flex;align-items:center;gap:10px;min-width:0}.agent-network__detail-title h3{display:inline-flex;align-items:center;gap:6px;flex:1;margin:0;min-width:0;color:var(--color-text);font-size:16px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.agent-network__detail-arrow{flex:0 0 auto;color:var(--color-text-subtle)}.agent-network__detail-avatar{display:inline-flex;width:30px;height:30px;align-items:center;justify-content:center;border-radius:999px;background:var(--color-surface-soft);color:var(--color-text);border:1px solid var(--color-border)}.agent-network__detail-avatar--running{border-color:color-mix(in srgb,var(--color-accent) 45%,transparent);color:var(--color-info)}.agent-network__detail-avatar--error{border-color:color-mix(in srgb,var(--color-danger) 45%,transparent);color:var(--color-danger)}.agent-network__detail-avatar--edge{background:var(--color-surface-soft);color:var(--color-info)}.agent-network__detail-avatar--live{background:color-mix(in srgb,var(--agent-accent, var(--color-text-subtle)) 15%,var(--color-surface-soft));border-color:color-mix(in srgb,var(--agent-accent, var(--color-text-subtle)) 35%,var(--color-border));color:var(--agent-accent, var(--color-text))}.agent-network__detail-avatar--dormant{background:var(--color-surface);border-style:dashed;border-color:var(--color-border-strong);color:var(--color-text-subtle)}.agent-network__detail-text{margin:0;color:var(--color-text-muted);font-size:13px;line-height:1.6}.agent-network__detail-badges{display:flex;flex-wrap:wrap;gap:6px}.agent-network__detail-badges span,.agent-network__status-pill{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--color-border);border-radius:999px;background:var(--color-surface-soft);color:var(--color-text-muted);padding:2px 8px;font-size:11px;white-space:nowrap}.agent-network__status-pill--running{border-color:color-mix(in srgb,var(--color-accent) 32%,transparent);color:var(--color-info)}.agent-network__status-pill--error{border-color:color-mix(in srgb,var(--color-danger) 32%,transparent);color:var(--color-danger)}.agent-network__status-pill--stopped{opacity:.65}.agent-network__status-pill--dormant{border-style:dashed;color:var(--color-text-subtle)}.agent-network__detail-section{display:grid;gap:8px;border-top:1px solid var(--color-border);padding-top:12px}.agent-network__detail-section h4{display:inline-flex;align-items:center;gap:6px;margin:0;color:var(--color-text);font-size:12px;font-weight:560}.agent-network__detail-section small{color:var(--color-text-subtle);font-size:11px}.agent-network__msg-list{display:grid;gap:8px;margin:0;padding:0;list-style:none}.agent-network__msg{display:grid;gap:4px;border:1px solid var(--color-border);border-left:3px solid var(--color-text-subtle);border-radius:var(--radius-sm);background:var(--color-surface-soft);padding:8px 10px}.agent-network__msg--delegate{border-left-color:var(--color-info)}.agent-network__msg--result{border-left-color:var(--color-success)}.agent-network__msg-head{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11px;color:var(--color-text-muted)}.agent-network__msg-route{display:inline-flex;align-items:center;gap:4px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.agent-network__msg-route strong{color:var(--color-text);font-size:12px;font-weight:560;overflow:hidden;text-overflow:ellipsis}.agent-network__msg-route svg{flex:0 0 auto;color:var(--color-text-subtle)}.agent-network__msg-type{border:1px solid var(--color-border);border-radius:999px;background:var(--color-surface);color:var(--color-text-muted);padding:0 6px;font-size:10px}.agent-network__msg p{margin:0;color:var(--color-text);font-size:12.5px;line-height:1.5;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.agent-network__msg-list--ordered{counter-reset:agent-msg}.agent-network__keyvals{display:grid;gap:6px;margin:0}.agent-network__keyvals>div{display:grid;grid-template-columns:96px minmax(0,1fr);gap:10px;align-items:center}.agent-network__keyvals dt{margin:0;color:var(--color-text-muted);font-size:11px}.agent-network__keyvals dd{margin:0;color:var(--color-text);font-size:12px;font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.agent-network__keyvals-wrap{white-space:normal!important;overflow:visible!important;line-height:1.5}.agent-network__tool-list{display:flex;flex-wrap:wrap;gap:5px}.agent-network__tool-chip{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--color-border);border-radius:6px;background:var(--color-surface-soft);color:var(--color-text);padding:3px 7px;font-family:var(--font-mono);font-size:11px}.agent-network__tool-chip svg{color:var(--color-text-subtle);flex:0 0 auto}.filter-chips{display:grid;gap:6px}.filter-chips__row{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.filter-chips__label{display:inline-flex;align-items:center;gap:5px;color:var(--color-text-muted);font-size:11px;font-weight:560;letter-spacing:.01em;margin-right:2px}.filter-chips__empty{color:var(--color-text-subtle);font-size:12px;font-style:italic}.filter-chips__chip{display:inline-flex;align-items:center;gap:5px;border:1px solid color-mix(in srgb,var(--color-accent) 32%,transparent);border-radius:999px;background:color-mix(in srgb,var(--color-info) 12%,var(--color-surface));color:var(--color-info);padding:2px 4px 2px 9px;font-size:11.5px;font-weight:540;line-height:1}.filter-chips__chip svg{flex:0 0 auto}.filter-chips__chip-remove{display:inline-flex;width:18px;height:18px;align-items:center;justify-content:center;border:0;border-radius:999px;background:transparent;color:inherit;padding:0;cursor:pointer;transition:background var(--ease-standard),color var(--ease-standard)}.filter-chips__chip-remove:hover,.filter-chips__chip-remove:focus-visible{background:color-mix(in srgb,var(--color-accent) 18%,transparent);outline:none}.filter-chips__add{position:relative;display:inline-flex}.filter-chips__add-trigger{display:inline-flex;align-items:center;gap:4px;border:1px dashed var(--color-border-strong);border-radius:999px;background:transparent;color:var(--color-text-muted);padding:3px 9px 3px 7px;font-size:11.5px;cursor:pointer;transition:background var(--ease-standard),color var(--ease-standard),border-color var(--ease-standard)}.filter-chips__add-trigger:hover:not(:disabled),.filter-chips__add-trigger[aria-expanded=true]{border-color:var(--color-info);color:var(--color-info);background:color-mix(in srgb,var(--color-info) 8%,var(--color-surface))}.filter-chips__add-trigger:disabled{opacity:.5;cursor:not-allowed}.filter-chips__add-trigger:focus-visible{outline:2px solid var(--color-info);outline-offset:2px}.filter-chips__popover{position:absolute;top:calc(100% + 6px);left:0;z-index:30;display:grid;min-width:220px;gap:1px;border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface-raised);box-shadow:var(--shadow-lg);padding:6px;animation:filter-chips-pop .16s cubic-bezier(.2,0,0,1)}@media(prefers-reduced-motion:reduce){.filter-chips__popover{animation:none}}@keyframes filter-chips-pop{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.filter-chips__popover-header{padding:6px 8px 4px;color:var(--color-text-muted);font-size:11px;font-weight:560;letter-spacing:.02em;text-transform:uppercase}.filter-chips__popover-item{display:grid;grid-template-columns:16px minmax(0,1fr);align-items:center;gap:4px 10px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--color-text);padding:7px 9px;text-align:left;cursor:pointer;transition:background var(--ease-standard)}.filter-chips__popover-item>svg{grid-row:span 2;color:var(--color-text-subtle)}.filter-chips__popover-item:hover,.filter-chips__popover-item:focus-visible{background:var(--color-hover);outline:none}.filter-chips__popover-item:hover>svg,.filter-chips__popover-item:focus-visible>svg{color:var(--color-info)}.filter-chips__popover-item-label{font-size:12.5px;font-weight:560;text-transform:capitalize}.filter-chips__popover-item small{grid-column:2;color:var(--color-text-muted);font-size:11px;line-height:1.4}.filter-chips__hint{margin:0;color:var(--color-text-subtle);font-size:11px;line-height:1.45}.agent-network__tooltip{position:absolute;transform:translateY(-50%);z-index:20;background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:0 4px 16px var(--color-shadow),0 1px 3px var(--color-shadow);padding:11px 12px;font-size:12px;line-height:1.5;color:var(--color-text);pointer-events:none}@media(prefers-reduced-motion:no-preference){.agent-network__tooltip{animation:agent-tooltip-in .15s ease-out}@keyframes agent-tooltip-in{0%{opacity:0;transform:translateY(-50%) translate(var(--tip-shift, 0)) scale(.98)}to{opacity:1;transform:translateY(-50%) translate(0) scale(1)}}.agent-network__tooltip--right{--tip-shift: -4px}.agent-network__tooltip--left{--tip-shift: 4px}}.agent-network__tooltip:before{content:"";position:absolute;top:50%;width:8px;height:8px;background:var(--color-surface-raised);border:1px solid var(--color-border);transform:translateY(-50%) rotate(45deg)}.agent-network__tooltip--right:before{left:-5px;border-right:0;border-top:0}.agent-network__tooltip--left:before{right:-5px;border-left:0;border-bottom:0}.agent-network__tooltip-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}.agent-network__tooltip-avatar{display:grid;place-items:center;width:26px;height:26px;border-radius:8px;flex:none;color:var(--agent-accent, var(--color-text-subtle));background:color-mix(in srgb,var(--agent-accent, var(--color-text-subtle)) 14%,transparent);border:1px solid color-mix(in srgb,var(--agent-accent, var(--color-text-subtle)) 30%,transparent)}.agent-network__tooltip-id{display:flex;flex-direction:column;min-width:0}.agent-network__tooltip-id strong{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.agent-network__tooltip-id span{font-size:11px;color:var(--color-text-subtle);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.agent-network__tooltip-row{margin-bottom:6px}.agent-network__tooltip-status{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:500;text-transform:capitalize;color:var(--color-text-muted)}.agent-network__tooltip-dot{width:7px;height:7px;border-radius:50%;flex:none;background:var(--color-text-subtle)}.agent-network__tooltip-dot--running{background:var(--color-info)}.agent-network__tooltip-dot--error{background:var(--color-danger)}.agent-network__tooltip-dot--idle{background:var(--color-success)}.agent-network__tooltip-dot--dormant{background:transparent;border:1px dashed var(--color-border-strong)}.agent-network__tooltip-task{margin:0 0 6px;font-size:12px;color:var(--color-text)}.agent-network__tooltip-task--dormant{color:var(--color-text-subtle);font-style:italic}.agent-network__tooltip-meta{margin:0 0 8px;font-size:11px;color:var(--color-text-subtle)}.agent-network__tooltip-counts{display:flex;gap:12px;padding-top:8px;border-top:1px solid var(--color-border);font-size:11px;color:var(--color-text-muted)}.agent-network__tooltip-counts span{display:inline-flex;align-items:center;gap:4px}.agent-network__tooltip-counts svg{color:var(--color-text-subtle)}.agent-network__tabs{display:flex;gap:0;border-bottom:1px solid var(--color-border);margin-bottom:12px}.agent-network__tab{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;padding:9px 16px;font-size:13px;font-weight:500;color:var(--color-text-subtle);border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer;transition:color var(--ease-standard),background var(--ease-standard),border-color var(--ease-standard)}.agent-network__tab:hover{color:var(--color-text);background:color-mix(in srgb,var(--color-info) 8%,transparent)}.agent-network__tab--active{color:var(--color-info);border-bottom-color:var(--color-info)}.agent-network__tab:focus-visible{outline:2px solid var(--color-info);outline-offset:-2px;border-radius:var(--radius-sm) var(--radius-sm) 0 0}.agent-network__tabpanel{min-height:0}.agent-network__overview-head{display:flex;align-items:center;gap:8px;margin-bottom:14px}.agent-network__overview-head h3{margin:0;font-size:14px;font-weight:600}.agent-network__overview-icon{display:grid;place-items:center;width:28px;height:28px;border-radius:8px;color:var(--color-info);background:color-mix(in srgb,var(--color-info) 12%,transparent)}.agent-network__overview-stats{margin:0 0 16px;display:flex;flex-direction:column;gap:0}.agent-network__overview-stats>div{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--color-border)}.agent-network__overview-stats dt{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--color-text-muted)}.agent-network__overview-stats dt svg{color:var(--color-text-subtle)}.agent-network__overview-stats dd{margin:0;font-size:14px;font-weight:600;text-align:right}.agent-network__overview-sub{display:block;font-size:11px;font-weight:400;color:var(--color-text-subtle)}.agent-network__overview-tip{margin:0;font-size:12px;line-height:1.5;color:var(--color-text-subtle)}.agent-network__overview-tip strong{color:var(--color-text-muted);font-weight:600}.agent-analytics{display:flex;flex-direction:column;gap:18px}.agent-analytics__empty,.agent-timeline__empty{display:flex;flex-direction:column;align-items:center;gap:10px;padding:40px 16px;text-align:center;color:var(--color-text-subtle);font-size:13px}.agent-analytics__cards{display:grid;grid-template-columns:1fr 1fr;gap:10px}.agent-analytics__card{display:flex;flex-direction:column;gap:4px;padding:12px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}.agent-analytics__card-label{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:var(--color-text-subtle)}.agent-analytics__card-value{font-size:26px;font-weight:600;line-height:1.1;letter-spacing:-.01em;font-variant-numeric:tabular-nums}.agent-analytics__card-value small{font-size:14px;color:var(--color-text-subtle)}.agent-analytics__card-sub{font-size:11px;color:var(--color-text-subtle)}.agent-analytics__card--danger .agent-analytics__card-value{color:var(--color-danger)}.agent-analytics__card--ok .agent-analytics__card-value{color:var(--color-success)}.agent-analytics__sparkline{width:100%;height:24px;margin-top:2px}.agent-analytics__chart{display:flex;flex-direction:column;gap:8px}.agent-analytics__chart-title{display:flex;align-items:center;gap:6px;margin:0;font-size:12px;font-weight:600;color:var(--color-text-muted)}.agent-analytics__chart-title svg{color:var(--color-text-subtle)}.agent-analytics__token-total{font-size:22px;font-weight:700;color:var(--color-text);margin:2px 0 8px}.agent-analytics__token-total-label{font-size:12px;font-weight:500;color:var(--color-text-muted)}.agent-analytics__svg{width:100%;height:auto;display:block}.agent-analytics__bar-label{font-size:10px;fill:var(--color-text-muted)}.agent-analytics__bar-value{font-size:10px;fill:var(--color-text-subtle)}.agent-analytics__hint{font-size:12px;color:var(--color-text-subtle);margin:0}.agent-analytics__pie-wrap{display:flex;align-items:center;gap:16px}.agent-analytics__pie{width:96px;height:96px;flex:none}.agent-analytics__pie-total{font-size:14px;font-weight:600;fill:var(--color-text)}.agent-analytics__legend{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--color-text-muted)}.agent-analytics__legend li{display:flex;align-items:center;gap:7px;text-transform:capitalize}.agent-analytics__legend i{width:10px;height:10px;border-radius:2px;flex:none}.agent-analytics__boxplot-legend{display:flex;justify-content:space-between;font-size:11px;color:var(--color-text-subtle)}.agent-analytics__table{width:100%;border-collapse:collapse;font-size:12px}.agent-analytics__table th,.agent-analytics__table td{text-align:left;padding:5px 8px;border-bottom:1px solid var(--color-border)}.agent-analytics__table th{font-weight:600;color:var(--color-text-subtle);font-size:11px}.agent-analytics__table td:not(:first-child),.agent-analytics__table th:not(:first-child){text-align:right;font-variant-numeric:tabular-nums}.agent-timeline{display:flex;flex-direction:column;gap:10px}.agent-timeline__controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.agent-timeline__btn{display:inline-flex;align-items:center;gap:4px;padding:4px 9px;font-size:11px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-muted);cursor:pointer;transition:background var(--ease-standard),border-color var(--ease-standard),color var(--ease-standard)}.agent-timeline__btn:hover{background:var(--color-hover);border-color:var(--color-border-strong);color:var(--color-text)}.agent-timeline__filters{display:inline-flex;align-items:center;gap:6px;color:var(--color-text-subtle);margin-left:auto}.agent-timeline__filter{display:inline-flex;align-items:center;gap:4px;padding:3px 7px;font-size:11px;border:1px solid var(--color-border);border-radius:999px;background:transparent;color:var(--color-text-subtle);cursor:pointer;opacity:.5}.agent-timeline__filter.is-active{opacity:1;color:var(--color-text-muted);background:var(--color-surface)}.agent-timeline__filter-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.agent-timeline__scroll{overflow-x:auto;overflow-y:hidden;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-soft);cursor:grab}.agent-timeline__scroll:active{cursor:grabbing}.agent-timeline__svg{display:block}.agent-timeline__lane--even{fill:transparent}.agent-timeline__lane--odd{fill:color-mix(in srgb,var(--color-border) 22%,transparent)}.agent-timeline__lane-label{font-size:11px;fill:var(--color-text-muted)}.agent-timeline__tick{stroke:var(--color-border);stroke-width:1;opacity:.5}.agent-timeline__tick-label{font-size:10px;fill:var(--color-text-subtle)}.agent-timeline__now{stroke:var(--color-danger);stroke-width:1;stroke-dasharray:3 3;opacity:.7}.agent-timeline__arc{stroke:var(--color-text-subtle);stroke-width:1;stroke-dasharray:2 3;opacity:.4}.agent-timeline__dot{cursor:pointer;stroke:var(--color-surface);stroke-width:1.5}.agent-timeline__dot--delegate{fill:var(--color-info)}.agent-timeline__dot--result{fill:var(--color-success)}.agent-timeline__dot--neutral{fill:var(--color-text-subtle)}.agent-timeline__dot:hover{stroke:var(--color-text)}.agent-timeline__hint-card{display:flex;flex-direction:column;gap:4px;padding:10px 12px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-raised);font-size:12px}.agent-timeline__hint-card strong{font-size:12px;font-weight:600}.agent-timeline__hint-card p{margin:0;color:var(--color-text-muted);line-height:1.5}.agent-timeline__hint-type{align-self:flex-start;font-size:10px;text-transform:uppercase;letter-spacing:.03em;padding:1px 6px;border-radius:999px}.agent-timeline__hint-type--delegate{color:var(--color-info);background:color-mix(in srgb,var(--color-info) 14%,transparent)}.agent-timeline__hint-type--result{color:var(--color-success);background:color-mix(in srgb,var(--color-success) 14%,transparent)}.agent-timeline__hint-type--neutral{color:var(--color-text-subtle);background:var(--color-surface-soft)}.quota-warning-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:grid;place-items:center;padding:24px;background:var(--color-overlay-strong);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:fadeIn .15s ease-out}.quota-warning-dialog{width:min(480px,calc(100vw - 48px));overflow:hidden;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface-raised);box-shadow:var(--shadow-xl);animation:scaleIn .2s ease-out}.quota-warning-dialog__header{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--color-border);padding:16px 18px}.quota-warning-dialog__header h2{margin:0;font-size:16px}.quota-warning-dialog__body{padding:16px 18px;color:var(--color-text-muted);font-size:14px;line-height:1.6}.quota-warning-dialog__actions{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid var(--color-border)}.quota-warning-dialog__actions button{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 14px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font-size:13px;transition:background var(--ease-standard),border-color var(--ease-standard)}.quota-warning-dialog__actions button:hover{background:var(--color-hover);border-color:var(--color-border-strong)}.quota-critical-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:110;display:grid;place-items:center;padding:24px;background:var(--color-overlay-strong);animation:fadeIn .15s ease-out}.quota-critical-dialog{width:min(640px,calc(100vw - 48px));height:min(560px,calc(100vh - 48px));display:grid;grid-template-rows:auto minmax(0,1fr) auto;overflow:hidden;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface-raised);box-shadow:var(--shadow-xl);animation:scaleIn .2s ease-out}.quota-critical-dialog__header{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--color-border);padding:16px 18px}.quota-critical-dialog__header h2{margin:0;font-size:16px;color:var(--color-danger)}.quota-critical-dialog__body{min-height:0;overflow:auto;padding:12px}.quota-critical-dialog__footer{display:flex;justify-content:space-between;align-items:center;gap:12px;border-top:1px solid var(--color-border);padding:12px 18px;color:var(--color-text-muted);font-size:13px}.file-row--deletable{grid-template-columns:auto minmax(0,1fr) auto}.file-row__delete{display:inline-grid;width:22px;height:22px;place-items:center;flex:0 0 auto;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-subtle);opacity:0;transition:opacity var(--ease-standard),background var(--ease-standard),color var(--ease-standard)}.file-row:hover .file-row__delete,.file-row:focus-within .file-row__delete{opacity:1}.file-row__delete:hover,.file-row__delete:focus-visible{background:var(--color-hover);color:var(--color-danger);outline:none}.file-row__delete:disabled{opacity:.3;cursor:not-allowed}.quota-file-manager__error{margin:0 0 8px;padding:8px 12px;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--color-danger) 10%,transparent);color:var(--color-danger);font-size:13px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleIn{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}@keyframes modalPop{0%{opacity:0;transform:translate(-50%,-50%) scale(.96)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.demo-view{height:100vh;min-width:0;display:flex;flex-direction:column;background:var(--color-canvas);overflow:hidden}.demo-landing{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;padding:48px 32px}.demo-landing__header{text-align:center;max-width:640px}.demo-landing__header h1{margin:8px 0 6px;font-size:24px;font-weight:600;color:var(--color-text)}.demo-landing__header p{color:var(--color-text-muted);font-size:14px}.demo-landing__error{color:var(--color-danger, #d23b3b);font-size:13px}.demo-landing__progress{color:var(--color-text-muted);font-size:13px}.demo-landing__cards{display:grid;grid-template-columns:repeat(2,minmax(280px,360px));gap:20px}.demo-card{display:flex;flex-direction:column;gap:12px;padding:20px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.demo-card__head{display:flex;align-items:center;gap:8px;color:var(--color-text)}.demo-card__head h2{font-size:15px;font-weight:600}.demo-card>p{font-size:13px;color:var(--color-text-muted)}.demo-card__sessions{display:flex;flex-direction:column;gap:4px;max-height:240px;overflow-y:auto}.demo-card__empty{font-size:13px;color:var(--color-text-subtle);padding:8px 0}.demo-session-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 12px;border:1px solid transparent;border-radius:var(--radius-md);background:var(--color-surface-soft);color:var(--color-text);font-size:13px;text-align:left;cursor:pointer;transition:var(--ease-standard)}.demo-session-row:hover:not(:disabled){border-color:var(--color-border-strong);background:var(--color-surface-raised)}.demo-session-row:disabled{opacity:.5;cursor:default}.demo-session-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.demo-session-row small{color:var(--color-text-subtle);flex-shrink:0}.demo-dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;width:100%;padding:28px 16px;border-radius:var(--radius-md);border:1.5px dashed var(--color-border-strong);background:var(--color-surface-soft);color:var(--color-text-muted);cursor:pointer;text-align:center;transition:var(--ease-standard)}.demo-dropzone:hover:not(:disabled){border-color:var(--color-accent);color:var(--color-text)}.demo-dropzone.is-dragover{border-color:var(--color-accent);border-style:solid;background:color-mix(in srgb,var(--color-accent) 10%,var(--color-surface));color:var(--color-text)}.demo-dropzone:disabled{opacity:.5;cursor:default}.demo-dropzone__icon{color:var(--color-accent)}.demo-dropzone__primary{font-size:13px;font-weight:500}.demo-dropzone__hint{font-size:12px;color:var(--color-text-subtle)}.demo-dropzone *{pointer-events:none}.demo-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 20px;border-bottom:1px solid var(--color-border)}.demo-header__title h1{font-size:16px;font-weight:600;color:var(--color-text)}.demo-header__meta{display:block;margin-top:2px;font-size:11px;color:var(--color-text-subtle)}.demo-header__actions{display:flex;align-items:center;gap:8px}.demo-export{display:inline-flex;align-items:center;gap:7px;padding:7px 14px;border-radius:var(--radius-md);background:var(--color-accent);color:var(--color-accent-contrast);font-size:13px;font-weight:500;border:none;cursor:pointer}.demo-reselect{padding:7px 12px;border-radius:var(--radius-md);background:transparent;border:1px solid var(--color-border);color:var(--color-text-muted);font-size:13px;cursor:pointer}.demo-reselect:hover{border-color:var(--color-border-strong);color:var(--color-text)}.demo-layout{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.5fr) minmax(0,1.05fr)}.demo-panel{min-width:0;display:flex;flex-direction:column;border-right:1px solid var(--color-border);overflow:hidden}.demo-panel__head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 16px;border-bottom:1px solid var(--color-border);flex-shrink:0}.demo-panel__head h2{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted)}.demo-panel__empty{padding:24px 16px;color:var(--color-text-subtle);font-size:13px;text-align:center}.demo-panel--chat{background:var(--color-surface)}.demo-message-stream.message-stack{flex:1;width:100%;max-width:100%;max-height:none;min-height:0;overflow-y:auto;overflow-x:hidden;padding:16px;gap:18px}.demo-message-stream .message-row__body,.demo-message-stream .activity-block{max-width:100%}.demo-panel--preview{background:var(--color-surface)}.demo-preview-name{font-size:12px;color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:60%}.demo-preview-name small{color:var(--color-text-subtle)}.demo-preview-body{flex:1;min-height:0;overflow:auto;padding:12px 16px}.demo-preview-body .file-preview__content,.demo-preview-body .file-preview__markdown{margin:0}.demo-preview-body .file-preview__markdown,.demo-preview-body .file-preview__code{overflow:visible;padding:0}.demo-preview-body .file-preview__media img,.demo-preview-body .file-preview__media iframe{width:100%;border:none;border-radius:var(--radius-md)}.demo-preview-body .file-preview__media iframe{height:70vh}.demo-right{min-width:0;display:flex;flex-direction:column;overflow:hidden}.demo-panel--trace{flex:1 1 60%;border-right:none;background:var(--color-canvas)}.demo-panel--tree{flex:1 1 40%;border-right:none;border-top:1px solid var(--color-border);background:var(--color-surface)}.demo-trace-map{position:relative;flex:1;min-height:0;overflow:hidden}@media(prefers-reduced-motion:no-preference){.demo-trace-map .trace-map-node{animation:demoNodeIn .32s var(--ease-out) both}.demo-trace-map .trace-edge{animation:demoEdgeIn .42s var(--ease-out) both}}@keyframes demoNodeIn{0%{opacity:0}to{opacity:1}}@keyframes demoEdgeIn{0%{opacity:0}to{opacity:1}}.demo-tree-body{flex:1;min-height:0;overflow-y:auto;padding:6px 8px}.demo-transport{display:flex;align-items:center;gap:6px;padding:7px 10px;border-top:1px solid var(--color-border);background:var(--color-surface-soft);flex-shrink:0}.demo-transport__slider{flex:1;min-width:40px;accent-color:var(--color-accent);cursor:pointer}.demo-transport__step{font-size:11px;color:var(--color-text-muted);white-space:nowrap;font-variant-numeric:tabular-nums}.demo-transport__speeds{display:inline-flex;gap:2px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-pill);padding:2px}.demo-transport__speeds button{padding:2px 7px;border:none;background:transparent;border-radius:var(--radius-pill);font-size:11px;color:var(--color-text-muted);cursor:pointer}.demo-transport__speeds button.is-active{background:var(--color-accent);color:var(--color-accent-contrast)}.demo-file-tree{display:flex;flex-direction:column;gap:1px}.demo-tree-row{display:flex;align-items:center;gap:6px;width:100%;padding:5px 8px;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--color-text);font-size:12px;text-align:left;cursor:pointer;transition:var(--ease-standard)}.demo-tree-row:hover:not(:disabled){background:var(--color-surface-soft)}.demo-tree-row.is-active{background:var(--color-accent-soft);border-color:var(--color-accent);color:var(--color-text)}.demo-tree-row.is-produced:not(.is-active){border-color:var(--color-accent-ring);background:var(--color-accent-soft)}.demo-tree-row.is-skipped{color:var(--color-text-subtle);cursor:default}.demo-tree-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.demo-tree-skip{margin-left:auto;color:var(--color-text-subtle);font-size:10px;flex-shrink:0}.demo-tree-chevron{display:inline-flex;color:var(--color-text-subtle);transition:transform var(--ease-standard)}.demo-tree-chevron.is-open{transform:rotate(90deg)}.trace-node-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:grid;place-items:center;padding:24px;background:var(--color-overlay-strong, rgb(0 0 0 / .4));-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.trace-node-modal__panel{width:min(560px,100%);max-height:80vh;display:flex;flex-direction:column;background:var(--color-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);overflow:hidden}.trace-node-modal__head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--color-border);flex-shrink:0}.trace-node-modal__eyebrow{font-size:12px;font-weight:600;color:var(--color-text-muted)}.trace-node-modal__body{overflow-y:auto;padding:16px}.trace-node-modal__body.trace-detail{border:none;max-height:none;background:transparent;padding:16px}.trace-artifact-row{display:flex;align-items:center;gap:8px;width:100%;padding:6px 8px;border:1px solid transparent;border-radius:var(--radius-sm);background:var(--color-surface-soft);color:var(--color-text);font-size:12px;text-align:left;cursor:pointer}.trace-artifact-row:hover{border-color:var(--color-border-strong)}.trace-artifact-row.is-active{border-color:var(--color-accent);background:var(--color-accent-soft)}.trace-artifact-row small{margin-left:auto;color:var(--color-text-subtle)}@media(prefers-reduced-motion:no-preference){.trace-map-node{transition:transform var(--ease-layout);will-change:transform;animation:traceNodeIn var(--ease-emphasized) both}.trace-map-node.is-dragging{transition:none}.trace-edge{animation:traceEdgeIn var(--ease-emphasized) both}}@keyframes traceNodeIn{0%{opacity:0}to{opacity:1}}@keyframes traceEdgeIn{0%{opacity:0}to{opacity:1}}@media(max-width:1100px){.demo-layout{grid-template-columns:1fr;grid-auto-rows:minmax(220px,auto);overflow-y:auto}.demo-panel{border-right:none;border-bottom:1px solid var(--color-border)}.demo-right{border-bottom:1px solid var(--color-border)}.demo-landing__cards{grid-template-columns:1fr}}
|
package/dist/index.html
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<meta name="color-scheme" content="light dark" />
|
|
7
7
|
<title>BrainPilot</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
9
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-D63mUJxx.js"></script>
|
|
9
|
+
<link rel="stylesheet" crossorigin href="/assets/index-D8J9Cnup.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
|
12
12
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brainpilot/web",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.10",
|
|
4
4
|
"engines": {
|
|
5
5
|
"node": ">=22"
|
|
6
6
|
},
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@brainpilot/protocol": "^0.0.
|
|
34
|
+
"@brainpilot/protocol": "^0.0.10",
|
|
35
35
|
"@fontsource-variable/geist": "^5.2.9",
|
|
36
36
|
"@fontsource-variable/geist-mono": "^5.2.8",
|
|
37
37
|
"@types/react": "^18.3.12",
|
|
@@ -183,12 +183,17 @@ describe("api.sessions.getHistory — persisted events.jsonl rehydration", () =>
|
|
|
183
183
|
expect(url).toContain("/sessions/s1/history?limit=42");
|
|
184
184
|
});
|
|
185
185
|
|
|
186
|
-
it("returns the empty envelope on a
|
|
186
|
+
it("returns the empty envelope on a 404 (session has no transcript)", async () => {
|
|
187
187
|
fetchMock.mockResolvedValueOnce(makeResponse({ ok: false, status: 404 }));
|
|
188
188
|
const out = await api.sessions.getHistory("s1");
|
|
189
189
|
expect(out).toEqual({ events: [], total: 0, truncated: false });
|
|
190
190
|
});
|
|
191
191
|
|
|
192
|
+
it("throws on a non-404 failure instead of masking it as empty (#223)", async () => {
|
|
193
|
+
fetchMock.mockResolvedValueOnce(makeResponse({ ok: false, status: 500 }));
|
|
194
|
+
await expect(api.sessions.getHistory("s1")).rejects.toThrow(/history fetch failed: 500/);
|
|
195
|
+
});
|
|
196
|
+
|
|
192
197
|
it("returns the empty envelope when the body is null", async () => {
|
|
193
198
|
fetchMock.mockResolvedValueOnce(makeResponse({ contentType: "application/json", json: null }));
|
|
194
199
|
const out = await api.sessions.getHistory("s1");
|
|
@@ -260,3 +265,46 @@ describe("api.sandbox.uploadFile — #47 base64 upload to the workspace", () =>
|
|
|
260
265
|
await expect(api.sandbox.uploadFile("s1", "big.bin", new Blob(["hi"]))).rejects.toThrow("file too large");
|
|
261
266
|
});
|
|
262
267
|
});
|
|
268
|
+
|
|
269
|
+
// #206: parseError previously read only `detail`, so the backend's Zod shape
|
|
270
|
+
// `{ error, details }` and bare `{ error }` (e.g. 409) degraded to the generic
|
|
271
|
+
// "Request failed (...)". Driven through api.providers.create (handleJson path).
|
|
272
|
+
describe("#206 parseError surfaces { error, details }", () => {
|
|
273
|
+
const validCreate = { name: "x", baseUrl: "https://x", apiKey: "k", models: ["m"] } as never;
|
|
274
|
+
|
|
275
|
+
it("renders field-level Zod issues from { error, details }", async () => {
|
|
276
|
+
fetchMock.mockResolvedValueOnce(
|
|
277
|
+
makeResponse({
|
|
278
|
+
ok: false,
|
|
279
|
+
status: 400,
|
|
280
|
+
contentType: "application/json",
|
|
281
|
+
json: {
|
|
282
|
+
error: "invalid provider profile",
|
|
283
|
+
details: [{ path: ["base_url"], message: "must be a valid URL" }],
|
|
284
|
+
},
|
|
285
|
+
}),
|
|
286
|
+
);
|
|
287
|
+
await expect(api.providers.create(validCreate)).rejects.toThrow(
|
|
288
|
+
"invalid provider profile (base_url: must be a valid URL)",
|
|
289
|
+
);
|
|
290
|
+
});
|
|
291
|
+
|
|
292
|
+
it("surfaces a bare { error } (409 conflict) message", async () => {
|
|
293
|
+
fetchMock.mockResolvedValueOnce(
|
|
294
|
+
makeResponse({
|
|
295
|
+
ok: false,
|
|
296
|
+
status: 409,
|
|
297
|
+
contentType: "application/json",
|
|
298
|
+
json: { error: 'a provider named "sqz" already exists' },
|
|
299
|
+
}),
|
|
300
|
+
);
|
|
301
|
+
await expect(api.providers.create(validCreate)).rejects.toThrow('a provider named "sqz" already exists');
|
|
302
|
+
});
|
|
303
|
+
|
|
304
|
+
it("still prefers a plain { detail } string", async () => {
|
|
305
|
+
fetchMock.mockResolvedValueOnce(
|
|
306
|
+
makeResponse({ ok: false, status: 400, contentType: "application/json", json: { detail: "nope" } }),
|
|
307
|
+
);
|
|
308
|
+
await expect(api.providers.create(validCreate)).rejects.toThrow("nope");
|
|
309
|
+
});
|
|
310
|
+
});
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import {
|
|
3
|
+
extractCommand,
|
|
4
|
+
isBashTool,
|
|
5
|
+
selectActiveScripts,
|
|
6
|
+
} from "../components/chat/runningScripts";
|
|
7
|
+
import type { ChatMessage } from "../contracts/backend";
|
|
8
|
+
|
|
9
|
+
function bashCall(over: Partial<ChatMessage> = {}): ChatMessage {
|
|
10
|
+
return {
|
|
11
|
+
id: over.id ?? "call-1",
|
|
12
|
+
role: "assistant",
|
|
13
|
+
content: "Tool: bash",
|
|
14
|
+
createdAt: "2026-07-01T00:00:00.000Z",
|
|
15
|
+
agent: over.agent ?? "principal",
|
|
16
|
+
kind: "tool",
|
|
17
|
+
toolName: "bash",
|
|
18
|
+
streaming: true,
|
|
19
|
+
toolInput: JSON.stringify({ command: "pytest -x tests/unit" }),
|
|
20
|
+
...over,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
describe("isBashTool", () => {
|
|
25
|
+
it("matches the bare bash tool", () => {
|
|
26
|
+
expect(isBashTool("bash")).toBe(true);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
it("matches the mcp-namespaced bash tool", () => {
|
|
30
|
+
expect(isBashTool("mcp__local__bash")).toBe(true);
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
it("does not match other tool names", () => {
|
|
34
|
+
expect(isBashTool("read")).toBe(false);
|
|
35
|
+
expect(isBashTool("mcp__local__read")).toBe(false);
|
|
36
|
+
expect(isBashTool("bash_history")).toBe(false); // suffix match required
|
|
37
|
+
expect(isBashTool(undefined)).toBe(false);
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
describe("extractCommand", () => {
|
|
42
|
+
it("pulls `command` out of a fully-formed JSON args string", () => {
|
|
43
|
+
expect(extractCommand('{"command":"ls -la"}')).toBe("ls -la");
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
it("falls back to `cmd`/`script`/`shell` keys", () => {
|
|
47
|
+
expect(extractCommand('{"cmd":"echo hi"}')).toBe("echo hi");
|
|
48
|
+
expect(extractCommand('{"script":"./run.sh"}')).toBe("./run.sh");
|
|
49
|
+
expect(extractCommand('{"shell":"bash -c foo"}')).toBe("bash -c foo");
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
it("returns the raw string when the JSON is still partial", () => {
|
|
53
|
+
// TOOL_CALL_ARGS deltas may arrive as `{"comm` before the full JSON has
|
|
54
|
+
// buffered. Better to show *something* than to render an empty row.
|
|
55
|
+
expect(extractCommand('{"command":"pyt')).toBe('{"command":"pyt');
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
it("returns empty for non-strings and empty strings", () => {
|
|
59
|
+
expect(extractCommand(undefined)).toBe("");
|
|
60
|
+
expect(extractCommand(null)).toBe("");
|
|
61
|
+
expect(extractCommand("")).toBe("");
|
|
62
|
+
expect(extractCommand({ command: "not a string" })).toBe("");
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
describe("selectActiveScripts", () => {
|
|
67
|
+
it("returns empty when there are no tool messages", () => {
|
|
68
|
+
expect(selectActiveScripts([])).toEqual([]);
|
|
69
|
+
expect(
|
|
70
|
+
selectActiveScripts([
|
|
71
|
+
{
|
|
72
|
+
id: "t1",
|
|
73
|
+
role: "assistant",
|
|
74
|
+
content: "hello",
|
|
75
|
+
createdAt: "",
|
|
76
|
+
kind: "text",
|
|
77
|
+
},
|
|
78
|
+
]),
|
|
79
|
+
).toEqual([]);
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
it("returns only streaming bash calls, ignoring completed ones", () => {
|
|
83
|
+
const active = bashCall({ id: "a", streaming: true });
|
|
84
|
+
const done = bashCall({ id: "b", streaming: false });
|
|
85
|
+
const result = selectActiveScripts([active, done]);
|
|
86
|
+
expect(result.map((s) => s.id)).toEqual(["a"]);
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
it("ignores non-bash tool calls even when they are streaming", () => {
|
|
90
|
+
const bash = bashCall({ id: "a", streaming: true });
|
|
91
|
+
const read = bashCall({
|
|
92
|
+
id: "b",
|
|
93
|
+
streaming: true,
|
|
94
|
+
toolName: "read",
|
|
95
|
+
toolInput: JSON.stringify({ file: "foo.txt" }),
|
|
96
|
+
});
|
|
97
|
+
const trace = bashCall({
|
|
98
|
+
id: "c",
|
|
99
|
+
streaming: true,
|
|
100
|
+
toolName: "mcp__brainpilot__record_trace",
|
|
101
|
+
toolInput: "{}",
|
|
102
|
+
});
|
|
103
|
+
const result = selectActiveScripts([bash, read, trace]);
|
|
104
|
+
expect(result.map((s) => s.id)).toEqual(["a"]);
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
it("preserves arrival order across multiple concurrent bash calls", () => {
|
|
108
|
+
const first = bashCall({
|
|
109
|
+
id: "first",
|
|
110
|
+
agent: "principal",
|
|
111
|
+
toolInput: JSON.stringify({ command: "pytest" }),
|
|
112
|
+
});
|
|
113
|
+
const second = bashCall({
|
|
114
|
+
id: "second",
|
|
115
|
+
agent: "engineer",
|
|
116
|
+
toolInput: JSON.stringify({ command: "npm test" }),
|
|
117
|
+
});
|
|
118
|
+
const result = selectActiveScripts([first, second]);
|
|
119
|
+
expect(result).toEqual([
|
|
120
|
+
expect.objectContaining({ id: "first", agent: "principal", command: "pytest" }),
|
|
121
|
+
expect.objectContaining({ id: "second", agent: "engineer", command: "npm test" }),
|
|
122
|
+
]);
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
it("defaults the agent name to 'principal' when unattributed", () => {
|
|
126
|
+
const noAgent = bashCall({ id: "a", agent: undefined });
|
|
127
|
+
const [row] = selectActiveScripts([noAgent]);
|
|
128
|
+
expect(row.agent).toBe("principal");
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
it("shows the raw arg fragment while args are still streaming", () => {
|
|
132
|
+
const partial = bashCall({
|
|
133
|
+
id: "a",
|
|
134
|
+
toolInput: '{"command":"pyt', // TOOL_CALL_ARGS half-arrived
|
|
135
|
+
});
|
|
136
|
+
const [row] = selectActiveScripts([partial]);
|
|
137
|
+
expect(row.command).toBe('{"command":"pyt');
|
|
138
|
+
});
|
|
139
|
+
});
|
|
@@ -8,6 +8,7 @@ import { SystemMessageBubble } from "./SystemMessageBubble";
|
|
|
8
8
|
import { AskUserCard } from "./AskUserCard";
|
|
9
9
|
import { AutoRetryIndicator } from "./AutoRetryIndicator";
|
|
10
10
|
import { formatToolName, formatPayload } from "../../utils/toolDisplay";
|
|
11
|
+
import { formatElapsed } from "../../utils/format";
|
|
11
12
|
import { getChatScroll, setChatScroll, resolveScrollTop } from "./chatScrollMemory";
|
|
12
13
|
|
|
13
14
|
interface MessageStreamProps {
|
|
@@ -60,17 +61,6 @@ function mergeName(message: ChatMessage): string {
|
|
|
60
61
|
return message.agent || (message.role === "system" ? "system" : "principal");
|
|
61
62
|
}
|
|
62
63
|
|
|
63
|
-
// Compact elapsed formatter: "3.2s" under a minute, "1m 05s" above.
|
|
64
|
-
function formatElapsed(ms: number): string {
|
|
65
|
-
if (ms < 0) ms = 0;
|
|
66
|
-
const totalSeconds = ms / 1000;
|
|
67
|
-
if (totalSeconds < 60) {
|
|
68
|
-
return `${totalSeconds.toFixed(1)}s`;
|
|
69
|
-
}
|
|
70
|
-
const minutes = Math.floor(totalSeconds / 60);
|
|
71
|
-
const seconds = Math.floor(totalSeconds % 60);
|
|
72
|
-
return `${minutes}m ${String(seconds).padStart(2, "0")}s`;
|
|
73
|
-
}
|
|
74
64
|
|
|
75
65
|
/**
|
|
76
66
|
* Presentational chat message stack — message bubbles, agent rows, hook notes,
|