@oeronteros-1/opencode-orchestra 1.0.32 → 1.0.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -91,6 +91,8 @@ CLI использует Bun напрямую, поэтому отдельный
91
91
  - подключит Playwright MCP для браузерной автоматизации;
92
92
  - установит статический `codebase-memory-mcp`, включит автоматическую индексацию и подключит его к OpenCode;
93
93
  - установит MemoryGraph (`memorygraphMCP`) в изолированное окружение через `uv` и подключит локальную SQLite-память;
94
+ - подключит официальный Git MCP (`uvx mcp-server-git` без `--repository`; путь передаётся динамически через `repo_path`, относительные пути резолвятся от cwd проекта) и прогреет его кэш;
95
+ - подключит ast-grep MCP (`uvx --from git+https://github.com/ast-grep/ast-grep-mcp ast-grep-server`) и прогреет его кэш, чтобы холодный старт 10–25с не ронял MCP-хендшейк (~10с);
94
96
  - сохранит все пользовательские MCP и плагины без удаления или переименования;
95
97
  - создаст `~/.config/opencode/orchestra.jsonc` с автоматическим выбором моделей;
96
98
  - сделает резервную копию существующего конфига перед изменением;
@@ -106,7 +108,7 @@ Superpowers — фреймворк навыков для агентов (obra/su
106
108
  bunx @oeronteros-1/opencode-orchestra@latest install --help
107
109
  ```
108
110
 
109
- Полезные флаги: `--no-context7`, `--no-codebase-memory`, `--no-memorygraph`, `--no-playwright`, `--no-superpowers`, `--no-deps`, `--force`, `--dry-run`, `--config-dir DIR`.
111
+ Полезные флаги: `--no-context7`, `--no-codebase-memory`, `--no-memorygraph`, `--no-git`, `--no-ast-grep`, `--no-playwright`, `--no-superpowers`, `--no-deps`, `--force`, `--dry-run`, `--config-dir DIR`.
110
112
 
111
113
  ## Диагностика, обновление и автодополнение
112
114
 
@@ -116,7 +118,7 @@ bunx @oeronteros-1/opencode-orchestra@latest install --help
116
118
  bunx @oeronteros-1/opencode-orchestra@latest doctor
117
119
  ```
118
120
 
119
- Проверяет конфиг OpenCode и `orchestra.jsonc`, регистрацию плагина, доступность настроенных MCP-серверов, пути и версии `uv`, MemoryGraph и Codebase Memory. Флаг `--config-dir DIR` переопределяет каталог конфигурации, а `--json` выводит результат в машиночитаемом виде.
121
+ Проверяет конфиг OpenCode и `orchestra.jsonc`, регистрацию плагина, доступность настроенных MCP-серверов, пути и версии `uv`, `uvx`, `git`, MemoryGraph, Codebase Memory и движка `ast-grep`/`sg` (строго офлайн, без сетевых проб). Флаг `--config-dir DIR` переопределяет каталог конфигурации, а `--json` выводит результат в машиночитаемом виде.
120
122
 
121
123
  ```bash
122
124
  bunx @oeronteros-1/opencode-orchestra@latest update
@@ -363,7 +365,7 @@ Fallback-цепочка строится только из worker-пулов (`c
363
365
 
364
366
  Профили: `architecture`, `debug`, `ui`, `research`, `review`, `security`, `performance`, `migration`, `ops`.
365
367
 
366
- ## Context7, Codebase Memory и MemoryGraph
368
+ ## Context7, Codebase Memory, MemoryGraph, Git и ast-grep
367
369
 
368
370
  Context7 остаётся удалённым MCP для актуальной документации библиотек. OAuth отключён; при наличии ключа можно самостоятельно добавить заголовок `CONTEXT7_API_KEY`.
369
371
 
@@ -371,12 +373,18 @@ Codebase Memory отвечает за знания, которые можно в
371
373
 
372
374
  MemoryGraph отвечает за знания, которых нет непосредственно в коде: принятые архитектурные решения, проверенные исправления и повторно используемые паттерны. Используется core-профиль с локальным SQLite в `~/.memorygraph/`. Lead вызывает `recall_memories` не более одного раза в начале релевантной задачи и сохраняет только проверенные устойчивые знания.
373
375
 
376
+ Git MCP — официальный `mcp-server-git` через `uvx` без флага `--repository`: сервер наследует cwd проекта, агент передаёт путь динамически через `repo_path`. Используется для `blame`/`log`/`diff` перед рефакторингом и для гейтованного коммита после зелёных тестов.
377
+
378
+ ast-grep MCP — `uvx --from git+https://github.com/ast-grep/ast-grep-mcp ast-grep-server` для структурного поиска и AST-рефакторинга. Первый холодный старт занимает 10–25с, поэтому инсталлер прогревает кэш (`--help`, таймаут 60с); `--no-deps` пропускает прогрев. Отдельный Ripgrep MCP не нужен: поиск по YAML/Dockerfile/логам идёт через `rg` во встроенном `bash`.
379
+
374
380
  Пакет ставится с PyPI (`memorygraphMCP`, Python ≥3.10, SQLite работает без настройки). GitHub-ветка `main` того же репозитория переписана на TypeScript/Bun и не совместима с PyPI-пакетом, поэтому установщик опирается именно на PyPI-дистрибутив. Если persistent-установка через `uv tool install` не удалась, используется фолбэк `uvx memorygraph`; при полном провале MCP-запись в конфиг не пишется — причина сбоя видна в выводе установщика и doctor.
375
381
 
376
382
  Разделение намеренное:
377
383
 
378
- - Codebase Memory — актуальная структура репозитория;
384
+ - Codebase Memory — актуальная структура репозитория (где объявлен символ, кто вызывает);
385
+ - ast-grep — синтаксические формы и структурный рефакторинг (пустые catch, вызовы без таймаута);
379
386
  - MemoryGraph — история решений и связей между ними;
387
+ - Git MCP — предыстория и причины (blame/log), гейтованный коммит;
380
388
  - Context7 — актуальные внешние API и документация.
381
389
 
382
390
  Если зависимости уже установлены, повторный запуск использует существующие исполняемые файлы. `--no-deps` только записывает MCP-конфигурацию и ожидает, что команды `codebase-memory-mcp` и `memorygraph` уже доступны.
@@ -0,0 +1,2 @@
1
+ /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-violet-400:oklch(70.2% .183 293.541);--color-violet-500:oklch(60.6% .25 292.717);--color-violet-600:oklch(54.1% .281 293.009);--color-zinc-700:oklch(37% .013 285.805);--color-white:#fff;--spacing:.25rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-semibold:600;--radius-xl:.75rem;--radius-2xl:1rem;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--ease-out:cubic-bezier(0, 0, .2, 1);--blur-xl:24px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.-top-\[200px\]{top:-200px}.-right-\[100px\]{right:-100px}.-bottom-\[150px\]{bottom:-150px}.-left-\[100px\]{left:-100px}.block{display:block}.inline-flex{display:inline-flex}.table{display:table}.table-row{display:table-row}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-10{height:calc(var(--spacing) * 10)}.h-\[500px\]{height:500px}.h-\[600px\]{height:600px}.w-11{width:calc(var(--spacing) * 11)}.w-\[500px\]{width:500px}.w-\[600px\]{width:600px}.translate-x-0\.5{--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-\[shimmer_3s_ease-in-out_infinite\]{animation:3s ease-in-out infinite shimmer}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:2147483647px}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-\[var\(--border-medium\)\]{border-color:var(--border-medium)}.border-\[var\(--border-subtle\)\]{border-color:var(--border-subtle)}.border-white\/\[0\.06\]{border-color:#ffffff0f}@supports (color:color-mix(in lab, red, red)){.border-white\/\[0\.06\]{border-color:color-mix(in oklab, var(--color-white) 6%, transparent)}}.bg-\[var\(--bg-card\)\]{background-color:var(--bg-card)}.bg-\[var\(--bg-glass\)\]{background-color:var(--bg-glass)}.bg-white{background-color:var(--color-white)}.bg-zinc-700\/50{background-color:#3f3f4680}@supports (color:color-mix(in lab, red, red)){.bg-zinc-700\/50{background-color:color-mix(in oklab, var(--color-zinc-700) 50%, transparent)}}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-transparent{--tw-gradient-from:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-violet-600{--tw-gradient-from:var(--color-violet-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-white\/\[0\.03\]{--tw-gradient-via:#ffffff08}@supports (color:color-mix(in lab, red, red)){.via-white\/\[0\.03\]{--tw-gradient-via:color-mix(in oklab, var(--color-white) 3%, transparent)}}.via-white\/\[0\.03\]{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-violet-500{--tw-gradient-to:var(--color-violet-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.bg-\[length\:200\%_100\%\]{background-size:200% 100%}.px-4{padding-inline:calc(var(--spacing) * 4)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-\[var\(--text-secondary\)\]{color:var(--text-secondary)}.text-white{color:var(--color-white)}.opacity-0{opacity:0}.shadow-\[0_4px_16px_rgba\(139\,92\,246\,0\.3\)\]{--tw-shadow:0 4px 16px var(--tw-shadow-color,#8b5cf64d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_8px_32px_rgba\(0\,0\,0\,0\.3\)\]{--tw-shadow:0 8px 32px var(--tw-shadow-color,#0000004d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}@media (hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.hover\:translate-y-\[-1px\]:hover{--tw-translate-y:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:border-\[var\(--border-accent\)\]:hover{border-color:var(--border-accent)}.hover\:border-\[var\(--border-medium\)\]:hover{border-color:var(--border-medium)}.hover\:border-white\/\[0\.1\]:hover{border-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.hover\:border-white\/\[0\.1\]:hover{border-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.hover\:bg-\[var\(--bg-glass-hover\)\]:hover{background-color:var(--bg-glass-hover)}.hover\:from-violet-500:hover{--tw-gradient-from:var(--color-violet-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:to-violet-400:hover{--tw-gradient-to:var(--color-violet-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.hover\:text-\[var\(--text-primary\)\]:hover{color:var(--text-primary)}.hover\:shadow-\[0_2px_8px_rgba\(0\,0\,0\,0\.15\)\]:hover{--tw-shadow:0 2px 8px var(--tw-shadow-color,#00000026);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-\[0_4px_16px_rgba\(0\,0\,0\,0\.2\)\]:hover{--tw-shadow:0 4px 16px var(--tw-shadow-color,#0003);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-\[0_8px_24px_rgba\(139\,92\,246\,0\.4\)\]:hover{--tw-shadow:0 8px 24px var(--tw-shadow-color,#8b5cf666);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-\[var\(--shadow-lg\)\]:hover{--tw-shadow:var(--shadow-lg);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-violet-400:focus-visible{--tw-ring-color:var(--color-violet-400)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:ring-offset-transparent:focus-visible{--tw-ring-offset-color:transparent}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:translate-y-0:active{--tw-translate-y:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.active\:shadow-\[0_2px_8px_rgba\(139\,92\,246\,0\.3\)\]:active{--tw-shadow:0 2px 8px var(--tw-shadow-color,#8b5cf64d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}.data-\[checked\]\:translate-x-\[22px\][data-checked]{--tw-translate-x:22px;translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[checked\]\:border-violet-500\/30[data-checked]{border-color:#8d54ff4d}@supports (color:color-mix(in lab, red, red)){.data-\[checked\]\:border-violet-500\/30[data-checked]{border-color:color-mix(in oklab, var(--color-violet-500) 30%, transparent)}}.data-\[checked\]\:bg-gradient-to-r[data-checked]{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.data-\[checked\]\:from-violet-600[data-checked]{--tw-gradient-from:var(--color-violet-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.data-\[checked\]\:to-violet-500[data-checked]{--tw-gradient-to:var(--color-violet-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.data-\[checked\]\:shadow-\[0_0_16px_rgba\(139\,92\,246\,0\.3\)\][data-checked]{--tw-shadow:0 0 16px var(--tw-shadow-color,#8b5cf64d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.data-\[checked\]\:shadow-\[0_2px_8px_rgba\(0\,0\,0\,0\.3\)\][data-checked]{--tw-shadow:0 2px 8px var(--tw-shadow-color,#0000004d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}@media (hover:hover){.data-\[checked\]\:hover\:border-violet-400\/40[data-checked]:hover{border-color:#a685ff66}@supports (color:color-mix(in lab, red, red)){.data-\[checked\]\:hover\:border-violet-400\/40[data-checked]:hover{border-color:color-mix(in oklab, var(--color-violet-400) 40%, transparent)}}}}:root{--font-sans:"Geist", ui-sans-serif, system-ui, -apple-system, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace;--bg-primary:#06080d;--bg-secondary:#0a0d14;--bg-tertiary:#0f1219;--bg-card:#0c0f16bf;--bg-card-hover:#10141ed9;--bg-glass:#ffffff08;--bg-glass-hover:#ffffff0f;--border-subtle:#ffffff0f;--border-medium:#ffffff1a;--border-accent:#8b5cf64d;--text-primary:#f4f4f5;--text-secondary:#a1a1aa;--text-tertiary:#9a9aa3;--text-muted:#85858f;--accent-violet:#8b5cf6;--accent-violet-light:#a78bfa;--accent-violet-dark:#6d28d9;--accent-cyan:#22d3ee;--accent-emerald:#34d399;--accent-amber:#f59e0b;--accent-rose:#f43f5e;--shadow-sm:0 2px 8px #0000004d;--shadow-md:0 8px 32px #0006;--shadow-lg:0 16px 64px #00000080;--shadow-glow-violet:0 0 20px #8b5cf626;--shadow-glow-cyan:0 0 20px #22d3ee26;color:var(--text-primary);background:var(--bg-primary);font-family:var(--font-sans);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{background:radial-gradient(ellipse 80% 50% at 50% -20%, #8b5cf61f, transparent), radial-gradient(ellipse 60% 40% at 80% 50%, #22d3ee0f, transparent), radial-gradient(ellipse 50% 30% at 20% 80%, #8b5cf614, transparent), var(--bg-primary);min-width:320px;min-height:100vh;margin:0}button,input,select{font:inherit}button{cursor:pointer}@keyframes mesh-float{0%,to{transform:translate(0)scale(1)}25%{transform:translate(2%,-3%)scale(1.02)}50%{transform:translate(-1%,2%)scale(.98)}75%{transform:translate(3%,1%)scale(1.01)}}@keyframes mesh-opacity{0%,to{opacity:.6}50%{opacity:1}}.mesh-bg{z-index:-1;pointer-events:none;position:fixed;inset:0;overflow:hidden}.mesh-bg:before,.mesh-bg:after{content:"";filter:blur(80px);border-radius:50%;animation:20s ease-in-out infinite mesh-float;position:absolute}.mesh-bg:before{background:radial-gradient(circle,#8b5cf626,#0000 70%);width:600px;height:600px;animation-delay:-5s;top:-200px;right:-100px}.mesh-bg:after{background:radial-gradient(circle,#22d3ee1a,#0000 70%);width:500px;height:500px;animation-delay:-10s;bottom:-150px;left:-100px}.app-shell{grid-template-columns:260px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{border-right:1px solid var(--border-subtle);-webkit-backdrop-filter:blur(24px)saturate(1.2);backdrop-filter:blur(24px)saturate(1.2);z-index:10;background:#080a0fd9;flex-direction:column;height:100vh;padding:28px 18px 24px;transition:background .3s;display:flex;position:sticky;top:0}.brand{align-items:center;gap:14px;padding:0 10px 32px;display:flex}.brand strong,.brand small{letter-spacing:.18em;display:block}.brand strong{font-size:14px;font-weight:700}.brand small{color:var(--text-tertiary);margin-top:4px;font-size:9px;font-weight:500}.brand-mark{color:#fff;background:linear-gradient(145deg, var(--accent-violet), var(--accent-violet-dark));border-radius:12px;justify-content:center;align-items:end;gap:3px;width:36px;height:36px;padding:8px;transition:transform .3s,box-shadow .3s;display:flex;box-shadow:0 8px 32px #8b5cf64d,inset 0 1px #ffffff26}.brand-mark:hover{transform:scale(1.05);box-shadow:0 12px 40px #8b5cf666,inset 0 1px #fff3}.brand-mark span{background:currentColor;border-radius:2px;width:3px;transition:height .3s;display:block}.brand-mark span:first-child{opacity:.65;height:8px}.brand-mark span:nth-child(2){height:17px}.brand-mark span:nth-child(3){opacity:.8;height:12px}nav{gap:4px;display:grid}.nav-link{height:44px;color:var(--text-tertiary);border-radius:12px;align-items:center;gap:14px;padding:0 14px;font-size:13px;font-weight:550;text-decoration:none;transition:all .2s;display:flex;position:relative}.nav-link:hover{color:var(--text-primary);background:var(--bg-glass-hover)}.nav-link.active{color:#fff;box-shadow:var(--shadow-glow-violet);background:#8b5cf61f}.nav-link.active:before{content:"";background:linear-gradient(180deg, var(--accent-violet), var(--accent-cyan));border-radius:2px;width:3px;height:24px;position:absolute;left:-18px;box-shadow:0 0 16px #8b5cf699}.sidebar-foot{border-top:1px solid var(--border-subtle);margin-top:auto;padding:18px 12px 0}.local-chip{color:var(--text-secondary);letter-spacing:.16em;text-transform:uppercase;align-items:center;gap:8px;font-size:10px;font-weight:700;display:flex}.project-name{color:var(--text-tertiary);white-space:nowrap;text-overflow:ellipsis;margin-top:8px;font-size:11px;overflow:hidden}.status-dot{background:var(--accent-emerald);border-radius:50%;flex:none;width:8px;height:8px;animation:2s ease-in-out infinite pulse-glow;box-shadow:0 0 12px #34d39999}.status-dot.off{background:var(--text-muted);box-shadow:none;animation:none}@keyframes pulse-glow{0%,to{box-shadow:0 0 12px #34d39999}50%{box-shadow:0 0 20px #34d399e6}}.main-panel{min-width:0}.topbar{border-bottom:1px solid var(--border-subtle);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);z-index:5;background:#06080d99;justify-content:space-between;align-items:center;height:72px;padding:0 4vw;display:flex;position:sticky;top:0}.top-actions{align-items:center;gap:6px;display:flex}.eyebrow{color:var(--text-muted);letter-spacing:.18em;text-transform:uppercase;font-size:11px;font-weight:700;line-height:1.4}.topbar .eyebrow{white-space:nowrap;text-overflow:ellipsis;max-width:60vw;display:block;overflow:hidden}.topbar>div:first-child{align-items:center;gap:14px;min-width:0;display:flex}.project-select{border:1px solid var(--border-medium);max-width:260px;height:36px;color:var(--text-primary);background:var(--bg-tertiary);border-radius:10px;outline:none;padding:0 32px 0 12px;transition:all .2s}.project-select:focus{border-color:var(--accent-violet);box-shadow:0 0 0 3px #8b5cf626}.content{max-width:1520px;margin:0 auto;padding:48px 4vw 80px}.page-intro{margin-bottom:36px}.page-intro h1{letter-spacing:-.045em;background:linear-gradient(135deg, var(--text-primary) 0%, var(--text-secondary) 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin:10px 0;font-size:clamp(30px,3.2vw,48px);font-weight:700;line-height:1.05}.page-intro p{max-width:640px;color:var(--text-tertiary);margin:0;font-size:14px;line-height:1.65}h2{letter-spacing:-.02em;margin:5px 0 0;font-size:16px;font-weight:600}.metrics-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:18px;display:grid}.insight-banner{background:var(--bg-card);border:1px solid var(--border-subtle);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-radius:16px;flex-wrap:wrap;align-items:center;gap:36px;margin-bottom:18px;padding:20px 26px;display:flex}.insight-banner>div{gap:3px;display:grid}.insight-banner .eyebrow{color:var(--text-muted)}.insight-banner strong{letter-spacing:-.035em;font-size:22px}.insight-banner small{color:var(--text-muted);font-size:11px}.metric-card{background:var(--bg-card);border:1px solid var(--border-subtle);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-radius:16px;grid-template-columns:1fr auto;align-items:center;min-height:168px;padding:24px;transition:all .3s;display:grid;position:relative;overflow:hidden}.metric-card:before{content:"";opacity:0;background:linear-gradient(90deg,#0000,#8b5cf64d,#0000);height:1px;transition:opacity .3s;position:absolute;top:0;left:0;right:0}.metric-card:hover{border-color:var(--border-accent);background:var(--bg-card-hover);box-shadow:var(--shadow-glow-violet);transform:translateY(-2px)}.metric-card:hover:before{opacity:1}.metric-card>span{color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;font-size:11px;font-weight:650}.metric-card strong{letter-spacing:-.05em;grid-column:1/-1;font-size:clamp(28px,2.6vw,40px);font-weight:700}.metric-card small{color:var(--text-muted);grid-column:1/-1;font-size:11px}.metric-icon{width:40px;height:40px;color:var(--accent-violet-light);box-shadow:var(--shadow-glow-violet);background:#8b5cf61f;border-radius:12px;place-items:center;transition:all .3s;display:grid}.metric-card:hover .metric-icon{background:#8b5cf633;transform:scale(1.05)}.dashboard-grid{grid-template-columns:minmax(0,2fr) minmax(280px,1fr);gap:16px;margin-bottom:18px;display:grid}.chart-card,.mcp-card,.list-card,.ranking-card,.settings-card{background:var(--bg-card);border:1px solid var(--border-subtle);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-radius:16px;padding:26px;transition:all .3s}.chart-card:hover,.mcp-card:hover,.list-card:hover,.ranking-card:hover{border-color:var(--border-medium)}.card-heading{justify-content:space-between;align-items:start;margin-bottom:24px;display:flex}.updated{color:var(--text-muted);font-size:10px}.chart-wrap{height:280px;margin:4px -4px -8px -16px;font-size:10px}.chart-controls{align-items:center;gap:14px;display:flex}.chart-controls select{border:1px solid var(--border-medium);height:32px;color:var(--text-secondary);background:var(--bg-tertiary);border-radius:9px;padding:0 10px;transition:all .2s}.chart-controls select:focus{border-color:var(--accent-violet);box-shadow:0 0 0 3px #8b5cf626}.mcp-list{margin-top:24px;display:grid}.mcp-list>div{border-top:1px solid var(--border-subtle);grid-template-columns:auto 1fr auto;align-items:center;gap:12px;min-height:54px;font-size:12px;transition:background .2s;display:grid}.mcp-list>div:hover{background:var(--bg-glass)}.mcp-list small{color:var(--text-muted);font-size:10px}.project-list{margin-top:18px;display:grid}.project-list button{border:0;border-top:1px solid var(--border-subtle);min-height:58px;color:var(--text-secondary);text-align:left;background:0 0;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:14px;padding:10px 0;transition:all .2s;display:grid}.project-list button:hover{background:var(--bg-glass)}.project-list button:hover strong{color:var(--accent-violet-light)}.project-list strong,.project-list small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.project-list strong{color:var(--text-primary);font-size:12px}.project-list small{color:var(--text-muted);margin-top:4px;font-size:9px}.text-link{color:var(--accent-violet-light);font-size:11px;text-decoration:none;transition:color .2s}.text-link:hover{color:var(--accent-violet)}.recent-list>div{border-top:1px solid var(--border-subtle);min-height:60px;color:var(--text-secondary);grid-template-columns:100px minmax(0,1fr) 110px 90px;align-items:center;gap:16px;padding:0 4px;font-size:11px;transition:background .2s;display:grid}.recent-list>div:hover{background:var(--bg-glass)}.recent-list strong,.recent-list small{display:block}.recent-list strong{color:var(--text-primary);font-size:12px;font-weight:550}.recent-list small{color:var(--text-muted);margin-top:4px;font-size:10px}.agent-badge{color:var(--accent-violet-light);letter-spacing:.02em;background:#8b5cf614;border:1px solid #8b5cf633;border-radius:8px;justify-self:start;padding:5px 10px;font-size:10px;font-weight:600;transition:all .2s}.agent-badge:hover{background:#8b5cf626;border-color:#8b5cf659}.empty-state{min-height:200px;color:var(--text-muted);justify-content:center;align-items:center;gap:12px;font-size:12px;display:flex}.table-card{overflow:hidden}.virtual-table{min-width:0}.table-head,.table-row{align-items:center;min-width:940px;display:flex}.table-head{border-bottom:1px solid var(--border-medium);height:48px;color:var(--text-muted);letter-spacing:.12em;text-transform:uppercase;font-size:9px;font-weight:700}.table-head>div,.table-row>div{text-overflow:ellipsis;white-space:nowrap;flex:none;padding:0 16px;overflow:hidden}.table-scroll{height:min(65vh,650px);overflow:auto}.table-row{border-bottom:1px solid var(--border-subtle);min-height:48px;color:var(--text-secondary);font-size:11px;transition:all .2s;position:absolute;inset-inline:0}.table-row:hover{background:var(--bg-glass-hover)}.ranking-list>div{border-top:1px solid var(--border-subtle);min-height:70px;color:var(--text-secondary);grid-template-columns:46px minmax(240px,1fr) 100px 110px 100px;align-items:center;gap:18px;padding:0 4px;font-size:11px;transition:all .2s;display:grid}.ranking-list>div:first-child{border-top:0}.ranking-list>div:hover{background:var(--bg-glass)}.rank{color:var(--text-muted);font-variant-numeric:tabular-nums;font-weight:600}.rank-main strong{color:var(--text-primary);font-size:12px;font-weight:550}.usage-bar{background:#ffffff0f;border-radius:3px;width:100%;max-width:420px;height:3px;margin-top:12px;overflow:hidden}.usage-bar span{background:linear-gradient(90deg, var(--accent-violet), var(--accent-cyan));border-radius:3px;height:100%;display:block;box-shadow:0 0 8px #8b5cf666}.settings-stack{gap:16px;display:grid}.setting-title{justify-content:space-between;align-items:start;gap:24px;margin-bottom:24px;display:flex}.setting-title h2,.inline-setting h2{margin:0 0 6px}.setting-title p,.inline-setting p{color:var(--text-tertiary);margin:0;font-size:12px;line-height:1.55}.setting-title select{border:1px solid var(--border-medium);min-width:130px;height:38px;color:var(--text-primary);background:var(--bg-tertiary);border-radius:10px;outline:none;padding:0 34px 0 14px;transition:all .2s}.setting-title select:focus{border-color:var(--accent-violet);box-shadow:0 0 0 3px #8b5cf626}.budget-grid{grid-template-columns:repeat(4,1fr);gap:12px;display:grid}.budget-option{border:1px solid var(--border-subtle);min-height:100px;color:var(--text-secondary);background:var(--bg-glass);text-align:left;border-radius:14px;padding:16px;transition:all .25s}.budget-option strong,.budget-option span{display:block}.budget-option strong{color:var(--text-primary);text-transform:uppercase;font-size:13px;font-weight:600}.budget-option span{margin-top:8px;font-size:10px;line-height:1.45}.budget-option:hover,.budget-option.selected{border-color:var(--border-accent);box-shadow:var(--shadow-glow-violet);background:#8b5cf61a}.budget-option.selected strong{color:var(--accent-violet-light)}.model-empty{color:#d6b86f;background:#fbbf240f;border:1px solid #fbbf2433;border-radius:12px;margin:-8px 0 18px;padding:14px 16px;font-size:12px;line-height:1.55}.model-empty code{color:#fde68a;font-family:var(--font-mono)}.agent-model-list{border:1px solid var(--border-subtle);border-radius:16px;overflow:hidden}.agent-model-row{border-bottom:1px solid var(--border-subtle);grid-template-columns:minmax(240px,.8fr) minmax(300px,1.2fr);align-items:center;gap:28px;min-height:78px;padding:14px 18px;transition:background .2s;display:grid}.agent-model-row:last-child{border-bottom:0}.agent-model-row:hover{background:var(--bg-glass)}.agent-identity strong,.agent-identity span,.agent-identity small{display:block}.agent-identity strong{color:var(--text-primary);font-size:13px}.agent-identity span{color:var(--text-secondary);margin-top:4px;font-size:11px}.agent-identity small{color:var(--text-muted);letter-spacing:.04em;font-size:9px;font-family:var(--font-mono);margin-top:6px}.agent-model-row select{border:1px solid var(--border-subtle);width:100%;height:44px;color:var(--text-primary);background:var(--bg-tertiary);text-overflow:ellipsis;border-radius:11px;outline:none;padding:0 38px 0 14px;transition:all .2s;overflow:hidden}.agent-model-row select:focus{border-color:var(--accent-violet);box-shadow:0 0 0 3px #8b5cf626}.inline-setting{justify-content:space-between;align-items:center;gap:28px;display:flex}.form-actions{color:var(--text-muted);justify-content:space-between;align-items:center;gap:18px;font-size:10px;display:flex}.settings-fields{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.settings-fields label{color:var(--text-secondary);gap:7px;font-size:11px;display:grid}.settings-fields input{border:1px solid var(--border-subtle);height:40px;color:var(--text-primary);background:var(--bg-tertiary);border-radius:10px;outline:none;padding:0 12px;transition:all .2s}.settings-fields input:focus{border-color:var(--accent-violet);box-shadow:0 0 0 3px #8b5cf626}.check-setting{grid-template-columns:1fr auto;align-items:center}.settings-field{max-width:240px;color:var(--text-secondary);gap:7px;font-size:11px;display:grid}.settings-field input{border:1px solid var(--border-subtle);height:40px;color:var(--text-primary);background:var(--bg-tertiary);border-radius:10px;padding:0 12px}.form-actions>span{white-space:nowrap;text-overflow:ellipsis;max-width:65%;overflow:hidden}.loading,.error-state{min-height:55vh;color:var(--text-tertiary);justify-content:center;align-items:center;gap:12px;font-size:12px;display:flex}.error-state{color:var(--accent-rose)}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.export-menu{position:relative}.export-scrim{z-index:40;cursor:default;background:0 0;border:0;position:fixed;inset:0}.export-panel{z-index:50;border:1px solid var(--border-medium);background:var(--bg-tertiary);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);width:280px;box-shadow:var(--shadow-lg);border-radius:16px;padding:14px;position:absolute;top:calc(100% + 10px);right:0}.export-head{justify-content:space-between;align-items:center;margin-bottom:12px;padding:0 4px;display:flex}.export-close{color:var(--text-tertiary);background:0 0;border:0;font-size:20px;line-height:1;transition:color .2s}.export-close:hover{color:var(--text-primary)}.export-list{gap:3px;display:grid}.export-item{border-radius:10px;justify-content:space-between;align-items:center;gap:12px;padding:8px 6px;transition:background .2s;display:flex}.export-item:hover{background:var(--bg-glass-hover)}.export-item-label{color:var(--text-primary);font-size:12px}.export-item-actions{gap:6px;display:flex}.export-item-actions .inline-flex{letter-spacing:.06em;height:28px;padding:0 10px;font-size:10px;font-weight:700}.export-error{color:var(--accent-rose);border:1px solid #f8717140;border-radius:10px;margin-top:12px;padding:10px 12px;font-size:11px}.form-errors{color:var(--accent-rose);border:1px solid #f8717140;border-radius:10px;flex-direction:column;gap:4px;padding:10px 12px;font-size:11px;display:flex}.truncation-note{color:var(--accent-amber);border:1px solid #fbbf2440;border-radius:10px;margin:0 0 12px;padding:10px 12px;font-size:11px}.live-card{padding:26px}.live-state{color:var(--text-muted);align-items:center;gap:8px;font-size:11px;font-weight:600;display:inline-flex}.live-state.active{color:var(--accent-emerald)}.live-state.off{color:var(--text-tertiary)}.live-state .status-dot{background:var(--text-muted);width:9px;height:9px}.live-state.active .status-dot{background:var(--accent-emerald);animation:1.6s ease-in-out infinite live-pulse}@keyframes live-pulse{0%,to{opacity:1;box-shadow:0 0 12px #34d39999}50%{opacity:.4;box-shadow:0 0 20px #34d399e6}}.live-list{gap:12px;margin-top:6px;display:grid}.live-row{background:#8b5cf60d;border:1px solid #8b5cf62e;border-radius:14px;grid-template-columns:100px minmax(0,1fr) 90px;align-items:start;gap:16px;padding:14px;transition:all .3s;display:grid}.live-row:hover{box-shadow:var(--shadow-glow-violet);background:#8b5cf614;border-color:#8b5cf64d}.live-body{min-width:0}.live-meta{align-items:baseline;gap:12px;display:flex}.live-meta strong{color:var(--text-primary);font-size:13px;font-weight:600}.live-meta span{color:var(--text-muted);font-size:10px}.live-snippet{color:var(--text-secondary);max-width:100ch;margin:8px 0 0;font-size:12px;line-height:1.55}.live-stats{color:var(--text-muted);gap:14px;margin-top:8px;font-size:10px;display:flex}.live-warn{color:var(--accent-amber);cursor:help}.live-cost{color:var(--accent-violet-light);white-space:nowrap;justify-self:end;font-size:13px;font-weight:600}.live-total{color:var(--text-muted);grid-template-columns:1fr auto 1fr;align-items:baseline;gap:12px;padding:14px 6px 0;font-size:10px;display:grid}.live-total strong{color:var(--text-primary);text-align:right;font-size:13px;font-weight:600}.live-card .empty-state{min-height:120px}.live-card .agent-badge{justify-self:start}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.shimmer{background:linear-gradient(90deg,#0000 0%,#ffffff0a 50%,#0000 100%) 0 0/200% 100%;animation:3s ease-in-out infinite shimmer}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.float-animation{animation:6s ease-in-out infinite float}html.light{--bg-primary:#f8f9fb;--bg-secondary:#f0f1f4;--bg-tertiary:#e8e9ed;--bg-card:#ffffffd9;--bg-card-hover:#fffffff2;--bg-glass:#00000005;--bg-glass-hover:#0000000a;--border-subtle:#0000000f;--border-medium:#0000001a;--border-accent:#8b5cf640;--text-primary:#18181b;--text-secondary:#52525b;--text-tertiary:#52525b;--text-muted:#62626b;--shadow-sm:0 2px 8px #00000014;--shadow-md:0 8px 32px #0000001f;--shadow-lg:0 16px 64px #00000029;--shadow-glow-violet:0 0 20px #8b5cf61a;--shadow-glow-cyan:0 0 20px #22d3ee1a;color:var(--text-primary);background:var(--bg-primary)}html.light body{background:radial-gradient(ellipse 80% 50% at 50% -20%, #8b5cf614, transparent), radial-gradient(ellipse 60% 40% at 80% 50%, #22d3ee0a, transparent), var(--bg-primary)}html.light .sidebar{border-color:var(--border-subtle);background:#ffffffe0}html.light .nav-link{color:var(--text-tertiary)}html.light .nav-link.active{color:var(--accent-violet-dark)}html.light .topbar{border-color:var(--border-subtle);background:#f8f9fbb3}html.light .page-intro p,html.light .setting-title p,html.light .inline-setting p{color:var(--text-tertiary)}html.light h1,html.light h2,html.light .metric-card strong,html.light .recent-list strong,html.light .rank-main strong{color:var(--text-primary)}html.light .table-row,html.light .recent-list>div,html.light .ranking-list>div,html.light .mcp-list>div{border-color:var(--border-subtle)}html.light .live-row{background:#8b5cf60a;border-color:#8b5cf626}html.light .live-meta strong,html.light .live-total strong{color:var(--text-primary)}html.light .live-snippet{color:var(--text-secondary)}html.light .export-panel{border-color:var(--border-subtle);background:#fffffff2}html.light .export-item:hover{background:var(--bg-glass)}html.light .export-item-label{color:var(--text-primary)}html.light .export-close{color:var(--text-tertiary)}html.light .export-close:hover{color:var(--text-primary)}:focus-visible{outline:2px solid var(--accent-violet-light);outline-offset:3px}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.mesh-bg{display:none}}@media (width<=1000px){.metrics-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}.budget-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=720px){.settings-fields{grid-template-columns:1fr}.app-shell{display:block}.sidebar{border:0;border-top:1px solid var(--border-subtle);width:100%;height:70px;padding:8px 12px;position:fixed;inset:auto 0 0}.brand,.sidebar-foot{display:none}.sidebar nav{justify-content:space-around;display:flex}.nav-link{flex-direction:column;justify-content:center;gap:3px;width:60px;height:52px;padding:0;font-size:9px}.nav-link.active:before{display:none}.topbar{height:60px;padding:0 18px}.content{padding:32px 18px 110px}.metrics-grid{grid-template-columns:1fr 1fr}.metric-card{min-height:145px;padding:18px}.recent-list>div{grid-template-columns:80px minmax(0,1fr) 80px}.recent-list>div>span:last-child{display:none}.agent-model-row{grid-template-columns:1fr;gap:12px;padding:16px}.ranking-list>div{grid-template-columns:34px minmax(160px,1fr) 90px}.ranking-list>div>span:nth-last-child(-n+2){display:none}.form-actions{flex-direction:column;align-items:stretch}.form-actions>span{max-width:100%}.form-actions button{width:100%}}@media (width<=470px){.metrics-grid{grid-template-columns:1fr}.budget-grid{grid-template-columns:1fr 1fr}.page-intro h1{font-size:32px}.mcp-list small{display:none}.mcp-list>div{grid-template-columns:auto 1fr}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}