diff --git a/docs/api.md b/docs/api.md
index 5cf05d4..95c9ddd 100644
--- a/docs/api.md
+++ b/docs/api.md
@@ -149,7 +149,7 @@
"id": "secretary",
"name": "Personal Secretary",
"description": "General-purpose assistant",
- "enabled_tools": ["todo", "mcp_navi-web_search", "filesystem", "..."],
+ "enabled_tools": ["todo", "mcp:navi-web:web_search", "filesystem", "..."],
"llm_backend": "ollama",
"model": ["gemma4:31b-cloud", "gemma4:26b-a4b-it-q4_K_M"],
"temperature": 0.65,
@@ -172,7 +172,7 @@
```json
[
{
- "name": "mcp_navi-web_search",
+ "name": "mcp:navi-web:web_search",
"description": "Search the web using DuckDuckGo.",
"parameters": {"type": "object", "properties": {...}, "required": [...]}
},
@@ -334,7 +334,7 @@
"tool_calls": [
{
"id": "abc123",
- "name": "mcp_navi-web_search",
+ "name": "mcp:navi-web:web_search",
"arguments": { "query": "..." }
}
]
@@ -343,7 +343,7 @@
"role": "tool",
"content": "tool result",
"tool_call_id": "abc123",
- "name": "mcp_navi-web_search"
+ "name": "mcp:navi-web:web_search"
}
]
}
@@ -657,7 +657,7 @@
```json
{
"type": "tool_started",
- "tool": "mcp_navi-web_search",
+ "tool": "mcp:navi-web:web_search",
"args": { "query": "weather in moscow" },
"is_subagent": false
}
@@ -671,7 +671,7 @@
```json
{
"type": "tool_call",
- "tool": "mcp_navi-web_search",
+ "tool": "mcp:navi-web:web_search",
"args": { "query": "weather in moscow" },
"result": "Today +12°C, cloudy.",
"success": true,
diff --git a/docs/profiles.md b/docs/profiles.md
index dae70b9..11e7edf 100644
--- a/docs/profiles.md
+++ b/docs/profiles.md
@@ -131,7 +131,7 @@
"model": ["gemma4:31b-cloud", "gemma4:26b-a4b-it-q4_K_M"],
"temperature": 0.5,
"max_iterations": 20,
- "enabled_tools": ["todo", "scratchpad", "mcp_navi-web_search", "filesystem"],
+ "enabled_tools": ["todo", "scratchpad", "mcp:navi-web:web_search", "filesystem"],
"subagent_tools": ["todo", "filesystem", "terminal"],
"planning_enabled": true,
"planning_mandatory": false,
diff --git a/docs/tools.md b/docs/tools.md
index 32fd056..bcdd147 100644
--- a/docs/tools.md
+++ b/docs/tools.md
@@ -10,10 +10,10 @@
| Tool | Name | Description |
|---|---|---|
-| `WebSearchTool` | `mcp_navi-web_search` | DuckDuckGo search |
-| `WebViewTool` | `mcp_navi-web_view` | Fetch and render a URL |
+| `WebSearchTool` | `mcp:navi-web:web_search` | DuckDuckGo search |
+| `WebViewTool` | `mcp:navi-web:web_view` | Fetch and render a URL |
| `FilesystemTool` | `filesystem` | Read/write/list local files (path restrictions via config) |
-| `HttpRequestTool` | `mcp_navi-web_request` | Generic HTTP client (GET/POST/etc.) |
+| `HttpRequestTool` | `mcp:navi-web:http_request` | Generic HTTP client (GET/POST/etc.) |
| `CodeExecTool` | `code_exec` | Execute Python in a subprocess sandbox |
| `TerminalTool` | `terminal` | Run shell commands (command allowlist via config) |
| `SshExecTool` | `ssh_exec` | SSH into remote hosts; connection pool keyed by session ID |
@@ -30,9 +30,12 @@
| `ListProfilesTool` | `list_profiles` | List all available profiles |
| `ShareFileTool` | `share_file` | Copy an existing local file into session files and return a download link |
| `ContentPublishTool` | `content_publish` | Register an existing session file for inline viewing in chat |
-| `Model3DTool` | `model_3d` | Compile an OpenSCAD script into a binary STL file |
-| `ScadLintTool` | `scad_lint` | Lightweight OpenSCAD source linting before STL compilation |
-| `Render3DTool` | `render_3d` | Render preview PNG images from an STL file (up to 3 views) |
+| `McpTool` (navi-3d) | `mcp:navi-3d:compile_scad` | Compile an OpenSCAD script into a binary STL file |
+| `McpTool` (navi-3d) | `mcp:navi-3d:lint_scad` | Lightweight OpenSCAD source linting before STL compilation |
+| `McpTool` (navi-3d) | `mcp:navi-3d:render_stl` | Render preview PNG images from an STL file (up to 3 views) |
+| `McpTool` (navi-web) | `mcp:navi-web:web_search` | Web search (SearXNG primary, DDG fallback, Brave tertiary) |
+| `McpTool` (navi-web) | `mcp:navi-web:web_view` | Open a URL in a headless browser and return clean readable text |
+| `McpTool` (navi-web) | `mcp:navi-web:http_request` | Raw HTTP request (GET/POST/PUT/PATCH/DELETE) |
| `DeleteToolTool` | `delete_tool` | Delete a user tool file |
| `TestToolTool` | `test_tool` | Run a user tool and verify its output |
| `McpStatusTool` | `mcp_status` | Check connectivity and list tools for configured MCP servers |
diff --git a/docs/visual.html b/docs/visual.html
index b3b2f24..57c3e40 100644
--- a/docs/visual.html
+++ b/docs/visual.html
@@ -872,10 +872,10 @@
| Name | Class | Description |
- web_search | WebSearchTool | DuckDuckGo web search |
- web_view | WebViewTool | Fetch and render a URL as text |
+ mcp:navi-web:web_search | McpTool | Web search (SearXNG primary, DDG fallback, Brave tertiary) |
+ mcp:navi-web:web_view | McpTool | Open a URL in a headless browser and return clean text |
filesystem | FilesystemTool | Read/write/list local files (path allowlist via config) |
- http_request | HttpRequestTool | Generic HTTP client — GET/POST/PUT/etc. |
+ mcp:navi-web:http_request | McpTool | Raw HTTP request — GET/POST/PUT/PATCH/DELETE |
code_exec | CodeExecTool | Execute Python in a subprocess sandbox |
terminal | TerminalTool | Run shell commands (command allowlist via config) |
ssh_exec | SshExecTool | SSH into remote hosts; connection pool keyed by session ID |
@@ -1091,8 +1091,8 @@
stream_start
tool_started spawn_agent is_subagent=false
turn_thinking is_subagent=true
- tool_started web_search is_subagent=true
- tool_call web_search is_subagent=true
+ tool_started mcp:navi-web:web_search is_subagent=true
+ tool_call mcp:navi-web:web_search is_subagent=true
tool_started filesystem is_subagent=true
tool_call filesystem is_subagent=true
tool_call spawn_agent is_subagent=false
diff --git a/manuals/lint_scad.md b/manuals/lint_scad.md
new file mode 100644
index 0000000..85404bf
--- /dev/null
+++ b/manuals/lint_scad.md
@@ -0,0 +1,84 @@
+# mcp:navi-3d:lint_scad
+
+## Что делает
+
+Проверяет OpenSCAD-скрипт на типичные ошибки, которые часто допускают LLM при генерации кода: незакрытые скобки, отсутствующие точки с запятой, неправильные аргументы примитивов, устаревший синтаксис и т.д.
+
+## Предпосылки
+
+1. **Файл `.scad` уже должен существовать.** Напишите его заранее через `filesystem write`.
+
+## Формат вызова
+
+```python
+mcp:navi-3d:lint_scad(
+ session_id="...",
+ source_path="bracket.scad"
+)
+```
+
+## Параметры
+
+| Параметр | Обязательно | Описание |
+|---|---|---|
+| `session_id` | Да | UUID текущей сессии Navi. Файлы разрешаются внутри `session_files//`. |
+| `source_path` | Да | Путь к существующему `.scad`-файлу (внутри сессии или абсолютный) |
+
+## Workflow
+
+### 1. Написать OpenSCAD-скрипт
+
+```
+filesystem write session_files/sess-abc/bracket.scad '
+difference() {
+ cube([40, 20, 5], center=true);
+ translate([15, 0, 0]) cylinder(h=6, d=4, center=true);
+}
+'
+```
+
+### 2. Запустить линтинг
+
+```
+mcp:navi-3d:lint_scad(
+ session_id="sess-abc",
+ source_path="bracket.scad"
+)
+```
+
+### 3. Исправить ошибки
+
+Если линт нашёл проблемы — исправьте `.scad` через `filesystem edit` и запустите линт повторно.
+
+### 4. Компилировать
+
+После чистого линта:
+
+```
+mcp:navi-3d:compile_scad(
+ session_id="sess-abc",
+ source_path="bracket.scad",
+ output_path="bracket.stl"
+)
+```
+
+## Что возвращает
+
+При успехе (ошибок нет):
+```
+Lint passed: no issues found.
+```
+
+При ошибках:
+```
+Lint errors (3):
+ line 7: missing semicolon after cylinder()
+ line 12: unexpected token '}'
+ line 15: unknown parameter 'radiu' in cylinder (did you mean 'r' or 'd'?)
+```
+
+## Важные правила
+
+1. **Всегда линт перед компиляцией** — это быстрее, чем ловить `openscad_compile_error`.
+2. **Всегда передавайте `session_id`** — без него инструмент не знает, в какой директории искать файлы.
+3. **Линт не проверяет логику** — только синтаксис и типичные LLM-ошибки. Физическую корректность проверяйте через превью.
diff --git a/manuals/model_3d.md b/manuals/model_3d.md
index 7ccfa71..3e86221 100644
--- a/manuals/model_3d.md
+++ b/manuals/model_3d.md
@@ -1,4 +1,4 @@
-# model_3d
+# mcp:navi-3d:compile_scad
## Что делает
@@ -14,9 +14,10 @@
## Формат вызова
```python
-model_3d(
- scad_path="session_files/{session_id}/handle.scad",
- output_path="session_files/{session_id}/handle.stl"
+mcp:navi-3d:compile_scad(
+ session_id="...",
+ source_path="handle.scad",
+ output_path="handle.stl"
)
```
@@ -24,7 +25,8 @@
| Параметр | Обязательно | Описание |
|---|---|---|
-| `scad_path` | Да | Путь к существующему `.scad`-файлу |
+| `session_id` | Да | UUID текущей сессии Navi. Файлы разрешаются внутри `session_files//`. |
+| `source_path` | Да | Путь к существующему `.scad`-файлу (внутри сессии или абсолютный) |
| `output_path` | Да | Путь, куда записать сгенерированный `.stl`. Родительские директории создаются автоматически. |
## Workflow
@@ -41,16 +43,26 @@
'
```
-### 2. Скомпилировать в STL
+### 2. Проверить линтингом (рекомендуется)
```
-model_3d(
- scad_path="session_files/sess-abc/bracket.scad",
- output_path="session_files/sess-abc/bracket.stl"
+mcp:navi-3d:lint_scad(
+ session_id="sess-abc",
+ source_path="bracket.scad"
)
```
-### 3. Показать пользователю
+### 3. Скомпилировать в STL
+
+```
+mcp:navi-3d:compile_scad(
+ session_id="sess-abc",
+ source_path="bracket.scad",
+ output_path="bracket.stl"
+)
+```
+
+### 4. Показать пользователю
```
content_publish(filename="bracket.stl", title="Bracket")
@@ -70,9 +82,11 @@
- `scad_not_found` — исходный файл не найден
- `openscad_compile_error` — ошибка компиляции (невалидный CSG, деление на ноль и т.д.)
- `no_output` — OpenSCAD завершился без ошибок, но файл не создался
+- `wrong_session_dir` — файл находится вне разрешённой сессии
## Важные правила
1. **Всегда binary STL** — нет параметра ASCII/binary, всегда используется `--export-format binstl`.
-2. **Скрипт должен существовать до вызова** — `model_3d` не пишет `.scad`, только компилирует.
-3. **Ошибки OpenSCAD** читаемы: строка, символ, тип ошибки — всё в stderr.
+2. **Скрипт должен существовать до вызова** — `compile_scad` не пишет `.scad`, только компилирует.
+3. **Всегда передавайте `session_id`** — без него инструмент не знает, в какой директории искать файлы.
+4. **Ошибки OpenSCAD** читаемы: строка, символ, тип ошибки — всё в stderr.
diff --git a/manuals/render_3d.md b/manuals/render_3d.md
index fea1d75..2f05ac0 100644
--- a/manuals/render_3d.md
+++ b/manuals/render_3d.md
@@ -1,4 +1,4 @@
-# render_3d
+# mcp:navi-3d:render_stl
## Что делает
@@ -8,14 +8,15 @@
## Предпосылки
-1. **STL-файл уже должен существовать.** Сгенерируйте его через `model_3d` заранее.
+1. **STL-файл уже должен существовать.** Сгенерируйте его через `mcp:navi-3d:compile_scad` заранее.
2. **OpenSCAD должен быть установлен.**
## Формат вызова
```python
-render_3d(
- source="session_files/{session_id}/bracket.stl",
+mcp:navi-3d:render_stl(
+ session_id="...",
+ source_path="bracket.stl",
views=["iso", "front", "top"]
)
```
@@ -24,7 +25,8 @@
| Параметр | Обязательно | Описание |
|---|---|---|
-| `source` | Да | Путь к существующему `.stl`-файлу |
+| `session_id` | Да | UUID текущей сессии Navi. Файлы разрешаются внутри `session_files//`. |
+| `source_path` | Да | Путь к существующему `.stl`-файлу (внутри сессии или абсолютный) |
| `views` | Нет | Список ракурсов (макс. 3). Доступные: `front`, `back`, `top`, `bottom`, `left`, `right`, `iso`. По умолчанию `["iso"]`. |
## Доступные ракурсы
@@ -44,14 +46,19 @@
### 1. Сгенерировать STL
```
-model_3d(scad_path="...", output_path="...")
+mcp:navi-3d:compile_scad(
+ session_id="sess-abc",
+ source_path="bracket.scad",
+ output_path="bracket.stl"
+)
```
### 2. Отрендерить ракурсы
```
-render_3d(
- source="session_files/sess-abc/bracket.stl",
+mcp:navi-3d:render_stl(
+ session_id="sess-abc",
+ source_path="bracket.stl",
views=["iso", "front", "top"]
)
```
@@ -63,7 +70,7 @@
- `bracket.front.png`
- `bracket.top.png`
-Обычно эти PNG нужны Нави для внутренней проверки геометрии перед публикацией STL. Откройте их через `image_view` и проверьте форму, пропорции, печатную ориентацию и очевидные проблемы печати.
+Обычно эти PNG нужны Нави для внутренней проверки геометрии перед публикацией STL. Откройте их через `image_view` и проверьте форму, пропорции и физическую корректность.
Не публикуйте PNG пользователю, если пользователь явно не попросил preview-картинки.
@@ -97,3 +104,4 @@
3. **PNG сохраняются рядом с STL** — в той же директории, с суффиксом ракурса.
4. **Всегда preview mode** — быстрый рендер, не полный CSG.
5. **Не склеивает в сетку** — каждый ракурс — отдельный файл. PNG обычно нужны для внутренней проверки; публикуйте их только по явной просьбе пользователя.
+6. **Всегда передавайте `session_id`** — без него инструмент не знает, в какой директории искать файлы.
diff --git a/manuals/spawn_agent.md b/manuals/spawn_agent.md
index a16cb4d..a444927 100644
--- a/manuals/spawn_agent.md
+++ b/manuals/spawn_agent.md
@@ -35,9 +35,9 @@
| Profile | Sub-agent tools |
|---------|----------------|
-| `secretary` | scratchpad, reflect, web_search, web_view, http_request, filesystem, code_exec, image_view, memory, share_file, weather |
-| `server_admin` | scratchpad, reflect, web_search, http_request, filesystem, code_exec, terminal, ssh_exec, image_view, share_file |
-| `developer` | scratchpad, reflect, web_search, web_view, http_request, filesystem, code_exec, terminal, image_view, reload_tools, test_tool, share_file |
+| `secretary` | scratchpad, reflect, mcp:navi-web:web_search, mcp:navi-web:web_view, mcp:navi-web:http_request, filesystem, code_exec, image_view, memory, share_file, weather |
+| `server_admin` | scratchpad, reflect, mcp:navi-web:web_search, mcp:navi-web:http_request, filesystem, code_exec, terminal, ssh_exec, image_view, share_file |
+| `developer` | scratchpad, reflect, mcp:navi-web:web_search, mcp:navi-web:web_view, mcp:navi-web:http_request, filesystem, code_exec, terminal, image_view, reload_tools, test_tool, share_file |
`spawn_agent` is always excluded — recursion is impossible.
diff --git a/mcp-servers/navi-web/app/mcp_server.py b/mcp-servers/navi-web/app/mcp_server.py
index 74aefe0..4f910bb 100644
--- a/mcp-servers/navi-web/app/mcp_server.py
+++ b/mcp-servers/navi-web/app/mcp_server.py
@@ -42,7 +42,7 @@
return Settings()
-@mcp.tool(name="search")
+@mcp.tool(name="web_search")
async def search_tool(
query: Annotated[str, Field(description="Search query.")],
max_results: Annotated[int, Field(description="Number of results (default 5).")] = 5,
@@ -52,7 +52,7 @@
return _json(result)
-@mcp.tool(name="view")
+@mcp.tool(name="web_view")
async def view_tool(
url: Annotated[str, Field(description="Full URL to open (must start with http:// or https://).")],
screenshot: Annotated[bool, Field(description="Also capture a screenshot.")] = False,
@@ -68,7 +68,7 @@
return _json(result)
-@mcp.tool(name="request")
+@mcp.tool(name="http_request")
async def request_tool(
method: Annotated[str, Field(description="HTTP method: GET, POST, PUT, PATCH, DELETE.")],
url: Annotated[str, Field(description="Full URL to request.")],
diff --git a/mcp_servers.json b/mcp_servers.json
index 5bd50df..cc2093b 100644
--- a/mcp_servers.json
+++ b/mcp_servers.json
@@ -26,7 +26,7 @@
"list_pending_changes"
]
},
- "instructions": "MANDATORY for profiles that expose gnexus-book tools: Before answering any question about infrastructure, servers, services, networks, documentation, or system inventory, call gnexus-book tools first.\n\nUse only gnexus-book tool names that are present in the current tool schema. In Navi they are exposed with the mcp_gnexus-book_ prefix, but each profile may expose only some groups. Do not invent or call gnexus-book tools that are not in the current tool list.\n\nQuery mapping by capability:\n- Status or facts about a server/service → search docs first, then read a specific doc or inventory item if those tools are available.\n- Service placement or topology → list inventory and relationships if available.\n- Documentation changes → read the target doc first, then propose a doc or inventory change if write tools are available.\n- Freshness questions → use freshness checks if available.\n- Repository validation/status → use repository tools only if they are available in the current tool schema; otherwise skip this step and continue with available read/write tools.\n\nDo not rely on memory for infrastructure facts. Memory is only for personal user facts and preferences. Always pull infrastructure state from gnexus-book when these tools are available to the active profile.\n\nDo not store raw secrets in documentation.\n\nABSOLUTE RULE — NEVER bypass MCP tools:\nYou MUST NOT use filesystem, terminal, code_exec, or any direct file access to read or write gnexus-book files. The MCP tools are the ONLY valid interface to this knowledge base. Violating this rule bypasses validation, corrupts repository state, and breaks consistency guarantees.\n- To read: use mcp_gnexus-book_search_docs, mcp_gnexus-book_read_doc, mcp_gnexus-book_list_inventory, mcp_gnexus-book_get_inventory_item.\n- To write: use mcp_gnexus-book_propose_doc_change, mcp_gnexus-book_propose_inventory_item_change, mcp_gnexus-book_apply_pending_change, mcp_gnexus-book_commit_changes.\n- NEVER call filesystem write, filesystem smart_edit, terminal, or code_exec on gnexus-book paths.\n\nBefore the final response, decide whether tool execution revealed stable reusable infrastructure facts, service configurations, or relationships. If yes and gnexus-book write tools are available, persist them before answering. If write tools are not available, report the facts that should be persisted. If the fact is user-specific rather than infrastructure documentation, use the memory tool instead. Choose the target based on scope, not habit."
+ "instructions": "MANDATORY for profiles that expose gnexus-book tools: Before answering any question about infrastructure, servers, services, networks, documentation, or system inventory, call gnexus-book tools first.\n\nUse only gnexus-book tool names that are present in the current tool schema. In Navi they are exposed with the mcp:gnexus-book: prefix (example: mcp:gnexus-book:search_docs), but each profile may expose only some groups. Do not invent or call gnexus-book tools that are not in the current tool list.\n\nQuery mapping by capability:\n- Status or facts about a server/service → search docs first, then read a specific doc or inventory item if those tools are available.\n- Service placement or topology → list inventory and relationships if available.\n- Documentation changes → read the target doc first, then propose a doc or inventory change if write tools are available.\n- Freshness questions → use freshness checks if available.\n- Repository validation/status → use repository tools only if they are available in the current tool schema; otherwise skip this step and continue with available read/write tools.\n\nDo not rely on memory for infrastructure facts. Memory is only for personal user facts and preferences. Always pull infrastructure state from gnexus-book when these tools are available to the active profile.\n\nDo not store raw secrets in documentation.\n\nABSOLUTE RULE — NEVER bypass MCP tools:\nYou MUST NOT use filesystem, terminal, code_exec, or any direct file access to read or write gnexus-book files. The MCP tools are the ONLY valid interface to this knowledge base. Violating this rule bypasses validation, corrupts repository state, and breaks consistency guarantees.\n- To read: use mcp:gnexus-book:search_docs, mcp:gnexus-book:read_doc, mcp:gnexus-book:list_inventory, mcp:gnexus-book:get_inventory_item.\n- To write: use mcp:gnexus-book:propose_doc_change, mcp:gnexus-book:propose_inventory_item_change, mcp:gnexus-book:apply_pending_change, mcp:gnexus-book:commit_changes.\n- NEVER call filesystem write, filesystem smart_edit, terminal, or code_exec on gnexus-book paths.\n\nBefore the final response, decide whether tool execution revealed stable reusable infrastructure facts, service configurations, or relationships. If yes and gnexus-book write tools are available, persist them before answering. If write tools are not available, report the facts that should be persisted. If the fact is user-specific rather than infrastructure documentation, use the memory tool instead. Choose the target based on scope, not habit."
},
"navi-3d": {
"transport": "stdio",
@@ -58,13 +58,13 @@
},
"groups": {
"search": [
- "search"
+ "web_search"
],
"browse": [
- "view"
+ "web_view"
],
"request": [
- "request"
+ "http_request"
]
},
"instructions": "Navi Web MCP server provides web search, browsing, and raw HTTP tools.\n\nUse it when the task involves:\n- searching the web for current info, docs, or real-time data;\n- opening a URL in a browser to read human-readable content;\n- making REST API calls, webhooks, or raw HTTP requests.\n\nWorkflow:\n1. search — find relevant pages or facts.\n2. view — open promising URLs to read full content.\n3. request — call APIs or services requiring headers/auth.\n\nAll three tools are stateless and work with public URLs.\nNo session_id or filesystem paths are required.\n\nABSOLUTE RULE — NEVER bypass MCP tools:\nYou MUST NOT use filesystem, terminal, code_exec, or any direct file access to read or write web content. Use only the MCP tools listed above."
diff --git a/navi/api/deps.py b/navi/api/deps.py
index 57ca137..6685ff2 100644
--- a/navi/api/deps.py
+++ b/navi/api/deps.py
@@ -108,7 +108,7 @@
"""Discover tools from all connected MCP servers and register them as external."""
# clear previous external MCP tools
for name in list(registry._external_names):
- if name.startswith("mcp_"):
+ if name.startswith("mcp:"):
registry.unregister_external(name)
tools = await manager.get_all_tools()
diff --git a/navi/api/routes/agents.py b/navi/api/routes/agents.py
index 1846e25..1de481a 100644
--- a/navi/api/routes/agents.py
+++ b/navi/api/routes/agents.py
@@ -53,14 +53,14 @@
names: list[str] = []
for server_name, groups in profile.mcp_servers.items():
if "*" in groups:
- prefix = f"mcp_{server_name}_"
+ prefix = f"mcp:{server_name}:"
for tool in tool_registry.all():
if tool.name.startswith(prefix) and tool.name not in names:
names.append(tool.name)
else:
for group_name in groups:
for tool_name in mcp_manager.resolve_group(server_name, group_name):
- full_name = f"mcp_{server_name}_{tool_name}"
+ full_name = f"mcp:{server_name}:{tool_name}"
if full_name not in names:
names.append(full_name)
return names
diff --git a/navi/core/agent.py b/navi/core/agent.py
index a7ef200..0286234 100644
--- a/navi/core/agent.py
+++ b/navi/core/agent.py
@@ -1181,14 +1181,14 @@
for server_name, groups in mcp_servers.items():
if "*" in groups:
# All registered tools for this server
- prefix = f"mcp_{server_name}_"
+ prefix = f"mcp:{server_name}:"
for tool in self._tools.all():
if tool.name.startswith(prefix) and tool.name not in names:
names.append(tool.name)
else:
for group_name in groups:
for tool_name in self._mcp_manager.resolve_group(server_name, group_name):
- full_name = f"mcp_{server_name}_{tool_name}"
+ full_name = f"mcp:{server_name}:{tool_name}"
if full_name not in names:
names.append(full_name)
diff --git a/navi/core/name_generator.py b/navi/core/name_generator.py
index ae8bf3a..584452c 100644
--- a/navi/core/name_generator.py
+++ b/navi/core/name_generator.py
@@ -6,6 +6,7 @@
"You are a session title generator. "
"Given the user's messages from a conversation, produce ONE short title (3–6 words, no punctuation at the end). "
"The title must reflect the actual topic. "
+ "Respond in the same language as the user's messages. "
"If the messages contain no clear topic yet (e.g. only greetings, very short or ambiguous text), "
"reply with exactly: NO_TITLE"
)
diff --git a/navi/core/tool_executor.py b/navi/core/tool_executor.py
index 3ecd938..d116862 100644
--- a/navi/core/tool_executor.py
+++ b/navi/core/tool_executor.py
@@ -24,7 +24,7 @@
bare_matches = [
(candidate_name, candidate)
for candidate_name, candidate in tool_map.items()
- if candidate_name.startswith("mcp_") and candidate_name.endswith(f"_{name}")
+ if candidate_name.startswith("mcp:") and candidate_name.endswith(f":{name}")
]
if len(bare_matches) == 1:
return bare_matches[0]
@@ -33,11 +33,21 @@
normalized_matches = [
(candidate_name, candidate)
for candidate_name, candidate in tool_map.items()
- if candidate_name.startswith("mcp_") and candidate_name.replace("-", "_") == normalized
+ if candidate_name.startswith("mcp:") and candidate_name.replace("-", "_") == normalized
]
if len(normalized_matches) == 1:
return normalized_matches[0]
+ # Fallback: old underscore format like mcp_server_tool → mcp:server:tool
+ old_format_matches = [
+ (candidate_name, candidate)
+ for candidate_name, candidate in tool_map.items()
+ if candidate_name.startswith("mcp:") and name.startswith("mcp_")
+ and candidate_name.replace(":", "_") == name
+ ]
+ if len(old_format_matches) == 1:
+ return old_format_matches[0]
+
return name, None
diff --git a/navi/mcp/tools.py b/navi/mcp/tools.py
index b938894..87e9c35 100644
--- a/navi/mcp/tools.py
+++ b/navi/mcp/tools.py
@@ -10,7 +10,7 @@
class McpTool(Tool):
"""A :class:`Tool` proxy that forwards execution to an MCP server.
- The name is ``mcp__`` to avoid collisions with built-in
+ The name is ``mcp::`` to avoid collisions with built-in
and user-defined tools.
"""
@@ -27,7 +27,7 @@
self.description = description
self.parameters = parameters
self._manager = manager
- self.name = f"mcp_{server_name}_{tool_name}"
+ self.name = f"mcp:{server_name}:{tool_name}"
async def execute(self, params: dict[str, Any]) -> ToolResult:
try:
diff --git a/navi/profiles/developer/config.json b/navi/profiles/developer/config.json
index 7347827..2e70394 100644
--- a/navi/profiles/developer/config.json
+++ b/navi/profiles/developer/config.json
@@ -6,7 +6,7 @@
"full_description": {
"specialization": "Full-stack software development: writing code in any language, debugging, running tests, working with files and project structure, git, APIs, scripting. Works on the user's own projects, not Navi's internals.",
"when_to_use": "When the user wants to build something — a game, a script, an app, a web service, anything. For writing Navi tools specifically, use tool_developer instead.",
- "key_tools": "filesystem, code_exec, terminal, mcp_navi-web_search, mcp_navi-web_view, spawn_agent"
+ "key_tools": "filesystem, code_exec, terminal, mcp:navi-web:web_search, mcp:navi-web:web_view, spawn_agent"
},
"llm_backend": "ollama",
"model": [
@@ -66,7 +66,7 @@
"mcp_servers": {
"navi-web": [
"search",
- "view",
+ "browse",
"request"
]
}
diff --git a/navi/profiles/discuss/config.json b/navi/profiles/discuss/config.json
index f08bc5f..4ea327f 100644
--- a/navi/profiles/discuss/config.json
+++ b/navi/profiles/discuss/config.json
@@ -30,7 +30,7 @@
],
"navi-web": [
"search",
- "view",
+ "browse",
"request"
]
},
diff --git a/navi/profiles/discuss/system_prompt.txt b/navi/profiles/discuss/system_prompt.txt
index 3f5ddfa..53f3bd9 100644
--- a/navi/profiles/discuss/system_prompt.txt
+++ b/navi/profiles/discuss/system_prompt.txt
@@ -18,7 +18,7 @@
## Tools
-Use `mcp_navi-web_search` + `mcp_navi-web_view` when a factual grounding would strengthen the discussion — not for every question, only when currency or precision matters.
+Use `mcp:navi-web:web_search` + `mcp:navi-web:web_view` when a factual grounding would strengthen the discussion — not for every question, only when currency or precision matters.
Use project `docs/` when discussing an active project. Prefer `docs/index.md` as the map, then query specific docs rather than rereading broad source trees.
diff --git a/navi/profiles/modeler_3d/config.json b/navi/profiles/modeler_3d/config.json
index 33bb9bf..f9f3cdb 100644
--- a/navi/profiles/modeler_3d/config.json
+++ b/navi/profiles/modeler_3d/config.json
@@ -6,7 +6,7 @@
"full_description": {
"specialization": "Physically coherent 3D geometry and STL generation. Generates STL files from OpenSCAD through dedicated 3D tools, and validates with OpenSCAD compilation plus preview render inspection.",
"when_to_use": "When the user needs a physical object modeled as 3D geometry: replacement parts, mechanical assemblies, decorative items, functional prototypes, jigs, fixtures, or custom enclosures.",
- "key_tools": "spawn_agent, filesystem, mcp_navi-3d_lint_scad, mcp_navi-3d_compile_scad, mcp_navi-3d_render_stl, image_view, content_publish"
+ "key_tools": "spawn_agent, filesystem, mcp:navi-3d:lint_scad, mcp:navi-3d:compile_scad, mcp:navi-3d:render_stl, image_view, content_publish"
},
"llm_backend": "ollama",
"model": [
@@ -60,7 +60,7 @@
],
"navi-web": [
"search",
- "view",
+ "browse",
"request"
]
},
diff --git a/navi/profiles/modeler_3d/subagent_system_prompt.txt b/navi/profiles/modeler_3d/subagent_system_prompt.txt
index af8b329..3c1fd75 100644
--- a/navi/profiles/modeler_3d/subagent_system_prompt.txt
+++ b/navi/profiles/modeler_3d/subagent_system_prompt.txt
@@ -6,7 +6,7 @@
1. Read the briefing and parent session context.
2. Identify the exact missing facts requested by the parent agent.
-3. Use `mcp_navi-web_search`, `mcp_navi-web_view`, `filesystem`, and `image_view` as needed to gather evidence.
+3. Use `mcp:navi-web:web_search`, `mcp:navi-web:web_view`, `filesystem`, and `image_view` as needed to gather evidence.
4. Prefer primary sources, product pages, datasheets, manuals, dimensions in local files, or images provided by the user.
5. Return only the facts found, source paths/URLs, confidence, and unresolved gaps.
diff --git a/navi/profiles/modeler_3d/system_prompt.txt b/navi/profiles/modeler_3d/system_prompt.txt
index d9e56c2..c4e7659 100644
--- a/navi/profiles/modeler_3d/system_prompt.txt
+++ b/navi/profiles/modeler_3d/system_prompt.txt
@@ -27,9 +27,9 @@
All MCP 3D tools require the exact Navi `session_id` so files are resolved inside `session_files//`. Pass the current session ID from context.
1. **`filesystem write`** — write the OpenSCAD script (`.scad`) to the session directory.
-2. **`mcp_navi-3d_lint_scad`** — check the `.scad` source for common LLM mistakes before compiling.
-3. **`mcp_navi-3d_compile_scad`** — compile the `.scad` into a binary `.stl`.
-4. **`mcp_navi-3d_render_stl`** — generate PNG previews from several angles for your own inspection.
+2. **`mcp:navi-3d:lint_scad`** — check the `.scad` source for common LLM mistakes before compiling.
+3. **`mcp:navi-3d:compile_scad`** — compile the `.scad` into a binary `.stl`.
+4. **`mcp:navi-3d:render_stl`** — generate PNG previews from several angles for your own inspection.
5. **`image_view`** — inspect each PNG so YOU can verify geometry. PNG previews are for Navi, not for the user.
6. **`content_publish`** — publish the final STL after internal checks pass. Include `source_filename` when a real `.scad` source exists in the same session directory.
@@ -142,8 +142,8 @@
When the next step requires a tool, call the tool in the same assistant turn. Do not end a message with an announcement such as "I will now compile", "I am moving to publication", or "Next I will publish" unless you also make the required tool call in that same turn.
- If the STL is ready to publish, call `content_publish` immediately instead of saying you are going to publish it.
-- If the SCAD is ready to compile, call `mcp_navi-3d_compile_scad` immediately instead of saying you are going to compile it.
-- If the SCAD was just written or edited, call `mcp_navi-3d_lint_scad` immediately before `mcp_navi-3d_compile_scad`.
+- If the SCAD is ready to compile, call `mcp:navi-3d:compile_scad` immediately instead of saying you are going to compile it.
+- If the SCAD was just written or edited, call `mcp:navi-3d:lint_scad` immediately before `mcp:navi-3d:compile_scad`.
- If previews are ready to inspect, call `image_view` immediately instead of saying you are going to inspect them.
- Only send a text-only progress message when you are blocked, need a user decision, or are reporting a completed tool result.
@@ -154,7 +154,7 @@
- Never type, shorten, or reconstruct session IDs from memory.
- Use the exact `Session files directory` from system context or from tool output.
- Keep the `.scad`, compiled `.stl`, and preview PNGs in that same current session directory.
-- Prefer simple filenames with `mcp_navi-3d_compile_scad` when possible; the tool resolves them inside the current session directory.
+- Prefer simple filenames with `mcp:navi-3d:compile_scad` when possible; the tool resolves them inside the current session directory.
- Choose the final basename before compiling, for example `wind_turbine_blades_100mm.scad` and `wind_turbine_blades_100mm.stl`. Avoid renaming after compilation unless necessary.
- If `content_publish` returns `not_found`, read the exact directory named in its error, list that directory, then copy/move or recreate the file there before retrying. Do not keep listing or editing another `session_files/` directory.
@@ -165,12 +165,12 @@
3. **Plan physical geometry** — use `scratchpad` to store `design_plan` with scale, modules, axis convention, physical orientation, tolerances, weak points, and preview checks.
4. **Run parameter sanity check** — for functional, mechanical, or parametric fit parts, use `scratchpad` to store `parameter_sanity_check` before writing `.scad`.
5. **Write OpenSCAD yourself** — create or edit the `.scad` source with `filesystem write` or `filesystem edit`. The file must be clean, parameterized, in the session directory, and include the source comments contract.
-6. **Lint OpenSCAD** — call `scad_lint(path="...scad")` after the file exists. Fix every error before compiling. Treat warnings as reasons to inspect and revise when they affect geometry or source cleanliness.
+6. **Lint OpenSCAD** — call `mcp:navi-3d:lint_scad(session_id="...", source_path="...scad")` after the file exists. Fix every error before compiling. Treat warnings as reasons to inspect and revise when they affect geometry or source cleanliness.
7. **Research missing facts when useful** — if exact dimensions, reference images, or local documents are needed, call `spawn_agent` with a narrow research brief. Use the returned facts to update `technical_spec` or `design_plan`; do not ask the subagent to design, write, review, compile, render, or publish the model.
-8. **Compile STL** — call `model_3d(scad_path=..., output_path=...)`.
-9. **Handle compile result** — proceed only if `mcp_navi-3d_compile_scad` returns success. If it returns `openscad_compile_error`, `no_output`, `scad_not_found`, `wrong_session_dir`, or another error, fix the cause and compile again.
-10. **Render previews** — call `render_3d(source="...stl", views=["iso","front","top"])` or other relevant views.
-11. **Inspect every preview** — call `image_view` on every PNG path returned by `mcp_navi-3d_render_stl`. Do not publish PNG previews unless the user explicitly asks for preview images.
+8. **Compile STL** — call `mcp:navi-3d:compile_scad(session_id="...", source_path="...scad", output_path="...stl")`.
+9. **Handle compile result** — proceed only if `mcp:navi-3d:compile_scad` returns success. If it returns `openscad_compile_error`, `no_output`, `scad_not_found`, `wrong_session_dir`, or another error, fix the cause and compile again.
+10. **Render previews** — call `mcp:navi-3d:render_stl(session_id="...", source_path="...stl", views=["iso","front","top"])` or other relevant views.
+11. **Inspect every preview** — call `image_view` on every PNG path returned by `mcp:navi-3d:render_stl`. Do not publish PNG previews unless the user explicitly asks for preview images.
12. **Run preview checklist** — compare all inspected previews against `technical_spec` and `design_plan`. Record the checklist result in `scratchpad` section `preview_check`.
13. **Revise before publishing** — if lint, compilation output, researched facts, or preview inspection reveals a substantial issue, edit the `.scad`, lint again, recompile, re-render, and inspect again.
14. **Publish final STL** — after the model passes the geometry gate, call `content_publish(filename="...stl", content_type="stl", source_filename="...scad")`. This step is mandatory for a successful task.
@@ -206,10 +206,10 @@
- Functional, mechanical, and parametric fit parts have a `scratchpad` `parameter_sanity_check` confirming interface dimensions and formulas are internally consistent.
- The final `.stl` and `.scad` source are in the current session files directory, not another `session_files/` directory.
- The STL compiled successfully.
-- Every preview image returned by `mcp_navi-3d_render_stl` was inspected with `image_view`; inspecting only `iso` is not enough.
+- Every preview image returned by `mcp:navi-3d:render_stl` was inspected with `image_view`; inspecting only `iso` is not enough.
- `scratchpad` section `preview_check` exists and says `Revision required: no`, or records the revision that was made after a failed check.
-- OpenSCAD warnings/errors from `mcp_navi-3d_compile_scad` or `mcp_navi-3d_render_stl` were handled instead of ignored.
-- `mcp_navi-3d_lint_scad` was run on the final `.scad`, and all lint errors were fixed before compilation.
+- OpenSCAD warnings/errors from `mcp:navi-3d:compile_scad` or `mcp:navi-3d:render_stl` were handled instead of ignored.
+- `mcp:navi-3d:lint_scad` was run on the final `.scad`, and all lint errors were fixed before compilation.
- Any subagent use was limited to gathering missing factual information from web pages, local files, or images. The main agent made all modeling decisions.
- For functional fit parts, exact compatibility dimensions are either verified, provided by the user, or the artifact is explicitly labeled as a parametric template that requires user measurements.
diff --git a/navi/profiles/secretary/config.json b/navi/profiles/secretary/config.json
index 94b397b..506155c 100644
--- a/navi/profiles/secretary/config.json
+++ b/navi/profiles/secretary/config.json
@@ -6,7 +6,7 @@
"full_description": {
"specialization": "General-purpose personal assistant. Web research, document writing, data analysis, email correspondence, planning, calculations, and any everyday task that doesn't require direct server access or tool development.",
"when_to_use": "Default profile for most requests. If you're unsure which profile to use, this one is correct. Switch away only when the task clearly requires server/infrastructure access (server_admin) or modifying Navi's own tools (developer).",
- "key_tools": "mcp_navi-web_search, mcp_navi-web_view, filesystem, code_exec, gmail, todo, scratchpad, spawn_agent, memory"
+ "key_tools": "mcp:navi-web:web_search, mcp:navi-web:web_view, filesystem, code_exec, gmail, todo, scratchpad, spawn_agent, memory"
},
"llm_backend": "ollama",
"model": [
@@ -65,7 +65,7 @@
"mcp_servers": {
"navi-web": [
"search",
- "view",
+ "browse",
"request"
]
}
diff --git a/navi/profiles/secretary/system_prompt.txt b/navi/profiles/secretary/system_prompt.txt
index 4409b97..488dc14 100644
--- a/navi/profiles/secretary/system_prompt.txt
+++ b/navi/profiles/secretary/system_prompt.txt
@@ -69,11 +69,11 @@
---
## Tool priorities
-1. mcp_navi-web_search — first choice for current info, facts, documentation.
+1. mcp:navi-web:web_search — first choice for current info, facts, documentation.
2. code_exec — calculations, data processing, text parsing, format conversion.
-3. mcp_navi-web_view — view a specific page in full.
+3. mcp:navi-web:web_view — view a specific page in full.
4. filesystem — read/write local documents, notes, data files.
-5. mcp_navi-web_request — external APIs, webhooks, content not suited for search.
+5. mcp:navi-web:http_request — external APIs, webhooks, content not suited for search.
6. image_view — whenever an image path or URL is mentioned.
## Output style
diff --git a/navi/profiles/server_admin/config.json b/navi/profiles/server_admin/config.json
index 4a404cc..c797711 100644
--- a/navi/profiles/server_admin/config.json
+++ b/navi/profiles/server_admin/config.json
@@ -6,7 +6,7 @@
"full_description": {
"specialization": "Remote server operations via SSH, system diagnostics, service management, log analysis, network troubleshooting, process monitoring, and infrastructure automation.",
"when_to_use": "When the task involves SSH access to servers, running system commands, managing Linux services, analyzing logs, monitoring resources, or any hands-on infrastructure work.",
- "key_tools": "ssh_exec, terminal, filesystem, code_exec, mcp_navi-web_search, spawn_agent, memory"
+ "key_tools": "ssh_exec, terminal, filesystem, code_exec, mcp:navi-web:web_search, spawn_agent, memory"
},
"llm_backend": "ollama",
"model": [
@@ -64,7 +64,7 @@
],
"navi-web": [
"search",
- "view",
+ "browse",
"request"
]
},
diff --git a/navi/profiles/server_admin/system_prompt.txt b/navi/profiles/server_admin/system_prompt.txt
index 08ad591..419d8dd 100644
--- a/navi/profiles/server_admin/system_prompt.txt
+++ b/navi/profiles/server_admin/system_prompt.txt
@@ -46,7 +46,7 @@
6. **Synthesise** — after all agents report back, write your conclusions and next steps.
### Plan → execution binding
-- **TOOL** — direct local call (terminal, filesystem, mcp_navi-web_request for health checks).
+- **TOOL** — direct local call (terminal, filesystem, mcp:navi-web:http_request for health checks).
- **AGENT** — call `spawn_agent` for THIS STEP ONLY. One AGENT step = one spawn_agent call.
If your plan has steps 1, 2, 3 all marked AGENT — you make three separate spawn_agent calls.
Never bundle multiple steps into one call. Never pass your full plan to a single subagent.
@@ -80,8 +80,8 @@
1. ssh_exec — direct single-command checks on known hosts when spawning is overkill.
2. terminal — local machine operations.
3. filesystem — local config files, scripts.
-4. mcp_navi-web_request — health check endpoints, REST APIs.
-5. mcp_navi-web_search — error lookups, documentation.
+4. mcp:navi-web:http_request — health check endpoints, REST APIs.
+5. mcp:navi-web:web_search — error lookups, documentation.
## Execution environment
`terminal`, `filesystem`, and `code_exec` run on the LOCAL machine (where Navi's server is running) — NOT on any remote host.
diff --git a/navi/tools/reload_tools.py b/navi/tools/reload_tools.py
index 63792f3..a7a4edf 100644
--- a/navi/tools/reload_tools.py
+++ b/navi/tools/reload_tools.py
@@ -61,7 +61,7 @@
await self._mcp_manager.reload_all()
from navi.api.deps import register_mcp_tools
await register_mcp_tools(self._registry, self._mcp_manager)
- mcp_tools = [t.name for t in self._registry.all() if t.name.startswith("mcp_")]
+ mcp_tools = [t.name for t in self._registry.all() if t.name.startswith("mcp:")]
lines.append(f"MCP tools ({len(mcp_tools)}): {', '.join(mcp_tools) or 'none'}")
except Exception as exc:
has_errors = True
diff --git a/tests/unit/core/test_tool_executor.py b/tests/unit/core/test_tool_executor.py
index 8dcc719..f2ed782 100644
--- a/tests/unit/core/test_tool_executor.py
+++ b/tests/unit/core/test_tool_executor.py
@@ -9,7 +9,7 @@
class TestToolExecutorMcpAliases:
async def test_executes_bare_mcp_tool_alias(self):
registry = ToolRegistry()
- tool = FakeTool("mcp_gnexus-book_search_docs")
+ tool = FakeTool("mcp:gnexus-book:search_docs")
registry.register(tool, builtin=True)
executor = ToolExecutor(registry)
@@ -19,20 +19,35 @@
)
assert images == []
- assert messages[0].name == "mcp_gnexus-book_search_docs"
- assert messages[0].content == "executed mcp_gnexus-book_search_docs"
+ assert messages[0].name == "mcp:gnexus-book:search_docs"
+ assert messages[0].content == "executed mcp:gnexus-book:search_docs"
async def test_executes_mcp_tool_alias_with_underscore_server_name(self):
registry = ToolRegistry()
- tool = FakeTool("mcp_gnexus-book_search_docs")
+ tool = FakeTool("mcp:gnexus-book:search_docs")
registry.register(tool, builtin=True)
executor = ToolExecutor(registry)
messages, images = await executor._execute_tool_calls(
- [ToolCallRequest(id="1", name="mcp_gnexus_book_search_docs", arguments={"query": "git"})],
+ [ToolCallRequest(id="1", name="mcp:gnexus_book:search_docs", arguments={"query": "git"})],
[tool],
)
assert images == []
- assert messages[0].name == "mcp_gnexus-book_search_docs"
- assert messages[0].content == "executed mcp_gnexus-book_search_docs"
+ assert messages[0].name == "mcp:gnexus-book:search_docs"
+ assert messages[0].content == "executed mcp:gnexus-book:search_docs"
+
+ async def test_executes_old_underscore_format_fallback(self):
+ registry = ToolRegistry()
+ tool = FakeTool("mcp:gnexus-book:search_docs")
+ registry.register(tool, builtin=True)
+ executor = ToolExecutor(registry)
+
+ messages, images = await executor._execute_tool_calls(
+ [ToolCallRequest(id="1", name="mcp_gnexus-book_search_docs", arguments={"query": "git"})],
+ [tool],
+ )
+
+ assert images == []
+ assert messages[0].name == "mcp:gnexus-book:search_docs"
+ assert messages[0].content == "executed mcp:gnexus-book:search_docs"
diff --git a/tests/unit/test_mcp.py b/tests/unit/test_mcp.py
index 86f6530..f6b7424 100644
--- a/tests/unit/test_mcp.py
+++ b/tests/unit/test_mcp.py
@@ -105,7 +105,7 @@
parameters={"type": "object", "properties": {}},
manager=mock_manager,
)
- assert tool.name == "mcp_gnexus-book_search_docs"
+ assert tool.name == "mcp:gnexus-book:search_docs"
async def test_execute_success(self):
mock_manager = AsyncMock(spec=McpManager)
diff --git a/webclient/dist/assets/index-BAYNIt9f.css b/webclient/dist/assets/index-BAYNIt9f.css
new file mode 100644
index 0000000..efe4e90
--- /dev/null
+++ b/webclient/dist/assets/index-BAYNIt9f.css
@@ -0,0 +1 @@
+@charset "UTF-8";.vue-recycle-scroller__resize-observer[data-v-08cc04ab]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;pointer-events:none;z-index:-1}.vue-recycle-scroller{position:relative}.vue-recycle-scroller.direction-vertical:not(.page-mode){overflow-y:auto}.vue-recycle-scroller.direction-horizontal:not(.page-mode){overflow-x:auto}.vue-recycle-scroller.grid-mode:not(.page-mode){overflow:auto}.vue-recycle-scroller.direction-horizontal{display:flex}.vue-recycle-scroller__slot{flex:auto 0 0}.vue-recycle-scroller__item-wrapper{flex:1;box-sizing:border-box;overflow:hidden;position:relative}.vue-recycle-scroller.ready .vue-recycle-scroller__item-view{position:absolute;top:0;left:0;will-change:transform}.vue-recycle-scroller.direction-vertical .vue-recycle-scroller__item-wrapper{width:100%}.vue-recycle-scroller.direction-horizontal .vue-recycle-scroller__item-wrapper{height:100%}.vue-recycle-scroller.ready.direction-vertical .vue-recycle-scroller__item-view{width:100%}.vue-recycle-scroller.ready.direction-horizontal .vue-recycle-scroller__item-view{height:100%}.session-list-wrap[data-v-e3404414]{flex:1;overflow:hidden;display:flex;flex-direction:column}.session-scroller[data-v-e3404414]{flex:1;overflow-y:auto}.empty-sessions[data-v-e3404414]{display:flex;flex-direction:column;align-items:center;gap:8px;padding:32px 16px;color:var(--color-text-dark, #787c99);font-size:13px}.empty-sessions i[data-v-e3404414]{font-size:32px;opacity:.4}.empty-sessions p[data-v-e3404414]{margin:0}.sessions-loading[data-v-e3404414]{display:flex;align-items:center;justify-content:center;gap:10px;padding:28px 16px;color:var(--color-text-dark, #787c99);font-size:12px}.sessions-loading-more[data-v-e3404414]{padding:10px 16px 14px}.sessions-spinner[data-v-e3404414]{width:16px;height:16px;border:2px solid var(--color-border, #3b4261);border-top-color:var(--color-accent, #7aa2f7);border-radius:50%;animation:sessions-spin-e3404414 .8s linear infinite}@keyframes sessions-spin-e3404414{to{transform:rotate(360deg)}}.ptr-indicator[data-v-e3404414]{position:absolute;top:0;left:0;right:0;z-index:10;display:flex;align-items:center;justify-content:center;gap:8px;padding:8px;font-size:12px;color:var(--color-text-dark, #787c99);pointer-events:none;transition:opacity .15s,transform .15s;will-change:transform,opacity}.ptr-spinner[data-v-e3404414]{width:16px;height:16px;border:2px solid var(--color-border, #3b4261);border-top-color:var(--color-accent, #7aa2f7);border-radius:50%;transition:transform .15s}.ptr-spinning[data-v-e3404414]{animation:sessions-spin-e3404414 .8s linear infinite}.ptr-pulled[data-v-e3404414]{transition:transform .15s}@media(min-width:769px){.ptr-indicator[data-v-e3404414]{display:none}}.sidebar-close-btn[data-v-72f966ee]{display:none}@media(max-width:1280px){.sidebar-close-btn[data-v-72f966ee]{display:flex;margin-left:auto}}.sidebar-footer[data-v-72f966ee]{padding:12px 16px;border-top:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;gap:8px}.user-info[data-v-72f966ee]{display:flex;align-items:center;gap:8px;text-decoration:none;color:inherit;flex:1;min-width:0;cursor:pointer}.user-info:hover .user-name[data-v-72f966ee]{color:var(--color-text-primary)}.user-avatar[data-v-72f966ee]{width:28px;height:28px;border-radius:50%;object-fit:cover;flex-shrink:0}.user-avatar-fallback[data-v-72f966ee]{display:flex;align-items:center;justify-content:center;background:var(--color-primary);color:#fff;font-size:12px;font-weight:600}.user-name[data-v-72f966ee]{font-size:13px;color:var(--color-text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-footer-actions[data-v-72f966ee]{display:flex;align-items:center;gap:8px}.admin-link[data-v-72f966ee]{text-decoration:none}.lightbox-panel[data-v-9d2a8160]{max-width:90vw;min-height:unset;width:fit-content;cursor:default}.lightbox-body[data-v-9d2a8160]{display:flex;align-items:center;justify-content:center;padding:0;max-height:calc(90vh - 60px);overflow:hidden}.lightbox-img[data-v-9d2a8160]{display:block;max-width:100%;max-height:calc(90vh - 60px);object-fit:contain}.selection-toolbar[data-v-81606e7c]{position:fixed;transform:translate(-50%);z-index:900;pointer-events:all;background:#e0af68;color:#000}.artifacts-panel[data-v-a0310b0e]{width:var(--artifacts-width, min(600px, 42vw));min-width:var(--artifacts-width, min(600px, 42vw));max-width:var(--artifacts-width, min(600px, 42vw));display:flex;flex-direction:column;background:var(--surface, #1e1e2e);border-left:1px solid var(--border, #2a2a3e);min-height:0;margin-right:calc(-1 * var(--artifacts-width, min(600px, 42vw)));opacity:0;pointer-events:none;transform:translate(100%);position:relative;transition:margin-right .22s ease,opacity .22s ease,transform .22s ease}.artifacts-panel.is-open[data-v-a0310b0e]{margin-right:0;opacity:1;pointer-events:auto;transform:translate(0)}.artifacts-panel.is-resizing[data-v-a0310b0e]{transition:none}.artifacts-resize-handle[data-v-a0310b0e]{position:absolute;top:0;left:-4px;bottom:0;width:8px;z-index:2;cursor:col-resize;touch-action:none}.artifacts-resize-handle[data-v-a0310b0e]:after{content:"";position:absolute;top:0;left:3px;width:1px;height:100%;background:transparent;transition:background .15s ease}.artifacts-resize-handle[data-v-a0310b0e]:hover:after,.artifacts-panel.is-resizing .artifacts-resize-handle[data-v-a0310b0e]:after{background:var(--accent, #4ec9b0)}.artifacts-header[data-v-a0310b0e]{height:64px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 14px;border-bottom:1px solid var(--border, #2a2a3e)}.artifacts-title[data-v-a0310b0e]{font-size:14px;font-weight:600;color:var(--text, #cdd6f4)}.artifacts-count[data-v-a0310b0e]{margin-top:2px;font-size:12px;color:var(--text-muted, #6c7086)}.artifacts-empty[data-v-a0310b0e]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--text-muted, #6c7086);font-size:13px}.artifacts-empty i[data-v-a0310b0e]{font-size:28px}.artifacts-list[data-v-a0310b0e]{max-height:232px;overflow-y:auto;border-bottom:1px solid var(--border, #2a2a3e)}.artifact-item[data-v-a0310b0e]{width:100%;min-height:58px;display:flex;align-items:center;gap:10px;padding:10px 14px;border:0;border-left:3px solid transparent;background:transparent;color:var(--text, #cdd6f4);text-align:left;cursor:pointer}.artifact-item[data-v-a0310b0e]:hover{background:#ffffff08}.artifact-item.is-active[data-v-a0310b0e]{border-left-color:var(--accent, #4ec9b0);background:#4ec9b014}.artifact-icon[data-v-a0310b0e]{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;color:var(--accent, #4ec9b0);background:var(--accent-muted, #313244)}.artifact-info[data-v-a0310b0e]{min-width:0;flex:1;display:flex;flex-direction:column;gap:2px}.artifact-title[data-v-a0310b0e],.artifact-detail-title[data-v-a0310b0e],.artifact-detail-filename[data-v-a0310b0e]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.artifact-title[data-v-a0310b0e]{font-size:13px;font-weight:500}.artifact-meta[data-v-a0310b0e]{font-size:11px;color:var(--text-muted, #6c7086)}.artifact-detail[data-v-a0310b0e]{flex:1;min-height:0;display:flex;flex-direction:column}.artifact-detail-header[data-v-a0310b0e]{padding:12px 14px 8px}.artifact-detail-title[data-v-a0310b0e]{font-size:14px;font-weight:600;color:var(--text, #cdd6f4)}.artifact-detail-filename[data-v-a0310b0e]{margin-top:3px;font-size:12px;color:var(--text-muted, #6c7086)}.artifact-actions[data-v-a0310b0e]{display:grid;grid-template-columns:repeat(auto-fit,minmax(42px,1fr));gap:6px;padding:0 14px 12px}.artifact-action[data-v-a0310b0e]{height:32px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border, #2a2a3e);background:var(--surface-elevated, #242438);color:var(--text, #cdd6f4);text-decoration:none;cursor:pointer}.artifact-action[data-v-a0310b0e]:hover{border-color:var(--accent, #4ec9b0);color:var(--accent, #4ec9b0)}.artifact-preview[data-v-a0310b0e]{flex:1;min-height:0;border-top:1px solid var(--border, #2a2a3e);background:#11111b}.artifact-frame[data-v-a0310b0e],.artifact-image[data-v-a0310b0e],.artifact-video[data-v-a0310b0e]{width:100%;height:100%;border:0;display:block}.artifact-image[data-v-a0310b0e],.artifact-video[data-v-a0310b0e]{object-fit:contain}.artifact-source[data-v-a0310b0e]{height:100%;overflow:auto;background:#11111b}.artifact-source-code[data-v-a0310b0e],.artifact-source-error[data-v-a0310b0e]{margin:0;padding:14px;white-space:pre;font-family:IBM Plex Mono,monospace;font-size:12px;line-height:1.6;color:var(--text, #cdd6f4)}.artifact-source-error[data-v-a0310b0e]{color:var(--error, #f7768e)}.artifact-source-state[data-v-a0310b0e]{display:flex;align-items:center;gap:8px;padding:14px;color:var(--text-muted, #6c7086);font-size:12px}.artifact-no-preview[data-v-a0310b0e]{height:100%;min-height:220px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--text-muted, #6c7086);font-size:13px}.artifact-no-preview i[data-v-a0310b0e]{font-size:28px}@media(max-width:980px){.artifacts-panel[data-v-a0310b0e]{position:fixed;top:0;right:0;bottom:0;z-index:120;margin-right:0;transform:translate(100%);width:100vw;min-width:100vw;max-width:100vw}.artifacts-resize-handle[data-v-a0310b0e]{display:none}.artifacts-panel.is-open[data-v-a0310b0e]{transform:translate(0)}}@media(min-width:981px){.artifacts-close[data-v-a0310b0e]{display:none}}@media(prefers-reduced-motion:reduce){.artifacts-panel[data-v-a0310b0e]{transition:none}}.login-overlay[data-v-6939826e]{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#111;z-index:9999}.login-card[data-v-6939826e]{display:flex;flex-direction:column;align-items:center;gap:16px;padding:48px 40px;border:1px solid var(--color-border);border-radius:16px;max-width:360px;width:90%}.login-logo[data-v-6939826e]{width:64px;height:64px}.login-title[data-v-6939826e]{font-size:24px;font-weight:700;color:var(--color-text-primary);margin:0}.login-subtitle[data-v-6939826e]{font-size:14px;color:var(--color-text-secondary);margin:0}.login-btn[data-v-6939826e]{margin-top:8px;width:100%;justify-content:center}.welcome-sidebar-btn[data-v-1bfcf8dc]{display:none;position:absolute;top:12px;left:12px}@media(max-width:1280px){.welcome-sidebar-btn[data-v-1bfcf8dc]{display:flex}}.context-bar-pct[data-v-fe8d0787]{font-size:11px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--color-success);white-space:nowrap}.context-bar-pct.is-warn[data-v-fe8d0787]{color:var(--color-warning)}.context-bar-pct.is-crit[data-v-fe8d0787]{color:var(--color-error)}.btn-artifacts-toggle[data-v-09035f4f]{position:relative}.artifact-count[data-v-09035f4f]{position:absolute;top:-3px;right:-3px;min-width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;padding:0 4px;font-size:10px;line-height:1;background:var(--accent, #4ec9b0);color:#11111b}.content-card[data-v-929d4ed2]{margin:8px 0;background:var(--surface, #1e1e2e);border:1px solid var(--border, #2a2a3e);overflow:hidden}.content-card summary[data-v-929d4ed2]{display:flex;align-items:center;gap:8px;padding:10px 14px;cursor:pointer;-webkit-user-select:none;user-select:none;list-style:none}.content-card summary[data-v-929d4ed2]::-webkit-details-marker{display:none}.content-icon[data-v-929d4ed2]{font-size:1.2em;line-height:1}.content-title[data-v-929d4ed2]{flex:1;font-size:.9em;font-weight:500;color:var(--text, #cdd6f4);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.content-badge[data-v-929d4ed2]{font-size:.7em;text-transform:uppercase;padding:2px 8px;background:var(--accent-muted, #313244);color:var(--accent, #4ec9b0)}.content-actions[data-v-929d4ed2]{display:inline-flex;align-items:center;gap:4px}.content-actions a[data-v-929d4ed2],.content-actions button[data-v-929d4ed2]{width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border, #2a2a3e);background:var(--surface-elevated, #242438);color:var(--text, #cdd6f4);text-decoration:none;cursor:pointer}.content-actions a[data-v-929d4ed2]:hover,.content-actions button[data-v-929d4ed2]:hover{color:var(--accent, #4ec9b0);border-color:var(--accent, #4ec9b0)}.content-chevron[data-v-929d4ed2]{transition:transform .2s;color:var(--text-muted, #6c7086)}.content-card[open] .content-chevron[data-v-929d4ed2]{transform:rotate(180deg)}.content-body[data-v-929d4ed2]{border-top:1px solid var(--border, #2a2a3e);overflow:auto}.content-iframe[data-v-929d4ed2]{width:100%;height:300px;border:none;display:block}@media(min-width:768px){.content-iframe[data-v-929d4ed2]{height:500px}}.content-image[data-v-929d4ed2]{width:100%;max-height:60vh;object-fit:contain;cursor:zoom-in;display:block;background:var(--surface, #1e1e2e)}.content-video[data-v-929d4ed2]{width:100%;max-height:60vh;display:block;background:var(--surface, #1e1e2e)}.content-source[data-v-929d4ed2]{max-height:500px;overflow:auto;background:#11111b}.content-source-code[data-v-929d4ed2],.content-source-error[data-v-929d4ed2]{margin:0;padding:14px;white-space:pre;font-family:IBM Plex Mono,monospace;font-size:12px;line-height:1.6;color:var(--text, #cdd6f4)}.content-source-error[data-v-929d4ed2]{color:var(--error, #f7768e)}.content-source-state[data-v-929d4ed2]{display:flex;align-items:center;gap:8px;padding:14px;color:var(--text-muted, #6c7086);font-size:12px}.content-unknown[data-v-929d4ed2]{padding:24px;text-align:center;color:var(--text-muted, #6c7086);display:flex;flex-direction:column;align-items:center;gap:10px}.unknown-icon[data-v-929d4ed2]{font-size:2em;line-height:1}.unknown-name[data-v-929d4ed2]{font-size:.95em;font-weight:500;color:var(--text, #cdd6f4);word-break:break-word;max-width:100%}.unknown-open[data-v-929d4ed2]{display:inline-block;margin-top:4px;padding:6px 14px;border-radius:0;background:var(--accent-muted, #313244);color:var(--accent, #4ec9b0);text-decoration:none;font-size:.85em;font-weight:500;transition:background .15s}.unknown-open[data-v-929d4ed2]:hover{background:var(--border, #2a2a3e)}.content-card.is-stl .content-badge[data-v-929d4ed2]{color:#f5c2e7}.content-card.is-html .content-badge[data-v-929d4ed2]{color:#89b4fa}.content-card.is-svg .content-badge[data-v-929d4ed2]{color:#a6e3a1}.content-card.is-pdf .content-badge[data-v-929d4ed2]{color:#fab387}.content-card.is-image .content-badge[data-v-929d4ed2]{color:#89dceb}.content-card.is-video .content-badge[data-v-929d4ed2]{color:#f38ba8}.stream-cursor[data-v-81144451]{display:inline-block;width:2px;height:1em;background:currentColor;margin-left:2px;vertical-align:text-bottom;animation:blink-81144451 1s step-end infinite}@keyframes blink-81144451{0%,to{opacity:1}50%{opacity:0}}.msg-rate-btn[data-v-81144451]{opacity:.55;transition:opacity .15s,color .15s}.msg-rate-btn[data-v-81144451]:hover{opacity:1}.msg-rate-btn.active[data-v-81144451]{opacity:1;color:var(--accent, #4ec9b0)}.message-list-wrap[data-v-6967a257]{flex:1;min-height:0;position:relative;display:flex;flex-direction:column}.messages-group[data-v-6967a257]{display:flex;flex-direction:column;gap:32px}.scroll-to-bottom-btn[data-v-6967a257]{position:absolute;bottom:16px;right:16px;width:40px;height:40px;border-radius:50%;background:var(--color-secondary, #7aa2f7);color:var(--color-black, #1a1b2e);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:18px;box-shadow:0 2px 12px #0006;opacity:.9;transition:opacity .15s ease,transform .15s ease;z-index:10}.scroll-to-bottom-btn[data-v-6967a257]:hover{opacity:1;transform:translateY(-2px)}.scroll-btn-enter-active[data-v-6967a257],.scroll-btn-leave-active[data-v-6967a257]{transition:opacity .2s ease,transform .2s ease}.scroll-btn-enter-from[data-v-6967a257],.scroll-btn-leave-to[data-v-6967a257]{opacity:0;transform:translateY(8px)}.file-preview-image[data-v-0239fe0c]{position:relative}.file-preview-image .file-preview-remove[data-v-0239fe0c]{position:absolute;top:-4px;right:-4px;background:var(--surface-panel, #1f2335);border:1px solid var(--border-color-muted);width:18px;height:18px;display:flex;align-items:center;justify-content:center;font-size:10px;cursor:pointer;color:var(--color-text-dark)}.file-preview-image .file-preview-remove[data-v-0239fe0c]:hover{color:var(--color-error)}.reconnect-notice[data-v-8e422257]{display:flex;align-items:center;gap:6px;padding:4px 8px;font-size:12px;color:var(--color-warning, #e0af68);margin-bottom:4px}.reconnect-banner[data-v-1f31beae]{display:flex;align-items:center;gap:8px;padding:6px 16px;background:#e0af681a;border-bottom:1px solid rgba(224,175,104,.3);font-size:13px;color:var(--color-warning, #e0af68)}.app-shell[data-v-c09e29fe]{display:flex;flex:1 1 0;min-height:0;min-width:0;overflow:hidden}.sidebar-backdrop[data-v-c09e29fe]{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;z-index:99}@media(max-width:1280px){.sidebar-backdrop[data-v-c09e29fe]{display:block}}.artifacts-backdrop[data-v-c09e29fe]{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:119}@media(max-width:980px){.artifacts-backdrop[data-v-c09e29fe]{display:block}}.backdrop-fade-enter-active[data-v-c09e29fe],.backdrop-fade-leave-active[data-v-c09e29fe]{transition:opacity .18s ease}.backdrop-fade-enter-from[data-v-c09e29fe],.backdrop-fade-leave-to[data-v-c09e29fe]{opacity:0}@font-face{font-family:IBM Plex Mono;src:url(/assets/fonts/IBM_Plex_Mono/IBMPlexMono-Regular.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/assets/fonts/IBM_Plex_Mono/IBMPlexMono-Medium.ttf) format("truetype");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/assets/fonts/IBM_Plex_Mono/IBMPlexMono-SemiBold.ttf) format("truetype");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/assets/fonts/IBM_Plex_Mono/IBMPlexMono-Bold.ttf) format("truetype");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/assets/fonts/IBM_Plex_Mono/IBMPlexMono-Italic.ttf) format("truetype");font-weight:400;font-style:italic;font-display:swap}.container{padding:18px}.section{margin-bottom:48px}.section-title,.block{margin-bottom:34px}.block-title{margin-bottom:22px}p,.text{margin-bottom:15px}.hint{margin-top:8px}.list{padding-left:22px;margin-bottom:15px}.list-item{margin-bottom:8px}.list-nested{margin-top:8px}.table{margin-bottom:22px}.table-caption{margin-bottom:8px}.form-group{margin-bottom:15px}.label{margin-bottom:5px;display:block}.input,.textarea,.select{margin-top:5px}.toast{padding:15px}.toast-stack{gap:8px}@keyframes terminal_scan_x{0%{transform:translate(-120%)}to{transform:translate(220%)}}@keyframes terminal_scan_y{0%{transform:translateY(-120%)}to{transform:translateY(220%)}}@keyframes terminal_pulse{0%,to{box-shadow:0 0 #c0caf500}50%{box-shadow:0 0 0 4px #c0caf52e}}@keyframes panel_boot{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes overlay_reveal{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes tooltip_reveal{0%{opacity:0;transform:translate(-50%) translateY(5px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}html{font-size:100%}body{font-family:IBM Plex Mono,monospace;font-size:15px;font-weight:400;line-height:1.6;letter-spacing:0;color:#c0caf5}h1,h2,h3,h4,h5,h6{font-family:IBM Plex Mono,monospace;font-weight:600;line-height:1.25;margin:0}h1.contrast,h2.contrast,h3.contrast,h4.contrast,h5.contrast,h6.contrast{background:#c0caf5;color:#16161e;display:inline;padding:0 8px}h1{font-size:34px;letter-spacing:0}h2{font-size:26px}h3{font-size:22px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px;font-weight:500}.text,p{font-size:15px;line-height:1.6}.text-sm{font-size:13px;line-height:1.4}.text-lg{font-size:16px;line-height:1.6}.text-lead{max-width:760px;color:#c0caf5;font-size:16px;font-weight:500;line-height:1.6}.text-muted{font-size:13px;color:#787c99}.text-strong,strong{font-weight:600}.text-bold{font-weight:700}.text-italic,em{font-style:italic}.text-success{color:#9ece6a}.text-warning{color:#e0af68}.text-danger,.text-error{color:#f7768e}.text-info{color:#bb9af7}.eyebrow{display:inline-flex;width:max-content;max-width:100%;padding:5px 8px;color:#16161e;background:#7aa2f7;font-size:12px;font-weight:700;line-height:1;text-transform:uppercase}.caption{color:#787c99;font-size:12px;line-height:1.4}code,pre,.code{font-family:IBM Plex Mono,monospace;font-size:15px;line-height:1.4;background-color:#1f2335}.text-primary{color:#c0caf5}.text-secondary{color:#a9b1d6}pre{font-size:15px;line-height:1.6;white-space:pre-wrap}pre code,.code{tab-size:2;-moz-tab-size:2}.code{display:inline-flex;padding:0 5px;color:#7aa2f7;border:2px solid rgba(122,162,247,.24)}.kbd{display:inline-flex;align-items:center;min-height:24px;padding:0 8px;border:2px solid rgba(192,202,245,.24);border-bottom-color:#7aa2f7;color:#c0caf5;background:#c0caf50b;font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:700;line-height:1;text-transform:uppercase}.quote{max-width:760px;margin:0;padding:15px;border:2px solid rgba(192,202,245,.24);border-left-width:6px;color:#a9b1d6;background:#c0caf50b;font-size:15px;line-height:1.6}.quote cite{display:block;margin-top:12px;color:#7aa2f7;font-size:13px;font-style:normal;text-transform:uppercase}a{font-weight:500;text-decoration:none;color:#7aa2f7}@media(hover:hover)and (pointer:fine){a:hover{color:#e0af68}}@media(hover:none)and (pointer:coarse){a:active{color:#e0af68}}.link{font-size:inherit;font-weight:500}.label{font-size:13px;font-weight:500;line-height:1.4}.hint,.meta{font-size:12px;line-height:1.4}.table{font-size:13px;line-height:1.4}.table th{font-weight:600}.table td{font-weight:400}.list{font-size:15px;line-height:1.6}.list-item{font-size:inherit}.modal-title{font-size:20px;font-weight:600}.modal-body{font-size:15px}.toast-title{font-size:14px;font-weight:600}.toast-text{font-size:13px;line-height:1.4}.palette{display:flex;flex-direction:row;flex-wrap:wrap;gap:8px}.palette .color .color-box{width:92px;height:68px}body .bg-primary{background:#c0caf5}body .bg-secondary{background:#7aa2f7}body .bg-success{background:#9ece6a}body .bg-accent{background:#ff9e64}body .bg-info{background:#bb9af7}body .bg-warning{background:#e0af68}body .bg-error{background:#f7768e}body .text-color-primary{color:#c0caf5}body .text-color-secondary{color:#7aa2f7}body .text-color-success{color:#9ece6a}body .text-color-accent{color:#ff9e64}body .text-color-info{color:#bb9af7}body .text-color-warning{color:#e0af68}body .text-color-error{color:#f7768e}.loader{width:32px;aspect-ratio:1;--c:no-repeat linear-gradient(#FF3C00 0 0);background:var(--c) 0 0,var(--c) 0 100%,var(--c) 50% 0,var(--c) 50% 100%,var(--c) 100% 0,var(--c) 100% 100%;animation:l12 1s infinite}@keyframes l12{0%,to{background-size:20% 50%}16.67%{background-size:20% 30%,20% 30%,20% 50%,20% 50%,20% 50%,20% 50%}33.33%{background-size:20% 30%,20% 30%,20% 30%,20% 30%,20% 50%,20% 50%}50%{background-size:20% 30%,20% 30%,20% 30%,20% 30%,20% 30%,20% 30%}66.67%{background-size:20% 50%,20% 50%,20% 30%,20% 30%,20% 30%,20% 30%}83.33%{background-size:20% 50%,20% 50%,20% 50%,20% 50%,20% 30%,20% 30%}}.circle-loader{display:flex;flex-direction:row;align-items:center;gap:8px}.circle-loader .ph,.circle-loader .ph-bold{font-size:26px;transform-origin:50% 50%;animation:icon_spin 1.2s linear infinite}.progress{display:flex;flex-direction:column;gap:8px;width:100%;max-width:640px}.progress .progress-header{display:flex;align-items:center;justify-content:space-between;gap:12px;color:#a9b1d6;font-size:13px;font-weight:600;text-transform:uppercase}.progress .progress-value{color:#c0caf5;font-family:IBM Plex Mono,monospace}.progress .progress-track{position:relative;width:100%;height:18px;overflow:hidden;border:2px solid rgba(192,202,245,.24);background:#c0caf50b}.progress .progress-bar{display:block;position:relative;overflow:hidden;width:var(--progress-value, 0%);height:100%;background:#7aa2f7;transition:width .28s ease}.progress.progress-success .progress-bar{background:#9ece6a}.progress.progress-warning .progress-bar{background:#e0af68}.progress.progress-danger .progress-bar,.progress.progress-error .progress-bar{background:#f7768e}.progress.progress-striped .progress-bar{background-image:repeating-linear-gradient(90deg,transparent 0,transparent 14px,rgba(22,22,30,.2) 14px,rgba(22,22,30,.2) 16px)}.progress.progress-animated .progress-bar:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;width:48%;background:linear-gradient(90deg,transparent,rgba(192,202,245,.28),transparent);transform:translate(-120%);animation:progress_scan 1.4s ease infinite}.usage-meter{display:grid;gap:12px;width:100%;max-width:420px;padding:15px;border:2px solid rgba(192,202,245,.24);border-left-width:6px;background:#c0caf50b}.usage-meter .usage-meter-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0;font-size:16px;font-weight:700;line-height:1;text-transform:uppercase}.usage-meter .usage-meter-value{color:#7aa2f7;font-family:IBM Plex Mono,monospace;font-size:13px}.usage-meter .usage-meter-meta{margin:0;color:#a9b1d6;font-size:13px;line-height:1.4}.progress-stages{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;width:100%;max-width:720px}.progress-stages .progress-stage{min-height:42px;padding:8px 12px;border:2px solid rgba(192,202,245,.24);color:#787c99;background:#c0caf50b;font-size:13px;font-weight:600;line-height:1.4;text-transform:uppercase}.progress-stages .progress-stage-complete{color:#16161e;background:#9ece6a;border-color:#9ece6a}.progress-stages .progress-stage-current{color:#16161e;background:#e0af68;border-color:#e0af68}@media(max-width:767px){.progress-stages{grid-template-columns:1fr 1fr}}@media(max-width:479px){.progress-stages{grid-template-columns:1fr}}@keyframes progress_scan{0%{transform:translate(-120%)}to{transform:translate(220%)}}@keyframes icon_spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:46px;font-family:IBM Plex Mono,monospace;font-size:15px;font-weight:600;line-height:1;letter-spacing:.04em;padding:12px 22px;border-radius:0;border-width:2px;border-left-width:6px;border-style:solid;border-color:#c0caf5;text-transform:uppercase;background-color:transparent;cursor:pointer;transition-duration:.2s;transition-timing-function:ease;transition-property:background-color,border-color,color,opacity}.btn:focus-visible{outline:2px solid #E0AF68;outline-offset:3px}.btn.with-icon{border-left-width:46px;position:relative}.btn.with-icon .ph,.btn.with-icon .ph-bold{position:absolute;color:#16161e;left:-46px;top:1px;font-size:26px;height:100%;display:inline-flex;align-items:center;width:46px;justify-content:center;transition-duration:.2s;transition-property:color,left}@media(hover:hover)and (pointer:fine){.btn:hover.with-icon:not(.loading-state):not(.btn-small) .ph,.btn:hover.with-icon:not(.loading-state):not(.btn-small) .ph-bold{left:-28px}}@media(hover:none)and (pointer:coarse){.btn:active.with-icon:not(.loading-state):not(.btn-small) .ph,.btn:active.with-icon:not(.loading-state):not(.btn-small) .ph-bold{left:-28px}}.btn.btn-primary{color:#c0caf5;border-color:#c0caf5}@media(hover:hover)and (pointer:fine){.btn.btn-primary:hover{background-color:#c0caf5;color:#16161e}}@media(hover:none)and (pointer:coarse){.btn.btn-primary:active{background-color:#c0caf5;color:#16161e}}.btn.btn-secondary{color:#7aa2f7;border-color:#7aa2f7}@media(hover:hover)and (pointer:fine){.btn.btn-secondary:hover{background-color:#7aa2f7;color:#16161e}.btn.btn-secondary:hover.with-icon .ph,.btn.btn-secondary:hover.with-icon .ph-bold{color:#16161e}}@media(hover:none)and (pointer:coarse){.btn.btn-secondary:active{background-color:#7aa2f7;color:#16161e}.btn.btn-secondary:active.with-icon .ph,.btn.btn-secondary:active.with-icon .ph-bold{color:#16161e}}.btn.btn-accent{color:#ff9e64;border-color:#ff9e64}@media(hover:hover)and (pointer:fine){.btn.btn-accent:hover{background-color:#ff9e64;color:#16161e}.btn.btn-accent:hover.with-icon .ph,.btn.btn-accent:hover.with-icon .ph-bold{color:#16161e}}@media(hover:none)and (pointer:coarse){.btn.btn-accent:active{background-color:#ff9e64;color:#16161e}.btn.btn-accent:active.with-icon .ph,.btn.btn-accent:active.with-icon .ph-bold{color:#16161e}}.btn.btn-danger{color:#f7768e;border-color:#f7768e}@media(hover:hover)and (pointer:fine){.btn.btn-danger:hover{background-color:#f7768e;color:#16161e}}@media(hover:none)and (pointer:coarse){.btn.btn-danger:active{background-color:#f7768e;color:#16161e}}.btn.btn-warning{color:#e0af68;border-color:#e0af68}@media(hover:hover)and (pointer:fine){.btn.btn-warning:hover{background-color:#e0af68;color:#16161e}}@media(hover:none)and (pointer:coarse){.btn.btn-warning:active{background-color:#e0af68;color:#16161e}}.btn.btn-success{color:#9ece6a;border-color:#9ece6a}@media(hover:hover)and (pointer:fine){.btn.btn-success:hover{background-color:#9ece6a;color:#16161e}}@media(hover:none)and (pointer:coarse){.btn.btn-success:active{background-color:#9ece6a;color:#16161e}}.btn.btn-info{color:#bb9af7;border-color:#bb9af7}@media(hover:hover)and (pointer:fine){.btn.btn-info:hover{background-color:#bb9af7;color:#16161e}.btn.btn-info:hover.with-icon .ph,.btn.btn-info:hover.with-icon .ph-bold{color:#16161e}}@media(hover:none)and (pointer:coarse){.btn.btn-info:active{background-color:#bb9af7;color:#16161e}.btn.btn-info:active.with-icon .ph,.btn.btn-info:active.with-icon .ph-bold{color:#16161e}}.btn[disabled]:not(.loading-state){color:#787c99;border-color:#c0caf53d;background-color:#1f2335;cursor:not-allowed;opacity:.72}.btn[disabled]:not(.loading-state).with-icon .ph,.btn[disabled]:not(.loading-state).with-icon .ph-bold{color:#787c99}@media(hover:hover)and (pointer:fine){.btn[disabled]:not(.loading-state):hover{background-color:#1f2335;color:#787c99}.btn[disabled]:not(.loading-state):hover.with-icon .ph,.btn[disabled]:not(.loading-state):hover.with-icon .ph-bold{color:#787c99}}@media(hover:none)and (pointer:coarse){.btn[disabled]:not(.loading-state):active{background-color:#1f2335;color:#787c99}.btn[disabled]:not(.loading-state):active.with-icon .ph,.btn[disabled]:not(.loading-state):active.with-icon .ph-bold{color:#787c99}}.btn[disabled]:not(.loading-state).with-icon:not(.btn-small) .ph,.btn[disabled]:not(.loading-state).with-icon:not(.btn-small) .ph-bold{left:-28px}.btn.btn-small{font-size:13px;font-weight:500;min-height:38px;padding:8px}.btn.btn-small.with-icon{border-left-width:32px}.btn.btn-small.with-icon .ph,.btn.btn-small.with-icon .ph-bold{top:0;left:-40px;font-size:22px}.btn.btn-small.with-icon.loading-state .ph,.btn.btn-small.with-icon.loading-state .ph-bold{font-size:26px}.btn.btn-large{font-size:16px;font-weight:700;min-height:54px;padding:15px 48px}.btn.loading-state{color:#16161e!important;border-color:#c0caf5!important;background-color:#c0caf5!important}.btn.loading-state .ph,.btn.loading-state .ph-bold{font-size:26px;transform-origin:50% 50%;animation:icon_spin 1.2s linear infinite}.btn-icon{display:flex;justify-content:center;align-items:center;width:38px;height:38px;background:transparent;color:#c0caf5;font-size:22px;border:2px solid transparent;cursor:pointer;transition-duration:.2s;transition-timing-function:ease;transition-property:color,background,border-color}.btn-icon:focus-visible{outline:2px solid #E0AF68;outline-offset:3px}.btn-icon .ph{transform:rotate(0);transition-duration:.2s;transition-property:transform}@media(hover:hover)and (pointer:fine){.btn-icon:not(.without-hover):hover{color:#e0af68;border-color:#e0af68}.btn-icon:not(.without-hover):hover .ph{transform:rotate(90deg)}}@media(hover:none)and (pointer:coarse){.btn-icon:not(.without-hover):active{color:#e0af68;border-color:#e0af68}.btn-icon:not(.without-hover):active .ph{transform:rotate(90deg)}}.form-group{width:100%;max-width:600px}.form-group .label{display:flex;flex-direction:column;font-size:15px;width:100%;position:relative}.form-group .label>.ph{position:absolute;color:#c0caf5;left:0;bottom:1px;font-size:26px;height:54px;display:inline-flex;align-items:center;width:46px;justify-content:center;transition-duration:.2s;transition-property:color,left}.form-group .label .input{min-height:54px;font-family:IBM Plex Mono,monospace;font-size:15px;font-weight:500;line-height:1;letter-spacing:.04em;padding:12px 22px;margin-top:8px;border-radius:0;border-width:2px;border-bottom-width:6px;border-style:solid;border-color:#c0caf5;color:#c0caf5;background-color:#c0caf50b;transition-duration:.2s;transition-timing-function:ease;transition-property:background-color,border-color,color}@media(hover:hover)and (pointer:fine){.form-group .label .input:hover{border-bottom-color:#787c99}}@media(hover:none)and (pointer:coarse){.form-group .label .input:active{border-bottom-color:#787c99}}.form-group .label .input:focus{outline:2px solid #E0AF68;outline-offset:3px;border-color:#7aa2f7;background-color:transparent}.form-group .label .input:disabled{color:#787c99;border-color:#c0caf53d;background:#1f2335;cursor:not-allowed;opacity:.72}.form-group .label .input[readonly]{color:#a9b1d6;border-color:#c0caf53d;background:#c0caf508}.form-group .label .input::placeholder{color:#787c99}.form-group .label .input::-webkit-search-cancel-button,.form-group .label .input::-webkit-search-decoration,.form-group .label .input::-webkit-search-results-button,.form-group .label .input::-webkit-search-results-decoration{display:none;-webkit-appearance:none}.form-group .label .input[type=date],.form-group .label .input[type=time],.form-group .label .input[type=datetime-local],.form-group .label .input[type=month]{color-scheme:dark;cursor:pointer;min-width:0;padding-right:46px;text-transform:uppercase}.form-group .label .input[type=date]::-webkit-calendar-picker-indicator,.form-group .label .input[type=time]::-webkit-calendar-picker-indicator,.form-group .label .input[type=datetime-local]::-webkit-calendar-picker-indicator,.form-group .label .input[type=month]::-webkit-calendar-picker-indicator{width:46px;height:100%;margin:0;padding:0;background:transparent;cursor:pointer;opacity:0}.form-group .label .input[type=date]::-webkit-datetime-edit,.form-group .label .input[type=time]::-webkit-datetime-edit,.form-group .label .input[type=datetime-local]::-webkit-datetime-edit,.form-group .label .input[type=month]::-webkit-datetime-edit{padding:0}.form-group .label .input[type=date]::-webkit-datetime-edit-fields-wrapper,.form-group .label .input[type=time]::-webkit-datetime-edit-fields-wrapper,.form-group .label .input[type=datetime-local]::-webkit-datetime-edit-fields-wrapper,.form-group .label .input[type=month]::-webkit-datetime-edit-fields-wrapper{color:#c0caf5}.form-group .label textarea.input{height:108px;line-height:1.25;resize:none}.form-group .label .ph+.input,.form-group .label .ph+.select-wrap .select{padding-left:46px}.form-group .label .select-wrap{margin-top:8px}.form-group .label .select{width:100%;height:54px;margin-top:0;appearance:none;-webkit-appearance:none;-moz-appearance:none}.form-group .label .select:focus{outline:none}.form-group .label .select option{color:#c0caf5;background:#1f2335}.form-group .label .select-wrap:after{content:"";position:absolute;right:22px;bottom:18px;transform:translateY(-50%);width:0;height:0;border-left:8px solid transparent;border-right:8px solid transparent;border-top:10px solid #C0CAF5;pointer-events:none}.form-group .label.error .input:not(:focus){border-color:#f7768e}.form-group .label.error+.input-info{color:#e0af68}.form-group .label.success .input:not(:focus){border-color:#9ece6a}.form-group .label.success+.input-info{color:#9ece6a}.form-group .label.warning .input:not(:focus){border-color:#e0af68}.form-group .label.warning+.input-info{color:#e0af68}.form-group .input-info{font-size:14px;margin-top:8px}.form-group .input-info .ph{position:relative;top:1px}.form-group .input-info.error{color:#e0af68}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px;width:100%;max-width:760px}.fieldset{width:100%;max-width:760px;margin:0;padding:18px;border:2px solid rgba(192,202,245,.24);border-left-width:6px;background:#c0caf50b}.legend{padding:5px 8px;color:#16161e;background:#c0caf5;font-size:13px;font-weight:700;line-height:1;text-transform:uppercase}.file-upload{display:inline-flex;align-items:center;gap:8px;min-height:46px;padding:8px 12px;border:2px solid #7AA2F7;border-left-width:6px;color:#7aa2f7;background:#c0caf50b;font-size:13px;font-weight:700;text-transform:uppercase;cursor:pointer;transition-duration:.2s;transition-timing-function:ease;transition-property:color,background,border-color}.file-upload input[type=file]{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media(hover:hover)and (pointer:fine){.file-upload:hover{color:#16161e;background:#7aa2f7}}@media(hover:none)and (pointer:coarse){.file-upload:active{color:#16161e;background:#7aa2f7}}.file-upload:focus-within{outline:2px solid #E0AF68;outline-offset:3px}.file-upload-panel{width:100%;max-width:760px;background:#c0caf50b;border:2px solid rgba(192,202,245,.24);border-left-width:6px}.file-upload-form{display:flex;flex-direction:column;gap:15px;margin:0}.file-upload-header{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;padding:15px 15px 0}.file-upload-heading{display:flex;flex-direction:column;gap:5px;min-width:0}.file-upload-title{margin:0;color:#c0caf5;font-size:16px;font-weight:700;line-height:1.25;text-transform:uppercase}.file-upload-description{margin:0;color:#a9b1d6;font-size:13px;line-height:1.6}.file-upload-dropzone{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:15px;margin:0 15px;padding:18px;border:2px dashed #7AA2F7;background:#7aa2f714;cursor:pointer;transition-duration:.2s;transition-timing-function:ease;transition-property:background,border-color}.file-upload-dropzone input[type=file]{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media(hover:hover)and (pointer:fine){.file-upload-dropzone:hover{border-color:#c0caf5;background:#c0caf51a}}@media(hover:none)and (pointer:coarse){.file-upload-dropzone:active{border-color:#c0caf5;background:#c0caf51a}}.file-upload-dropzone:focus-within{outline:2px solid #E0AF68;outline-offset:3px}.file-upload-icon{display:inline-flex;align-items:center;justify-content:center;width:54px;height:54px;color:#16161e;background:#7aa2f7;font-size:26px}.file-upload-body{display:flex;flex-direction:column;gap:5px;min-width:0}.file-upload-primary{color:#c0caf5;font-size:15px;font-weight:700;line-height:1.25;text-transform:uppercase}.file-upload-secondary{color:#a9b1d6;font-size:13px;line-height:1.4}.file-upload-preview{display:grid;grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:12px;margin:0 15px}.file-upload-preview[hidden]{display:none}.file-upload-preview-item{position:relative;min-width:0;margin:0;border:2px solid rgba(192,202,245,.24);background:#c0caf50b}.file-upload-preview-remove{position:absolute;top:8px;right:8px;z-index:1;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:2px solid #F7768E;color:#f7768e;background:#1f2335;font-size:18px;cursor:pointer;transition-duration:.2s;transition-timing-function:ease;transition-property:color,background,border-color}@media(hover:hover)and (pointer:fine){.file-upload-preview-remove:hover{color:#16161e;background:#f7768e}}@media(hover:none)and (pointer:coarse){.file-upload-preview-remove:active{color:#16161e;background:#f7768e}}.file-upload-preview-remove:focus-visible{outline:2px solid #E0AF68;outline-offset:3px}.file-upload-preview-visual{display:flex;align-items:center;justify-content:center;aspect-ratio:1;background:#1f2335}.file-upload-preview-visual img{display:block;width:100%;height:100%;object-fit:cover}.file-upload-preview-type{display:inline-flex;align-items:center;justify-content:center;min-width:54px;min-height:54px;padding:8px;color:#16161e;background:#7aa2f7;font-size:13px;font-weight:700;line-height:1;text-transform:uppercase}.file-upload-preview-item figcaption{display:flex;flex-direction:column;gap:5px;overflow:hidden;padding:8px}.file-upload-preview-name{overflow:hidden;color:#c0caf5;font-size:12px;font-weight:700;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}.file-upload-preview-meta{color:#a9b1d6;font-size:12px;font-weight:700;line-height:1.25;text-transform:uppercase}.file-upload-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;padding:0 15px 15px}.range{width:100%;max-width:600px;accent-color:#7AA2F7}.range input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:46px;margin:0;background:transparent;cursor:pointer}.range input[type=range]::-webkit-slider-runnable-track{height:6px;background:#c0caf516;border:2px solid rgba(192,202,245,.24)}.range input[type=range]::-webkit-slider-thumb{width:18px;height:38px;margin-top:-19px;border:2px solid #7AA2F7;background:#7aa2f7;-webkit-appearance:none}.range input[type=range]::-moz-range-track{height:6px;background:#c0caf516;border:2px solid rgba(192,202,245,.24)}.range input[type=range]::-moz-range-thumb{width:18px;height:38px;border:2px solid #7AA2F7;border-radius:0;background:#7aa2f7}@media(max-width:767px){.form-grid{grid-template-columns:1fr}.file-upload-header{flex-direction:column;align-items:stretch}.file-upload-dropzone{grid-template-columns:1fr}.file-upload-actions{justify-content:stretch}.file-upload-actions .btn{width:100%}}.radio{display:inline-flex;flex-direction:row;gap:8px;align-items:center}.radio input[type=radio]{display:none}.radio .radio-control{display:inline-block;border-radius:100%;border:2px solid #C0CAF5;width:18px;height:18px;background:transparent;transition-duration:.2s;transition-property:background,border-color}@media(hover:hover)and (pointer:fine){.radio:hover .radio-control{background:#414868}}@media(hover:none)and (pointer:coarse){.radio:active .radio-control{background:#414868}}.radio input[type=radio]:checked+.radio-control{background:#c0caf5}.radio input[type=radio]:disabled+.radio-control{background:#414868;border-color:#414868}.radio input[type=radio]:focus-visible+.radio-control{outline:2px solid #E0AF68;outline-offset:3px}.radio .radio-label{font-size:15px}.checkbox{display:inline-flex;flex-direction:row;gap:8px;align-items:center}.checkbox input[type=checkbox]{display:none}.checkbox .checkbox-control{height:16px;width:32px;border:2px solid #C0CAF5;position:relative;background:transparent;transition-duration:.2s;transition-property:border-color,background;display:block}.checkbox .checkbox-control:before{content:"";display:block;height:20px;width:20px;background:#c0caf5;position:absolute;left:-5px;top:-5px;transition-duration:.2s;transition-property:left,background}@media(hover:hover)and (pointer:fine){.checkbox:hover .checkbox-control{background:#414868}}@media(hover:none)and (pointer:coarse){.checkbox:active .checkbox-control{background:#414868}}.checkbox input[type=checkbox]:checked:not(:disabled)+.checkbox-control{background:#7aa2f7;border-color:#7aa2f7}.checkbox input[type=checkbox]:checked+.checkbox-control:before{left:17px}.checkbox input[type=checkbox]:disabled+.checkbox-control{border-color:#414868}.checkbox input[type=checkbox]:focus-visible+.checkbox-control{outline:2px solid #E0AF68;outline-offset:3px}.checkbox input[type=checkbox]:disabled+.checkbox-control:before{background:#414868}.input-group{display:flex;align-items:stretch;width:100%;max-width:600px;min-height:54px;border:2px solid #C0CAF5;border-bottom-width:6px;background:#c0caf50b;transition-duration:.2s;transition-timing-function:ease;transition-property:border-color,background}.input-group:focus-within{outline:2px solid #E0AF68;outline-offset:3px;border-color:#7aa2f7;background:transparent}.input-group .input-group-addon,.input-group .input-group-action{display:inline-flex;align-items:center;justify-content:center;min-width:54px;padding:0 12px;color:#a9b1d6;background:#c0caf50b;border:0;font-family:IBM Plex Mono,monospace;font-size:13px;font-weight:600;text-transform:uppercase}.input-group .input-group-action{color:#c0caf5;cursor:pointer;transition-duration:.2s;transition-timing-function:ease;transition-property:color,background}@media(hover:hover)and (pointer:fine){.input-group .input-group-action:hover{color:#16161e;background:#e0af68}}@media(hover:none)and (pointer:coarse){.input-group .input-group-action:active{color:#16161e;background:#e0af68}}.input-group .input-group-input{flex:1 1 auto;min-width:0;border:0;padding:12px 15px;color:#c0caf5;background:transparent;font-family:IBM Plex Mono,monospace;font-size:15px;font-weight:500;letter-spacing:.04em}.input-group .input-group-input:focus{outline:none}.input-group .input-group-input::placeholder{color:#787c99}.input-group .input-group-input::-webkit-search-cancel-button,.input-group .input-group-input::-webkit-search-decoration,.input-group .input-group-input::-webkit-search-results-button,.input-group .input-group-input::-webkit-search-results-decoration{display:none;-webkit-appearance:none}.input-group .ph,.input-group .ph-bold{font-size:22px}.input-group.input-group-compact{min-height:46px}.input-group.input-group-compact .input-group-addon,.input-group.input-group-compact .input-group-action{min-width:46px}.input-group.input-group-compact .input-group-input{padding:8px 12px;font-size:13px}.search-field{max-width:420px}.list{display:flex;flex-direction:column;gap:5px;list-style-type:none;padding-left:0}.list .list-item{display:flex;flex-direction:row;align-items:center;gap:8px;margin-left:0}.list.list-ordered{list-style-type:decimal;display:list-item;margin-left:30px}.list.list-ordered .list-item{display:list-item}.list.list-definition{width:100%;max-width:620px;gap:0;border:2px solid rgba(192,202,245,.24);border-left-width:6px;background:#c0caf50b}.list.list-definition .list-row{display:grid;grid-template-columns:minmax(120px,.32fr) minmax(0,1fr);gap:15px;align-items:start;padding:12px 15px;border-bottom:2px solid rgba(192,202,245,.08);transition-duration:.2s;transition-timing-function:ease;transition-property:background,border-color}.list.list-definition .list-row .list-term{display:inline-flex;width:max-content;max-width:100%;margin:0;padding:5px 8px;color:#16161e;background:#c0caf5;font-size:13px;font-weight:700;line-height:1;text-transform:uppercase;transition-duration:.2s;transition-timing-function:ease;transition-property:background,transform}.list.list-definition .list-row .list-desc{margin:0;color:#a9b1d6;font-size:13px;line-height:1.6;transition-duration:.2s;transition-timing-function:ease;transition-property:color,transform}.list.list-definition .list-row:last-child{border-bottom:0}@media(hover:hover)and (pointer:fine){.list.list-definition .list-row:hover{background:#c0caf516}.list.list-definition .list-row:hover .list-term{background:#7aa2f7;transform:translate(5px)}.list.list-definition .list-row:hover .list-desc{color:#c0caf5;transform:translate(5px)}}@media(hover:none)and (pointer:coarse){.list.list-definition .list-row:active{background:#c0caf516}.list.list-definition .list-row:active .list-term{background:#7aa2f7;transform:translate(5px)}.list.list-definition .list-row:active .list-desc{color:#c0caf5;transform:translate(5px)}}.list.list-nav{max-width:420px;width:100%;gap:0}.list.list-nav .list-item{display:flex;flex-direction:column;align-items:flex-start;height:50px;margin:0}.list.list-nav .list-item .list-action{display:flex;justify-content:space-between;align-items:center;width:100%;height:100%;padding:8px 12px;border:2px solid transparent;font-size:15px;background:#1f2335;color:inherit;cursor:pointer;transition-duration:.2s;transition-timing-function:ease;transition-property:background,border-color,color}.list.list-nav .list-item .list-action:focus-visible{outline:2px solid #E0AF68;outline-offset:3px}@media(hover:hover)and (pointer:fine){.list.list-nav .list-item .list-action:hover{background:#7aa2f7;color:#16161e}}@media(hover:none)and (pointer:coarse){.list.list-nav .list-item .list-action:active{background:#7aa2f7;color:#16161e}}.list.list-nav .list-item .list-action .list-label{display:flex;flex-direction:row;gap:8px;align-items:center;letter-spacing:0;font-weight:400}.list.list-nav .list-item .list-action .list-meta{padding:8px;background:#9ece6a;color:#16161e;display:flex}.list.list-nav .list-item.list-item-active .list-action{background:#7aa2f7;color:#16161e;border-color:#7aa2f7}.list.list-actions{width:100%;max-width:420px;gap:22px}.list.list-actions .list-item{justify-content:space-between;align-items:flex-start;padding:12px 0;border-bottom:2px solid rgba(192,202,245,.08)}.list.list-actions .list-item .list-content{display:flex;flex-direction:column;gap:8px}.list.list-actions .list-item .list-content .list-title{font-size:16px;line-height:1}.list.list-actions .list-item .list-content .list-subtitle{color:#787c99}@media(hover:hover)and (pointer:fine){.list.list-actions .list-item:hover .list-title{color:#7aa2f7}}@media(hover:none)and (pointer:coarse){.list.list-actions .list-item:active .list-title{color:#7aa2f7}}@media(max-width:479px){.list.list-definition .list-row{grid-template-columns:1fr;gap:8px}}.badge{position:relative;overflow:hidden;background:#c0caf5;color:#16161e;padding:5px 8px;font-size:13px;font-weight:600;line-height:1;letter-spacing:.04em;text-transform:uppercase;display:inline-flex;align-items:center;min-height:24px;transition-duration:.2s;transition-timing-function:ease;transition-property:filter,transform,border-color,color,background}.badge:after{content:"";position:absolute;inset:0 auto 0 0;width:40%;background:linear-gradient(90deg,transparent,rgba(22,22,30,.16),transparent);opacity:0;pointer-events:none;transform:translate(-120%)}@media(hover:hover)and (pointer:fine){.badge:hover{filter:saturate(1.12);transform:translateY(-1px)}.badge:hover:after{opacity:1;animation:terminal_scan_x .7s ease}}@media(hover:none)and (pointer:coarse){.badge:active{filter:saturate(1.12);transform:translateY(-1px)}.badge:active:after{opacity:1;animation:terminal_scan_x .7s ease}}.badge.badge-success{background:#9ece6a}.badge.badge-warning{background:#e0af68}.badge.badge-error,.badge.badge-danger{background:#f7768e}.badge.badge-info{background:#bb9af7;color:#16161e}.badge.badge-secondary{background:#7aa2f7;color:#16161e}.badge.badge-primary-outline{color:#c0caf5;border:2px solid #C0CAF5;background:transparent;padding:3px 8px}.chip-group{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.chip{display:inline-flex;align-items:center;gap:8px;min-height:30px;padding:5px 12px;border:2px solid rgba(192,202,245,.24);color:#a9b1d6;background:#c0caf50b;font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:600;line-height:1;text-transform:uppercase;transition-duration:.2s;transition-timing-function:ease;transition-property:color,background,border-color,opacity}.chip .ph,.chip .ph-bold{font-size:18px}.chip:before{content:"";display:inline-block;width:7px;height:7px;flex:0 0 auto;background:#787c99;transition-duration:.2s;transition-timing-function:ease;transition-property:background,box-shadow,transform}.chip:has(.ph):before,.chip:has(.ph-bold):before{display:none}.chip .chip-remove{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;margin-right:-5px;border:0;color:inherit;background:transparent;font:inherit;cursor:pointer}.chip .chip-remove:focus-visible{outline:2px solid #E0AF68;outline-offset:3px}.chip.chip-primary{color:#c0caf5;background:#c0caf514;border-color:#c0caf5}.chip.chip-primary:before{background:#c0caf5}.chip.chip-secondary{color:#7aa2f7;background:#7aa2f714;border-color:#7aa2f7}.chip.chip-secondary:before{background:#7aa2f7}.chip.chip-success{color:#9ece6a;background:#9ece6a14;border-color:#9ece6a}.chip.chip-success:before{background:#9ece6a}.chip.chip-warning{color:#e0af68;background:#e0af6814;border-color:#e0af68}.chip.chip-warning:before{background:#e0af68}.chip.chip-danger,.chip.chip-error{color:#f7768e;background:#f7768e14;border-color:#f7768e}.chip.chip-danger:before,.chip.chip-error:before{background:#f7768e}.chip.chip-selected,.chip[aria-pressed=true],.chip[aria-selected=true]{color:#16161e;background:#c0caf5;border-color:#c0caf5}.chip.chip-selected:before,.chip[aria-pressed=true]:before,.chip[aria-selected=true]:before{background:#16161e}.chip.chip-selected.chip-secondary,.chip.chip-secondary[aria-pressed=true],.chip.chip-secondary[aria-selected=true]{background:#7aa2f7;border-color:#7aa2f7}.chip.chip-disabled,.chip:disabled{color:#787c99;background:#1f2335;border-color:#c0caf53d;cursor:not-allowed;opacity:.7}.chip.chip-disabled:before,.chip:disabled:before{background:#414868}button.chip,a.chip{cursor:pointer}button.chip:focus-visible,a.chip:focus-visible{outline:2px solid #E0AF68;outline-offset:3px}@media(hover:hover)and (pointer:fine){button.chip:hover,a.chip:hover{color:#c0caf5;background:#c0caf516;border-color:#7aa2f7}button.chip:hover:before,a.chip:hover:before{background:#7aa2f7;animation:terminal_pulse .7s ease;transform:scale(1.12)}}@media(hover:none)and (pointer:coarse){button.chip:active,a.chip:active{color:#c0caf5;background:#c0caf516;border-color:#7aa2f7}button.chip:active:before,a.chip:active:before{background:#7aa2f7;animation:terminal_pulse .7s ease;transform:scale(1.12)}}.avatar{position:relative;display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;flex:0 0 auto;overflow:hidden;border:2px solid rgba(192,202,245,.24);color:#16161e;background:#c0caf5;font-family:IBM Plex Mono,monospace;font-size:13px;font-weight:700;line-height:1;text-transform:uppercase}.avatar img{width:100%;height:100%;object-fit:cover}.avatar .ph,.avatar .ph-bold{font-size:22px}.avatar .avatar-status{position:absolute;right:-2px;bottom:-2px;width:13px;height:13px;border:2px solid #16161E;background:#787c99;transition-duration:.2s;transition-timing-function:ease;transition-property:background,box-shadow}.avatar.avatar-sm{width:38px;height:38px;font-size:12px}.avatar.avatar-sm .ph,.avatar.avatar-sm .ph-bold{font-size:18px}.avatar.avatar-lg{width:54px;height:54px;font-size:14px}.avatar.avatar-lg .ph,.avatar.avatar-lg .ph-bold{font-size:26px}.avatar.avatar-secondary{background:#7aa2f7}.avatar.avatar-success{background:#9ece6a}.avatar.avatar-warning{background:#e0af68}.avatar.avatar-danger,.avatar.avatar-error{background:#f7768e}.avatar.avatar-outline{color:#c0caf5;background:#c0caf50b;border-color:#c0caf5}.avatar.is-online .avatar-status{background:#9ece6a;animation:terminal_pulse 1.8s ease infinite}.avatar.is-busy .avatar-status{background:#e0af68}.avatar.is-offline .avatar-status{background:#787c99}.identity{display:inline-flex;align-items:center;gap:12px;min-width:0}.identity-content{display:flex;flex-direction:column;gap:5px;min-width:0}.identity-title{color:#c0caf5;font-size:15px;font-weight:600;line-height:1}.identity-meta{color:#787c99;font-size:13px;line-height:1.4}.avatar-stack{display:inline-flex;align-items:center}.avatar-stack .avatar{margin-right:-8px;border-color:#16161e}.avatar-stack .avatar-stack-count{display:inline-flex;align-items:center;justify-content:center;min-width:46px;height:46px;padding:0 8px;border:2px solid #16161E;color:#16161e;background:#e0af68;font-size:13px;font-weight:700}.table{width:100%;text-align:left;border:2px solid rgba(192,202,245,.24);border-collapse:collapse;background:#c0caf50b}.table .table-caption{text-align:left;font-size:16px;background:#c0caf5;width:max-content;color:#16161e;padding:5px 12px;margin-bottom:0;font-weight:700;text-transform:uppercase}.table.table-empty{width:100%}.table.table-empty .is-empty{width:100%;padding:15px;font-size:13px;color:#787c99;text-align:left}.table .table-row th,.table .table-row td{padding:12px 18px;font-size:13px;vertical-align:middle;border-bottom:2px solid rgba(192,202,245,.08)}.table .table-row th{color:#c0caf5;background:#c0caf50a;text-transform:uppercase;letter-spacing:.04em}.table .table-head{border-bottom:2px solid #C0CAF5}.table .table-body .table-row{transition-duration:.2s;transition-timing-function:ease;transition-property:background,color}.table .table-body .table-row td{transition-duration:.2s;transition-timing-function:ease;transition-property:color,background}@media(hover:hover)and (pointer:fine){.table .table-body .table-row:hover{background:#7aa2f714}.table .table-body .table-row:hover td:first-child{color:#7aa2f7}}@media(hover:none)and (pointer:coarse){.table .table-body .table-row:active{background:#7aa2f714}.table .table-body .table-row:active td:first-child{color:#7aa2f7}}.table .table-foot th,.table .table-foot td{padding-top:15px}.table.table-compact .table-caption{font-size:14px}.table.table-compact .table-row th,.table.table-compact .table-row td{padding:8px 12px;font-size:12px}.table.table-compact .table-cell-mono{color:#a9b1d6;font-family:IBM Plex Mono,monospace;letter-spacing:0}.table.table-compact .table-cell-actions{width:1%;white-space:nowrap}.table-wrapper{width:100%;overflow-x:auto}.toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:12px;border:2px solid rgba(192,202,245,.24);border-left-width:6px;background:#c0caf50b}.toolbar .toolbar-group{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.toolbar .toolbar-title{margin:0;font-size:16px;font-weight:700;line-height:1;text-transform:uppercase}.toolbar .toolbar-meta{color:#787c99;font-size:13px}.pagination{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.pagination .pagination-item{display:inline-flex;align-items:center;justify-content:center;min-width:38px;height:38px;padding:0 12px;border:2px solid rgba(192,202,245,.24);color:#a9b1d6;background:#c0caf50b;font-family:IBM Plex Mono,monospace;font-size:13px;font-weight:600;line-height:1;cursor:pointer;transition-duration:.2s;transition-timing-function:ease;transition-property:color,background,border-color,opacity}.pagination .pagination-item:focus-visible{outline:2px solid #E0AF68;outline-offset:3px}@media(hover:hover)and (pointer:fine){.pagination .pagination-item:hover{color:#16161e;background:#7aa2f7;border-color:#7aa2f7}}@media(hover:none)and (pointer:coarse){.pagination .pagination-item:active{color:#16161e;background:#7aa2f7;border-color:#7aa2f7}}.pagination .pagination-item.pagination-item-active,.pagination .pagination-item[aria-current=page]{color:#16161e;background:#c0caf5;border-color:#c0caf5}.pagination .pagination-item:disabled,.pagination .pagination-item.pagination-item-disabled{color:#787c99;background:#1f2335;border-color:#c0caf53d;cursor:not-allowed;opacity:.72}.pagination .pagination-ellipsis{color:#787c99;padding:0 5px}.empty-state{max-width:560px;padding:22px;border:2px solid rgba(192,202,245,.24);border-left-width:6px;background:#c0caf50b}.empty-state .empty-state-icon{display:inline-flex;align-items:center;justify-content:center;width:54px;height:54px;margin-bottom:15px;color:#16161e;background:#c0caf5;font-size:26px}.empty-state .empty-state-title{margin:0 0 8px;font-size:20px;font-weight:700;text-transform:uppercase}.empty-state .empty-state-text{max-width:440px;margin:0 0 18px;color:#a9b1d6;line-height:1.6}.empty-state .empty-state-actions{display:flex;flex-wrap:wrap;gap:8px}.empty-state.empty-state-error{border-color:#f7768e}.empty-state.empty-state-error .empty-state-icon{background:#f7768e}.skeleton{display:block;position:relative;overflow:hidden;background:#c0caf516}.skeleton:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,rgba(192,202,245,.12),transparent);animation:skeleton_shimmer 1.6s infinite}.skeleton.skeleton-line{width:100%;height:14px}.skeleton.skeleton-title{width:60%;height:22px}.skeleton.skeleton-block{width:100%;height:120px}.skeleton.skeleton-square{width:54px;height:54px}.skeleton-stack{display:flex;flex-direction:column;gap:12px;max-width:520px;padding:15px;border:2px solid rgba(192,202,245,.24);background:#c0caf50b}@keyframes skeleton_shimmer{to{transform:translate(100%)}}.page-header{position:relative;display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:18px;width:100%;padding:18px;border:2px solid rgba(192,202,245,.24);border-left-width:6px;background:#c0caf50b;overflow:hidden;animation:panel_boot .28s ease both}.page-header:after{content:"";position:absolute;top:0;left:0;width:34%;height:2px;background:linear-gradient(90deg,transparent,#7AA2F7,transparent);opacity:.72;pointer-events:none;transform:translate(-120%)}@media(hover:hover)and (pointer:fine){.page-header:hover:after{animation:terminal_scan_x .9s ease}}@media(hover:none)and (pointer:coarse){.page-header:active:after{animation:terminal_scan_x .9s ease}}.page-header .page-header-content{display:flex;flex-direction:column;gap:8px;min-width:min(100%,320px)}.page-header .page-header-kicker{color:#7aa2f7;font-size:13px;font-weight:700;line-height:1;text-transform:uppercase;transition-duration:.2s;transition-timing-function:ease;transition-property:color}.page-header .page-header-title{margin:0;color:#c0caf5;font-size:26px;font-weight:700;line-height:1.15}.page-header .page-header-subtitle{max-width:720px;margin:0;color:#a9b1d6;font-size:15px;line-height:1.6}.page-header .page-header-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;color:#787c99;font-size:13px}.page-header .page-header-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px}.page-header.page-header-compact{align-items:center;padding:15px}.page-header.page-header-compact .page-header-title{font-size:20px}.page-header.page-header-accent{border-color:#7aa2f7;background:#7aa2f70e}.description-list{display:grid;width:100%;max-width:760px;margin:0;border:2px solid rgba(192,202,245,.24);border-left-width:6px;background:#c0caf50b}.description-list .description-list-row{display:grid;grid-template-columns:minmax(140px,.36fr) minmax(0,1fr);gap:15px;padding:12px 15px;border-bottom:2px solid rgba(192,202,245,.08);transition-duration:.2s;transition-timing-function:ease;transition-property:background}.description-list .description-list-row:last-child{border-bottom:0}@media(hover:hover)and (pointer:fine){.description-list .description-list-row:hover{background:#c0caf516}.description-list .description-list-row:hover .description-list-term{color:#7aa2f7}.description-list .description-list-row:hover .description-list-value{transform:translate(5px)}}@media(hover:none)and (pointer:coarse){.description-list .description-list-row:active{background:#c0caf516}.description-list .description-list-row:active .description-list-term{color:#7aa2f7}.description-list .description-list-row:active .description-list-value{transform:translate(5px)}}.description-list .description-list-term{margin:0;color:#787c99;font-size:13px;font-weight:600;line-height:1.4;text-transform:uppercase;transition-duration:.2s;transition-timing-function:ease;transition-property:color}.description-list .description-list-value{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0;margin:0;color:#c0caf5;font-size:15px;line-height:1.4;transition-duration:.2s;transition-timing-function:ease;transition-property:transform}.description-list .description-list-value-muted{color:#a9b1d6}.description-list.description-list-compact{max-width:520px}.description-list.description-list-compact .description-list-row{grid-template-columns:minmax(112px,.42fr) minmax(0,1fr);gap:12px;padding:8px 12px}.description-list.description-list-compact .description-list-term,.description-list.description-list-compact .description-list-value{font-size:13px}@media(max-width:479px){.description-list .description-list-row{grid-template-columns:1fr;gap:5px}}.steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;width:100%;max-width:900px;margin:0;padding:0;list-style:none}.steps .step{position:relative;display:flex;flex-direction:column;gap:8px;min-height:120px;padding:15px;border:2px solid rgba(192,202,245,.24);border-left-width:6px;background:#c0caf50b}.steps .step-marker{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;color:#c0caf5;border:2px solid rgba(192,202,245,.24);font-size:13px;font-weight:700;line-height:1}.steps .step-title{margin:0;font-size:14px;font-weight:700;line-height:1.25;text-transform:uppercase}.steps .step-text{margin:0;color:#a9b1d6;font-size:13px;line-height:1.4}.steps .step-complete{border-color:#9ece6a}.steps .step-complete .step-marker{color:#16161e;background:#9ece6a;border-color:#9ece6a}.steps .step-current{border-color:#7aa2f7}.steps .step-current .step-marker{color:#16161e;background:#7aa2f7;border-color:#7aa2f7}.steps .step-disabled{opacity:.62}.steps.steps-vertical{grid-template-columns:1fr;max-width:520px;gap:0}.steps.steps-vertical .step{min-height:auto;border-bottom-width:0}.steps.steps-vertical .step:last-child{border-bottom-width:2px}@media(max-width:1023px){.steps{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:479px){.steps{grid-template-columns:1fr}}.timeline{display:grid;gap:0;width:100%;max-width:760px;margin:0;padding:0;list-style:none}.timeline .timeline-item{position:relative;display:grid;grid-template-columns:46px minmax(0,1fr);gap:12px;min-height:88px}.timeline .timeline-item:before{content:"";position:absolute;top:46px;bottom:0;left:22px;width:2px;background:#c0caf53d}.timeline .timeline-item:last-child:before{display:none}.timeline .timeline-marker{position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;border:2px solid rgba(192,202,245,.24);color:#a9b1d6;background:#16161e;font-size:18px;transition-duration:.2s;transition-timing-function:ease;transition-property:border-color,background,color,box-shadow,transform}.timeline .timeline-content{min-width:0;padding:0 0 18px}.timeline .timeline-card{padding:15px;border:2px solid rgba(192,202,245,.24);border-left-width:6px;background:#c0caf50b;transition-duration:.2s;transition-timing-function:ease;transition-property:border-color,background,transform}.timeline .timeline-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.timeline .timeline-title{margin:0;font-size:14px;font-weight:700;line-height:1.25;text-transform:uppercase}.timeline .timeline-time{color:#787c99;font-size:12px;font-family:IBM Plex Mono,monospace;line-height:1.4}.timeline .timeline-text{margin:0;color:#a9b1d6;font-size:13px;line-height:1.4}.timeline .timeline-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.timeline .timeline-item-success .timeline-marker,.timeline .timeline-item-success .timeline-card{border-color:#9ece6a}.timeline .timeline-item-success .timeline-marker{color:#16161e;background:#9ece6a}.timeline .timeline-item-warning .timeline-marker,.timeline .timeline-item-warning .timeline-card{border-color:#e0af68}.timeline .timeline-item-warning .timeline-marker{color:#16161e;background:#e0af68}.timeline .timeline-item-danger .timeline-marker,.timeline .timeline-item-danger .timeline-card,.timeline .timeline-item-error .timeline-marker,.timeline .timeline-item-error .timeline-card{border-color:#f7768e}.timeline .timeline-item-danger .timeline-marker,.timeline .timeline-item-error .timeline-marker{color:#16161e;background:#f7768e}@media(hover:hover)and (pointer:fine){.timeline .timeline-item:hover .timeline-marker{box-shadow:0 0 0 4px #7aa2f724;transform:scale(1.04)}.timeline .timeline-item:hover .timeline-card{background:#c0caf516;transform:translate(5px)}}@media(hover:none)and (pointer:coarse){.timeline .timeline-item:active .timeline-marker{box-shadow:0 0 0 4px #7aa2f724;transform:scale(1.04)}.timeline .timeline-item:active .timeline-card{background:#c0caf516;transform:translate(5px)}}.activity-log{display:grid;width:100%;max-width:720px;border:2px solid rgba(192,202,245,.24);border-left-width:6px;background:#c0caf50b}.activity-log .activity-log-row{display:grid;grid-template-columns:minmax(120px,.24fr) minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px 15px;border-bottom:2px solid rgba(192,202,245,.08);transition-duration:.2s;transition-timing-function:ease;transition-property:background}.activity-log .activity-log-row:last-child{border-bottom:0}@media(hover:hover)and (pointer:fine){.activity-log .activity-log-row:hover{background:#c0caf516}}@media(hover:none)and (pointer:coarse){.activity-log .activity-log-row:active{background:#c0caf516}}.activity-log .activity-log-time{color:#787c99;font-family:IBM Plex Mono,monospace;font-size:12px}.activity-log .activity-log-title{color:#c0caf5;font-size:13px;font-weight:600;line-height:1.4}@media(max-width:479px){.activity-log .activity-log-row{grid-template-columns:1fr;gap:8px}}.accordion{display:grid;width:100%;max-width:760px;border:2px solid rgba(192,202,245,.24);border-left-width:6px;background:#c0caf50b}.accordion-item{border-bottom:2px solid rgba(192,202,245,.08);overflow:hidden}.accordion-item:last-child{border-bottom:0}.accordion-item[open] .accordion-summary{color:#16161e;background:#c0caf5}.accordion-item[open] .accordion-icon{transform:rotate(180deg)}.accordion-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:46px;padding:12px 15px;color:#c0caf5;cursor:pointer;font-size:13px;font-weight:700;line-height:1;text-transform:uppercase;transition-duration:.2s;transition-timing-function:ease;transition-property:color,background}.accordion-summary::-webkit-details-marker{display:none}.accordion-summary::marker{content:""}.accordion-summary:focus-visible{outline:2px solid #E0AF68;outline-offset:3px}@media(hover:hover)and (pointer:fine){.accordion-summary:hover{color:#16161e;background:#7aa2f7}}@media(hover:none)and (pointer:coarse){.accordion-summary:active{color:#16161e;background:#7aa2f7}}.accordion-summary-content{display:flex;align-items:center;gap:8px;min-width:0}.accordion-icon{flex:0 0 auto;font-size:18px;transition-duration:.2s;transition-property:transform}.accordion-panel{overflow:hidden;padding:15px;color:#a9b1d6;font-size:13px;line-height:1.6;transition-duration:.28s;transition-timing-function:ease;transition-property:height,opacity,transform}.accordion-panel p{margin-top:0}.accordion-panel p:last-child{margin-bottom:0}.disclosure{max-width:520px;border:2px solid rgba(192,202,245,.24);background:#c0caf50b}.disclosure .accordion-summary{min-height:38px;padding:8px 12px}.disclosure .accordion-panel{padding:12px}.tabs{display:grid;gap:15px;width:100%;max-width:900px}.tabs-list{display:flex;align-items:stretch;gap:0;max-width:100%;overflow-x:auto;border:2px solid rgba(192,202,245,.24);border-left-width:6px;background:#c0caf50b;scrollbar-width:thin}.tab{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:12px 15px;border:0;border-right:2px solid rgba(192,202,245,.08);border-radius:0;color:#a9b1d6;background:transparent;font-family:IBM Plex Mono,monospace;font-size:13px;font-weight:700;line-height:1;text-transform:uppercase;white-space:nowrap;cursor:pointer;transition-duration:.2s;transition-timing-function:ease;transition-property:color,background,opacity}.tab .ph,.tab .ph-bold{font-size:18px}.tab:focus-visible{outline:2px solid #E0AF68;outline-offset:3px;z-index:1}@media(hover:hover)and (pointer:fine){.tab:hover{color:#16161e;background:#7aa2f7}}@media(hover:none)and (pointer:coarse){.tab:active{color:#16161e;background:#7aa2f7}}.tab:disabled,.tab[aria-disabled=true]{color:#787c99;cursor:not-allowed;opacity:.62}@media(hover:hover)and (pointer:fine){.tab:disabled:hover,.tab[aria-disabled=true]:hover{color:#787c99;background:transparent}}@media(hover:none)and (pointer:coarse){.tab:disabled:active,.tab[aria-disabled=true]:active{color:#787c99;background:transparent}}.tab-active,.tab[aria-selected=true]{color:#16161e;background:#c0caf5}.tabs-panels{border:2px solid rgba(192,202,245,.24);border-left-width:6px;background:#c0caf50b}.tab-panel{display:none;padding:15px;color:#a9b1d6;font-size:13px;line-height:1.6}.tab-panel p{margin-top:0}.tab-panel p:last-child{margin-bottom:0}.tab-panel-active{display:block}.tabs-compact{max-width:620px}.tabs-compact .tabs-list{border-left-width:2px}.tabs-compact .tab{min-height:38px;padding:8px 12px}.tabs-compact .tabs-panels{border-left-width:2px}.tabs-compact .tab-panel{padding:12px}.tabs-vertical{grid-template-columns:minmax(180px,240px) minmax(0,1fr);align-items:start}.tabs-vertical .tabs-list{flex-direction:column;overflow-x:visible}.tabs-vertical .tab{justify-content:flex-start;border-right:0;border-bottom:2px solid rgba(192,202,245,.08);text-align:left}@media(max-width:767px){.tabs-vertical{grid-template-columns:1fr}.tabs-vertical .tabs-list{flex-direction:row;overflow-x:auto}.tabs-vertical .tab{justify-content:center;border-right:2px solid rgba(192,202,245,.08);border-bottom:0;text-align:center}}.drawer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;justify-content:flex-end;pointer-events:none}.drawer .drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1010;background:#16161e;opacity:0;transition-duration:.28s;transition-timing-function:ease;transition-property:opacity;pointer-events:auto}.drawer .drawer-panel{position:relative;z-index:1020;width:min(460px,100vw - 18px);min-height:100vh;display:flex;flex-direction:column;gap:15px;background:#16161e;border-left:2px solid #C0CAF5;box-shadow:-18px 0 42px #16161e61;opacity:0;transform:translate(100%);transition-duration:.28s;transition-timing-function:ease;transition-property:opacity,transform;pointer-events:auto}.drawer .drawer-header{display:flex;align-items:center;justify-content:space-between;padding-right:15px;border-bottom:2px solid rgba(192,202,245,.24)}.drawer .drawer-title{margin:0;padding:12px 15px;background:#c0caf5;color:#16161e;text-transform:uppercase;letter-spacing:.04em}.drawer .drawer-body{flex:1;overflow-y:auto;padding:18px}.drawer .drawer-footer{padding:18px;border-top:2px solid rgba(192,202,245,.24)}.drawer .drawer-footer .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:12px;width:100%}.drawer.drawer-left{justify-content:flex-start}.drawer.drawer-left .drawer-panel{border-left:0;border-right:2px solid #C0CAF5;box-shadow:18px 0 42px #16161e61;transform:translate(-100%)}.drawer.a-show .drawer-backdrop{opacity:.82}.drawer.a-show .drawer-panel{opacity:1;transform:translate(0)}.drawer.a-hide .drawer-backdrop{opacity:0}.drawer.a-hide .drawer-panel{opacity:0;transform:translate(100%)}.drawer.a-hide.drawer-left .drawer-panel{transform:translate(-100%)}.drawer-preview{display:grid;grid-template-columns:minmax(0,1fr) minmax(180px,280px);gap:18px;align-items:stretch;padding:18px;border:2px solid rgba(192,202,245,.24);border-left-width:6px;background:#c0caf50b}.drawer-preview .drawer-preview-content{display:flex;flex-direction:column;gap:12px}.drawer-preview .drawer-preview-panel{display:flex;flex-direction:column;gap:12px;padding:15px;border:2px solid #7AA2F7;background:#1f2335}.drawer-preview .drawer-preview-title{margin:0;color:#7aa2f7;font-size:14px;text-transform:uppercase}.drawer-preview .drawer-preview-text{margin:0;color:#a9b1d6;font-size:13px;line-height:1.6}@media(max-width:720px){.drawer-preview{grid-template-columns:1fr}}.nav-topbar{position:sticky;top:0;z-index:900;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;min-height:58px;border-bottom:2px solid rgba(192,202,245,.24);background:#16161ef5;box-shadow:0 10px 28px #16161e42}.nav-topbar-toggle{display:inline-flex;align-items:center;align-self:stretch;gap:8px;min-width:150px;padding:0 15px;border:0;border-right:2px solid rgba(192,202,245,.24);color:#c0caf5;background:#1f2335;font-family:IBM Plex Mono,monospace;font-size:13px;font-weight:700;text-transform:uppercase;cursor:pointer;transition-duration:.2s;transition-timing-function:ease;transition-property:color,background}.nav-topbar-toggle .ph{color:#7aa2f7;font-size:22px}.nav-topbar-toggle:focus-visible{outline:2px solid #E0AF68;outline-offset:3px}@media(hover:hover)and (pointer:fine){.nav-topbar-toggle:hover{color:#16161e;background:#7aa2f7}.nav-topbar-toggle:hover .ph{color:#16161e}}@media(hover:none)and (pointer:coarse){.nav-topbar-toggle:active{color:#16161e;background:#7aa2f7}.nav-topbar-toggle:active .ph{color:#16161e}}.nav-topbar-brand{display:inline-flex;align-items:center;gap:8px;min-width:0;padding:0 15px;color:#c0caf5;font-size:13px;font-weight:700;text-transform:uppercase}.nav-topbar-brand img{width:22px;height:22px}.nav-topbar-current{min-width:160px;margin-right:15px;padding:5px 8px;border:2px solid rgba(192,202,245,.24);color:#a9b1d6;background:#c0caf50b;font-size:12px;font-weight:700;text-align:center;text-transform:uppercase}.nav-drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:910;background:#16161e;opacity:0;pointer-events:none;transition-duration:.28s;transition-timing-function:ease;transition-property:opacity}.nav-drawer{position:fixed;inset:0 auto 0 0;z-index:920;display:flex;flex-direction:column;width:min(380px,100vw);max-height:100vh;border-right:2px solid #C0CAF5;background:#1f2335;box-shadow:18px 0 42px #16161e61;opacity:0;overflow:hidden;pointer-events:none;transform:translate(-100%);transition-duration:.28s;transition-timing-function:ease;transition-property:opacity,transform}.nav-drawer.is-open{opacity:1;pointer-events:auto;transform:translate(0)}.nav-drawer-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;border-bottom:2px solid rgba(192,202,245,.24)}.nav-drawer-title{display:inline-flex;padding:8px 12px;color:#16161e;background:#c0caf5;font-size:13px;font-weight:700;text-transform:uppercase}.nav-drawer-subtitle{margin-top:8px;color:#787c99;font-size:12px;font-weight:700;text-transform:uppercase}.nav-drawer-close{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;padding:0;border:2px solid rgba(192,202,245,.24);color:#c0caf5;background:transparent;font-size:22px;cursor:pointer;transition-duration:.2s;transition-timing-function:ease;transition-property:color,background,border-color}.nav-drawer-close:focus-visible{outline:2px solid #E0AF68;outline-offset:3px}@media(hover:hover)and (pointer:fine){.nav-drawer-close:hover{color:#16161e;background:#f7768e;border-color:#f7768e}}@media(hover:none)and (pointer:coarse){.nav-drawer-close:active{color:#16161e;background:#f7768e;border-color:#f7768e}}.nav-drawer-body{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:12px;scrollbar-width:thin;scrollbar-color:#7AA2F7 #1F2335}.nav-drawer-body::-webkit-scrollbar{width:8px}.nav-drawer-body::-webkit-scrollbar-track{background:#1f2335}.nav-drawer-body::-webkit-scrollbar-thumb{background:#7aa2f7}.nav-drawer-body .list.list-nav{max-width:none}.nav-drawer-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;border-top:2px solid rgba(192,202,245,.24);color:#787c99;background:#c0caf50b;font-size:12px;font-weight:700;text-transform:uppercase}.nav-drawer-open{overflow:hidden}.nav-drawer-open .nav-drawer-backdrop{opacity:.82;pointer-events:auto}@media(max-width:767px){.nav-topbar-toggle{min-width:54px;padding:0 12px}.nav-topbar-brand{padding-right:12px;padding-left:12px}.nav-topbar-current{max-width:38vw;min-width:0;margin-right:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-drawer{width:100vw;border-right:0}}.nav-shell-preview{width:100%;max-width:900px;overflow:hidden;border:2px solid rgba(192,202,245,.24);border-left-width:6px;background:#16161e}.nav-shell-preview-topbar{position:relative;z-index:0;min-height:52px;box-shadow:none}.nav-shell-preview-body{display:grid;grid-template-columns:280px minmax(0,1fr);min-height:320px}.nav-shell-preview-drawer{position:relative;z-index:0;inset:auto;width:auto;max-height:none;opacity:1;pointer-events:auto;transform:none;box-shadow:none}.nav-shell-preview-content{display:flex;flex-direction:column;justify-content:center;gap:12px;min-width:0;padding:18px;border-left:2px solid rgba(192,202,245,.24);background:#c0caf50b}.nav-shell-preview-content h3{margin:0;color:#c0caf5;font-size:20px;text-transform:uppercase}.nav-shell-preview-content p{max-width:360px;margin:0;color:#a9b1d6;font-size:13px;line-height:1.6}@media(max-width:767px){.nav-shell-preview-body{grid-template-columns:1fr}.nav-shell-preview-content{min-height:180px;border-top:2px solid rgba(192,202,245,.24);border-left:0}}.toast{position:fixed;z-index:1100;bottom:-100px;right:15px;max-width:420px;background:#1f2335;border:2px solid #C0CAF5;border-left-width:6px;padding:0;opacity:0;transition-duration:.28s;transition-timing-function:ease;transition-property:opacity,top,bottom}.toast.a-show{bottom:15px;opacity:1}.toast.a-hide{bottom:115px;opacity:0}.toast .toast-content{display:flex;flex-direction:column;gap:0}.toast .toast-content .toast-title{min-height:38px;font-size:16px;display:flex;flex-direction:row;gap:8px;align-items:center;color:#16161e;background:#c0caf5;padding:8px 42px 8px 12px;text-transform:uppercase}.toast .toast-content .toast-text{font-size:13px;padding:22px 15px;margin:0}.toast .toast-close{position:absolute;top:0;right:0;color:#16161e;height:38px;width:38px;border-color:transparent}@media(hover:hover)and (pointer:fine){.toast .toast-close:hover{color:#16161e;background:#16161e1f;border-color:#16161e6b}}@media(hover:none)and (pointer:coarse){.toast .toast-close:active{color:#16161e;background:#16161e1f;border-color:#16161e6b}}.toast.toast-info{border-color:#bb9af7}.toast.toast-info .toast-title{background:#bb9af7}.toast.toast-success{border-color:#9ece6a}.toast.toast-success .toast-title{background:#9ece6a}.toast.toast-warning{border-color:#e0af68}.toast.toast-warning .toast-title{background:#e0af68}.toast.toast-danger{border-color:#f7768e}.toast.toast-danger .toast-title{background:#f7768e}.card{position:relative;max-width:340px;width:100%;overflow:hidden;background:#c0caf50b;border:2px solid #C0CAF5;transition-duration:.2s;transition-timing-function:ease;transition-property:border-color,background,box-shadow,transform}.card .card-title{color:#16161e;background:#c0caf5;padding:8px 12px;font-weight:700;text-transform:uppercase}.card .card-content{padding:15px;height:100%}.card .card-content .card-thumb{display:block;width:min(68%,190px);margin:18px auto 22px;transition-duration:.2s;transition-timing-function:ease;transition-property:transform,filter}.card .card-content p{margin-top:8px;margin-bottom:0}.card .card-footer{padding:8px 15px 15px}@media(hover:hover)and (pointer:fine){.card:hover{border-color:#7aa2f7;background:#c0caf516;box-shadow:0 14px 32px #16161e57;transform:translateY(-2px)}.card:hover .card-thumb{filter:saturate(1.12);transform:translateY(-2px)}}@media(hover:none)and (pointer:coarse){.card:active{border-color:#7aa2f7;background:#c0caf516;box-shadow:0 14px 32px #16161e57;transform:translateY(-2px)}.card:active .card-thumb{filter:saturate(1.12);transform:translateY(-2px)}}.card.status-card{max-width:220px;overflow:hidden;transition-duration:.2s;transition-property:border-color}.card.status-card .status-icon-container{position:relative}.card.status-card .status-icon-container .status-indicator{position:absolute;top:-15px;left:-5px;font-size:22px;color:#f7768e}.card.status-card .status-icon-container .status-indicator.status-online{color:#9ece6a}.card.status-card .status-icon-container .status-icon{display:flex;flex-direction:row;align-items:center;justify-content:center;font-size:56px;height:108px;width:100%;transition-duration:.2s;transition-property:color,transform}.card.status-card .card-title{display:flex;width:100%;font-size:14px;font-weight:700;align-items:center;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;transition-duration:.2s;transition-property:background-color,color}.card.status-card .status-name{font-size:13px;line-height:1.4}@media(hover:hover)and (pointer:fine){.card.status-card:hover .status-icon{transform:translateY(-2px) scale(1.03)}}@media(hover:none)and (pointer:coarse){.card.status-card:active .status-icon{transform:translateY(-2px) scale(1.03)}}.card.status-card.card-success{border-color:#9ece6a}.card.status-card.card-success .card-title,.card.status-card.card-success .toast-title,.card.status-card.card-success .modal-title{color:#16161e;background:#9ece6a}.card.status-card.card-success .status-icon{color:#9ece6a}.card.status-card.card-warning{border-color:#e0af68}.card.status-card.card-warning .card-title,.card.status-card.card-warning .toast-title,.card.status-card.card-warning .modal-title{color:#16161e;background:#e0af68}.card.status-card.card-warning .status-icon{color:#e0af68}.card.status-card.card-info{border-color:#bb9af7}.card.status-card.card-info .card-title,.card.status-card.card-info .toast-title,.card.status-card.card-info .modal-title{color:#16161e;background:#bb9af7}.card.status-card.card-info .status-icon{color:#bb9af7}.card.status-card.card-secondary{border-color:#7aa2f7}.card.status-card.card-secondary .card-title,.card.status-card.card-secondary .toast-title,.card.status-card.card-secondary .modal-title{color:#16161e;background:#7aa2f7}.card.status-card.card-secondary .status-icon{color:#7aa2f7}.card.status-card.card-danger,.card.status-card.card-error{border-color:#f7768e}.card.status-card.card-danger .card-title,.card.status-card.card-danger .toast-title,.card.status-card.card-danger .modal-title,.card.status-card.card-error .card-title,.card.status-card.card-error .toast-title,.card.status-card.card-error .modal-title{color:#16161e;background:#f7768e}.card.status-card.card-danger .status-icon,.card.status-card.card-error .status-icon{color:#f7768e}.card.metric-card{max-width:320px;border-color:#c0caf53d}.card.metric-card .card-content{display:flex;flex-direction:column;gap:15px}.card.metric-card .metric-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.card.metric-card .metric-card-label{margin:0;color:#a9b1d6;font-size:13px;font-weight:600;text-transform:uppercase}.card.metric-card .metric-card-icon{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;color:#16161e;background:#7aa2f7;font-size:22px;transition-duration:.2s;transition-timing-function:ease;transition-property:background,transform}.card.metric-card .metric-card-value{margin:0;color:#c0caf5;font-size:34px;font-weight:700;line-height:1.15}.card.metric-card .metric-card-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;color:#787c99;font-size:13px}.card.metric-card .metric-card-delta{color:#9ece6a;font-weight:700}.card.metric-card .metric-card-delta.metric-card-delta-negative{color:#f7768e}@media(hover:hover)and (pointer:fine){.card.metric-card:hover .metric-card-icon{background:#c0caf5;transform:translateY(-2px)}}@media(hover:none)and (pointer:coarse){.card.metric-card:active .metric-card-icon{background:#c0caf5;transform:translateY(-2px)}}.card.action-card{max-width:360px;border-color:#7aa2f7}.card.action-card .card-content{display:flex;flex-direction:column;gap:15px}.card.action-card .action-card-kicker{display:inline-flex;width:max-content;padding:5px 8px;color:#16161e;background:#7aa2f7;font-size:12px;font-weight:700;line-height:1;text-transform:uppercase;transition-duration:.2s;transition-timing-function:ease;transition-property:background,transform}.card.action-card .action-card-title{margin:0;font-size:20px;font-weight:700;line-height:1.25;text-transform:uppercase}.card.action-card .action-card-text{margin:0;color:#a9b1d6;font-size:13px;line-height:1.6}.card.action-card .action-card-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}@media(hover:hover)and (pointer:fine){.card.action-card:hover .action-card-kicker{background:#c0caf5;transform:translate(5px)}}@media(hover:none)and (pointer:coarse){.card.action-card:active .action-card-kicker{background:#c0caf5;transform:translate(5px)}}.modal{position:fixed;top:0;bottom:0;left:0;right:0;z-index:1000;display:flex;flex-direction:column;align-items:center;justify-content:center}.modal .modal-backdrop{position:fixed;z-index:1010;top:0;bottom:0;left:0;right:0;background:#16161e;opacity:0;transition-duration:.25s;transition-property:opacity}.modal .modal-dialog{position:relative;z-index:1020;width:100%;max-width:960px;margin:200px 18px 18px;height:auto;max-height:calc(100vh - 48px);padding:0;display:flex;flex-direction:column;gap:0;opacity:0;transition-duration:.28s;transition-timing-function:ease;transition-property:opacity,margin-top}.modal .modal-dialog .modal-header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:15px}.modal .modal-dialog .modal-header .modal-title{padding:12px 15px;background:#c0caf5;color:#16161e;text-transform:uppercase;letter-spacing:.04em}.modal .modal-dialog .modal-header .modal-close{flex:0 0 auto;color:#c0caf5;border-color:#c0caf53d;background:#16161e}.modal .modal-dialog .modal-panel{min-height:200px;display:flex;flex-direction:column;gap:15px;overflow:hidden;background:#16161e;border:2px solid #C0CAF5;border-left-width:6px}.modal .modal-dialog .modal-body{max-height:700px;overflow-y:auto;padding:18px}.modal .modal-dialog .modal-footer{padding:18px}.modal .modal-dialog .modal-footer .actions{display:flex;flex-direction:row;justify-content:flex-end;gap:15px;width:100%}.modal.a-show .modal-backdrop{opacity:1}.modal.a-show .modal-dialog{opacity:1;margin-top:0}.modal.a-hide .modal-backdrop{opacity:0}.modal.a-hide .modal-dialog{opacity:0;margin-top:-200px}.alert{position:relative;overflow:hidden;margin-bottom:12px;padding:12px 15px;border:2px solid transparent;border-left-style:solid;border-left-width:6px;background:#c0caf50b;color:#c0caf5;font-weight:500;line-height:1.4;transition-duration:.2s;transition-timing-function:ease;transition-property:background,color,border-color}.alert:after{content:"";position:absolute;inset:0 auto 0 0;width:36%;background:linear-gradient(90deg,transparent,rgba(192,202,245,.12),transparent);opacity:0;pointer-events:none;transform:translate(-120%)}@media(hover:hover)and (pointer:fine){.alert:hover:after{opacity:1;animation:terminal_scan_x .8s ease}}@media(hover:none)and (pointer:coarse){.alert:active:after{opacity:1;animation:terminal_scan_x .8s ease}}.alert.alert-primary{border-color:#c0caf5;background:#c0caf51a;color:#c0caf5}.alert.alert-success{border-color:#9ece6a;background:#9ece6a1a;color:#9ece6a}.alert.alert-secondary{border-color:#7aa2f7;background:#7aa2f71a;color:#7aa2f7}.alert.alert-info{border-color:#bb9af7;background:#bb9af71a;color:#c0caf5}.alert.alert-warning{border-color:#e0af68;background:#e0af681a;color:#e0af68}.alert.alert-error,.alert.alert-danger{border-color:#f7768e;background:#f7768e1a;color:#f7768e}.advanced-select-container{position:relative;height:0}.advanced-select{position:absolute;z-index:100;top:6px;width:100%;height:auto;max-height:200px;overflow-y:auto;background:#16161e;border:2px solid #C0CAF5;border-left-width:6px;margin-top:20px;opacity:0;visibility:hidden;transition-property:opacity,margin-top,visibility;transition-duration:.2s;transition-timing-function:ease}.advanced-select.a-show{opacity:1;margin-top:0;visibility:visible}.advanced-select .popup-options-container .not-found{width:100%;padding:15px;text-align:center;display:none}.advanced-select .popup-options-container .not-found.show{display:block}.advanced-select .popup-options-container .options{width:100%;display:none}.advanced-select .popup-options-container .options.show{display:block}.advanced-select .popup-options-container .options .option{padding:8px 15px;transition-property:color,background;transition-duration:.15s}.advanced-select .popup-options-container .options .option.hide{display:none}.advanced-select .popup-options-container .options .option:hover,.advanced-select .popup-options-container .options .option.focus{color:#16161e;background:#e0af68}.component.editable-string-component .editable-string-content{display:flex;flex-direction:row;align-items:center;gap:8px;font-size:inherit}.component.editable-string-component .editable-string-content .editable-string{font-size:inherit;border-bottom:2px solid rgba(192,202,245,.24)}@media(hover:hover)and (pointer:fine){.component.editable-string-component .edit-text-btn:hover,.component.editable-string-component .apply-changes-btn:hover,.component.editable-string-component .cancel-changes-btn:hover{color:#16161e;background:#e0af68}}@media(hover:none)and (pointer:coarse){.component.editable-string-component .edit-text-btn:active,.component.editable-string-component .apply-changes-btn:active,.component.editable-string-component .cancel-changes-btn:active{color:#16161e;background:#e0af68}}.component.editable-string-component .apply-changes-btn{color:#e0af68}.component.editable-string-component .editable-string-form{display:flex;flex-direction:row;align-items:center;gap:8px}.component.editable-string-component .editable-string-form .form-group{max-width:260px;margin:0}.component.editable-string-component .editable-string-form .form-group .input{padding:8px 15px}.tabs{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:15px}.tabs .tab{display:inline-flex;align-items:center;min-height:38px;padding:8px 12px;border:2px solid rgba(192,202,245,.24);border-left-width:6px;color:#a9b1d6;background:#c0caf50b;font-family:IBM Plex Mono,monospace;font-size:13px;font-weight:600;line-height:1;text-transform:uppercase;cursor:pointer;transition-duration:.2s;transition-timing-function:ease;transition-property:color,background,border-color}.tabs .tab:focus-visible{outline:2px solid #E0AF68;outline-offset:3px}@media(hover:hover)and (pointer:fine){.tabs .tab:hover{color:#16161e;background:#7aa2f7;border-color:#7aa2f7}}@media(hover:none)and (pointer:coarse){.tabs .tab:active{color:#16161e;background:#7aa2f7;border-color:#7aa2f7}}.tabs .tab.tab-active,.tabs .tab[aria-selected=true]{color:#16161e;background:#c0caf5;border-color:#c0caf5}.dropdown,.popover{position:relative;display:inline-flex}.dropdown-menu,.popover-panel,.tooltip-panel{z-index:40;background:#1f2335;border:2px solid rgba(192,202,245,.24);border-left-width:6px;box-shadow:0 14px 36px #16161e5c}.dropdown-menu,.popover-panel{position:absolute;top:calc(100% + 8px);left:0;min-width:220px;display:none;transform-origin:top left}.dropdown.is-open .dropdown-menu,.popover.is-open .popover-panel{display:block;animation:overlay_reveal .2s ease both}.dropdown-menu{padding:5px}.dropdown-menu .dropdown-item{display:flex;align-items:center;gap:8px;width:100%;min-height:38px;padding:8px 12px;border:0;color:#c0caf5;background:transparent;font-family:IBM Plex Mono,monospace;font-size:13px;text-align:left;cursor:pointer;transition-duration:.2s;transition-timing-function:ease;transition-property:color,background}.dropdown-menu .dropdown-item .ph,.dropdown-menu .dropdown-item .ph-bold{font-size:18px}.dropdown-menu .dropdown-item:focus-visible{outline:2px solid #E0AF68;outline-offset:3px}@media(hover:hover)and (pointer:fine){.dropdown-menu .dropdown-item:hover{color:#16161e;background:#7aa2f7}}@media(hover:none)and (pointer:coarse){.dropdown-menu .dropdown-item:active{color:#16161e;background:#7aa2f7}}.dropdown-menu .dropdown-item.dropdown-item-danger{color:#f7768e}@media(hover:hover)and (pointer:fine){.dropdown-menu .dropdown-item.dropdown-item-danger:hover{color:#16161e;background:#f7768e}}@media(hover:none)and (pointer:coarse){.dropdown-menu .dropdown-item.dropdown-item-danger:active{color:#16161e;background:#f7768e}}.popover-panel{width:min(320px,100vw - 22px);padding:15px}.popover-panel .popover-title{margin:0 0 8px;font-size:14px;font-weight:700;text-transform:uppercase}.popover-panel .popover-text{margin:0;color:#a9b1d6;font-size:13px;line-height:1.6}.tooltip{position:relative;display:inline-flex}.tooltip-panel{position:absolute;left:50%;bottom:calc(100% + 8px);width:max-content;max-width:260px;padding:8px 12px;color:#c0caf5;font-size:12px;line-height:1.4;transform:translate(-50%);opacity:0;visibility:hidden;pointer-events:none;transition-duration:.15s;transition-timing-function:ease;transition-property:opacity,visibility}.tooltip:hover .tooltip-panel,.tooltip:focus-within .tooltip-panel,.tooltip.is-open .tooltip-panel{opacity:1;visibility:visible;animation:tooltip_reveal .15s ease both}.m-0{margin:0!important}.mt-0{margin-top:0!important}.mr-0{margin-right:0!important}.mb-0{margin-bottom:0!important}.ml-0{margin-left:0!important}.mx-0{margin-left:0!important;margin-right:0!important}.my-0{margin-top:0!important;margin-bottom:0!important}.p-0{padding:0!important}.pt-0{padding-top:0!important}.pr-0{padding-right:0!important}.pb-0{padding-bottom:0!important}.pl-0{padding-left:0!important}.px-0{padding-left:0!important;padding-right:0!important}.py-0{padding-top:0!important;padding-bottom:0!important}.g-0{gap:0!important}.gx-0{column-gap:0!important}.gy-0{row-gap:0!important}.m-1{margin:5px!important}.mt-1{margin-top:5px!important}.mr-1{margin-right:5px!important}.mb-1{margin-bottom:5px!important}.ml-1{margin-left:5px!important}.mx-1{margin-left:5px!important;margin-right:5px!important}.my-1{margin-top:5px!important;margin-bottom:5px!important}.p-1{padding:5px!important}.pt-1{padding-top:5px!important}.pr-1{padding-right:5px!important}.pb-1{padding-bottom:5px!important}.pl-1{padding-left:5px!important}.px-1{padding-left:5px!important;padding-right:5px!important}.py-1{padding-top:5px!important;padding-bottom:5px!important}.g-1{gap:5px!important}.gx-1{column-gap:5px!important}.gy-1{row-gap:5px!important}.m-2{margin:8px!important}.mt-2{margin-top:8px!important}.mr-2{margin-right:8px!important}.mb-2{margin-bottom:8px!important}.ml-2{margin-left:8px!important}.mx-2{margin-left:8px!important;margin-right:8px!important}.my-2{margin-top:8px!important;margin-bottom:8px!important}.p-2{padding:8px!important}.pt-2{padding-top:8px!important}.pr-2{padding-right:8px!important}.pb-2{padding-bottom:8px!important}.pl-2{padding-left:8px!important}.px-2{padding-left:8px!important;padding-right:8px!important}.py-2{padding-top:8px!important;padding-bottom:8px!important}.g-2{gap:8px!important}.gx-2{column-gap:8px!important}.gy-2{row-gap:8px!important}.m-3{margin:12px!important}.mt-3{margin-top:12px!important}.mr-3{margin-right:12px!important}.mb-3{margin-bottom:12px!important}.ml-3{margin-left:12px!important}.mx-3{margin-left:12px!important;margin-right:12px!important}.my-3{margin-top:12px!important;margin-bottom:12px!important}.p-3{padding:12px!important}.pt-3{padding-top:12px!important}.pr-3{padding-right:12px!important}.pb-3{padding-bottom:12px!important}.pl-3{padding-left:12px!important}.px-3{padding-left:12px!important;padding-right:12px!important}.py-3{padding-top:12px!important;padding-bottom:12px!important}.g-3{gap:12px!important}.gx-3{column-gap:12px!important}.gy-3{row-gap:12px!important}.m-4{margin:15px!important}.mt-4{margin-top:15px!important}.mr-4{margin-right:15px!important}.mb-4{margin-bottom:15px!important}.ml-4{margin-left:15px!important}.mx-4{margin-left:15px!important;margin-right:15px!important}.my-4{margin-top:15px!important;margin-bottom:15px!important}.p-4{padding:15px!important}.pt-4{padding-top:15px!important}.pr-4{padding-right:15px!important}.pb-4{padding-bottom:15px!important}.pl-4{padding-left:15px!important}.px-4{padding-left:15px!important;padding-right:15px!important}.py-4{padding-top:15px!important;padding-bottom:15px!important}.g-4{gap:15px!important}.gx-4{column-gap:15px!important}.gy-4{row-gap:15px!important}.m-5{margin:18px!important}.mt-5{margin-top:18px!important}.mr-5{margin-right:18px!important}.mb-5{margin-bottom:18px!important}.ml-5{margin-left:18px!important}.mx-5{margin-left:18px!important;margin-right:18px!important}.my-5{margin-top:18px!important;margin-bottom:18px!important}.p-5{padding:18px!important}.pt-5{padding-top:18px!important}.pr-5{padding-right:18px!important}.pb-5{padding-bottom:18px!important}.pl-5{padding-left:18px!important}.px-5{padding-left:18px!important;padding-right:18px!important}.py-5{padding-top:18px!important;padding-bottom:18px!important}.g-5{gap:18px!important}.gx-5{column-gap:18px!important}.gy-5{row-gap:18px!important}.m-6{margin:22px!important}.mt-6{margin-top:22px!important}.mr-6{margin-right:22px!important}.mb-6{margin-bottom:22px!important}.ml-6{margin-left:22px!important}.mx-6{margin-left:22px!important;margin-right:22px!important}.my-6{margin-top:22px!important;margin-bottom:22px!important}.p-6{padding:22px!important}.pt-6{padding-top:22px!important}.pr-6{padding-right:22px!important}.pb-6{padding-bottom:22px!important}.pl-6{padding-left:22px!important}.px-6{padding-left:22px!important;padding-right:22px!important}.py-6{padding-top:22px!important;padding-bottom:22px!important}.g-6{gap:22px!important}.gx-6{column-gap:22px!important}.gy-6{row-gap:22px!important}.m-7{margin:26px!important}.mt-7{margin-top:26px!important}.mr-7{margin-right:26px!important}.mb-7{margin-bottom:26px!important}.ml-7{margin-left:26px!important}.mx-7{margin-left:26px!important;margin-right:26px!important}.my-7{margin-top:26px!important;margin-bottom:26px!important}.p-7{padding:26px!important}.pt-7{padding-top:26px!important}.pr-7{padding-right:26px!important}.pb-7{padding-bottom:26px!important}.pl-7{padding-left:26px!important}.px-7{padding-left:26px!important;padding-right:26px!important}.py-7{padding-top:26px!important;padding-bottom:26px!important}.g-7{gap:26px!important}.gx-7{column-gap:26px!important}.gy-7{row-gap:26px!important}.m-8{margin:34px!important}.mt-8{margin-top:34px!important}.mr-8{margin-right:34px!important}.mb-8{margin-bottom:34px!important}.ml-8{margin-left:34px!important}.mx-8{margin-left:34px!important;margin-right:34px!important}.my-8{margin-top:34px!important;margin-bottom:34px!important}.p-8{padding:34px!important}.pt-8{padding-top:34px!important}.pr-8{padding-right:34px!important}.pb-8{padding-bottom:34px!important}.pl-8{padding-left:34px!important}.px-8{padding-left:34px!important;padding-right:34px!important}.py-8{padding-top:34px!important;padding-bottom:34px!important}.g-8{gap:34px!important}.gx-8{column-gap:34px!important}.gy-8{row-gap:34px!important}.m-9{margin:42px!important}.mt-9{margin-top:42px!important}.mr-9{margin-right:42px!important}.mb-9{margin-bottom:42px!important}.ml-9{margin-left:42px!important}.mx-9{margin-left:42px!important;margin-right:42px!important}.my-9{margin-top:42px!important;margin-bottom:42px!important}.p-9{padding:42px!important}.pt-9{padding-top:42px!important}.pr-9{padding-right:42px!important}.pb-9{padding-bottom:42px!important}.pl-9{padding-left:42px!important}.px-9{padding-left:42px!important;padding-right:42px!important}.py-9{padding-top:42px!important;padding-bottom:42px!important}.g-9{gap:42px!important}.gx-9{column-gap:42px!important}.gy-9{row-gap:42px!important}.m-10{margin:48px!important}.mt-10{margin-top:48px!important}.mr-10{margin-right:48px!important}.mb-10{margin-bottom:48px!important}.ml-10{margin-left:48px!important}.mx-10{margin-left:48px!important;margin-right:48px!important}.my-10{margin-top:48px!important;margin-bottom:48px!important}.p-10{padding:48px!important}.pt-10{padding-top:48px!important}.pr-10{padding-right:48px!important}.pb-10{padding-bottom:48px!important}.pl-10{padding-left:48px!important}.px-10{padding-left:48px!important;padding-right:48px!important}.py-10{padding-top:48px!important;padding-bottom:48px!important}.g-10{gap:48px!important}.gx-10{column-gap:48px!important}.gy-10{row-gap:48px!important}.m-11{margin:64px!important}.mt-11{margin-top:64px!important}.mr-11{margin-right:64px!important}.mb-11{margin-bottom:64px!important}.ml-11{margin-left:64px!important}.mx-11{margin-left:64px!important;margin-right:64px!important}.my-11{margin-top:64px!important;margin-bottom:64px!important}.p-11{padding:64px!important}.pt-11{padding-top:64px!important}.pr-11{padding-right:64px!important}.pb-11{padding-bottom:64px!important}.pl-11{padding-left:64px!important}.px-11{padding-left:64px!important;padding-right:64px!important}.py-11{padding-top:64px!important;padding-bottom:64px!important}.g-11{gap:64px!important}.gx-11{column-gap:64px!important}.gy-11{row-gap:64px!important}.m-12{margin:80px!important}.mt-12{margin-top:80px!important}.mr-12{margin-right:80px!important}.mb-12{margin-bottom:80px!important}.ml-12{margin-left:80px!important}.mx-12{margin-left:80px!important;margin-right:80px!important}.my-12{margin-top:80px!important;margin-bottom:80px!important}.p-12{padding:80px!important}.pt-12{padding-top:80px!important}.pr-12{padding-right:80px!important}.pb-12{padding-bottom:80px!important}.pl-12{padding-left:80px!important}.px-12{padding-left:80px!important;padding-right:80px!important}.py-12{padding-top:80px!important;padding-bottom:80px!important}.g-12{gap:80px!important}.gx-12{column-gap:80px!important}.gy-12{row-gap:80px!important}.row{display:flex;flex-direction:row}@media(max-width:1279px){.row.adaptive{flex-direction:column}}.column{display:flex;flex-direction:column}.f-grid{display:flex;flex-direction:row;flex-wrap:wrap}.grid{display:grid}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.items-start{align-items:flex-start!important}.items-center{align-items:center!important}.items-end{align-items:flex-end!important}.justify-start{justify-content:flex-start!important}.justify-center{justify-content:center!important}.justify-between{justify-content:space-between!important}.justify-end{justify-content:flex-end!important}.w-100{width:100%}.w-auto{width:auto!important}.w-fit{width:fit-content!important}.w-200{width:200%}.h-100{height:100%}.min-w-0{min-width:0!important}.overflow-hidden{overflow:hidden!important}.overflow-auto{overflow:auto!important}.fs-xs{font-size:12px}.fs-sm{font-size:13px}.fs-md{font-size:14px}.fs-base{font-size:15px}.fs-lg{font-size:16px}.fs-xl{font-size:20px}.text-left{text-align:left!important}.text-center{text-align:center!important}.text-right{text-align:right!important}.text-uppercase{text-transform:uppercase!important}.text-nowrap{white-space:nowrap!important}.d-none{display:none!important}.d-block{display:block!important}.d-inline-flex{display:inline-flex!important}.d-flex{display:flex!important}.d-grid{display:grid!important}@media(max-width:767px){.grid-2,.grid-3{grid-template-columns:1fr}}*{box-sizing:border-box}html,body{padding:0;margin:0}body{background-color:#16161e;color:#c0caf5}*::-webkit-scrollbar-corner{background:transparent;height:1px}.ph.normalize{position:relative;top:.15em}html,body{height:100%}*::-webkit-scrollbar{width:10px}*::-webkit-scrollbar-track{width:10px;background:#16161e;cursor:pointer}*::-webkit-scrollbar-thumb{width:10px;background:#414868;cursor:default}*::-webkit-scrollbar-corner{background:transparent}*::-webkit-scrollbar-button{display:none}#app{display:flex;height:100vh;height:100dvh;overflow:hidden}.app-main{flex:1 1 0;min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden;background:#16161e}.app-sidebar{width:380px;min-width:380px;max-width:380px;display:flex;flex-direction:column;background:#1f2335;border-right:2px solid rgba(192,202,245,.24);overflow:hidden;flex-shrink:0;transition:width .22s ease,min-width .22s ease,max-width .22s ease,border-color .22s ease,transform .28s ease}.app-sidebar.is-hidden-by-artifacts{width:0;min-width:0;max-width:0;border-right-color:transparent}@media(max-width:1280px){.app-sidebar{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;width:min(380px,92vw)!important;min-width:min(380px,92vw)!important;transform:translate(-100%);transition:transform .28s ease}.app-sidebar.is-mobile-open{transform:translate(0)}.app-sidebar.is-hidden-by-artifacts{width:min(380px,92vw)!important;min-width:min(380px,92vw)!important;max-width:min(380px,92vw)!important;border-right-color:#c0caf53d}}@media(max-width:980px){.app-sidebar,.app-sidebar.is-hidden-by-artifacts{width:100vw!important;min-width:100vw!important;max-width:100vw!important}}.sidebar-header{padding:15px;border-bottom:2px solid rgba(192,202,245,.24);display:flex;flex-direction:column;gap:8px}.sidebar-controls-row{display:flex;align-items:center;gap:8px}.sidebar-controls-row .sidebar-profile-select{flex:1;min-width:0}.sidebar-logo{display:flex;align-items:center;gap:8px;text-decoration:none}.sidebar-logo img{width:28px;height:28px}.sidebar-logo span{font-size:18px;font-weight:700;color:#c0caf5;letter-spacing:-.3px}.sidebar-sessions{flex:1;overflow:hidden;display:flex;flex-direction:column}.sessions-header{display:flex;align-items:center;justify-content:space-between;padding:8px 15px;gap:8px}.sessions-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#787c99}.sessions-refresh-btn{font-size:14px;color:#787c99;transition:color .15s,transform .15s}.sessions-refresh-btn:hover{color:#c0caf5}.sessions-refresh-btn.is-spinning i{animation:spin .8s linear infinite}.sidebar-profile-select{position:relative}.sidebar-profile-select select{width:100%;-moz-appearance:none;appearance:none;-webkit-appearance:none;min-height:46px;font-family:inherit;font-size:13px;font-weight:500;padding:5px 34px 5px 15px;border:2px solid rgba(192,202,245,.24);border-bottom-width:6px;border-bottom-color:#c0caf5;color:#c0caf5;background-color:#c0caf50b;cursor:pointer;transition:border-color .2s ease,background-color .2s ease;outline:none}.sidebar-profile-select select:hover{border-bottom-color:#787c99}.sidebar-profile-select select:focus{outline:2px solid #E0AF68;outline-offset:3px;border-color:#7aa2f7;background-color:transparent}.sidebar-profile-select select option{background:#1f2335;color:#c0caf5}.sidebar-profile-select:after{content:"";position:absolute;right:15px;top:50%;transform:translateY(-50%);width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid #A9B1D6;pointer-events:none}.session-item{display:flex;align-items:flex-start;gap:8px;padding:8px 15px;cursor:pointer;border-radius:0;transition:background .15s ease;position:relative}.session-item:hover{background:#c0caf50b}.session-item:hover .session-actions{opacity:1}@media(hover:none){.session-item .session-actions{opacity:1}}.session-item.is-active{background:#c0caf516;border-left:6px solid #7AA2F7;padding-left:9px}.session-item.is-pinned{background:#e0af6812}.session-item.is-pinned .session-pin-icon{opacity:1;color:#e0af68}.session-item.is-pinned .session-name{color:#e0af68}.session-pin-icon{color:#787c99;font-size:14px;opacity:0;transition:opacity .15s ease;flex-shrink:0;margin-top:2px}.session-info{flex:1;overflow:hidden}.session-name{font-size:13px;color:#a9b1d6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4}.session-time{font-size:11px;color:#787c99;line-height:1.4;margin-top:2px}.session-preview{font-size:12px;color:#c0caf5;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;line-height:1.4;margin-top:3px}.session-actions{display:flex;gap:2px;opacity:0;transition:opacity .15s ease;flex-shrink:0;align-self:flex-start;margin-top:1px}.session-actions .btn-icon{width:26px;height:26px;font-size:14px}.chat-area{flex:1 1 0;min-height:0;min-width:0;display:flex;flex-direction:column;overflow:hidden;background:#16161e}.chat-header{display:flex;align-items:center;gap:8px;padding:8px 15px;border-bottom:2px solid rgba(192,202,245,.24);background:#1f2335;flex-shrink:0;min-height:54px}.chat-header-info{flex:1;display:flex;align-items:center;gap:8px;overflow:hidden;min-width:0}@media(max-width:768px){.chat-header-info{flex-direction:column;align-items:flex-start;gap:2px}}.chat-header-title{font-size:14px;font-weight:600;color:#c0caf5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-shrink:1;min-width:0}.btn-sidebar-toggle{display:none}@media(max-width:1280px){.btn-sidebar-toggle{display:flex}}.context-bar{display:flex;align-items:center;flex-shrink:0;cursor:default}.profile-badge{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;background:#c0caf50b;border:2px solid rgba(192,202,245,.24);font-size:12px;color:#a9b1d6;white-space:nowrap}.message-list{flex:1;overflow-y:auto;overflow-x:hidden;padding:22px 15px;display:flex;flex-direction:column;gap:15px;min-height:0}@media(max-width:768px){.message-list{padding-left:10px;padding-right:10px}}.message-list .vue-recycle-scroller{flex:1}.message-list-inner{display:flex;flex-direction:column;gap:34px;width:100%;max-width:920px;margin:0 auto;padding:34px 22px;transition:opacity .2s ease}@media(max-width:768px){.message-list-inner{padding-left:0;padding-right:0}}.message-list-inner.is-hidden{opacity:0;pointer-events:none}.msg-user{display:flex;justify-content:flex-end;gap:8px}.msg-user-bubble{background:#7aa2f7;color:#16161e;padding:8px 15px;font-size:14px;line-height:1.6;word-wrap:break-word;width:100%}.msg-user-bubble .msg-user-quote{margin:0 0 5px;padding:2px 0 2px 8px;border-left:3px solid rgba(22,22,30,.35);opacity:.7;font-size:13px}.msg-user-attachments{display:flex;flex-wrap:wrap;gap:5px;margin-top:5px}.msg-user-image{width:80px;height:80px;object-fit:cover;cursor:pointer;transition:opacity .15s}.msg-user-image:hover{opacity:.75}.msg-user-file-pill{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;background:#16161e4d;font-size:12px}.msg-time{font-size:11px;color:#787c99;line-height:1;margin-top:4px}.msg-meta-row{display:flex;align-items:center;gap:8px;margin-top:2px;min-width:0}.msg-meta-item{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:#787c99;white-space:nowrap}.msg-meta-item i{font-size:12px;opacity:.7}.msg-user-wrap{display:flex;flex-direction:column;align-items:flex-end;max-width:70%}@media(max-width:768px){.msg-user-wrap{max-width:90%}}.msg-user-footer{display:flex;align-items:center;gap:5px;align-self:flex-end}.msg-copy-btn{width:22px;height:22px;min-width:22px;padding:0;font-size:12px;opacity:.5;transition:opacity .15s}.msg-copy-btn:hover{opacity:1}.msg-meta-row>.msg-copy-btn{margin-left:auto}.msg-meta-row .msg-rate-btn{width:22px;height:22px;min-width:22px;padding:0;font-size:13px}.msg-assistant{display:flex;flex-direction:column;gap:8px;max-width:100%}.planning-indicator{display:flex;align-items:center;gap:8px;font-size:13px;font-style:italic;color:#787c99;padding:5px 0}.planning-indicator.is-executing{color:#a9b1d6;font-style:normal}.planning-label{opacity:.75;transition:opacity .2s}.msg-assistant-avatar{width:28px;height:28px;border-radius:50%;flex-shrink:0}.msg-assistant-content{font-size:14px;line-height:1.7;color:#c0caf5}.msg-assistant-content p{margin:0 0 15px}.msg-assistant-content p:last-child{margin-bottom:0}.msg-assistant-content h1,.msg-assistant-content h2,.msg-assistant-content h3,.msg-assistant-content h4{margin:22px 0 8px;color:#c0caf5}.msg-assistant-content ul,.msg-assistant-content ol{padding-left:22px;margin-bottom:15px}.msg-assistant-content li{margin-bottom:8px}.msg-assistant-content blockquote{margin:8px 0;padding-left:15px;border-left:6px solid #7AA2F7;color:#a9b1d6}.msg-assistant-content a{color:#7aa2f7}.msg-assistant-content strong{color:#c0caf5}.msg-assistant-content hr{border:none;border-top:1px solid rgba(192,202,245,.24);margin:15px 0}.msg-assistant-content .table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:15px 0}.msg-assistant-content .table{margin:15px 0}.msg-assistant-content .table thead{border-bottom:2px solid #C0CAF5}.msg-assistant-content .table tbody tr{transition:background .2s ease}.msg-assistant-content .table tbody tr:hover{background:#7aa2f714}.msg-assistant-content .table tbody tr:hover td:first-child{color:#7aa2f7}.msg-assistant-content .table tr th,.msg-assistant-content .table tr td{padding:8px 15px;font-size:13px;vertical-align:middle;border-bottom:2px solid rgba(192,202,245,.08)}.msg-assistant-content .table tr th{color:#c0caf5;background:#c0caf50a;text-transform:uppercase;letter-spacing:.06em}.msg-assistant-content :not(pre)>code{font-family:IBM Plex Mono,monospace;font-size:13px;background:#c0caf516;padding:1px 5px;color:#7dcfff}.msg-assistant-content .code-block{margin:15px 0;background:#1f2335;border:2px solid rgba(192,202,245,.24);overflow:hidden}.msg-assistant-content .code-block .code-header{display:flex;align-items:center;justify-content:space-between;padding:5px 15px;background:#c0caf516;border-bottom:2px solid rgba(192,202,245,.24);font-size:12px;color:#787c99;font-family:IBM Plex Mono,monospace}.msg-assistant-content .code-block pre{margin:0;background:#1f2335!important}.msg-assistant-content .code-block pre code{font-family:IBM Plex Mono,monospace;font-size:13px;display:block;padding:15px;overflow-x:auto}.thinking-card{margin-bottom:8px}.thinking-card summary{list-style:none;display:flex;align-items:center;gap:8px;padding:8px 15px;cursor:pointer;color:#787c99;font-size:13px;font-style:italic;background:#c0caf50b;border:2px solid rgba(192,202,245,.24);transition:background .15s ease;-webkit-user-select:none;user-select:none}.thinking-card summary::-webkit-details-marker{display:none}.thinking-card summary:hover{background:#c0caf516}.thinking-card[open] summary{border-bottom-color:transparent}.thinking-card .thinking-chevron{margin-left:auto;font-size:18px;color:#787c99;flex-shrink:0;transition:transform .15s ease}.thinking-card[open] .thinking-chevron{transform:rotate(180deg)}.thinking-card .thinking-body{padding:15px;font-size:13px;font-style:italic;color:#a9b1d6;line-height:1.6;background:#c0caf50b;border:2px solid rgba(192,202,245,.24);border-top:none;white-space:pre-wrap}.plan-card{border:2px solid #BB9AF7;border-left-width:6px;border-left-color:#bb9af7;overflow:hidden;font-size:13px;margin-bottom:8px}.plan-card summary{list-style:none;display:flex;align-items:center;gap:8px;padding:8px 15px;cursor:pointer;background:#bb9af714;color:#bb9af7;font-size:13px;-webkit-user-select:none;user-select:none}.plan-card summary::-webkit-details-marker{display:none}.plan-card summary:hover{background:#bb9af724}.plan-card summary .plan-chevron{margin-left:auto;font-size:18px;color:#bb9af799;transition:transform .15s ease;flex-shrink:0}.plan-card[open] .plan-chevron{transform:rotate(180deg)}.plan-card .plan-body{padding:15px;font-size:13px;color:#a9b1d6;line-height:1.6;background:#bb9af70a;border-top:2px solid rgba(187,154,247,.3)}.plan-card .plan-body p{margin:0 0 8px}.plan-card .plan-body p:last-child{margin-bottom:0}.plan-card .plan-body ul,.plan-card .plan-body ol{padding-left:22px;margin-bottom:8px}.plan-card .plan-body li{margin-bottom:5px}.plan-card .plan-body strong{color:#c0caf5}.tool-card{border:2px solid rgba(192,202,245,.24);border-left-width:6px;margin-bottom:8px;border-left-color:#7aa2f7;overflow:hidden;font-size:13px}.tool-card.is-success{border-left-color:#9ece6a}.tool-card.is-error{border-left-color:#f7768e}.tool-card summary{list-style:none;display:flex;align-items:center;gap:8px;padding:8px 15px;cursor:pointer;background:#c0caf50b;color:#a9b1d6;-webkit-user-select:none;user-select:none}.tool-card summary::-webkit-details-marker{display:none}.tool-card summary:hover{background:#c0caf516}.tool-card .tool-name{flex:1;font-family:IBM Plex Mono,monospace;font-size:12px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tool-card .tool-running-time{font-family:IBM Plex Mono,monospace;font-size:11px;color:#787c99;white-space:nowrap}.tool-card .tool-status-icon{display:flex;align-items:center;justify-content:center;width:18px;height:18px;font-size:18px;flex-shrink:0}.tool-card .tool-emoji{font-size:18px;line-height:1;flex-shrink:0}.tool-card .tool-chevron{font-size:18px;color:#787c99;flex-shrink:0;transition:transform .15s ease}.tool-card[open] .tool-chevron{transform:rotate(180deg)}.tool-card-body{background:#c0caf50b;border-top:2px solid rgba(192,202,245,.24)}.tool-running-banner{display:flex;align-items:center;gap:8px;padding:8px 15px;color:#a9b1d6;background:#7aa2f714;border-bottom:1px solid rgba(192,202,245,.24);font-size:12px}.tool-section{padding:8px 15px}.tool-section+.tool-section{border-top:1px solid rgba(192,202,245,.24)}.tool-section-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#787c99;margin-bottom:5px}.tool-code{font-family:IBM Plex Mono,monospace;font-size:12px;color:#a9b1d6;white-space:pre-wrap;word-break:break-all;max-height:200px;overflow-y:auto}.subagent-steps{display:flex;flex-direction:column;gap:5px;padding:5px 15px 15px;background:#c0caf50b}.subagent-planning-indicator{display:flex;align-items:center;gap:8px;padding:5px 15px;font-size:12px;font-style:italic;color:#787c99;background:#c0caf50b}.summary-card{border:2px solid #BB9AF7;overflow:hidden;font-size:13px}.summary-card summary{list-style:none;display:flex;align-items:center;gap:8px;padding:8px 15px;cursor:pointer;background:#bb9af714;color:#bb9af7;-webkit-user-select:none;user-select:none}.summary-card summary::-webkit-details-marker{display:none}.compression-notice{font-size:12px}.compression-notice summary{list-style:none;text-align:center;padding:8px;color:#787c99;display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.compression-notice summary::-webkit-details-marker{display:none}.compression-notice summary:before,.compression-notice summary:after{content:"";flex:1;height:1px;background:#c0caf53d}.compression-notice .compression-counts{opacity:.7}.compression-notice .compression-chevron{font-size:18px;transition:transform .15s ease}.compression-notice[open] .compression-chevron{transform:rotate(180deg)}.compression-notice .compression-body{padding:15px;font-size:13px;color:#a9b1d6;line-height:1.6;background:#c0caf50b;border:2px solid rgba(192,202,245,.24)}.input-bar{flex-shrink:0;padding:8px 15px 15px;background:#16161e;border-top:2px solid rgba(192,202,245,.24)}.input-dropzone{position:relative}.input-dropzone.is-dragging:after{content:"Drop files here";position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#7aa2f71f;border:2px dashed #7AA2F7;font-size:14px;color:#7aa2f7;pointer-events:none;z-index:10}.file-preview-strip{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:5px}.file-preview-image{position:relative;width:60px;height:60px}.file-preview-image img{width:100%;height:100%;object-fit:cover;border:2px solid rgba(192,202,245,.24)}.file-preview-pill{display:inline-flex;align-items:center;gap:5px;padding:5px 8px;background:#c0caf50b;border:2px solid rgba(192,202,245,.24);font-size:12px;color:#a9b1d6;max-width:180px}.file-preview-pill span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-preview-remove{background:none;border:none;cursor:pointer;color:#787c99;padding:0;display:flex;align-items:center;font-size:14px;transition:color .15s ease;flex-shrink:0}.file-preview-remove:hover{color:#f7768e}.upload-progress{height:2px;background:#c0caf516;margin-bottom:5px;overflow:hidden}.upload-progress-fill{height:100%;background:#7aa2f7;transition:width .2s ease}.input-row{display:flex;align-items:center;gap:8px;background:#1f2335;border:2px solid rgba(192,202,245,.24);padding:8px;transition:border-color .15s ease;max-width:920px;margin:0 auto}.input-row:focus-within{border-color:#7aa2f7}.input-textarea{flex:1;background:none;border:none;outline:none;resize:none;color:#c0caf5;font-size:14px;line-height:1.5;font-family:inherit;min-height:24px;max-height:144px;overflow-y:auto;padding:2px 0}.input-textarea::placeholder{color:#787c99}.welcome-screen{flex:1;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:34px;gap:34px;text-align:center}@media(max-width:768px){.welcome-screen{padding:52px 15px 15px;gap:15px;justify-content:flex-start}}.welcome-logo{display:flex;flex-direction:column;align-items:center;gap:8px}.welcome-logo img{width:64px;height:64px}.welcome-logo h1{font-size:32px;font-weight:700;letter-spacing:-.5px;color:#c0caf5;margin:0}.welcome-logo p{font-size:15px;color:#a9b1d6;margin:0}@media(max-width:768px){.welcome-logo{flex-direction:row;flex-wrap:wrap;justify-content:center;gap:8px}.welcome-logo img{width:36px;height:36px}.welcome-logo h1{font-size:22px}.welcome-logo p{font-size:13px;flex-basis:100%}}.welcome-profiles{display:flex;gap:15px;flex-wrap:wrap;justify-content:center;max-width:600px}@media(max-width:768px){.welcome-profiles{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;width:100%;max-width:100%}}.welcome-profile-card{display:flex;flex-direction:column;align-items:center;gap:8px;padding:15px;background:#c0caf50b;border:2px solid rgba(192,202,245,.24);cursor:pointer;transition:border-color .15s ease,background .15s ease;width:160px;text-align:center}.welcome-profile-card:hover,.welcome-profile-card.is-selected{border-color:#7aa2f7;background:#c0caf516}.welcome-profile-card.is-selected{border-color:#7aa2f7}.welcome-profile-card .profile-icon{font-size:32px;color:#7aa2f7}.welcome-profile-card .profile-name{font-size:14px;font-weight:600;color:#c0caf5}.welcome-profile-card .profile-desc{font-size:12px;color:#787c99;line-height:1.4}@media(max-width:768px){.welcome-profile-card{width:auto;padding:10px;gap:6px}.welcome-profile-card .profile-icon{font-size:22px}.welcome-profile-card .profile-name{font-size:13px}.welcome-profile-card .profile-desc{font-size:11px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}}.empty-chat{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:15px;color:#787c99;padding:34px}.empty-chat .empty-icon{font-size:56px;opacity:.4}.empty-chat p{font-size:15px;margin:0}.spinner{display:inline-block;width:14px;height:14px;border:2px solid rgba(192,202,245,.24);border-top-color:#7aa2f7;border-radius:50%;animation:spin .6s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.fade-enter-active,.fade-leave-active{transition:opacity .15s ease}.fade-enter-from,.fade-leave-to{opacity:0}.msg-enter{animation:msgEnter .2s ease both}@keyframes msgEnter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.slide-left-enter-active,.slide-left-leave-active{transition:transform .28s ease,opacity .28s ease}.slide-left-enter-from,.slide-left-leave-to{transform:translate(-100%);opacity:0}.modal-enter-active,.modal-leave-active{transition:opacity .28s ease}.modal-enter-active .modal-panel,.modal-leave-active .modal-panel{transition:opacity .28s ease,margin-top .28s ease}.modal-enter-from,.modal-leave-to{opacity:0}.modal-enter-from .modal-panel,.modal-leave-to .modal-panel{opacity:0;margin-top:200px}.btn-icon:not(.with-rotate) .ph{transform:none!important;transition:none!important}.tool-card[open] .tool-chevron,.thinking-card[open] .tool-chevron{transform:rotate(180deg)!important}
diff --git a/webclient/dist/assets/index-C_y0oHao.css b/webclient/dist/assets/index-C_y0oHao.css
deleted file mode 100644
index 8dbd972..0000000
--- a/webclient/dist/assets/index-C_y0oHao.css
+++ /dev/null
@@ -1 +0,0 @@
-@charset "UTF-8";.vue-recycle-scroller__resize-observer[data-v-08cc04ab]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;pointer-events:none;z-index:-1}.vue-recycle-scroller{position:relative}.vue-recycle-scroller.direction-vertical:not(.page-mode){overflow-y:auto}.vue-recycle-scroller.direction-horizontal:not(.page-mode){overflow-x:auto}.vue-recycle-scroller.grid-mode:not(.page-mode){overflow:auto}.vue-recycle-scroller.direction-horizontal{display:flex}.vue-recycle-scroller__slot{flex:auto 0 0}.vue-recycle-scroller__item-wrapper{flex:1;box-sizing:border-box;overflow:hidden;position:relative}.vue-recycle-scroller.ready .vue-recycle-scroller__item-view{position:absolute;top:0;left:0;will-change:transform}.vue-recycle-scroller.direction-vertical .vue-recycle-scroller__item-wrapper{width:100%}.vue-recycle-scroller.direction-horizontal .vue-recycle-scroller__item-wrapper{height:100%}.vue-recycle-scroller.ready.direction-vertical .vue-recycle-scroller__item-view{width:100%}.vue-recycle-scroller.ready.direction-horizontal .vue-recycle-scroller__item-view{height:100%}.session-list-wrap[data-v-e3404414]{flex:1;overflow:hidden;display:flex;flex-direction:column}.session-scroller[data-v-e3404414]{flex:1;overflow-y:auto}.empty-sessions[data-v-e3404414]{display:flex;flex-direction:column;align-items:center;gap:8px;padding:32px 16px;color:var(--color-text-dark, #787c99);font-size:13px}.empty-sessions i[data-v-e3404414]{font-size:32px;opacity:.4}.empty-sessions p[data-v-e3404414]{margin:0}.sessions-loading[data-v-e3404414]{display:flex;align-items:center;justify-content:center;gap:10px;padding:28px 16px;color:var(--color-text-dark, #787c99);font-size:12px}.sessions-loading-more[data-v-e3404414]{padding:10px 16px 14px}.sessions-spinner[data-v-e3404414]{width:16px;height:16px;border:2px solid var(--color-border, #3b4261);border-top-color:var(--color-accent, #7aa2f7);border-radius:50%;animation:sessions-spin-e3404414 .8s linear infinite}@keyframes sessions-spin-e3404414{to{transform:rotate(360deg)}}.ptr-indicator[data-v-e3404414]{position:absolute;top:0;left:0;right:0;z-index:10;display:flex;align-items:center;justify-content:center;gap:8px;padding:8px;font-size:12px;color:var(--color-text-dark, #787c99);pointer-events:none;transition:opacity .15s,transform .15s;will-change:transform,opacity}.ptr-spinner[data-v-e3404414]{width:16px;height:16px;border:2px solid var(--color-border, #3b4261);border-top-color:var(--color-accent, #7aa2f7);border-radius:50%;transition:transform .15s}.ptr-spinning[data-v-e3404414]{animation:sessions-spin-e3404414 .8s linear infinite}.ptr-pulled[data-v-e3404414]{transition:transform .15s}@media(min-width:769px){.ptr-indicator[data-v-e3404414]{display:none}}.sidebar-close-btn[data-v-72f966ee]{display:none}@media(max-width:1280px){.sidebar-close-btn[data-v-72f966ee]{display:flex;margin-left:auto}}.sidebar-footer[data-v-72f966ee]{padding:12px 16px;border-top:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;gap:8px}.user-info[data-v-72f966ee]{display:flex;align-items:center;gap:8px;text-decoration:none;color:inherit;flex:1;min-width:0;cursor:pointer}.user-info:hover .user-name[data-v-72f966ee]{color:var(--color-text-primary)}.user-avatar[data-v-72f966ee]{width:28px;height:28px;border-radius:50%;object-fit:cover;flex-shrink:0}.user-avatar-fallback[data-v-72f966ee]{display:flex;align-items:center;justify-content:center;background:var(--color-primary);color:#fff;font-size:12px;font-weight:600}.user-name[data-v-72f966ee]{font-size:13px;color:var(--color-text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-footer-actions[data-v-72f966ee]{display:flex;align-items:center;gap:8px}.admin-link[data-v-72f966ee]{text-decoration:none}.lightbox-panel[data-v-9d2a8160]{max-width:90vw;min-height:unset;width:fit-content;cursor:default}.lightbox-body[data-v-9d2a8160]{display:flex;align-items:center;justify-content:center;padding:0;max-height:calc(90vh - 60px);overflow:hidden}.lightbox-img[data-v-9d2a8160]{display:block;max-width:100%;max-height:calc(90vh - 60px);object-fit:contain}.selection-toolbar[data-v-81606e7c]{position:fixed;transform:translate(-50%);z-index:900;pointer-events:all;background:#e0af68;color:#000}.artifacts-panel[data-v-a0310b0e]{width:var(--artifacts-width, min(600px, 42vw));min-width:var(--artifacts-width, min(600px, 42vw));max-width:var(--artifacts-width, min(600px, 42vw));display:flex;flex-direction:column;background:var(--surface, #1e1e2e);border-left:1px solid var(--border, #2a2a3e);min-height:0;margin-right:calc(-1 * var(--artifacts-width, min(600px, 42vw)));opacity:0;pointer-events:none;transform:translate(100%);position:relative;transition:margin-right .22s ease,opacity .22s ease,transform .22s ease}.artifacts-panel.is-open[data-v-a0310b0e]{margin-right:0;opacity:1;pointer-events:auto;transform:translate(0)}.artifacts-panel.is-resizing[data-v-a0310b0e]{transition:none}.artifacts-resize-handle[data-v-a0310b0e]{position:absolute;top:0;left:-4px;bottom:0;width:8px;z-index:2;cursor:col-resize;touch-action:none}.artifacts-resize-handle[data-v-a0310b0e]:after{content:"";position:absolute;top:0;left:3px;width:1px;height:100%;background:transparent;transition:background .15s ease}.artifacts-resize-handle[data-v-a0310b0e]:hover:after,.artifacts-panel.is-resizing .artifacts-resize-handle[data-v-a0310b0e]:after{background:var(--accent, #4ec9b0)}.artifacts-header[data-v-a0310b0e]{height:64px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 14px;border-bottom:1px solid var(--border, #2a2a3e)}.artifacts-title[data-v-a0310b0e]{font-size:14px;font-weight:600;color:var(--text, #cdd6f4)}.artifacts-count[data-v-a0310b0e]{margin-top:2px;font-size:12px;color:var(--text-muted, #6c7086)}.artifacts-empty[data-v-a0310b0e]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--text-muted, #6c7086);font-size:13px}.artifacts-empty i[data-v-a0310b0e]{font-size:28px}.artifacts-list[data-v-a0310b0e]{max-height:232px;overflow-y:auto;border-bottom:1px solid var(--border, #2a2a3e)}.artifact-item[data-v-a0310b0e]{width:100%;min-height:58px;display:flex;align-items:center;gap:10px;padding:10px 14px;border:0;border-left:3px solid transparent;background:transparent;color:var(--text, #cdd6f4);text-align:left;cursor:pointer}.artifact-item[data-v-a0310b0e]:hover{background:#ffffff08}.artifact-item.is-active[data-v-a0310b0e]{border-left-color:var(--accent, #4ec9b0);background:#4ec9b014}.artifact-icon[data-v-a0310b0e]{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;color:var(--accent, #4ec9b0);background:var(--accent-muted, #313244)}.artifact-info[data-v-a0310b0e]{min-width:0;flex:1;display:flex;flex-direction:column;gap:2px}.artifact-title[data-v-a0310b0e],.artifact-detail-title[data-v-a0310b0e],.artifact-detail-filename[data-v-a0310b0e]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.artifact-title[data-v-a0310b0e]{font-size:13px;font-weight:500}.artifact-meta[data-v-a0310b0e]{font-size:11px;color:var(--text-muted, #6c7086)}.artifact-detail[data-v-a0310b0e]{flex:1;min-height:0;display:flex;flex-direction:column}.artifact-detail-header[data-v-a0310b0e]{padding:12px 14px 8px}.artifact-detail-title[data-v-a0310b0e]{font-size:14px;font-weight:600;color:var(--text, #cdd6f4)}.artifact-detail-filename[data-v-a0310b0e]{margin-top:3px;font-size:12px;color:var(--text-muted, #6c7086)}.artifact-actions[data-v-a0310b0e]{display:grid;grid-template-columns:repeat(auto-fit,minmax(42px,1fr));gap:6px;padding:0 14px 12px}.artifact-action[data-v-a0310b0e]{height:32px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border, #2a2a3e);background:var(--surface-elevated, #242438);color:var(--text, #cdd6f4);text-decoration:none;cursor:pointer}.artifact-action[data-v-a0310b0e]:hover{border-color:var(--accent, #4ec9b0);color:var(--accent, #4ec9b0)}.artifact-preview[data-v-a0310b0e]{flex:1;min-height:0;border-top:1px solid var(--border, #2a2a3e);background:#11111b}.artifact-frame[data-v-a0310b0e],.artifact-image[data-v-a0310b0e],.artifact-video[data-v-a0310b0e]{width:100%;height:100%;border:0;display:block}.artifact-image[data-v-a0310b0e],.artifact-video[data-v-a0310b0e]{object-fit:contain}.artifact-source[data-v-a0310b0e]{height:100%;overflow:auto;background:#11111b}.artifact-source-code[data-v-a0310b0e],.artifact-source-error[data-v-a0310b0e]{margin:0;padding:14px;white-space:pre;font-family:IBM Plex Mono,monospace;font-size:12px;line-height:1.6;color:var(--text, #cdd6f4)}.artifact-source-error[data-v-a0310b0e]{color:var(--error, #f7768e)}.artifact-source-state[data-v-a0310b0e]{display:flex;align-items:center;gap:8px;padding:14px;color:var(--text-muted, #6c7086);font-size:12px}.artifact-no-preview[data-v-a0310b0e]{height:100%;min-height:220px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--text-muted, #6c7086);font-size:13px}.artifact-no-preview i[data-v-a0310b0e]{font-size:28px}@media(max-width:980px){.artifacts-panel[data-v-a0310b0e]{position:fixed;top:0;right:0;bottom:0;z-index:120;margin-right:0;transform:translate(100%);width:100vw;min-width:100vw;max-width:100vw}.artifacts-resize-handle[data-v-a0310b0e]{display:none}.artifacts-panel.is-open[data-v-a0310b0e]{transform:translate(0)}}@media(min-width:981px){.artifacts-close[data-v-a0310b0e]{display:none}}@media(prefers-reduced-motion:reduce){.artifacts-panel[data-v-a0310b0e]{transition:none}}.login-overlay[data-v-6939826e]{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#111;z-index:9999}.login-card[data-v-6939826e]{display:flex;flex-direction:column;align-items:center;gap:16px;padding:48px 40px;border:1px solid var(--color-border);border-radius:16px;max-width:360px;width:90%}.login-logo[data-v-6939826e]{width:64px;height:64px}.login-title[data-v-6939826e]{font-size:24px;font-weight:700;color:var(--color-text-primary);margin:0}.login-subtitle[data-v-6939826e]{font-size:14px;color:var(--color-text-secondary);margin:0}.login-btn[data-v-6939826e]{margin-top:8px;width:100%;justify-content:center}.welcome-sidebar-btn[data-v-1bfcf8dc]{display:none;position:absolute;top:12px;left:12px}@media(max-width:1280px){.welcome-sidebar-btn[data-v-1bfcf8dc]{display:flex}}.context-bar-pct[data-v-fe8d0787]{font-size:11px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--color-success);white-space:nowrap}.context-bar-pct.is-warn[data-v-fe8d0787]{color:var(--color-warning)}.context-bar-pct.is-crit[data-v-fe8d0787]{color:var(--color-error)}.btn-artifacts-toggle[data-v-09035f4f]{position:relative}.artifact-count[data-v-09035f4f]{position:absolute;top:-3px;right:-3px;min-width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;padding:0 4px;font-size:10px;line-height:1;background:var(--accent, #4ec9b0);color:#11111b}.content-card[data-v-929d4ed2]{margin:8px 0;background:var(--surface, #1e1e2e);border:1px solid var(--border, #2a2a3e);overflow:hidden}.content-card summary[data-v-929d4ed2]{display:flex;align-items:center;gap:8px;padding:10px 14px;cursor:pointer;-webkit-user-select:none;user-select:none;list-style:none}.content-card summary[data-v-929d4ed2]::-webkit-details-marker{display:none}.content-icon[data-v-929d4ed2]{font-size:1.2em;line-height:1}.content-title[data-v-929d4ed2]{flex:1;font-size:.9em;font-weight:500;color:var(--text, #cdd6f4);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.content-badge[data-v-929d4ed2]{font-size:.7em;text-transform:uppercase;padding:2px 8px;background:var(--accent-muted, #313244);color:var(--accent, #4ec9b0)}.content-actions[data-v-929d4ed2]{display:inline-flex;align-items:center;gap:4px}.content-actions a[data-v-929d4ed2],.content-actions button[data-v-929d4ed2]{width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border, #2a2a3e);background:var(--surface-elevated, #242438);color:var(--text, #cdd6f4);text-decoration:none;cursor:pointer}.content-actions a[data-v-929d4ed2]:hover,.content-actions button[data-v-929d4ed2]:hover{color:var(--accent, #4ec9b0);border-color:var(--accent, #4ec9b0)}.content-chevron[data-v-929d4ed2]{transition:transform .2s;color:var(--text-muted, #6c7086)}.content-card[open] .content-chevron[data-v-929d4ed2]{transform:rotate(180deg)}.content-body[data-v-929d4ed2]{border-top:1px solid var(--border, #2a2a3e);overflow:auto}.content-iframe[data-v-929d4ed2]{width:100%;height:300px;border:none;display:block}@media(min-width:768px){.content-iframe[data-v-929d4ed2]{height:500px}}.content-image[data-v-929d4ed2]{width:100%;max-height:60vh;object-fit:contain;cursor:zoom-in;display:block;background:var(--surface, #1e1e2e)}.content-video[data-v-929d4ed2]{width:100%;max-height:60vh;display:block;background:var(--surface, #1e1e2e)}.content-source[data-v-929d4ed2]{max-height:500px;overflow:auto;background:#11111b}.content-source-code[data-v-929d4ed2],.content-source-error[data-v-929d4ed2]{margin:0;padding:14px;white-space:pre;font-family:IBM Plex Mono,monospace;font-size:12px;line-height:1.6;color:var(--text, #cdd6f4)}.content-source-error[data-v-929d4ed2]{color:var(--error, #f7768e)}.content-source-state[data-v-929d4ed2]{display:flex;align-items:center;gap:8px;padding:14px;color:var(--text-muted, #6c7086);font-size:12px}.content-unknown[data-v-929d4ed2]{padding:24px;text-align:center;color:var(--text-muted, #6c7086);display:flex;flex-direction:column;align-items:center;gap:10px}.unknown-icon[data-v-929d4ed2]{font-size:2em;line-height:1}.unknown-name[data-v-929d4ed2]{font-size:.95em;font-weight:500;color:var(--text, #cdd6f4);word-break:break-word;max-width:100%}.unknown-open[data-v-929d4ed2]{display:inline-block;margin-top:4px;padding:6px 14px;border-radius:0;background:var(--accent-muted, #313244);color:var(--accent, #4ec9b0);text-decoration:none;font-size:.85em;font-weight:500;transition:background .15s}.unknown-open[data-v-929d4ed2]:hover{background:var(--border, #2a2a3e)}.content-card.is-stl .content-badge[data-v-929d4ed2]{color:#f5c2e7}.content-card.is-html .content-badge[data-v-929d4ed2]{color:#89b4fa}.content-card.is-svg .content-badge[data-v-929d4ed2]{color:#a6e3a1}.content-card.is-pdf .content-badge[data-v-929d4ed2]{color:#fab387}.content-card.is-image .content-badge[data-v-929d4ed2]{color:#89dceb}.content-card.is-video .content-badge[data-v-929d4ed2]{color:#f38ba8}.stream-cursor[data-v-81144451]{display:inline-block;width:2px;height:1em;background:currentColor;margin-left:2px;vertical-align:text-bottom;animation:blink-81144451 1s step-end infinite}@keyframes blink-81144451{0%,to{opacity:1}50%{opacity:0}}.msg-rate-btn[data-v-81144451]{opacity:.55;transition:opacity .15s,color .15s}.msg-rate-btn[data-v-81144451]:hover{opacity:1}.msg-rate-btn.active[data-v-81144451]{opacity:1;color:var(--accent, #4ec9b0)}.message-list-wrap[data-v-6967a257]{flex:1;min-height:0;position:relative;display:flex;flex-direction:column}.messages-group[data-v-6967a257]{display:flex;flex-direction:column;gap:32px}.scroll-to-bottom-btn[data-v-6967a257]{position:absolute;bottom:16px;right:16px;width:40px;height:40px;border-radius:50%;background:var(--color-secondary, #7aa2f7);color:var(--color-black, #1a1b2e);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:18px;box-shadow:0 2px 12px #0006;opacity:.9;transition:opacity .15s ease,transform .15s ease;z-index:10}.scroll-to-bottom-btn[data-v-6967a257]:hover{opacity:1;transform:translateY(-2px)}.scroll-btn-enter-active[data-v-6967a257],.scroll-btn-leave-active[data-v-6967a257]{transition:opacity .2s ease,transform .2s ease}.scroll-btn-enter-from[data-v-6967a257],.scroll-btn-leave-to[data-v-6967a257]{opacity:0;transform:translateY(8px)}.file-preview-image[data-v-0239fe0c]{position:relative}.file-preview-image .file-preview-remove[data-v-0239fe0c]{position:absolute;top:-4px;right:-4px;background:var(--surface-panel, #1f2335);border:1px solid var(--border-color-muted);width:18px;height:18px;display:flex;align-items:center;justify-content:center;font-size:10px;cursor:pointer;color:var(--color-text-dark)}.file-preview-image .file-preview-remove[data-v-0239fe0c]:hover{color:var(--color-error)}.reconnect-notice[data-v-8e422257]{display:flex;align-items:center;gap:6px;padding:4px 8px;font-size:12px;color:var(--color-warning, #e0af68);margin-bottom:4px}.reconnect-banner[data-v-1f31beae]{display:flex;align-items:center;gap:8px;padding:6px 16px;background:#e0af681a;border-bottom:1px solid rgba(224,175,104,.3);font-size:13px;color:var(--color-warning, #e0af68)}.app-shell[data-v-c8d040b7]{display:flex;flex:1 1 0;min-height:0;min-width:0;overflow:hidden}.sidebar-backdrop[data-v-c8d040b7]{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;z-index:99}@media(max-width:1280px){.sidebar-backdrop[data-v-c8d040b7]{display:block}}.artifacts-backdrop[data-v-c8d040b7]{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:119}@media(max-width:980px){.artifacts-backdrop[data-v-c8d040b7]{display:block}}.backdrop-fade-enter-active[data-v-c8d040b7],.backdrop-fade-leave-active[data-v-c8d040b7]{transition:opacity .18s ease}.backdrop-fade-enter-from[data-v-c8d040b7],.backdrop-fade-leave-to[data-v-c8d040b7]{opacity:0}@font-face{font-family:IBM Plex Mono;src:url(/assets/fonts/IBM_Plex_Mono/IBMPlexMono-Regular.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/assets/fonts/IBM_Plex_Mono/IBMPlexMono-Medium.ttf) format("truetype");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/assets/fonts/IBM_Plex_Mono/IBMPlexMono-SemiBold.ttf) format("truetype");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/assets/fonts/IBM_Plex_Mono/IBMPlexMono-Bold.ttf) format("truetype");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/assets/fonts/IBM_Plex_Mono/IBMPlexMono-Italic.ttf) format("truetype");font-weight:400;font-style:italic;font-display:swap}.container{padding:18px}.section{margin-bottom:48px}.section-title,.block{margin-bottom:34px}.block-title{margin-bottom:22px}p,.text{margin-bottom:15px}.hint{margin-top:8px}.list{padding-left:22px;margin-bottom:15px}.list-item{margin-bottom:8px}.list-nested{margin-top:8px}.table{margin-bottom:22px}.table-caption{margin-bottom:8px}.form-group{margin-bottom:15px}.label{margin-bottom:5px;display:block}.input,.textarea,.select{margin-top:5px}.toast{padding:15px}.toast-stack{gap:8px}@keyframes terminal_scan_x{0%{transform:translate(-120%)}to{transform:translate(220%)}}@keyframes terminal_scan_y{0%{transform:translateY(-120%)}to{transform:translateY(220%)}}@keyframes terminal_pulse{0%,to{box-shadow:0 0 #c0caf500}50%{box-shadow:0 0 0 4px #c0caf52e}}@keyframes panel_boot{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes overlay_reveal{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes tooltip_reveal{0%{opacity:0;transform:translate(-50%) translateY(5px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}html{font-size:100%}body{font-family:IBM Plex Mono,monospace;font-size:15px;font-weight:400;line-height:1.6;letter-spacing:0;color:#c0caf5}h1,h2,h3,h4,h5,h6{font-family:IBM Plex Mono,monospace;font-weight:600;line-height:1.25;margin:0}h1.contrast,h2.contrast,h3.contrast,h4.contrast,h5.contrast,h6.contrast{background:#c0caf5;color:#16161e;display:inline;padding:0 8px}h1{font-size:34px;letter-spacing:0}h2{font-size:26px}h3{font-size:22px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px;font-weight:500}.text,p{font-size:15px;line-height:1.6}.text-sm{font-size:13px;line-height:1.4}.text-lg{font-size:16px;line-height:1.6}.text-lead{max-width:760px;color:#c0caf5;font-size:16px;font-weight:500;line-height:1.6}.text-muted{font-size:13px;color:#787c99}.text-strong,strong{font-weight:600}.text-bold{font-weight:700}.text-italic,em{font-style:italic}.text-success{color:#9ece6a}.text-warning{color:#e0af68}.text-danger,.text-error{color:#f7768e}.text-info{color:#bb9af7}.eyebrow{display:inline-flex;width:max-content;max-width:100%;padding:5px 8px;color:#16161e;background:#7aa2f7;font-size:12px;font-weight:700;line-height:1;text-transform:uppercase}.caption{color:#787c99;font-size:12px;line-height:1.4}code,pre,.code{font-family:IBM Plex Mono,monospace;font-size:15px;line-height:1.4;background-color:#1f2335}.text-primary{color:#c0caf5}.text-secondary{color:#a9b1d6}pre{font-size:15px;line-height:1.6;white-space:pre-wrap}pre code,.code{tab-size:2;-moz-tab-size:2}.code{display:inline-flex;padding:0 5px;color:#7aa2f7;border:2px solid rgba(122,162,247,.24)}.kbd{display:inline-flex;align-items:center;min-height:24px;padding:0 8px;border:2px solid rgba(192,202,245,.24);border-bottom-color:#7aa2f7;color:#c0caf5;background:#c0caf50b;font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:700;line-height:1;text-transform:uppercase}.quote{max-width:760px;margin:0;padding:15px;border:2px solid rgba(192,202,245,.24);border-left-width:6px;color:#a9b1d6;background:#c0caf50b;font-size:15px;line-height:1.6}.quote cite{display:block;margin-top:12px;color:#7aa2f7;font-size:13px;font-style:normal;text-transform:uppercase}a{font-weight:500;text-decoration:none;color:#7aa2f7}@media(hover:hover)and (pointer:fine){a:hover{color:#e0af68}}@media(hover:none)and (pointer:coarse){a:active{color:#e0af68}}.link{font-size:inherit;font-weight:500}.label{font-size:13px;font-weight:500;line-height:1.4}.hint,.meta{font-size:12px;line-height:1.4}.table{font-size:13px;line-height:1.4}.table th{font-weight:600}.table td{font-weight:400}.list{font-size:15px;line-height:1.6}.list-item{font-size:inherit}.modal-title{font-size:20px;font-weight:600}.modal-body{font-size:15px}.toast-title{font-size:14px;font-weight:600}.toast-text{font-size:13px;line-height:1.4}.palette{display:flex;flex-direction:row;flex-wrap:wrap;gap:8px}.palette .color .color-box{width:92px;height:68px}body .bg-primary{background:#c0caf5}body .bg-secondary{background:#7aa2f7}body .bg-success{background:#9ece6a}body .bg-accent{background:#ff9e64}body .bg-info{background:#bb9af7}body .bg-warning{background:#e0af68}body .bg-error{background:#f7768e}body .text-color-primary{color:#c0caf5}body .text-color-secondary{color:#7aa2f7}body .text-color-success{color:#9ece6a}body .text-color-accent{color:#ff9e64}body .text-color-info{color:#bb9af7}body .text-color-warning{color:#e0af68}body .text-color-error{color:#f7768e}.loader{width:32px;aspect-ratio:1;--c:no-repeat linear-gradient(#FF3C00 0 0);background:var(--c) 0 0,var(--c) 0 100%,var(--c) 50% 0,var(--c) 50% 100%,var(--c) 100% 0,var(--c) 100% 100%;animation:l12 1s infinite}@keyframes l12{0%,to{background-size:20% 50%}16.67%{background-size:20% 30%,20% 30%,20% 50%,20% 50%,20% 50%,20% 50%}33.33%{background-size:20% 30%,20% 30%,20% 30%,20% 30%,20% 50%,20% 50%}50%{background-size:20% 30%,20% 30%,20% 30%,20% 30%,20% 30%,20% 30%}66.67%{background-size:20% 50%,20% 50%,20% 30%,20% 30%,20% 30%,20% 30%}83.33%{background-size:20% 50%,20% 50%,20% 50%,20% 50%,20% 30%,20% 30%}}.circle-loader{display:flex;flex-direction:row;align-items:center;gap:8px}.circle-loader .ph,.circle-loader .ph-bold{font-size:26px;transform-origin:50% 50%;animation:icon_spin 1.2s linear infinite}.progress{display:flex;flex-direction:column;gap:8px;width:100%;max-width:640px}.progress .progress-header{display:flex;align-items:center;justify-content:space-between;gap:12px;color:#a9b1d6;font-size:13px;font-weight:600;text-transform:uppercase}.progress .progress-value{color:#c0caf5;font-family:IBM Plex Mono,monospace}.progress .progress-track{position:relative;width:100%;height:18px;overflow:hidden;border:2px solid rgba(192,202,245,.24);background:#c0caf50b}.progress .progress-bar{display:block;position:relative;overflow:hidden;width:var(--progress-value, 0%);height:100%;background:#7aa2f7;transition:width .28s ease}.progress.progress-success .progress-bar{background:#9ece6a}.progress.progress-warning .progress-bar{background:#e0af68}.progress.progress-danger .progress-bar,.progress.progress-error .progress-bar{background:#f7768e}.progress.progress-striped .progress-bar{background-image:repeating-linear-gradient(90deg,transparent 0,transparent 14px,rgba(22,22,30,.2) 14px,rgba(22,22,30,.2) 16px)}.progress.progress-animated .progress-bar:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;width:48%;background:linear-gradient(90deg,transparent,rgba(192,202,245,.28),transparent);transform:translate(-120%);animation:progress_scan 1.4s ease infinite}.usage-meter{display:grid;gap:12px;width:100%;max-width:420px;padding:15px;border:2px solid rgba(192,202,245,.24);border-left-width:6px;background:#c0caf50b}.usage-meter .usage-meter-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0;font-size:16px;font-weight:700;line-height:1;text-transform:uppercase}.usage-meter .usage-meter-value{color:#7aa2f7;font-family:IBM Plex Mono,monospace;font-size:13px}.usage-meter .usage-meter-meta{margin:0;color:#a9b1d6;font-size:13px;line-height:1.4}.progress-stages{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;width:100%;max-width:720px}.progress-stages .progress-stage{min-height:42px;padding:8px 12px;border:2px solid rgba(192,202,245,.24);color:#787c99;background:#c0caf50b;font-size:13px;font-weight:600;line-height:1.4;text-transform:uppercase}.progress-stages .progress-stage-complete{color:#16161e;background:#9ece6a;border-color:#9ece6a}.progress-stages .progress-stage-current{color:#16161e;background:#e0af68;border-color:#e0af68}@media(max-width:767px){.progress-stages{grid-template-columns:1fr 1fr}}@media(max-width:479px){.progress-stages{grid-template-columns:1fr}}@keyframes progress_scan{0%{transform:translate(-120%)}to{transform:translate(220%)}}@keyframes icon_spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:46px;font-family:IBM Plex Mono,monospace;font-size:15px;font-weight:600;line-height:1;letter-spacing:.04em;padding:12px 22px;border-radius:0;border-width:2px;border-left-width:6px;border-style:solid;border-color:#c0caf5;text-transform:uppercase;background-color:transparent;cursor:pointer;transition-duration:.2s;transition-timing-function:ease;transition-property:background-color,border-color,color,opacity}.btn:focus-visible{outline:2px solid #E0AF68;outline-offset:3px}.btn.with-icon{border-left-width:46px;position:relative}.btn.with-icon .ph,.btn.with-icon .ph-bold{position:absolute;color:#16161e;left:-46px;top:1px;font-size:26px;height:100%;display:inline-flex;align-items:center;width:46px;justify-content:center;transition-duration:.2s;transition-property:color,left}@media(hover:hover)and (pointer:fine){.btn:hover.with-icon:not(.loading-state):not(.btn-small) .ph,.btn:hover.with-icon:not(.loading-state):not(.btn-small) .ph-bold{left:-28px}}@media(hover:none)and (pointer:coarse){.btn:active.with-icon:not(.loading-state):not(.btn-small) .ph,.btn:active.with-icon:not(.loading-state):not(.btn-small) .ph-bold{left:-28px}}.btn.btn-primary{color:#c0caf5;border-color:#c0caf5}@media(hover:hover)and (pointer:fine){.btn.btn-primary:hover{background-color:#c0caf5;color:#16161e}}@media(hover:none)and (pointer:coarse){.btn.btn-primary:active{background-color:#c0caf5;color:#16161e}}.btn.btn-secondary{color:#7aa2f7;border-color:#7aa2f7}@media(hover:hover)and (pointer:fine){.btn.btn-secondary:hover{background-color:#7aa2f7;color:#16161e}.btn.btn-secondary:hover.with-icon .ph,.btn.btn-secondary:hover.with-icon .ph-bold{color:#16161e}}@media(hover:none)and (pointer:coarse){.btn.btn-secondary:active{background-color:#7aa2f7;color:#16161e}.btn.btn-secondary:active.with-icon .ph,.btn.btn-secondary:active.with-icon .ph-bold{color:#16161e}}.btn.btn-accent{color:#ff9e64;border-color:#ff9e64}@media(hover:hover)and (pointer:fine){.btn.btn-accent:hover{background-color:#ff9e64;color:#16161e}.btn.btn-accent:hover.with-icon .ph,.btn.btn-accent:hover.with-icon .ph-bold{color:#16161e}}@media(hover:none)and (pointer:coarse){.btn.btn-accent:active{background-color:#ff9e64;color:#16161e}.btn.btn-accent:active.with-icon .ph,.btn.btn-accent:active.with-icon .ph-bold{color:#16161e}}.btn.btn-danger{color:#f7768e;border-color:#f7768e}@media(hover:hover)and (pointer:fine){.btn.btn-danger:hover{background-color:#f7768e;color:#16161e}}@media(hover:none)and (pointer:coarse){.btn.btn-danger:active{background-color:#f7768e;color:#16161e}}.btn.btn-warning{color:#e0af68;border-color:#e0af68}@media(hover:hover)and (pointer:fine){.btn.btn-warning:hover{background-color:#e0af68;color:#16161e}}@media(hover:none)and (pointer:coarse){.btn.btn-warning:active{background-color:#e0af68;color:#16161e}}.btn.btn-success{color:#9ece6a;border-color:#9ece6a}@media(hover:hover)and (pointer:fine){.btn.btn-success:hover{background-color:#9ece6a;color:#16161e}}@media(hover:none)and (pointer:coarse){.btn.btn-success:active{background-color:#9ece6a;color:#16161e}}.btn.btn-info{color:#bb9af7;border-color:#bb9af7}@media(hover:hover)and (pointer:fine){.btn.btn-info:hover{background-color:#bb9af7;color:#16161e}.btn.btn-info:hover.with-icon .ph,.btn.btn-info:hover.with-icon .ph-bold{color:#16161e}}@media(hover:none)and (pointer:coarse){.btn.btn-info:active{background-color:#bb9af7;color:#16161e}.btn.btn-info:active.with-icon .ph,.btn.btn-info:active.with-icon .ph-bold{color:#16161e}}.btn[disabled]:not(.loading-state){color:#787c99;border-color:#c0caf53d;background-color:#1f2335;cursor:not-allowed;opacity:.72}.btn[disabled]:not(.loading-state).with-icon .ph,.btn[disabled]:not(.loading-state).with-icon .ph-bold{color:#787c99}@media(hover:hover)and (pointer:fine){.btn[disabled]:not(.loading-state):hover{background-color:#1f2335;color:#787c99}.btn[disabled]:not(.loading-state):hover.with-icon .ph,.btn[disabled]:not(.loading-state):hover.with-icon .ph-bold{color:#787c99}}@media(hover:none)and (pointer:coarse){.btn[disabled]:not(.loading-state):active{background-color:#1f2335;color:#787c99}.btn[disabled]:not(.loading-state):active.with-icon .ph,.btn[disabled]:not(.loading-state):active.with-icon .ph-bold{color:#787c99}}.btn[disabled]:not(.loading-state).with-icon:not(.btn-small) .ph,.btn[disabled]:not(.loading-state).with-icon:not(.btn-small) .ph-bold{left:-28px}.btn.btn-small{font-size:13px;font-weight:500;min-height:38px;padding:8px}.btn.btn-small.with-icon{border-left-width:32px}.btn.btn-small.with-icon .ph,.btn.btn-small.with-icon .ph-bold{top:0;left:-40px;font-size:22px}.btn.btn-small.with-icon.loading-state .ph,.btn.btn-small.with-icon.loading-state .ph-bold{font-size:26px}.btn.btn-large{font-size:16px;font-weight:700;min-height:54px;padding:15px 48px}.btn.loading-state{color:#16161e!important;border-color:#c0caf5!important;background-color:#c0caf5!important}.btn.loading-state .ph,.btn.loading-state .ph-bold{font-size:26px;transform-origin:50% 50%;animation:icon_spin 1.2s linear infinite}.btn-icon{display:flex;justify-content:center;align-items:center;width:38px;height:38px;background:transparent;color:#c0caf5;font-size:22px;border:2px solid transparent;cursor:pointer;transition-duration:.2s;transition-timing-function:ease;transition-property:color,background,border-color}.btn-icon:focus-visible{outline:2px solid #E0AF68;outline-offset:3px}.btn-icon .ph{transform:rotate(0);transition-duration:.2s;transition-property:transform}@media(hover:hover)and (pointer:fine){.btn-icon:not(.without-hover):hover{color:#e0af68;border-color:#e0af68}.btn-icon:not(.without-hover):hover .ph{transform:rotate(90deg)}}@media(hover:none)and (pointer:coarse){.btn-icon:not(.without-hover):active{color:#e0af68;border-color:#e0af68}.btn-icon:not(.without-hover):active .ph{transform:rotate(90deg)}}.form-group{width:100%;max-width:600px}.form-group .label{display:flex;flex-direction:column;font-size:15px;width:100%;position:relative}.form-group .label>.ph{position:absolute;color:#c0caf5;left:0;bottom:1px;font-size:26px;height:54px;display:inline-flex;align-items:center;width:46px;justify-content:center;transition-duration:.2s;transition-property:color,left}.form-group .label .input{min-height:54px;font-family:IBM Plex Mono,monospace;font-size:15px;font-weight:500;line-height:1;letter-spacing:.04em;padding:12px 22px;margin-top:8px;border-radius:0;border-width:2px;border-bottom-width:6px;border-style:solid;border-color:#c0caf5;color:#c0caf5;background-color:#c0caf50b;transition-duration:.2s;transition-timing-function:ease;transition-property:background-color,border-color,color}@media(hover:hover)and (pointer:fine){.form-group .label .input:hover{border-bottom-color:#787c99}}@media(hover:none)and (pointer:coarse){.form-group .label .input:active{border-bottom-color:#787c99}}.form-group .label .input:focus{outline:2px solid #E0AF68;outline-offset:3px;border-color:#7aa2f7;background-color:transparent}.form-group .label .input:disabled{color:#787c99;border-color:#c0caf53d;background:#1f2335;cursor:not-allowed;opacity:.72}.form-group .label .input[readonly]{color:#a9b1d6;border-color:#c0caf53d;background:#c0caf508}.form-group .label .input::placeholder{color:#787c99}.form-group .label .input::-webkit-search-cancel-button,.form-group .label .input::-webkit-search-decoration,.form-group .label .input::-webkit-search-results-button,.form-group .label .input::-webkit-search-results-decoration{display:none;-webkit-appearance:none}.form-group .label .input[type=date],.form-group .label .input[type=time],.form-group .label .input[type=datetime-local],.form-group .label .input[type=month]{color-scheme:dark;cursor:pointer;min-width:0;padding-right:46px;text-transform:uppercase}.form-group .label .input[type=date]::-webkit-calendar-picker-indicator,.form-group .label .input[type=time]::-webkit-calendar-picker-indicator,.form-group .label .input[type=datetime-local]::-webkit-calendar-picker-indicator,.form-group .label .input[type=month]::-webkit-calendar-picker-indicator{width:46px;height:100%;margin:0;padding:0;background:transparent;cursor:pointer;opacity:0}.form-group .label .input[type=date]::-webkit-datetime-edit,.form-group .label .input[type=time]::-webkit-datetime-edit,.form-group .label .input[type=datetime-local]::-webkit-datetime-edit,.form-group .label .input[type=month]::-webkit-datetime-edit{padding:0}.form-group .label .input[type=date]::-webkit-datetime-edit-fields-wrapper,.form-group .label .input[type=time]::-webkit-datetime-edit-fields-wrapper,.form-group .label .input[type=datetime-local]::-webkit-datetime-edit-fields-wrapper,.form-group .label .input[type=month]::-webkit-datetime-edit-fields-wrapper{color:#c0caf5}.form-group .label textarea.input{height:108px;line-height:1.25;resize:none}.form-group .label .ph+.input,.form-group .label .ph+.select-wrap .select{padding-left:46px}.form-group .label .select-wrap{margin-top:8px}.form-group .label .select{width:100%;height:54px;margin-top:0;appearance:none;-webkit-appearance:none;-moz-appearance:none}.form-group .label .select:focus{outline:none}.form-group .label .select option{color:#c0caf5;background:#1f2335}.form-group .label .select-wrap:after{content:"";position:absolute;right:22px;bottom:18px;transform:translateY(-50%);width:0;height:0;border-left:8px solid transparent;border-right:8px solid transparent;border-top:10px solid #C0CAF5;pointer-events:none}.form-group .label.error .input:not(:focus){border-color:#f7768e}.form-group .label.error+.input-info{color:#e0af68}.form-group .label.success .input:not(:focus){border-color:#9ece6a}.form-group .label.success+.input-info{color:#9ece6a}.form-group .label.warning .input:not(:focus){border-color:#e0af68}.form-group .label.warning+.input-info{color:#e0af68}.form-group .input-info{font-size:14px;margin-top:8px}.form-group .input-info .ph{position:relative;top:1px}.form-group .input-info.error{color:#e0af68}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px;width:100%;max-width:760px}.fieldset{width:100%;max-width:760px;margin:0;padding:18px;border:2px solid rgba(192,202,245,.24);border-left-width:6px;background:#c0caf50b}.legend{padding:5px 8px;color:#16161e;background:#c0caf5;font-size:13px;font-weight:700;line-height:1;text-transform:uppercase}.file-upload{display:inline-flex;align-items:center;gap:8px;min-height:46px;padding:8px 12px;border:2px solid #7AA2F7;border-left-width:6px;color:#7aa2f7;background:#c0caf50b;font-size:13px;font-weight:700;text-transform:uppercase;cursor:pointer;transition-duration:.2s;transition-timing-function:ease;transition-property:color,background,border-color}.file-upload input[type=file]{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media(hover:hover)and (pointer:fine){.file-upload:hover{color:#16161e;background:#7aa2f7}}@media(hover:none)and (pointer:coarse){.file-upload:active{color:#16161e;background:#7aa2f7}}.file-upload:focus-within{outline:2px solid #E0AF68;outline-offset:3px}.file-upload-panel{width:100%;max-width:760px;background:#c0caf50b;border:2px solid rgba(192,202,245,.24);border-left-width:6px}.file-upload-form{display:flex;flex-direction:column;gap:15px;margin:0}.file-upload-header{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;padding:15px 15px 0}.file-upload-heading{display:flex;flex-direction:column;gap:5px;min-width:0}.file-upload-title{margin:0;color:#c0caf5;font-size:16px;font-weight:700;line-height:1.25;text-transform:uppercase}.file-upload-description{margin:0;color:#a9b1d6;font-size:13px;line-height:1.6}.file-upload-dropzone{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:15px;margin:0 15px;padding:18px;border:2px dashed #7AA2F7;background:#7aa2f714;cursor:pointer;transition-duration:.2s;transition-timing-function:ease;transition-property:background,border-color}.file-upload-dropzone input[type=file]{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media(hover:hover)and (pointer:fine){.file-upload-dropzone:hover{border-color:#c0caf5;background:#c0caf51a}}@media(hover:none)and (pointer:coarse){.file-upload-dropzone:active{border-color:#c0caf5;background:#c0caf51a}}.file-upload-dropzone:focus-within{outline:2px solid #E0AF68;outline-offset:3px}.file-upload-icon{display:inline-flex;align-items:center;justify-content:center;width:54px;height:54px;color:#16161e;background:#7aa2f7;font-size:26px}.file-upload-body{display:flex;flex-direction:column;gap:5px;min-width:0}.file-upload-primary{color:#c0caf5;font-size:15px;font-weight:700;line-height:1.25;text-transform:uppercase}.file-upload-secondary{color:#a9b1d6;font-size:13px;line-height:1.4}.file-upload-preview{display:grid;grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:12px;margin:0 15px}.file-upload-preview[hidden]{display:none}.file-upload-preview-item{position:relative;min-width:0;margin:0;border:2px solid rgba(192,202,245,.24);background:#c0caf50b}.file-upload-preview-remove{position:absolute;top:8px;right:8px;z-index:1;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:2px solid #F7768E;color:#f7768e;background:#1f2335;font-size:18px;cursor:pointer;transition-duration:.2s;transition-timing-function:ease;transition-property:color,background,border-color}@media(hover:hover)and (pointer:fine){.file-upload-preview-remove:hover{color:#16161e;background:#f7768e}}@media(hover:none)and (pointer:coarse){.file-upload-preview-remove:active{color:#16161e;background:#f7768e}}.file-upload-preview-remove:focus-visible{outline:2px solid #E0AF68;outline-offset:3px}.file-upload-preview-visual{display:flex;align-items:center;justify-content:center;aspect-ratio:1;background:#1f2335}.file-upload-preview-visual img{display:block;width:100%;height:100%;object-fit:cover}.file-upload-preview-type{display:inline-flex;align-items:center;justify-content:center;min-width:54px;min-height:54px;padding:8px;color:#16161e;background:#7aa2f7;font-size:13px;font-weight:700;line-height:1;text-transform:uppercase}.file-upload-preview-item figcaption{display:flex;flex-direction:column;gap:5px;overflow:hidden;padding:8px}.file-upload-preview-name{overflow:hidden;color:#c0caf5;font-size:12px;font-weight:700;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}.file-upload-preview-meta{color:#a9b1d6;font-size:12px;font-weight:700;line-height:1.25;text-transform:uppercase}.file-upload-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;padding:0 15px 15px}.range{width:100%;max-width:600px;accent-color:#7AA2F7}.range input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:46px;margin:0;background:transparent;cursor:pointer}.range input[type=range]::-webkit-slider-runnable-track{height:6px;background:#c0caf516;border:2px solid rgba(192,202,245,.24)}.range input[type=range]::-webkit-slider-thumb{width:18px;height:38px;margin-top:-19px;border:2px solid #7AA2F7;background:#7aa2f7;-webkit-appearance:none}.range input[type=range]::-moz-range-track{height:6px;background:#c0caf516;border:2px solid rgba(192,202,245,.24)}.range input[type=range]::-moz-range-thumb{width:18px;height:38px;border:2px solid #7AA2F7;border-radius:0;background:#7aa2f7}@media(max-width:767px){.form-grid{grid-template-columns:1fr}.file-upload-header{flex-direction:column;align-items:stretch}.file-upload-dropzone{grid-template-columns:1fr}.file-upload-actions{justify-content:stretch}.file-upload-actions .btn{width:100%}}.radio{display:inline-flex;flex-direction:row;gap:8px;align-items:center}.radio input[type=radio]{display:none}.radio .radio-control{display:inline-block;border-radius:100%;border:2px solid #C0CAF5;width:18px;height:18px;background:transparent;transition-duration:.2s;transition-property:background,border-color}@media(hover:hover)and (pointer:fine){.radio:hover .radio-control{background:#414868}}@media(hover:none)and (pointer:coarse){.radio:active .radio-control{background:#414868}}.radio input[type=radio]:checked+.radio-control{background:#c0caf5}.radio input[type=radio]:disabled+.radio-control{background:#414868;border-color:#414868}.radio input[type=radio]:focus-visible+.radio-control{outline:2px solid #E0AF68;outline-offset:3px}.radio .radio-label{font-size:15px}.checkbox{display:inline-flex;flex-direction:row;gap:8px;align-items:center}.checkbox input[type=checkbox]{display:none}.checkbox .checkbox-control{height:16px;width:32px;border:2px solid #C0CAF5;position:relative;background:transparent;transition-duration:.2s;transition-property:border-color,background;display:block}.checkbox .checkbox-control:before{content:"";display:block;height:20px;width:20px;background:#c0caf5;position:absolute;left:-5px;top:-5px;transition-duration:.2s;transition-property:left,background}@media(hover:hover)and (pointer:fine){.checkbox:hover .checkbox-control{background:#414868}}@media(hover:none)and (pointer:coarse){.checkbox:active .checkbox-control{background:#414868}}.checkbox input[type=checkbox]:checked:not(:disabled)+.checkbox-control{background:#7aa2f7;border-color:#7aa2f7}.checkbox input[type=checkbox]:checked+.checkbox-control:before{left:17px}.checkbox input[type=checkbox]:disabled+.checkbox-control{border-color:#414868}.checkbox input[type=checkbox]:focus-visible+.checkbox-control{outline:2px solid #E0AF68;outline-offset:3px}.checkbox input[type=checkbox]:disabled+.checkbox-control:before{background:#414868}.input-group{display:flex;align-items:stretch;width:100%;max-width:600px;min-height:54px;border:2px solid #C0CAF5;border-bottom-width:6px;background:#c0caf50b;transition-duration:.2s;transition-timing-function:ease;transition-property:border-color,background}.input-group:focus-within{outline:2px solid #E0AF68;outline-offset:3px;border-color:#7aa2f7;background:transparent}.input-group .input-group-addon,.input-group .input-group-action{display:inline-flex;align-items:center;justify-content:center;min-width:54px;padding:0 12px;color:#a9b1d6;background:#c0caf50b;border:0;font-family:IBM Plex Mono,monospace;font-size:13px;font-weight:600;text-transform:uppercase}.input-group .input-group-action{color:#c0caf5;cursor:pointer;transition-duration:.2s;transition-timing-function:ease;transition-property:color,background}@media(hover:hover)and (pointer:fine){.input-group .input-group-action:hover{color:#16161e;background:#e0af68}}@media(hover:none)and (pointer:coarse){.input-group .input-group-action:active{color:#16161e;background:#e0af68}}.input-group .input-group-input{flex:1 1 auto;min-width:0;border:0;padding:12px 15px;color:#c0caf5;background:transparent;font-family:IBM Plex Mono,monospace;font-size:15px;font-weight:500;letter-spacing:.04em}.input-group .input-group-input:focus{outline:none}.input-group .input-group-input::placeholder{color:#787c99}.input-group .input-group-input::-webkit-search-cancel-button,.input-group .input-group-input::-webkit-search-decoration,.input-group .input-group-input::-webkit-search-results-button,.input-group .input-group-input::-webkit-search-results-decoration{display:none;-webkit-appearance:none}.input-group .ph,.input-group .ph-bold{font-size:22px}.input-group.input-group-compact{min-height:46px}.input-group.input-group-compact .input-group-addon,.input-group.input-group-compact .input-group-action{min-width:46px}.input-group.input-group-compact .input-group-input{padding:8px 12px;font-size:13px}.search-field{max-width:420px}.list{display:flex;flex-direction:column;gap:5px;list-style-type:none;padding-left:0}.list .list-item{display:flex;flex-direction:row;align-items:center;gap:8px;margin-left:0}.list.list-ordered{list-style-type:decimal;display:list-item;margin-left:30px}.list.list-ordered .list-item{display:list-item}.list.list-definition{width:100%;max-width:620px;gap:0;border:2px solid rgba(192,202,245,.24);border-left-width:6px;background:#c0caf50b}.list.list-definition .list-row{display:grid;grid-template-columns:minmax(120px,.32fr) minmax(0,1fr);gap:15px;align-items:start;padding:12px 15px;border-bottom:2px solid rgba(192,202,245,.08);transition-duration:.2s;transition-timing-function:ease;transition-property:background,border-color}.list.list-definition .list-row .list-term{display:inline-flex;width:max-content;max-width:100%;margin:0;padding:5px 8px;color:#16161e;background:#c0caf5;font-size:13px;font-weight:700;line-height:1;text-transform:uppercase;transition-duration:.2s;transition-timing-function:ease;transition-property:background,transform}.list.list-definition .list-row .list-desc{margin:0;color:#a9b1d6;font-size:13px;line-height:1.6;transition-duration:.2s;transition-timing-function:ease;transition-property:color,transform}.list.list-definition .list-row:last-child{border-bottom:0}@media(hover:hover)and (pointer:fine){.list.list-definition .list-row:hover{background:#c0caf516}.list.list-definition .list-row:hover .list-term{background:#7aa2f7;transform:translate(5px)}.list.list-definition .list-row:hover .list-desc{color:#c0caf5;transform:translate(5px)}}@media(hover:none)and (pointer:coarse){.list.list-definition .list-row:active{background:#c0caf516}.list.list-definition .list-row:active .list-term{background:#7aa2f7;transform:translate(5px)}.list.list-definition .list-row:active .list-desc{color:#c0caf5;transform:translate(5px)}}.list.list-nav{max-width:420px;width:100%;gap:0}.list.list-nav .list-item{display:flex;flex-direction:column;align-items:flex-start;height:50px;margin:0}.list.list-nav .list-item .list-action{display:flex;justify-content:space-between;align-items:center;width:100%;height:100%;padding:8px 12px;border:2px solid transparent;font-size:15px;background:#1f2335;color:inherit;cursor:pointer;transition-duration:.2s;transition-timing-function:ease;transition-property:background,border-color,color}.list.list-nav .list-item .list-action:focus-visible{outline:2px solid #E0AF68;outline-offset:3px}@media(hover:hover)and (pointer:fine){.list.list-nav .list-item .list-action:hover{background:#7aa2f7;color:#16161e}}@media(hover:none)and (pointer:coarse){.list.list-nav .list-item .list-action:active{background:#7aa2f7;color:#16161e}}.list.list-nav .list-item .list-action .list-label{display:flex;flex-direction:row;gap:8px;align-items:center;letter-spacing:0;font-weight:400}.list.list-nav .list-item .list-action .list-meta{padding:8px;background:#9ece6a;color:#16161e;display:flex}.list.list-nav .list-item.list-item-active .list-action{background:#7aa2f7;color:#16161e;border-color:#7aa2f7}.list.list-actions{width:100%;max-width:420px;gap:22px}.list.list-actions .list-item{justify-content:space-between;align-items:flex-start;padding:12px 0;border-bottom:2px solid rgba(192,202,245,.08)}.list.list-actions .list-item .list-content{display:flex;flex-direction:column;gap:8px}.list.list-actions .list-item .list-content .list-title{font-size:16px;line-height:1}.list.list-actions .list-item .list-content .list-subtitle{color:#787c99}@media(hover:hover)and (pointer:fine){.list.list-actions .list-item:hover .list-title{color:#7aa2f7}}@media(hover:none)and (pointer:coarse){.list.list-actions .list-item:active .list-title{color:#7aa2f7}}@media(max-width:479px){.list.list-definition .list-row{grid-template-columns:1fr;gap:8px}}.badge{position:relative;overflow:hidden;background:#c0caf5;color:#16161e;padding:5px 8px;font-size:13px;font-weight:600;line-height:1;letter-spacing:.04em;text-transform:uppercase;display:inline-flex;align-items:center;min-height:24px;transition-duration:.2s;transition-timing-function:ease;transition-property:filter,transform,border-color,color,background}.badge:after{content:"";position:absolute;inset:0 auto 0 0;width:40%;background:linear-gradient(90deg,transparent,rgba(22,22,30,.16),transparent);opacity:0;pointer-events:none;transform:translate(-120%)}@media(hover:hover)and (pointer:fine){.badge:hover{filter:saturate(1.12);transform:translateY(-1px)}.badge:hover:after{opacity:1;animation:terminal_scan_x .7s ease}}@media(hover:none)and (pointer:coarse){.badge:active{filter:saturate(1.12);transform:translateY(-1px)}.badge:active:after{opacity:1;animation:terminal_scan_x .7s ease}}.badge.badge-success{background:#9ece6a}.badge.badge-warning{background:#e0af68}.badge.badge-error,.badge.badge-danger{background:#f7768e}.badge.badge-info{background:#bb9af7;color:#16161e}.badge.badge-secondary{background:#7aa2f7;color:#16161e}.badge.badge-primary-outline{color:#c0caf5;border:2px solid #C0CAF5;background:transparent;padding:3px 8px}.chip-group{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.chip{display:inline-flex;align-items:center;gap:8px;min-height:30px;padding:5px 12px;border:2px solid rgba(192,202,245,.24);color:#a9b1d6;background:#c0caf50b;font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:600;line-height:1;text-transform:uppercase;transition-duration:.2s;transition-timing-function:ease;transition-property:color,background,border-color,opacity}.chip .ph,.chip .ph-bold{font-size:18px}.chip:before{content:"";display:inline-block;width:7px;height:7px;flex:0 0 auto;background:#787c99;transition-duration:.2s;transition-timing-function:ease;transition-property:background,box-shadow,transform}.chip:has(.ph):before,.chip:has(.ph-bold):before{display:none}.chip .chip-remove{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;margin-right:-5px;border:0;color:inherit;background:transparent;font:inherit;cursor:pointer}.chip .chip-remove:focus-visible{outline:2px solid #E0AF68;outline-offset:3px}.chip.chip-primary{color:#c0caf5;background:#c0caf514;border-color:#c0caf5}.chip.chip-primary:before{background:#c0caf5}.chip.chip-secondary{color:#7aa2f7;background:#7aa2f714;border-color:#7aa2f7}.chip.chip-secondary:before{background:#7aa2f7}.chip.chip-success{color:#9ece6a;background:#9ece6a14;border-color:#9ece6a}.chip.chip-success:before{background:#9ece6a}.chip.chip-warning{color:#e0af68;background:#e0af6814;border-color:#e0af68}.chip.chip-warning:before{background:#e0af68}.chip.chip-danger,.chip.chip-error{color:#f7768e;background:#f7768e14;border-color:#f7768e}.chip.chip-danger:before,.chip.chip-error:before{background:#f7768e}.chip.chip-selected,.chip[aria-pressed=true],.chip[aria-selected=true]{color:#16161e;background:#c0caf5;border-color:#c0caf5}.chip.chip-selected:before,.chip[aria-pressed=true]:before,.chip[aria-selected=true]:before{background:#16161e}.chip.chip-selected.chip-secondary,.chip.chip-secondary[aria-pressed=true],.chip.chip-secondary[aria-selected=true]{background:#7aa2f7;border-color:#7aa2f7}.chip.chip-disabled,.chip:disabled{color:#787c99;background:#1f2335;border-color:#c0caf53d;cursor:not-allowed;opacity:.7}.chip.chip-disabled:before,.chip:disabled:before{background:#414868}button.chip,a.chip{cursor:pointer}button.chip:focus-visible,a.chip:focus-visible{outline:2px solid #E0AF68;outline-offset:3px}@media(hover:hover)and (pointer:fine){button.chip:hover,a.chip:hover{color:#c0caf5;background:#c0caf516;border-color:#7aa2f7}button.chip:hover:before,a.chip:hover:before{background:#7aa2f7;animation:terminal_pulse .7s ease;transform:scale(1.12)}}@media(hover:none)and (pointer:coarse){button.chip:active,a.chip:active{color:#c0caf5;background:#c0caf516;border-color:#7aa2f7}button.chip:active:before,a.chip:active:before{background:#7aa2f7;animation:terminal_pulse .7s ease;transform:scale(1.12)}}.avatar{position:relative;display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;flex:0 0 auto;overflow:hidden;border:2px solid rgba(192,202,245,.24);color:#16161e;background:#c0caf5;font-family:IBM Plex Mono,monospace;font-size:13px;font-weight:700;line-height:1;text-transform:uppercase}.avatar img{width:100%;height:100%;object-fit:cover}.avatar .ph,.avatar .ph-bold{font-size:22px}.avatar .avatar-status{position:absolute;right:-2px;bottom:-2px;width:13px;height:13px;border:2px solid #16161E;background:#787c99;transition-duration:.2s;transition-timing-function:ease;transition-property:background,box-shadow}.avatar.avatar-sm{width:38px;height:38px;font-size:12px}.avatar.avatar-sm .ph,.avatar.avatar-sm .ph-bold{font-size:18px}.avatar.avatar-lg{width:54px;height:54px;font-size:14px}.avatar.avatar-lg .ph,.avatar.avatar-lg .ph-bold{font-size:26px}.avatar.avatar-secondary{background:#7aa2f7}.avatar.avatar-success{background:#9ece6a}.avatar.avatar-warning{background:#e0af68}.avatar.avatar-danger,.avatar.avatar-error{background:#f7768e}.avatar.avatar-outline{color:#c0caf5;background:#c0caf50b;border-color:#c0caf5}.avatar.is-online .avatar-status{background:#9ece6a;animation:terminal_pulse 1.8s ease infinite}.avatar.is-busy .avatar-status{background:#e0af68}.avatar.is-offline .avatar-status{background:#787c99}.identity{display:inline-flex;align-items:center;gap:12px;min-width:0}.identity-content{display:flex;flex-direction:column;gap:5px;min-width:0}.identity-title{color:#c0caf5;font-size:15px;font-weight:600;line-height:1}.identity-meta{color:#787c99;font-size:13px;line-height:1.4}.avatar-stack{display:inline-flex;align-items:center}.avatar-stack .avatar{margin-right:-8px;border-color:#16161e}.avatar-stack .avatar-stack-count{display:inline-flex;align-items:center;justify-content:center;min-width:46px;height:46px;padding:0 8px;border:2px solid #16161E;color:#16161e;background:#e0af68;font-size:13px;font-weight:700}.table{width:100%;text-align:left;border:2px solid rgba(192,202,245,.24);border-collapse:collapse;background:#c0caf50b}.table .table-caption{text-align:left;font-size:16px;background:#c0caf5;width:max-content;color:#16161e;padding:5px 12px;margin-bottom:0;font-weight:700;text-transform:uppercase}.table.table-empty{width:100%}.table.table-empty .is-empty{width:100%;padding:15px;font-size:13px;color:#787c99;text-align:left}.table .table-row th,.table .table-row td{padding:12px 18px;font-size:13px;vertical-align:middle;border-bottom:2px solid rgba(192,202,245,.08)}.table .table-row th{color:#c0caf5;background:#c0caf50a;text-transform:uppercase;letter-spacing:.04em}.table .table-head{border-bottom:2px solid #C0CAF5}.table .table-body .table-row{transition-duration:.2s;transition-timing-function:ease;transition-property:background,color}.table .table-body .table-row td{transition-duration:.2s;transition-timing-function:ease;transition-property:color,background}@media(hover:hover)and (pointer:fine){.table .table-body .table-row:hover{background:#7aa2f714}.table .table-body .table-row:hover td:first-child{color:#7aa2f7}}@media(hover:none)and (pointer:coarse){.table .table-body .table-row:active{background:#7aa2f714}.table .table-body .table-row:active td:first-child{color:#7aa2f7}}.table .table-foot th,.table .table-foot td{padding-top:15px}.table.table-compact .table-caption{font-size:14px}.table.table-compact .table-row th,.table.table-compact .table-row td{padding:8px 12px;font-size:12px}.table.table-compact .table-cell-mono{color:#a9b1d6;font-family:IBM Plex Mono,monospace;letter-spacing:0}.table.table-compact .table-cell-actions{width:1%;white-space:nowrap}.table-wrapper{width:100%;overflow-x:auto}.toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:12px;border:2px solid rgba(192,202,245,.24);border-left-width:6px;background:#c0caf50b}.toolbar .toolbar-group{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.toolbar .toolbar-title{margin:0;font-size:16px;font-weight:700;line-height:1;text-transform:uppercase}.toolbar .toolbar-meta{color:#787c99;font-size:13px}.pagination{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.pagination .pagination-item{display:inline-flex;align-items:center;justify-content:center;min-width:38px;height:38px;padding:0 12px;border:2px solid rgba(192,202,245,.24);color:#a9b1d6;background:#c0caf50b;font-family:IBM Plex Mono,monospace;font-size:13px;font-weight:600;line-height:1;cursor:pointer;transition-duration:.2s;transition-timing-function:ease;transition-property:color,background,border-color,opacity}.pagination .pagination-item:focus-visible{outline:2px solid #E0AF68;outline-offset:3px}@media(hover:hover)and (pointer:fine){.pagination .pagination-item:hover{color:#16161e;background:#7aa2f7;border-color:#7aa2f7}}@media(hover:none)and (pointer:coarse){.pagination .pagination-item:active{color:#16161e;background:#7aa2f7;border-color:#7aa2f7}}.pagination .pagination-item.pagination-item-active,.pagination .pagination-item[aria-current=page]{color:#16161e;background:#c0caf5;border-color:#c0caf5}.pagination .pagination-item:disabled,.pagination .pagination-item.pagination-item-disabled{color:#787c99;background:#1f2335;border-color:#c0caf53d;cursor:not-allowed;opacity:.72}.pagination .pagination-ellipsis{color:#787c99;padding:0 5px}.empty-state{max-width:560px;padding:22px;border:2px solid rgba(192,202,245,.24);border-left-width:6px;background:#c0caf50b}.empty-state .empty-state-icon{display:inline-flex;align-items:center;justify-content:center;width:54px;height:54px;margin-bottom:15px;color:#16161e;background:#c0caf5;font-size:26px}.empty-state .empty-state-title{margin:0 0 8px;font-size:20px;font-weight:700;text-transform:uppercase}.empty-state .empty-state-text{max-width:440px;margin:0 0 18px;color:#a9b1d6;line-height:1.6}.empty-state .empty-state-actions{display:flex;flex-wrap:wrap;gap:8px}.empty-state.empty-state-error{border-color:#f7768e}.empty-state.empty-state-error .empty-state-icon{background:#f7768e}.skeleton{display:block;position:relative;overflow:hidden;background:#c0caf516}.skeleton:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,rgba(192,202,245,.12),transparent);animation:skeleton_shimmer 1.6s infinite}.skeleton.skeleton-line{width:100%;height:14px}.skeleton.skeleton-title{width:60%;height:22px}.skeleton.skeleton-block{width:100%;height:120px}.skeleton.skeleton-square{width:54px;height:54px}.skeleton-stack{display:flex;flex-direction:column;gap:12px;max-width:520px;padding:15px;border:2px solid rgba(192,202,245,.24);background:#c0caf50b}@keyframes skeleton_shimmer{to{transform:translate(100%)}}.page-header{position:relative;display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:18px;width:100%;padding:18px;border:2px solid rgba(192,202,245,.24);border-left-width:6px;background:#c0caf50b;overflow:hidden;animation:panel_boot .28s ease both}.page-header:after{content:"";position:absolute;top:0;left:0;width:34%;height:2px;background:linear-gradient(90deg,transparent,#7AA2F7,transparent);opacity:.72;pointer-events:none;transform:translate(-120%)}@media(hover:hover)and (pointer:fine){.page-header:hover:after{animation:terminal_scan_x .9s ease}}@media(hover:none)and (pointer:coarse){.page-header:active:after{animation:terminal_scan_x .9s ease}}.page-header .page-header-content{display:flex;flex-direction:column;gap:8px;min-width:min(100%,320px)}.page-header .page-header-kicker{color:#7aa2f7;font-size:13px;font-weight:700;line-height:1;text-transform:uppercase;transition-duration:.2s;transition-timing-function:ease;transition-property:color}.page-header .page-header-title{margin:0;color:#c0caf5;font-size:26px;font-weight:700;line-height:1.15}.page-header .page-header-subtitle{max-width:720px;margin:0;color:#a9b1d6;font-size:15px;line-height:1.6}.page-header .page-header-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;color:#787c99;font-size:13px}.page-header .page-header-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px}.page-header.page-header-compact{align-items:center;padding:15px}.page-header.page-header-compact .page-header-title{font-size:20px}.page-header.page-header-accent{border-color:#7aa2f7;background:#7aa2f70e}.description-list{display:grid;width:100%;max-width:760px;margin:0;border:2px solid rgba(192,202,245,.24);border-left-width:6px;background:#c0caf50b}.description-list .description-list-row{display:grid;grid-template-columns:minmax(140px,.36fr) minmax(0,1fr);gap:15px;padding:12px 15px;border-bottom:2px solid rgba(192,202,245,.08);transition-duration:.2s;transition-timing-function:ease;transition-property:background}.description-list .description-list-row:last-child{border-bottom:0}@media(hover:hover)and (pointer:fine){.description-list .description-list-row:hover{background:#c0caf516}.description-list .description-list-row:hover .description-list-term{color:#7aa2f7}.description-list .description-list-row:hover .description-list-value{transform:translate(5px)}}@media(hover:none)and (pointer:coarse){.description-list .description-list-row:active{background:#c0caf516}.description-list .description-list-row:active .description-list-term{color:#7aa2f7}.description-list .description-list-row:active .description-list-value{transform:translate(5px)}}.description-list .description-list-term{margin:0;color:#787c99;font-size:13px;font-weight:600;line-height:1.4;text-transform:uppercase;transition-duration:.2s;transition-timing-function:ease;transition-property:color}.description-list .description-list-value{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0;margin:0;color:#c0caf5;font-size:15px;line-height:1.4;transition-duration:.2s;transition-timing-function:ease;transition-property:transform}.description-list .description-list-value-muted{color:#a9b1d6}.description-list.description-list-compact{max-width:520px}.description-list.description-list-compact .description-list-row{grid-template-columns:minmax(112px,.42fr) minmax(0,1fr);gap:12px;padding:8px 12px}.description-list.description-list-compact .description-list-term,.description-list.description-list-compact .description-list-value{font-size:13px}@media(max-width:479px){.description-list .description-list-row{grid-template-columns:1fr;gap:5px}}.steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;width:100%;max-width:900px;margin:0;padding:0;list-style:none}.steps .step{position:relative;display:flex;flex-direction:column;gap:8px;min-height:120px;padding:15px;border:2px solid rgba(192,202,245,.24);border-left-width:6px;background:#c0caf50b}.steps .step-marker{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;color:#c0caf5;border:2px solid rgba(192,202,245,.24);font-size:13px;font-weight:700;line-height:1}.steps .step-title{margin:0;font-size:14px;font-weight:700;line-height:1.25;text-transform:uppercase}.steps .step-text{margin:0;color:#a9b1d6;font-size:13px;line-height:1.4}.steps .step-complete{border-color:#9ece6a}.steps .step-complete .step-marker{color:#16161e;background:#9ece6a;border-color:#9ece6a}.steps .step-current{border-color:#7aa2f7}.steps .step-current .step-marker{color:#16161e;background:#7aa2f7;border-color:#7aa2f7}.steps .step-disabled{opacity:.62}.steps.steps-vertical{grid-template-columns:1fr;max-width:520px;gap:0}.steps.steps-vertical .step{min-height:auto;border-bottom-width:0}.steps.steps-vertical .step:last-child{border-bottom-width:2px}@media(max-width:1023px){.steps{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:479px){.steps{grid-template-columns:1fr}}.timeline{display:grid;gap:0;width:100%;max-width:760px;margin:0;padding:0;list-style:none}.timeline .timeline-item{position:relative;display:grid;grid-template-columns:46px minmax(0,1fr);gap:12px;min-height:88px}.timeline .timeline-item:before{content:"";position:absolute;top:46px;bottom:0;left:22px;width:2px;background:#c0caf53d}.timeline .timeline-item:last-child:before{display:none}.timeline .timeline-marker{position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;border:2px solid rgba(192,202,245,.24);color:#a9b1d6;background:#16161e;font-size:18px;transition-duration:.2s;transition-timing-function:ease;transition-property:border-color,background,color,box-shadow,transform}.timeline .timeline-content{min-width:0;padding:0 0 18px}.timeline .timeline-card{padding:15px;border:2px solid rgba(192,202,245,.24);border-left-width:6px;background:#c0caf50b;transition-duration:.2s;transition-timing-function:ease;transition-property:border-color,background,transform}.timeline .timeline-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.timeline .timeline-title{margin:0;font-size:14px;font-weight:700;line-height:1.25;text-transform:uppercase}.timeline .timeline-time{color:#787c99;font-size:12px;font-family:IBM Plex Mono,monospace;line-height:1.4}.timeline .timeline-text{margin:0;color:#a9b1d6;font-size:13px;line-height:1.4}.timeline .timeline-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.timeline .timeline-item-success .timeline-marker,.timeline .timeline-item-success .timeline-card{border-color:#9ece6a}.timeline .timeline-item-success .timeline-marker{color:#16161e;background:#9ece6a}.timeline .timeline-item-warning .timeline-marker,.timeline .timeline-item-warning .timeline-card{border-color:#e0af68}.timeline .timeline-item-warning .timeline-marker{color:#16161e;background:#e0af68}.timeline .timeline-item-danger .timeline-marker,.timeline .timeline-item-danger .timeline-card,.timeline .timeline-item-error .timeline-marker,.timeline .timeline-item-error .timeline-card{border-color:#f7768e}.timeline .timeline-item-danger .timeline-marker,.timeline .timeline-item-error .timeline-marker{color:#16161e;background:#f7768e}@media(hover:hover)and (pointer:fine){.timeline .timeline-item:hover .timeline-marker{box-shadow:0 0 0 4px #7aa2f724;transform:scale(1.04)}.timeline .timeline-item:hover .timeline-card{background:#c0caf516;transform:translate(5px)}}@media(hover:none)and (pointer:coarse){.timeline .timeline-item:active .timeline-marker{box-shadow:0 0 0 4px #7aa2f724;transform:scale(1.04)}.timeline .timeline-item:active .timeline-card{background:#c0caf516;transform:translate(5px)}}.activity-log{display:grid;width:100%;max-width:720px;border:2px solid rgba(192,202,245,.24);border-left-width:6px;background:#c0caf50b}.activity-log .activity-log-row{display:grid;grid-template-columns:minmax(120px,.24fr) minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px 15px;border-bottom:2px solid rgba(192,202,245,.08);transition-duration:.2s;transition-timing-function:ease;transition-property:background}.activity-log .activity-log-row:last-child{border-bottom:0}@media(hover:hover)and (pointer:fine){.activity-log .activity-log-row:hover{background:#c0caf516}}@media(hover:none)and (pointer:coarse){.activity-log .activity-log-row:active{background:#c0caf516}}.activity-log .activity-log-time{color:#787c99;font-family:IBM Plex Mono,monospace;font-size:12px}.activity-log .activity-log-title{color:#c0caf5;font-size:13px;font-weight:600;line-height:1.4}@media(max-width:479px){.activity-log .activity-log-row{grid-template-columns:1fr;gap:8px}}.accordion{display:grid;width:100%;max-width:760px;border:2px solid rgba(192,202,245,.24);border-left-width:6px;background:#c0caf50b}.accordion-item{border-bottom:2px solid rgba(192,202,245,.08);overflow:hidden}.accordion-item:last-child{border-bottom:0}.accordion-item[open] .accordion-summary{color:#16161e;background:#c0caf5}.accordion-item[open] .accordion-icon{transform:rotate(180deg)}.accordion-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:46px;padding:12px 15px;color:#c0caf5;cursor:pointer;font-size:13px;font-weight:700;line-height:1;text-transform:uppercase;transition-duration:.2s;transition-timing-function:ease;transition-property:color,background}.accordion-summary::-webkit-details-marker{display:none}.accordion-summary::marker{content:""}.accordion-summary:focus-visible{outline:2px solid #E0AF68;outline-offset:3px}@media(hover:hover)and (pointer:fine){.accordion-summary:hover{color:#16161e;background:#7aa2f7}}@media(hover:none)and (pointer:coarse){.accordion-summary:active{color:#16161e;background:#7aa2f7}}.accordion-summary-content{display:flex;align-items:center;gap:8px;min-width:0}.accordion-icon{flex:0 0 auto;font-size:18px;transition-duration:.2s;transition-property:transform}.accordion-panel{overflow:hidden;padding:15px;color:#a9b1d6;font-size:13px;line-height:1.6;transition-duration:.28s;transition-timing-function:ease;transition-property:height,opacity,transform}.accordion-panel p{margin-top:0}.accordion-panel p:last-child{margin-bottom:0}.disclosure{max-width:520px;border:2px solid rgba(192,202,245,.24);background:#c0caf50b}.disclosure .accordion-summary{min-height:38px;padding:8px 12px}.disclosure .accordion-panel{padding:12px}.tabs{display:grid;gap:15px;width:100%;max-width:900px}.tabs-list{display:flex;align-items:stretch;gap:0;max-width:100%;overflow-x:auto;border:2px solid rgba(192,202,245,.24);border-left-width:6px;background:#c0caf50b;scrollbar-width:thin}.tab{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:12px 15px;border:0;border-right:2px solid rgba(192,202,245,.08);border-radius:0;color:#a9b1d6;background:transparent;font-family:IBM Plex Mono,monospace;font-size:13px;font-weight:700;line-height:1;text-transform:uppercase;white-space:nowrap;cursor:pointer;transition-duration:.2s;transition-timing-function:ease;transition-property:color,background,opacity}.tab .ph,.tab .ph-bold{font-size:18px}.tab:focus-visible{outline:2px solid #E0AF68;outline-offset:3px;z-index:1}@media(hover:hover)and (pointer:fine){.tab:hover{color:#16161e;background:#7aa2f7}}@media(hover:none)and (pointer:coarse){.tab:active{color:#16161e;background:#7aa2f7}}.tab:disabled,.tab[aria-disabled=true]{color:#787c99;cursor:not-allowed;opacity:.62}@media(hover:hover)and (pointer:fine){.tab:disabled:hover,.tab[aria-disabled=true]:hover{color:#787c99;background:transparent}}@media(hover:none)and (pointer:coarse){.tab:disabled:active,.tab[aria-disabled=true]:active{color:#787c99;background:transparent}}.tab-active,.tab[aria-selected=true]{color:#16161e;background:#c0caf5}.tabs-panels{border:2px solid rgba(192,202,245,.24);border-left-width:6px;background:#c0caf50b}.tab-panel{display:none;padding:15px;color:#a9b1d6;font-size:13px;line-height:1.6}.tab-panel p{margin-top:0}.tab-panel p:last-child{margin-bottom:0}.tab-panel-active{display:block}.tabs-compact{max-width:620px}.tabs-compact .tabs-list{border-left-width:2px}.tabs-compact .tab{min-height:38px;padding:8px 12px}.tabs-compact .tabs-panels{border-left-width:2px}.tabs-compact .tab-panel{padding:12px}.tabs-vertical{grid-template-columns:minmax(180px,240px) minmax(0,1fr);align-items:start}.tabs-vertical .tabs-list{flex-direction:column;overflow-x:visible}.tabs-vertical .tab{justify-content:flex-start;border-right:0;border-bottom:2px solid rgba(192,202,245,.08);text-align:left}@media(max-width:767px){.tabs-vertical{grid-template-columns:1fr}.tabs-vertical .tabs-list{flex-direction:row;overflow-x:auto}.tabs-vertical .tab{justify-content:center;border-right:2px solid rgba(192,202,245,.08);border-bottom:0;text-align:center}}.drawer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;justify-content:flex-end;pointer-events:none}.drawer .drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1010;background:#16161e;opacity:0;transition-duration:.28s;transition-timing-function:ease;transition-property:opacity;pointer-events:auto}.drawer .drawer-panel{position:relative;z-index:1020;width:min(460px,100vw - 18px);min-height:100vh;display:flex;flex-direction:column;gap:15px;background:#16161e;border-left:2px solid #C0CAF5;box-shadow:-18px 0 42px #16161e61;opacity:0;transform:translate(100%);transition-duration:.28s;transition-timing-function:ease;transition-property:opacity,transform;pointer-events:auto}.drawer .drawer-header{display:flex;align-items:center;justify-content:space-between;padding-right:15px;border-bottom:2px solid rgba(192,202,245,.24)}.drawer .drawer-title{margin:0;padding:12px 15px;background:#c0caf5;color:#16161e;text-transform:uppercase;letter-spacing:.04em}.drawer .drawer-body{flex:1;overflow-y:auto;padding:18px}.drawer .drawer-footer{padding:18px;border-top:2px solid rgba(192,202,245,.24)}.drawer .drawer-footer .actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:12px;width:100%}.drawer.drawer-left{justify-content:flex-start}.drawer.drawer-left .drawer-panel{border-left:0;border-right:2px solid #C0CAF5;box-shadow:18px 0 42px #16161e61;transform:translate(-100%)}.drawer.a-show .drawer-backdrop{opacity:.82}.drawer.a-show .drawer-panel{opacity:1;transform:translate(0)}.drawer.a-hide .drawer-backdrop{opacity:0}.drawer.a-hide .drawer-panel{opacity:0;transform:translate(100%)}.drawer.a-hide.drawer-left .drawer-panel{transform:translate(-100%)}.drawer-preview{display:grid;grid-template-columns:minmax(0,1fr) minmax(180px,280px);gap:18px;align-items:stretch;padding:18px;border:2px solid rgba(192,202,245,.24);border-left-width:6px;background:#c0caf50b}.drawer-preview .drawer-preview-content{display:flex;flex-direction:column;gap:12px}.drawer-preview .drawer-preview-panel{display:flex;flex-direction:column;gap:12px;padding:15px;border:2px solid #7AA2F7;background:#1f2335}.drawer-preview .drawer-preview-title{margin:0;color:#7aa2f7;font-size:14px;text-transform:uppercase}.drawer-preview .drawer-preview-text{margin:0;color:#a9b1d6;font-size:13px;line-height:1.6}@media(max-width:720px){.drawer-preview{grid-template-columns:1fr}}.nav-topbar{position:sticky;top:0;z-index:900;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;min-height:58px;border-bottom:2px solid rgba(192,202,245,.24);background:#16161ef5;box-shadow:0 10px 28px #16161e42}.nav-topbar-toggle{display:inline-flex;align-items:center;align-self:stretch;gap:8px;min-width:150px;padding:0 15px;border:0;border-right:2px solid rgba(192,202,245,.24);color:#c0caf5;background:#1f2335;font-family:IBM Plex Mono,monospace;font-size:13px;font-weight:700;text-transform:uppercase;cursor:pointer;transition-duration:.2s;transition-timing-function:ease;transition-property:color,background}.nav-topbar-toggle .ph{color:#7aa2f7;font-size:22px}.nav-topbar-toggle:focus-visible{outline:2px solid #E0AF68;outline-offset:3px}@media(hover:hover)and (pointer:fine){.nav-topbar-toggle:hover{color:#16161e;background:#7aa2f7}.nav-topbar-toggle:hover .ph{color:#16161e}}@media(hover:none)and (pointer:coarse){.nav-topbar-toggle:active{color:#16161e;background:#7aa2f7}.nav-topbar-toggle:active .ph{color:#16161e}}.nav-topbar-brand{display:inline-flex;align-items:center;gap:8px;min-width:0;padding:0 15px;color:#c0caf5;font-size:13px;font-weight:700;text-transform:uppercase}.nav-topbar-brand img{width:22px;height:22px}.nav-topbar-current{min-width:160px;margin-right:15px;padding:5px 8px;border:2px solid rgba(192,202,245,.24);color:#a9b1d6;background:#c0caf50b;font-size:12px;font-weight:700;text-align:center;text-transform:uppercase}.nav-drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:910;background:#16161e;opacity:0;pointer-events:none;transition-duration:.28s;transition-timing-function:ease;transition-property:opacity}.nav-drawer{position:fixed;inset:0 auto 0 0;z-index:920;display:flex;flex-direction:column;width:min(380px,100vw);max-height:100vh;border-right:2px solid #C0CAF5;background:#1f2335;box-shadow:18px 0 42px #16161e61;opacity:0;overflow:hidden;pointer-events:none;transform:translate(-100%);transition-duration:.28s;transition-timing-function:ease;transition-property:opacity,transform}.nav-drawer.is-open{opacity:1;pointer-events:auto;transform:translate(0)}.nav-drawer-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;border-bottom:2px solid rgba(192,202,245,.24)}.nav-drawer-title{display:inline-flex;padding:8px 12px;color:#16161e;background:#c0caf5;font-size:13px;font-weight:700;text-transform:uppercase}.nav-drawer-subtitle{margin-top:8px;color:#787c99;font-size:12px;font-weight:700;text-transform:uppercase}.nav-drawer-close{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;padding:0;border:2px solid rgba(192,202,245,.24);color:#c0caf5;background:transparent;font-size:22px;cursor:pointer;transition-duration:.2s;transition-timing-function:ease;transition-property:color,background,border-color}.nav-drawer-close:focus-visible{outline:2px solid #E0AF68;outline-offset:3px}@media(hover:hover)and (pointer:fine){.nav-drawer-close:hover{color:#16161e;background:#f7768e;border-color:#f7768e}}@media(hover:none)and (pointer:coarse){.nav-drawer-close:active{color:#16161e;background:#f7768e;border-color:#f7768e}}.nav-drawer-body{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:12px;scrollbar-width:thin;scrollbar-color:#7AA2F7 #1F2335}.nav-drawer-body::-webkit-scrollbar{width:8px}.nav-drawer-body::-webkit-scrollbar-track{background:#1f2335}.nav-drawer-body::-webkit-scrollbar-thumb{background:#7aa2f7}.nav-drawer-body .list.list-nav{max-width:none}.nav-drawer-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;border-top:2px solid rgba(192,202,245,.24);color:#787c99;background:#c0caf50b;font-size:12px;font-weight:700;text-transform:uppercase}.nav-drawer-open{overflow:hidden}.nav-drawer-open .nav-drawer-backdrop{opacity:.82;pointer-events:auto}@media(max-width:767px){.nav-topbar-toggle{min-width:54px;padding:0 12px}.nav-topbar-brand{padding-right:12px;padding-left:12px}.nav-topbar-current{max-width:38vw;min-width:0;margin-right:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-drawer{width:100vw;border-right:0}}.nav-shell-preview{width:100%;max-width:900px;overflow:hidden;border:2px solid rgba(192,202,245,.24);border-left-width:6px;background:#16161e}.nav-shell-preview-topbar{position:relative;z-index:0;min-height:52px;box-shadow:none}.nav-shell-preview-body{display:grid;grid-template-columns:280px minmax(0,1fr);min-height:320px}.nav-shell-preview-drawer{position:relative;z-index:0;inset:auto;width:auto;max-height:none;opacity:1;pointer-events:auto;transform:none;box-shadow:none}.nav-shell-preview-content{display:flex;flex-direction:column;justify-content:center;gap:12px;min-width:0;padding:18px;border-left:2px solid rgba(192,202,245,.24);background:#c0caf50b}.nav-shell-preview-content h3{margin:0;color:#c0caf5;font-size:20px;text-transform:uppercase}.nav-shell-preview-content p{max-width:360px;margin:0;color:#a9b1d6;font-size:13px;line-height:1.6}@media(max-width:767px){.nav-shell-preview-body{grid-template-columns:1fr}.nav-shell-preview-content{min-height:180px;border-top:2px solid rgba(192,202,245,.24);border-left:0}}.toast{position:fixed;z-index:1100;bottom:-100px;right:15px;max-width:420px;background:#1f2335;border:2px solid #C0CAF5;border-left-width:6px;padding:0;opacity:0;transition-duration:.28s;transition-timing-function:ease;transition-property:opacity,top,bottom}.toast.a-show{bottom:15px;opacity:1}.toast.a-hide{bottom:115px;opacity:0}.toast .toast-content{display:flex;flex-direction:column;gap:0}.toast .toast-content .toast-title{min-height:38px;font-size:16px;display:flex;flex-direction:row;gap:8px;align-items:center;color:#16161e;background:#c0caf5;padding:8px 42px 8px 12px;text-transform:uppercase}.toast .toast-content .toast-text{font-size:13px;padding:22px 15px;margin:0}.toast .toast-close{position:absolute;top:0;right:0;color:#16161e;height:38px;width:38px;border-color:transparent}@media(hover:hover)and (pointer:fine){.toast .toast-close:hover{color:#16161e;background:#16161e1f;border-color:#16161e6b}}@media(hover:none)and (pointer:coarse){.toast .toast-close:active{color:#16161e;background:#16161e1f;border-color:#16161e6b}}.toast.toast-info{border-color:#bb9af7}.toast.toast-info .toast-title{background:#bb9af7}.toast.toast-success{border-color:#9ece6a}.toast.toast-success .toast-title{background:#9ece6a}.toast.toast-warning{border-color:#e0af68}.toast.toast-warning .toast-title{background:#e0af68}.toast.toast-danger{border-color:#f7768e}.toast.toast-danger .toast-title{background:#f7768e}.card{position:relative;max-width:340px;width:100%;overflow:hidden;background:#c0caf50b;border:2px solid #C0CAF5;transition-duration:.2s;transition-timing-function:ease;transition-property:border-color,background,box-shadow,transform}.card .card-title{color:#16161e;background:#c0caf5;padding:8px 12px;font-weight:700;text-transform:uppercase}.card .card-content{padding:15px;height:100%}.card .card-content .card-thumb{display:block;width:min(68%,190px);margin:18px auto 22px;transition-duration:.2s;transition-timing-function:ease;transition-property:transform,filter}.card .card-content p{margin-top:8px;margin-bottom:0}.card .card-footer{padding:8px 15px 15px}@media(hover:hover)and (pointer:fine){.card:hover{border-color:#7aa2f7;background:#c0caf516;box-shadow:0 14px 32px #16161e57;transform:translateY(-2px)}.card:hover .card-thumb{filter:saturate(1.12);transform:translateY(-2px)}}@media(hover:none)and (pointer:coarse){.card:active{border-color:#7aa2f7;background:#c0caf516;box-shadow:0 14px 32px #16161e57;transform:translateY(-2px)}.card:active .card-thumb{filter:saturate(1.12);transform:translateY(-2px)}}.card.status-card{max-width:220px;overflow:hidden;transition-duration:.2s;transition-property:border-color}.card.status-card .status-icon-container{position:relative}.card.status-card .status-icon-container .status-indicator{position:absolute;top:-15px;left:-5px;font-size:22px;color:#f7768e}.card.status-card .status-icon-container .status-indicator.status-online{color:#9ece6a}.card.status-card .status-icon-container .status-icon{display:flex;flex-direction:row;align-items:center;justify-content:center;font-size:56px;height:108px;width:100%;transition-duration:.2s;transition-property:color,transform}.card.status-card .card-title{display:flex;width:100%;font-size:14px;font-weight:700;align-items:center;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;transition-duration:.2s;transition-property:background-color,color}.card.status-card .status-name{font-size:13px;line-height:1.4}@media(hover:hover)and (pointer:fine){.card.status-card:hover .status-icon{transform:translateY(-2px) scale(1.03)}}@media(hover:none)and (pointer:coarse){.card.status-card:active .status-icon{transform:translateY(-2px) scale(1.03)}}.card.status-card.card-success{border-color:#9ece6a}.card.status-card.card-success .card-title,.card.status-card.card-success .toast-title,.card.status-card.card-success .modal-title{color:#16161e;background:#9ece6a}.card.status-card.card-success .status-icon{color:#9ece6a}.card.status-card.card-warning{border-color:#e0af68}.card.status-card.card-warning .card-title,.card.status-card.card-warning .toast-title,.card.status-card.card-warning .modal-title{color:#16161e;background:#e0af68}.card.status-card.card-warning .status-icon{color:#e0af68}.card.status-card.card-info{border-color:#bb9af7}.card.status-card.card-info .card-title,.card.status-card.card-info .toast-title,.card.status-card.card-info .modal-title{color:#16161e;background:#bb9af7}.card.status-card.card-info .status-icon{color:#bb9af7}.card.status-card.card-secondary{border-color:#7aa2f7}.card.status-card.card-secondary .card-title,.card.status-card.card-secondary .toast-title,.card.status-card.card-secondary .modal-title{color:#16161e;background:#7aa2f7}.card.status-card.card-secondary .status-icon{color:#7aa2f7}.card.status-card.card-danger,.card.status-card.card-error{border-color:#f7768e}.card.status-card.card-danger .card-title,.card.status-card.card-danger .toast-title,.card.status-card.card-danger .modal-title,.card.status-card.card-error .card-title,.card.status-card.card-error .toast-title,.card.status-card.card-error .modal-title{color:#16161e;background:#f7768e}.card.status-card.card-danger .status-icon,.card.status-card.card-error .status-icon{color:#f7768e}.card.metric-card{max-width:320px;border-color:#c0caf53d}.card.metric-card .card-content{display:flex;flex-direction:column;gap:15px}.card.metric-card .metric-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.card.metric-card .metric-card-label{margin:0;color:#a9b1d6;font-size:13px;font-weight:600;text-transform:uppercase}.card.metric-card .metric-card-icon{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;color:#16161e;background:#7aa2f7;font-size:22px;transition-duration:.2s;transition-timing-function:ease;transition-property:background,transform}.card.metric-card .metric-card-value{margin:0;color:#c0caf5;font-size:34px;font-weight:700;line-height:1.15}.card.metric-card .metric-card-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;color:#787c99;font-size:13px}.card.metric-card .metric-card-delta{color:#9ece6a;font-weight:700}.card.metric-card .metric-card-delta.metric-card-delta-negative{color:#f7768e}@media(hover:hover)and (pointer:fine){.card.metric-card:hover .metric-card-icon{background:#c0caf5;transform:translateY(-2px)}}@media(hover:none)and (pointer:coarse){.card.metric-card:active .metric-card-icon{background:#c0caf5;transform:translateY(-2px)}}.card.action-card{max-width:360px;border-color:#7aa2f7}.card.action-card .card-content{display:flex;flex-direction:column;gap:15px}.card.action-card .action-card-kicker{display:inline-flex;width:max-content;padding:5px 8px;color:#16161e;background:#7aa2f7;font-size:12px;font-weight:700;line-height:1;text-transform:uppercase;transition-duration:.2s;transition-timing-function:ease;transition-property:background,transform}.card.action-card .action-card-title{margin:0;font-size:20px;font-weight:700;line-height:1.25;text-transform:uppercase}.card.action-card .action-card-text{margin:0;color:#a9b1d6;font-size:13px;line-height:1.6}.card.action-card .action-card-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}@media(hover:hover)and (pointer:fine){.card.action-card:hover .action-card-kicker{background:#c0caf5;transform:translate(5px)}}@media(hover:none)and (pointer:coarse){.card.action-card:active .action-card-kicker{background:#c0caf5;transform:translate(5px)}}.modal{position:fixed;top:0;bottom:0;left:0;right:0;z-index:1000;display:flex;flex-direction:column;align-items:center;justify-content:center}.modal .modal-backdrop{position:fixed;z-index:1010;top:0;bottom:0;left:0;right:0;background:#16161e;opacity:0;transition-duration:.25s;transition-property:opacity}.modal .modal-dialog{position:relative;z-index:1020;width:100%;max-width:960px;margin:200px 18px 18px;height:auto;max-height:calc(100vh - 48px);padding:0;display:flex;flex-direction:column;gap:0;opacity:0;transition-duration:.28s;transition-timing-function:ease;transition-property:opacity,margin-top}.modal .modal-dialog .modal-header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:15px}.modal .modal-dialog .modal-header .modal-title{padding:12px 15px;background:#c0caf5;color:#16161e;text-transform:uppercase;letter-spacing:.04em}.modal .modal-dialog .modal-header .modal-close{flex:0 0 auto;color:#c0caf5;border-color:#c0caf53d;background:#16161e}.modal .modal-dialog .modal-panel{min-height:200px;display:flex;flex-direction:column;gap:15px;overflow:hidden;background:#16161e;border:2px solid #C0CAF5;border-left-width:6px}.modal .modal-dialog .modal-body{max-height:700px;overflow-y:auto;padding:18px}.modal .modal-dialog .modal-footer{padding:18px}.modal .modal-dialog .modal-footer .actions{display:flex;flex-direction:row;justify-content:flex-end;gap:15px;width:100%}.modal.a-show .modal-backdrop{opacity:1}.modal.a-show .modal-dialog{opacity:1;margin-top:0}.modal.a-hide .modal-backdrop{opacity:0}.modal.a-hide .modal-dialog{opacity:0;margin-top:-200px}.alert{position:relative;overflow:hidden;margin-bottom:12px;padding:12px 15px;border:2px solid transparent;border-left-style:solid;border-left-width:6px;background:#c0caf50b;color:#c0caf5;font-weight:500;line-height:1.4;transition-duration:.2s;transition-timing-function:ease;transition-property:background,color,border-color}.alert:after{content:"";position:absolute;inset:0 auto 0 0;width:36%;background:linear-gradient(90deg,transparent,rgba(192,202,245,.12),transparent);opacity:0;pointer-events:none;transform:translate(-120%)}@media(hover:hover)and (pointer:fine){.alert:hover:after{opacity:1;animation:terminal_scan_x .8s ease}}@media(hover:none)and (pointer:coarse){.alert:active:after{opacity:1;animation:terminal_scan_x .8s ease}}.alert.alert-primary{border-color:#c0caf5;background:#c0caf51a;color:#c0caf5}.alert.alert-success{border-color:#9ece6a;background:#9ece6a1a;color:#9ece6a}.alert.alert-secondary{border-color:#7aa2f7;background:#7aa2f71a;color:#7aa2f7}.alert.alert-info{border-color:#bb9af7;background:#bb9af71a;color:#c0caf5}.alert.alert-warning{border-color:#e0af68;background:#e0af681a;color:#e0af68}.alert.alert-error,.alert.alert-danger{border-color:#f7768e;background:#f7768e1a;color:#f7768e}.advanced-select-container{position:relative;height:0}.advanced-select{position:absolute;z-index:100;top:6px;width:100%;height:auto;max-height:200px;overflow-y:auto;background:#16161e;border:2px solid #C0CAF5;border-left-width:6px;margin-top:20px;opacity:0;visibility:hidden;transition-property:opacity,margin-top,visibility;transition-duration:.2s;transition-timing-function:ease}.advanced-select.a-show{opacity:1;margin-top:0;visibility:visible}.advanced-select .popup-options-container .not-found{width:100%;padding:15px;text-align:center;display:none}.advanced-select .popup-options-container .not-found.show{display:block}.advanced-select .popup-options-container .options{width:100%;display:none}.advanced-select .popup-options-container .options.show{display:block}.advanced-select .popup-options-container .options .option{padding:8px 15px;transition-property:color,background;transition-duration:.15s}.advanced-select .popup-options-container .options .option.hide{display:none}.advanced-select .popup-options-container .options .option:hover,.advanced-select .popup-options-container .options .option.focus{color:#16161e;background:#e0af68}.component.editable-string-component .editable-string-content{display:flex;flex-direction:row;align-items:center;gap:8px;font-size:inherit}.component.editable-string-component .editable-string-content .editable-string{font-size:inherit;border-bottom:2px solid rgba(192,202,245,.24)}@media(hover:hover)and (pointer:fine){.component.editable-string-component .edit-text-btn:hover,.component.editable-string-component .apply-changes-btn:hover,.component.editable-string-component .cancel-changes-btn:hover{color:#16161e;background:#e0af68}}@media(hover:none)and (pointer:coarse){.component.editable-string-component .edit-text-btn:active,.component.editable-string-component .apply-changes-btn:active,.component.editable-string-component .cancel-changes-btn:active{color:#16161e;background:#e0af68}}.component.editable-string-component .apply-changes-btn{color:#e0af68}.component.editable-string-component .editable-string-form{display:flex;flex-direction:row;align-items:center;gap:8px}.component.editable-string-component .editable-string-form .form-group{max-width:260px;margin:0}.component.editable-string-component .editable-string-form .form-group .input{padding:8px 15px}.tabs{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:15px}.tabs .tab{display:inline-flex;align-items:center;min-height:38px;padding:8px 12px;border:2px solid rgba(192,202,245,.24);border-left-width:6px;color:#a9b1d6;background:#c0caf50b;font-family:IBM Plex Mono,monospace;font-size:13px;font-weight:600;line-height:1;text-transform:uppercase;cursor:pointer;transition-duration:.2s;transition-timing-function:ease;transition-property:color,background,border-color}.tabs .tab:focus-visible{outline:2px solid #E0AF68;outline-offset:3px}@media(hover:hover)and (pointer:fine){.tabs .tab:hover{color:#16161e;background:#7aa2f7;border-color:#7aa2f7}}@media(hover:none)and (pointer:coarse){.tabs .tab:active{color:#16161e;background:#7aa2f7;border-color:#7aa2f7}}.tabs .tab.tab-active,.tabs .tab[aria-selected=true]{color:#16161e;background:#c0caf5;border-color:#c0caf5}.dropdown,.popover{position:relative;display:inline-flex}.dropdown-menu,.popover-panel,.tooltip-panel{z-index:40;background:#1f2335;border:2px solid rgba(192,202,245,.24);border-left-width:6px;box-shadow:0 14px 36px #16161e5c}.dropdown-menu,.popover-panel{position:absolute;top:calc(100% + 8px);left:0;min-width:220px;display:none;transform-origin:top left}.dropdown.is-open .dropdown-menu,.popover.is-open .popover-panel{display:block;animation:overlay_reveal .2s ease both}.dropdown-menu{padding:5px}.dropdown-menu .dropdown-item{display:flex;align-items:center;gap:8px;width:100%;min-height:38px;padding:8px 12px;border:0;color:#c0caf5;background:transparent;font-family:IBM Plex Mono,monospace;font-size:13px;text-align:left;cursor:pointer;transition-duration:.2s;transition-timing-function:ease;transition-property:color,background}.dropdown-menu .dropdown-item .ph,.dropdown-menu .dropdown-item .ph-bold{font-size:18px}.dropdown-menu .dropdown-item:focus-visible{outline:2px solid #E0AF68;outline-offset:3px}@media(hover:hover)and (pointer:fine){.dropdown-menu .dropdown-item:hover{color:#16161e;background:#7aa2f7}}@media(hover:none)and (pointer:coarse){.dropdown-menu .dropdown-item:active{color:#16161e;background:#7aa2f7}}.dropdown-menu .dropdown-item.dropdown-item-danger{color:#f7768e}@media(hover:hover)and (pointer:fine){.dropdown-menu .dropdown-item.dropdown-item-danger:hover{color:#16161e;background:#f7768e}}@media(hover:none)and (pointer:coarse){.dropdown-menu .dropdown-item.dropdown-item-danger:active{color:#16161e;background:#f7768e}}.popover-panel{width:min(320px,100vw - 22px);padding:15px}.popover-panel .popover-title{margin:0 0 8px;font-size:14px;font-weight:700;text-transform:uppercase}.popover-panel .popover-text{margin:0;color:#a9b1d6;font-size:13px;line-height:1.6}.tooltip{position:relative;display:inline-flex}.tooltip-panel{position:absolute;left:50%;bottom:calc(100% + 8px);width:max-content;max-width:260px;padding:8px 12px;color:#c0caf5;font-size:12px;line-height:1.4;transform:translate(-50%);opacity:0;visibility:hidden;pointer-events:none;transition-duration:.15s;transition-timing-function:ease;transition-property:opacity,visibility}.tooltip:hover .tooltip-panel,.tooltip:focus-within .tooltip-panel,.tooltip.is-open .tooltip-panel{opacity:1;visibility:visible;animation:tooltip_reveal .15s ease both}.m-0{margin:0!important}.mt-0{margin-top:0!important}.mr-0{margin-right:0!important}.mb-0{margin-bottom:0!important}.ml-0{margin-left:0!important}.mx-0{margin-left:0!important;margin-right:0!important}.my-0{margin-top:0!important;margin-bottom:0!important}.p-0{padding:0!important}.pt-0{padding-top:0!important}.pr-0{padding-right:0!important}.pb-0{padding-bottom:0!important}.pl-0{padding-left:0!important}.px-0{padding-left:0!important;padding-right:0!important}.py-0{padding-top:0!important;padding-bottom:0!important}.g-0{gap:0!important}.gx-0{column-gap:0!important}.gy-0{row-gap:0!important}.m-1{margin:5px!important}.mt-1{margin-top:5px!important}.mr-1{margin-right:5px!important}.mb-1{margin-bottom:5px!important}.ml-1{margin-left:5px!important}.mx-1{margin-left:5px!important;margin-right:5px!important}.my-1{margin-top:5px!important;margin-bottom:5px!important}.p-1{padding:5px!important}.pt-1{padding-top:5px!important}.pr-1{padding-right:5px!important}.pb-1{padding-bottom:5px!important}.pl-1{padding-left:5px!important}.px-1{padding-left:5px!important;padding-right:5px!important}.py-1{padding-top:5px!important;padding-bottom:5px!important}.g-1{gap:5px!important}.gx-1{column-gap:5px!important}.gy-1{row-gap:5px!important}.m-2{margin:8px!important}.mt-2{margin-top:8px!important}.mr-2{margin-right:8px!important}.mb-2{margin-bottom:8px!important}.ml-2{margin-left:8px!important}.mx-2{margin-left:8px!important;margin-right:8px!important}.my-2{margin-top:8px!important;margin-bottom:8px!important}.p-2{padding:8px!important}.pt-2{padding-top:8px!important}.pr-2{padding-right:8px!important}.pb-2{padding-bottom:8px!important}.pl-2{padding-left:8px!important}.px-2{padding-left:8px!important;padding-right:8px!important}.py-2{padding-top:8px!important;padding-bottom:8px!important}.g-2{gap:8px!important}.gx-2{column-gap:8px!important}.gy-2{row-gap:8px!important}.m-3{margin:12px!important}.mt-3{margin-top:12px!important}.mr-3{margin-right:12px!important}.mb-3{margin-bottom:12px!important}.ml-3{margin-left:12px!important}.mx-3{margin-left:12px!important;margin-right:12px!important}.my-3{margin-top:12px!important;margin-bottom:12px!important}.p-3{padding:12px!important}.pt-3{padding-top:12px!important}.pr-3{padding-right:12px!important}.pb-3{padding-bottom:12px!important}.pl-3{padding-left:12px!important}.px-3{padding-left:12px!important;padding-right:12px!important}.py-3{padding-top:12px!important;padding-bottom:12px!important}.g-3{gap:12px!important}.gx-3{column-gap:12px!important}.gy-3{row-gap:12px!important}.m-4{margin:15px!important}.mt-4{margin-top:15px!important}.mr-4{margin-right:15px!important}.mb-4{margin-bottom:15px!important}.ml-4{margin-left:15px!important}.mx-4{margin-left:15px!important;margin-right:15px!important}.my-4{margin-top:15px!important;margin-bottom:15px!important}.p-4{padding:15px!important}.pt-4{padding-top:15px!important}.pr-4{padding-right:15px!important}.pb-4{padding-bottom:15px!important}.pl-4{padding-left:15px!important}.px-4{padding-left:15px!important;padding-right:15px!important}.py-4{padding-top:15px!important;padding-bottom:15px!important}.g-4{gap:15px!important}.gx-4{column-gap:15px!important}.gy-4{row-gap:15px!important}.m-5{margin:18px!important}.mt-5{margin-top:18px!important}.mr-5{margin-right:18px!important}.mb-5{margin-bottom:18px!important}.ml-5{margin-left:18px!important}.mx-5{margin-left:18px!important;margin-right:18px!important}.my-5{margin-top:18px!important;margin-bottom:18px!important}.p-5{padding:18px!important}.pt-5{padding-top:18px!important}.pr-5{padding-right:18px!important}.pb-5{padding-bottom:18px!important}.pl-5{padding-left:18px!important}.px-5{padding-left:18px!important;padding-right:18px!important}.py-5{padding-top:18px!important;padding-bottom:18px!important}.g-5{gap:18px!important}.gx-5{column-gap:18px!important}.gy-5{row-gap:18px!important}.m-6{margin:22px!important}.mt-6{margin-top:22px!important}.mr-6{margin-right:22px!important}.mb-6{margin-bottom:22px!important}.ml-6{margin-left:22px!important}.mx-6{margin-left:22px!important;margin-right:22px!important}.my-6{margin-top:22px!important;margin-bottom:22px!important}.p-6{padding:22px!important}.pt-6{padding-top:22px!important}.pr-6{padding-right:22px!important}.pb-6{padding-bottom:22px!important}.pl-6{padding-left:22px!important}.px-6{padding-left:22px!important;padding-right:22px!important}.py-6{padding-top:22px!important;padding-bottom:22px!important}.g-6{gap:22px!important}.gx-6{column-gap:22px!important}.gy-6{row-gap:22px!important}.m-7{margin:26px!important}.mt-7{margin-top:26px!important}.mr-7{margin-right:26px!important}.mb-7{margin-bottom:26px!important}.ml-7{margin-left:26px!important}.mx-7{margin-left:26px!important;margin-right:26px!important}.my-7{margin-top:26px!important;margin-bottom:26px!important}.p-7{padding:26px!important}.pt-7{padding-top:26px!important}.pr-7{padding-right:26px!important}.pb-7{padding-bottom:26px!important}.pl-7{padding-left:26px!important}.px-7{padding-left:26px!important;padding-right:26px!important}.py-7{padding-top:26px!important;padding-bottom:26px!important}.g-7{gap:26px!important}.gx-7{column-gap:26px!important}.gy-7{row-gap:26px!important}.m-8{margin:34px!important}.mt-8{margin-top:34px!important}.mr-8{margin-right:34px!important}.mb-8{margin-bottom:34px!important}.ml-8{margin-left:34px!important}.mx-8{margin-left:34px!important;margin-right:34px!important}.my-8{margin-top:34px!important;margin-bottom:34px!important}.p-8{padding:34px!important}.pt-8{padding-top:34px!important}.pr-8{padding-right:34px!important}.pb-8{padding-bottom:34px!important}.pl-8{padding-left:34px!important}.px-8{padding-left:34px!important;padding-right:34px!important}.py-8{padding-top:34px!important;padding-bottom:34px!important}.g-8{gap:34px!important}.gx-8{column-gap:34px!important}.gy-8{row-gap:34px!important}.m-9{margin:42px!important}.mt-9{margin-top:42px!important}.mr-9{margin-right:42px!important}.mb-9{margin-bottom:42px!important}.ml-9{margin-left:42px!important}.mx-9{margin-left:42px!important;margin-right:42px!important}.my-9{margin-top:42px!important;margin-bottom:42px!important}.p-9{padding:42px!important}.pt-9{padding-top:42px!important}.pr-9{padding-right:42px!important}.pb-9{padding-bottom:42px!important}.pl-9{padding-left:42px!important}.px-9{padding-left:42px!important;padding-right:42px!important}.py-9{padding-top:42px!important;padding-bottom:42px!important}.g-9{gap:42px!important}.gx-9{column-gap:42px!important}.gy-9{row-gap:42px!important}.m-10{margin:48px!important}.mt-10{margin-top:48px!important}.mr-10{margin-right:48px!important}.mb-10{margin-bottom:48px!important}.ml-10{margin-left:48px!important}.mx-10{margin-left:48px!important;margin-right:48px!important}.my-10{margin-top:48px!important;margin-bottom:48px!important}.p-10{padding:48px!important}.pt-10{padding-top:48px!important}.pr-10{padding-right:48px!important}.pb-10{padding-bottom:48px!important}.pl-10{padding-left:48px!important}.px-10{padding-left:48px!important;padding-right:48px!important}.py-10{padding-top:48px!important;padding-bottom:48px!important}.g-10{gap:48px!important}.gx-10{column-gap:48px!important}.gy-10{row-gap:48px!important}.m-11{margin:64px!important}.mt-11{margin-top:64px!important}.mr-11{margin-right:64px!important}.mb-11{margin-bottom:64px!important}.ml-11{margin-left:64px!important}.mx-11{margin-left:64px!important;margin-right:64px!important}.my-11{margin-top:64px!important;margin-bottom:64px!important}.p-11{padding:64px!important}.pt-11{padding-top:64px!important}.pr-11{padding-right:64px!important}.pb-11{padding-bottom:64px!important}.pl-11{padding-left:64px!important}.px-11{padding-left:64px!important;padding-right:64px!important}.py-11{padding-top:64px!important;padding-bottom:64px!important}.g-11{gap:64px!important}.gx-11{column-gap:64px!important}.gy-11{row-gap:64px!important}.m-12{margin:80px!important}.mt-12{margin-top:80px!important}.mr-12{margin-right:80px!important}.mb-12{margin-bottom:80px!important}.ml-12{margin-left:80px!important}.mx-12{margin-left:80px!important;margin-right:80px!important}.my-12{margin-top:80px!important;margin-bottom:80px!important}.p-12{padding:80px!important}.pt-12{padding-top:80px!important}.pr-12{padding-right:80px!important}.pb-12{padding-bottom:80px!important}.pl-12{padding-left:80px!important}.px-12{padding-left:80px!important;padding-right:80px!important}.py-12{padding-top:80px!important;padding-bottom:80px!important}.g-12{gap:80px!important}.gx-12{column-gap:80px!important}.gy-12{row-gap:80px!important}.row{display:flex;flex-direction:row}@media(max-width:1279px){.row.adaptive{flex-direction:column}}.column{display:flex;flex-direction:column}.f-grid{display:flex;flex-direction:row;flex-wrap:wrap}.grid{display:grid}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.items-start{align-items:flex-start!important}.items-center{align-items:center!important}.items-end{align-items:flex-end!important}.justify-start{justify-content:flex-start!important}.justify-center{justify-content:center!important}.justify-between{justify-content:space-between!important}.justify-end{justify-content:flex-end!important}.w-100{width:100%}.w-auto{width:auto!important}.w-fit{width:fit-content!important}.w-200{width:200%}.h-100{height:100%}.min-w-0{min-width:0!important}.overflow-hidden{overflow:hidden!important}.overflow-auto{overflow:auto!important}.fs-xs{font-size:12px}.fs-sm{font-size:13px}.fs-md{font-size:14px}.fs-base{font-size:15px}.fs-lg{font-size:16px}.fs-xl{font-size:20px}.text-left{text-align:left!important}.text-center{text-align:center!important}.text-right{text-align:right!important}.text-uppercase{text-transform:uppercase!important}.text-nowrap{white-space:nowrap!important}.d-none{display:none!important}.d-block{display:block!important}.d-inline-flex{display:inline-flex!important}.d-flex{display:flex!important}.d-grid{display:grid!important}@media(max-width:767px){.grid-2,.grid-3{grid-template-columns:1fr}}*{box-sizing:border-box}html,body{padding:0;margin:0}body{background-color:#16161e;color:#c0caf5}*::-webkit-scrollbar-corner{background:transparent;height:1px}.ph.normalize{position:relative;top:.15em}html,body{height:100%}*::-webkit-scrollbar{width:10px}*::-webkit-scrollbar-track{width:10px;background:#16161e;cursor:pointer}*::-webkit-scrollbar-thumb{width:10px;background:#414868;cursor:default}*::-webkit-scrollbar-corner{background:transparent}*::-webkit-scrollbar-button{display:none}#app{display:flex;height:100vh;height:100dvh;overflow:hidden}.app-main{flex:1 1 0;min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden;background:#16161e}.app-sidebar{width:380px;min-width:380px;max-width:380px;display:flex;flex-direction:column;background:#1f2335;border-right:2px solid rgba(192,202,245,.24);overflow:hidden;flex-shrink:0;transition:width .22s ease,min-width .22s ease,max-width .22s ease,border-color .22s ease,transform .28s ease}.app-sidebar.is-hidden-by-artifacts{width:0;min-width:0;max-width:0;border-right-color:transparent}@media(max-width:1280px){.app-sidebar{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;width:min(380px,92vw)!important;min-width:min(380px,92vw)!important;transform:translate(-100%);transition:transform .28s ease}.app-sidebar.is-mobile-open{transform:translate(0)}.app-sidebar.is-hidden-by-artifacts{width:min(380px,92vw)!important;min-width:min(380px,92vw)!important;max-width:min(380px,92vw)!important;border-right-color:#c0caf53d}}@media(max-width:980px){.app-sidebar,.app-sidebar.is-hidden-by-artifacts{width:100vw!important;min-width:100vw!important;max-width:100vw!important}}.sidebar-header{padding:15px;border-bottom:2px solid rgba(192,202,245,.24);display:flex;flex-direction:column;gap:8px}.sidebar-controls-row{display:flex;align-items:center;gap:8px}.sidebar-controls-row .sidebar-profile-select{flex:1;min-width:0}.sidebar-logo{display:flex;align-items:center;gap:8px;text-decoration:none}.sidebar-logo img{width:28px;height:28px}.sidebar-logo span{font-size:18px;font-weight:700;color:#c0caf5;letter-spacing:-.3px}.sidebar-sessions{flex:1;overflow:hidden;display:flex;flex-direction:column}.sessions-header{display:flex;align-items:center;justify-content:space-between;padding:8px 15px;gap:8px}.sessions-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#787c99}.sessions-refresh-btn{font-size:14px;color:#787c99;transition:color .15s,transform .15s}.sessions-refresh-btn:hover{color:#c0caf5}.sessions-refresh-btn.is-spinning i{animation:spin .8s linear infinite}.sidebar-profile-select{position:relative}.sidebar-profile-select select{width:100%;-moz-appearance:none;appearance:none;-webkit-appearance:none;min-height:46px;font-family:inherit;font-size:13px;font-weight:500;padding:5px 34px 5px 15px;border:2px solid rgba(192,202,245,.24);border-bottom-width:6px;border-bottom-color:#c0caf5;color:#c0caf5;background-color:#c0caf50b;cursor:pointer;transition:border-color .2s ease,background-color .2s ease;outline:none}.sidebar-profile-select select:hover{border-bottom-color:#787c99}.sidebar-profile-select select:focus{outline:2px solid #E0AF68;outline-offset:3px;border-color:#7aa2f7;background-color:transparent}.sidebar-profile-select select option{background:#1f2335;color:#c0caf5}.sidebar-profile-select:after{content:"";position:absolute;right:15px;top:50%;transform:translateY(-50%);width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid #A9B1D6;pointer-events:none}.session-item{display:flex;align-items:flex-start;gap:8px;padding:8px 15px;cursor:pointer;border-radius:0;transition:background .15s ease;position:relative}.session-item:hover{background:#c0caf50b}.session-item:hover .session-actions{opacity:1}@media(hover:none){.session-item .session-actions{opacity:1}}.session-item.is-active{background:#c0caf516;border-left:6px solid #7AA2F7;padding-left:9px}.session-item.is-pinned{background:#e0af6812}.session-item.is-pinned .session-pin-icon{opacity:1;color:#e0af68}.session-item.is-pinned .session-name{color:#e0af68}.session-pin-icon{color:#787c99;font-size:14px;opacity:0;transition:opacity .15s ease;flex-shrink:0;margin-top:2px}.session-info{flex:1;overflow:hidden}.session-name{font-size:13px;color:#a9b1d6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4}.session-time{font-size:11px;color:#787c99;line-height:1.4;margin-top:2px}.session-preview{font-size:12px;color:#c0caf5;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;line-height:1.4;margin-top:3px}.session-actions{display:flex;gap:2px;opacity:0;transition:opacity .15s ease;flex-shrink:0;align-self:flex-start;margin-top:1px}.session-actions .btn-icon{width:26px;height:26px;font-size:14px}.chat-area{flex:1 1 0;min-height:0;min-width:0;display:flex;flex-direction:column;overflow:hidden;background:#16161e}.chat-header{display:flex;align-items:center;gap:8px;padding:8px 15px;border-bottom:2px solid rgba(192,202,245,.24);background:#1f2335;flex-shrink:0;min-height:54px}.chat-header-info{flex:1;display:flex;align-items:center;gap:8px;overflow:hidden;min-width:0}@media(max-width:768px){.chat-header-info{flex-direction:column;align-items:flex-start;gap:2px}}.chat-header-title{font-size:14px;font-weight:600;color:#c0caf5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-shrink:1;min-width:0}.btn-sidebar-toggle{display:none}@media(max-width:1280px){.btn-sidebar-toggle{display:flex}}.context-bar{display:flex;align-items:center;flex-shrink:0;cursor:default}.profile-badge{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;background:#c0caf50b;border:2px solid rgba(192,202,245,.24);font-size:12px;color:#a9b1d6;white-space:nowrap}.message-list{flex:1;overflow-y:auto;overflow-x:hidden;padding:22px 15px;display:flex;flex-direction:column;gap:15px;min-height:0}@media(max-width:768px){.message-list{padding-left:10px;padding-right:10px}}.message-list .vue-recycle-scroller{flex:1}.message-list-inner{display:flex;flex-direction:column;gap:34px;width:100%;max-width:920px;margin:0 auto;padding:34px 22px;transition:opacity .2s ease}@media(max-width:768px){.message-list-inner{padding-left:0;padding-right:0}}.message-list-inner.is-hidden{opacity:0;pointer-events:none}.msg-user{display:flex;justify-content:flex-end;gap:8px}.msg-user-bubble{background:#7aa2f7;color:#16161e;padding:8px 15px;font-size:14px;line-height:1.6;word-wrap:break-word;width:100%}.msg-user-bubble .msg-user-quote{margin:0 0 5px;padding:2px 0 2px 8px;border-left:3px solid rgba(22,22,30,.35);opacity:.7;font-size:13px}.msg-user-attachments{display:flex;flex-wrap:wrap;gap:5px;margin-top:5px}.msg-user-image{width:80px;height:80px;object-fit:cover;cursor:pointer;transition:opacity .15s}.msg-user-image:hover{opacity:.75}.msg-user-file-pill{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;background:#16161e4d;font-size:12px}.msg-time{font-size:11px;color:#787c99;line-height:1;margin-top:4px}.msg-meta-row{display:flex;align-items:center;gap:8px;margin-top:2px;min-width:0}.msg-meta-item{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:#787c99;white-space:nowrap}.msg-meta-item i{font-size:12px;opacity:.7}.msg-user-wrap{display:flex;flex-direction:column;align-items:flex-end;max-width:70%}@media(max-width:768px){.msg-user-wrap{max-width:90%}}.msg-user-footer{display:flex;align-items:center;gap:5px;align-self:flex-end}.msg-copy-btn{width:22px;height:22px;min-width:22px;padding:0;font-size:12px;opacity:.5;transition:opacity .15s}.msg-copy-btn:hover{opacity:1}.msg-meta-row>.msg-copy-btn{margin-left:auto}.msg-meta-row .msg-rate-btn{width:22px;height:22px;min-width:22px;padding:0;font-size:13px}.msg-assistant{display:flex;flex-direction:column;gap:8px;max-width:100%}.planning-indicator{display:flex;align-items:center;gap:8px;font-size:13px;font-style:italic;color:#787c99;padding:5px 0}.planning-indicator.is-executing{color:#a9b1d6;font-style:normal}.planning-label{opacity:.75;transition:opacity .2s}.msg-assistant-avatar{width:28px;height:28px;border-radius:50%;flex-shrink:0}.msg-assistant-content{font-size:14px;line-height:1.7;color:#c0caf5}.msg-assistant-content p{margin:0 0 15px}.msg-assistant-content p:last-child{margin-bottom:0}.msg-assistant-content h1,.msg-assistant-content h2,.msg-assistant-content h3,.msg-assistant-content h4{margin:22px 0 8px;color:#c0caf5}.msg-assistant-content ul,.msg-assistant-content ol{padding-left:22px;margin-bottom:15px}.msg-assistant-content li{margin-bottom:8px}.msg-assistant-content blockquote{margin:8px 0;padding-left:15px;border-left:6px solid #7AA2F7;color:#a9b1d6}.msg-assistant-content a{color:#7aa2f7}.msg-assistant-content strong{color:#c0caf5}.msg-assistant-content hr{border:none;border-top:1px solid rgba(192,202,245,.24);margin:15px 0}.msg-assistant-content .table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:15px 0}.msg-assistant-content .table{margin:15px 0}.msg-assistant-content .table thead{border-bottom:2px solid #C0CAF5}.msg-assistant-content .table tbody tr{transition:background .2s ease}.msg-assistant-content .table tbody tr:hover{background:#7aa2f714}.msg-assistant-content .table tbody tr:hover td:first-child{color:#7aa2f7}.msg-assistant-content .table tr th,.msg-assistant-content .table tr td{padding:8px 15px;font-size:13px;vertical-align:middle;border-bottom:2px solid rgba(192,202,245,.08)}.msg-assistant-content .table tr th{color:#c0caf5;background:#c0caf50a;text-transform:uppercase;letter-spacing:.06em}.msg-assistant-content :not(pre)>code{font-family:IBM Plex Mono,monospace;font-size:13px;background:#c0caf516;padding:1px 5px;color:#7dcfff}.msg-assistant-content .code-block{margin:15px 0;background:#1f2335;border:2px solid rgba(192,202,245,.24);overflow:hidden}.msg-assistant-content .code-block .code-header{display:flex;align-items:center;justify-content:space-between;padding:5px 15px;background:#c0caf516;border-bottom:2px solid rgba(192,202,245,.24);font-size:12px;color:#787c99;font-family:IBM Plex Mono,monospace}.msg-assistant-content .code-block pre{margin:0;background:#1f2335!important}.msg-assistant-content .code-block pre code{font-family:IBM Plex Mono,monospace;font-size:13px;display:block;padding:15px;overflow-x:auto}.thinking-card{margin-bottom:8px}.thinking-card summary{list-style:none;display:flex;align-items:center;gap:8px;padding:8px 15px;cursor:pointer;color:#787c99;font-size:13px;font-style:italic;background:#c0caf50b;border:2px solid rgba(192,202,245,.24);transition:background .15s ease;-webkit-user-select:none;user-select:none}.thinking-card summary::-webkit-details-marker{display:none}.thinking-card summary:hover{background:#c0caf516}.thinking-card[open] summary{border-bottom-color:transparent}.thinking-card .thinking-chevron{margin-left:auto;font-size:18px;color:#787c99;flex-shrink:0;transition:transform .15s ease}.thinking-card[open] .thinking-chevron{transform:rotate(180deg)}.thinking-card .thinking-body{padding:15px;font-size:13px;font-style:italic;color:#a9b1d6;line-height:1.6;background:#c0caf50b;border:2px solid rgba(192,202,245,.24);border-top:none;white-space:pre-wrap}.plan-card{border:2px solid #BB9AF7;border-left-width:6px;border-left-color:#bb9af7;overflow:hidden;font-size:13px;margin-bottom:8px}.plan-card summary{list-style:none;display:flex;align-items:center;gap:8px;padding:8px 15px;cursor:pointer;background:#bb9af714;color:#bb9af7;font-size:13px;-webkit-user-select:none;user-select:none}.plan-card summary::-webkit-details-marker{display:none}.plan-card summary:hover{background:#bb9af724}.plan-card summary .plan-chevron{margin-left:auto;font-size:18px;color:#bb9af799;transition:transform .15s ease;flex-shrink:0}.plan-card[open] .plan-chevron{transform:rotate(180deg)}.plan-card .plan-body{padding:15px;font-size:13px;color:#a9b1d6;line-height:1.6;background:#bb9af70a;border-top:2px solid rgba(187,154,247,.3)}.plan-card .plan-body p{margin:0 0 8px}.plan-card .plan-body p:last-child{margin-bottom:0}.plan-card .plan-body ul,.plan-card .plan-body ol{padding-left:22px;margin-bottom:8px}.plan-card .plan-body li{margin-bottom:5px}.plan-card .plan-body strong{color:#c0caf5}.tool-card{border:2px solid rgba(192,202,245,.24);border-left-width:6px;margin-bottom:8px;border-left-color:#7aa2f7;overflow:hidden;font-size:13px}.tool-card.is-success{border-left-color:#9ece6a}.tool-card.is-error{border-left-color:#f7768e}.tool-card summary{list-style:none;display:flex;align-items:center;gap:8px;padding:8px 15px;cursor:pointer;background:#c0caf50b;color:#a9b1d6;-webkit-user-select:none;user-select:none}.tool-card summary::-webkit-details-marker{display:none}.tool-card summary:hover{background:#c0caf516}.tool-card .tool-name{flex:1;font-family:IBM Plex Mono,monospace;font-size:12px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tool-card .tool-running-time{font-family:IBM Plex Mono,monospace;font-size:11px;color:#787c99;white-space:nowrap}.tool-card .tool-status-icon{display:flex;align-items:center;justify-content:center;width:18px;height:18px;font-size:18px;flex-shrink:0}.tool-card .tool-emoji{font-size:18px;line-height:1;flex-shrink:0}.tool-card .tool-chevron{font-size:18px;color:#787c99;flex-shrink:0;transition:transform .15s ease}.tool-card[open] .tool-chevron{transform:rotate(180deg)}.tool-card-body{background:#c0caf50b;border-top:2px solid rgba(192,202,245,.24)}.tool-running-banner{display:flex;align-items:center;gap:8px;padding:8px 15px;color:#a9b1d6;background:#7aa2f714;border-bottom:1px solid rgba(192,202,245,.24);font-size:12px}.tool-section{padding:8px 15px}.tool-section+.tool-section{border-top:1px solid rgba(192,202,245,.24)}.tool-section-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#787c99;margin-bottom:5px}.tool-code{font-family:IBM Plex Mono,monospace;font-size:12px;color:#a9b1d6;white-space:pre-wrap;word-break:break-all;max-height:200px;overflow-y:auto}.subagent-steps{display:flex;flex-direction:column;gap:5px;padding:5px 15px 15px;background:#c0caf50b}.subagent-planning-indicator{display:flex;align-items:center;gap:8px;padding:5px 15px;font-size:12px;font-style:italic;color:#787c99;background:#c0caf50b}.summary-card{border:2px solid #BB9AF7;overflow:hidden;font-size:13px}.summary-card summary{list-style:none;display:flex;align-items:center;gap:8px;padding:8px 15px;cursor:pointer;background:#bb9af714;color:#bb9af7;-webkit-user-select:none;user-select:none}.summary-card summary::-webkit-details-marker{display:none}.compression-notice{font-size:12px}.compression-notice summary{list-style:none;text-align:center;padding:8px;color:#787c99;display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.compression-notice summary::-webkit-details-marker{display:none}.compression-notice summary:before,.compression-notice summary:after{content:"";flex:1;height:1px;background:#c0caf53d}.compression-notice .compression-counts{opacity:.7}.compression-notice .compression-chevron{font-size:18px;transition:transform .15s ease}.compression-notice[open] .compression-chevron{transform:rotate(180deg)}.compression-notice .compression-body{padding:15px;font-size:13px;color:#a9b1d6;line-height:1.6;background:#c0caf50b;border:2px solid rgba(192,202,245,.24)}.input-bar{flex-shrink:0;padding:8px 15px 15px;background:#16161e;border-top:2px solid rgba(192,202,245,.24)}.input-dropzone{position:relative}.input-dropzone.is-dragging:after{content:"Drop files here";position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#7aa2f71f;border:2px dashed #7AA2F7;font-size:14px;color:#7aa2f7;pointer-events:none;z-index:10}.file-preview-strip{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:5px}.file-preview-image{position:relative;width:60px;height:60px}.file-preview-image img{width:100%;height:100%;object-fit:cover;border:2px solid rgba(192,202,245,.24)}.file-preview-pill{display:inline-flex;align-items:center;gap:5px;padding:5px 8px;background:#c0caf50b;border:2px solid rgba(192,202,245,.24);font-size:12px;color:#a9b1d6;max-width:180px}.file-preview-pill span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-preview-remove{background:none;border:none;cursor:pointer;color:#787c99;padding:0;display:flex;align-items:center;font-size:14px;transition:color .15s ease;flex-shrink:0}.file-preview-remove:hover{color:#f7768e}.upload-progress{height:2px;background:#c0caf516;margin-bottom:5px;overflow:hidden}.upload-progress-fill{height:100%;background:#7aa2f7;transition:width .2s ease}.input-row{display:flex;align-items:center;gap:8px;background:#1f2335;border:2px solid rgba(192,202,245,.24);padding:8px;transition:border-color .15s ease;max-width:920px;margin:0 auto}.input-row:focus-within{border-color:#7aa2f7}.input-textarea{flex:1;background:none;border:none;outline:none;resize:none;color:#c0caf5;font-size:14px;line-height:1.5;font-family:inherit;min-height:24px;max-height:144px;overflow-y:auto;padding:2px 0}.input-textarea::placeholder{color:#787c99}.welcome-screen{flex:1;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:34px;gap:34px;text-align:center}@media(max-width:768px){.welcome-screen{padding:52px 15px 15px;gap:15px;justify-content:flex-start}}.welcome-logo{display:flex;flex-direction:column;align-items:center;gap:8px}.welcome-logo img{width:64px;height:64px}.welcome-logo h1{font-size:32px;font-weight:700;letter-spacing:-.5px;color:#c0caf5;margin:0}.welcome-logo p{font-size:15px;color:#a9b1d6;margin:0}@media(max-width:768px){.welcome-logo{flex-direction:row;flex-wrap:wrap;justify-content:center;gap:8px}.welcome-logo img{width:36px;height:36px}.welcome-logo h1{font-size:22px}.welcome-logo p{font-size:13px;flex-basis:100%}}.welcome-profiles{display:flex;gap:15px;flex-wrap:wrap;justify-content:center;max-width:600px}@media(max-width:768px){.welcome-profiles{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;width:100%;max-width:100%}}.welcome-profile-card{display:flex;flex-direction:column;align-items:center;gap:8px;padding:15px;background:#c0caf50b;border:2px solid rgba(192,202,245,.24);cursor:pointer;transition:border-color .15s ease,background .15s ease;width:160px;text-align:center}.welcome-profile-card:hover,.welcome-profile-card.is-selected{border-color:#7aa2f7;background:#c0caf516}.welcome-profile-card.is-selected{border-color:#7aa2f7}.welcome-profile-card .profile-icon{font-size:32px;color:#7aa2f7}.welcome-profile-card .profile-name{font-size:14px;font-weight:600;color:#c0caf5}.welcome-profile-card .profile-desc{font-size:12px;color:#787c99;line-height:1.4}@media(max-width:768px){.welcome-profile-card{width:auto;padding:10px;gap:6px}.welcome-profile-card .profile-icon{font-size:22px}.welcome-profile-card .profile-name{font-size:13px}.welcome-profile-card .profile-desc{font-size:11px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}}.empty-chat{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:15px;color:#787c99;padding:34px}.empty-chat .empty-icon{font-size:56px;opacity:.4}.empty-chat p{font-size:15px;margin:0}.spinner{display:inline-block;width:14px;height:14px;border:2px solid rgba(192,202,245,.24);border-top-color:#7aa2f7;border-radius:50%;animation:spin .6s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.fade-enter-active,.fade-leave-active{transition:opacity .15s ease}.fade-enter-from,.fade-leave-to{opacity:0}.msg-enter{animation:msgEnter .2s ease both}@keyframes msgEnter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.slide-left-enter-active,.slide-left-leave-active{transition:transform .28s ease,opacity .28s ease}.slide-left-enter-from,.slide-left-leave-to{transform:translate(-100%);opacity:0}.modal-enter-active,.modal-leave-active{transition:opacity .28s ease}.modal-enter-active .modal-panel,.modal-leave-active .modal-panel{transition:opacity .28s ease,margin-top .28s ease}.modal-enter-from,.modal-leave-to{opacity:0}.modal-enter-from .modal-panel,.modal-leave-to .modal-panel{opacity:0;margin-top:200px}.btn-icon:not(.with-rotate) .ph{transform:none!important;transition:none!important}.tool-card[open] .tool-chevron,.thinking-card[open] .tool-chevron{transform:rotate(180deg)!important}
diff --git a/webclient/dist/assets/index-NFrfC3et.js b/webclient/dist/assets/index-NFrfC3et.js
deleted file mode 100644
index 2e89c38..0000000
--- a/webclient/dist/assets/index-NFrfC3et.js
+++ /dev/null
@@ -1,93 +0,0 @@
-var hS=Object.defineProperty;var RS=(e,t,n)=>t in e?hS(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Et=(e,t,n)=>RS(e,typeof t!="symbol"?t+"":t,n);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))r(a);new MutationObserver(a=>{for(const i of a)if(i.type==="childList")for(const o of i.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&r(o)}).observe(document,{childList:!0,subtree:!0});function n(a){const i={};return a.integrity&&(i.integrity=a.integrity),a.referrerPolicy&&(i.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?i.credentials="include":a.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(a){if(a.ep)return;a.ep=!0;const i=n(a);fetch(a.href,i)}})();/**
-* @vue/shared v3.5.32
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/function Pc(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const St={},Rr=[],Rn=()=>{},Sg=()=>!1,Va=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),$a=e=>e.startsWith("onUpdate:"),Lt=Object.assign,kc=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},vS=Object.prototype.hasOwnProperty,lt=(e,t)=>vS.call(e,t),Me=Array.isArray,vr=e=>sa(e)==="[object Map]",fg=e=>sa(e)==="[object Set]",O_=e=>sa(e)==="[object Date]",Ye=e=>typeof e=="function",ht=e=>typeof e=="string",Xt=e=>typeof e=="symbol",_t=e=>e!==null&&typeof e=="object",bg=e=>(_t(e)||Ye(e))&&Ye(e.then)&&Ye(e.catch),Tg=Object.prototype.toString,sa=e=>Tg.call(e),CS=e=>sa(e).slice(8,-1),hg=e=>sa(e)==="[object Object]",za=e=>ht(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Hr=Pc(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Wa=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},NS=/-\w/g,Vt=Wa(e=>e.replace(NS,t=>t.slice(1).toUpperCase())),OS=/\B([A-Z])/g,Wn=Wa(e=>e.replace(OS,"-$1").toLowerCase()),Ka=Wa(e=>e.charAt(0).toUpperCase()+e.slice(1)),va=Wa(e=>e?`on${Ka(e)}`:""),Tn=(e,t)=>!Object.is(e,t),Ca=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},Uc=e=>{const t=parseFloat(e);return isNaN(t)?e:t},yS=e=>{const t=ht(e)?Number(e):NaN;return isNaN(t)?e:t};let y_;const Qa=()=>y_||(y_=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Kn(e){if(Me(e)){const t={};for(let n=0;n{if(n){const r=n.split(AS);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function Ze(e){let t="";if(ht(e))t=e;else if(Me(e))for(let n=0;n!!(e&&e.__v_isRef===!0),Pe=e=>ht(e)?e:e==null?"":Me(e)||_t(e)&&(e.toString===Tg||!Ye(e.toString))?Cg(e)?Pe(e.value):JSON.stringify(e,Ng,2):String(e),Ng=(e,t)=>Cg(t)?Ng(e,t.value):vr(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,a],i)=>(n[Ei(r,i)+" =>"]=a,n),{})}:fg(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Ei(n))}:Xt(t)?Ei(t):_t(t)&&!Me(t)&&!hg(t)?String(t):t,Ei=(e,t="")=>{var n;return Xt(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/**
-* @vue/reactivity v3.5.32
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/let Pt;class Og{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.__v_skip=!0,this.parent=Pt,!t&&Pt&&(this.index=(Pt.scopes||(Pt.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0&&(Pt=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,r;for(n=0,r=this.effects.length;n0)return;if($r){let t=$r;for($r=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Vr;){let t=Vr;for(Vr=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(r){e||(e=r)}t=n}}if(e)throw e}function xg(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Mg(e){let t,n=e.depsTail,r=n;for(;r;){const a=r.prevDep;r.version===-1?(r===n&&(n=a),qc(r),US(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=a}e.deps=t,e.depsTail=n}function uc(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Lg(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Lg(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Zr)||(e.globalVersion=Zr,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!uc(e))))return;e.flags|=2;const t=e.dep,n=ft,r=ln;ft=e,ln=!0;try{xg(e);const a=e.fn(e._value);(t.version===0||Tn(a,e._value))&&(e.flags|=128,e._value=a,t.version++)}catch(a){throw t.version++,a}finally{ft=n,ln=r,Mg(e),e.flags&=-3}}function qc(e,t=!1){const{dep:n,prevSub:r,nextSub:a}=e;if(r&&(r.nextSub=a,e.prevSub=void 0),a&&(a.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)qc(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function US(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let ln=!0;const wg=[];function kn(){wg.push(ln),ln=!1}function Un(){const e=wg.pop();ln=e===void 0?!0:e}function I_(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=ft;ft=void 0;try{t()}finally{ft=n}}}let Zr=0;class FS{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Hc{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!ft||!ln||ft===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==ft)n=this.activeLink=new FS(ft,this),ft.deps?(n.prevDep=ft.depsTail,ft.depsTail.nextDep=n,ft.depsTail=n):ft.deps=ft.depsTail=n,Pg(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const r=n.nextDep;r.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=r),n.prevDep=ft.depsTail,n.nextDep=void 0,ft.depsTail.nextDep=n,ft.depsTail=n,ft.deps===n&&(ft.deps=r)}return n}trigger(t){this.version++,Zr++,this.notify(t)}notify(t){Gc();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Yc()}}}function Pg(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let r=t.deps;r;r=r.nextDep)Pg(r)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Aa=new WeakMap,lr=Symbol(""),pc=Symbol(""),Jr=Symbol("");function kt(e,t,n){if(ln&&ft){let r=Aa.get(e);r||Aa.set(e,r=new Map);let a=r.get(n);a||(r.set(n,a=new Hc),a.map=r,a.key=n),a.track()}}function xn(e,t,n,r,a,i){const o=Aa.get(e);if(!o){Zr++;return}const s=c=>{c&&c.trigger()};if(Gc(),t==="clear")o.forEach(s);else{const c=Me(e),_=c&&za(n);if(c&&n==="length"){const l=Number(r);o.forEach((d,u)=>{(u==="length"||u===Jr||!Xt(u)&&u>=l)&&s(d)})}else switch((n!==void 0||o.has(void 0))&&s(o.get(n)),_&&s(o.get(Jr)),t){case"add":c?_&&s(o.get("length")):(s(o.get(lr)),vr(e)&&s(o.get(pc)));break;case"delete":c||(s(o.get(lr)),vr(e)&&s(o.get(pc)));break;case"set":vr(e)&&s(o.get(lr));break}}Yc()}function BS(e,t){const n=Aa.get(e);return n&&n.get(t)}function Er(e){const t=et(e);return t===e?t:(kt(t,"iterate",Jr),Qt(e)?t:t.map(cn))}function Xa(e){return kt(e=et(e),"iterate",Jr),e}function fn(e,t){return Fn(e)?Or(Pn(e)?cn(t):t):cn(t)}const GS={__proto__:null,[Symbol.iterator](){return fi(this,Symbol.iterator,e=>fn(this,e))},concat(...e){return Er(this).concat(...e.map(t=>Me(t)?Er(t):t))},entries(){return fi(this,"entries",e=>(e[1]=fn(this,e[1]),e))},every(e,t){return yn(this,"every",e,t,void 0,arguments)},filter(e,t){return yn(this,"filter",e,t,n=>n.map(r=>fn(this,r)),arguments)},find(e,t){return yn(this,"find",e,t,n=>fn(this,n),arguments)},findIndex(e,t){return yn(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return yn(this,"findLast",e,t,n=>fn(this,n),arguments)},findLastIndex(e,t){return yn(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return yn(this,"forEach",e,t,void 0,arguments)},includes(...e){return bi(this,"includes",e)},indexOf(...e){return bi(this,"indexOf",e)},join(e){return Er(this).join(e)},lastIndexOf(...e){return bi(this,"lastIndexOf",e)},map(e,t){return yn(this,"map",e,t,void 0,arguments)},pop(){return kr(this,"pop")},push(...e){return kr(this,"push",e)},reduce(e,...t){return A_(this,"reduce",e,t)},reduceRight(e,...t){return A_(this,"reduceRight",e,t)},shift(){return kr(this,"shift")},some(e,t){return yn(this,"some",e,t,void 0,arguments)},splice(...e){return kr(this,"splice",e)},toReversed(){return Er(this).toReversed()},toSorted(e){return Er(this).toSorted(e)},toSpliced(...e){return Er(this).toSpliced(...e)},unshift(...e){return kr(this,"unshift",e)},values(){return fi(this,"values",e=>fn(this,e))}};function fi(e,t,n){const r=Xa(e),a=r[t]();return r!==e&&!Qt(e)&&(a._next=a.next,a.next=()=>{const i=a._next();return i.done||(i.value=n(i.value)),i}),a}const YS=Array.prototype;function yn(e,t,n,r,a,i){const o=Xa(e),s=o!==e&&!Qt(e),c=o[t];if(c!==YS[t]){const d=c.apply(e,i);return s?cn(d):d}let _=n;o!==e&&(s?_=function(d,u){return n.call(this,fn(e,d),u,e)}:n.length>2&&(_=function(d,u){return n.call(this,d,u,e)}));const l=c.call(o,_,r);return s&&a?a(l):l}function A_(e,t,n,r){const a=Xa(e),i=a!==e&&!Qt(e);let o=n,s=!1;a!==e&&(i?(s=r.length===0,o=function(_,l,d){return s&&(s=!1,_=fn(e,_)),n.call(this,_,fn(e,l),d,e)}):n.length>3&&(o=function(_,l,d){return n.call(this,_,l,d,e)}));const c=a[t](o,...r);return s?fn(e,c):c}function bi(e,t,n){const r=et(e);kt(r,"iterate",Jr);const a=r[t](...n);return(a===-1||a===!1)&&Za(n[0])?(n[0]=et(n[0]),r[t](...n)):a}function kr(e,t,n=[]){kn(),Gc();const r=et(e)[t].apply(e,n);return Yc(),Un(),r}const qS=Pc("__proto__,__v_isRef,__isVue"),kg=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Xt));function HS(e){Xt(e)||(e=String(e));const t=et(this);return kt(t,"has",e),t.hasOwnProperty(e)}class Ug{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){if(n==="__v_skip")return t.__v_skip;const a=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!a;if(n==="__v_isReadonly")return a;if(n==="__v_isShallow")return i;if(n==="__v_raw")return r===(a?i?jS:Yg:i?Gg:Bg).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const o=Me(t);if(!a){let c;if(o&&(c=GS[n]))return c;if(n==="hasOwnProperty")return HS}const s=Reflect.get(t,n,Ct(t)?t:r);if((Xt(n)?kg.has(n):qS(n))||(a||kt(t,"get",n),i))return s;if(Ct(s)){const c=o&&za(n)?s:s.value;return a&&_t(c)?gc(c):c}return _t(s)?a?gc(s):la(s):s}}class Fg extends Ug{constructor(t=!1){super(!1,t)}set(t,n,r,a){let i=t[n];const o=Me(t)&&za(n);if(!this._isShallow){const _=Fn(i);if(!Qt(r)&&!Fn(r)&&(i=et(i),r=et(r)),!o&&Ct(i)&&!Ct(r))return _||(i.value=r),!0}const s=o?Number(n)e,Ea=e=>Reflect.getPrototypeOf(e);function KS(e,t,n){return function(...r){const a=this.__v_raw,i=et(a),o=vr(i),s=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,_=a[e](...r),l=n?mc:t?Or:cn;return!t&&kt(i,"iterate",c?pc:lr),Lt(Object.create(_),{next(){const{value:d,done:u}=_.next();return u?{value:d,done:u}:{value:s?[l(d[0]),l(d[1])]:l(d),done:u}}})}}function Sa(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function QS(e,t){const n={get(a){const i=this.__v_raw,o=et(i),s=et(a);e||(Tn(a,s)&&kt(o,"get",a),kt(o,"get",s));const{has:c}=Ea(o),_=t?mc:e?Or:cn;if(c.call(o,a))return _(i.get(a));if(c.call(o,s))return _(i.get(s));i!==o&&i.get(a)},get size(){const a=this.__v_raw;return!e&&kt(et(a),"iterate",lr),a.size},has(a){const i=this.__v_raw,o=et(i),s=et(a);return e||(Tn(a,s)&&kt(o,"has",a),kt(o,"has",s)),a===s?i.has(a):i.has(a)||i.has(s)},forEach(a,i){const o=this,s=o.__v_raw,c=et(s),_=t?mc:e?Or:cn;return!e&&kt(c,"iterate",lr),s.forEach((l,d)=>a.call(i,_(l),_(d),o))}};return Lt(n,e?{add:Sa("add"),set:Sa("set"),delete:Sa("delete"),clear:Sa("clear")}:{add(a){const i=et(this),o=Ea(i),s=et(a),c=!t&&!Qt(a)&&!Fn(a)?s:a;return o.has.call(i,c)||Tn(a,c)&&o.has.call(i,a)||Tn(s,c)&&o.has.call(i,s)||(i.add(c),xn(i,"add",c,c)),this},set(a,i){!t&&!Qt(i)&&!Fn(i)&&(i=et(i));const o=et(this),{has:s,get:c}=Ea(o);let _=s.call(o,a);_||(a=et(a),_=s.call(o,a));const l=c.call(o,a);return o.set(a,i),_?Tn(i,l)&&xn(o,"set",a,i):xn(o,"add",a,i),this},delete(a){const i=et(this),{has:o,get:s}=Ea(i);let c=o.call(i,a);c||(a=et(a),c=o.call(i,a)),s&&s.call(i,a);const _=i.delete(a);return c&&xn(i,"delete",a,void 0),_},clear(){const a=et(this),i=a.size!==0,o=a.clear();return i&&xn(a,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(a=>{n[a]=KS(a,e,t)}),n}function Vc(e,t){const n=QS(e,t);return(r,a,i)=>a==="__v_isReactive"?!e:a==="__v_isReadonly"?e:a==="__v_raw"?r:Reflect.get(lt(n,a)&&a in r?n:r,a,i)}const XS={get:Vc(!1,!1)},ZS={get:Vc(!1,!0)},JS={get:Vc(!0,!1)};const Bg=new WeakMap,Gg=new WeakMap,Yg=new WeakMap,jS=new WeakMap;function ef(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function tf(e){return e.__v_skip||!Object.isExtensible(e)?0:ef(CS(e))}function la(e){return Fn(e)?e:$c(e,!1,$S,XS,Bg)}function qg(e){return $c(e,!1,WS,ZS,Gg)}function gc(e){return $c(e,!0,zS,JS,Yg)}function $c(e,t,n,r,a){if(!_t(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=tf(e);if(i===0)return e;const o=a.get(e);if(o)return o;const s=new Proxy(e,i===2?r:n);return a.set(e,s),s}function Pn(e){return Fn(e)?Pn(e.__v_raw):!!(e&&e.__v_isReactive)}function Fn(e){return!!(e&&e.__v_isReadonly)}function Qt(e){return!!(e&&e.__v_isShallow)}function Za(e){return e?!!e.__v_raw:!1}function et(e){const t=e&&e.__v_raw;return t?et(t):e}function Ja(e){return!lt(e,"__v_skip")&&Object.isExtensible(e)&&Rg(e,"__v_skip",!0),e}const cn=e=>_t(e)?la(e):e,Or=e=>_t(e)?gc(e):e;function Ct(e){return e?e.__v_isRef===!0:!1}function ee(e){return Hg(e,!1)}function hr(e){return Hg(e,!0)}function Hg(e,t){return Ct(e)?e:new nf(e,t)}class nf{constructor(t,n){this.dep=new Hc,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:et(t),this._value=n?t:cn(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,r=this.__v_isShallow||Qt(t)||Fn(t);t=r?t:et(t),Tn(t,n)&&(this._rawValue=t,this._value=r?t:cn(t),this.dep.trigger())}}function Z(e){return Ct(e)?e.value:e}function pe(e){return Ye(e)?e():Z(e)}const rf={get:(e,t,n)=>t==="__v_raw"?e:Z(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const a=e[t];return Ct(a)&&!Ct(n)?(a.value=n,!0):Reflect.set(e,t,n,r)}};function Vg(e){return Pn(e)?e:new Proxy(e,rf)}function af(e){const t=Me(e)?new Array(e.length):{};for(const n in e)t[n]=sf(e,n);return t}class of{constructor(t,n,r){this._object=t,this._defaultValue=r,this.__v_isRef=!0,this._value=void 0,this._key=Xt(n)?n:String(n),this._raw=et(t);let a=!0,i=t;if(!Me(t)||Xt(this._key)||!za(this._key))do a=!Za(i)||Qt(i);while(a&&(i=i.__v_raw));this._shallow=a}get value(){let t=this._object[this._key];return this._shallow&&(t=Z(t)),this._value=t===void 0?this._defaultValue:t}set value(t){if(this._shallow&&Ct(this._raw[this._key])){const n=this._object[this._key];if(Ct(n)){n.value=t;return}}this._object[this._key]=t}get dep(){return BS(this._raw,this._key)}}function sf(e,t,n){return new of(e,t,n)}class lf{constructor(t,n,r){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Hc(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Zr-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=r}notify(){if(this.flags|=16,!(this.flags&8)&&ft!==this)return Dg(this,!0),!0}get value(){const t=this.dep.track();return Lg(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function cf(e,t,n=!1){let r,a;return Ye(e)?r=e:(r=e.get,a=e.set),new lf(r,a,n)}const fa={},Da=new WeakMap;let rr;function _f(e,t=!1,n=rr){if(n){let r=Da.get(n);r||Da.set(n,r=[]),r.push(e)}}function df(e,t,n=St){const{immediate:r,deep:a,once:i,scheduler:o,augmentJob:s,call:c}=n,_=v=>a?v:Qt(v)||a===!1||a===0?Mn(v,1):Mn(v);let l,d,u,m,p=!1,E=!1;if(Ct(e)?(d=()=>e.value,p=Qt(e)):Pn(e)?(d=()=>_(e),p=!0):Me(e)?(E=!0,p=e.some(v=>Pn(v)||Qt(v)),d=()=>e.map(v=>{if(Ct(v))return v.value;if(Pn(v))return _(v);if(Ye(v))return c?c(v,2):v()})):Ye(e)?t?d=c?()=>c(e,2):e:d=()=>{if(u){kn();try{u()}finally{Un()}}const v=rr;rr=l;try{return c?c(e,3,[m]):e(m)}finally{rr=v}}:d=Rn,t&&a){const v=d,O=a===!0?1/0:a;d=()=>Mn(v(),O)}const S=yg(),T=()=>{l.stop(),S&&S.active&&kc(S.effects,l)};if(i&&t){const v=t;t=(...O)=>{v(...O),T()}}let h=E?new Array(e.length).fill(fa):fa;const C=v=>{if(!(!(l.flags&1)||!l.dirty&&!v))if(t){const O=l.run();if(a||p||(E?O.some((N,I)=>Tn(N,h[I])):Tn(O,h))){u&&u();const N=rr;rr=l;try{const I=[O,h===fa?void 0:E&&h[0]===fa?[]:h,m];h=O,c?c(t,3,I):t(...I)}finally{rr=N}}}else l.run()};return s&&s(C),l=new Ig(d),l.scheduler=o?()=>o(C,!1):C,m=v=>_f(v,!1,l),u=l.onStop=()=>{const v=Da.get(l);if(v){if(c)c(v,4);else for(const O of v)O();Da.delete(l)}},t?r?C(!0):h=l.run():o?o(C.bind(null,!0),!0):l.run(),T.pause=l.pause.bind(l),T.resume=l.resume.bind(l),T.stop=T,T}function Mn(e,t=1/0,n){if(t<=0||!_t(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,Ct(e))Mn(e.value,t,n);else if(Me(e))for(let r=0;r{Mn(r,t,n)});else if(hg(e)){for(const r in e)Mn(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&Mn(e[r],t,n)}return e}/**
-* @vue/runtime-core v3.5.32
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/function ca(e,t,n,r){try{return r?e(...r):e()}catch(a){ja(a,t,n)}}function _n(e,t,n,r){if(Ye(e)){const a=ca(e,t,n,r);return a&&bg(a)&&a.catch(i=>{ja(i,t,n)}),a}if(Me(e)){const a=[];for(let i=0;i>>1,a=qt[r],i=jr(a);i=jr(n)?qt.push(e):qt.splice(pf(t),0,e),e.flags|=1,zg()}}function zg(){xa||(xa=$g.then(Kg))}function mf(e){Me(e)?Cr.push(...e):$n&&e.id===-1?$n.splice(fr+1,0,e):e.flags&1||(Cr.push(e),e.flags|=1),zg()}function D_(e,t,n=En+1){for(;njr(n)-jr(r));if(Cr.length=0,$n){$n.push(...t);return}for($n=t,fr=0;fr<$n.length;fr++){const n=$n[fr];n.flags&4&&(n.flags&=-2),n.flags&8||n(),n.flags&=-2}$n=null,fr=0}}const jr=e=>e.id==null?e.flags&2?-1:1/0:e.id;function Kg(e){try{for(En=0;En{r._d&&Pa(-1);const i=Ma(t);let o;try{o=e(...a)}finally{Ma(i),r._d&&Pa(1)}return o};return r._n=!0,r._c=!0,r._d=!0,r}function Xg(e,t){if(wt===null)return e;const n=oi(wt),r=e.dirs||(e.dirs=[]);for(let a=0;a1)return n&&Ye(t)?t.call(r&&r.proxy):t}}function gf(){return!!(Jc()||_r)}const Ef=Symbol.for("v-scx"),Sf=()=>cr(Ef);function qe(e,t,n){return Zg(e,t,n)}function Zg(e,t,n=St){const{immediate:r,deep:a,flush:i,once:o}=n,s=Lt({},n),c=t&&r||!t&&i!=="post";let _;if(ra){if(i==="sync"){const m=Sf();_=m.__watcherHandles||(m.__watcherHandles=[])}else if(!c){const m=()=>{};return m.stop=Rn,m.resume=Rn,m.pause=Rn,m}}const l=Ft;s.call=(m,p,E)=>_n(m,l,p,E);let d=!1;i==="post"?s.scheduler=m=>{Yt(m,l&&l.suspense)}:i!=="sync"&&(d=!0,s.scheduler=(m,p)=>{p?m():zc(m)}),s.augmentJob=m=>{t&&(m.flags|=4),d&&(m.flags|=2,l&&(m.id=l.uid,m.i=l))};const u=df(e,t,s);return ra&&(_?_.push(u):c&&u()),u}function ff(e,t,n){const r=this.proxy,a=ht(e)?e.includes(".")?Jg(r,e):()=>r[e]:e.bind(r,r);let i;Ye(t)?i=t:(i=t.handler,n=t);const o=_a(this),s=Zg(a,i.bind(r),n);return o(),s}function Jg(e,t){const n=t.split(".");return()=>{let r=e;for(let a=0;ae.__isTeleport,ir=e=>e&&(e.disabled||e.disabled===""),bf=e=>e&&(e.defer||e.defer===""),x_=e=>typeof SVGElement<"u"&&e instanceof SVGElement,M_=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Ec=(e,t)=>{const n=e&&e.to;return ht(n)?t?t(n):null:n},Tf={name:"Teleport",__isTeleport:!0,process(e,t,n,r,a,i,o,s,c,_){const{mc:l,pc:d,pbc:u,o:{insert:m,querySelector:p,createText:E,createComment:S}}=_,T=ir(t.props);let{dynamicChildren:h}=t;const C=(N,I,y)=>{N.shapeFlag&16&&l(N.children,I,y,a,i,o,s,c)},v=(N=t)=>{const I=ir(N.props),y=N.target=Ec(N.props,p),M=Sc(y,N,E,m);y&&(o!=="svg"&&x_(y)?o="svg":o!=="mathml"&&M_(y)&&(o="mathml"),a&&a.isCE&&(a.ce._teleportTargets||(a.ce._teleportTargets=new Set)).add(y),I||(C(N,y,M),Yr(N,!1)))},O=N=>{const I=()=>{jn.get(N)===I&&(jn.delete(N),ir(N.props)&&(C(N,n,N.anchor),Yr(N,!0)),v(N))};jn.set(N,I),Yt(I,i)};if(e==null){const N=t.el=E(""),I=t.anchor=E("");if(m(N,n,r),m(I,n,r),bf(t.props)||i&&i.pendingBranch){O(t);return}T&&(C(t,n,I),Yr(t,!0)),v()}else{t.el=e.el;const N=t.anchor=e.anchor,I=jn.get(e);if(I){I.flags|=8,jn.delete(e),O(t);return}t.targetStart=e.targetStart;const y=t.target=e.target,M=t.targetAnchor=e.targetAnchor,H=ir(e.props),W=H?n:y,x=H?N:M;if(o==="svg"||x_(y)?o="svg":(o==="mathml"||M_(y))&&(o="mathml"),h?(u(e.dynamicChildren,h,W,a,i,o,s),Xc(e,t,!0)):c||d(e,t,W,x,a,i,o,s,!1),T)H?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):ba(t,n,N,_,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const J=t.target=Ec(t.props,p);J&&ba(t,J,null,_,0)}else H&&ba(t,y,M,_,1);Yr(t,T)}},remove(e,t,n,{um:r,o:{remove:a}},i){const{shapeFlag:o,children:s,anchor:c,targetStart:_,targetAnchor:l,target:d,props:u}=e;let m=i||!ir(u);const p=jn.get(e);if(p&&(p.flags|=8,jn.delete(e),m=!1),d&&(a(_),a(l)),i&&a(c),o&16)for(let E=0;E{e.isMounted=!0}),Zt(()=>{e.isUnmounting=!0}),e}const an=[Function,Array],tE={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:an,onEnter:an,onAfterEnter:an,onEnterCancelled:an,onBeforeLeave:an,onLeave:an,onAfterLeave:an,onLeaveCancelled:an,onBeforeAppear:an,onAppear:an,onAfterAppear:an,onAppearCancelled:an},nE=e=>{const t=e.subTree;return t.component?nE(t.component):t},vf={name:"BaseTransition",props:tE,setup(e,{slots:t}){const n=Jc(),r=Rf();return()=>{const a=t.default&&iE(t.default(),!0);if(!a||!a.length)return;const i=rE(a),o=et(e),{mode:s}=o;if(r.isLeaving)return Ti(i);const c=L_(i);if(!c)return Ti(i);let _=fc(c,o,r,n,d=>_=d);c.type!==Ut&&ea(c,_);let l=n.subTree&&L_(n.subTree);if(l&&l.type!==Ut&&!or(l,c)&&nE(n).type!==Ut){let d=fc(l,o,r,n);if(ea(l,d),s==="out-in"&&c.type!==Ut)return r.isLeaving=!0,d.afterLeave=()=>{r.isLeaving=!1,n.job.flags&8||n.update(),delete d.afterLeave,l=void 0},Ti(i);s==="in-out"&&c.type!==Ut?d.delayLeave=(u,m,p)=>{const E=aE(r,l);E[String(l.key)]=l,u[Sn]=()=>{m(),u[Sn]=void 0,delete _.delayedLeave,l=void 0},_.delayedLeave=()=>{p(),delete _.delayedLeave,l=void 0}}:l=void 0}else l&&(l=void 0);return i}}};function rE(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==Ut){t=n;break}}return t}const Cf=vf;function aE(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function fc(e,t,n,r,a){const{appear:i,mode:o,persisted:s=!1,onBeforeEnter:c,onEnter:_,onAfterEnter:l,onEnterCancelled:d,onBeforeLeave:u,onLeave:m,onAfterLeave:p,onLeaveCancelled:E,onBeforeAppear:S,onAppear:T,onAfterAppear:h,onAppearCancelled:C}=t,v=String(e.key),O=aE(n,e),N=(M,H)=>{M&&_n(M,r,9,H)},I=(M,H)=>{const W=H[1];N(M,H),Me(M)?M.every(x=>x.length<=1)&&W():M.length<=1&&W()},y={mode:o,persisted:s,beforeEnter(M){let H=c;if(!n.isMounted)if(i)H=S||c;else return;M[Sn]&&M[Sn](!0);const W=O[v];W&&or(e,W)&&W.el[Sn]&&W.el[Sn](),N(H,[M])},enter(M){if(O[v]===e)return;let H=_,W=l,x=d;if(!n.isMounted)if(i)H=T||_,W=h||l,x=C||d;else return;let J=!1;M[Ur]=be=>{J||(J=!0,be?N(x,[M]):N(W,[M]),y.delayedLeave&&y.delayedLeave(),M[Ur]=void 0)};const ae=M[Ur].bind(null,!1);H?I(H,[M,ae]):ae()},leave(M,H){const W=String(e.key);if(M[Ur]&&M[Ur](!0),n.isUnmounting)return H();N(u,[M]);let x=!1;M[Sn]=ae=>{x||(x=!0,H(),ae?N(E,[M]):N(p,[M]),M[Sn]=void 0,O[W]===e&&delete O[W])};const J=M[Sn].bind(null,!1);O[W]=e,m?I(m,[M,J]):J()},clone(M){const H=fc(M,t,n,r,a);return a&&a(H),H}};return y}function Ti(e){if(ti(e))return e=zn(e),e.children=null,e}function L_(e){if(!ti(e))return eE(e.type)&&e.children?rE(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&Ye(n.default))return n.default()}}function ea(e,t){e.shapeFlag&6&&e.component?(e.transition=t,ea(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function iE(e,t=!1,n){let r=[],a=0;for(let i=0;i1)for(let i=0;izr(E,t&&(Me(t)?t[S]:t),n,r,a));return}if(Nr(r)&&!a){r.shapeFlag&512&&r.type.__asyncResolved&&r.component.subTree.component&&zr(e,t,n,r.component.subTree);return}const i=r.shapeFlag&4?oi(r.component):r.el,o=a?null:i,{i:s,r:c}=e,_=t&&t.r,l=s.refs===St?s.refs={}:s.refs,d=s.setupState,u=et(d),m=d===St?Sg:E=>w_(l,E)?!1:lt(u,E),p=(E,S)=>!(S&&w_(l,S));if(_!=null&&_!==c){if(P_(t),ht(_))l[_]=null,m(_)&&(d[_]=null);else if(Ct(_)){const E=t;p(_,E.k)&&(_.value=null),E.k&&(l[E.k]=null)}}if(Ye(c))ca(c,s,12,[o,l]);else{const E=ht(c),S=Ct(c);if(E||S){const T=()=>{if(e.f){const h=E?m(c)?d[c]:l[c]:p()||!e.k?c.value:l[e.k];if(a)Me(h)&&kc(h,i);else if(Me(h))h.includes(i)||h.push(i);else if(E)l[c]=[i],m(c)&&(d[c]=l[c]);else{const C=[i];p(c,e.k)&&(c.value=C),e.k&&(l[e.k]=C)}}else E?(l[c]=o,m(c)&&(d[c]=o)):S&&(p(c,e.k)&&(c.value=o),e.k&&(l[e.k]=o))};if(o){const h=()=>{T(),La.delete(e)};h.id=-1,La.set(e,h),Yt(h,n)}else P_(e),T()}}}function P_(e){const t=La.get(e);t&&(t.flags|=8,La.delete(e))}Qa().requestIdleCallback;Qa().cancelIdleCallback;const Nr=e=>!!e.type.__asyncLoader,ti=e=>e.type.__isKeepAlive;function Wc(e,t){lE(e,"a",t)}function sE(e,t){lE(e,"da",t)}function lE(e,t,n=Ft){const r=e.__wdc||(e.__wdc=()=>{let a=n;for(;a;){if(a.isDeactivated)return;a=a.parent}return e()});if(ni(t,r,n),n){let a=n.parent;for(;a&&a.parent;)ti(a.parent.vnode)&&Nf(r,t,n,a),a=a.parent}}function Nf(e,t,n,r){const a=ni(t,e,r,!0);Qn(()=>{kc(r[t],a)},n)}function ni(e,t,n=Ft,r=!1){if(n){const a=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{kn();const s=_a(n),c=_n(t,n,e,o);return s(),Un(),c});return r?a.unshift(i):a.push(i),i}}const Bn=e=>(t,n=Ft)=>{(!ra||e==="sp")&&ni(e,(...r)=>t(...r),n)},Of=Bn("bm"),vn=Bn("m"),yf=Bn("bu"),If=Bn("u"),Zt=Bn("bum"),Qn=Bn("um"),Af=Bn("sp"),Df=Bn("rtg"),xf=Bn("rtc");function Mf(e,t=Ft){ni("ec",e,t)}const cE="components";function $t(e,t){return dE(cE,e,!0,t)||e}const _E=Symbol.for("v-ndc");function ri(e){return ht(e)?dE(cE,e,!1)||e:e||_E}function dE(e,t,n=!0,r=!1){const a=wt||Ft;if(a){const i=a.type;{const s=Sb(i,!1);if(s&&(s===t||s===Vt(t)||s===Ka(Vt(t))))return i}const o=k_(a[e]||i[e],t)||k_(a.appContext[e],t);return!o&&r?i:o}}function k_(e,t){return e&&(e[t]||e[Vt(t)]||e[Ka(Vt(t))])}function dn(e,t,n,r){let a;const i=n,o=Me(e);if(o||ht(e)){const s=o&&Pn(e);let c=!1,_=!1;s&&(c=!Qt(e),_=Fn(e),e=Xa(e)),a=new Array(e.length);for(let l=0,d=e.length;lt(s,c,void 0,i));else{const s=Object.keys(e);a=new Array(s.length);for(let c=0,_=s.length;c<_;c++){const l=s[c];a[c]=t(e[l],l,c,i)}}else a=[];return a}function Lf(e,t){for(let n=0;n{const i=r.fn(...a);return i&&(i.key=r.key),i}:r.fn)}return e}function hn(e,t,n={},r,a){if(wt.ce||wt.parent&&Nr(wt.parent)&&wt.parent.ce){const _=Object.keys(n).length>0;return t!=="default"&&(n.name=t),P(),ct(mt,null,[Be("slot",n,r)],_?-2:64)}let i=e[t];i&&i._c&&(i._d=!1),P();const o=i&&uE(i(n)),s=n.key||o&&o.key,c=ct(mt,{key:(s&&!Xt(s)?s:`_${t}`)+(!o&&r?"_fb":"")},o||[],o&&e._===1?64:-2);return c.scopeId&&(c.slotScopeIds=[c.scopeId+"-s"]),i&&i._c&&(i._d=!0),c}function uE(e){return e.some(t=>na(t)?!(t.type===Ut||t.type===mt&&!uE(t.children)):!0)?e:null}function wf(e,t){const n={};for(const r in e)n[va(r)]=e[r];return n}const bc=e=>e?ME(e)?oi(e):bc(e.parent):null,Wr=Lt(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>bc(e.parent),$root:e=>bc(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>mE(e),$forceUpdate:e=>e.f||(e.f=()=>{zc(e.update)}),$nextTick:e=>e.n||(e.n=xt.bind(e.proxy)),$watch:e=>ff.bind(e)}),hi=(e,t)=>e!==St&&!e.__isScriptSetup&<(e,t),Pf={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:a,props:i,accessCache:o,type:s,appContext:c}=e;if(t[0]!=="$"){const u=o[t];if(u!==void 0)switch(u){case 1:return r[t];case 2:return a[t];case 4:return n[t];case 3:return i[t]}else{if(hi(r,t))return o[t]=1,r[t];if(a!==St&<(a,t))return o[t]=2,a[t];if(lt(i,t))return o[t]=3,i[t];if(n!==St&<(n,t))return o[t]=4,n[t];Tc&&(o[t]=0)}}const _=Wr[t];let l,d;if(_)return t==="$attrs"&&kt(e.attrs,"get",""),_(e);if((l=s.__cssModules)&&(l=l[t]))return l;if(n!==St&<(n,t))return o[t]=4,n[t];if(d=c.config.globalProperties,lt(d,t))return d[t]},set({_:e},t,n){const{data:r,setupState:a,ctx:i}=e;return hi(a,t)?(a[t]=n,!0):r!==St&<(r,t)?(r[t]=n,!0):lt(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:a,props:i,type:o}},s){let c;return!!(n[s]||e!==St&&s[0]!=="$"&<(e,s)||hi(t,s)||lt(i,s)||lt(r,s)||lt(Wr,s)||lt(a.config.globalProperties,s)||(c=o.__cssModules)&&c[s])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:lt(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function U_(e){return Me(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Tc=!0;function kf(e){const t=mE(e),n=e.proxy,r=e.ctx;Tc=!1,t.beforeCreate&&F_(t.beforeCreate,e,"bc");const{data:a,computed:i,methods:o,watch:s,provide:c,inject:_,created:l,beforeMount:d,mounted:u,beforeUpdate:m,updated:p,activated:E,deactivated:S,beforeDestroy:T,beforeUnmount:h,destroyed:C,unmounted:v,render:O,renderTracked:N,renderTriggered:I,errorCaptured:y,serverPrefetch:M,expose:H,inheritAttrs:W,components:x,directives:J,filters:ae}=t;if(_&&Uf(_,r,null),o)for(const ce in o){const Re=o[ce];Ye(Re)&&(r[ce]=Re.bind(n))}if(a){const ce=a.call(n,n);_t(ce)&&(e.data=la(ce))}if(Tc=!0,i)for(const ce in i){const Re=i[ce],ge=Ye(Re)?Re.bind(n,n):Ye(Re.get)?Re.get.bind(n,n):Rn,ke=!Ye(Re)&&Ye(Re.set)?Re.set.bind(n):Rn,Ve=Ee({get:ge,set:ke});Object.defineProperty(r,ce,{enumerable:!0,configurable:!0,get:()=>Ve.value,set:We=>Ve.value=We})}if(s)for(const ce in s)pE(s[ce],r,n,ce);if(c){const ce=Ye(c)?c.call(n):c;Reflect.ownKeys(ce).forEach(Re=>{ar(Re,ce[Re])})}l&&F_(l,e,"c");function le(ce,Re){Me(Re)?Re.forEach(ge=>ce(ge.bind(n))):Re&&ce(Re.bind(n))}if(le(Of,d),le(vn,u),le(yf,m),le(If,p),le(Wc,E),le(sE,S),le(Mf,y),le(xf,N),le(Df,I),le(Zt,h),le(Qn,v),le(Af,M),Me(H))if(H.length){const ce=e.exposed||(e.exposed={});H.forEach(Re=>{Object.defineProperty(ce,Re,{get:()=>n[Re],set:ge=>n[Re]=ge,enumerable:!0})})}else e.exposed||(e.exposed={});O&&e.render===Rn&&(e.render=O),W!=null&&(e.inheritAttrs=W),x&&(e.components=x),J&&(e.directives=J),M&&oE(e)}function Uf(e,t,n=Rn){Me(e)&&(e=hc(e));for(const r in e){const a=e[r];let i;_t(a)?"default"in a?i=cr(a.from||r,a.default,!0):i=cr(a.from||r):i=cr(a),Ct(i)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[r]=i}}function F_(e,t,n){_n(Me(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function pE(e,t,n,r){let a=r.includes(".")?Jg(n,r):()=>n[r];if(ht(e)){const i=t[e];Ye(i)&&qe(a,i)}else if(Ye(e))qe(a,e.bind(n));else if(_t(e))if(Me(e))e.forEach(i=>pE(i,t,n,r));else{const i=Ye(e.handler)?e.handler.bind(n):t[e.handler];Ye(i)&&qe(a,i,e)}}function mE(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:a,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,s=i.get(t);let c;return s?c=s:!a.length&&!n&&!r?c=t:(c={},a.length&&a.forEach(_=>wa(c,_,o,!0)),wa(c,t,o)),_t(t)&&i.set(t,c),c}function wa(e,t,n,r=!1){const{mixins:a,extends:i}=t;i&&wa(e,i,n,!0),a&&a.forEach(o=>wa(e,o,n,!0));for(const o in t)if(!(r&&o==="expose")){const s=Ff[o]||n&&n[o];e[o]=s?s(e[o],t[o]):t[o]}return e}const Ff={data:B_,props:G_,emits:G_,methods:qr,computed:qr,beforeCreate:Gt,created:Gt,beforeMount:Gt,mounted:Gt,beforeUpdate:Gt,updated:Gt,beforeDestroy:Gt,beforeUnmount:Gt,destroyed:Gt,unmounted:Gt,activated:Gt,deactivated:Gt,errorCaptured:Gt,serverPrefetch:Gt,components:qr,directives:qr,watch:Gf,provide:B_,inject:Bf};function B_(e,t){return t?e?function(){return Lt(Ye(e)?e.call(this,this):e,Ye(t)?t.call(this,this):t)}:t:e}function Bf(e,t){return qr(hc(e),hc(t))}function hc(e){if(Me(e)){const t={};for(let n=0;nt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Vt(t)}Modifiers`]||e[`${Wn(t)}Modifiers`];function Vf(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||St;let a=n;const i=t.startsWith("update:"),o=i&&Hf(r,t.slice(7));o&&(o.trim&&(a=n.map(l=>ht(l)?l.trim():l)),o.number&&(a=n.map(Uc)));let s,c=r[s=va(t)]||r[s=va(Vt(t))];!c&&i&&(c=r[s=va(Wn(t))]),c&&_n(c,e,6,a);const _=r[s+"Once"];if(_){if(!e.emitted)e.emitted={};else if(e.emitted[s])return;e.emitted[s]=!0,_n(_,e,6,a)}}const $f=new WeakMap;function EE(e,t,n=!1){const r=n?$f:t.emitsCache,a=r.get(e);if(a!==void 0)return a;const i=e.emits;let o={},s=!1;if(!Ye(e)){const c=_=>{const l=EE(_,t,!0);l&&(s=!0,Lt(o,l))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!s?(_t(e)&&r.set(e,null),null):(Me(i)?i.forEach(c=>o[c]=null):Lt(o,i),_t(e)&&r.set(e,o),o)}function ai(e,t){return!e||!Va(t)?!1:(t=t.slice(2).replace(/Once$/,""),lt(e,t[0].toLowerCase()+t.slice(1))||lt(e,Wn(t))||lt(e,t))}function Y_(e){const{type:t,vnode:n,proxy:r,withProxy:a,propsOptions:[i],slots:o,attrs:s,emit:c,render:_,renderCache:l,props:d,data:u,setupState:m,ctx:p,inheritAttrs:E}=e,S=Ma(e);let T,h;try{if(n.shapeFlag&4){const v=a||r,O=v;T=bn(_.call(O,v,l,d,m,u,p)),h=s}else{const v=t;T=bn(v.length>1?v(d,{attrs:s,slots:o,emit:c}):v(d,null)),h=t.props?s:zf(s)}}catch(v){Kr.length=0,ja(v,e,1),T=Be(Ut)}let C=T;if(h&&E!==!1){const v=Object.keys(h),{shapeFlag:O}=C;v.length&&O&7&&(i&&v.some($a)&&(h=Wf(h,i)),C=zn(C,h,!1,!0))}return n.dirs&&(C=zn(C,null,!1,!0),C.dirs=C.dirs?C.dirs.concat(n.dirs):n.dirs),n.transition&&ea(C,n.transition),T=C,Ma(S),T}const zf=e=>{let t;for(const n in e)(n==="class"||n==="style"||Va(n))&&((t||(t={}))[n]=e[n]);return t},Wf=(e,t)=>{const n={};for(const r in e)(!$a(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Kf(e,t,n){const{props:r,children:a,component:i}=e,{props:o,children:s,patchFlag:c}=t,_=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?q_(r,o,_):!!o;if(c&8){const l=t.dynamicProps;for(let d=0;dObject.create(fE),TE=e=>Object.getPrototypeOf(e)===fE;function Xf(e,t,n,r=!1){const a={},i=bE();e.propsDefaults=Object.create(null),hE(e,t,a,i);for(const o in e.propsOptions[0])o in a||(a[o]=void 0);n?e.props=r?a:qg(a):e.type.props?e.props=a:e.props=i,e.attrs=i}function Zf(e,t,n,r){const{props:a,attrs:i,vnode:{patchFlag:o}}=e,s=et(a),[c]=e.propsOptions;let _=!1;if((r||o>0)&&!(o&16)){if(o&8){const l=e.vnode.dynamicProps;for(let d=0;d{c=!0;const[u,m]=RE(d,t,!0);Lt(o,u),m&&s.push(...m)};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}if(!i&&!c)return _t(e)&&r.set(e,Rr),Rr;if(Me(i))for(let l=0;le==="_"||e==="_ctx"||e==="$stable",Qc=e=>Me(e)?e.map(bn):[bn(e)],jf=(e,t,n)=>{if(t._n)return t;const r=bt((...a)=>Qc(t(...a)),n);return r._c=!1,r},vE=(e,t,n)=>{const r=e._ctx;for(const a in e){if(Kc(a))continue;const i=e[a];if(Ye(i))t[a]=jf(a,i,r);else if(i!=null){const o=Qc(i);t[a]=()=>o}}},CE=(e,t)=>{const n=Qc(t);e.slots.default=()=>n},NE=(e,t,n)=>{for(const r in t)(n||!Kc(r))&&(e[r]=t[r])},eb=(e,t,n)=>{const r=e.slots=bE();if(e.vnode.shapeFlag&32){const a=t._;a?(NE(r,t,n),n&&Rg(r,"_",a,!0)):vE(t,r)}else t&&CE(e,t)},tb=(e,t,n)=>{const{vnode:r,slots:a}=e;let i=!0,o=St;if(r.shapeFlag&32){const s=t._;s?n&&s===1?i=!1:NE(a,t,n):(i=!t.$stable,vE(t,a)),o=t}else t&&(CE(e,t),o={default:1});if(i)for(const s in a)!Kc(s)&&o[s]==null&&delete a[s]},Yt=ob;function nb(e){return rb(e)}function rb(e,t){const n=Qa();n.__VUE__=!0;const{insert:r,remove:a,patchProp:i,createElement:o,createText:s,createComment:c,setText:_,setElementText:l,parentNode:d,nextSibling:u,setScopeId:m=Rn,insertStaticContent:p}=e,E=(g,f,L,F=null,B=null,G=null,X=void 0,j=null,ne=!!f.dynamicChildren)=>{if(g===f)return;g&&!or(g,f)&&(F=D(g),We(g,B,G,!0),g=null),f.patchFlag===-2&&(ne=!1,f.dynamicChildren=null);const{type:z,ref:Ne,shapeFlag:de}=f;switch(z){case ii:S(g,f,L,F);break;case Ut:T(g,f,L,F);break;case Na:g==null&&h(f,L,F,X);break;case mt:x(g,f,L,F,B,G,X,j,ne);break;default:de&1?O(g,f,L,F,B,G,X,j,ne):de&6?J(g,f,L,F,B,G,X,j,ne):(de&64||de&128)&&z.process(g,f,L,F,B,G,X,j,ne,te)}Ne!=null&&B?zr(Ne,g&&g.ref,G,f||g,!f):Ne==null&&g&&g.ref!=null&&zr(g.ref,null,G,g,!0)},S=(g,f,L,F)=>{if(g==null)r(f.el=s(f.children),L,F);else{const B=f.el=g.el;f.children!==g.children&&_(B,f.children)}},T=(g,f,L,F)=>{g==null?r(f.el=c(f.children||""),L,F):f.el=g.el},h=(g,f,L,F)=>{[g.el,g.anchor]=p(g.children,f,L,F,g.el,g.anchor)},C=({el:g,anchor:f},L,F)=>{let B;for(;g&&g!==f;)B=u(g),r(g,L,F),g=B;r(f,L,F)},v=({el:g,anchor:f})=>{let L;for(;g&&g!==f;)L=u(g),a(g),g=L;a(f)},O=(g,f,L,F,B,G,X,j,ne)=>{if(f.type==="svg"?X="svg":f.type==="math"&&(X="mathml"),g==null)N(f,L,F,B,G,X,j,ne);else{const z=g.el&&g.el._isVueCE?g.el:null;try{z&&z._beginPatch(),M(g,f,B,G,X,j,ne)}finally{z&&z._endPatch()}}},N=(g,f,L,F,B,G,X,j)=>{let ne,z;const{props:Ne,shapeFlag:de,transition:_e,dirs:Oe}=g;if(ne=g.el=o(g.type,G,Ne&&Ne.is,Ne),de&8?l(ne,g.children):de&16&&y(g.children,ne,null,F,B,Ri(g,G),X,j),Oe&&Jn(g,null,F,"created"),I(ne,g,g.scopeId,X,F),Ne){for(const ze in Ne)ze!=="value"&&!Hr(ze)&&i(ne,ze,null,Ne[ze],G,F);"value"in Ne&&i(ne,"value",null,Ne.value,G),(z=Ne.onVnodeBeforeMount)&&mn(z,F,g)}Oe&&Jn(g,null,F,"beforeMount");const we=ab(B,_e);we&&_e.beforeEnter(ne),r(ne,f,L),((z=Ne&&Ne.onVnodeMounted)||we||Oe)&&Yt(()=>{try{z&&mn(z,F,g),we&&_e.enter(ne),Oe&&Jn(g,null,F,"mounted")}finally{}},B)},I=(g,f,L,F,B)=>{if(L&&m(g,L),F)for(let G=0;G{for(let z=ne;z{const j=f.el=g.el;let{patchFlag:ne,dynamicChildren:z,dirs:Ne}=f;ne|=g.patchFlag&16;const de=g.props||St,_e=f.props||St;let Oe;if(L&&er(L,!1),(Oe=_e.onVnodeBeforeUpdate)&&mn(Oe,L,f,g),Ne&&Jn(f,g,L,"beforeUpdate"),L&&er(L,!0),(de.innerHTML&&_e.innerHTML==null||de.textContent&&_e.textContent==null)&&l(j,""),z?H(g.dynamicChildren,z,j,L,F,Ri(f,B),G):X||Re(g,f,j,null,L,F,Ri(f,B),G,!1),ne>0){if(ne&16)W(j,de,_e,L,B);else if(ne&2&&de.class!==_e.class&&i(j,"class",null,_e.class,B),ne&4&&i(j,"style",de.style,_e.style,B),ne&8){const we=f.dynamicProps;for(let ze=0;ze{Oe&&mn(Oe,L,f,g),Ne&&Jn(f,g,L,"updated")},F)},H=(g,f,L,F,B,G,X)=>{for(let j=0;j{if(f!==L){if(f!==St)for(const G in f)!Hr(G)&&!(G in L)&&i(g,G,f[G],null,B,F);for(const G in L){if(Hr(G))continue;const X=L[G],j=f[G];X!==j&&G!=="value"&&i(g,G,j,X,B,F)}"value"in L&&i(g,"value",f.value,L.value,B)}},x=(g,f,L,F,B,G,X,j,ne)=>{const z=f.el=g?g.el:s(""),Ne=f.anchor=g?g.anchor:s("");let{patchFlag:de,dynamicChildren:_e,slotScopeIds:Oe}=f;Oe&&(j=j?j.concat(Oe):Oe),g==null?(r(z,L,F),r(Ne,L,F),y(f.children||[],L,Ne,B,G,X,j,ne)):de>0&&de&64&&_e&&g.dynamicChildren&&g.dynamicChildren.length===_e.length?(H(g.dynamicChildren,_e,L,B,G,X,j),(f.key!=null||B&&f===B.subTree)&&Xc(g,f,!0)):Re(g,f,L,Ne,B,G,X,j,ne)},J=(g,f,L,F,B,G,X,j,ne)=>{f.slotScopeIds=j,g==null?f.shapeFlag&512?B.ctx.activate(f,L,F,X,ne):ae(f,L,F,B,G,X,ne):be(g,f,ne)},ae=(g,f,L,F,B,G,X)=>{const j=g.component=ub(g,F,B);if(ti(g)&&(j.ctx.renderer=te),pb(j,!1,X),j.asyncDep){if(B&&B.registerDep(j,le,X),!g.el){const ne=j.subTree=Be(Ut);T(null,ne,f,L),g.placeholder=ne.el}}else le(j,g,f,L,B,G,X)},be=(g,f,L)=>{const F=f.component=g.component;if(Kf(g,f,L))if(F.asyncDep&&!F.asyncResolved){ce(F,f,L);return}else F.next=f,F.update();else f.el=g.el,F.vnode=f},le=(g,f,L,F,B,G,X)=>{const j=()=>{if(g.isMounted){let{next:de,bu:_e,u:Oe,parent:we,vnode:ze}=g;{const $=OE(g);if($){de&&(de.el=ze.el,ce(g,de,X)),$.asyncDep.then(()=>{Yt(()=>{g.isUnmounted||z()},B)});return}}let Je=de,ot;er(g,!1),de?(de.el=ze.el,ce(g,de,X)):de=ze,_e&&Ca(_e),(ot=de.props&&de.props.onVnodeBeforeUpdate)&&mn(ot,we,de,ze),er(g,!0);const je=Y_(g),U=g.subTree;g.subTree=je,E(U,je,d(U.el),D(U),g,B,G),de.el=je.el,Je===null&&Qf(g,je.el),Oe&&Yt(Oe,B),(ot=de.props&&de.props.onVnodeUpdated)&&Yt(()=>mn(ot,we,de,ze),B)}else{let de;const{el:_e,props:Oe}=f,{bm:we,m:ze,parent:Je,root:ot,type:je}=g,U=Nr(f);er(g,!1),we&&Ca(we),!U&&(de=Oe&&Oe.onVnodeBeforeMount)&&mn(de,Je,f),er(g,!0);{ot.ce&&ot.ce._hasShadowRoot()&&ot.ce._injectChildStyle(je,g.parent?g.parent.type:void 0);const $=g.subTree=Y_(g);E(null,$,L,F,g,B,G),f.el=$.el}if(ze&&Yt(ze,B),!U&&(de=Oe&&Oe.onVnodeMounted)){const $=f;Yt(()=>mn(de,Je,$),B)}(f.shapeFlag&256||Je&&Nr(Je.vnode)&&Je.vnode.shapeFlag&256)&&g.a&&Yt(g.a,B),g.isMounted=!0,f=L=F=null}};g.scope.on();const ne=g.effect=new Ig(j);g.scope.off();const z=g.update=ne.run.bind(ne),Ne=g.job=ne.runIfDirty.bind(ne);Ne.i=g,Ne.id=g.uid,ne.scheduler=()=>zc(Ne),er(g,!0),z()},ce=(g,f,L)=>{f.component=g;const F=g.vnode.props;g.vnode=f,g.next=null,Zf(g,f.props,F,L),tb(g,f.children,L),kn(),D_(g),Un()},Re=(g,f,L,F,B,G,X,j,ne=!1)=>{const z=g&&g.children,Ne=g?g.shapeFlag:0,de=f.children,{patchFlag:_e,shapeFlag:Oe}=f;if(_e>0){if(_e&128){ke(z,de,L,F,B,G,X,j,ne);return}else if(_e&256){ge(z,de,L,F,B,G,X,j,ne);return}}Oe&8?(Ne&16&&K(z,B,G),de!==z&&l(L,de)):Ne&16?Oe&16?ke(z,de,L,F,B,G,X,j,ne):K(z,B,G,!0):(Ne&8&&l(L,""),Oe&16&&y(de,L,F,B,G,X,j,ne))},ge=(g,f,L,F,B,G,X,j,ne)=>{g=g||Rr,f=f||Rr;const z=g.length,Ne=f.length,de=Math.min(z,Ne);let _e;for(_e=0;_eNe?K(g,B,G,!0,!1,de):y(f,L,F,B,G,X,j,ne,de)},ke=(g,f,L,F,B,G,X,j,ne)=>{let z=0;const Ne=f.length;let de=g.length-1,_e=Ne-1;for(;z<=de&&z<=_e;){const Oe=g[z],we=f[z]=ne?Dn(f[z]):bn(f[z]);if(or(Oe,we))E(Oe,we,L,null,B,G,X,j,ne);else break;z++}for(;z<=de&&z<=_e;){const Oe=g[de],we=f[_e]=ne?Dn(f[_e]):bn(f[_e]);if(or(Oe,we))E(Oe,we,L,null,B,G,X,j,ne);else break;de--,_e--}if(z>de){if(z<=_e){const Oe=_e+1,we=Oe_e)for(;z<=de;)We(g[z],B,G,!0),z++;else{const Oe=z,we=z,ze=new Map;for(z=we;z<=_e;z++){const Se=f[z]=ne?Dn(f[z]):bn(f[z]);Se.key!=null&&ze.set(Se.key,z)}let Je,ot=0;const je=_e-we+1;let U=!1,$=0;const se=new Array(je);for(z=0;z=je){We(Se,B,G,!0);continue}let Ce;if(Se.key!=null)Ce=ze.get(Se.key);else for(Je=we;Je<=_e;Je++)if(se[Je-we]===0&&or(Se,f[Je])){Ce=Je;break}Ce===void 0?We(Se,B,G,!0):(se[Ce-we]=z+1,Ce>=$?$=Ce:U=!0,E(Se,f[Ce],L,null,B,G,X,j,ne),ot++)}const De=U?ib(se):Rr;for(Je=De.length-1,z=je-1;z>=0;z--){const Se=we+z,Ce=f[Se],Ue=f[Se+1],Xe=Se+1{const{el:G,type:X,transition:j,children:ne,shapeFlag:z}=g;if(z&6){Ve(g.component.subTree,f,L,F);return}if(z&128){g.suspense.move(f,L,F);return}if(z&64){X.move(g,f,L,te);return}if(X===mt){r(G,f,L);for(let de=0;dej.enter(G),B);else{const{leave:de,delayLeave:_e,afterLeave:Oe}=j,we=()=>{g.ctx.isUnmounted?a(G):r(G,f,L)},ze=()=>{G._isLeaving&&G[Sn](!0),de(G,()=>{we(),Oe&&Oe()})};_e?_e(G,we,ze):ze()}else r(G,f,L)},We=(g,f,L,F=!1,B=!1)=>{const{type:G,props:X,ref:j,children:ne,dynamicChildren:z,shapeFlag:Ne,patchFlag:de,dirs:_e,cacheIndex:Oe,memo:we}=g;if(de===-2&&(B=!1),j!=null&&(kn(),zr(j,null,L,g,!0),Un()),Oe!=null&&(f.renderCache[Oe]=void 0),Ne&256){f.ctx.deactivate(g);return}const ze=Ne&1&&_e,Je=!Nr(g);let ot;if(Je&&(ot=X&&X.onVnodeBeforeUnmount)&&mn(ot,f,g),Ne&6)V(g.component,L,F);else{if(Ne&128){g.suspense.unmount(L,F);return}ze&&Jn(g,null,f,"beforeUnmount"),Ne&64?g.type.remove(g,f,L,te,F):z&&!z.hasOnce&&(G!==mt||de>0&&de&64)?K(z,f,L,!1,!0):(G===mt&&de&384||!B&&Ne&16)&&K(ne,f,L),F&&ut(g)}const je=we!=null&&Oe==null;(Je&&(ot=X&&X.onVnodeUnmounted)||ze||je)&&Yt(()=>{ot&&mn(ot,f,g),ze&&Jn(g,null,f,"unmounted"),je&&(g.el=null)},L)},ut=g=>{const{type:f,el:L,anchor:F,transition:B}=g;if(f===mt){w(L,F);return}if(f===Na){v(g);return}const G=()=>{a(L),B&&!B.persisted&&B.afterLeave&&B.afterLeave()};if(g.shapeFlag&1&&B&&!B.persisted){const{leave:X,delayLeave:j}=B,ne=()=>X(L,G);j?j(g.el,G,ne):ne()}else G()},w=(g,f)=>{let L;for(;g!==f;)L=u(g),a(g),g=L;a(f)},V=(g,f,L)=>{const{bum:F,scope:B,job:G,subTree:X,um:j,m:ne,a:z}=g;V_(ne),V_(z),F&&Ca(F),B.stop(),G&&(G.flags|=8,We(X,g,f,L)),j&&Yt(j,f),Yt(()=>{g.isUnmounted=!0},f)},K=(g,f,L,F=!1,B=!1,G=0)=>{for(let X=G;X{if(g.shapeFlag&6)return D(g.component.subTree);if(g.shapeFlag&128)return g.suspense.next();const f=u(g.anchor||g.el),L=f&&f[jg];return L?u(L):f};let k=!1;const Q=(g,f,L)=>{let F;g==null?f._vnode&&(We(f._vnode,null,null,!0),F=f._vnode.component):E(f._vnode||null,g,f,null,null,null,L),f._vnode=g,k||(k=!0,D_(F),Wg(),k=!1)},te={p:E,um:We,m:Ve,r:ut,mt:ae,mc:y,pc:Re,pbc:H,n:D,o:e};return{render:Q,hydrate:void 0,createApp:qf(Q)}}function Ri({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function er({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function ab(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Xc(e,t,n=!1){const r=e.children,a=t.children;if(Me(r)&&Me(a))for(let i=0;i>1,e[n[s]]<_?i=s+1:o=s;_0&&(t[r]=n[i-1]),n[i]=r)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function OE(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:OE(t)}function V_(e){if(e)for(let t=0;te.__isSuspense;function ob(e,t){t&&t.pendingBranch?Me(e)?t.effects.push(...e):t.effects.push(e):mf(e)}const mt=Symbol.for("v-fgt"),ii=Symbol.for("v-txt"),Ut=Symbol.for("v-cmt"),Na=Symbol.for("v-stc"),Kr=[];let Kt=null;function P(e=!1){Kr.push(Kt=e?null:[])}function sb(){Kr.pop(),Kt=Kr[Kr.length-1]||null}let ta=1;function Pa(e,t=!1){ta+=e,e<0&&Kt&&t&&(Kt.hasOnce=!0)}function AE(e){return e.dynamicChildren=ta>0?Kt||Rr:null,sb(),ta>0&&Kt&&Kt.push(e),e}function q(e,t,n,r,a,i){return AE(A(e,t,n,r,a,i,!0))}function ct(e,t,n,r,a){return AE(Be(e,t,n,r,a,!0))}function na(e){return e?e.__v_isVNode===!0:!1}function or(e,t){return e.type===t.type&&e.key===t.key}const DE=({key:e})=>e??null,Oa=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ht(e)||Ct(e)||Ye(e)?{i:wt,r:e,k:t,f:!!n}:e:null);function A(e,t=null,n=null,r=0,a=null,i=e===mt?0:1,o=!1,s=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&DE(t),ref:t&&Oa(t),scopeId:Qg,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:r,dynamicProps:a,dynamicChildren:null,appContext:null,ctx:wt};return s?(Zc(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=ht(n)?8:16),ta>0&&!o&&Kt&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Kt.push(c),c}const Be=lb;function lb(e,t=null,n=null,r=0,a=null,i=!1){if((!e||e===_E)&&(e=Ut),na(e)){const s=zn(e,t,!0);return n&&Zc(s,n),ta>0&&!i&&Kt&&(s.shapeFlag&6?Kt[Kt.indexOf(e)]=s:Kt.push(s)),s.patchFlag=-2,s}if(fb(e)&&(e=e.__vccOpts),t){t=xE(t);let{class:s,style:c}=t;s&&!ht(s)&&(t.class=Ze(s)),_t(c)&&(Za(c)&&!Me(c)&&(c=Lt({},c)),t.style=Kn(c))}const o=ht(e)?1:IE(e)?128:eE(e)?64:_t(e)?4:Ye(e)?2:0;return A(e,t,n,r,a,o,i,!0)}function xE(e){return e?Za(e)||TE(e)?Lt({},e):e:null}function zn(e,t,n=!1,r=!1){const{props:a,ref:i,patchFlag:o,children:s,transition:c}=e,_=t?ka(a||{},t):a,l={__v_isVNode:!0,__v_skip:!0,type:e.type,props:_,key:_&&DE(_),ref:t&&t.ref?n&&i?Me(i)?i.concat(Oa(t)):[i,Oa(t)]:Oa(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==mt?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&zn(e.ssContent),ssFallback:e.ssFallback&&zn(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&r&&ea(l,c.clone(l)),l}function Mt(e=" ",t=0){return Be(ii,null,e,t)}function cb(e,t){const n=Be(Na,null,e);return n.staticCount=t,n}function xe(e="",t=!1){return t?(P(),ct(Ut,null,e)):Be(Ut,null,e)}function bn(e){return e==null||typeof e=="boolean"?Be(Ut):Me(e)?Be(mt,null,e.slice()):na(e)?Dn(e):Be(ii,null,String(e))}function Dn(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:zn(e)}function Zc(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(Me(t))n=16;else if(typeof t=="object")if(r&65){const a=t.default;a&&(a._c&&(a._d=!1),Zc(e,a()),a._c&&(a._d=!0));return}else{n=32;const a=t._;!a&&!TE(t)?t._ctx=wt:a===3&&wt&&(wt.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else Ye(t)?(t={default:t,_ctx:wt},n=32):(t=String(t),r&64?(n=16,t=[Mt(t)]):n=8);e.children=t,e.shapeFlag|=n}function ka(...e){const t={};for(let n=0;nFt||wt;let Ua,vc;{const e=Qa(),t=(n,r)=>{let a;return(a=e[n])||(a=e[n]=[]),a.push(r),i=>{a.length>1?a.forEach(o=>o(i)):a[0](i)}};Ua=t("__VUE_INSTANCE_SETTERS__",n=>Ft=n),vc=t("__VUE_SSR_SETTERS__",n=>ra=n)}const _a=e=>{const t=Ft;return Ua(e),e.scope.on(),()=>{e.scope.off(),Ua(t)}},$_=()=>{Ft&&Ft.scope.off(),Ua(null)};function ME(e){return e.vnode.shapeFlag&4}let ra=!1;function pb(e,t=!1,n=!1){t&&vc(t);const{props:r,children:a}=e.vnode,i=ME(e);Xf(e,r,i,t),eb(e,a,n||t);const o=i?mb(e,t):void 0;return t&&vc(!1),o}function mb(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Pf);const{setup:r}=n;if(r){kn();const a=e.setupContext=r.length>1?Eb(e):null,i=_a(e),o=ca(r,e,0,[e.props,a]),s=bg(o);if(Un(),i(),(s||e.sp)&&!Nr(e)&&oE(e),s){if(o.then($_,$_),t)return o.then(c=>{z_(e,c)}).catch(c=>{ja(c,e,0)});e.asyncDep=o}else z_(e,o)}else LE(e)}function z_(e,t,n){Ye(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:_t(t)&&(e.setupState=Vg(t)),LE(e)}function LE(e,t,n){const r=e.type;e.render||(e.render=r.render||Rn);{const a=_a(e);kn();try{kf(e)}finally{Un(),a()}}}const gb={get(e,t){return kt(e,"get",""),e[t]}};function Eb(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,gb),slots:e.slots,emit:e.emit,expose:t}}function oi(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Vg(Ja(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Wr)return Wr[n](e)},has(t,n){return n in t||n in Wr}})):e.proxy}function Sb(e,t=!0){return Ye(e)?e.displayName||e.name:e.name||t&&e.__name}function fb(e){return Ye(e)&&"__vccOpts"in e}const Ee=(e,t)=>cf(e,t,ra);function b(e,t,n){try{Pa(-1);const r=arguments.length;return r===2?_t(t)&&!Me(t)?na(t)?Be(e,null,[t]):Be(e,t):Be(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&na(n)&&(n=[n]),Be(e,t,n))}finally{Pa(1)}}const bb="3.5.32";/**
-* @vue/runtime-dom v3.5.32
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/let Cc;const W_=typeof window<"u"&&window.trustedTypes;if(W_)try{Cc=W_.createPolicy("vue",{createHTML:e=>e})}catch{}const wE=Cc?e=>Cc.createHTML(e):e=>e,Tb="http://www.w3.org/2000/svg",hb="http://www.w3.org/1998/Math/MathML",An=typeof document<"u"?document:null,K_=An&&An.createElement("template"),Rb={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const a=t==="svg"?An.createElementNS(Tb,e):t==="mathml"?An.createElementNS(hb,e):n?An.createElement(e,{is:n}):An.createElement(e);return e==="select"&&r&&r.multiple!=null&&a.setAttribute("multiple",r.multiple),a},createText:e=>An.createTextNode(e),createComment:e=>An.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>An.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,a,i){const o=n?n.previousSibling:t.lastChild;if(a&&(a===i||a.nextSibling))for(;t.insertBefore(a.cloneNode(!0),n),!(a===i||!(a=a.nextSibling)););else{K_.innerHTML=wE(r==="svg"?``:r==="mathml"?``:e);const s=K_.content;if(r==="svg"||r==="mathml"){const c=s.firstChild;for(;c.firstChild;)s.appendChild(c.firstChild);s.removeChild(c)}t.insertBefore(s,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Hn="transition",Fr="animation",aa=Symbol("_vtc"),PE={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},vb=Lt({},tE,PE),Cb=e=>(e.displayName="Transition",e.props=vb,e),ia=Cb((e,{slots:t})=>b(Cf,Nb(e),t)),tr=(e,t=[])=>{Me(e)?e.forEach(n=>n(...t)):e&&e(...t)},Q_=e=>e?Me(e)?e.some(t=>t.length>1):e.length>1:!1;function Nb(e){const t={};for(const x in e)x in PE||(t[x]=e[x]);if(e.css===!1)return t;const{name:n="v",type:r,duration:a,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:s=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:_=o,appearToClass:l=s,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:u=`${n}-leave-active`,leaveToClass:m=`${n}-leave-to`}=e,p=Ob(a),E=p&&p[0],S=p&&p[1],{onBeforeEnter:T,onEnter:h,onEnterCancelled:C,onLeave:v,onLeaveCancelled:O,onBeforeAppear:N=T,onAppear:I=h,onAppearCancelled:y=C}=t,M=(x,J,ae,be)=>{x._enterCancelled=be,nr(x,J?l:s),nr(x,J?_:o),ae&&ae()},H=(x,J)=>{x._isLeaving=!1,nr(x,d),nr(x,m),nr(x,u),J&&J()},W=x=>(J,ae)=>{const be=x?I:h,le=()=>M(J,x,ae);tr(be,[J,le]),X_(()=>{nr(J,x?c:i),In(J,x?l:s),Q_(be)||Z_(J,r,E,le)})};return Lt(t,{onBeforeEnter(x){tr(T,[x]),In(x,i),In(x,o)},onBeforeAppear(x){tr(N,[x]),In(x,c),In(x,_)},onEnter:W(!1),onAppear:W(!0),onLeave(x,J){x._isLeaving=!0;const ae=()=>H(x,J);In(x,d),x._enterCancelled?(In(x,u),ed(x)):(ed(x),In(x,u)),X_(()=>{x._isLeaving&&(nr(x,d),In(x,m),Q_(v)||Z_(x,r,S,ae))}),tr(v,[x,ae])},onEnterCancelled(x){M(x,!1,void 0,!0),tr(C,[x])},onAppearCancelled(x){M(x,!0,void 0,!0),tr(y,[x])},onLeaveCancelled(x){H(x),tr(O,[x])}})}function Ob(e){if(e==null)return null;if(_t(e))return[vi(e.enter),vi(e.leave)];{const t=vi(e);return[t,t]}}function vi(e){return yS(e)}function In(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[aa]||(e[aa]=new Set)).add(t)}function nr(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[aa];n&&(n.delete(t),n.size||(e[aa]=void 0))}function X_(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let yb=0;function Z_(e,t,n,r){const a=e._endId=++yb,i=()=>{a===e._endId&&r()};if(n!=null)return setTimeout(i,n);const{type:o,timeout:s,propCount:c}=Ib(e,t);if(!o)return r();const _=o+"end";let l=0;const d=()=>{e.removeEventListener(_,u),i()},u=m=>{m.target===e&&++l>=c&&d()};setTimeout(()=>{l(n[p]||"").split(", "),a=r(`${Hn}Delay`),i=r(`${Hn}Duration`),o=J_(a,i),s=r(`${Fr}Delay`),c=r(`${Fr}Duration`),_=J_(s,c);let l=null,d=0,u=0;t===Hn?o>0&&(l=Hn,d=o,u=i.length):t===Fr?_>0&&(l=Fr,d=_,u=c.length):(d=Math.max(o,_),l=d>0?o>_?Hn:Fr:null,u=l?l===Hn?i.length:c.length:0);const m=l===Hn&&/\b(?:transform|all)(?:,|$)/.test(r(`${Hn}Property`).toString());return{type:l,timeout:d,propCount:u,hasTransform:m}}function J_(e,t){for(;e.lengthj_(n)+j_(e[r])))}function j_(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function ed(e){return(e?e.ownerDocument:document).body.offsetHeight}function Ab(e,t,n){const r=e[aa];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const td=Symbol("_vod"),Db=Symbol("_vsh"),xb=Symbol(""),Mb=/(?:^|;)\s*display\s*:/;function Lb(e,t,n){const r=e.style,a=ht(n);let i=!1;if(n&&!a){if(t)if(ht(t))for(const o of t.split(";")){const s=o.slice(0,o.indexOf(":")).trim();n[s]==null&&ya(r,s,"")}else for(const o in t)n[o]==null&&ya(r,o,"");for(const o in n)o==="display"&&(i=!0),ya(r,o,n[o])}else if(a){if(t!==n){const o=r[xb];o&&(n+=";"+o),r.cssText=n,i=Mb.test(n)}}else t&&e.removeAttribute("style");td in e&&(e[td]=i?r.display:"",e[Db]&&(r.display="none"))}const nd=/\s*!important$/;function ya(e,t,n){if(Me(n))n.forEach(r=>ya(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=wb(e,t);nd.test(n)?e.setProperty(Wn(r),n.replace(nd,""),"important"):e[r]=n}}const rd=["Webkit","Moz","ms"],Ci={};function wb(e,t){const n=Ci[t];if(n)return n;let r=Vt(t);if(r!=="filter"&&r in e)return Ci[t]=r;r=Ka(r);for(let a=0;aNi||(Fb.then(()=>Ni=0),Ni=Date.now());function Gb(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;_n(Yb(r,n.value),t,5,[r])};return n.value=e,n.attached=Bb(),n}function Yb(e,t){if(Me(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>a=>!a._stopped&&r&&r(a))}else return t}const cd=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,qb=(e,t,n,r,a,i)=>{const o=a==="svg";t==="class"?Ab(e,r,o):t==="style"?Lb(e,n,r):Va(t)?$a(t)||kb(e,t,n,r,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Hb(e,t,r,o))?(od(e,t,r),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&id(e,t,r,o,i,t!=="value")):e._isVueCE&&(Vb(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!ht(r)))?od(e,Vt(t),r,i,t):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),id(e,t,r,o))};function Hb(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&cd(t)&&Ye(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const a=e.tagName;if(a==="IMG"||a==="VIDEO"||a==="CANVAS"||a==="SOURCE")return!1}return cd(t)&&ht(n)?!1:t in e}function Vb(e,t){const n=e._def.props;if(!n)return!1;const r=Vt(t);return Array.isArray(n)?n.some(a=>Vt(a)===r):Object.keys(n).some(a=>Vt(a)===r)}const _d=e=>{const t=e.props["onUpdate:modelValue"]||!1;return Me(t)?n=>Ca(t,n):t};function $b(e){e.target.composing=!0}function dd(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Oi=Symbol("_assign");function ud(e,t,n){return t&&(e=e.trim()),n&&(e=Uc(e)),e}const zb={created(e,{modifiers:{lazy:t,trim:n,number:r}},a){e[Oi]=_d(a);const i=r||a.props&&a.props.type==="number";br(e,t?"change":"input",o=>{o.target.composing||e[Oi](ud(e.value,n,i))}),(n||i)&&br(e,"change",()=>{e.value=ud(e.value,n,i)}),t||(br(e,"compositionstart",$b),br(e,"compositionend",dd),br(e,"change",dd))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:a,number:i}},o){if(e[Oi]=_d(o),e.composing)return;const s=(i||e.type==="number")&&!/^0\d/.test(e.value)?Uc(e.value):e.value,c=t??"";if(s===c)return;const _=e.getRootNode();(_ instanceof Document||_ instanceof ShadowRoot)&&_.activeElement===e&&e.type!=="range"&&(r&&t===n||a&&e.value.trim()===c)||(e.value=c)}},Wb=["ctrl","shift","alt","meta"],Kb={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Wb.some(n=>e[`${n}Key`]&&!t.includes(n))},yr=(e,t)=>{if(!e)return e;const n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=((a,...i)=>{for(let o=0;o{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=(a=>{if(!("key"in a))return;const i=Wn(a.key);if(t.some(o=>o===i||Qb[o]===i))return e(a)}))},Xb=Lt({patchProp:qb},Rb);let md;function Zb(){return md||(md=nb(Xb))}const Jb=((...e)=>{const t=Zb().createApp(...e),{mount:n}=t;return t.mount=r=>{const a=eT(r);if(!a)return;const i=t._component;!Ye(i)&&!i.render&&!i.template&&(i.template=a.innerHTML),a.nodeType===1&&(a.textContent="");const o=n(a,!1,jb(a));return a instanceof Element&&(a.removeAttribute("v-cloak"),a.setAttribute("data-v-app","")),o},t});function jb(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function eT(e){return ht(e)?document.querySelector(e):e}/*!
- * pinia v3.0.4
- * (c) 2025 Eduardo San Martin Morote
- * @license MIT
- */let kE;const si=e=>kE=e,UE=Symbol();function Nc(e){return e&&typeof e=="object"&&Object.prototype.toString.call(e)==="[object Object]"&&typeof e.toJSON!="function"}var Qr;(function(e){e.direct="direct",e.patchObject="patch object",e.patchFunction="patch function"})(Qr||(Qr={}));function tT(){const e=Bc(!0),t=e.run(()=>ee({}));let n=[],r=[];const a=Ja({install(i){si(a),a._a=i,i.provide(UE,a),i.config.globalProperties.$pinia=a,r.forEach(o=>n.push(o)),r=[]},use(i){return this._a?n.push(i):r.push(i),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return a}const FE=()=>{};function gd(e,t,n,r=FE){e.add(t);const a=()=>{e.delete(t)&&r()};return!n&&yg()&&kS(a),a}function Sr(e,...t){e.forEach(n=>{n(...t)})}const nT=e=>e(),Ed=Symbol(),yi=Symbol();function Oc(e,t){e instanceof Map&&t instanceof Map?t.forEach((n,r)=>e.set(r,n)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const r=t[n],a=e[n];Nc(a)&&Nc(r)&&e.hasOwnProperty(n)&&!Ct(r)&&!Pn(r)?e[n]=Oc(a,r):e[n]=r}return e}const rT=Symbol();function aT(e){return!Nc(e)||!Object.prototype.hasOwnProperty.call(e,rT)}const{assign:Vn}=Object;function iT(e){return!!(Ct(e)&&e.effect)}function oT(e,t,n,r){const{state:a,actions:i,getters:o}=t,s=n.state.value[e];let c;function _(){s||(n.state.value[e]=a?a():{});const l=af(n.state.value[e]);return Vn(l,i,Object.keys(o||{}).reduce((d,u)=>(d[u]=Ja(Ee(()=>{si(n);const m=n._s.get(e);return o[u].call(m,m)})),d),{}))}return c=BE(e,_,t,n,r,!0),c}function BE(e,t,n={},r,a,i){let o;const s=Vn({actions:{}},n),c={deep:!0};let _,l,d=new Set,u=new Set,m;const p=r.state.value[e];!i&&!p&&(r.state.value[e]={});let E;function S(y){let M;_=l=!1,typeof y=="function"?(y(r.state.value[e]),M={type:Qr.patchFunction,storeId:e,events:m}):(Oc(r.state.value[e],y),M={type:Qr.patchObject,payload:y,storeId:e,events:m});const H=E=Symbol();xt().then(()=>{E===H&&(_=!0)}),l=!0,Sr(d,M,r.state.value[e])}const T=i?function(){const{state:M}=n,H=M?M():{};this.$patch(W=>{Vn(W,H)})}:FE;function h(){o.stop(),d.clear(),u.clear(),r._s.delete(e)}const C=(y,M="")=>{if(Ed in y)return y[yi]=M,y;const H=function(){si(r);const W=Array.from(arguments),x=new Set,J=new Set;function ae(ce){x.add(ce)}function be(ce){J.add(ce)}Sr(u,{args:W,name:H[yi],store:O,after:ae,onError:be});let le;try{le=y.apply(this&&this.$id===e?this:O,W)}catch(ce){throw Sr(J,ce),ce}return le instanceof Promise?le.then(ce=>(Sr(x,ce),ce)).catch(ce=>(Sr(J,ce),Promise.reject(ce))):(Sr(x,le),le)};return H[Ed]=!0,H[yi]=M,H},v={_p:r,$id:e,$onAction:gd.bind(null,u),$patch:S,$reset:T,$subscribe(y,M={}){const H=gd(d,y,M.detached,()=>W()),W=o.run(()=>qe(()=>r.state.value[e],x=>{(M.flush==="sync"?l:_)&&y({storeId:e,type:Qr.direct,events:m},x)},Vn({},c,M)));return H},$dispose:h},O=la(v);r._s.set(e,O);const I=(r._a&&r._a.runWithContext||nT)(()=>r._e.run(()=>(o=Bc()).run(()=>t({action:C}))));for(const y in I){const M=I[y];if(Ct(M)&&!iT(M)||Pn(M))i||(p&&aT(M)&&(Ct(M)?M.value=p[y]:Oc(M,p[y])),r.state.value[e][y]=M);else if(typeof M=="function"){const H=C(M,y);I[y]=H,s.actions[y]=M}}return Vn(O,I),Vn(et(O),I),Object.defineProperty(O,"$state",{get:()=>r.state.value[e],set:y=>{S(M=>{Vn(M,y)})}}),r._p.forEach(y=>{Vn(O,o.run(()=>y({store:O,app:r._a,pinia:r,options:s})))}),p&&i&&n.hydrate&&n.hydrate(O.$state,p),_=!0,l=!0,O}/*! #__NO_SIDE_EFFECTS__ */function li(e,t,n){let r;const a=typeof t=="function";r=a?n:t;function i(o,s){const c=gf();return o=o||(c?cr(UE,null):null),o&&si(o),o=kE,o._s.has(e)||(a?BE(e,t,r,o):oT(e,r,o)),o._s.get(e)}return i.$id=e,i}const sT="modulepreload",lT=function(e){return"/"+e},Sd={},cT=function(t,n,r){let a=Promise.resolve();if(n&&n.length>0){let o=function(_){return Promise.all(_.map(l=>Promise.resolve(l).then(d=>({status:"fulfilled",value:d}),d=>({status:"rejected",reason:d}))))};document.getElementsByTagName("link");const s=document.querySelector("meta[property=csp-nonce]"),c=(s==null?void 0:s.nonce)||(s==null?void 0:s.getAttribute("nonce"));a=o(n.map(_=>{if(_=lT(_),_ in Sd)return;Sd[_]=!0;const l=_.endsWith(".css"),d=l?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${_}"]${d}`))return;const u=document.createElement("link");if(u.rel=l?"stylesheet":sT,l||(u.as="script"),u.crossOrigin="",u.href=_,c&&u.setAttribute("nonce",c),document.head.appendChild(u),l)return new Promise((m,p)=>{u.addEventListener("load",m),u.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${_}`)))})}))}function i(o){const s=new Event("vite:preloadError",{cancelable:!0});if(s.payload=o,window.dispatchEvent(s),!s.defaultPrevented)throw o}return a.then(o=>{for(const s of o||[])s.status==="rejected"&&i(s.reason);return t().catch(i)})},GE="";window.addEventListener("unhandledrejection",e=>{console.error("[API] Unhandled rejection:",e.reason)});async function Jt(e,t,n){const r={method:e,headers:{},credentials:"include"};n!==void 0&&(r.headers["Content-Type"]="application/json",r.body=JSON.stringify(n));const a=await fetch(`${GE}${t}`,r);if(a.status===401){try{const{useAuthStore:o}=await cT(async()=>{const{useAuthStore:c}=await Promise.resolve().then(()=>vT);return{useAuthStore:c}},void 0),s=o();s.user=null}catch{}const i=await a.text().catch(()=>"");throw new Error(`${e} ${t} → 401: ${i}`)}if(!a.ok){const i=await a.text().catch(()=>"");throw new Error(`${e} ${t} → ${a.status}: ${i}`)}return a.status===204?null:a.json()}function _T(){return Jt("GET","/auth/me")}function dT(){return Jt("POST","/auth/logout")}function uT(){return Jt("GET","/agents/profiles")}function fd({limit:e=30,offset:t=0,profileId:n=null}={}){const r=new URLSearchParams({limit:String(e),offset:String(t)});return n&&r.set("profile_id",n),Jt("GET",`/sessions?${r.toString()}`)}function bd(e){return Jt("GET",`/sessions/${e}`)}function pT(e){return Jt("POST","/sessions",{profile_id:e})}function mT(e){return Jt("DELETE",`/sessions/${e}`)}function gT(e,t){return Jt("PATCH",`/sessions/${e}/pin`,{pinned:t})}function ET(e){return Jt("POST",`/sessions/${e}/stop`)}function ST(e){return Jt("POST",`/sessions/${e}/generate-name`)}function fT(e){return Jt("GET",`/sessions/${e}/content`)}function bT(e){return Jt("GET",`/eval/feedback/${e}`)}function TT(e,t,n){return Jt("POST","/eval/feedback",{session_id:e,message_index:t,rating:n})}async function hT(e,t){const n=new FormData;n.append("file",t);const r=await fetch(`${GE}/sessions/${e}/files`,{method:"POST",credentials:"include",body:n});if(!r.ok){const a=await r.text().catch(()=>"");throw new Error(`Upload failed: ${r.status}: ${a}`)}return r.json()}const pr=li("sessions",()=>{const t=ee([]),n=ee(!1),r=ee(!1),a=ee(!0),i=ee(0),o=ee(null);async function s(p=null){o.value=p,n.value=!0;try{const E=await fd({limit:30,offset:0,profileId:p}),S=Array.isArray(E)?E:E.items;t.value=S,a.value=Array.isArray(E)?!1:E.has_more,i.value=Array.isArray(E)?S.length:E.next_offset}finally{n.value=!1}}async function c(){if(!(n.value||r.value||!a.value)){r.value=!0;try{const p=await fd({limit:30,offset:i.value,profileId:o.value}),E=Array.isArray(p)?p:p.items,S=new Set(t.value.map(T=>T.session_id));t.value=[...t.value,...E.filter(T=>!S.has(T.session_id))],a.value=Array.isArray(p)?!1:p.has_more,i.value=Array.isArray(p)?t.value.length:p.next_offset}finally{r.value=!1}}}async function _(p){const E=await pT(p);return t.value.unshift({session_id:E.session_id,profile_id:E.profile_id,created_at:E.created_at,last_active:E.created_at,message_count:0,preview:"",pinned:!1}),i.value+=1,E}async function l(p){await mT(p),t.value=t.value.filter(E=>E.session_id!==p),i.value=Math.max(0,i.value-1)}async function d(p,E){await gT(p,E);const S=t.value.map(T=>T.session_id===p?{...T,pinned:E}:T);S.sort((T,h)=>(h.pinned?1:0)-(T.pinned?1:0)),t.value=S}function u(p,E){const S=t.value.find(T=>T.session_id===p);S&&(S.preview=E)}function m(p,E){const S=t.value.find(T=>T.session_id===p);S&&(S.name=E)}return{sessions:t,loading:n,loadingMore:r,hasMore:a,currentProfileId:o,fetchSessions:s,fetchMoreSessions:c,createSession:_,deleteSession:l,pinSession:d,updatePreview:u,updateName:m}}),da=li("profiles",()=>{const e=ee([]),t=ee(null),n=ee(!1);async function r(){n.value=!0;try{e.value=await uT(),e.value.length&&!t.value&&(t.value=e.value[0].id)}finally{n.value=!1}}function a(i){return e.value.find(o=>o.id===i)??null}return{profiles:e,selectedProfileId:t,loading:n,fetchProfiles:r,getProfile:a}});let Td=null;async function RT(e){try{const t=pr(),n=t.sessions.find(a=>a.session_id===e);if(n!=null&&n.name)return;const{name:r}=await ST(e);r&&t.updateName(e,r)}catch{}}const Wt=li("chat",()=>{const e=ee(null),t=ee(null),n=ee([]),r=ee(!1),a=ee([]),i=ee([]),o=ee([]),s=ee(0),c=ee(0),_=ee(!1),l=hr(null),d=ee(!1);async function u(w){if(e.value!==w){Td=w,_.value=!0,n.value=[],o.value=[],r.value=!1,l.value=null,s.value=0,c.value=0;try{const V=await bd(w);if(Td!==w)return;t.value=V.profile_id??null,n.value=ut(V.messages??[]),await E(w),await S(w),V.context_token_count&&(s.value=V.context_token_count),V.max_context_tokens&&(c.value=V.max_context_tokens),e.value=w,location.hash=w}catch(V){console.error("[chat] loadSession failed",V)}finally{_.value=!1}}}function m(){e.value=null,t.value=null,n.value=[],o.value=[],r.value=!1,l.value=null,s.value=0,c.value=0,location.hash=""}async function p(w){if(w)try{const V=await bd(w);t.value=V.profile_id??null,n.value=ut(V.messages??[]),await E(w),await S(w),V.context_token_count&&(s.value=V.context_token_count),V.max_context_tokens&&(c.value=V.max_context_tokens),l.value=null,r.value=!1}catch{}}async function E(w){var V,K;try{const{feedback:D=[]}=await bT(w);if(!D.length)return;const k=new Map(D.map(Q=>[Q.message_index,Q.rating]));for(const Q of n.value){if(Q.role!=="assistant")continue;const te=(K=(V=Q.id)==null?void 0:V.startsWith)!=null&&K.call(V,"h_")?Number(Q.id.slice(2)):NaN;Number.isInteger(te)&&k.has(te)&&(Q.rating=k.get(te))}}catch{}}async function S(w=e.value){if(!w){o.value=[];return}try{const{content:V=[]}=await fT(w);o.value=V}catch{o.value=[]}}function T(w){if(!(w!=null&&w.filename))return;const V=w.id||w.filename,K=o.value.findIndex(k=>(k.id||k.filename)===V),D={...w};K===-1?o.value.unshift(D):o.value.splice(K,1,{...o.value[K],...D})}async function h(w,V){var Q,te;if(!e.value||!w)return;const K=(te=(Q=w.id)==null?void 0:Q.startsWith)!=null&&te.call(Q,"h_")?Number(w.id.slice(2)):NaN;if(!Number.isInteger(K))return;const D=w.rating===V?0:V,k=w.rating??0;w.rating=D;try{await TT(e.value,K,D)}catch(Te){throw w.rating=k,Te}}function C(w){e.value&&(w?localStorage.setItem(`draft:${e.value}`,w):localStorage.removeItem(`draft:${e.value}`))}function v(w){return localStorage.getItem(`draft:${w}`)??""}function O(){if(l.value){const V=n.value.indexOf(l.value);V!==-1&&n.value.splice(V,1),l.value=null}r.value=!0;const w={id:`stream_${Date.now()}`,role:"assistant",type:"stream",thinking:null,tools:[],text:"",done:!1,time:new Date().toISOString(),animate:!d.value,statusLabel:null};n.value.push(w),l.value=n.value[n.value.length-1]}function N(){d.value=!0}function I(){d.value=!1,l.value&&(l.value.animate=!0)}function y(w){const V=l.value;V&&(V.thinking||(V.thinking={text:"",done:!1}),V.thinking.text+=w)}function M(){const w=l.value;w!=null&&w.thinking&&(w.thinking.done=!0)}function H(w){for(let V=w.tools.length-1;V>=0;V--){const K=w.tools[V];if(K.kind==="tool"&&K.name==="spawn_agent")return K}}function W(w){const V=l.value;if(!V)return;const K={kind:"turn_thinking",isSubagent:w.is_subagent??!1,thinking:{text:w.thinking??"",done:!0}};if(w.is_subagent){const D=H(V);if(D){D.steps.push(K);return}}V.tools.push(K)}function x(w){const V=l.value;if(V){if(w.is_subagent){const K=H(V);K&&(K.planningLabel=w.label??"");return}V.statusLabel=w.label??""}}function J(w){const V=l.value;if(V){if(w.is_subagent){const K=H(V);K&&(K.planningLabel=null,K.steps.push({kind:"plan",text:w.plan??""}));return}V.statusLabel=null,V.tools.push({kind:"plan",text:w.plan??""})}}function ae(w){const V=l.value;if(!V)return;const K={kind:"tool",id:`tool_${Date.now()}`,name:w.tool,args:w.args,result:null,success:null,pending:!0,startedAt:Date.now(),isSubagent:w.is_subagent??!1,steps:[]};if(w.is_subagent){const D=H(V);if(D){D.steps.push(K);return}}V.tools.push(K)}function be(w){var D;const V=l.value;if(!V)return;if(w.is_subagent){const k=H(V);if(k){let Q=null;for(let te=k.steps.length-1;te>=0;te--){const Te=k.steps[te];if(Te.kind==="tool"&&Te.name===w.tool&&Te.pending){Q=Te;break}}if(Q){Q.result=w.result,Q.success=w.success!==!1,Q.pending=!1;return}}}let K=null;for(let k=V.tools.length-1;k>=0;k--){const Q=V.tools[k];if(Q.kind==="tool"&&Q.name===w.tool&&Q.pending){K=Q;break}}if(K&&(K.result=w.result,K.success=w.success!==!1,K.pending=!1,w.metadata&&(K.metadata=w.metadata),w.tool==="content_publish"&&K.success&&w.metadata&&T(w.metadata),w.tool==="filesystem"&&K.success&&e.value)){const k=typeof K.args=="object"?(D=K.args)==null?void 0:D.action:null;["write","edit"].includes(k)&&S(e.value)}}function le(w){const V=l.value;V&&(V.statusLabel&&(V.statusLabel=null),V.text+=w)}function ce(w){const V=l.value;if(V){V.done=!0,V.elapsed_seconds=(w==null?void 0:w.elapsed_seconds)??null,V.tool_call_count=(w==null?void 0:w.tool_call_count)??null,V.token_count=(w==null?void 0:w.token_count)??null;const K=n.value.filter(D=>D.role==="assistant").length-1;V.id=`h_${K}`,l.value=null,!V.thinking&&!V.tools.length&&!V.text&&(n.value=n.value.filter(D=>D!==V))}r.value=!1,(w==null?void 0:w.context_tokens)!=null&&(s.value=w.context_tokens),(w==null?void 0:w.max_context_tokens)!=null&&(c.value=w.max_context_tokens),e.value&&(V!=null&&V.text)&&pr().updatePreview(e.value,V.text.slice(0,80)),e.value&&RT(e.value)}function Re(){const w=l.value;if(w){w.done=!0;const V=n.value.filter(K=>K.role==="assistant").length-1;w.id=`h_${V}`,l.value=null,!w.thinking&&!w.tools.length&&!w.text&&(n.value=n.value.filter(K=>K!==w))}r.value=!1}function ge(w){t.value=w.profile_id}function ke(w){(w==null?void 0:w.context_tokens)!=null&&(s.value=w.context_tokens),(w==null?void 0:w.max_context_tokens)!=null&&(c.value=w.max_context_tokens),n.value.push({id:`compress_${Date.now()}`,role:"system",type:"compression_notice",before:w.messages_before,after:w.messages_after,summary:w.summary??""})}function Ve(w){r.value=!1,l.value=null,n.value.push({id:`err_${Date.now()}`,role:"system",type:"error",text:w.message??"An error occurred"})}function We(w,V,K){n.value.push({id:`user_${Date.now()}`,role:"user",text:w,images:[...V],files:[...K],time:new Date().toISOString(),animate:!0})}function ut(w){var k,Q;const V=[];let K=0,D=0;for(;Ktypeof g=="string"&&g.startsWith("data:")?g:`data:image/jpeg;base64,${String(g??"")}`);V.push({id:`h_${K}`,role:"user",text:te.content??"",images:Te,files:te.files??[],time:te.created_at??null}),K++;continue}if(te.role==="assistant"){const Te=K,g=[];let f=null,L="",F=null;for(;K=w.length||w[K].role!=="assistant")break}}if(f||g.length||L){const B=`h_${D++}`;let G=null,X=null,j=null;for(let ne=Te;ne{const e=ee(null),t=ee(!1),n=ee(!1),r=Ee(()=>e.value!==null),a=Ee(()=>{var l;return((l=e.value)==null?void 0:l.role)==="admin"});function i(l){return e.value?e.value.role==="admin"?!0:(e.value.permissions||[]).includes(l):!1}async function o(){var l;console.log("[auth] fetchMe start"),t.value=!0;try{e.value=await _T(),console.log("[auth] fetchMe success",e.value)}catch(d){throw console.log("[auth] fetchMe error",d.message),(l=d.message)!=null&&l.includes("401")&&(e.value=null),d}finally{t.value=!1,console.log("[auth] fetchMe loading=false")}}async function s(){console.log("[auth] fetchStatus start");try{const l=await fetch("/auth/status");if(console.log("[auth] fetchStatus response",l.status,l.ok),l.ok){const d=await l.json();console.log("[auth] fetchStatus data",d),n.value=!!d.configured,console.log("[auth] fetchStatus authConfigured set to",n.value)}else console.log("[auth] fetchStatus not ok"),n.value=!1}catch(l){console.log("[auth] fetchStatus error",l),n.value=!1}}function c(){const l=navigator.userAgent.includes("NaviAndroid"),d=new URLSearchParams;l&&d.set("platform","android");const u=d.toString();window.location.href="/auth/login"+(u?"?"+u:"")}async function _(){try{await dT()}catch{}e.value=null,window.location.reload()}return{user:e,loading:t,authConfigured:n,isAuthenticated:r,isAdmin:a,hasPermission:i,fetchMe:o,fetchStatus:s,login:c,logout:_}}),vT=Object.freeze(Object.defineProperty({__proto__:null,useAuthStore:jc},Symbol.toStringTag,{value:"Module"})),e_="/images/logo.svg";function CT(e){return{all:e=e||new Map,on:function(t,n){var r=e.get(t);r&&r.push(n)||e.set(t,[n])},off:function(t,n){var r=e.get(t);r&&r.splice(r.indexOf(n)>>>0,1)},emit:function(t,n){(e.get(t)||[]).slice().map(function(r){r(n)}),(e.get("*")||[]).slice().map(function(r){r(t,n)})}}}function t_(e,t,n){if(!n)return t;const r=e==null?void 0:e[n];if(r==null)throw new Error(`Key is ${r} on item (keyField is '${n}')`);return r}function sr(e,t){return e.map((n,r)=>t_(n,r,t))}function NT(e,t,n){const r=[],a=[];for(let i=0;i0?c:null)}return{keys:r,sizes:a}}function OT(e,t,n){if(!e||e.keys.length!==t.length||e.sizes.length!==t.length)return!1;for(let r=0;r0&&(r[e.keys[a]]=i)}return r}function YE(e,t){if(!e.length||t.length<=e.length)return 0;const n=e[0],r=t.indexOf(n);if(r<=0||r+e.lengtht.length-r)return 0;for(let a=0;a=n&&c<=s?null:e{}:n.onVscrollUpdate(S),d=Ee(()=>{const x=pe(e);if(n.vscrollData.simpleArray){if(x.index==null)throw new Error("index is required when using simple-array mode with dynamic item measurement");return x.index}if(n.vscrollData.keyField in x.item)return x.item[n.vscrollData.keyField];throw new Error(`keyField '${n.vscrollData.keyField}' not found in your item. You should set a valid keyField prop on your Scroller`)}),u=Ee(()=>n.vscrollData.sizes[d.value]||0),m=Ee(()=>pe(e).active&&n.vscrollData.active);function p(){m.value?i!==d.value&&(i=d.value,a=null,o=null,v(d.value)):a=d.value}function E(){pe(e).watchData&&!n.resizeObserver?c=qe(()=>pe(e).item,()=>{T()},{deep:!0}):c&&(c(),c=null)}function S({force:x}){!m.value&&x&&(o=d.value),(a===d.value||x||!u.value)&&p()}function T(){p()}function h(x){n.undefinedMap[x]&&n.undefinedSizeCount.value--,n.undefinedMap[x]=void 0}function C(x,J){if(n.vscrollData.sizes[x]){h(x);return}if(J){n.undefinedMap[x]||n.undefinedSizeCount.value++,n.undefinedMap[x]=!0;return}n.undefinedMap[x]&&(n.undefinedSizeCount.value--,n.undefinedMap[x]=!1)}function v(x){xt(()=>{if(d.value===x){const J=pe(t);if(!J)return;const ae=J.offsetWidth,be=J.offsetHeight;O(ae,be)}i=null})}function O(x,J){const ae=~~(n.direction.value==="vertical"?J:x);ae&&u.value!==ae&&N(ae)}function N(x){var J,ae;h(d.value),n.vscrollData.sizes[d.value]=x,pe(e).emitResize&&((ae=(J=pe(r))==null?void 0:J.onResize)==null||ae.call(J,d.value))}function I(){if(!n.resizeObserver||s)return;const x=pe(t);x&&(n.resizeObserver.observe(x),x.$_vs_id=d.value,x.$_vs_onResize=M,s=!0)}function y(){if(!n.resizeObserver||!s)return;const x=pe(t);x&&(n.resizeObserver.unobserve(x),x.$_vs_onResize=void 0,s=!1)}function M(x,J,ae){d.value===x&&O(J,ae)}_.push(qe(()=>pe(e).watchData,()=>{E()})),n.resizeObserver||_.push(qe(()=>pe(e).sizeDependencies,()=>{T()},{deep:!0})),_.push(qe(d,(x,J)=>{const ae=pe(t);ae&&(ae.$_vs_id=x),h(J),C(x,m.value);const be=n.vscrollData.sizes[x];if(!be){a=x,T();return}h(x),s&&(n.vscrollData.sizes[x]=be)})),_.push(qe(m,x=>{C(d.value,x),n.resizeObserver?x?I():y():x&&o===d.value&&p()})),E();function H(){m.value&&(p(),I())}function W(){l(),y(),h(d.value);const x=pe(t);x&&(x.$_vs_id=void 0,x.$_vs_onResize=void 0),c&&(c(),c=null);for(const J of _)J();_.length=0}return{id:d,size:u,finalActive:m,updateSize:p,mount:H,unmount:W}}const yT={itemsLimit:1e3};function HE(e){return typeof window<"u"&&e===window}const IT=(()=>{if(typeof document>"u")return"negative";const e=document.createElement("div"),t=document.createElement("div");e.style.width="4px",e.style.height="1px",e.style.overflow="auto",e.style.direction="rtl",t.style.width="8px",t.style.height="1px",e.appendChild(t),document.body.appendChild(e),e.scrollLeft=-1;const n=e.scrollLeft<0;return document.body.removeChild(e),n?"negative":"default"})();function Tr(e,t,n){return t!=="horizontal"||!n||HE(n)||getComputedStyle(n).direction!=="rtl"?e:IT==="negative"?-e:e}function AT(e,t,n){return Tr(e,t,n)}function Ii(e,t,n,r){const a=AT(n,t,e),i=!!(r!=null&&r.smooth);if(HE(e)){t==="vertical"?e.scrollTo({top:a,behavior:i?"smooth":"auto"}):e.scrollTo({left:a,behavior:i?"smooth":"auto"});return}if(typeof e.scrollTo=="function"){e.scrollTo(t==="vertical"?{top:a,behavior:i?"smooth":"auto"}:{left:a,behavior:i?"smooth":"auto"});return}t==="vertical"?e.scrollTop=a:e.scrollLeft=a}function DT(e,t,n){return n?t==="vertical"?window.innerHeight:window.innerWidth:t==="vertical"?e.clientHeight:e.clientWidth}const xT=/auto|scroll/;function VE(e,t){return e.parentNode===null?t:VE(e.parentNode,[...t,e])}function Ai(e,t){return getComputedStyle(e,null).getPropertyValue(t)}function MT(e){return Ai(e,"overflow")+Ai(e,"overflow-y")+Ai(e,"overflow-x")}function LT(e){return xT.test(MT(e))}function Ta(e){if(!(e instanceof HTMLElement||e instanceof SVGElement))return;const t=VE(e.parentNode,[]);for(let n=0;n{const U=pe(e);return U.items.length>0&&typeof U.items[0]!="object"}),J=Ee(()=>{const U=pe(e);if(U.itemSize===null){const $={[-1]:{accumulator:0}},se=U.items,De=U.sizeField??"size",Se=U.minItemSize,Ce=W.value;let Ue=1e4,Xe=0,It;for(let Fe=0,Rt=se.length;Fe