@oeronteros-1/opencode-orchestra 1.0.13 → 1.0.15

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
@@ -14,7 +14,39 @@
14
14
  - диагностика `doctor`, проверка обновлений и shell completion;
15
15
  - идемпотентная установка без удаления пользовательской OpenCode/MCP-конфигурации.
16
16
 
17
- Стабильный контракт версии 1.0 описан в [CHANGELOG.md](CHANGELOG.md). GitHub release notes находятся в [GITHUB_RELEASE_1.0.0.md](GITHUB_RELEASE_1.0.0.md).
17
+ Версия плагина **1.0.13**. Контракт 1.0 описан в [CHANGELOG.md](CHANGELOG.md) (входит в npm-пакет). GitHub release notes: [GITHUB_RELEASE_1.0.0.md](GITHUB_RELEASE_1.0.0.md), [GITHUB_RELEASE_1.0.7.md](GITHUB_RELEASE_1.0.7.md).
18
+
19
+ ## Что нового в 1.0.9–1.0.13
20
+
21
+ Полноценные разделы с примерами для пользователей.
22
+
23
+ ### 1.0.13 — первичный агент и стабильность
24
+
25
+ - **Первичный агент `orch-lead`**: теперь ведущий агент явно виден как основной (`primary agent`). Это упрощает отладку: в `/plugin-status` и логах сессии `orch-lead` отображается как главный координатор, а не скрытый специалист. Пример вывода:
26
+ ```text
27
+ /plugin-status
28
+ Primary agent: orch-lead (v1.0.13)
29
+ Budget: balanced
30
+ Strategy: auto
31
+ ```
32
+ - **Обновление snapshot цен и dashboard**: встроенный price snapshot синхронизирован с текущими тарифами. Dashboard (`dashboard` команда) отображает актуальную стоимость и поддерживает защиту BOM-префиксных конфигов.
33
+
34
+ ### 1.0.11–1.0.12 — BOM-префиксы и диагностика
35
+
36
+ - **Поддержка BOM в конфигурации**: `doctor` и `dashboard` корректно читают `opencode.json` и `orchestra.jsonc`, даже если файл сохранён с BOM (``). Ранее такие конфиги могли игнорироваться или приводить к ошибкам чтения.
37
+ - **Усиление входной точки (`hardening`)**: установщик и `entrypoint` теперь проверяют структуру `opencode.json` перед записью, создают резервную копию даже при частичных изменениях и не удаляют существующие MCP-записи без явного `--force`.
38
+
39
+ ### 1.0.9–1.0.10 — диагностика и обновления
40
+
41
+ - `doctor` проверяет пути `uv`, версию MemoryGraph, наличие `auto_index` для Codebase Memory и доступность `Context7`.
42
+ - `update` сверяет установленную версию с npm (`@latest`) и предлагает команду обновления без ручного поиска.
43
+
44
+ Примеры команд из новых версий:`
45
+ ```bash
46
+ bunx @oeronteros-1/opencode-orchestra@latest doctor --json
47
+ bunx @oeronteros-1/opencode-orchestra@latest update
48
+ bunx @oeronteros-1/opencode-orchestra@latest dashboard --directory . --no-open
49
+ ```
18
50
 
19
51
  ## Установка одной командой
20
52
 
@@ -193,7 +225,22 @@ Resolver формирует упорядоченный список более
193
225
 
194
226
  ## Агенты и команды
195
227
 
196
- Плагин добавляет один публичный `orch-lead`, скрытых workers и скрытый `orch-judge`. Workers не могут делегировать работу дальше; lead может вызывать только агентов Orchestra.
228
+ Плагин добавляет один публичный `orch-lead`, скрытых workers, скрытый reduce-агент `orch-merge` и скрытый `orch-judge`. Workers не могут делегировать работу дальше; lead может вызывать только агентов Orchestra.
229
+
230
+ `orch-lead` строит dependency-aware DAG: независимые ветки одного уровня запускаются параллельно в пределах `parallelWorkers`, downstream-узлы ждут свои зависимости, а после всех веток `orch-merge` один раз объединяет результаты с сохранением источников, конфликтов и неопределённости. Это явный fan-out/fan-in pipeline, а не последовательный список рекомендаций.
231
+
232
+ ### `orch-judge` — арбитр для критических решений
233
+
234
+ `orch-judge` — скрытый арбитр, вызываемый только в двух случаях: при критическом риске (`security`, `migration`, `performance`) или при неразрешённом разногласии между workers (`orch-merge` сообщает конфликт с высокой неопределённостью). В режиме `ebobo` вызов обязательный; в `eco` и `balanced` — только при необходимости. Пример конфигурации ручного пула для арбитра:
235
+ ```jsonc
236
+ {
237
+ "models": {
238
+ "judge": {
239
+ "frontier": [{ "id": "openai/gpt-5", "cost": "subscription", "tier": "judge" }]
240
+ }
241
+ }
242
+ }
243
+ ```
197
244
 
198
245
  Команды OpenCode:
199
246
 
@@ -227,6 +274,8 @@ MemoryGraph отвечает за знания, которых нет непос
227
274
 
228
275
  Глобальный конфиг: `~/.config/opencode/orchestra.jsonc` (или `$XDG_CONFIG_HOME/opencode/orchestra.jsonc`). Проектный `.opencode/orchestra.jsonc` накладывается поверх глобального. Переменная `OPENCODE_CONFIG_DIR` также поддерживается.
229
276
 
277
+ Оба файла могут содержать BOM-префикс (`\ufeff`); `doctor` и `dashboard` с 1.0.11+ читают такие конфиги корректно без ручного удаления префикса. Если `doctor` ранее игнорировал ваш конфиг, повторите проверку с обновлённой версией.
278
+
230
279
  ## Требования и разработка
231
280
 
232
281
  Для установки рекомендуется Bun 1.2+. Для Node-based tooling и разработки требуется Node.js 22+.
@@ -289,7 +338,8 @@ bunx @oeronteros-1/opencode-orchestra@latest install
289
338
  - telemetry хранится локально в `.orchestra`;
290
339
  - тексты сообщений не сохраняются без `telemetry.storeTexts: true`;
291
340
  - pricing endpoint настраивается пользователем и не требуется для offline-оценки;
292
- - перед публикацией или баг-репортом не прикладывайте локальный ledger, если включали сохранение текстов.
341
+ - перед публикацией или баг-репортом не прикладывайте локальный ledger, если включали сохранение текстов;
342
+ - установщик (`install`) и `entrypoint` с 1.0.9 усилены: резервная копия создаётся даже при частичных изменениях, BOM-префиксы (``) в `opencode.json` и `orchestra.jsonc` корректно обрабатываются `doctor` и `dashboard`, а существующие MCP-записи не удаляются без явного `--force`.
293
343
 
294
344
  ## License
295
345
 
@@ -1,2 +1,2 @@
1
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-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}}}@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-zinc-200:oklch(92% .004 286.32);--color-zinc-400:oklch(70.5% .015 286.067);--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;--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{.relative{position:relative}.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)}.w-11{width:calc(var(--spacing) * 11)}.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,)}.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-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.border-white\/10{border-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.border-white\/\[0\.08\]{border-color:#ffffff14}@supports (color:color-mix(in lab, red, red)){.border-white\/\[0\.08\]{border-color:color-mix(in oklab, var(--color-white) 8%, transparent)}}.bg-\[\#10131a\]\/85{background-color:oklab(18.6905% -.000851832 -.0150777/.85)}.bg-violet-500{background-color:var(--color-violet-500)}.bg-white{background-color:var(--color-white)}.bg-white\/\[0\.03\]{background-color:#ffffff08}@supports (color:color-mix(in lab, red, red)){.bg-white\/\[0\.03\]{background-color:color-mix(in oklab, var(--color-white) 3%, transparent)}}.bg-zinc-700{background-color:var(--color-zinc-700)}.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-white{color:var(--color-white)}.text-zinc-200{color:var(--color-zinc-200)}.text-zinc-400{color:var(--color-zinc-400)}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px 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)}.shadow-\[0_24px_80px_-48px_rgba\(0\,0\,0\,\.9\)\]{--tw-shadow:0 24px 80px -48px var(--tw-shadow-color,#000000e6);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}.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-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.hover\:bg-violet-400:hover{background-color:var(--color-violet-400)}.hover\:bg-white\/\[0\.05\]:hover{background-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/\[0\.05\]:hover{background-color:color-mix(in oklab, var(--color-white) 5%, transparent)}}.hover\:bg-white\/\[0\.07\]:hover{background-color:#ffffff12}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/\[0\.07\]:hover{background-color:color-mix(in oklab, var(--color-white) 7.0%, transparent)}}.hover\:text-white:hover{color:var(--color-white)}}.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\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}.data-\[checked\]\:translate-x-5[data-checked]{--tw-translate-x:calc(var(--spacing) * 5);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[checked\]\:bg-violet-500[data-checked]{background-color:var(--color-violet-500)}}:root{color:#f4f4f5;font-synthesis:none;text-rendering:optimizelegibility;background:#090b10;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:radial-gradient(circle at 75% -10%,#7c3aed1f,#0000 32rem),#090b10;min-width:320px;min-height:100vh;margin:0}button,input,select{font:inherit}button{cursor:pointer}.app-shell{grid-template-columns:230px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);z-index:10;background:#080a0fd1;border-right:1px solid #ffffff12;flex-direction:column;height:100vh;padding:26px 16px 20px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:12px;padding:0 9px 28px;display:flex}.brand strong,.brand small{letter-spacing:.16em;display:block}.brand strong{font-size:13px}.brand small{color:#71717a;margin-top:3px;font-size:8px}.brand-mark{color:#fff;background:linear-gradient(145deg,#8b5cf6,#5b21b6);border-radius:10px;justify-content:center;align-items:end;gap:3px;width:32px;height:32px;padding:7px;display:flex;box-shadow:0 8px 28px #7c3aed47}.brand-mark span{background:currentColor;border-radius:2px;width:3px;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:5px;display:grid}.nav-link{color:#8b8b95;border-radius:11px;align-items:center;gap:12px;height:43px;padding:0 12px;font-size:13px;font-weight:550;text-decoration:none;transition:all .18s;display:flex;position:relative}.nav-link:hover{color:#e4e4e7;background:#ffffff09}.nav-link.active{color:#fff;background:#8b5cf61f}.nav-link.active:before{content:"";background:#8b5cf6;border-radius:1px;width:2px;height:20px;position:absolute;left:-16px;box-shadow:0 0 14px #8b5cf6}.sidebar-foot{border-top:1px solid #ffffff12;margin-top:auto;padding:16px 11px 0}.local-chip{color:#a1a1aa;letter-spacing:.14em;text-transform:uppercase;align-items:center;gap:7px;font-size:10px;font-weight:700;display:flex}.project-name{color:#71717a;white-space:nowrap;text-overflow:ellipsis;margin-top:7px;font-size:11px;overflow:hidden}.status-dot{background:#34d399;border-radius:50%;flex:none;width:7px;height:7px;box-shadow:0 0 10px #34d399bf}.status-dot.off{box-shadow:none;background:#52525b}.main-panel{min-width:0}.topbar{border-bottom:1px solid #ffffff0f;justify-content:space-between;align-items:center;height:70px;padding:0 4vw;display:flex}.top-actions{align-items:center;gap:4px;display:flex}.eyebrow{color:#777783;letter-spacing:.17em;text-transform:uppercase;font-size:9px;font-weight:700;line-height:1.4}.topbar .eyebrow{white-space:nowrap;text-overflow:ellipsis;max-width:60vw;display:block;overflow:hidden}.content{max-width:1480px;margin:0 auto;padding:46px 4vw 80px}.page-intro{margin-bottom:32px}.page-intro h1{letter-spacing:-.04em;margin:8px 0;font-size:clamp(28px,3vw,44px);font-weight:650;line-height:1.08}.page-intro p{color:#8b8b95;max-width:640px;margin:0;font-size:14px;line-height:1.6}h2{letter-spacing:-.015em;margin:5px 0 0;font-size:16px}.metrics-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin-bottom:14px;display:grid}.insight-banner{flex-wrap:wrap;align-items:center;gap:32px;margin-bottom:14px;padding:16px 22px;display:flex}.insight-banner>div{gap:2px;display:grid}.insight-banner .eyebrow{color:#85858f}.insight-banner strong{letter-spacing:-.03em;font-size:20px}.insight-banner small{color:#656570;font-size:10px}.metric-card{grid-template-columns:1fr auto;align-items:center;min-height:158px;padding:20px;display:grid}.metric-card>span{color:#85858f;letter-spacing:.06em;text-transform:uppercase;font-size:11px;font-weight:650}.metric-card strong{letter-spacing:-.045em;grid-column:1/-1;font-size:clamp(25px,2.4vw,36px)}.metric-card small{color:#656570;grid-column:1/-1;font-size:10px}.metric-icon{color:#a78bfa;background:#8b5cf61a;border-radius:10px;place-items:center;width:34px;height:34px;display:grid}.dashboard-grid{grid-template-columns:minmax(0,2fr) minmax(260px,1fr);gap:14px;margin-bottom:14px;display:grid}.chart-card,.mcp-card,.list-card,.ranking-card,.settings-card{padding:22px}.card-heading{justify-content:space-between;align-items:start;margin-bottom:20px;display:flex}.updated{color:#5f5f69;font-size:10px}.chart-wrap{height:260px;margin:4px -4px -8px -16px;font-size:10px}.mcp-list{margin-top:20px;display:grid}.mcp-list>div{border-top:1px solid #ffffff0f;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;min-height:50px;font-size:12px;display:grid}.mcp-list small{color:#656570;font-size:9px}.text-link{color:#a78bfa;font-size:11px;text-decoration:none}.recent-list>div{color:#a1a1aa;border-top:1px solid #ffffff0e;grid-template-columns:90px minmax(0,1fr) 100px 80px;align-items:center;gap:14px;min-height:56px;font-size:11px;display:grid}.recent-list strong,.recent-list small{display:block}.recent-list strong{color:#d4d4d8;font-size:11px;font-weight:550}.recent-list small{color:#5f5f69;margin-top:3px;font-size:9px}.agent-badge{color:#a78bfa;background:#8b5cf612;border:1px solid #8b5cf62e;border-radius:6px;justify-self:start;padding:4px 8px;font-size:9px}.empty-state{color:#666671;justify-content:center;align-items:center;gap:10px;min-height:180px;font-size:11px;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{color:#666671;letter-spacing:.11em;text-transform:uppercase;border-bottom:1px solid #ffffff14;height:46px;font-size:9px;font-weight:700}.table-head>div,.table-row>div{text-overflow:ellipsis;white-space:nowrap;flex:none;padding:0 14px;overflow:hidden}.table-scroll{height:min(65vh,650px);overflow:auto}.table-row{color:#b1b1ba;border-bottom:1px solid #ffffff0b;min-height:46px;font-size:10px;position:absolute;inset-inline:0}.table-row:hover{background:#ffffff06}.ranking-list>div{color:#898994;border-top:1px solid #ffffff0e;grid-template-columns:42px minmax(230px,1fr) 90px 100px 90px;align-items:center;gap:16px;min-height:65px;font-size:10px;display:grid}.ranking-list>div:first-child{border-top:0}.rank{color:#52525b;font-variant-numeric:tabular-nums}.rank-main strong{color:#d4d4d8;font-size:11px;font-weight:550}.usage-bar{background:#ffffff0d;border-radius:2px;width:100%;max-width:420px;height:2px;margin-top:10px;overflow:hidden}.usage-bar span{background:linear-gradient(90deg,#7c3aed,#22d3ee);height:100%;display:block}.settings-stack{gap:14px;display:grid}.setting-title{justify-content:space-between;align-items:start;gap:22px;margin-bottom:22px;display:flex}.setting-title h2,.inline-setting h2{margin:0 0 5px}.setting-title p,.inline-setting p{color:#73737e;margin:0;font-size:11px;line-height:1.5}.setting-title select{color:#d4d4d8;background:#151820;border:1px solid #ffffff1a;border-radius:9px;outline:none;min-width:120px;height:36px;padding:0 32px 0 12px}.budget-grid{grid-template-columns:repeat(4,1fr);gap:10px;display:grid}.budget-option{color:#9b9ba5;text-align:left;background:#ffffff05;border:1px solid #ffffff14;border-radius:12px;min-height:92px;padding:14px;transition:all .18s}.budget-option strong,.budget-option span{display:block}.budget-option strong{color:#d4d4d8;text-transform:uppercase;font-size:12px}.budget-option span{margin-top:7px;font-size:9px;line-height:1.4}.budget-option:hover,.budget-option.selected{background:#8b5cf614;border-color:#8b5cf673}.budget-option.selected strong{color:#c4b5fd}.model-empty{color:#d6b86f;background:#fbbf240d;border:1px solid #fbbf242e;border-radius:10px;margin:-6px 0 16px;padding:12px 14px;font-size:11px;line-height:1.5}.model-empty code{color:#fde68a}.agent-model-list{border:1px solid #ffffff12;border-radius:14px;overflow:hidden}.agent-model-row{border-bottom:1px solid #ffffff0f;grid-template-columns:minmax(220px,.8fr) minmax(280px,1.2fr);align-items:center;gap:24px;min-height:74px;padding:12px 16px;display:grid}.agent-model-row:last-child{border-bottom:0}.agent-model-row:hover{background:#ffffff05}.agent-identity strong,.agent-identity span,.agent-identity small{display:block}.agent-identity strong{color:#e4e4e7;font-size:12px}.agent-identity span{color:#858590;margin-top:3px;font-size:10px}.agent-identity small{color:#555560;letter-spacing:.04em;margin-top:5px;font-size:8px}.agent-model-row select{color:#e4e4e7;text-overflow:ellipsis;background:#11141b;border:1px solid #ffffff17;border-radius:10px;outline:none;width:100%;height:42px;padding:0 36px 0 12px;overflow:hidden}.agent-model-row select:focus{border-color:#8b5cf6a6;box-shadow:0 0 0 3px #8b5cf614}.inline-setting{justify-content:space-between;align-items:center;gap:24px;display:flex}.form-actions{color:#666671;justify-content:space-between;align-items:center;gap:16px;font-size:9px;display:flex}.form-actions>span{white-space:nowrap;text-overflow:ellipsis;max-width:65%;overflow:hidden}.loading,.error-state{color:#71717a;justify-content:center;align-items:center;gap:10px;min-height:55vh;font-size:11px;display:flex}.error-state{color:#f87171}.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;background:#12151c;border:1px solid #ffffff1a;border-radius:14px;width:260px;padding:12px;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 24px 64px -24px #000000d9}.export-head{justify-content:space-between;align-items:center;margin-bottom:10px;padding:0 2px;display:flex}.export-close{color:#71717a;background:0 0;border:0;font-size:18px;line-height:1}.export-close:hover{color:#fff}.export-list{gap:2px;display:grid}.export-item{border-radius:9px;justify-content:space-between;align-items:center;gap:10px;padding:6px 4px;display:flex}.export-item:hover{background:#ffffff0a}.export-item-label{color:#d4d4d8;font-size:11px}.export-item-actions{gap:4px;display:flex}.export-item-actions .inline-flex{letter-spacing:.06em;height:26px;padding:0 8px;font-size:9px;font-weight:700}.export-error{color:#f87171;border:1px solid #f8717140;border-radius:8px;margin-top:10px;padding:8px 10px;font-size:10px}html.light .export-panel{background:#fff;border-color:#0000001a}html.light .export-item:hover{background:#00000008}html.light .export-item-label{color:#18181b}html.light .export-close{color:#71717a}html.light .export-close:hover{color:#18181b}html.light{color:#18181b;background:#f5f5f7}html.light body{background:radial-gradient(circle at 75% -10%,#7c3aed1a,#0000 32rem),#f5f5f7}html.light .sidebar{background:#f8f8fae0;border-color:#00000014}html.light .nav-link{color:#71717a}html.light .nav-link.active{color:#5b21b6}html.light section{background:#ffffffdb;border-color:#00000014}html.light .topbar{border-color:#00000012}html.light .page-intro p,html.light .setting-title p,html.light .inline-setting p{color:#71717a}html.light h1,html.light h2,html.light .metric-card strong,html.light .recent-list strong,html.light .rank-main strong{color:#18181b}html.light .table-row,html.light .recent-list>div,html.light .ranking-list>div,html.light .mcp-list>div{border-color:#0000000f}@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){.app-shell{display:block}.sidebar{border:0;border-top:1px solid #ffffff14;width:100%;height:66px;padding:7px 10px;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:2px;width:58px;height:50px;padding:0;font-size:8px}.nav-link.active:before{display:none}.topbar{height:58px;padding:0 18px}.content{padding:30px 16px 100px}.metrics-grid{grid-template-columns:1fr 1fr}.metric-card{min-height:135px;padding:16px}.recent-list>div{grid-template-columns:72px minmax(0,1fr) 70px}.recent-list>div>span:last-child{display:none}.agent-model-row{grid-template-columns:1fr;gap:10px;padding:14px}.ranking-list>div{grid-template-columns:30px minmax(150px,1fr) 80px}.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:30px}.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-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}
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-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}}}@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-zinc-200:oklch(92% .004 286.32);--color-zinc-400:oklch(70.5% .015 286.067);--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;--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{.relative{position:relative}.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)}.w-11{width:calc(var(--spacing) * 11)}.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,)}.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-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.border-white\/10{border-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.border-white\/\[0\.08\]{border-color:#ffffff14}@supports (color:color-mix(in lab, red, red)){.border-white\/\[0\.08\]{border-color:color-mix(in oklab, var(--color-white) 8%, transparent)}}.bg-\[\#10131a\]\/85{background-color:oklab(18.6905% -.000851832 -.0150777/.85)}.bg-violet-500{background-color:var(--color-violet-500)}.bg-white{background-color:var(--color-white)}.bg-white\/\[0\.03\]{background-color:#ffffff08}@supports (color:color-mix(in lab, red, red)){.bg-white\/\[0\.03\]{background-color:color-mix(in oklab, var(--color-white) 3%, transparent)}}.bg-zinc-700{background-color:var(--color-zinc-700)}.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-white{color:var(--color-white)}.text-zinc-200{color:var(--color-zinc-200)}.text-zinc-400{color:var(--color-zinc-400)}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px 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)}.shadow-\[0_24px_80px_-48px_rgba\(0\,0\,0\,\.9\)\]{--tw-shadow:0 24px 80px -48px var(--tw-shadow-color,#000000e6);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}.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-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media (hover:hover){.hover\:bg-violet-400:hover{background-color:var(--color-violet-400)}.hover\:bg-white\/\[0\.05\]:hover{background-color:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/\[0\.05\]:hover{background-color:color-mix(in oklab, var(--color-white) 5%, transparent)}}.hover\:bg-white\/\[0\.07\]:hover{background-color:#ffffff12}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/\[0\.07\]:hover{background-color:color-mix(in oklab, var(--color-white) 7.0%, transparent)}}.hover\:text-white:hover{color:var(--color-white)}}.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\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}.data-\[checked\]\:translate-x-5[data-checked]{--tw-translate-x:calc(var(--spacing) * 5);translate:var(--tw-translate-x) var(--tw-translate-y)}.data-\[checked\]\:bg-violet-500[data-checked]{background-color:var(--color-violet-500)}}:root{color:#f4f4f5;font-synthesis:none;text-rendering:optimizelegibility;background:#090b10;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:radial-gradient(circle at 75% -10%,#7c3aed1f,#0000 32rem),#090b10;min-width:320px;min-height:100vh;margin:0}button,input,select{font:inherit}button{cursor:pointer}.app-shell{grid-template-columns:230px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);z-index:10;background:#080a0fd1;border-right:1px solid #ffffff12;flex-direction:column;height:100vh;padding:26px 16px 20px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:12px;padding:0 9px 28px;display:flex}.brand strong,.brand small{letter-spacing:.16em;display:block}.brand strong{font-size:13px}.brand small{color:#71717a;margin-top:3px;font-size:8px}.brand-mark{color:#fff;background:linear-gradient(145deg,#8b5cf6,#5b21b6);border-radius:10px;justify-content:center;align-items:end;gap:3px;width:32px;height:32px;padding:7px;display:flex;box-shadow:0 8px 28px #7c3aed47}.brand-mark span{background:currentColor;border-radius:2px;width:3px;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:5px;display:grid}.nav-link{color:#8b8b95;border-radius:11px;align-items:center;gap:12px;height:43px;padding:0 12px;font-size:13px;font-weight:550;text-decoration:none;transition:all .18s;display:flex;position:relative}.nav-link:hover{color:#e4e4e7;background:#ffffff09}.nav-link.active{color:#fff;background:#8b5cf61f}.nav-link.active:before{content:"";background:#8b5cf6;border-radius:1px;width:2px;height:20px;position:absolute;left:-16px;box-shadow:0 0 14px #8b5cf6}.sidebar-foot{border-top:1px solid #ffffff12;margin-top:auto;padding:16px 11px 0}.local-chip{color:#a1a1aa;letter-spacing:.14em;text-transform:uppercase;align-items:center;gap:7px;font-size:10px;font-weight:700;display:flex}.project-name{color:#71717a;white-space:nowrap;text-overflow:ellipsis;margin-top:7px;font-size:11px;overflow:hidden}.status-dot{background:#34d399;border-radius:50%;flex:none;width:7px;height:7px;box-shadow:0 0 10px #34d399bf}.status-dot.off{box-shadow:none;background:#52525b}.main-panel{min-width:0}.topbar{border-bottom:1px solid #ffffff0f;justify-content:space-between;align-items:center;height:70px;padding:0 4vw;display:flex}.top-actions{align-items:center;gap:4px;display:flex}.eyebrow{color:#777783;letter-spacing:.17em;text-transform:uppercase;font-size:9px;font-weight:700;line-height:1.4}.topbar .eyebrow{white-space:nowrap;text-overflow:ellipsis;max-width:60vw;display:block;overflow:hidden}.content{max-width:1480px;margin:0 auto;padding:46px 4vw 80px}.page-intro{margin-bottom:32px}.page-intro h1{letter-spacing:-.04em;margin:8px 0;font-size:clamp(28px,3vw,44px);font-weight:650;line-height:1.08}.page-intro p{color:#8b8b95;max-width:640px;margin:0;font-size:14px;line-height:1.6}h2{letter-spacing:-.015em;margin:5px 0 0;font-size:16px}.metrics-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin-bottom:14px;display:grid}.insight-banner{flex-wrap:wrap;align-items:center;gap:32px;margin-bottom:14px;padding:16px 22px;display:flex}.insight-banner>div{gap:2px;display:grid}.insight-banner .eyebrow{color:#85858f}.insight-banner strong{letter-spacing:-.03em;font-size:20px}.insight-banner small{color:#656570;font-size:10px}.metric-card{grid-template-columns:1fr auto;align-items:center;min-height:158px;padding:20px;display:grid}.metric-card>span{color:#85858f;letter-spacing:.06em;text-transform:uppercase;font-size:11px;font-weight:650}.metric-card strong{letter-spacing:-.045em;grid-column:1/-1;font-size:clamp(25px,2.4vw,36px)}.metric-card small{color:#656570;grid-column:1/-1;font-size:10px}.metric-icon{color:#a78bfa;background:#8b5cf61a;border-radius:10px;place-items:center;width:34px;height:34px;display:grid}.dashboard-grid{grid-template-columns:minmax(0,2fr) minmax(260px,1fr);gap:14px;margin-bottom:14px;display:grid}.chart-card,.mcp-card,.list-card,.ranking-card,.settings-card{padding:22px}.card-heading{justify-content:space-between;align-items:start;margin-bottom:20px;display:flex}.updated{color:#5f5f69;font-size:10px}.chart-wrap{height:260px;margin:4px -4px -8px -16px;font-size:10px}.mcp-list{margin-top:20px;display:grid}.mcp-list>div{border-top:1px solid #ffffff0f;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;min-height:50px;font-size:12px;display:grid}.mcp-list small{color:#656570;font-size:9px}.text-link{color:#a78bfa;font-size:11px;text-decoration:none}.recent-list>div{color:#a1a1aa;border-top:1px solid #ffffff0e;grid-template-columns:90px minmax(0,1fr) 100px 80px;align-items:center;gap:14px;min-height:56px;font-size:11px;display:grid}.recent-list strong,.recent-list small{display:block}.recent-list strong{color:#d4d4d8;font-size:11px;font-weight:550}.recent-list small{color:#5f5f69;margin-top:3px;font-size:9px}.agent-badge{color:#a78bfa;background:#8b5cf612;border:1px solid #8b5cf62e;border-radius:6px;justify-self:start;padding:4px 8px;font-size:9px}.empty-state{color:#666671;justify-content:center;align-items:center;gap:10px;min-height:180px;font-size:11px;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{color:#666671;letter-spacing:.11em;text-transform:uppercase;border-bottom:1px solid #ffffff14;height:46px;font-size:9px;font-weight:700}.table-head>div,.table-row>div{text-overflow:ellipsis;white-space:nowrap;flex:none;padding:0 14px;overflow:hidden}.table-scroll{height:min(65vh,650px);overflow:auto}.table-row{color:#b1b1ba;border-bottom:1px solid #ffffff0b;min-height:46px;font-size:10px;position:absolute;inset-inline:0}.table-row:hover{background:#ffffff06}.ranking-list>div{color:#898994;border-top:1px solid #ffffff0e;grid-template-columns:42px minmax(230px,1fr) 90px 100px 90px;align-items:center;gap:16px;min-height:65px;font-size:10px;display:grid}.ranking-list>div:first-child{border-top:0}.rank{color:#52525b;font-variant-numeric:tabular-nums}.rank-main strong{color:#d4d4d8;font-size:11px;font-weight:550}.usage-bar{background:#ffffff0d;border-radius:2px;width:100%;max-width:420px;height:2px;margin-top:10px;overflow:hidden}.usage-bar span{background:linear-gradient(90deg,#7c3aed,#22d3ee);height:100%;display:block}.settings-stack{gap:14px;display:grid}.setting-title{justify-content:space-between;align-items:start;gap:22px;margin-bottom:22px;display:flex}.setting-title h2,.inline-setting h2{margin:0 0 5px}.setting-title p,.inline-setting p{color:#73737e;margin:0;font-size:11px;line-height:1.5}.setting-title select{color:#d4d4d8;background:#151820;border:1px solid #ffffff1a;border-radius:9px;outline:none;min-width:120px;height:36px;padding:0 32px 0 12px}.budget-grid{grid-template-columns:repeat(4,1fr);gap:10px;display:grid}.budget-option{color:#9b9ba5;text-align:left;background:#ffffff05;border:1px solid #ffffff14;border-radius:12px;min-height:92px;padding:14px;transition:all .18s}.budget-option strong,.budget-option span{display:block}.budget-option strong{color:#d4d4d8;text-transform:uppercase;font-size:12px}.budget-option span{margin-top:7px;font-size:9px;line-height:1.4}.budget-option:hover,.budget-option.selected{background:#8b5cf614;border-color:#8b5cf673}.budget-option.selected strong{color:#c4b5fd}.model-empty{color:#d6b86f;background:#fbbf240d;border:1px solid #fbbf242e;border-radius:10px;margin:-6px 0 16px;padding:12px 14px;font-size:11px;line-height:1.5}.model-empty code{color:#fde68a}.agent-model-list{border:1px solid #ffffff12;border-radius:14px;overflow:hidden}.agent-model-row{border-bottom:1px solid #ffffff0f;grid-template-columns:minmax(220px,.8fr) minmax(280px,1.2fr);align-items:center;gap:24px;min-height:74px;padding:12px 16px;display:grid}.agent-model-row:last-child{border-bottom:0}.agent-model-row:hover{background:#ffffff05}.agent-identity strong,.agent-identity span,.agent-identity small{display:block}.agent-identity strong{color:#e4e4e7;font-size:12px}.agent-identity span{color:#858590;margin-top:3px;font-size:10px}.agent-identity small{color:#555560;letter-spacing:.04em;margin-top:5px;font-size:8px}.agent-model-row select{color:#e4e4e7;text-overflow:ellipsis;background:#11141b;border:1px solid #ffffff17;border-radius:10px;outline:none;width:100%;height:42px;padding:0 36px 0 12px;overflow:hidden}.agent-model-row select:focus{border-color:#8b5cf6a6;box-shadow:0 0 0 3px #8b5cf614}.inline-setting{justify-content:space-between;align-items:center;gap:24px;display:flex}.form-actions{color:#666671;justify-content:space-between;align-items:center;gap:16px;font-size:9px;display:flex}.form-actions>span{white-space:nowrap;text-overflow:ellipsis;max-width:65%;overflow:hidden}.loading,.error-state{color:#71717a;justify-content:center;align-items:center;gap:10px;min-height:55vh;font-size:11px;display:flex}.error-state{color:#f87171}.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;background:#12151c;border:1px solid #ffffff1a;border-radius:14px;width:260px;padding:12px;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 24px 64px -24px #000000d9}.export-head{justify-content:space-between;align-items:center;margin-bottom:10px;padding:0 2px;display:flex}.export-close{color:#71717a;background:0 0;border:0;font-size:18px;line-height:1}.export-close:hover{color:#fff}.export-list{gap:2px;display:grid}.export-item{border-radius:9px;justify-content:space-between;align-items:center;gap:10px;padding:6px 4px;display:flex}.export-item:hover{background:#ffffff0a}.export-item-label{color:#d4d4d8;font-size:11px}.export-item-actions{gap:4px;display:flex}.export-item-actions .inline-flex{letter-spacing:.06em;height:26px;padding:0 8px;font-size:9px;font-weight:700}.export-error{color:#f87171;border:1px solid #f8717140;border-radius:8px;margin-top:10px;padding:8px 10px;font-size:10px}html.light .export-panel{background:#fff;border-color:#0000001a}html.light .export-item:hover{background:#00000008}html.light .export-item-label{color:#18181b}html.light .export-close{color:#71717a}html.light .export-close:hover{color:#18181b}html.light{color:#18181b;background:#f5f5f7}html.light body{background:radial-gradient(circle at 75% -10%,#7c3aed1a,#0000 32rem),#f5f5f7}html.light .sidebar{background:#f8f8fae0;border-color:#00000014}html.light .nav-link{color:#71717a}html.light .nav-link.active{color:#5b21b6}html.light section{background:#ffffffdb;border-color:#00000014}html.light .topbar{border-color:#00000012}html.light .page-intro p,html.light .setting-title p,html.light .inline-setting p{color:#71717a}html.light h1,html.light h2,html.light .metric-card strong,html.light .recent-list strong,html.light .rank-main strong{color:#18181b}html.light .table-row,html.light .recent-list>div,html.light .ranking-list>div,html.light .mcp-list>div{border-color:#0000000f}@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){.app-shell{display:block}.sidebar{border:0;border-top:1px solid #ffffff14;width:100%;height:66px;padding:7px 10px;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:2px;width:58px;height:50px;padding:0;font-size:8px}.nav-link.active:before{display:none}.topbar{height:58px;padding:0 18px}.content{padding:30px 16px 100px}.metrics-grid{grid-template-columns:1fr 1fr}.metric-card{min-height:135px;padding:16px}.recent-list>div{grid-template-columns:72px minmax(0,1fr) 70px}.recent-list>div>span:last-child{display:none}.agent-model-row{grid-template-columns:1fr;gap:10px;padding:14px}.ranking-list>div{grid-template-columns:30px minmax(150px,1fr) 80px}.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:30px}.mcp-list small{display:none}.mcp-list>div{grid-template-columns:auto 1fr}}.live-card{padding:22px}.live-state{color:#656570;align-items:center;gap:6px;font-size:10px;display:inline-flex}.live-state.active{color:#34d399}.live-state.off{color:#71717a}.live-state .status-dot{background:#52525b;width:8px;height:8px}.live-state.active .status-dot{background:#34d399;animation:1.6s ease-in-out infinite live-pulse}@keyframes live-pulse{0%,to{opacity:1}50%{opacity:.35}}.live-list{gap:10px;margin-top:4px;display:grid}.live-row{background:#8b5cf60b;border:1px solid #8b5cf629;border-radius:12px;grid-template-columns:90px minmax(0,1fr) 84px;align-items:start;gap:14px;padding:12px;display:grid}.live-body{min-width:0}.live-meta{align-items:baseline;gap:10px;display:flex}.live-meta strong{color:#d4d4d8;font-size:12px;font-weight:600}.live-meta span{color:#5f5f69;font-size:9px}.live-snippet{color:#a1a1aa;max-width:100ch;margin:6px 0 0;font-size:11px;line-height:1.5}.live-stats{color:#5f5f69;gap:12px;margin-top:6px;font-size:9px;display:flex}.live-warn{color:#fbbf24;cursor:help}.live-cost{color:#a78bfa;white-space:nowrap;justify-self:end;font-size:12px;font-weight:550}.live-total{color:#656570;grid-template-columns:1fr auto 1fr;align-items:baseline;gap:10px;padding:12px 4px 0;font-size:9px;display:grid}.live-total strong{color:#d4d4d8;text-align:right;font-size:12px;font-weight:550}.live-card .empty-state{min-height:110px}.live-card .agent-badge{justify-self:start}html.light .live-meta strong,html.light .live-total strong{color:#18181b}html.light .live-snippet{color:#3f3f46}html.light .live-row{background:#faf5ff;border-color:#8b5cf62e}@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-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}