diff --git a/.claude/.gitignore b/.claude/.gitignore new file mode 100644 index 0000000..cbea652 --- /dev/null +++ b/.claude/.gitignore @@ -0,0 +1,2 @@ +# MEOW-generated hooks - do not commit +settings.json diff --git a/.gitignore b/.gitignore index 546ab3f..d4710b6 100644 --- a/.gitignore +++ b/.gitignore @@ -57,6 +57,8 @@ logs/ .coverage htmlcov/ tests/output/ +playwright-report/ +test-results/ # Frontend (Node.js/Vue) frontend/node_modules/ @@ -75,3 +77,4 @@ web/.meow/ .browserflow/ node_modules/ packages/ +legacy/ diff --git a/README.md b/README.md index 570cca4..9d23c8c 100644 --- a/README.md +++ b/README.md @@ -54,6 +54,15 @@ New to ComfyGit? The setup wizard guides you through creating your first workspa Screenshot 2025-12-08 185458 +### Keyboard Shortcuts + +| Shortcut | Action | +|----------|--------| +| `Alt+Shift+L` | Open ComfyGit Panel | +| `Alt+Shift+K` | Quick Commit | + +Customize these in ComfyUI's **Settings → Keyboard Shortcuts**. + --- ## Getting Started diff --git a/docs/huggingface-hub-guide.md b/docs/huggingface-hub-guide.md new file mode 100644 index 0000000..749c63f --- /dev/null +++ b/docs/huggingface-hub-guide.md @@ -0,0 +1,360 @@ +# HuggingFace Hub Python Library - Quick Reference + +Concise guide for finding, downloading, and authenticating with HuggingFace Hub. + +## Installation + +```bash +pip install huggingface_hub +# or +uv add huggingface_hub +``` + +## Authentication + +### Methods (choose one) + +```python +# 1. Environment variable (recommended for scripts) +# Set HF_TOKEN=hf_xxx in environment + +# 2. Login once (persists token to ~/.cache/huggingface/token) +from huggingface_hub import login +login(token="hf_xxx") # or login() for interactive prompt + +# 3. Pass token directly to functions +hf_hub_download(..., token="hf_xxx") + +# 4. HfApi client with token +from huggingface_hub import HfApi +api = HfApi(token="hf_xxx") +``` + +### Token precedence +1. Explicit `token=` parameter +2. `HF_TOKEN` environment variable +3. Stored token at `~/.cache/huggingface/token` + +### Other auth functions +```python +from huggingface_hub import logout, auth_switch, auth_list +logout() # Remove stored token +auth_list() # List stored tokens +auth_switch("token_name") # Switch between tokens +``` + +## Finding Models + +### List models with filters + +```python +from huggingface_hub import list_models, HfApi + +# Basic listing +models = list_models() + +# With filters +models = list_models( + filter="text-generation", # Task/tag filter + author="meta-llama", # Filter by author + search="llama", # Search in name + library_name="transformers", # Filter by library + pipeline_tag="text-generation", # Filter by pipeline + sort="downloads", # Sort: downloads, likes, trending_score, created_at + limit=10, # Max results + token="hf_xxx", # For private models +) + +# Iterate results +for model in models: + print(f"{model.id}: {model.downloads} downloads") +``` + +### Get model info + +```python +from huggingface_hub import model_info + +info = model_info("meta-llama/Llama-2-7b", token="hf_xxx") +print(info.id, info.sha, info.downloads, info.pipeline_tag) +print(info.siblings) # List of files in repo +``` + +### Check if model/file exists + +```python +from huggingface_hub import repo_exists, file_exists + +repo_exists("meta-llama/Llama-2-7b") # True/False +file_exists("meta-llama/Llama-2-7b", "config.json") # True/False +``` + +### List files in repo + +```python +from huggingface_hub import list_repo_files + +files = list_repo_files("meta-llama/Llama-2-7b", token="hf_xxx") +``` + +## Downloading + +### Download single file + +```python +from huggingface_hub import hf_hub_download + +# To cache (default: ~/.cache/huggingface/hub) +path = hf_hub_download( + repo_id="meta-llama/Llama-2-7b", + filename="config.json", + token="hf_xxx", +) + +# To specific folder (replicates repo structure) +path = hf_hub_download( + repo_id="meta-llama/Llama-2-7b", + filename="config.json", + local_dir="/path/to/models/llama2", # Key param! + token="hf_xxx", +) + +# File in subfolder +path = hf_hub_download( + repo_id="stabilityai/stable-diffusion-xl-base-1.0", + filename="model_index.json", + subfolder="scheduler", + local_dir="/models/sdxl", +) + +# Specific revision (branch, tag, or commit hash) +path = hf_hub_download( + repo_id="meta-llama/Llama-2-7b", + filename="config.json", + revision="main", # or "v1.0" or commit hash +) + +# Force re-download +path = hf_hub_download(..., force_download=True) + +# Use only cached files (offline mode) +path = hf_hub_download(..., local_files_only=True) +``` + +### Download entire repo (snapshot) + +```python +from huggingface_hub import snapshot_download + +# To cache +path = snapshot_download( + repo_id="meta-llama/Llama-2-7b", + token="hf_xxx", +) + +# To specific folder +path = snapshot_download( + repo_id="meta-llama/Llama-2-7b", + local_dir="/path/to/models/llama2", # Key param! + token="hf_xxx", +) + +# Filter files with patterns (glob syntax) +path = snapshot_download( + repo_id="meta-llama/Llama-2-7b", + allow_patterns=["*.safetensors", "*.json"], # Only these + ignore_patterns=["*.bin", "*.h5"], # Skip these + local_dir="/models/llama2", +) + +# Download specific revision +path = snapshot_download( + repo_id="meta-llama/Llama-2-7b", + revision="main", + local_dir="/models/llama2", +) + +# Parallel downloads (default: 8 workers) +path = snapshot_download(..., max_workers=16) +``` + +### Dry run (check what would download) + +```python +# Single file +info = hf_hub_download( + repo_id="meta-llama/Llama-2-7b", + filename="config.json", + dry_run=True, +) +print(info.file_size, info.is_cached, info.will_download) + +# Full repo +infos = snapshot_download( + repo_id="meta-llama/Llama-2-7b", + dry_run=True, +) +for info in infos: + print(f"{info.filename}: {info.file_size} bytes, cached={info.is_cached}") +``` + +## Download Locations + +### Key parameters + +| Parameter | Behavior | +|-----------|----------| +| `local_dir` | Download to this folder, replicating repo structure. Creates `.cache/huggingface/` inside for metadata. | +| `cache_dir` | Use this as cache location instead of default. Files stored with content-addressed naming. | +| (neither) | Uses default cache: `~/.cache/huggingface/hub` | + +### Environment variables + +```bash +HF_HOME=~/.cache/huggingface # Base dir for all HF data +HF_HUB_CACHE=$HF_HOME/hub # Where repos are cached +HF_TOKEN=hf_xxx # Auth token +HF_HUB_OFFLINE=1 # Force offline mode +HF_HUB_DISABLE_PROGRESS_BARS=1 # No progress bars +``` + +## Repo Types + +For datasets or spaces, add `repo_type`: + +```python +# Download dataset +snapshot_download( + repo_id="squad", + repo_type="dataset", + local_dir="/data/squad", +) + +# Download space +snapshot_download( + repo_id="gradio/hello_world", + repo_type="space", + local_dir="/spaces/hello", +) + +# List datasets +list_datasets(filter="text-classification") + +# Dataset info +dataset_info("squad") +``` + +## HfApi Client + +For multiple operations, use the client: + +```python +from huggingface_hub import HfApi + +api = HfApi(token="hf_xxx") + +# All methods available +api.list_models(author="meta-llama") +api.model_info("meta-llama/Llama-2-7b") +api.hf_hub_download(...) +api.snapshot_download(...) +api.list_repo_files(...) +api.repo_exists(...) +api.file_exists(...) +api.whoami() # Get current user info +``` + +## Common Patterns + +### Download model to specific folder + +```python +from huggingface_hub import snapshot_download +import os + +def download_model(repo_id: str, dest_dir: str, token: str = None): + """Download a model to a specific directory.""" + return snapshot_download( + repo_id=repo_id, + local_dir=dest_dir, + token=token or os.getenv("HF_TOKEN"), + allow_patterns=["*.safetensors", "*.json", "*.txt"], + ignore_patterns=["*.bin", "*.h5", "*.ckpt"], + ) + +# Usage +path = download_model("meta-llama/Llama-2-7b", "/models/llama2") +``` + +### Check size before downloading + +```python +from huggingface_hub import snapshot_download + +infos = snapshot_download( + repo_id="meta-llama/Llama-2-7b", + dry_run=True, + allow_patterns=["*.safetensors"], +) +total_size = sum(f.file_size for f in infos if f.will_download) +print(f"Will download: {total_size / 1e9:.2f} GB") +``` + +### Download with progress callback + +```python +from huggingface_hub import snapshot_download +from tqdm import tqdm + +class CustomTqdm(tqdm): + def __init__(self, *args, **kwargs): + kwargs.setdefault('unit', 'B') + kwargs.setdefault('unit_scale', True) + super().__init__(*args, **kwargs) + +path = snapshot_download( + repo_id="meta-llama/Llama-2-7b", + local_dir="/models/llama2", + tqdm_class=CustomTqdm, +) +``` + +## Error Handling + +```python +from huggingface_hub import hf_hub_download +from huggingface_hub.errors import ( + RepositoryNotFoundError, + RevisionNotFoundError, + EntryNotFoundError, + GatedRepoError, +) + +try: + path = hf_hub_download("meta-llama/Llama-2-7b", "config.json") +except RepositoryNotFoundError: + print("Repo doesn't exist or is private") +except GatedRepoError: + print("Need to accept license at huggingface.co") +except RevisionNotFoundError: + print("Branch/tag/commit not found") +except EntryNotFoundError: + print("File not found in repo") +``` + +## Gated Models + +Some models require accepting terms on the website first: + +1. Go to model page (e.g., https://huggingface.co/meta-llama/Llama-2-7b) +2. Accept the license/terms +3. Download with authenticated token + +```python +# After accepting terms on website +path = hf_hub_download( + repo_id="meta-llama/Llama-2-7b", + filename="config.json", + token="hf_xxx", # Required for gated models +) +``` diff --git a/e2e/tests/panel-navigation.spec.ts b/e2e/tests/panel-navigation.spec.ts new file mode 100644 index 0000000..8ab9d20 --- /dev/null +++ b/e2e/tests/panel-navigation.spec.ts @@ -0,0 +1,101 @@ +import { test, expect } from '@playwright/test'; + +/** + * BrowserFlow Generated Test: panel-navigation + * ═══════════════════════════════════════════════════════════════════════════ + * Spec: specs/panel-navigation.yaml + * Exploration: exp-1768947505134-ye6a6u + * Generated: 2026-01-20 + * + * Smoke test for ComfyGit panel navigation. + * Verifies all main sections load correctly without errors. + * Catches regressions in routing, component mounting, or API connectivity. + * ═══════════════════════════════════════════════════════════════════════════ + */ + +test.describe('Panel Navigation', () => { + test('navigates through all panel sections', async ({ page }) => { + // Navigate to ComfyUI + await page.goto('/'); + + // Wait for ComfyUI to load + await page.waitForLoadState('networkidle'); + + // ───────────────────────────────────────────────────────────────────────── + // Step 0: Open ComfyGit Panel + // Click the ComfyGit button in ComfyUI's top toolbar to open the panel. + // WHY: Entry point for all ComfyGit functionality. + // ───────────────────────────────────────────────────────────────────────── + await test.step('Open Panel', async () => { + await page.getByRole('button', { name: 'ComfyGit', exact: true }).click(); + // Wait for panel to appear - look for panel buttons + await expect(page.getByRole('button', { name: 'STATUS', exact: true })).toBeVisible(); + }); + + // ───────────────────────────────────────────────────────────────────────── + // Step 1-2: Navigate to Workflows + // WHY: Core feature - users manage workflow versions here. + // ───────────────────────────────────────────────────────────────────────── + await test.step('Go to Workflows', async () => { + await page.getByRole('button', { name: 'WORKFLOWS', exact: true }).click(); + // Verify section loaded (wait for content to appear) + await page.waitForTimeout(500); // Allow content to render + }); + + // ───────────────────────────────────────────────────────────────────────── + // Step 3-4: Navigate to Models + // WHY: Users need to verify which models are available before switching environments. + // ───────────────────────────────────────────────────────────────────────── + await test.step('Go to Models', async () => { + await page.getByRole('button', { name: 'MODELS', exact: true }).click(); + await page.waitForTimeout(500); + }); + + // ───────────────────────────────────────────────────────────────────────── + // Step 5-6: Navigate to Branches + // WHY: Core git feature - users create, checkout, and manage branches here. + // ───────────────────────────────────────────────────────────────────────── + await test.step('Go to Branches', async () => { + await page.getByRole('button', { name: 'BRANCHES', exact: true }).click(); + await page.waitForTimeout(500); + }); + + // ───────────────────────────────────────────────────────────────────────── + // Step 7-8: Navigate to History + // WHY: Users review changes and can checkout previous commits. + // ───────────────────────────────────────────────────────────────────────── + await test.step('Go to History', async () => { + await page.getByRole('button', { name: 'HISTORY', exact: true }).click(); + await page.waitForTimeout(500); + }); + + // ───────────────────────────────────────────────────────────────────────── + // Step 9-10: Navigate to Nodes + // WHY: Users manage custom node dependencies per environment. + // ───────────────────────────────────────────────────────────────────────── + await test.step('Go to Nodes', async () => { + await page.getByRole('button', { name: 'NODES', exact: true }).click(); + await page.waitForTimeout(500); + }); + + // ───────────────────────────────────────────────────────────────────────── + // Step 11-12: Navigate to Remotes + // WHY: Users configure push/pull targets for collaboration. + // ───────────────────────────────────────────────────────────────────────── + await test.step('Go to Remotes', async () => { + await page.getByRole('button', { name: 'REMOTES', exact: true }).click(); + await page.waitForTimeout(500); + }); + + // ───────────────────────────────────────────────────────────────────────── + // Step 13-14: Navigate to Export + // WHY: Users export portable bundles for sharing or backup. + // ───────────────────────────────────────────────────────────────────────── + await test.step('Go to Export', async () => { + await page.getByRole('button', { name: 'EXPORT', exact: true }).click(); + await page.waitForTimeout(500); + }); + + // All sections navigated successfully + }); +}); diff --git a/frontend/src/components/BranchDetailModal.vue b/frontend/src/components/BranchDetailModal.vue new file mode 100644 index 0000000..5728538 --- /dev/null +++ b/frontend/src/components/BranchDetailModal.vue @@ -0,0 +1,182 @@ + + + + + diff --git a/frontend/src/components/BranchSection.vue b/frontend/src/components/BranchSection.vue index 1ac6215..32da6db 100644 --- a/frontend/src/components/BranchSection.vue +++ b/frontend/src/components/BranchSection.vue @@ -37,27 +37,32 @@ :key="branch.name" :branch-name="branch.name" :is-current="branch.is_current" + :clickable="true" + :show-current-label="true" + @click="openBranchDetail(branch)" > + + + @@ -71,6 +76,7 @@ import ActionButton from '@/components/base/atoms/ActionButton.vue' import EmptyState from '@/components/base/molecules/EmptyState.vue' import BranchCreateForm from '@/components/base/molecules/BranchCreateForm.vue' import BranchListItem from '@/components/base/molecules/BranchListItem.vue' +import BranchDetailModal from '@/components/BranchDetailModal.vue' defineProps<{ branches: BranchInfo[] @@ -84,6 +90,7 @@ const emit = defineEmits<{ }>() const showCreateInput = ref(false) +const selectedBranch = ref(null) function handleCreate(name: string) { emit('create', name) @@ -93,6 +100,20 @@ function handleCreate(name: string) { function cancelCreate() { showCreateInput.value = false } + +function openBranchDetail(branch: BranchInfo) { + selectedBranch.value = branch +} + +function handleDeleteFromModal(branchName: string) { + selectedBranch.value = null + emit('delete', branchName) +} + +function handleSwitchFromModal(branchName: string) { + selectedBranch.value = null + emit('switch', branchName) +} diff --git a/frontend/src/components/MissingResourcesPopup.vue b/frontend/src/components/MissingResourcesPopup.vue new file mode 100644 index 0000000..c8724ee --- /dev/null +++ b/frontend/src/components/MissingResourcesPopup.vue @@ -0,0 +1,909 @@ + + + + + diff --git a/frontend/src/components/ModelDownloadModal.vue b/frontend/src/components/ModelDownloadModal.vue new file mode 100644 index 0000000..a52aee9 --- /dev/null +++ b/frontend/src/components/ModelDownloadModal.vue @@ -0,0 +1,140 @@ + + + + + diff --git a/frontend/src/components/ModelIndexSection.vue b/frontend/src/components/ModelIndexSection.vue index 2df16da..3e274bf 100644 --- a/frontend/src/components/ModelIndexSection.vue +++ b/frontend/src/components/ModelIndexSection.vue @@ -171,55 +171,16 @@ - - - - + + + + diff --git a/frontend/src/components/base/BaseSelect.vue b/frontend/src/components/base/BaseSelect.vue index 391477d..af5cc55 100644 --- a/frontend/src/components/base/BaseSelect.vue +++ b/frontend/src/components/base/BaseSelect.vue @@ -72,6 +72,8 @@ function getOptionLabel(option: SelectOption | string): string { transition: all var(--cg-transition-fast); cursor: pointer; width: 100%; + overscroll-behavior: contain; + scrollbar-gutter: stable; } .base-select:focus { diff --git a/frontend/src/components/base/molecules/PullModal.vue b/frontend/src/components/base/molecules/PullModal.vue index b90e00b..2132d0f 100644 --- a/frontend/src/components/base/molecules/PullModal.vue +++ b/frontend/src/components/base/molecules/PullModal.vue @@ -57,6 +57,18 @@ {{ preview.commits_behind }} commit{{ preview.commits_behind !== 1 ? 's' : '' }} from {{ preview.remote }}/{{ preview.branch }} + +
+

INCOMING COMMITS

+
+
+ {{ commit.short_hash || commit.hash.slice(0, 7) }} + {{ commit.message }} + {{ commit.date_relative || commit.relative_date }} +
+
+
+

INCOMING CHANGES

@@ -452,6 +464,50 @@ function handlePull(force: boolean) { color: var(--cg-color-text-secondary); } +.commits-section { + display: flex; + flex-direction: column; + gap: var(--cg-space-2); +} + +.commit-list { + display: flex; + flex-direction: column; + gap: var(--cg-space-1); + padding: var(--cg-space-3); + background: var(--cg-color-bg-secondary); + border-radius: var(--cg-radius-sm); + max-height: 200px; + overflow-y: auto; +} + +.commit-item { + display: flex; + align-items: center; + gap: var(--cg-space-2); + font-size: var(--cg-font-size-sm); +} + +.commit-hash { + font-family: var(--cg-font-mono); + color: var(--cg-color-info); + flex-shrink: 0; +} + +.commit-message { + color: var(--cg-color-text-primary); + flex: 1; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.commit-date { + color: var(--cg-color-text-muted); + font-size: var(--cg-font-size-xs); + flex-shrink: 0; +} + .changes-section { display: flex; flex-direction: column; diff --git a/frontend/src/components/base/molecules/PushModal.vue b/frontend/src/components/base/molecules/PushModal.vue index d5277fa..d4e8bb5 100644 --- a/frontend/src/components/base/molecules/PushModal.vue +++ b/frontend/src/components/base/molecules/PushModal.vue @@ -72,7 +72,10 @@
- + + + i + This will create the remote branch for the first time.
diff --git a/frontend/src/components/base/organisms/ModelResolutionStep.vue b/frontend/src/components/base/organisms/ModelResolutionStep.vue index 296a7f7..6682615 100644 --- a/frontend/src/components/base/organisms/ModelResolutionStep.vue +++ b/frontend/src/components/base/organisms/ModelResolutionStep.vue @@ -129,7 +129,7 @@ diff --git a/frontend/src/components/download/CivitaiTab.vue b/frontend/src/components/download/CivitaiTab.vue new file mode 100644 index 0000000..ac86fd4 --- /dev/null +++ b/frontend/src/components/download/CivitaiTab.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/frontend/src/components/download/DirectUrlTab.vue b/frontend/src/components/download/DirectUrlTab.vue new file mode 100644 index 0000000..196a999 --- /dev/null +++ b/frontend/src/components/download/DirectUrlTab.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/frontend/src/components/download/HfFileBrowser.vue b/frontend/src/components/download/HfFileBrowser.vue new file mode 100644 index 0000000..cc17d51 --- /dev/null +++ b/frontend/src/components/download/HfFileBrowser.vue @@ -0,0 +1,807 @@ + + + + + diff --git a/frontend/src/components/download/HuggingFaceTab.vue b/frontend/src/components/download/HuggingFaceTab.vue new file mode 100644 index 0000000..37ba7c3 --- /dev/null +++ b/frontend/src/components/download/HuggingFaceTab.vue @@ -0,0 +1,416 @@ + + + + + diff --git a/frontend/src/components/download/TokenConfigModal.vue b/frontend/src/components/download/TokenConfigModal.vue new file mode 100644 index 0000000..80274ae --- /dev/null +++ b/frontend/src/components/download/TokenConfigModal.vue @@ -0,0 +1,195 @@ + + + + + diff --git a/frontend/src/composables/useComfyGitService.ts b/frontend/src/composables/useComfyGitService.ts index 7b9dab8..213b16f 100644 --- a/frontend/src/composables/useComfyGitService.ts +++ b/frontend/src/composables/useComfyGitService.ts @@ -11,6 +11,7 @@ import type { CreateBranchResult, SwitchBranchResult, EnvironmentInfo, + EnvironmentDetail, SwitchEnvironmentProgress, CreateEnvironmentRequest, CreateEnvironmentResult, @@ -60,7 +61,10 @@ import type { WorkerTestResult, CustomWorkerSystemInfo, WorkerInstancesResponse, - DeployToWorkerRequest + DeployToWorkerRequest, + HuggingFaceRepoInfoResponse, + HuggingFaceSearchResponse, + ModelsSubdirectoriesResponse } from '@/types/comfygit' import { mockApi, isMockApi } from '@/services/mockApi' import { useMockControls } from '@/composables/useMockControls' @@ -79,6 +83,20 @@ declare global { // Toggle between mock and real API (set VITE_USE_MOCK_API=false in .env to disable) const USE_MOCK = isMockApi() +// UUID generator that works in non-secure contexts (HTTP) +// generateUUID() only works in secure contexts (HTTPS/localhost) +function generateUUID(): string { + if (typeof crypto !== 'undefined' && crypto.randomUUID) { + return generateUUID() + } + // Fallback for non-secure contexts + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => { + const r = (Math.random() * 16) | 0 + const v = c === 'x' ? r : (r & 0x3) | 0x8 + return v.toString(16) + }) +} + // ============================================================================ // MOCK STATE MANAGEMENT // For simulating stateful operations like wizard flows @@ -285,7 +303,12 @@ export function useComfyGitService() { throw new Error(errorData.error || errorData.message || `Request failed: ${response.status}`) } - return response.json() + // Handle empty responses (some endpoints return 200 with no body) + const text = await response.text() + if (!text) { + return undefined as T + } + return JSON.parse(text) } async function getStatus(forceRefresh = false): Promise { @@ -316,6 +339,14 @@ export function useComfyGitService() { return fetchApi(`/v2/comfygit/log?limit=${limit}&offset=${offset}`) } + async function getBranchHistory(branchName: string, limit = 50): Promise { + if (USE_MOCK) { + const commits = await mockApi.getCommitHistory(limit) + return { commits, has_more: false, current_branch: branchName } + } + return fetchApi(`/v2/comfygit/log?branch=${encodeURIComponent(branchName)}&limit=${limit}`) + } + async function exportEnv(outputPath?: string): Promise { return fetchApi('/v2/comfygit/export', { method: 'POST', @@ -439,6 +470,15 @@ export function useComfyGitService() { } } + async function getEnvironmentDetails(name: string): Promise { + if (USE_MOCK) return null + try { + return await fetchApi(`/v2/comfygit/environments/${encodeURIComponent(name)}`) + } catch { + return null + } + } + async function switchEnvironment(targetEnv: string, workspacePath?: string): Promise { if (USE_MOCK) return mockApi.switchEnvironment(targetEnv) @@ -701,6 +741,45 @@ export function useComfyGitService() { }) } + async function getHuggingFaceRepoInfo(url: string): Promise { + if (USE_MOCK) { + return { + repo_id: 'mock/repo', + revision: 'main', + files: [ + { path: 'model.safetensors', size: 1024 * 1024 * 100, is_model_file: true, shard_group: null } + ] + } + } + const params = new URLSearchParams({ url }) + return fetchApi(`/v2/workspace/huggingface/repo-info?${params}`) + } + + async function getModelsSubdirectories(): Promise { + if (USE_MOCK) { + return { + directories: ['checkpoints', 'loras', 'vae', 'controlnet'], + standard: ['checkpoints', 'loras', 'vae'], + existing: ['checkpoints', 'controlnet'] + } + } + return fetchApi('/v2/workspace/models/subdirectories') + } + + async function searchHuggingFaceRepos(query: string, limit = 10): Promise { + if (USE_MOCK) { + return { + query, + results: [ + { repo_id: 'black-forest-labs/FLUX.1-dev', description: 'FLUX.1 development model', downloads: 1200000, likes: 4500, tags: ['text-to-image', 'diffusers'] }, + { repo_id: 'stabilityai/stable-diffusion-xl-base-1.0', description: 'SDXL base model', downloads: 890000, likes: 3200, tags: ['text-to-image'] } + ] + } + } + const params = new URLSearchParams({ query, limit: String(limit) }) + return fetchApi(`/v2/workspace/huggingface/search?${params}`) + } + // Settings async function getConfig(workspacePath?: string): Promise { if (USE_MOCK) return mockApi.getConfig() @@ -850,6 +929,64 @@ export function useComfyGitService() { }) } + /** + * Queue a node install via Manager queue API. + * This routes through the Manager's sequential queue to avoid race conditions. + * Returns the ui_id for tracking via WebSocket events. + */ + async function queueNodeInstall(params: { + id: string + version?: string + selected_version?: string + repository?: string + mode?: string + channel?: string + }): Promise<{ ui_id: string }> { + if (USE_MOCK) { + await mockApi.installNode(params.id) + return { ui_id: generateUUID() } + } + + const ui_id = generateUUID() + + // Get client_id from ComfyUI's API if available + const client_id = (window as any).app?.api?.clientId ?? + (window as any).app?.api?.initialClientId ?? + 'comfygit-panel' + + const task = { + kind: 'install', + params: { + id: params.id, + version: params.version || params.selected_version || 'latest', + selected_version: params.selected_version || 'latest', + repository: params.repository || '', + mode: params.mode || 'remote', + channel: params.channel || 'default' + }, + ui_id, + client_id + } + + // Queue the task + await fetchApi('/v2/manager/queue/task', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(task) + }) + + console.log('[ComfyGit] Task queued with ui_id:', ui_id, 'for package:', params.id) + + // Return ui_id BEFORE starting queue processing + // This allows caller to set up event tracking before events fire + // Fire-and-forget the start - don't await (avoids race condition) + fetchApi('/v2/manager/queue/start').catch(err => { + console.error('[ComfyGit] Queue start failed:', err) + }) + + return { ui_id } + } + async function updateNode(nodeName: string): Promise<{ status: 'success' | 'error', message?: string }> { if (USE_MOCK) { await mockApi.updateNode(nodeName) @@ -1551,6 +1688,7 @@ export function useComfyGitService() { getStatus, commit, getHistory, + getBranchHistory, exportEnv, validateExport, validateDeploy, @@ -1564,6 +1702,7 @@ export function useComfyGitService() { deleteBranch, // Environment Management getEnvironments, + getEnvironmentDetails, switchEnvironment, getSwitchProgress, createEnvironment, @@ -1588,6 +1727,9 @@ export function useComfyGitService() { scanWorkspaceModels, getModelsDirectory, setModelsDirectory, + getHuggingFaceRepoInfo, + getModelsSubdirectories, + searchHuggingFaceRepos, // Settings getConfig, updateConfig, @@ -1603,6 +1745,7 @@ export function useComfyGitService() { getNodes, trackNodeAsDev, installNode, + queueNodeInstall, updateNode, uninstallNode, // Git Remotes diff --git a/frontend/src/main.ts b/frontend/src/main.ts index 005d30a..387c8cb 100644 --- a/frontend/src/main.ts +++ b/frontend/src/main.ts @@ -4,6 +4,7 @@ import ComfyGitPanel from '@/components/ComfyGitPanel.vue' import CommitPopover from '@/components/CommitPopover.vue' import ModelDownloadQueue from '@/components/ModelDownloadQueue.vue' import MockControlPopover from '@/components/MockControlPopover.vue' +import MissingResourcesPopup from '@/components/MissingResourcesPopup.vue' import { useModelDownloadQueue } from '@/composables/useModelDownloadQueue' import { isMockApi } from '@/services/mockApi' import type { ComfyGitStatus } from '@/types/comfygit' @@ -20,6 +21,12 @@ document.head.appendChild(cssLink) const initialTheme = getInitialTheme() applyTheme(initialTheme) +// Reset panel tab to default on page load (fresh navigation / refresh) +// sessionStorage persists across close/reopen within a page, but we want +// a fresh page load to always start on the status tab. +sessionStorage.removeItem('ComfyGit.LastView') +sessionStorage.removeItem('ComfyGit.LastSection') + // Expose theme switcher to console for easy testing // Usage: window.ComfyGit.setTheme('comfy') or window.ComfyGit.setTheme('phosphor') import { switchTheme, getCurrentTheme, type ThemeName } from '@/themes' @@ -43,6 +50,8 @@ let downloadQueueContainer: HTMLElement | null = null let downloadQueueApp: ReturnType | null = null let mockControlPopover: HTMLElement | null = null let mockControlApp: ReturnType | null = null +let missingResourcesContainer: HTMLElement | null = null +let missingResourcesApp: ReturnType | null = null // Global status for indicator const globalStatus = ref(null) @@ -338,6 +347,21 @@ function closeMockControlPopover() { } } +function mountMissingResourcesPopup() { + if (missingResourcesContainer) return // Already mounted + + missingResourcesContainer = document.createElement('div') + missingResourcesContainer.className = 'comfygit-missing-resources-root' + + missingResourcesApp = createApp({ + render: () => h(MissingResourcesPopup) + }) + + missingResourcesApp.mount(missingResourcesContainer) + document.body.appendChild(missingResourcesContainer) + console.log('[ComfyGit] Missing resources popup mounted') +} + // Update commit button indicator and disabled state let commitButton: HTMLButtonElement | null = null let mockButton: HTMLButtonElement | null = null @@ -480,6 +504,65 @@ document.head.appendChild(styles) app.registerExtension({ name: 'Comfy.ComfyGitPanel', + // Commands that can be triggered by keybindings or menu items + commands: [ + { + id: 'ComfyGit.OpenPanel', + label: 'Open ComfyGit Panel', + icon: 'pi pi-folder-open', + function: () => showPanel() + }, + { + id: 'ComfyGit.QuickCommit', + label: 'Quick Commit', + icon: 'pi pi-check', + function: () => { + if (commitButton && !commitButton.disabled) { + showCommitPopover(commitButton) + } + } + } + ], + + // Default keybindings (user can customize in Settings → Keyboard Shortcuts) + keybindings: [ + { + commandId: 'ComfyGit.OpenPanel', + combo: { key: 'l', alt: true, shift: true } + }, + { + commandId: 'ComfyGit.QuickCommit', + combo: { key: 'k', alt: true, shift: true } + } + ], + + // Hook into workflow loading to intercept missing resources + async beforeConfigureGraph(graphData: any, _missingNodeTypes: any[]) { + // Disable ComfyUI's built-in popups - we show our own + try { + await Promise.all([ + app.ui.settings.setSettingValueAsync('Comfy.Workflow.ShowMissingModelsWarning', false), + app.ui.settings.setSettingValueAsync('Comfy.Workflow.ShowMissingNodesWarning', false) + ]) + } catch (e) { + console.warn('[ComfyGit] Failed to disable built-in warnings:', e) + } + + // Store workflow data for afterConfigureGraph (separate hook calls) + ;(window as any).__comfygit_pending_workflow = graphData + }, + + async afterConfigureGraph(_missingNodeTypes: any[]) { + const workflow = (window as any).__comfygit_pending_workflow + if (!workflow) return + delete (window as any).__comfygit_pending_workflow + + // Dispatch event for MissingResourcesPopup to handle + window.dispatchEvent(new CustomEvent('comfygit:workflow-loaded', { + detail: { workflow } + })) + }, + async setup() { // Create button group const btnGroup = document.createElement('div') @@ -523,6 +606,15 @@ app.registerExtension({ // Mount global download queue mountDownloadQueue() + // Mount missing resources popup + mountMissingResourcesPopup() + + // Listen for panel open requests from other components + window.addEventListener('comfygit:open-panel', ((event: CustomEvent) => { + const initialView = event.detail?.initialView + showPanel(initialView) + }) as EventListener) + // Load any pending downloads from previous session const { loadPendingDownloads } = useModelDownloadQueue() loadPendingDownloads() @@ -784,6 +876,168 @@ app.registerExtension({ } console.log('[ComfyGit] Manager error notification system initialized') + + // ========== RESTART REQUIRED TOAST: Show after nodes installed ========== + window.addEventListener('comfygit:nodes-installed', (event: Event) => { + const customEvent = event as CustomEvent + const { count = 1 } = customEvent.detail || {} + showRestartRequiredNotification(count) + }) + + function showRestartRequiredNotification(nodeCount: number) { + // Remove any existing restart toast + const existing = document.getElementById('comfygit-restart-toast') + if (existing) existing.remove() + + const toast = document.createElement('div') + toast.id = 'comfygit-restart-toast' + toast.style.cssText = ` + position: fixed; + bottom: 20px; + left: 50%; + transform: translateX(-50%); + background: #1e1e1e; + border: 1px solid #333; + border-radius: 8px; + padding: 12px 16px; + box-shadow: 0 8px 32px rgba(0,0,0,0.5); + z-index: 999999; + display: flex; + align-items: center; + gap: 12px; + font-family: sans-serif; + font-size: 14px; + color: #fff; + max-width: 550px; + ` + + // Success icon (matches Manager style) + const icon = document.createElement('span') + icon.textContent = '✅' + icon.style.fontSize = '20px' + toast.appendChild(icon) + + // Message container + const msgContainer = document.createElement('div') + msgContainer.style.cssText = 'flex: 1; display: flex; flex-direction: column; gap: 2px;' + + const title = document.createElement('div') + title.textContent = 'To apply changes, please restart ComfyUI' + title.style.cssText = 'font-weight: 500; color: #fff;' + msgContainer.appendChild(title) + + const detail = document.createElement('div') + detail.textContent = `${nodeCount} node package${nodeCount > 1 ? 's' : ''} ready to install` + detail.style.cssText = 'font-size: 12px; opacity: 0.7;' + msgContainer.appendChild(detail) + + toast.appendChild(msgContainer) + + // Restart button (matches Manager's bordered style) + const restartBtn = document.createElement('button') + restartBtn.textContent = 'Apply Changes' + restartBtn.style.cssText = ` + background: transparent; + color: #fff; + border: 2px solid #fff; + border-radius: 20px; + padding: 6px 14px; + cursor: pointer; + font-size: 13px; + font-weight: 500; + white-space: nowrap; + transition: background 0.2s; + ` + restartBtn.onmouseover = () => restartBtn.style.background = 'rgba(255,255,255,0.1)' + restartBtn.onmouseout = () => restartBtn.style.background = 'transparent' + restartBtn.onclick = async () => { + restartBtn.disabled = true + restartBtn.textContent = 'Restarting...' + restartBtn.style.opacity = '0.7' + + // Update toast appearance for restarting state + title.textContent = 'Restarting...' + detail.textContent = 'Applying changes, please wait...' + + try { + // Set up reconnection handler BEFORE triggering reboot + const onReconnect = async () => { + console.log('[ComfyGit] Reconnected after restart, refreshing node definitions...') + + try { + // Refresh node definitions (like Manager does) + if ((app as any).refreshComboInNodes) { + await (app as any).refreshComboInNodes() + console.log('[ComfyGit] Node definitions refreshed successfully') + } + + // Update toast to show success + icon.textContent = '✅' + title.textContent = 'Nodes Installed' + title.style.color = '#4caf50' + detail.textContent = `${nodeCount} package${nodeCount > 1 ? 's' : ''} installed successfully!` + toast.style.borderColor = '#4caf50' + restartBtn.style.display = 'none' + + // Auto-close after 3 seconds + setTimeout(() => { + toast.remove() + }, 3000) + } catch (refreshErr) { + console.error('[ComfyGit] Failed to refresh nodes:', refreshErr) + // Still show success since restart worked + icon.textContent = '✅' + title.textContent = 'Restart Complete' + title.style.color = '#4caf50' + detail.textContent = 'Refresh the page to load new nodes.' + toast.style.borderColor = '#4caf50' + restartBtn.style.display = 'none' + } + } + + // Listen for reconnection (once) + api.addEventListener('reconnected', onReconnect, { once: true } as any) + + // Trigger reboot + await fetch('/v2/manager/reboot') + // Toast will update when reconnected + } catch (err) { + console.error('[ComfyGit] Failed to restart:', err) + title.textContent = 'Restart Failed' + title.style.color = '#e53935' + detail.textContent = 'Could not restart server. Try again.' + toast.style.borderColor = '#e53935' + restartBtn.textContent = 'Try Again' + restartBtn.disabled = false + restartBtn.style.opacity = '1' + } + } + toast.appendChild(restartBtn) + + // Close button + const closeBtn = document.createElement('button') + closeBtn.textContent = '×' + closeBtn.title = 'Dismiss (restart later)' + closeBtn.style.cssText = ` + background: transparent; + border: none; + color: #fff; + font-size: 24px; + line-height: 1; + cursor: pointer; + padding: 0 4px; + opacity: 0.6; + ` + closeBtn.onmouseover = () => closeBtn.style.opacity = '1' + closeBtn.onmouseout = () => closeBtn.style.opacity = '0.6' + closeBtn.onclick = () => toast.remove() + toast.appendChild(closeBtn) + + document.body.appendChild(toast) + console.log(`[ComfyGit] Restart required notification displayed (${nodeCount} packages installed)`) + } + + console.log('[ComfyGit] Restart notification system initialized') } } }) diff --git a/frontend/src/types/comfygit.ts b/frontend/src/types/comfygit.ts index 951858c..d1d8f9e 100644 --- a/frontend/src/types/comfygit.ts +++ b/frontend/src/types/comfygit.ts @@ -195,6 +195,29 @@ export interface EnvironmentInfo { last_commit_date?: string } +export interface EnvironmentDetail extends EnvironmentInfo { + workflows: { + synced: string[] + new: string[] + modified: string[] + deleted: string[] + } + nodes: Array<{ + name: string + version: string | null + source: string + }> + models: { + missing: Array<{ + filename: string + category: string + workflow_names: string[] + criticality: string + can_download: boolean + }> + } +} + export interface SwitchEnvironmentProgress { state: 'idle' | 'preparing' | 'syncing' | 'starting' | 'validating' | 'complete' | 'rolled_back' | 'critical_failure' target_env: string @@ -1140,3 +1163,39 @@ export interface WorkerTestResult { gpu_info?: string mode?: string } + +// ============================================================================= +// HuggingFace Integration Types +// ============================================================================= + +export interface HuggingFaceRepoFile { + path: string + size: number + is_model_file: boolean + shard_group?: string | null +} + +export interface HuggingFaceRepoInfoResponse { + repo_id: string + revision: string + files: HuggingFaceRepoFile[] +} + +export interface ModelsSubdirectoriesResponse { + directories: string[] + standard: string[] + existing: string[] +} + +export interface HuggingFaceSearchResult { + repo_id: string + description: string | null + downloads: number + likes: number + tags: string[] +} + +export interface HuggingFaceSearchResponse { + results: HuggingFaceSearchResult[] + query: string +} diff --git a/frontend/src/utils/huggingface.ts b/frontend/src/utils/huggingface.ts new file mode 100644 index 0000000..1884fdf --- /dev/null +++ b/frontend/src/utils/huggingface.ts @@ -0,0 +1,79 @@ +export type HuggingFaceUrlKind = 'repo' | 'file' | 'unknown' + +export interface HuggingFaceParsedUrl { + kind: HuggingFaceUrlKind + repoId?: string + revision?: string + path?: string // file path in repo (for kind='file') +} + +function isHfHost(host: string): boolean { + const h = host.toLowerCase() + return h === 'huggingface.co' || h.endsWith('.huggingface.co') || h === 'hf.co' +} + +export function parseHuggingFaceUrl(rawUrl: string): HuggingFaceParsedUrl { + const url = rawUrl.trim() + if (!url) return { kind: 'unknown' } + + let u: URL + try { + u = new URL(url) + } catch { + return { kind: 'unknown' } + } + + if (!isHfHost(u.hostname)) return { kind: 'unknown' } + + const parts = u.pathname.replace(/^\/+/, '').split('/').filter(Boolean) + + // Ignore datasets/spaces URLs for now (model downloader MVP) + if (parts[0] === 'datasets' || parts[0] === 'spaces') return { kind: 'unknown' } + + if (parts.length < 2) return { kind: 'unknown' } + + const repoId = `${parts[0]}/${parts[1]}` + const rest = parts.slice(2) + + // https://huggingface.co/owner/repo + if (rest.length === 0) { + return { kind: 'repo', repoId, revision: 'main' } + } + + const marker = rest[0] + + // https://huggingface.co/owner/repo/tree/main(/subdir...) + if (marker === 'tree') { + const revision = rest[1] || 'main' + const path = rest.slice(2).join('/') + return { kind: 'repo', repoId, revision, path: path || undefined } + } + + // https://huggingface.co/owner/repo/resolve/main/path/to/file + if (marker === 'resolve') { + const revision = rest[1] || 'main' + const path = rest.slice(2).join('/') + if (!path) return { kind: 'repo', repoId, revision } + return { kind: 'file', repoId, revision, path } + } + + // Browser file page (not direct download) + if (marker === 'blob') { + const revision = rest[1] || 'main' + const path = rest.slice(2).join('/') + if (!path) return { kind: 'repo', repoId, revision } + return { kind: 'file', repoId, revision, path } + } + + // Fallback: treat as repo + return { kind: 'repo', repoId, revision: 'main' } +} + +function encodePath(path: string): string { + return path.split('/').map(encodeURIComponent).join('/') +} + +export function buildHfResolveUrl(repoId: string, revision: string, path: string): string { + const [owner, repo] = repoId.split('/') + return `https://huggingface.co/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}/resolve/${encodeURIComponent(revision)}/${encodePath(path)}` +} diff --git a/js/comfygit-panel.css b/js/comfygit-panel.css index 04f2f47..5939ebd 100644 --- a/js/comfygit-panel.css +++ b/js/comfygit-panel.css @@ -1 +1 @@ -.panel-layout[data-v-21565df9]{display:flex;flex-direction:column;height:100%}.panel-layout-content[data-v-21565df9]{flex:1;overflow-y:auto;min-height:0}.panel-layout-content[data-v-21565df9]::-webkit-scrollbar{width:8px}.panel-layout-content[data-v-21565df9]::-webkit-scrollbar-track{background:var(--cg-color-bg-tertiary)}.panel-layout-content[data-v-21565df9]::-webkit-scrollbar-thumb{background:var(--cg-color-border-subtle);border:1px solid var(--cg-color-bg-tertiary)}.panel-layout-content[data-v-21565df9]::-webkit-scrollbar-thumb:hover{background:var(--cg-color-accent)}.panel-title[data-v-c3875efc]{margin:0;font-weight:var(--cg-font-weight-normal);text-shadow:var(--cg-text-shadow-title)}.panel-title.view[data-v-c3875efc]{color:var(--cg-color-accent);font-size:var(--cg-font-size-lg);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.panel-title.dialog[data-v-c3875efc]{color:var(--cg-color-accent);font-size:var(--cg-font-size-sm);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.panel-title-prefix[data-v-c3875efc]{opacity:.7}.panel-title-prefix-theme[data-v-c3875efc]:before{content:var(--cg-decoration-title-prefix);opacity:.7}.info-button[data-v-6fc7f16d]{background:transparent;border:none;color:var(--cg-color-text-muted);cursor:pointer;padding:var(--cg-space-0-5);display:flex;align-items:center;justify-content:center;transition:all var(--cg-transition-fast)}.info-button[data-v-6fc7f16d]:hover{color:var(--cg-color-accent);transform:scale(1.1)}.panel-header[data-v-55a62cd6]{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--cg-space-4)}.panel-header.stacked[data-v-55a62cd6]{flex-direction:column;align-items:flex-start;gap:var(--cg-space-3)}.header-left[data-v-55a62cd6]{display:flex;align-items:center;gap:var(--cg-space-2)}.header-actions[data-v-55a62cd6]{display:flex;gap:var(--cg-space-2);flex-wrap:wrap}.section-title[data-v-559361eb]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);margin:0;font-weight:var(--cg-font-weight-normal);text-shadow:var(--cg-text-shadow-accent)}.section-title[data-v-559361eb]:before{content:var(--cg-decoration-label-prefix)}.section-title[data-v-559361eb]:after{content:var(--cg-decoration-label-suffix)}.section-title.clickable[data-v-559361eb]{cursor:pointer;-webkit-user-select:none;user-select:none}.section-title.clickable[data-v-559361eb]:hover{color:var(--cg-color-accent)}.section-title-count[data-v-559361eb]{margin-left:var(--cg-space-1)}.section-title-icon[data-v-559361eb]{margin-left:var(--cg-space-2);font-size:var(--cg-font-size-xs)}.status-grid[data-v-73b7ba3f]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);border-radius:var(--cg-radius-md);overflow:hidden}.status-grid__columns[data-v-73b7ba3f]{display:grid;grid-template-columns:1fr 1fr;gap:0}.status-grid__column[data-v-73b7ba3f]{display:flex;flex-direction:column;gap:var(--cg-space-1);padding:var(--cg-space-3) var(--cg-space-4)}.status-grid__column--right[data-v-73b7ba3f]{border-left:1px solid var(--cg-color-border-subtle)}.status-grid__title[data-v-73b7ba3f]{font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-semibold);text-transform:uppercase;color:var(--cg-color-text-muted);margin:0 0 var(--cg-space-2) 0;letter-spacing:var(--cg-letter-spacing-wide)}.status-grid__footer[data-v-73b7ba3f]{border-top:1px solid var(--cg-color-border-subtle);padding:var(--cg-space-3) var(--cg-space-4)}.status-item[data-v-6f929183]{display:flex;align-items:center;gap:var(--cg-space-2);font-size:var(--cg-font-size-sm);color:var(--cg-color-text-primary);line-height:1.4}.status-item.is-separator[data-v-6f929183]{margin-top:var(--cg-space-1);padding-top:var(--cg-space-1);border-top:1px solid var(--cg-color-border-subtle)}.status-item__icon[data-v-6f929183]{font-size:var(--cg-font-size-xs);opacity:.7;flex-shrink:0}.status-item__count[data-v-6f929183]{font-weight:var(--cg-font-weight-semibold);min-width:16px;flex-shrink:0}.status-item__label[data-v-6f929183]{color:var(--cg-color-text-secondary);flex:1}.status-item--new .status-item__count[data-v-6f929183]{color:var(--cg-color-success)}.status-item--modified .status-item__count[data-v-6f929183]{color:var(--cg-color-warning)}.status-item--deleted .status-item__count[data-v-6f929183]{color:var(--cg-color-error)}.status-item--synced .status-item__count[data-v-6f929183],.status-item--synced .status-item__icon[data-v-6f929183]{color:var(--cg-color-text-muted)}.status-item--ok[data-v-6f929183]{color:var(--cg-color-success)}.status-item--ok .status-item__icon[data-v-6f929183]{opacity:1}.status-item--ok .status-item__label[data-v-6f929183]{color:var(--cg-color-success)}.issue-card[data-v-df6aa348]{display:flex;flex-direction:column;gap:var(--cg-space-3);padding:var(--cg-space-3) var(--cg-space-4);border-radius:var(--cg-radius-md);border:1px solid;margin-bottom:var(--cg-space-3)}.issue-card--info[data-v-df6aa348]{background:var(--cg-color-info-muted);border-color:var(--cg-color-accent);color:var(--cg-color-text-primary)}.issue-card--warning[data-v-df6aa348]{background:var(--cg-color-warning-muted);border-color:var(--cg-color-warning);color:var(--cg-color-text-primary)}.issue-card--error[data-v-df6aa348]{background:var(--cg-color-error-muted);border-color:var(--cg-color-error);color:var(--cg-color-text-primary)}.issue-card__header[data-v-df6aa348]{display:flex;align-items:center;gap:var(--cg-space-2)}.issue-card__icon[data-v-df6aa348]{font-size:var(--cg-font-size-lg);flex-shrink:0}.issue-card--warning .issue-card__icon[data-v-df6aa348]{color:var(--cg-color-warning)}.issue-card--error .issue-card__icon[data-v-df6aa348]{color:var(--cg-color-error)}.issue-card--info .issue-card__icon[data-v-df6aa348]{color:var(--cg-color-accent)}.issue-card__title[data-v-df6aa348]{font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-primary);margin:0}.issue-card__content[data-v-df6aa348]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.issue-card__description[data-v-df6aa348]{font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary);margin:0;line-height:1.5}.issue-card__items[data-v-df6aa348]{display:flex;flex-direction:column;gap:var(--cg-space-1);padding-left:var(--cg-space-2)}.issue-card__item[data-v-df6aa348]{display:flex;gap:var(--cg-space-2);font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary);line-height:1.5}.issue-card__bullet[data-v-df6aa348]{color:var(--cg-color-text-muted);flex-shrink:0}.issue-card__actions[data-v-df6aa348]{display:flex;gap:var(--cg-space-2);flex-wrap:wrap}.action-btn[data-v-772abe47]{font-family:var(--cg-font-mono);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);cursor:pointer;transition:all var(--cg-transition-fast);display:inline-flex;align-items:center;justify-content:center;gap:var(--cg-space-1);white-space:nowrap;border:1px solid}.action-btn[data-v-772abe47]:disabled{opacity:.5;cursor:not-allowed}.action-btn.loading[data-v-772abe47]{pointer-events:none}.spinner[data-v-772abe47]{width:12px;height:12px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin-772abe47 .6s linear infinite}@keyframes spin-772abe47{to{transform:rotate(360deg)}}.action-btn.xs[data-v-772abe47]{padding:var(--cg-space-1) var(--cg-space-2);font-size:var(--cg-font-size-xs)}.action-btn.sm[data-v-772abe47]{padding:var(--cg-space-1) var(--cg-space-3);font-size:var(--cg-font-size-xs)}.action-btn.md[data-v-772abe47]{padding:var(--cg-space-2) var(--cg-space-4);font-size:var(--cg-font-size-sm)}.action-btn.primary[data-v-772abe47]{background:transparent;color:var(--cg-color-accent);border-color:var(--cg-color-accent)}.action-btn.primary[data-v-772abe47]:hover:not(:disabled){background:var(--cg-color-bg-hover);box-shadow:0 0 8px var(--cg-shadow-accent)}.action-btn.secondary[data-v-772abe47]{background:transparent;color:var(--cg-color-text-secondary);border-color:var(--cg-color-border)}.action-btn.secondary[data-v-772abe47]:hover:not(:disabled){color:var(--cg-color-text-primary);border-color:var(--cg-color-text-primary)}.action-btn.destructive[data-v-772abe47]{background:transparent;color:var(--cg-color-error);border-color:var(--cg-color-error)}.action-btn.destructive[data-v-772abe47]:hover:not(:disabled){background:var(--cg-color-bg-hover);box-shadow:0 0 8px var(--cg-shadow-error)}.action-btn.ghost[data-v-772abe47]{background:transparent;color:var(--cg-color-text-muted);border-color:transparent}.action-btn.ghost[data-v-772abe47]:hover:not(:disabled){background:var(--cg-color-bg-hover);border-color:var(--cg-color-border-subtle);color:var(--cg-color-accent)}.action-btn.link[data-v-772abe47]{background:transparent;color:var(--cg-color-info);border:none;text-decoration:underline;padding:0}.action-btn.link[data-v-772abe47]:hover:not(:disabled){color:var(--cg-color-accent)}.empty-state[data-v-4466284f]{text-align:center;padding:var(--cg-space-8) var(--cg-space-6);color:var(--cg-color-text-muted)}.empty-icon[data-v-4466284f]{font-size:var(--cg-font-size-2xl);margin-bottom:var(--cg-space-3);opacity:.5}.empty-message[data-v-4466284f]{font-size:var(--cg-font-size-sm);margin:0 0 var(--cg-space-4) 0}.detail-label[data-v-75e9eeb8]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-normal)}.detail-value[data-v-2f186e4c]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-sm);flex:1;word-break:break-word}.detail-value.mono[data-v-2f186e4c]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs)}.detail-value.hash[data-v-2f186e4c]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);word-break:break-all}.detail-value.warning[data-v-2f186e4c]{color:var(--cg-color-warning)}.detail-value.error[data-v-2f186e4c]{color:var(--cg-color-error)}.detail-value.truncate[data-v-2f186e4c]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detail-row[data-v-ef15664a]{display:flex;gap:var(--cg-space-2);font-size:var(--cg-font-size-sm);align-items:baseline}.modal-overlay[data-v-e2b37122]{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--cg-color-bg-overlay);display:flex;align-items:center;justify-content:center;z-index:10005;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-content[data-v-e2b37122]{background:var(--cg-color-bg-primary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-lg);box-shadow:var(--cg-shadow-lg);max-width:700px;width:90%;max-height:85vh;display:flex;flex-direction:column}.modal-header[data-v-e2b37122]{display:flex;justify-content:space-between;align-items:center;padding:var(--cg-space-4);border-bottom:1px solid var(--cg-color-border-subtle);flex-shrink:0}.modal-title[data-v-e2b37122]{margin:0;font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-accent);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.modal-close[data-v-e2b37122]{background:transparent;border:none;color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xl);cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;transition:color var(--cg-transition-fast)}.modal-close[data-v-e2b37122]:hover{color:var(--cg-color-text-primary)}.modal-body[data-v-e2b37122]{padding:var(--cg-space-4);overflow-y:auto;flex:1;min-height:0}.modal-actions[data-v-e2b37122]{padding:var(--cg-space-4);border-top:1px solid var(--cg-color-border-subtle);display:flex;gap:var(--cg-space-2);justify-content:flex-end;flex-shrink:0}.status-section[data-v-e2b37122]{margin-bottom:var(--cg-space-5)}.status-section[data-v-e2b37122]:last-child{margin-bottom:0}.section-header-row[data-v-e2b37122]{display:flex;justify-content:space-between;align-items:center}.link-btn[data-v-e2b37122]{background:transparent;border:none;color:var(--cg-color-accent);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);cursor:pointer;padding:4px 8px;text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);transition:opacity var(--cg-transition-fast)}.link-btn[data-v-e2b37122]:hover{opacity:.8;text-decoration:underline}.workflow-group[data-v-e2b37122]{margin-bottom:var(--cg-space-3)}.workflow-group-header[data-v-e2b37122]{display:flex;align-items:center;gap:var(--cg-space-2);margin-bottom:var(--cg-space-2);font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary)}.workflow-group-header.clickable[data-v-e2b37122]{cursor:pointer;-webkit-user-select:none;user-select:none}.workflow-group-header.clickable[data-v-e2b37122]:hover{color:var(--cg-color-accent)}.workflow-status-icon[data-v-e2b37122]{font-size:var(--cg-font-size-base);flex-shrink:0}.workflow-status-icon.new[data-v-e2b37122]{color:var(--cg-color-info)}.workflow-status-icon.modified[data-v-e2b37122]{color:var(--cg-color-warning)}.workflow-status-icon.deleted[data-v-e2b37122]{color:var(--cg-color-error)}.workflow-status-icon.synced[data-v-e2b37122]{color:var(--cg-color-success)}.workflow-status-icon.broken[data-v-e2b37122]{color:var(--cg-color-error)}.workflow-group-title[data-v-e2b37122]{font-weight:var(--cg-font-weight-semibold);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);flex:1}.expand-icon[data-v-e2b37122]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.workflow-list[data-v-e2b37122]{display:flex;flex-direction:column;gap:var(--cg-space-1);padding-left:var(--cg-space-5)}.workflow-item[data-v-e2b37122]{display:flex;align-items:center;gap:var(--cg-space-2)}.workflow-name[data-v-e2b37122]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm);color:var(--cg-color-text-primary)}.workflow-issue[data-v-e2b37122]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);margin-left:var(--cg-space-2);font-style:italic}.change-group[data-v-e2b37122]{margin-bottom:var(--cg-space-3)}.change-group-header[data-v-e2b37122]{display:flex;align-items:center;gap:var(--cg-space-2);margin-bottom:var(--cg-space-2);font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary)}.change-icon[data-v-e2b37122]{font-size:var(--cg-font-size-lg);font-weight:var(--cg-font-weight-bold);font-family:var(--cg-font-mono);flex-shrink:0}.change-icon.add[data-v-e2b37122]{color:var(--cg-color-info)}.change-icon.remove[data-v-e2b37122]{color:var(--cg-color-error)}.change-icon.modified[data-v-e2b37122]{color:var(--cg-color-warning)}.change-group-title[data-v-e2b37122]{font-weight:var(--cg-font-weight-semibold);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.change-list[data-v-e2b37122]{display:flex;flex-direction:column;gap:var(--cg-space-1);padding-left:var(--cg-space-5)}.change-item[data-v-e2b37122]{display:flex;align-items:center;gap:var(--cg-space-2)}.node-name[data-v-e2b37122]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm);color:var(--cg-color-text-primary)}.dev-badge[data-v-e2b37122]{display:inline-block;padding:2px 6px;background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);text-transform:uppercase;font-weight:var(--cg-font-weight-semibold)}.drift-item[data-v-e2b37122]{margin-bottom:var(--cg-space-3)}.drift-list[data-v-e2b37122]{margin-top:var(--cg-space-2);padding-left:var(--cg-space-4);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary)}.drift-list-item[data-v-e2b37122]{margin-bottom:var(--cg-space-1)}.drift-list-more[data-v-e2b37122]{margin-top:var(--cg-space-1);color:var(--cg-color-text-muted);font-style:italic}.warning-box[data-v-e2b37122]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-3);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-sm);color:var(--cg-color-warning);margin-bottom:var(--cg-space-3)}.warning-icon[data-v-e2b37122]{font-size:var(--cg-font-size-lg);flex-shrink:0}.info-box[data-v-e2b37122]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-3);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary);margin-bottom:var(--cg-space-3)}.info-icon[data-v-e2b37122]{font-size:var(--cg-font-size-lg);flex-shrink:0;color:var(--cg-color-info)}.help-text[data-v-e2b37122]{margin:0;font-size:var(--cg-font-size-sm);color:var(--cg-color-text-muted);line-height:1.5}.empty-state-inline[data-v-e2b37122]{display:flex;align-items:center;gap:var(--cg-space-3);padding:var(--cg-space-4);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);border-radius:var(--cg-radius-sm)}.empty-icon[data-v-e2b37122]{font-size:var(--cg-font-size-2xl);flex-shrink:0}.empty-message[data-v-e2b37122]{flex:1}.empty-message strong[data-v-e2b37122]{display:block;color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base);margin-bottom:var(--cg-space-1)}.empty-message p[data-v-e2b37122]{margin:0;font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary);line-height:1.5}.version-mismatch[data-v-e2b37122]{display:flex;align-items:center;gap:var(--cg-space-1)}.version-actual[data-v-e2b37122]{color:var(--cg-color-error);text-decoration:line-through}.version-expected[data-v-e2b37122]{color:var(--cg-color-success)}.repair-action[data-v-e2b37122]{margin-top:var(--cg-space-4);padding-top:var(--cg-space-3);border-top:1px solid var(--cg-color-border-subtle)}.repair-action .help-text[data-v-e2b37122]{margin-top:var(--cg-space-2)}.health-section-wrapper[data-v-55fcd77f]{position:relative}.health-section-header[data-v-55fcd77f]{position:relative;display:flex;justify-content:space-between;align-items:flex-start}.show-all-button[data-v-55fcd77f]{position:absolute;top:0;right:0}.footer-title[data-v-55fcd77f]{font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-semibold);text-transform:uppercase;color:var(--cg-color-text-muted);margin:0 0 var(--cg-space-2) 0;letter-spacing:var(--cg-letter-spacing-wide)}.suggestions-content[data-v-55fcd77f]{display:flex;align-items:center;justify-content:space-between;gap:var(--cg-space-3)}.suggestions-text[data-v-55fcd77f]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-sm)}.fade-enter-active[data-v-55fcd77f],.fade-leave-active[data-v-55fcd77f]{transition:opacity var(--cg-transition-fast)}.fade-enter-from[data-v-55fcd77f],.fade-leave-to[data-v-55fcd77f]{opacity:0}.no-issues-text[data-v-55fcd77f]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}.text-input[data-v-0380d08f]{width:100%;padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-bg-primary);border:1px solid var(--cg-color-border-subtle);color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm);transition:border-color var(--cg-transition-fast),box-shadow var(--cg-transition-fast)}.text-input.monospace[data-v-0380d08f]{font-family:var(--cg-font-mono)}.text-input[data-v-0380d08f]:focus{outline:none;border-color:var(--cg-color-accent);box-shadow:0 0 8px var(--cg-shadow-accent)}.text-input[data-v-0380d08f]:disabled{opacity:.5;cursor:not-allowed}.text-input.error[data-v-0380d08f]{border-color:var(--cg-color-error)}.text-input.error[data-v-0380d08f]:focus{box-shadow:0 0 8px var(--cg-shadow-error)}.text-input[data-v-0380d08f]::placeholder{color:var(--cg-color-text-muted)}.branch-create-form[data-v-7c500394]{display:flex;flex-direction:column;gap:var(--cg-space-2);padding:var(--cg-space-3);margin-bottom:var(--cg-space-3);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle)}.form-actions[data-v-7c500394]{display:flex;gap:var(--cg-space-2)}.branch-list-item[data-v-c6581a24]{display:flex;align-items:center;padding:var(--cg-space-2) var(--cg-space-3);border-bottom:1px solid var(--cg-color-border-subtle);font-size:var(--cg-font-size-sm);transition:background var(--cg-transition-fast)}.branch-list-item[data-v-c6581a24]:last-child{border-bottom:none}.branch-list-item[data-v-c6581a24]:hover{background:var(--cg-color-bg-hover)}.branch-list-item.clickable[data-v-c6581a24]{cursor:pointer}.branch-list-item.current[data-v-c6581a24]{background:var(--cg-color-accent-muted);border-left:3px solid var(--cg-color-accent);padding-left:calc(var(--cg-space-3) - 3px)}.branch-list-item__indicator[data-v-c6581a24]{font-size:10px;margin-right:var(--cg-space-2);color:var(--cg-color-text-muted);flex-shrink:0}.branch-list-item.current .branch-list-item__indicator[data-v-c6581a24]{color:var(--cg-color-accent)}.branch-list-item__name[data-v-c6581a24]{flex:1;color:var(--cg-color-text-primary);font-family:var(--cg-font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.branch-list-item__actions[data-v-c6581a24]{display:flex;align-items:center;gap:var(--cg-space-2);flex-shrink:0}.branch-list-item__current-label[data-v-c6581a24]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);padding:var(--cg-space-1) var(--cg-space-2);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-family:var(--cg-font-mono)}.branch-list[data-v-86784ddd]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle)}.commit-list[data-v-8c5ee761]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);overflow-y:auto}.commit-list[data-v-8c5ee761]::-webkit-scrollbar{width:8px}.commit-list[data-v-8c5ee761]::-webkit-scrollbar-track{background:var(--cg-color-bg-tertiary)}.commit-list[data-v-8c5ee761]::-webkit-scrollbar-thumb{background:var(--cg-color-border-subtle);border:1px solid var(--cg-color-bg-tertiary)}.commit-list[data-v-8c5ee761]::-webkit-scrollbar-thumb:hover{background:var(--cg-color-accent)}.commit-hash[data-v-7c333cc6]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);color:var(--cg-color-info);font-weight:var(--cg-font-weight-medium, 500);flex-shrink:0}.commit-item[data-v-dd7c621b]{display:flex;align-items:baseline;gap:var(--cg-space-2);padding:var(--cg-space-2) var(--cg-space-3);border-bottom:1px solid var(--cg-color-border-subtle);position:relative;transition:background var(--cg-transition-fast),border-color var(--cg-transition-fast)}.commit-item[data-v-dd7c621b]:last-child{border-bottom:none}.commit-item.clickable[data-v-dd7c621b]{cursor:pointer}.commit-item.clickable[data-v-dd7c621b]:hover{background:var(--cg-color-bg-hover)}.commit-item:hover .commit-actions[data-v-dd7c621b]{opacity:1}.commit-message[data-v-dd7c621b]{flex:1;color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.commit-date[data-v-dd7c621b]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);white-space:nowrap;flex-shrink:0;margin-right:32px}.commit-actions[data-v-dd7c621b]{position:absolute;right:var(--cg-space-2);top:50%;transform:translateY(-50%);opacity:0;transition:opacity .15s;display:flex;gap:var(--cg-space-1)}.base-modal-overlay[data-v-8dab1081]{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--cg-color-bg-overlay);display:flex;align-items:center;justify-content:center;z-index:10003;animation:fadeIn-8dab1081 .15s ease}@keyframes fadeIn-8dab1081{0%{opacity:0}to{opacity:1}}.base-modal-content[data-v-8dab1081]{background:var(--cg-color-bg-primary);border:2px solid var(--cg-color-border);box-shadow:var(--cg-shadow-xl);max-height:80vh;width:90vw;display:flex;flex-direction:column;animation:slideIn-8dab1081 .2s ease}@keyframes slideIn-8dab1081{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.base-modal-content.sm[data-v-8dab1081]{max-width:400px}.base-modal-content.md[data-v-8dab1081]{max-width:600px}.base-modal-content.lg[data-v-8dab1081]{max-width:800px}.base-modal-content.xl[data-v-8dab1081]{max-width:1000px}.base-modal-content.fixed-height[data-v-8dab1081]{height:70vh;max-height:70vh}.base-modal-header[data-v-8dab1081]{padding:var(--cg-space-4);border-bottom:1px solid var(--cg-color-border);background:var(--cg-color-bg-tertiary);display:flex;justify-content:space-between;align-items:center;gap:var(--cg-space-2)}.base-modal-title[data-v-8dab1081]{color:var(--cg-color-accent);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-size:var(--cg-font-size-sm);margin:0;flex:1}.base-modal-close[data-v-8dab1081]{background:transparent;border:1px solid transparent;color:var(--cg-color-text-primary);cursor:pointer;padding:6px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.base-modal-close[data-v-8dab1081]:hover{background:var(--cg-color-bg-hover);border-color:var(--cg-color-border-subtle)}.base-modal-body[data-v-8dab1081]{flex:1;overflow-y:auto;padding:var(--cg-space-4)}.base-modal-body[data-v-8dab1081]::-webkit-scrollbar{width:8px}.base-modal-body[data-v-8dab1081]::-webkit-scrollbar-track{background:var(--cg-color-bg-tertiary)}.base-modal-body[data-v-8dab1081]::-webkit-scrollbar-thumb{background:var(--cg-color-border-subtle);border:1px solid var(--cg-color-bg-tertiary)}.base-modal-body[data-v-8dab1081]::-webkit-scrollbar-thumb:hover{background:var(--cg-color-accent)}.base-modal-loading[data-v-8dab1081],.base-modal-error[data-v-8dab1081]{text-align:center;padding:var(--cg-space-4);color:var(--cg-color-text-muted)}.base-modal-error[data-v-8dab1081]{color:var(--cg-color-error);border:1px solid var(--cg-color-error);background:var(--cg-color-error-muted)}.base-modal-footer[data-v-8dab1081]{padding:var(--cg-space-4);border-top:1px solid var(--cg-color-border);background:var(--cg-color-bg-tertiary);display:flex;justify-content:flex-end;gap:8px}.base-btn[data-v-f3452606]{border-radius:var(--cg-radius-md);font-family:var(--cg-font-mono);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-weight:var(--cg-font-weight-medium);cursor:pointer;transition:all var(--cg-transition-fast);display:inline-flex;align-items:center;justify-content:center;gap:6px;position:relative}.base-btn[data-v-f3452606]:disabled{opacity:.5;cursor:not-allowed}.base-btn.loading[data-v-f3452606]{pointer-events:none}.spinner[data-v-f3452606]{width:12px;height:12px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin-f3452606 .6s linear infinite}@keyframes spin-f3452606{to{transform:rotate(360deg)}}.base-btn.sm[data-v-f3452606]{padding:6px 12px;font-size:var(--cg-font-size-xs)}.base-btn.md[data-v-f3452606]{padding:8px 16px;font-size:var(--cg-font-size-sm)}.base-btn.lg[data-v-f3452606]{padding:10px 20px;font-size:var(--cg-font-size-base)}.base-btn.full-width[data-v-f3452606]{width:100%}.base-btn.primary[data-v-f3452606]{background:var(--cg-color-accent);color:var(--cg-color-text-inverse);border:none}.base-btn.primary[data-v-f3452606]:hover:not(:disabled){background:var(--cg-color-accent-hover);transform:translateY(-1px);box-shadow:0 2px 8px var(--cg-color-accent-muted)}.base-btn.secondary[data-v-f3452606]{background:transparent;color:var(--cg-color-text-secondary);border:1px solid var(--cg-color-border)}.base-btn.secondary[data-v-f3452606]:hover:not(:disabled){background:var(--cg-color-bg-hover);border-color:var(--cg-color-border-strong);color:var(--cg-color-text-primary)}.base-btn.danger[data-v-f3452606]{background:var(--cg-color-error);color:var(--cg-color-text-inverse);border:none}.base-btn.danger[data-v-f3452606]:hover:not(:disabled){background:#dc2626;transform:translateY(-1px)}.base-btn.ghost[data-v-f3452606]{background:transparent;color:var(--cg-color-text-muted);border:1px solid transparent}.base-btn.ghost[data-v-f3452606]:hover:not(:disabled){background:var(--cg-color-bg-hover);border-color:var(--cg-color-border-subtle);color:var(--cg-color-accent)}.base-btn.link[data-v-f3452606]{background:transparent;color:var(--cg-color-info);border:none;text-decoration:underline;padding:0}.base-btn.link[data-v-f3452606]:hover:not(:disabled){color:var(--cg-color-accent)}.base-title[data-v-5a01561d]{font-weight:var(--cg-font-weight-normal)}.base-title.view[data-v-5a01561d]{color:var(--cg-color-accent);font-size:var(--cg-font-size-lg);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-weight:var(--cg-font-weight-semibold);margin:0 0 var(--cg-space-4) 0}.base-title.section[data-v-5a01561d]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);margin:0 0 var(--cg-space-2) 0}.base-title.group[data-v-5a01561d]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-sm);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-weight:var(--cg-font-weight-medium);margin:0 0 var(--cg-space-2) 0}.base-title.dialog[data-v-5a01561d]{color:var(--cg-color-accent);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-size:var(--cg-font-size-sm);margin:0}.base-title-count[data-v-5a01561d]{margin-left:4px}.base-select-wrapper[data-v-7436d745]{display:inline-flex;flex-direction:column;gap:4px}.base-select-wrapper.full-width[data-v-7436d745]{width:100%}.base-select[data-v-7436d745]{padding:10px 12px;background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-md);color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm);font-family:var(--cg-font-mono);transition:all var(--cg-transition-fast);cursor:pointer;width:100%}.base-select[data-v-7436d745]:focus{outline:none;border-color:var(--cg-color-accent);box-shadow:0 0 0 2px var(--cg-color-accent-muted)}.base-select[data-v-7436d745]:disabled{opacity:.5;cursor:not-allowed}.base-select.error[data-v-7436d745]{border-color:var(--cg-color-error)}.base-select-error[data-v-7436d745]{font-size:var(--cg-font-size-xs);color:var(--cg-color-error)}.base-select[data-v-7436d745]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 12 12' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2 4L6 8L10 4' stroke='%2300d9ff' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:36px}.popover-overlay[data-v-42815ace]{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--cg-color-bg-overlay);display:flex;align-items:center;justify-content:center;z-index:10004}.popover[data-v-42815ace]{background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-md);box-shadow:var(--cg-shadow-lg);width:90%;animation:popoverFadeIn-42815ace var(--cg-transition-normal)}@keyframes popoverFadeIn-42815ace{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.popover-header[data-v-42815ace]{display:flex;justify-content:space-between;align-items:center;padding:var(--cg-space-3) var(--cg-space-4);border-bottom:1px solid var(--cg-color-border-subtle)}.popover-title[data-v-42815ace]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-semibold);margin:0}.popover-close[data-v-42815ace]{background:transparent;border:none;color:var(--cg-color-text-muted);font-size:var(--cg-font-size-lg);cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;transition:all var(--cg-transition-fast)}.popover-close[data-v-42815ace]:hover{color:var(--cg-color-text-primary)}.popover-content[data-v-42815ace]{padding:var(--cg-space-4);color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-sm);line-height:var(--cg-line-height-normal)}.popover-content[data-v-42815ace] p{margin:0 0 var(--cg-space-3) 0}.popover-content[data-v-42815ace] p:last-child{margin-bottom:0}.popover-content[data-v-42815ace] strong{color:var(--cg-color-accent);font-weight:var(--cg-font-weight-semibold)}.popover-actions[data-v-42815ace]{padding:var(--cg-space-3) var(--cg-space-4);border-top:1px solid var(--cg-color-border-subtle);display:flex;gap:var(--cg-space-2);justify-content:flex-end}.empty-message[data-v-668728e6]{text-align:center;padding:var(--cg-space-4);color:var(--cg-color-text-muted)}.detail-section[data-v-668728e6]{margin-bottom:var(--cg-space-5)}.model-card[data-v-668728e6]{border:1px solid var(--cg-color-border-subtle);background:var(--cg-color-bg-tertiary);padding:var(--cg-space-3);margin-bottom:var(--cg-space-3)}.model-header[data-v-668728e6]{display:flex;align-items:center;gap:8px;margin-bottom:var(--cg-space-2)}.model-icon[data-v-668728e6]{font-size:var(--cg-font-size-lg)}.model-name[data-v-668728e6]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-semibold)}.model-details[data-v-668728e6]{display:flex;flex-direction:column;gap:6px;margin-bottom:var(--cg-space-2)}.model-row[data-v-668728e6]{display:flex;align-items:center;gap:8px;font-size:var(--cg-font-size-sm)}.model-row .label[data-v-668728e6]{color:var(--cg-color-text-muted);min-width:80px;display:inline-flex;align-items:center;gap:4px}.model-row .value[data-v-668728e6]{color:var(--cg-color-text-secondary)}.model-row .value.success[data-v-668728e6]{color:var(--cg-color-success)}.model-row .value.error[data-v-668728e6]{color:var(--cg-color-error)}.model-row .value.warning[data-v-668728e6]{color:var(--cg-color-warning, #f59e0b)}.model-row .value.info[data-v-668728e6]{color:var(--cg-color-info, #3b82f6)}.model-row code[data-v-668728e6]{background:var(--cg-color-bg-secondary);padding:0 var(--cg-space-1);border-radius:var(--cg-radius-sm, 2px);font-family:var(--cg-font-mono, monospace);font-size:var(--cg-font-size-xs, 11px)}.model-row-nodes[data-v-668728e6]{align-items:flex-start}.node-list[data-v-668728e6]{display:flex;flex-direction:column;gap:4px;flex:1}.node-reference[data-v-668728e6]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-sm);padding:2px 0}.expand-toggle[data-v-668728e6]{background:none;border:none;color:var(--cg-color-accent);cursor:pointer;font-size:var(--cg-font-size-sm);padding:4px 0;text-align:left;margin-top:2px}.expand-toggle[data-v-668728e6]:hover{text-decoration:underline}.model-actions[data-v-668728e6]{margin-top:var(--cg-space-2)}.importance-info-list[data-v-668728e6]{margin:0;padding-left:var(--cg-space-4);color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-sm);list-style-type:"• "}.importance-info-list li[data-v-668728e6]{margin-bottom:var(--cg-space-2)}.importance-info-list strong[data-v-668728e6]{color:var(--cg-color-accent)}.node-item[data-v-668728e6]{display:flex;align-items:center;gap:8px;padding:8px;border:1px solid var(--cg-color-border-subtle);background:var(--cg-color-bg-tertiary);margin-bottom:4px;font-size:var(--cg-font-size-sm)}.node-status[data-v-668728e6]{font-weight:700;font-size:var(--cg-font-size-base)}.node-status.installed[data-v-668728e6]{color:var(--cg-color-success)}.node-status.missing[data-v-668728e6]{color:var(--cg-color-error)}.node-name[data-v-668728e6]{color:var(--cg-color-text-primary);flex:1}.node-version[data-v-668728e6]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs)}.resolution-stepper[data-v-2a7b3af8]{display:flex;flex-direction:column;gap:0}.stepper-header[data-v-2a7b3af8]{display:flex;align-items:center;justify-content:space-between;padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-bg-secondary);border-bottom:1px solid var(--cg-color-border)}.step[data-v-2a7b3af8]{display:flex;flex-direction:column;align-items:center;gap:4px;flex:1;position:relative;cursor:pointer;transition:opacity .2s}.step.disabled[data-v-2a7b3af8]{cursor:not-allowed;pointer-events:none}.step.disabled .step-indicator[data-v-2a7b3af8],.step.disabled .step-label[data-v-2a7b3af8]{opacity:.4}.step-indicator[data-v-2a7b3af8]{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--cg-color-bg-tertiary);border:2px solid var(--cg-color-border);color:var(--cg-color-text-muted);font-weight:var(--cg-font-weight-semibold);font-size:var(--cg-font-size-xs);transition:all .2s;position:relative;z-index:2}.step-indicator.state-pending[data-v-2a7b3af8]{background:var(--cg-color-bg-tertiary);border-color:var(--cg-color-border);color:var(--cg-color-text-muted)}.step-indicator.state-partial[data-v-2a7b3af8]{background:var(--cg-color-warning-muted);border-color:var(--cg-color-warning);color:var(--cg-color-warning)}.step-indicator.state-complete[data-v-2a7b3af8]{background:var(--cg-color-success);border-color:var(--cg-color-success);color:#fff}.step.active .step-indicator[data-v-2a7b3af8]{box-shadow:0 0 0 2px var(--cg-color-accent-muted);border-color:var(--cg-color-accent)}.step-label[data-v-2a7b3af8]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);text-align:center;font-weight:var(--cg-font-weight-medium)}.step.active .step-label[data-v-2a7b3af8]{color:var(--cg-color-text);font-weight:var(--cg-font-weight-semibold)}.step-connector[data-v-2a7b3af8]{position:absolute;top:14px;left:calc(50% + 14px);right:calc(-50% + 14px);height:2px;background:var(--cg-color-border);z-index:1}.stepper-content[data-v-2a7b3af8]{padding:var(--cg-space-2) var(--cg-space-3)}.confidence-badge[data-v-17ec4b80]{display:inline-flex;align-items:center;justify-content:center;padding:var(--cg-spacing-xs) var(--cg-spacing-sm);border-radius:var(--cg-border-radius-sm);font-weight:var(--cg-font-weight-semibold);white-space:nowrap}.confidence-badge.sm[data-v-17ec4b80]{font-size:var(--cg-font-size-xs);padding:2px var(--cg-spacing-xs)}.confidence-badge.md[data-v-17ec4b80]{font-size:var(--cg-font-size-sm)}.confidence-high[data-v-17ec4b80]{background-color:var(--cg-color-success-bg);color:var(--cg-color-success);border:1px solid var(--cg-color-success)}.confidence-medium[data-v-17ec4b80]{background-color:var(--cg-color-warning-bg);color:var(--cg-color-warning);border:1px solid var(--cg-color-warning)}.confidence-low[data-v-17ec4b80]{background-color:var(--cg-color-error-bg);color:var(--cg-color-error);border:1px solid var(--cg-color-error)}.node-resolution-item[data-v-c2997d1d]{border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-lg);background:var(--cg-color-bg-secondary);overflow:hidden;transition:all var(--cg-transition-fast)}.node-resolution-item.ambiguous[data-v-c2997d1d]{border-color:var(--cg-color-warning)}.node-resolution-item.resolved[data-v-c2997d1d]{border-color:var(--cg-color-success);background:var(--cg-color-success-muted)}.node-info[data-v-c2997d1d]{display:flex;align-items:center;justify-content:space-between;gap:var(--cg-space-2);padding:var(--cg-space-2) var(--cg-space-3);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);background:var(--cg-color-bg-tertiary);border-bottom:1px solid var(--cg-color-border-subtle)}.node-info-text[data-v-c2997d1d]{flex:1;min-width:0}.node-info code[data-v-c2997d1d]{font-family:var(--cg-font-mono);color:var(--cg-color-text-secondary)}.status-badge[data-v-c2997d1d]{padding:var(--cg-space-1) var(--cg-space-2);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-medium);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);white-space:nowrap;flex-shrink:0}.status-badge.unresolved[data-v-c2997d1d]{background:var(--cg-color-error-muted);color:var(--cg-color-error)}.status-badge.ambiguous[data-v-c2997d1d]{background:var(--cg-color-warning-muted);color:var(--cg-color-warning)}.status-badge.resolved[data-v-c2997d1d]{background:var(--cg-color-success-muted);color:var(--cg-color-success)}.status-badge.optional[data-v-c2997d1d]{background:var(--cg-color-info-muted);color:var(--cg-color-info)}.status-badge.skip[data-v-c2997d1d]{background:var(--cg-color-bg-hover);color:var(--cg-color-text-muted)}.item-body[data-v-c2997d1d]{padding:var(--cg-space-3)}.resolved-state[data-v-c2997d1d]{display:flex;justify-content:center}.multiple-options[data-v-c2997d1d]{display:flex;flex-direction:column;gap:var(--cg-space-3)}.options-prompt[data-v-c2997d1d]{margin:0;font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary)}.options-list[data-v-c2997d1d]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.option-card[data-v-c2997d1d]{display:flex;gap:var(--cg-space-2);padding:var(--cg-space-2) var(--cg-space-3);border:1px solid var(--cg-color-border-subtle);border-radius:var(--cg-radius-md);background:var(--cg-color-bg-primary);cursor:pointer;transition:all var(--cg-transition-fast)}.option-card[data-v-c2997d1d]:hover{border-color:var(--cg-color-accent);background:var(--cg-color-bg-hover)}.option-card.selected[data-v-c2997d1d]{border-color:var(--cg-color-success);background:var(--cg-color-success-muted)}.option-card input[type=radio][data-v-c2997d1d]{margin-top:4px;accent-color:var(--cg-color-accent)}.option-content[data-v-c2997d1d]{flex:1;min-width:0}.option-header[data-v-c2997d1d]{display:flex;align-items:center;gap:var(--cg-space-2);flex-wrap:wrap}.option-package-id[data-v-c2997d1d]{font-family:var(--cg-font-mono);font-weight:var(--cg-font-weight-semibold);font-size:var(--cg-font-size-sm);color:var(--cg-color-text-primary)}.option-title[data-v-c2997d1d]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-secondary)}.option-meta[data-v-c2997d1d]{display:flex;gap:var(--cg-space-2);align-items:center;margin-top:var(--cg-space-1)}.installed-badge[data-v-c2997d1d]{padding:2px var(--cg-space-2);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-medium);background:var(--cg-color-success-muted);color:var(--cg-color-success)}.action-buttons[data-v-c2997d1d]{display:flex;flex-wrap:wrap;gap:var(--cg-space-2);justify-content:flex-start;padding-top:var(--cg-space-2);border-top:1px solid var(--cg-color-border-subtle)}.unresolved[data-v-c2997d1d]{display:flex;flex-direction:column;gap:var(--cg-space-3)}.unresolved-message[data-v-c2997d1d]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-md);color:var(--cg-color-warning);font-size:var(--cg-font-size-sm)}.warning-icon[data-v-c2997d1d]{font-size:var(--cg-font-size-lg)}.searching-state[data-v-c2997d1d]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-3);color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}.searching-spinner[data-v-c2997d1d]{width:16px;height:16px;border:2px solid var(--cg-color-border);border-top-color:var(--cg-color-accent);border-radius:50%;animation:spin-c2997d1d .8s linear infinite}@keyframes spin-c2997d1d{to{transform:rotate(360deg)}}.option-description[data-v-c2997d1d]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);margin-top:2px}.item-navigator[data-v-74af7920]{display:flex;align-items:center;justify-content:space-between;gap:var(--cg-space-3);padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-bg-tertiary);border-radius:var(--cg-radius-sm);border:1px solid var(--cg-color-border-subtle)}.nav-item-info[data-v-74af7920]{display:flex;align-items:center;gap:var(--cg-space-2);flex:1;min-width:0;overflow:hidden}.item-name[data-v-74af7920]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm);color:var(--cg-color-accent);background:var(--cg-color-bg-primary);padding:var(--cg-space-1) var(--cg-space-2);border-radius:var(--cg-radius-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:default}.nav-controls[data-v-74af7920]{display:flex;align-items:center;gap:var(--cg-space-2);flex-shrink:0}.nav-arrows[data-v-74af7920]{display:flex;gap:4px}.nav-arrow[data-v-74af7920]{background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary);width:48px;height:24px;border-radius:var(--cg-radius-sm);cursor:pointer;font-size:var(--cg-font-size-sm);display:flex;align-items:center;justify-content:center;transition:all var(--cg-transition-fast)}.nav-arrow[data-v-74af7920]:first-child{border-radius:var(--cg-radius-sm) 0 0 var(--cg-radius-sm)}.nav-arrow[data-v-74af7920]:last-child{border-radius:0 var(--cg-radius-sm) var(--cg-radius-sm) 0}.nav-arrow[data-v-74af7920]:hover:not(:disabled){background:var(--cg-color-bg-hover);border-color:var(--cg-color-accent);color:var(--cg-color-accent)}.nav-arrow[data-v-74af7920]:disabled{opacity:.4;cursor:not-allowed}.nav-position[data-v-74af7920]{font-size:var(--cg-font-size-xs);font-family:var(--cg-font-mono);color:var(--cg-color-text-muted);min-width:36px;text-align:right}.base-input-wrapper[data-v-9ba02cdc]{display:inline-flex;flex-direction:column;gap:4px}.base-input-wrapper.full-width[data-v-9ba02cdc]{width:100%}.base-input[data-v-9ba02cdc]{padding:10px 12px;background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-md);color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm);font-family:var(--cg-font-mono);transition:all var(--cg-transition-fast);width:100%}.base-input[data-v-9ba02cdc]:focus{outline:none;border-color:var(--cg-color-accent);box-shadow:0 0 0 2px var(--cg-color-accent-muted)}.base-input[data-v-9ba02cdc]:disabled{opacity:.5;cursor:not-allowed}.base-input.error[data-v-9ba02cdc]{border-color:var(--cg-color-error)}.base-input-error[data-v-9ba02cdc]{font-size:var(--cg-font-size-xs);color:var(--cg-color-error)}.node-resolution-step[data-v-281581bc]{display:flex;flex-direction:column;gap:var(--cg-space-2);min-height:400px}.auto-resolved-section[data-v-281581bc]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.section-header[data-v-281581bc]{display:flex;justify-content:space-between;align-items:center;gap:var(--cg-space-3)}.section-info[data-v-281581bc]{flex:1}.section-title[data-v-281581bc]{font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-primary);margin:0}.section-description[data-v-281581bc]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);margin:2px 0 0}.resolved-packages-list[data-v-281581bc]{display:flex;flex-direction:column;gap:var(--cg-space-1);max-height:200px;overflow-y:auto}.resolved-package-item[data-v-281581bc]{display:flex;justify-content:space-between;align-items:center;padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-bg-secondary);border-radius:var(--cg-radius-sm);border-left:3px solid var(--cg-color-success)}.package-info[data-v-281581bc]{display:flex;align-items:center;gap:var(--cg-space-3)}.package-id[data-v-281581bc]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm);color:var(--cg-color-accent)}.node-count[data-v-281581bc]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.package-actions[data-v-281581bc]{display:flex;align-items:center;gap:var(--cg-space-2)}.status-badge[data-v-281581bc]{font-size:var(--cg-font-size-xs);font-family:var(--cg-font-mono);padding:2px 6px;border-radius:var(--cg-radius-sm);text-transform:uppercase;letter-spacing:.05em}.status-badge.install[data-v-281581bc]{background:var(--cg-color-success-muted);color:var(--cg-color-success)}.status-badge.skip[data-v-281581bc]{background:var(--cg-color-bg-hover);color:var(--cg-color-text-muted)}.toggle-skip-btn[data-v-281581bc]{font-size:var(--cg-font-size-xs);padding:var(--cg-space-1) var(--cg-space-2);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-sm);color:var(--cg-color-text-secondary);cursor:pointer;transition:all var(--cg-transition-fast)}.toggle-skip-btn[data-v-281581bc]:hover{background:var(--cg-color-bg-hover);color:var(--cg-color-text-primary)}.section-divider[data-v-281581bc]{height:1px;background:var(--cg-color-border);margin:var(--cg-space-2) 0}.step-header[data-v-281581bc]{display:flex;justify-content:space-between;align-items:center;gap:var(--cg-space-3);padding-bottom:var(--cg-space-2);border-bottom:1px solid var(--cg-color-border)}.step-info[data-v-281581bc]{flex:1}.step-title[data-v-281581bc]{font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-primary);margin:0}.step-description[data-v-281581bc]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);margin:2px 0 0}.stat-badge[data-v-281581bc]{font-size:var(--cg-font-size-xs);font-family:var(--cg-font-mono);padding:4px 8px;border-radius:var(--cg-radius-sm);background:var(--cg-color-bg-tertiary);color:var(--cg-color-text-secondary);border:1px solid var(--cg-color-border-subtle);white-space:nowrap}.step-body[data-v-281581bc]{flex:1;overflow-y:auto}.empty-state[data-v-281581bc]{flex:1;display:flex;align-items:center;justify-content:center;color:var(--cg-color-text-muted)}.node-resolution-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:10010}.node-search-modal{width:90%;max-width:500px;height:75vh;background:var(--cg-color-bg-primary, #1a1a2e);border:1px solid var(--cg-color-border, #333);border-radius:var(--cg-radius-lg, 8px);box-shadow:0 25px 50px -12px #00000080;display:flex;flex-direction:column;overflow:hidden}.node-manual-entry-modal{width:90%;max-width:500px;background:var(--cg-color-bg-primary, #1a1a2e);border:1px solid var(--cg-color-border, #333);border-radius:var(--cg-radius-lg, 8px);box-shadow:0 25px 50px -12px #00000080;display:flex;flex-direction:column;overflow:hidden}.node-modal-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--cg-color-border, #333);background:var(--cg-color-bg-secondary, #252542)}.node-modal-header h4{margin:0;font-size:14px;font-weight:600;color:var(--cg-color-text-primary, #fff)}.node-modal-close-btn{background:none;border:none;font-size:18px;color:var(--cg-color-text-muted, #888);cursor:pointer;padding:4px;border-radius:4px;transition:all .15s ease}.node-modal-close-btn:hover{color:var(--cg-color-text-primary, #fff);background:var(--cg-color-bg-hover, #333)}.node-modal-body{padding:16px;flex:1;display:flex;flex-direction:column;gap:12px;min-height:0;overflow:hidden}.node-modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:8px}.node-search-result-item{padding:8px 12px;border:1px solid var(--cg-color-border-subtle, #444);border-radius:6px;background:var(--cg-color-bg-secondary, #252542);cursor:pointer;transition:all .15s ease}.node-search-result-item:hover{border-color:var(--cg-color-accent, #7c3aed);background:var(--cg-color-bg-hover, #333)}.node-result-header{display:flex;align-items:center;gap:8px;margin-bottom:4px}.node-result-package-id{font-family:var(--cg-font-mono, monospace);font-weight:600;font-size:13px;color:var(--cg-color-accent, #7c3aed)}.node-result-description{font-size:12px;color:var(--cg-color-text-muted, #888)}.node-search-results-container{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.node-search-results{flex:1;display:flex;flex-direction:column;gap:8px;overflow-y:auto}.node-empty-state{flex:1;display:flex;align-items:center;justify-content:center;color:var(--cg-color-text-muted, #888);font-size:13px}.model-resolution-item[data-v-8a82fefa]{border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-lg);background:var(--cg-color-bg-secondary);overflow:hidden;transition:all var(--cg-transition-fast)}.model-resolution-item.ambiguous[data-v-8a82fefa]{border-color:var(--cg-color-warning)}.model-resolution-item.resolved[data-v-8a82fefa]{border-color:var(--cg-color-success);background:var(--cg-color-success-muted)}.node-info[data-v-8a82fefa]{display:flex;align-items:center;justify-content:space-between;gap:var(--cg-space-2);padding:var(--cg-space-2) var(--cg-space-3);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);background:var(--cg-color-bg-tertiary);border-bottom:1px solid var(--cg-color-border-subtle)}.node-info-text[data-v-8a82fefa]{flex:1;min-width:0}.node-info code[data-v-8a82fefa]{font-family:var(--cg-font-mono);color:var(--cg-color-text-secondary)}.status-badge[data-v-8a82fefa]{padding:var(--cg-space-1) var(--cg-space-2);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-medium);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);white-space:nowrap;flex-shrink:0}.status-badge.unresolved[data-v-8a82fefa]{background:var(--cg-color-error-muted);color:var(--cg-color-error)}.status-badge.ambiguous[data-v-8a82fefa]{background:var(--cg-color-warning-muted);color:var(--cg-color-warning)}.status-badge.resolved[data-v-8a82fefa]{background:var(--cg-color-success-muted);color:var(--cg-color-success)}.status-badge.optional[data-v-8a82fefa]{background:var(--cg-color-info-muted);color:var(--cg-color-info)}.status-badge.skip[data-v-8a82fefa]{background:var(--cg-color-bg-hover);color:var(--cg-color-text-muted)}.item-body[data-v-8a82fefa]{padding:var(--cg-space-3)}.resolved-state[data-v-8a82fefa]{display:flex;justify-content:center}.multiple-options[data-v-8a82fefa]{display:flex;flex-direction:column;gap:var(--cg-space-3)}.options-prompt[data-v-8a82fefa]{margin:0;font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary)}.options-list[data-v-8a82fefa]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.option-card[data-v-8a82fefa]{display:flex;gap:var(--cg-space-2);padding:var(--cg-space-2) var(--cg-space-3);border:1px solid var(--cg-color-border-subtle);border-radius:var(--cg-radius-md);background:var(--cg-color-bg-primary);cursor:pointer;transition:all var(--cg-transition-fast)}.option-card[data-v-8a82fefa]:hover{border-color:var(--cg-color-accent);background:var(--cg-color-bg-hover)}.option-card.selected[data-v-8a82fefa]{border-color:var(--cg-color-success);background:var(--cg-color-success-muted)}.option-card input[type=radio][data-v-8a82fefa]{margin-top:4px;accent-color:var(--cg-color-accent)}.option-content[data-v-8a82fefa]{flex:1;min-width:0}.option-header[data-v-8a82fefa]{display:flex;align-items:center;gap:var(--cg-space-2);flex-wrap:wrap}.option-filename[data-v-8a82fefa]{font-family:var(--cg-font-mono);font-weight:var(--cg-font-weight-semibold);font-size:var(--cg-font-size-sm);color:var(--cg-color-text-primary)}.option-meta[data-v-8a82fefa]{display:flex;gap:var(--cg-space-2);align-items:center;margin-top:var(--cg-space-1);font-size:var(--cg-font-size-xs)}.option-size[data-v-8a82fefa]{font-family:var(--cg-font-mono);color:var(--cg-color-text-muted)}.option-category[data-v-8a82fefa]{color:var(--cg-color-text-secondary);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.option-path[data-v-8a82fefa]{margin-top:var(--cg-space-1);font-size:var(--cg-font-size-xs);font-family:var(--cg-font-mono);color:var(--cg-color-text-muted)}.action-buttons[data-v-8a82fefa]{display:flex;flex-wrap:wrap;gap:var(--cg-space-2);justify-content:flex-start;padding-top:var(--cg-space-2);border-top:1px solid var(--cg-color-border-subtle)}.unresolved[data-v-8a82fefa]{display:flex;flex-direction:column;gap:var(--cg-space-3)}.unresolved-message[data-v-8a82fefa]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-md);color:var(--cg-color-warning);font-size:var(--cg-font-size-sm)}.warning-icon[data-v-8a82fefa]{font-size:var(--cg-font-size-lg)}.model-resolution-step[data-v-c6acbada]{display:flex;flex-direction:column;gap:var(--cg-space-2);min-height:400px}.step-header[data-v-c6acbada]{display:flex;justify-content:space-between;align-items:center;gap:var(--cg-space-3);padding-bottom:var(--cg-space-2);border-bottom:1px solid var(--cg-color-border)}.step-info[data-v-c6acbada]{flex:1}.step-title[data-v-c6acbada]{font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-primary);margin:0}.step-description[data-v-c6acbada]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);margin:2px 0 0}.stat-badge[data-v-c6acbada]{font-size:var(--cg-font-size-xs);font-family:var(--cg-font-mono);padding:4px 8px;border-radius:var(--cg-radius-sm);background:var(--cg-color-bg-tertiary);color:var(--cg-color-text-secondary);border:1px solid var(--cg-color-border-subtle);white-space:nowrap}.step-body[data-v-c6acbada]{flex:1;overflow-y:auto}.empty-state[data-v-c6acbada]{flex:1;display:flex;align-items:center;justify-content:center;color:var(--cg-color-text-muted)}.model-resolution-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:10010}.model-search-modal,.model-download-url-modal{width:90%;max-width:500px;max-height:80vh;background:var(--cg-color-bg-primary, #1a1a2e);border:1px solid var(--cg-color-border, #333);border-radius:var(--cg-radius-lg, 8px);box-shadow:0 25px 50px -12px #00000080;display:flex;flex-direction:column;overflow:hidden}.model-modal-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--cg-color-border, #333);background:var(--cg-color-bg-secondary, #252542)}.model-modal-header h4{margin:0;font-size:14px;font-weight:600;color:var(--cg-color-text-primary, #fff)}.model-modal-close-btn{background:none;border:none;font-size:18px;color:var(--cg-color-text-muted, #888);cursor:pointer;padding:4px;border-radius:4px;transition:all .15s ease}.model-modal-close-btn:hover{color:var(--cg-color-text-primary, #fff);background:var(--cg-color-bg-hover, #333)}.model-modal-body{padding:16px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:12px}.model-input-group{display:flex;flex-direction:column;gap:4px}.model-input-label{font-size:12px;font-weight:500;color:var(--cg-color-text-secondary, #aaa)}.model-modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:8px}.model-search-results{display:flex;flex-direction:column;gap:8px}.model-search-result-item{padding:8px 12px;border:1px solid var(--cg-color-border-subtle, #444);border-radius:6px;background:var(--cg-color-bg-secondary, #252542);cursor:pointer;transition:all .15s ease}.model-search-result-item:hover{border-color:var(--cg-color-accent, #7c3aed);background:var(--cg-color-bg-hover, #333)}.model-result-header{margin-bottom:4px}.model-result-filename{font-family:var(--cg-font-mono, monospace);font-weight:600;font-size:13px;color:var(--cg-color-accent, #7c3aed)}.model-result-meta{display:flex;gap:8px;font-size:12px;color:var(--cg-color-text-muted, #888);margin-bottom:4px}.model-result-category{text-transform:uppercase;letter-spacing:.05em}.model-result-size{font-family:var(--cg-font-mono, monospace)}.model-result-path{font-size:12px;font-family:var(--cg-font-mono, monospace);color:var(--cg-color-text-muted, #888)}.model-no-results,.model-searching{padding:16px;text-align:center;color:var(--cg-color-text-muted, #888);font-size:13px}.applying-step[data-v-5efaae58]{padding:var(--cg-space-4)}.phase-content[data-v-5efaae58]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.phase-header[data-v-5efaae58]{display:flex;align-items:center;gap:var(--cg-space-3)}.phase-icon[data-v-5efaae58]{font-size:var(--cg-font-size-xl)}.phase-icon.success[data-v-5efaae58]{color:var(--cg-color-success)}.phase-icon.error[data-v-5efaae58]{color:var(--cg-color-error)}.phase-icon.warning[data-v-5efaae58]{color:var(--cg-color-warning)}.phase-title[data-v-5efaae58]{margin:0;font-size:var(--cg-font-size-lg);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-primary)}.phase-description[data-v-5efaae58]{margin:0;color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}.loading-spinner[data-v-5efaae58]{width:24px;height:24px;border:3px solid var(--cg-color-border);border-top-color:var(--cg-color-accent);border-radius:50%;animation:spin-5efaae58 .8s linear infinite}@keyframes spin-5efaae58{to{transform:rotate(360deg)}}.completion-summary[data-v-5efaae58]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.summary-item[data-v-5efaae58]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-2) var(--cg-space-3);border-radius:var(--cg-radius-md);font-size:var(--cg-font-size-sm)}.summary-item.success[data-v-5efaae58]{background:var(--cg-color-success-muted);color:var(--cg-color-success)}.summary-item.info[data-v-5efaae58]{background:var(--cg-color-info-muted);color:var(--cg-color-info)}.summary-note[data-v-5efaae58]{margin:0;font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);font-style:italic}.summary-icon[data-v-5efaae58]{font-size:var(--cg-font-size-base)}.phase-content.error .error-message[data-v-5efaae58]{margin:0;padding:var(--cg-space-3);background:var(--cg-color-error-muted);border:1px solid var(--cg-color-error);border-radius:var(--cg-radius-md);color:var(--cg-color-error);font-size:var(--cg-font-size-sm);font-family:var(--cg-font-mono)}.summary-item.error[data-v-5efaae58]{background:var(--cg-color-error-muted);color:var(--cg-color-error)}.overall-progress[data-v-5efaae58]{display:flex;align-items:center;gap:var(--cg-space-3);margin-bottom:var(--cg-space-2)}.progress-bar[data-v-5efaae58]{flex:1;height:6px;background:var(--cg-color-bg-tertiary);border-radius:var(--cg-radius-full);overflow:hidden}.progress-fill[data-v-5efaae58]{height:100%;background:var(--cg-color-accent);border-radius:var(--cg-radius-full);transition:width var(--cg-transition-fast)}.progress-label[data-v-5efaae58]{font-size:var(--cg-font-size-xs);font-family:var(--cg-font-mono);color:var(--cg-color-text-muted);white-space:nowrap}.install-list[data-v-5efaae58]{display:flex;flex-direction:column;gap:var(--cg-space-1);padding:var(--cg-space-2);background:var(--cg-color-bg-secondary);border-radius:var(--cg-radius-sm);max-height:150px;overflow-y:auto}.install-item[data-v-5efaae58]{display:flex;align-items:center;gap:var(--cg-space-2);font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary);padding:var(--cg-space-1) var(--cg-space-2);border-radius:var(--cg-radius-sm);border-left:3px solid transparent}.install-item.pending[data-v-5efaae58]{border-left-color:var(--cg-color-border)}.install-item.installing[data-v-5efaae58]{border-left-color:var(--cg-color-accent);background:var(--cg-color-bg-tertiary)}.install-item.complete[data-v-5efaae58]{border-left-color:var(--cg-color-success)}.install-item.failed[data-v-5efaae58]{border-left-color:var(--cg-color-error)}.install-icon[data-v-5efaae58]{width:16px;text-align:center}.install-item.pending .install-icon[data-v-5efaae58]{color:var(--cg-color-text-muted)}.install-item.installing .install-icon[data-v-5efaae58]{color:var(--cg-color-accent)}.install-item.complete .install-icon[data-v-5efaae58]{color:var(--cg-color-success)}.install-item.failed .install-icon[data-v-5efaae58]{color:var(--cg-color-error)}.install-icon .spinner[data-v-5efaae58]{display:inline-block;animation:spin-5efaae58 1s linear infinite}.install-item code[data-v-5efaae58]{font-family:var(--cg-font-mono);color:var(--cg-color-text-primary)}.install-error[data-v-5efaae58]{font-size:var(--cg-font-size-xs);color:var(--cg-color-error);margin-left:auto}.restart-prompt[data-v-5efaae58]{margin-top:var(--cg-space-4);display:flex;flex-direction:column;gap:var(--cg-space-3)}.restart-warning[data-v-5efaae58]{display:flex;align-items:flex-start;gap:var(--cg-space-3);padding:var(--cg-space-3);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-md);color:var(--cg-color-warning)}.restart-warning .warning-icon[data-v-5efaae58]{font-size:var(--cg-font-size-lg);flex-shrink:0}.restart-warning .warning-content[data-v-5efaae58]{display:flex;flex-direction:column;gap:var(--cg-space-1)}.restart-warning .warning-content strong[data-v-5efaae58]{font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold)}.restart-warning .warning-content p[data-v-5efaae58]{margin:0;font-size:var(--cg-font-size-xs);color:var(--cg-color-text-secondary)}.restart-button[data-v-5efaae58]{align-self:flex-end;padding:var(--cg-space-2) var(--cg-space-4);background:var(--cg-color-warning);color:var(--cg-color-bg-primary);border:none;border-radius:var(--cg-radius-md);font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);cursor:pointer;transition:all var(--cg-transition-fast)}.restart-button[data-v-5efaae58]:hover{filter:brightness(1.1)}.failed-list[data-v-5efaae58]{display:flex;flex-direction:column;gap:var(--cg-space-1);padding:var(--cg-space-2);background:var(--cg-color-error-muted);border:1px solid var(--cg-color-error);border-radius:var(--cg-radius-md);max-height:150px;overflow-y:auto}.failed-item[data-v-5efaae58]{display:flex;flex-direction:column;gap:var(--cg-space-1);padding:var(--cg-space-1) var(--cg-space-2);background:var(--cg-color-bg-primary);border-radius:var(--cg-radius-sm)}.failed-node-id[data-v-5efaae58]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm);color:var(--cg-color-error)}.failed-error[data-v-5efaae58]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);word-break:break-word}.retry-button[data-v-5efaae58]{align-self:flex-start;margin-top:var(--cg-space-2);padding:var(--cg-space-2) var(--cg-space-4);background:var(--cg-color-accent);color:var(--cg-color-bg-primary);border:none;border-radius:var(--cg-radius-md);font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);cursor:pointer;transition:all var(--cg-transition-fast)}.retry-button[data-v-5efaae58]:hover{filter:brightness(1.1)}.loading-state[data-v-40d8d5a8]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--cg-space-8);gap:var(--cg-space-3);color:var(--cg-color-text-muted)}.loading-spinner[data-v-40d8d5a8]{width:32px;height:32px;border:3px solid var(--cg-color-border);border-top-color:var(--cg-color-accent);border-radius:50%;animation:spin-40d8d5a8 .8s linear infinite}@keyframes spin-40d8d5a8{to{transform:rotate(360deg)}}.wizard-content[data-v-40d8d5a8]{display:flex;flex-direction:column;gap:0}.step-content[data-v-40d8d5a8]{padding:var(--cg-space-3)}.analysis-summary[data-v-40d8d5a8]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.analysis-header[data-v-40d8d5a8],.review-header[data-v-40d8d5a8]{margin-bottom:var(--cg-space-2)}.summary-title[data-v-40d8d5a8]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-lg);font-weight:var(--cg-font-weight-semibold);margin:0 0 var(--cg-space-1) 0}.summary-description[data-v-40d8d5a8]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);margin:0}.stats-grid[data-v-40d8d5a8]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--cg-space-3)}.stat-card[data-v-40d8d5a8]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-lg);padding:var(--cg-space-3)}.stat-header[data-v-40d8d5a8]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-semibold);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);margin-bottom:var(--cg-space-2)}.stat-items[data-v-40d8d5a8]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.stat-item[data-v-40d8d5a8]{display:flex;align-items:center;gap:var(--cg-space-2);font-size:var(--cg-font-size-sm)}.stat-item.success[data-v-40d8d5a8]{color:var(--cg-color-success)}.stat-item.warning[data-v-40d8d5a8]{color:var(--cg-color-warning)}.stat-item.error[data-v-40d8d5a8]{color:var(--cg-color-error)}.stat-item.info[data-v-40d8d5a8]{color:var(--cg-color-info)}.stat-icon[data-v-40d8d5a8]{font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-bold)}.stat-count[data-v-40d8d5a8]{font-family:var(--cg-font-mono);font-weight:var(--cg-font-weight-semibold)}.stat-label[data-v-40d8d5a8]{color:inherit;opacity:.8}.status-message[data-v-40d8d5a8]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-3);border-radius:var(--cg-radius-md);font-size:var(--cg-font-size-sm)}.status-message.warning[data-v-40d8d5a8]{background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);color:var(--cg-color-warning)}.status-message.success[data-v-40d8d5a8]{background:var(--cg-color-success-muted);border:1px solid var(--cg-color-success);color:var(--cg-color-success)}.status-message.info[data-v-40d8d5a8]{background:var(--cg-color-info-muted);border:1px solid var(--cg-color-info);color:var(--cg-color-info)}.status-icon[data-v-40d8d5a8]{font-size:var(--cg-font-size-lg)}.category-mismatch-section[data-v-40d8d5a8]{margin-top:var(--cg-space-3);padding:var(--cg-space-3);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-md)}.section-subtitle[data-v-40d8d5a8]{color:var(--cg-color-warning);font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);margin:0 0 var(--cg-space-2) 0}.mismatch-list[data-v-40d8d5a8]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.mismatch-item[data-v-40d8d5a8]{display:flex;align-items:center;gap:var(--cg-space-2);font-size:var(--cg-font-size-sm);flex-wrap:wrap}.mismatch-path[data-v-40d8d5a8]{font-family:var(--cg-font-mono);color:var(--cg-color-error)}.mismatch-arrow[data-v-40d8d5a8]{color:var(--cg-color-text-muted)}.mismatch-target[data-v-40d8d5a8]{font-family:var(--cg-font-mono);color:var(--cg-color-success)}.review-summary[data-v-40d8d5a8]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.review-stats[data-v-40d8d5a8]{display:flex;gap:var(--cg-space-4);padding:var(--cg-space-3);background:var(--cg-color-bg-tertiary);border-radius:var(--cg-radius-lg)}.review-stat[data-v-40d8d5a8]{display:flex;flex-direction:column;align-items:center;flex:1}.review-stat .stat-value[data-v-40d8d5a8]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xl);font-weight:var(--cg-font-weight-bold);color:var(--cg-color-text-primary)}.review-stat .stat-label[data-v-40d8d5a8]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.review-section[data-v-40d8d5a8]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.section-title[data-v-40d8d5a8]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-semibold);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);margin:0;padding-bottom:var(--cg-space-1);border-bottom:1px solid var(--cg-color-border-subtle)}.review-items[data-v-40d8d5a8]{display:flex;flex-direction:column;gap:var(--cg-space-1)}.review-item[data-v-40d8d5a8]{display:flex;justify-content:space-between;align-items:center;padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-bg-secondary);border-radius:var(--cg-radius-sm)}.item-name[data-v-40d8d5a8]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);color:var(--cg-color-accent);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:60%}.item-choice[data-v-40d8d5a8]{display:flex;gap:var(--cg-space-2)}.choice-badge[data-v-40d8d5a8]{padding:var(--cg-space-1) var(--cg-space-2);font-size:var(--cg-font-size-xs);font-family:var(--cg-font-mono);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);border-radius:var(--cg-radius-sm)}.choice-badge.install[data-v-40d8d5a8],.choice-badge.download[data-v-40d8d5a8]{background:var(--cg-color-success-muted);color:var(--cg-color-success)}.choice-badge.optional[data-v-40d8d5a8]{background:var(--cg-color-info-muted);color:var(--cg-color-info)}.choice-badge.skip[data-v-40d8d5a8]{background:var(--cg-color-bg-hover);color:var(--cg-color-text-muted)}.choice-badge.pending[data-v-40d8d5a8]{background:var(--cg-color-bg-tertiary);color:var(--cg-color-text-muted);font-style:italic}.no-choices[data-v-40d8d5a8]{padding:var(--cg-space-4);background:var(--cg-color-bg-secondary);border-radius:var(--cg-radius-md);color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);text-align:center}.download-details .download-item[data-v-40d8d5a8]{flex-direction:column;align-items:flex-start;gap:var(--cg-space-2)}.download-info[data-v-40d8d5a8]{display:flex;flex-direction:column;gap:var(--cg-space-1);width:100%}.download-meta[data-v-40d8d5a8]{display:flex;flex-wrap:wrap;gap:var(--cg-space-2);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.download-path[data-v-40d8d5a8]{font-family:var(--cg-font-mono);color:var(--cg-color-text-secondary)}.download-url[data-v-40d8d5a8]{font-family:var(--cg-font-mono);color:var(--cg-color-info);cursor:help;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.footer-spacer[data-v-40d8d5a8]{flex:1}.search-input-wrapper[data-v-266f857a]{position:relative;width:100%}.search-input[data-v-266f857a]{width:100%;padding:var(--cg-space-2) var(--cg-space-3);padding-right:var(--cg-space-8);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);color:var(--cg-color-text-primary);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm)}.search-input[data-v-266f857a]:focus{outline:none;border-color:var(--cg-color-accent);box-shadow:0 0 8px var(--cg-shadow-accent)}.clear-button[data-v-266f857a]{position:absolute;right:var(--cg-space-2);top:50%;transform:translateY(-50%);background:transparent;border:none;color:var(--cg-color-text-muted);cursor:pointer;padding:var(--cg-space-1);font-size:var(--cg-font-size-sm);display:flex;align-items:center;justify-content:center;transition:color var(--cg-transition-fast)}.clear-button[data-v-266f857a]:hover{color:var(--cg-color-text-primary)}.search-bar[data-v-3d51bbfd]{margin-bottom:var(--cg-space-2)}.section-group[data-v-c48e33ed]{margin-bottom:var(--cg-space-4)}.section-content[data-v-c48e33ed]{margin-top:var(--cg-space-2)}.item-card[data-v-cc435e0e]{border:1px solid var(--cg-color-border-subtle);background:var(--cg-color-bg-tertiary);padding:var(--cg-space-3);margin-bottom:var(--cg-space-2);border-left-width:3px;border-left-color:transparent}.item-card.compact[data-v-cc435e0e]{padding:var(--cg-space-2)}.item-card.clickable[data-v-cc435e0e]{cursor:pointer}.item-card.clickable[data-v-cc435e0e]:hover{background:var(--cg-color-bg-hover)}.item-card.status-broken[data-v-cc435e0e]{border-left-color:var(--cg-color-error)}.item-card.status-new[data-v-cc435e0e]{border-left-color:var(--cg-color-info)}.item-card.status-modified[data-v-cc435e0e]{border-left-color:var(--cg-color-warning)}.item-card.status-synced[data-v-cc435e0e]{border-left-color:var(--cg-color-success)}.item-card.status-missing[data-v-cc435e0e]{border-left-color:var(--cg-color-warning)}.item-card.status-deleted[data-v-cc435e0e]{border-left-color:var(--cg-color-error)}.item-header[data-v-cc435e0e]{display:flex;align-items:flex-start;gap:var(--cg-space-2);margin-bottom:var(--cg-space-2)}.item-header[data-v-cc435e0e]:last-child{margin-bottom:0}.item-icon[data-v-cc435e0e]{font-size:var(--cg-font-size-xl);flex-shrink:0}.item-info[data-v-cc435e0e]{flex:1;min-width:0}.item-title[data-v-cc435e0e]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base);margin-bottom:var(--cg-space-1)}.item-subtitle[data-v-cc435e0e]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs)}.item-details[data-v-cc435e0e]{display:flex;flex-direction:column;gap:var(--cg-space-1);margin-bottom:var(--cg-space-2)}.item-details[data-v-cc435e0e]:last-child{margin-bottom:0}.item-actions[data-v-cc435e0e]{display:flex;gap:var(--cg-space-2);flex-wrap:wrap}.loading-state[data-v-ad8436c9]{text-align:center;padding:var(--cg-space-8) var(--cg-space-6);color:var(--cg-color-text-muted);display:flex;flex-direction:column;align-items:center;gap:var(--cg-space-3)}.spinner[data-v-ad8436c9]{width:32px;height:32px;border:3px solid var(--cg-color-border-subtle);border-top-color:var(--cg-color-accent);border-radius:50%;animation:spin-ad8436c9 .8s linear infinite}@keyframes spin-ad8436c9{to{transform:rotate(360deg)}}.loading-message[data-v-ad8436c9]{font-size:var(--cg-font-size-sm);margin:0}.error-state[data-v-5397be48]{text-align:center;padding:var(--cg-space-6);color:var(--cg-color-error);border:1px solid var(--cg-color-error);background:transparent;display:flex;flex-direction:column;align-items:center;gap:var(--cg-space-3)}.error-icon[data-v-5397be48]{font-size:var(--cg-font-size-2xl)}.error-message[data-v-5397be48]{font-size:var(--cg-font-size-sm);margin:0}.summary-bar[data-v-ccb7816e]{padding:var(--cg-space-3);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);margin-bottom:var(--cg-space-4)}.summary-bar.compact[data-v-ccb7816e]{padding:var(--cg-space-2) var(--cg-space-3);font-size:var(--cg-font-size-xs)}.model-details[data-v-f15cbb56]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.detail-section[data-v-f15cbb56]{background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border);padding:var(--cg-space-3)}.section-header[data-v-f15cbb56]{color:var(--cg-color-accent);text-transform:uppercase;font-size:var(--cg-font-size-xs);letter-spacing:var(--cg-letter-spacing-wide);margin:0 0 var(--cg-space-2) 0;padding-bottom:var(--cg-space-2);border-bottom:1px solid var(--cg-color-border)}.detail-row[data-v-f15cbb56]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-1) 0}.detail-label[data-v-f15cbb56]{color:var(--cg-color-text-muted);min-width:100px;font-size:var(--cg-font-size-sm)}.detail-value[data-v-f15cbb56]{color:var(--cg-color-text-primary);flex:1;word-break:break-all}.detail-value.mono[data-v-f15cbb56]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs)}.copy-btn[data-v-f15cbb56]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-muted);padding:2px 8px;font-size:var(--cg-font-size-xs);cursor:pointer}.copy-btn[data-v-f15cbb56]:hover{background:var(--cg-color-bg-hover);color:var(--cg-color-accent);border-color:var(--cg-color-accent)}.locations-list[data-v-f15cbb56],.sources-list[data-v-f15cbb56]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.location-item[data-v-f15cbb56]{display:flex;flex-direction:column;gap:2px;padding:var(--cg-space-2);background:var(--cg-color-bg-tertiary);border-left:2px solid var(--cg-color-accent)}.location-path[data-v-f15cbb56]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);word-break:break-all}.location-modified[data-v-f15cbb56]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs)}.source-item[data-v-f15cbb56]{display:flex;gap:var(--cg-space-2);align-items:center}.source-type[data-v-f15cbb56]{color:var(--cg-color-text-muted);text-transform:capitalize;flex-shrink:0}.source-url[data-v-f15cbb56]{color:var(--cg-color-accent);word-break:break-all;font-size:var(--cg-font-size-sm);flex:1}.remove-source-btn[data-v-f15cbb56]{background:transparent;border:1px solid var(--cg-color-border);color:var(--cg-color-text-muted);width:20px;height:20px;font-size:14px;line-height:1;cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center}.remove-source-btn[data-v-f15cbb56]:hover:not(:disabled){background:var(--cg-color-error, #ef4444);border-color:var(--cg-color-error, #ef4444);color:#fff}.remove-source-btn[data-v-f15cbb56]:disabled{opacity:.5;cursor:not-allowed}.empty-state[data-v-f15cbb56]{color:var(--cg-color-text-muted);font-style:italic;padding:var(--cg-space-2)}.add-source-form[data-v-f15cbb56]{display:flex;gap:var(--cg-space-2);margin-top:var(--cg-space-3)}.source-input[data-v-f15cbb56]{flex:1;background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary);padding:var(--cg-space-2);font-size:var(--cg-font-size-sm)}.source-input[data-v-f15cbb56]::placeholder{color:var(--cg-color-text-muted)}.source-input[data-v-f15cbb56]:focus{outline:none;border-color:var(--cg-color-accent)}.add-source-btn[data-v-f15cbb56]{background:var(--cg-color-accent);border:none;color:var(--cg-color-bg-primary);padding:var(--cg-space-2) var(--cg-space-3);font-size:var(--cg-font-size-sm);cursor:pointer;white-space:nowrap}.add-source-btn[data-v-f15cbb56]:disabled{opacity:.5;cursor:not-allowed}.add-source-btn[data-v-f15cbb56]:not(:disabled):hover{filter:brightness(1.1)}.source-error[data-v-f15cbb56]{color:var(--cg-color-error);font-size:var(--cg-font-size-sm);margin-top:var(--cg-space-2)}.source-success[data-v-f15cbb56]{color:var(--cg-color-success);font-size:var(--cg-font-size-sm);margin-top:var(--cg-space-2)}.btn-secondary[data-v-f15cbb56]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary);padding:var(--cg-space-2) var(--cg-space-4);cursor:pointer}.btn-secondary[data-v-f15cbb56]:hover{background:var(--cg-color-bg-hover);border-color:var(--cg-color-accent)}.open-location-btn[data-v-f15cbb56]{margin-top:var(--cg-space-2);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-muted);padding:4px 12px;font-size:var(--cg-font-size-xs);cursor:pointer;align-self:flex-start}.open-location-btn[data-v-f15cbb56]:hover{background:var(--cg-color-bg-hover);color:var(--cg-color-accent);border-color:var(--cg-color-accent)}.toast[data-v-f15cbb56]{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-accent);color:var(--cg-color-text-primary);padding:10px 20px;font-size:var(--cg-font-size-sm);z-index:10010;animation:toastSlideIn-f15cbb56 .2s ease}.toast.success[data-v-f15cbb56]{border-color:var(--cg-color-success, #4ade80)}.toast.error[data-v-f15cbb56]{border-color:var(--cg-color-error, #ef4444)}.toast.info[data-v-f15cbb56]{border-color:var(--cg-color-accent)}@keyframes toastSlideIn-f15cbb56{0%{opacity:0;transform:translate(-50%) translateY(10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.indexing-progress[data-v-73b78d84]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-md);padding:var(--cg-space-2) var(--cg-space-3);margin-bottom:var(--cg-space-2)}.progress-info[data-v-73b78d84]{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--cg-space-1)}.progress-label[data-v-73b78d84]{font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary)}.progress-count[data-v-73b78d84]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.progress-bar[data-v-73b78d84]{height:4px;background:var(--cg-color-bg-hover);border-radius:2px;overflow:hidden}.progress-fill[data-v-73b78d84]{height:100%;background:var(--cg-color-accent);transition:width .2s ease}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:10010}.modal-content{width:90%;max-width:500px;background:var(--cg-color-bg-primary, #1a1a2e);border:1px solid var(--cg-color-border, #333);border-radius:var(--cg-radius-lg, 8px);box-shadow:0 25px 50px -12px #00000080;display:flex;flex-direction:column;overflow:hidden}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--cg-color-border, #333);background:var(--cg-color-bg-secondary, #252542)}.modal-header h3{margin:0;font-size:14px;font-weight:600;color:var(--cg-color-text-primary, #fff)}.modal-close{background:none;border:none;font-size:18px;color:var(--cg-color-text-muted, #888);cursor:pointer;padding:4px;border-radius:4px;transition:all .15s ease}.modal-close:hover{color:var(--cg-color-text-primary, #fff);background:var(--cg-color-bg-hover, #333)}.modal-body{padding:16px;display:flex;flex-direction:column;gap:12px}.input-group{display:flex;flex-direction:column;gap:4px}.input-group label{font-size:12px;font-weight:500;color:var(--cg-color-text-secondary, #aaa)}.current-path{font-family:var(--cg-font-mono, monospace);font-size:13px;padding:8px 12px;background:var(--cg-color-bg-tertiary, #333);border-radius:4px;color:var(--cg-color-accent, #7c3aed);word-break:break-all;overflow-wrap:anywhere}.modal-note{font-size:12px;color:var(--cg-color-text-muted, #888);margin:0;padding:8px;background:var(--cg-color-bg-secondary, #252542);border-radius:4px}.modal-footer{display:flex;gap:8px;justify-content:flex-end;padding:12px 16px;border-top:1px solid var(--cg-color-border, #333);background:var(--cg-color-bg-secondary, #252542)}.node-details[data-v-b342f626]{display:flex;flex-direction:column;gap:var(--cg-space-3)}.status-row[data-v-b342f626]{display:flex;align-items:center;gap:var(--cg-space-3);padding-bottom:var(--cg-space-3);border-bottom:1px solid var(--cg-color-border-subtle)}.status-badge[data-v-b342f626]{padding:4px 12px;border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);text-transform:uppercase;letter-spacing:.5px}.status-badge.installed[data-v-b342f626]{background:var(--cg-color-success-muted, rgba(34, 197, 94, .15));color:var(--cg-color-success);border:1px solid var(--cg-color-success)}.status-badge.dev[data-v-b342f626]{background:var(--cg-color-accent-muted);color:var(--cg-color-accent);border:1px solid var(--cg-color-accent)}.status-badge.missing[data-v-b342f626]{background:var(--cg-color-error-muted);color:var(--cg-color-error);border:1px solid var(--cg-color-error)}.status-badge.warning[data-v-b342f626]{background:#f59e0b26;color:var(--cg-color-warning, #f59e0b);border:1px solid var(--cg-color-warning, #f59e0b)}.detail-row[data-v-b342f626]{display:flex;align-items:flex-start;gap:var(--cg-space-3);font-size:var(--cg-font-size-sm)}.label[data-v-b342f626]{color:var(--cg-color-text-muted);min-width:100px;flex-shrink:0}.value[data-v-b342f626]{color:var(--cg-color-text-secondary);word-break:break-word}.value.mono[data-v-b342f626]{font-family:var(--cg-font-mono)}.value.small[data-v-b342f626]{font-size:var(--cg-font-size-xs)}.repo-link[data-v-b342f626]{color:var(--cg-color-accent);text-decoration:none;display:inline-flex;align-items:center;gap:6px;word-break:break-all}.repo-link[data-v-b342f626]:hover{text-decoration:underline}.external-icon[data-v-b342f626]{flex-shrink:0;opacity:.7}.section-divider[data-v-b342f626]{height:1px;background:var(--cg-color-border-subtle);margin:var(--cg-space-2) 0}.workflow-list[data-v-b342f626]{display:flex;flex-wrap:wrap;gap:6px}.workflow-tag[data-v-b342f626]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);padding:2px 8px;border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-secondary)}.dialog-message[data-v-3670b9f5]{margin:0 0 12px;font-size:var(--cg-font-size-sm);color:var(--cg-color-text-primary);line-height:var(--cg-line-height-normal)}.dialog-details[data-v-3670b9f5]{background:var(--cg-color-bg-tertiary);border-radius:var(--cg-radius-md);padding:8px 12px;margin-bottom:12px}.detail-item[data-v-3670b9f5]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-secondary);padding:2px 0}.dialog-warning[data-v-3670b9f5]{display:flex;align-items:flex-start;gap:8px;margin:0;padding:8px 10px;background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-md);font-size:var(--cg-font-size-xs);color:var(--cg-color-warning)}.warning-icon[data-v-3670b9f5]{flex-shrink:0}.mismatch-warning[data-v-1555a802]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-3);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-sm);color:var(--cg-color-warning);margin-bottom:var(--cg-space-3)}.warning-icon[data-v-1555a802]{font-size:var(--cg-font-size-lg);flex-shrink:0}.version-mismatch[data-v-1555a802]{display:flex;align-items:center;gap:var(--cg-space-1);font-family:var(--cg-font-mono)}.version-actual[data-v-1555a802]{color:var(--cg-color-error);text-decoration:line-through}.version-arrow[data-v-1555a802]{color:var(--cg-color-text-muted)}.version-expected[data-v-1555a802]{color:var(--cg-color-success)}.remote-url-display[data-v-7768a58d]{display:inline-flex;align-items:center;gap:var(--cg-space-2);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm)}.url-text[data-v-7768a58d]{color:var(--cg-color-text-secondary);word-break:break-all}.copy-btn[data-v-7768a58d]{background:transparent;border:1px solid var(--cg-color-border-subtle);color:var(--cg-color-text-muted);cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;transition:all var(--cg-transition-fast);flex-shrink:0}.copy-btn[data-v-7768a58d]:hover{border-color:var(--cg-color-accent);color:var(--cg-color-accent)}.copy-btn.copied[data-v-7768a58d]{color:var(--cg-color-success);border-color:var(--cg-color-success)}.remote-title[data-v-8310f3a8]{display:flex;align-items:center;gap:var(--cg-space-2);flex-wrap:wrap}.default-badge[data-v-8310f3a8]{display:inline-block;padding:2px 6px;background:transparent;border:1px solid var(--cg-color-success);color:var(--cg-color-success);font-size:var(--cg-font-size-xs);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.sync-badge[data-v-8310f3a8]{display:inline-flex;align-items:center;gap:var(--cg-space-1);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs)}.sync-badge .ahead[data-v-8310f3a8]{color:var(--cg-color-info)}.sync-badge .behind[data-v-8310f3a8]{color:var(--cg-color-warning)}.sync-badge .synced[data-v-8310f3a8]{color:var(--cg-color-success)}.remote-url-link[data-v-8310f3a8]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);color:var(--cg-color-info);text-decoration:none}.remote-url-link[data-v-8310f3a8]:hover{text-decoration:underline}.remote-url-text[data-v-8310f3a8]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.base-form-field[data-v-9a1cf296]{display:flex;flex-direction:column;gap:6px}.base-form-field.full-width[data-v-9a1cf296]{width:100%}.base-form-field-label[data-v-9a1cf296]{font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary);font-weight:var(--cg-font-weight-medium);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.base-form-field-required[data-v-9a1cf296]{color:var(--cg-color-error);margin-left:2px}.base-form-field-input[data-v-9a1cf296]{width:100%}.base-form-field-error[data-v-9a1cf296]{font-size:var(--cg-font-size-xs);color:var(--cg-color-error)}.base-form-field-hint[data-v-9a1cf296]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.remote-form[data-v-56021b18]{border:1px solid var(--cg-color-border);background:var(--cg-color-bg-tertiary);padding:var(--cg-space-4);margin-bottom:var(--cg-space-4)}.form-header[data-v-56021b18]{margin-bottom:var(--cg-space-4)}.form-body[data-v-56021b18]{display:flex;flex-direction:column;gap:var(--cg-space-3);margin-bottom:var(--cg-space-4)}.form-error[data-v-56021b18]{padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-error-muted);border:1px solid var(--cg-color-error);color:var(--cg-color-error);font-size:var(--cg-font-size-sm)}.form-actions[data-v-56021b18]{display:flex;gap:var(--cg-space-2)}.conflict-summary-box[data-v-4e9e6cc9]{display:flex;flex-direction:column;gap:var(--cg-space-3);padding:var(--cg-space-3);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-md)}.summary-header[data-v-4e9e6cc9]{display:flex;align-items:flex-start;gap:var(--cg-space-2)}.summary-icon[data-v-4e9e6cc9]{font-size:var(--cg-font-size-lg);color:var(--cg-color-warning)}.summary-text[data-v-4e9e6cc9]{flex:1}.summary-text strong[data-v-4e9e6cc9]{color:var(--cg-color-warning);font-size:var(--cg-font-size-sm)}.summary-text p[data-v-4e9e6cc9]{margin:var(--cg-space-1) 0 0 0;font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary)}.summary-text p.all-resolved[data-v-4e9e6cc9]{color:var(--cg-color-success)}.summary-progress[data-v-4e9e6cc9]{display:flex;align-items:center;gap:var(--cg-space-2)}.progress-bar[data-v-4e9e6cc9]{flex:1;height:6px;background:var(--cg-color-bg-tertiary);border-radius:var(--cg-radius-sm);overflow:hidden}.progress-fill[data-v-4e9e6cc9]{height:100%;background:var(--cg-color-warning);border-radius:var(--cg-radius-sm);transition:width .3s ease}.progress-text[data-v-4e9e6cc9]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);white-space:nowrap}.modal-overlay[data-v-300c7b2f]{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--cg-color-bg-overlay);display:flex;align-items:center;justify-content:center;z-index:10005;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-content[data-v-300c7b2f]{background:var(--cg-color-bg-primary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-lg);box-shadow:var(--cg-shadow-lg);max-width:600px;width:90%;max-height:80vh;overflow-y:auto}.modal-header[data-v-300c7b2f]{display:flex;justify-content:space-between;align-items:center;padding:var(--cg-space-4);border-bottom:1px solid var(--cg-color-border-subtle)}.modal-title[data-v-300c7b2f]{margin:0;font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-accent);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.modal-close[data-v-300c7b2f]{background:transparent;border:none;color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xl);cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.modal-close[data-v-300c7b2f]:hover{color:var(--cg-color-text-primary)}.modal-body[data-v-300c7b2f]{padding:var(--cg-space-4);display:flex;flex-direction:column;gap:var(--cg-space-4)}.loading-state[data-v-300c7b2f]{display:flex;align-items:center;gap:var(--cg-space-2);justify-content:center;padding:var(--cg-space-6);color:var(--cg-color-text-muted)}.spinner[data-v-300c7b2f]{animation:spin-300c7b2f 1s linear infinite}.error-box[data-v-300c7b2f]{display:flex;align-items:flex-start;gap:var(--cg-space-3);padding:var(--cg-space-4);background:var(--cg-color-error-muted);border:1px solid var(--cg-color-error);border-radius:var(--cg-radius-sm);color:var(--cg-color-error)}.error-icon[data-v-300c7b2f]{font-size:var(--cg-font-size-xl);flex-shrink:0}.error-box p[data-v-300c7b2f]{margin:var(--cg-space-1) 0 0 0;font-size:var(--cg-font-size-sm)}.error-hint[data-v-300c7b2f]{margin-top:var(--cg-space-2)!important;opacity:.9}@keyframes spin-300c7b2f{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.commit-summary[data-v-300c7b2f]{display:flex;align-items:center;gap:var(--cg-space-2);font-size:var(--cg-font-size-base);color:var(--cg-color-text-primary)}.commit-summary .icon[data-v-300c7b2f]{font-size:var(--cg-font-size-lg)}.warning-box[data-v-300c7b2f]{display:flex;align-items:flex-start;gap:var(--cg-space-3);padding:var(--cg-space-4);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-sm);color:var(--cg-color-warning)}.warning-icon[data-v-300c7b2f]{font-size:var(--cg-font-size-xl);flex-shrink:0}.warning-box p[data-v-300c7b2f]{margin:var(--cg-space-1) 0 0 0;font-size:var(--cg-font-size-sm)}.options-section[data-v-300c7b2f]{padding:var(--cg-space-3);background:var(--cg-color-bg-secondary);border-radius:var(--cg-radius-sm)}.options-section ul[data-v-300c7b2f]{margin:var(--cg-space-2) 0 0 var(--cg-space-4);padding:0;font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary)}.changes-section[data-v-300c7b2f]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.section-title[data-v-300c7b2f]{margin:0;font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-muted);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.change-group[data-v-300c7b2f]{background:var(--cg-color-bg-secondary);border-radius:var(--cg-radius-sm);overflow:hidden}.change-group summary[data-v-300c7b2f]{display:flex;justify-content:space-between;align-items:center;padding:var(--cg-space-2) var(--cg-space-3);cursor:pointer;-webkit-user-select:none;user-select:none}.change-group summary[data-v-300c7b2f]:hover{background:var(--cg-color-bg-hover)}.change-type[data-v-300c7b2f]{font-weight:var(--cg-font-weight-medium);color:var(--cg-color-text-primary)}.change-count[data-v-300c7b2f]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.change-list[data-v-300c7b2f]{padding:var(--cg-space-2) var(--cg-space-3);border-top:1px solid var(--cg-color-border-subtle);max-height:150px;overflow-y:auto}.change-item[data-v-300c7b2f]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm);padding:var(--cg-space-1) 0}.change-item.add[data-v-300c7b2f]{color:var(--cg-color-success)}.change-item.modify[data-v-300c7b2f]{color:var(--cg-color-info)}.change-item.delete[data-v-300c7b2f]{color:var(--cg-color-error)}.conflict-badge[data-v-300c7b2f]{margin-left:var(--cg-space-2);padding:1px var(--cg-space-2);font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-semibold);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-xs);color:var(--cg-color-warning)}.strategy-section[data-v-300c7b2f]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.radio-group[data-v-300c7b2f]{display:flex;flex-direction:column;gap:var(--cg-space-2);padding:var(--cg-space-3);background:var(--cg-color-bg-secondary);border-radius:var(--cg-radius-sm)}.radio-option[data-v-300c7b2f]{display:flex;align-items:center;gap:var(--cg-space-2);cursor:pointer;font-size:var(--cg-font-size-sm)}.radio-option input[data-v-300c7b2f]{margin:0}.default-badge[data-v-300c7b2f]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);background:var(--cg-color-bg-tertiary);padding:1px 4px;border-radius:var(--cg-radius-xs)}.strategy-hint[data-v-300c7b2f]{margin:0;font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);font-style:italic}.up-to-date[data-v-300c7b2f]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-4);color:var(--cg-color-success);justify-content:center}.modal-actions[data-v-300c7b2f]{padding:var(--cg-space-4);border-top:1px solid var(--cg-color-border-subtle);display:flex;gap:var(--cg-space-2);justify-content:flex-end}.modal-overlay[data-v-ae86b6a7]{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--cg-color-bg-overlay);display:flex;align-items:center;justify-content:center;z-index:10005;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-content[data-v-ae86b6a7]{background:var(--cg-color-bg-primary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-lg);box-shadow:var(--cg-shadow-lg);max-width:600px;width:90%;max-height:80vh;overflow-y:auto}.modal-header[data-v-ae86b6a7]{display:flex;justify-content:space-between;align-items:center;padding:var(--cg-space-4);border-bottom:1px solid var(--cg-color-border-subtle)}.modal-title[data-v-ae86b6a7]{margin:0;font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-accent);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.modal-close[data-v-ae86b6a7]{background:transparent;border:none;color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xl);cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.modal-close[data-v-ae86b6a7]:hover{color:var(--cg-color-text-primary)}.modal-body[data-v-ae86b6a7]{padding:var(--cg-space-4);display:flex;flex-direction:column;gap:var(--cg-space-4)}.loading-state[data-v-ae86b6a7]{display:flex;align-items:center;gap:var(--cg-space-2);justify-content:center;padding:var(--cg-space-6);color:var(--cg-color-text-muted)}.spinner[data-v-ae86b6a7]{animation:spin-ae86b6a7 1s linear infinite}@keyframes spin-ae86b6a7{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.commit-summary[data-v-ae86b6a7]{display:flex;align-items:center;gap:var(--cg-space-2);font-size:var(--cg-font-size-base);color:var(--cg-color-text-primary)}.commit-summary .icon[data-v-ae86b6a7]{font-size:var(--cg-font-size-lg)}.warning-box[data-v-ae86b6a7]{display:flex;align-items:flex-start;gap:var(--cg-space-3);padding:var(--cg-space-4);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-sm);color:var(--cg-color-warning)}.warning-icon[data-v-ae86b6a7]{font-size:var(--cg-font-size-xl);flex-shrink:0}.warning-box p[data-v-ae86b6a7]{margin:var(--cg-space-1) 0 0 0;font-size:var(--cg-font-size-sm)}.info-box[data-v-ae86b6a7]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-3);background:var(--cg-color-info-muted);border:1px solid var(--cg-color-info);border-radius:var(--cg-radius-sm);color:var(--cg-color-info);font-size:var(--cg-font-size-sm)}.info-icon[data-v-ae86b6a7]{flex-shrink:0}.commits-section[data-v-ae86b6a7]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.section-title[data-v-ae86b6a7]{margin:0;font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-muted);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.commit-list[data-v-ae86b6a7]{display:flex;flex-direction:column;gap:var(--cg-space-1);padding:var(--cg-space-3);background:var(--cg-color-bg-secondary);border-radius:var(--cg-radius-sm);max-height:200px;overflow-y:auto}.commit-item[data-v-ae86b6a7]{display:flex;align-items:center;gap:var(--cg-space-2);font-size:var(--cg-font-size-sm)}.commit-hash[data-v-ae86b6a7]{font-family:var(--cg-font-mono);color:var(--cg-color-info);flex-shrink:0}.commit-message[data-v-ae86b6a7]{color:var(--cg-color-text-primary);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.commit-date[data-v-ae86b6a7]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);flex-shrink:0}.force-option[data-v-ae86b6a7]{padding:var(--cg-space-3);background:var(--cg-color-bg-secondary);border-radius:var(--cg-radius-sm)}.checkbox-option[data-v-ae86b6a7]{display:flex;align-items:center;gap:var(--cg-space-2);cursor:pointer;font-size:var(--cg-font-size-sm)}.checkbox-option input[data-v-ae86b6a7]{margin:0}.option-hint[data-v-ae86b6a7]{margin:var(--cg-space-1) 0 0 var(--cg-space-5);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.up-to-date[data-v-ae86b6a7]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-4);color:var(--cg-color-success);justify-content:center}.modal-actions[data-v-ae86b6a7]{padding:var(--cg-space-4);border-top:1px solid var(--cg-color-border-subtle);display:flex;gap:var(--cg-space-2);justify-content:flex-end}.resolution-choice-group[data-v-985715ed]{display:flex;gap:var(--cg-space-2)}.choice-btn[data-v-985715ed]{display:flex;align-items:center;gap:var(--cg-space-1);padding:var(--cg-space-2) var(--cg-space-3);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-sm);background:var(--cg-color-bg-secondary);color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-medium);cursor:pointer;transition:all .15s ease}.choice-btn[data-v-985715ed]:hover:not(:disabled){background:var(--cg-color-bg-hover);border-color:var(--cg-color-text-muted)}.choice-btn[data-v-985715ed]:disabled{opacity:.5;cursor:not-allowed}.choice-btn.selected[data-v-985715ed]{border-color:var(--cg-color-accent);background:var(--cg-color-accent-muted);color:var(--cg-color-accent)}.choice-btn.mine.selected[data-v-985715ed]{border-color:var(--cg-color-info);background:var(--cg-color-info-muted);color:var(--cg-color-info)}.choice-btn.theirs.selected[data-v-985715ed]{border-color:var(--cg-color-success);background:var(--cg-color-success-muted);color:var(--cg-color-success)}.choice-icon[data-v-985715ed]{font-size:var(--cg-font-size-xs)}.conflict-item[data-v-506d3bbf]{display:flex;flex-direction:column;gap:var(--cg-space-3);padding:var(--cg-space-3);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-md);transition:all .2s ease}.conflict-item.resolved[data-v-506d3bbf]{background:var(--cg-color-bg-secondary);border-color:var(--cg-color-border)}.conflict-header[data-v-506d3bbf]{display:flex;align-items:flex-start;gap:var(--cg-space-3)}.conflict-icon[data-v-506d3bbf]{font-size:var(--cg-font-size-lg);color:var(--cg-color-warning);flex-shrink:0}.conflict-item.resolved .conflict-icon[data-v-506d3bbf]{color:var(--cg-color-text-muted)}.conflict-info[data-v-506d3bbf]{flex:1;min-width:0}.workflow-name[data-v-506d3bbf]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm);color:var(--cg-color-text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.conflict-description[data-v-506d3bbf]{font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary);margin-top:var(--cg-space-1)}.resolved-badge[data-v-506d3bbf]{display:flex;align-items:center;gap:var(--cg-space-1);padding:var(--cg-space-1) var(--cg-space-2);background:var(--cg-color-success-muted);border-radius:var(--cg-radius-sm);color:var(--cg-color-success);font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-medium);flex-shrink:0}.conflict-hashes[data-v-506d3bbf]{display:flex;gap:var(--cg-space-4);padding:var(--cg-space-2);background:var(--cg-color-bg-tertiary);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.hash-item code[data-v-506d3bbf]{font-family:var(--cg-font-mono);color:var(--cg-color-text-secondary)}.conflict-actions[data-v-506d3bbf]{display:flex;justify-content:flex-end}.resolution-content[data-v-c58d150d]{display:flex;flex-direction:column;gap:var(--cg-space-4);height:100%;min-height:0}.error-box[data-v-c58d150d]{flex-shrink:0;display:flex;align-items:flex-start;gap:var(--cg-space-3);padding:var(--cg-space-4);background:var(--cg-color-error-muted);border:1px solid var(--cg-color-error);border-radius:var(--cg-radius-sm);color:var(--cg-color-error)}.error-icon[data-v-c58d150d]{font-size:var(--cg-font-size-xl);flex-shrink:0}.error-box p[data-v-c58d150d]{margin:var(--cg-space-1) 0 0 0;font-size:var(--cg-font-size-sm)}.resolution-header[data-v-c58d150d]{flex-shrink:0;padding-bottom:var(--cg-space-3);border-bottom:1px solid var(--cg-color-border-subtle)}.header-stats[data-v-c58d150d]{display:flex;gap:var(--cg-space-4);margin-bottom:var(--cg-space-2)}.stat[data-v-c58d150d]{display:flex;flex-direction:column;align-items:center}.stat-value[data-v-c58d150d]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xl);font-weight:var(--cg-font-weight-bold);color:var(--cg-color-text-primary)}.stat.resolved .stat-value[data-v-c58d150d]{color:var(--cg-color-success)}.stat.pending .stat-value[data-v-c58d150d]{color:var(--cg-color-warning)}.stat-label[data-v-c58d150d]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.header-hint[data-v-c58d150d]{font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary);margin:0;line-height:1.5}.conflicts-list[data-v-c58d150d]{display:flex;flex-direction:column;gap:var(--cg-space-3);flex:1;min-height:0;overflow-y:auto;padding-right:var(--cg-space-2)}.all-resolved-message[data-v-c58d150d]{flex-shrink:0;display:flex;align-items:center;justify-content:center;gap:var(--cg-space-2);padding:var(--cg-space-3);background:var(--cg-color-success-muted);border:1px solid var(--cg-color-success);border-radius:var(--cg-radius-md);color:var(--cg-color-success);font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-medium)}.resolved-icon[data-v-c58d150d]{font-size:var(--cg-font-size-lg)}.footer-spacer[data-v-c58d150d]{flex:1}.node-conflict-item[data-v-8b626725]{display:flex;flex-direction:column;gap:var(--cg-space-3);padding:var(--cg-space-3);background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-md)}.node-header[data-v-8b626725]{display:flex;align-items:baseline;gap:var(--cg-space-2)}.node-name[data-v-8b626725]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-primary)}.node-id[data-v-8b626725]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.version-comparison[data-v-8b626725]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-2);background:var(--cg-color-bg-tertiary);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-sm)}.version[data-v-8b626725]{display:flex;flex-direction:column;gap:2px}.version .label[data-v-8b626725]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.version code[data-v-8b626725]{font-family:var(--cg-font-mono);color:var(--cg-color-text-primary)}.version.yours code[data-v-8b626725]{color:var(--cg-color-info)}.version.theirs code[data-v-8b626725]{color:var(--cg-color-success)}.arrow[data-v-8b626725]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-lg)}.chosen-version[data-v-8b626725]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-2);background:var(--cg-color-accent-muted);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-sm)}.chosen-version .label[data-v-8b626725]{color:var(--cg-color-text-muted)}.chosen-version .chosen[data-v-8b626725]{font-family:var(--cg-font-mono);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-accent)}.chosen-reason[data-v-8b626725]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs);margin-left:auto}.affected-workflows[data-v-8b626725]{font-size:var(--cg-font-size-sm)}.affected-workflows summary[data-v-8b626725]{cursor:pointer;color:var(--cg-color-text-secondary);-webkit-user-select:none;user-select:none}.affected-workflows summary[data-v-8b626725]:hover{color:var(--cg-color-text-primary)}.affected-workflows ul[data-v-8b626725]{margin:var(--cg-space-2) 0 0 var(--cg-space-4);padding:0;list-style:none}.affected-workflows li[data-v-8b626725]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-1) 0;color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs)}.affected-workflows li code[data-v-8b626725]{font-family:var(--cg-font-mono);color:var(--cg-color-text-primary)}.wf-source[data-v-8b626725]{color:var(--cg-color-text-muted)}.wf-version[data-v-8b626725]{margin-left:auto;color:var(--cg-color-text-muted)}.validation-content[data-v-fefd26ed]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.compatible-message[data-v-fefd26ed]{display:flex;align-items:flex-start;gap:var(--cg-space-3);padding:var(--cg-space-4);background:var(--cg-color-success-muted);border:1px solid var(--cg-color-success);border-radius:var(--cg-radius-md);color:var(--cg-color-success)}.compatible-message .icon[data-v-fefd26ed]{font-size:var(--cg-font-size-xl)}.compatible-message p[data-v-fefd26ed]{margin:var(--cg-space-1) 0 0 0;font-size:var(--cg-font-size-sm)}.warning-header[data-v-fefd26ed]{display:flex;align-items:flex-start;gap:var(--cg-space-3);padding:var(--cg-space-4);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-md);color:var(--cg-color-warning)}.warning-header .icon[data-v-fefd26ed]{font-size:var(--cg-font-size-xl)}.warning-header p[data-v-fefd26ed]{margin:var(--cg-space-1) 0 0 0;font-size:var(--cg-font-size-sm)}.conflicts-list[data-v-fefd26ed]{display:flex;flex-direction:column;gap:var(--cg-space-3);max-height:300px;overflow-y:auto}.info-box[data-v-fefd26ed]{padding:var(--cg-space-3);background:var(--cg-color-bg-secondary);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-sm)}.info-box strong[data-v-fefd26ed]{display:block;margin-bottom:var(--cg-space-1);color:var(--cg-color-text-primary)}.info-box p[data-v-fefd26ed]{margin:0;color:var(--cg-color-text-secondary)}.warnings-section[data-v-fefd26ed]{padding:var(--cg-space-3);background:var(--cg-color-bg-secondary);border-radius:var(--cg-radius-sm)}.warnings-section h4[data-v-fefd26ed]{margin:0 0 var(--cg-space-2) 0;font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-muted);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.warnings-section ul[data-v-fefd26ed]{margin:0;padding:0 0 0 var(--cg-space-4);list-style:disc}.warnings-section li[data-v-fefd26ed]{font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary);padding:var(--cg-space-1) 0}.footer-spacer[data-v-fefd26ed]{flex:1}.setting-row[data-v-cb5d236c]{display:flex;justify-content:space-between;align-items:center;gap:var(--cg-space-4);padding:var(--cg-space-3) 0;border-bottom:1px solid var(--cg-color-border-subtle)}.setting-row[data-v-cb5d236c]:last-child{border-bottom:none}.setting-row.disabled[data-v-cb5d236c]{opacity:.5;pointer-events:none}.setting-info[data-v-cb5d236c]{flex:1;min-width:0}.setting-label[data-v-cb5d236c]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-medium);margin-bottom:var(--cg-space-1)}.required-marker[data-v-cb5d236c]{color:var(--cg-color-error);margin-left:2px}.setting-description[data-v-cb5d236c]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);line-height:var(--cg-line-height-normal)}.setting-control[data-v-cb5d236c]{flex-shrink:0;display:flex;align-items:center;gap:var(--cg-space-2)}.toggle[data-v-71c0f550]{position:relative;display:inline-block;width:40px;height:22px;cursor:pointer}.toggle-input[data-v-71c0f550]{opacity:0;width:0;height:0;position:absolute}.toggle-slider[data-v-71c0f550]{position:absolute;top:0;left:0;right:0;bottom:0;background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);transition:all var(--cg-transition-fast);border-radius:var(--cg-radius-full)}.toggle-slider[data-v-71c0f550]:before{content:"";position:absolute;height:14px;width:14px;left:3px;bottom:3px;background:var(--cg-color-text-muted);transition:all var(--cg-transition-fast);border-radius:50%}.toggle-input:checked+.toggle-slider[data-v-71c0f550]{background:var(--cg-color-accent);border-color:var(--cg-color-accent)}.toggle-input:checked+.toggle-slider[data-v-71c0f550]:before{transform:translate(18px);background:var(--cg-color-text-primary)}.toggle-input:disabled+.toggle-slider[data-v-71c0f550]{opacity:.5;cursor:not-allowed}.toggle-input:focus+.toggle-slider[data-v-71c0f550]{box-shadow:0 0 0 2px var(--cg-color-accent-muted)}.toggle-input:not(:disabled)+.toggle-slider[data-v-71c0f550]:hover{border-color:var(--cg-color-accent)}.workspace-settings-content[data-v-004ef04f]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.settings-section[data-v-004ef04f]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);padding:var(--cg-space-3)}.path-setting[data-v-004ef04f]{padding:var(--cg-space-3) 0;border-bottom:1px solid var(--cg-color-border-subtle)}.path-setting[data-v-004ef04f]:last-child{border-bottom:none}.path-label[data-v-004ef04f]{font-size:var(--cg-font-size-sm);font-weight:500;color:var(--cg-color-text-primary);margin-bottom:var(--cg-space-1)}.path-description[data-v-004ef04f]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-secondary);margin-bottom:var(--cg-space-2)}.path-value[data-v-004ef04f]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-primary);background:var(--cg-color-bg-primary);padding:var(--cg-space-2);border-radius:var(--cg-border-radius-sm);border:1px solid var(--cg-color-border-subtle);word-break:break-all}.setting-hint[data-v-004ef04f]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-secondary);margin-top:var(--cg-space-2);padding:var(--cg-space-2);background:var(--cg-color-bg-primary);border-radius:var(--cg-border-radius-sm)}.setting-hint code[data-v-004ef04f]{font-family:var(--cg-font-mono);background:var(--cg-color-bg-secondary);padding:0 var(--cg-space-1);border-radius:var(--cg-border-radius-sm)}.base-tabs[data-v-ad5e6cad]{display:flex;gap:var(--cg-space-1);border-bottom:1px solid var(--cg-color-border-subtle);margin-bottom:var(--cg-space-3)}.base-tabs__tab[data-v-ad5e6cad]{padding:var(--cg-space-2) var(--cg-space-3);background:transparent;border:none;border-bottom:2px solid transparent;color:var(--cg-color-text-secondary);font-family:var(--cg-font-body);font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-medium);cursor:pointer;transition:all var(--cg-transition-fast);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.base-tabs__tab[data-v-ad5e6cad]:hover:not(.disabled){color:var(--cg-color-text-primary)}.base-tabs__tab.active[data-v-ad5e6cad]{color:var(--cg-color-accent);border-bottom-color:var(--cg-color-accent)}.base-tabs__tab.disabled[data-v-ad5e6cad]{opacity:.5;cursor:not-allowed}.base-tabs__badge[data-v-ad5e6cad]{margin-left:var(--cg-space-1);padding:1px 6px;background:var(--cg-color-accent-muted);color:var(--cg-color-accent);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-xs)}.log-viewer-wrapper[data-v-c0cc6d21]{position:relative}.log-output[data-v-c0cc6d21]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);padding:var(--cg-space-3);margin:0;user-select:text!important;-webkit-user-select:text!important;cursor:text}.copy-overlay-btn[data-v-c0cc6d21]{position:sticky;top:8px;float:right;margin-left:8px;margin-bottom:4px;padding:4px 8px;font-size:10px;font-family:var(--cg-font-body);line-height:1.2;background:var(--cg-color-bg-secondary);color:var(--cg-color-text-secondary);border:1px solid var(--cg-color-border);border-radius:4px;cursor:pointer;opacity:.4;transition:opacity .15s ease;z-index:2}.log-viewer-wrapper:hover .copy-overlay-btn[data-v-c0cc6d21]{opacity:1}.copy-overlay-btn[data-v-c0cc6d21]:hover{background:var(--cg-color-bg-hover);color:var(--cg-color-text-primary)}.copy-overlay-btn[data-v-c0cc6d21]:disabled{cursor:default}.log-line[data-v-c0cc6d21]{line-height:1.5;white-space:pre-wrap;word-wrap:break-word;user-select:text!important;-webkit-user-select:text!important}.log-level-error[data-v-c0cc6d21]{color:#f55}.log-level-warning[data-v-c0cc6d21]{color:#ffb86c}.log-level-info[data-v-c0cc6d21]{color:#50fa7b}.log-level-debug[data-v-c0cc6d21]{color:#6272a4}.env-title[data-v-9231917a]{display:flex;align-items:center;gap:var(--cg-space-2);flex-wrap:wrap}.current-badge[data-v-9231917a]{display:inline-block;padding:2px 6px;background:transparent;border:1px solid var(--cg-color-success);color:var(--cg-color-success);font-size:var(--cg-font-size-xs);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);border-radius:var(--cg-radius-sm)}.branch-info[data-v-9231917a]{font-family:var(--cg-font-mono);color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs);display:flex;align-items:center;gap:var(--cg-space-1)}.branch-icon[data-v-9231917a]{opacity:.7}.env-details[data-v-59855453]{display:flex;flex-direction:column;gap:var(--cg-space-3)}.status-row[data-v-59855453]{display:flex;align-items:center;gap:var(--cg-space-3);padding-bottom:var(--cg-space-3);border-bottom:1px solid var(--cg-color-border-subtle)}.status-badge[data-v-59855453]{padding:4px 12px;border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);text-transform:uppercase;letter-spacing:.5px}.status-badge.current[data-v-59855453]{background:var(--cg-color-success-muted, rgba(34, 197, 94, .15));color:var(--cg-color-success);border:1px solid var(--cg-color-success)}.status-badge.inactive[data-v-59855453]{background:var(--cg-color-bg-tertiary);color:var(--cg-color-text-muted);border:1px solid var(--cg-color-border-subtle)}.detail-row[data-v-59855453]{display:flex;align-items:flex-start;gap:var(--cg-space-3);font-size:var(--cg-font-size-sm)}.label[data-v-59855453]{color:var(--cg-color-text-muted);min-width:100px;flex-shrink:0}.value[data-v-59855453]{color:var(--cg-color-text-secondary);word-break:break-word}.value.mono[data-v-59855453]{font-family:var(--cg-font-mono)}.value.small[data-v-59855453]{font-size:var(--cg-font-size-xs)}.section-divider[data-v-59855453]{height:1px;background:var(--cg-color-border-subtle);margin:var(--cg-space-2) 0}.footer-actions[data-v-59855453]{display:flex;width:100%;align-items:center}.footer-spacer[data-v-59855453]{flex:1}.progress-bar[data-v-1beb0512]{width:100%;background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);border-radius:2px;overflow:hidden;position:relative}.progress-fill[data-v-1beb0512]{height:100%;transition:width .3s ease;position:relative}.progress-fill[data-v-1beb0512]:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.1),transparent);animation:shimmer-1beb0512 2s infinite}@keyframes shimmer-1beb0512{0%{transform:translate(-100%)}to{transform:translate(100%)}}.progress-fill.default[data-v-1beb0512]{background:var(--cg-color-accent);box-shadow:0 0 8px #00ff4166}.progress-fill.success[data-v-1beb0512]{background:var(--cg-color-success);box-shadow:0 0 8px #4ade8066}.progress-fill.warning[data-v-1beb0512]{background:var(--cg-color-warning);box-shadow:0 0 8px #fbbf2466}.progress-fill.error[data-v-1beb0512]{background:var(--cg-color-error);box-shadow:0 0 8px #ef444466}.progress-bar[data-v-1beb0512]{height:var(--cg-space-2)}.task-progress[data-v-9d1de66c]{display:flex;flex-direction:column;gap:var(--cg-space-2);padding:var(--cg-space-3);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle)}.progress-info[data-v-9d1de66c]{display:flex;justify-content:space-between;align-items:center;font-size:var(--cg-font-size-sm)}.progress-percentage[data-v-9d1de66c]{font-weight:var(--cg-font-weight-bold);color:var(--cg-color-accent);font-family:var(--cg-font-mono)}.progress-message[data-v-9d1de66c]{color:var(--cg-color-text-secondary);text-align:right;flex:1;margin-left:var(--cg-space-2)}.progress-steps[data-v-9d1de66c]{display:flex;flex-direction:column;gap:var(--cg-space-1);margin-top:var(--cg-space-2);padding-top:var(--cg-space-2);border-top:1px solid var(--cg-color-border-subtle)}.step[data-v-9d1de66c]{display:flex;align-items:center;gap:var(--cg-space-2);font-size:var(--cg-font-size-xs);transition:all var(--cg-transition-fast)}.step.pending[data-v-9d1de66c]{color:var(--cg-color-text-muted)}.step.active[data-v-9d1de66c]{color:var(--cg-color-accent);font-weight:var(--cg-font-weight-medium)}.step.completed[data-v-9d1de66c]{color:var(--cg-color-success)}.step.active .step-icon[data-v-9d1de66c]{animation:spin-9d1de66c 1s linear infinite}@keyframes spin-9d1de66c{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.step-icon[data-v-9d1de66c]{width:14px;text-align:center}.create-env-form[data-v-f37eaa42]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.form-field[data-v-f37eaa42]{display:flex;flex-direction:column;gap:var(--cg-space-1)}.form-field--checkbox[data-v-f37eaa42]{flex-direction:row;align-items:center;margin-top:var(--cg-space-2)}.form-label[data-v-f37eaa42]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.form-input[data-v-f37eaa42],.form-select[data-v-f37eaa42]{background:var(--cg-color-bg-primary);border:1px solid var(--cg-color-border-subtle);color:var(--cg-color-text-primary);padding:var(--cg-space-2) var(--cg-space-3);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm)}.form-input[data-v-f37eaa42]:hover,.form-select[data-v-f37eaa42]:hover{border-color:var(--cg-color-border)}.form-input[data-v-f37eaa42]:focus,.form-select[data-v-f37eaa42]:focus{outline:none;border-color:var(--cg-color-accent)}.form-select[data-v-f37eaa42]{cursor:pointer}.form-select[data-v-f37eaa42]:disabled{opacity:.5;cursor:not-allowed}.form-checkbox[data-v-f37eaa42]{display:flex;align-items:center;gap:var(--cg-space-2);cursor:pointer;font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary)}.form-checkbox input[type=checkbox][data-v-f37eaa42]{width:16px;height:16px;accent-color:var(--cg-color-accent);cursor:pointer}.creating-intro[data-v-f37eaa42]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-sm);margin-bottom:var(--cg-space-4);text-align:center}.progress-warning[data-v-f37eaa42]{margin-top:var(--cg-space-3);padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-info-muted);border:1px solid var(--cg-color-info);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-xs);color:var(--cg-color-info);text-align:center}.create-error[data-v-f37eaa42]{margin-top:var(--cg-space-3);padding:var(--cg-space-3);background:var(--cg-color-error-muted);border:1px solid var(--cg-color-error);border-radius:var(--cg-radius-sm)}.error-message[data-v-f37eaa42]{color:var(--cg-color-error);font-size:var(--cg-font-size-sm);margin:0}.footer-status[data-v-f37eaa42]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}.file-path[data-v-f0982173]{display:inline-flex;align-items:center;gap:var(--cg-space-2);background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border-subtle);padding:var(--cg-space-1) var(--cg-space-2);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-secondary);max-width:100%;overflow:hidden}.file-path-icon[data-v-f0982173]{flex-shrink:0;font-size:var(--cg-font-size-sm)}.file-path-text[data-v-f0982173]{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:none;border:none;padding:0;font-family:inherit;font-size:inherit;color:inherit}.copy-btn[data-v-f0982173]{flex-shrink:0;background:transparent;border:none;color:var(--cg-color-text-muted);cursor:pointer;padding:0;font-size:var(--cg-font-size-sm);transition:color var(--cg-transition-fast)}.copy-btn[data-v-f0982173]:hover{color:var(--cg-color-accent)}.export-blocked[data-v-b52f5e32]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.error-header[data-v-b52f5e32]{display:flex;gap:var(--cg-space-3);padding:var(--cg-space-3);background:var(--cg-color-error-muted);border:1px solid var(--cg-color-error);border-radius:var(--cg-radius-md)}.error-icon[data-v-b52f5e32]{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:var(--cg-color-error);color:var(--cg-color-bg-primary);border-radius:50%;flex-shrink:0}.error-summary[data-v-b52f5e32]{flex:1}.error-title[data-v-b52f5e32]{margin:0 0 var(--cg-space-1) 0;font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-primary)}.error-description[data-v-b52f5e32]{margin:0;font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary)}.issues-list[data-v-b52f5e32]{display:flex;flex-direction:column;gap:var(--cg-space-3)}.issue-item[data-v-b52f5e32]{padding:var(--cg-space-3);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-md)}.issue-message[data-v-b52f5e32]{font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-medium);color:var(--cg-color-text-primary);margin-bottom:var(--cg-space-2)}.issue-details[data-v-b52f5e32]{margin-bottom:var(--cg-space-2);padding-left:var(--cg-space-3)}.issue-detail[data-v-b52f5e32]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-secondary);font-family:var(--cg-font-mono);padding:var(--cg-space-1) 0}.issue-detail[data-v-b52f5e32]:before{content:"•";margin-right:var(--cg-space-2);color:var(--cg-color-text-muted)}.show-more-inline[data-v-b52f5e32]{background:none;border:none;color:var(--cg-color-accent);font-size:var(--cg-font-size-xs);cursor:pointer;padding:0;margin-top:var(--cg-space-1)}.issue-fix[data-v-b52f5e32]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);font-style:italic}.export-warnings[data-v-b698d882]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.warning-header[data-v-b698d882]{display:flex;gap:var(--cg-space-3);padding:var(--cg-space-3);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-md)}.warning-icon[data-v-b698d882]{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:var(--cg-color-warning);color:var(--cg-color-bg-primary);border-radius:50%;flex-shrink:0}.warning-summary[data-v-b698d882]{flex:1}.warning-title[data-v-b698d882]{margin:0 0 var(--cg-space-1) 0;font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-primary)}.warning-description[data-v-b698d882]{margin:0;font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary)}.models-section[data-v-b698d882]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-md);overflow:hidden}.models-list[data-v-b698d882]{max-height:240px;overflow-y:auto}.model-item[data-v-b698d882]{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--cg-space-3);padding:var(--cg-space-3);border-bottom:1px solid var(--cg-color-border-subtle)}.model-item[data-v-b698d882]:last-child{border-bottom:none}.model-info[data-v-b698d882]{flex:1;min-width:0}.model-filename[data-v-b698d882]{font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-medium);color:var(--cg-color-text-primary);font-family:var(--cg-font-mono);word-break:break-all}.model-workflows[data-v-b698d882]{margin-top:var(--cg-space-1);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.add-source-btn[data-v-b698d882]{flex-shrink:0;background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border);color:var(--cg-color-accent);padding:4px 10px;font-size:var(--cg-font-size-xs);cursor:pointer;white-space:nowrap}.add-source-btn[data-v-b698d882]:hover{background:var(--cg-color-accent);color:var(--cg-color-bg-primary);border-color:var(--cg-color-accent)}.show-more-btn[data-v-b698d882]{width:100%;padding:var(--cg-space-2);background:transparent;border:none;border-top:1px solid var(--cg-color-border-subtle);color:var(--cg-color-accent);font-size:var(--cg-font-size-sm);cursor:pointer;transition:background var(--cg-transition-base)}.show-more-btn[data-v-b698d882]:hover{background:var(--cg-color-bg-secondary)}.success-header[data-v-b698d882]{display:flex;gap:var(--cg-space-3);padding:var(--cg-space-3);background:var(--cg-color-success-muted);border:1px solid var(--cg-color-success);border-radius:var(--cg-radius-md)}.success-icon[data-v-b698d882]{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:var(--cg-color-success);color:var(--cg-color-bg-primary);border-radius:50%;flex-shrink:0}.success-summary[data-v-b698d882]{flex:1}.success-title[data-v-b698d882]{margin:0 0 var(--cg-space-1) 0;font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-primary)}.success-description[data-v-b698d882]{margin:0;font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary)}.export-card[data-v-f4d120f2]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);padding:var(--cg-space-4);display:flex;flex-direction:column;gap:var(--cg-space-4)}.export-card-header[data-v-f4d120f2]{display:flex;gap:var(--cg-space-3);align-items:flex-start}.export-icon[data-v-f4d120f2]{font-size:var(--cg-font-size-xl)}.export-header-text[data-v-f4d120f2]{flex:1}.export-title[data-v-f4d120f2]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-semibold)}.export-subtitle[data-v-f4d120f2]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);margin-top:var(--cg-space-1)}.export-path-row[data-v-f4d120f2]{display:flex;gap:var(--cg-space-2);align-items:center}.export-path-row .path-input[data-v-f4d120f2]{flex:1}.export-actions[data-v-f4d120f2]{display:flex;gap:var(--cg-space-3);align-items:center;padding-top:var(--cg-space-3);border-top:1px solid var(--cg-color-border-subtle)}.export-warning[data-v-f4d120f2]{display:flex;gap:var(--cg-space-2);padding:var(--cg-space-2);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);margin-top:var(--cg-space-2)}.warning-icon[data-v-f4d120f2]{color:var(--cg-color-warning);font-weight:var(--cg-font-weight-bold);flex-shrink:0}.warning-text[data-v-f4d120f2]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs);line-height:1.4}.export-info[data-v-f4d120f2]{display:flex;flex-direction:column;gap:var(--cg-space-3)}.info-section strong[data-v-f4d120f2]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm)}.info-section ul[data-v-f4d120f2]{margin:var(--cg-space-2) 0 0 0;padding-left:var(--cg-space-4);color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs);line-height:1.6}.info-section li[data-v-f4d120f2]{margin-bottom:var(--cg-space-1)}.info-section li strong[data-v-f4d120f2]{font-size:var(--cg-font-size-xs)}.info-note[data-v-f4d120f2]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);margin:0;padding:var(--cg-space-2);background:var(--cg-color-bg-secondary);border-left:2px solid var(--cg-color-warning)}.file-input-wrapper[data-v-cd192091]{display:inline-block}.file-input-hidden[data-v-cd192091]{display:none}.file-drop-zone[data-v-0f79cb86]{border:2px dashed var(--cg-color-border);background:var(--cg-color-bg-tertiary);padding:var(--cg-space-4);text-align:center;transition:all var(--cg-transition-base);min-height:140px;display:flex;align-items:center;justify-content:center}.file-drop-zone.drop-active[data-v-0f79cb86]{border-color:var(--cg-color-accent);background:var(--cg-color-accent-muted);box-shadow:0 0 16px var(--cg-shadow-accent)}.file-drop-zone.has-file[data-v-0f79cb86]{border-style:solid;border-color:var(--cg-color-success);background:var(--cg-color-success-muted);min-height:auto;padding:var(--cg-space-4)}.drop-zone-empty[data-v-0f79cb86]{display:flex;flex-direction:column;align-items:center;gap:var(--cg-space-2);width:100%}.drop-zone-icon[data-v-0f79cb86]{color:var(--cg-color-text-muted);opacity:.5}.drop-zone-text[data-v-0f79cb86]{display:flex;flex-direction:column;gap:var(--cg-space-1)}.drop-zone-primary[data-v-0f79cb86]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-medium);margin:0}.drop-zone-secondary[data-v-0f79cb86]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);margin:0}.drop-zone-actions[data-v-0f79cb86]{margin-top:0}.drop-zone-file[data-v-0f79cb86]{display:flex;align-items:center;justify-content:space-between;width:100%;gap:var(--cg-space-3)}.file-info[data-v-0f79cb86]{display:flex;align-items:center;gap:var(--cg-space-3);flex:1;min-width:0}.file-icon[data-v-0f79cb86]{font-size:var(--cg-font-size-2xl);flex-shrink:0}.file-details[data-v-0f79cb86]{flex:1;min-width:0;text-align:left}.file-name[data-v-0f79cb86]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-medium);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-size[data-v-0f79cb86]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);font-family:var(--cg-font-mono)}.import-preview[data-v-182fe113]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);padding:var(--cg-space-4)}.preview-header[data-v-182fe113]{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--cg-space-4);padding-bottom:var(--cg-space-3);border-bottom:1px solid var(--cg-color-border-subtle)}.source-env[data-v-182fe113]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-sm)}.preview-content[data-v-182fe113]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.preview-section[data-v-182fe113]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.section-header[data-v-182fe113]{display:flex;align-items:center;gap:var(--cg-space-3)}.section-icon[data-v-182fe113]{font-size:var(--cg-font-size-2xl);flex-shrink:0}.section-info[data-v-182fe113]{flex:1}.section-title[data-v-182fe113]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-semibold)}.section-count[data-v-182fe113]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}.item-list[data-v-182fe113]{display:flex;flex-direction:column;gap:var(--cg-space-1);padding-left:var(--cg-space-6)}.preview-item[data-v-182fe113]{display:flex;align-items:flex-start;gap:var(--cg-space-2);color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-sm)}.item-bullet[data-v-182fe113]{color:var(--cg-color-accent);flex-shrink:0}.item-name[data-v-182fe113]{font-family:var(--cg-font-mono);word-break:break-all}.item-details[data-v-182fe113]{display:flex;flex-direction:column;gap:var(--cg-space-1);min-width:0}.item-meta[data-v-182fe113]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);font-family:var(--cg-font-mono)}.item-more[data-v-182fe113]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);font-style:italic;padding-left:var(--cg-space-3)}.git-info[data-v-182fe113]{display:flex;flex-direction:column;gap:var(--cg-space-2);padding-left:var(--cg-space-6)}.import-config[data-v-89ea06a1]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);padding:var(--cg-space-4)}.config-container[data-v-89ea06a1]{display:flex;flex-direction:column;gap:var(--cg-space-4);margin-top:var(--cg-space-3)}.config-field[data-v-89ea06a1]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.input-wrapper[data-v-89ea06a1]{position:relative;display:flex;align-items:center}.name-input[data-v-89ea06a1]{width:100%;padding:var(--cg-space-2) var(--cg-space-3);padding-right:var(--cg-space-8);background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base);font-family:var(--cg-font-mono)}.name-input[data-v-89ea06a1]:focus{outline:none;border-color:var(--cg-color-accent)}.name-input.error[data-v-89ea06a1]{border-color:var(--cg-color-error)}.name-input.valid[data-v-89ea06a1]{border-color:var(--cg-color-success)}.validating-indicator[data-v-89ea06a1],.valid-indicator[data-v-89ea06a1]{position:absolute;right:var(--cg-space-3);color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}.valid-indicator[data-v-89ea06a1]{color:var(--cg-color-success)}.field-error[data-v-89ea06a1]{color:var(--cg-color-error);font-size:var(--cg-font-size-sm)}.field-hint[data-v-89ea06a1]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs)}.strategy-options[data-v-89ea06a1]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.strategy-option[data-v-89ea06a1]{display:flex;align-items:flex-start;gap:var(--cg-space-2);padding:var(--cg-space-3);background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border-subtle);cursor:pointer;transition:all var(--cg-transition-fast)}.strategy-option[data-v-89ea06a1]:hover{background:var(--cg-color-bg-hover);border-color:var(--cg-color-border)}.strategy-option.active[data-v-89ea06a1]{border-color:var(--cg-color-accent);background:var(--cg-color-accent-muted)}.strategy-option input[type=radio][data-v-89ea06a1]{margin-top:2px;flex-shrink:0;cursor:pointer;accent-color:var(--cg-color-accent)}.strategy-content[data-v-89ea06a1]{display:flex;flex-direction:column;gap:var(--cg-space-1);flex:1}.strategy-label[data-v-89ea06a1]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-medium)}.strategy-description[data-v-89ea06a1]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}.advanced-section[data-v-89ea06a1]{border:1px solid var(--cg-color-border-subtle);background:var(--cg-color-bg-secondary)}.advanced-toggle[data-v-89ea06a1]{padding:var(--cg-space-3);cursor:pointer;color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-sm)}.advanced-toggle[data-v-89ea06a1]:hover{color:var(--cg-color-text-primary)}.advanced-content[data-v-89ea06a1]{padding:var(--cg-space-3);padding-top:0}.backend-select[data-v-89ea06a1]{width:100%;padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base);cursor:pointer}.backend-select[data-v-89ea06a1]:focus{outline:none;border-color:var(--cg-color-accent)}.switch-field[data-v-89ea06a1]{padding-top:var(--cg-space-2)}.switch-label[data-v-89ea06a1]{display:flex;align-items:center;gap:var(--cg-space-2);cursor:pointer;color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm)}.switch-label input[type=checkbox][data-v-89ea06a1]{width:16px;height:16px;cursor:pointer;accent-color:var(--cg-color-accent)}.import-flow[data-v-72cbc04e]{display:flex;flex-direction:column}.import-empty[data-v-72cbc04e]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.import-configure[data-v-72cbc04e]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.selected-file-bar[data-v-72cbc04e]{display:flex;justify-content:space-between;align-items:center;background:var(--cg-color-success-muted);border:1px solid var(--cg-color-success);padding:var(--cg-space-3)}.file-bar-content[data-v-72cbc04e]{display:flex;align-items:center;gap:var(--cg-space-3)}.file-bar-icon[data-v-72cbc04e]{font-size:var(--cg-font-size-2xl)}.file-bar-info[data-v-72cbc04e]{display:flex;flex-direction:column;gap:var(--cg-space-1)}.file-bar-name[data-v-72cbc04e]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-semibold)}.file-bar-size[data-v-72cbc04e]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);font-family:var(--cg-font-mono)}.import-actions[data-v-72cbc04e]{display:flex;justify-content:flex-end;gap:var(--cg-space-3);padding-top:var(--cg-space-3);border-top:1px solid var(--cg-color-border-subtle)}.import-progress[data-v-72cbc04e]{display:flex;flex-direction:column;gap:var(--cg-space-4);padding:var(--cg-space-4)}.creating-intro[data-v-72cbc04e]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-base);margin:0;text-align:center}.creating-intro strong[data-v-72cbc04e]{color:var(--cg-color-text-primary)}.progress-warning[data-v-72cbc04e]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);text-align:center;margin:0}.import-error[data-v-72cbc04e]{background:var(--cg-color-error-muted);border:1px solid var(--cg-color-error);padding:var(--cg-space-3)}.error-message[data-v-72cbc04e]{color:var(--cg-color-error);font-size:var(--cg-font-size-sm);margin:0}.import-complete[data-v-72cbc04e]{display:flex;flex-direction:column;align-items:center;gap:var(--cg-space-4);padding:var(--cg-space-8) var(--cg-space-4)}.complete-icon[data-v-72cbc04e]{width:64px;height:64px;display:flex;align-items:center;justify-content:center;font-size:32px;font-weight:700;border:3px solid;border-radius:50%}.complete-icon.success[data-v-72cbc04e]{color:var(--cg-color-success);border-color:var(--cg-color-success);background:var(--cg-color-success-muted)}.complete-icon.error[data-v-72cbc04e]{color:var(--cg-color-error);border-color:var(--cg-color-error);background:var(--cg-color-error-muted)}.complete-message[data-v-72cbc04e]{text-align:center;max-width:500px}.complete-title[data-v-72cbc04e]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-xl);font-weight:var(--cg-font-weight-bold);margin-bottom:var(--cg-space-2)}.complete-details[data-v-72cbc04e]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-base)}.complete-actions[data-v-72cbc04e]{display:flex;gap:var(--cg-space-3);margin-top:var(--cg-space-2)}.preview-loading[data-v-72cbc04e]{display:flex;flex-direction:column;align-items:center;gap:var(--cg-space-3);padding:var(--cg-space-6);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle)}.loading-spinner[data-v-72cbc04e]{width:32px;height:32px;border:3px solid var(--cg-color-border);border-top-color:var(--cg-color-accent);border-radius:50%;animation:spin-72cbc04e .8s linear infinite}@keyframes spin-72cbc04e{to{transform:rotate(360deg)}}.loading-text[data-v-72cbc04e]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}.import-divider[data-v-72cbc04e]{display:flex;align-items:center;gap:var(--cg-space-4);margin:var(--cg-space-2) 0}.import-divider[data-v-72cbc04e]:before,.import-divider[data-v-72cbc04e]:after{content:"";flex:1;height:1px;background:var(--cg-color-border-subtle)}.import-divider span[data-v-72cbc04e]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);text-transform:lowercase}.git-import-section[data-v-72cbc04e]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);padding:var(--cg-space-4)}.git-import-header[data-v-72cbc04e]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-medium);margin-bottom:var(--cg-space-3)}.git-url-input-row[data-v-72cbc04e]{display:flex;gap:var(--cg-space-2)}.git-url-input[data-v-72cbc04e]{flex:1;padding:var(--cg-space-1) var(--cg-space-2);background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm);font-family:var(--cg-font-mono);height:28px}.git-url-input[data-v-72cbc04e]:focus{outline:none;border-color:var(--cg-color-accent)}.git-url-input[data-v-72cbc04e]:disabled{opacity:.6;cursor:not-allowed}.git-url-hint[data-v-72cbc04e]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);margin-top:var(--cg-space-2)}.git-error[data-v-72cbc04e]{color:var(--cg-color-error);font-size:var(--cg-font-size-sm);margin-top:var(--cg-space-2)}.help-steps[data-v-e13bfe76]{display:flex;flex-direction:column;gap:var(--cg-space-3)}.help-step[data-v-e13bfe76]{display:flex;gap:var(--cg-space-3);align-items:flex-start}.step-number[data-v-e13bfe76]{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:var(--cg-color-accent-muted);color:var(--cg-color-accent);border:1px solid var(--cg-color-accent);font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-bold);flex-shrink:0}.step-content[data-v-e13bfe76]{flex:1}.step-content strong[data-v-e13bfe76]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm);display:block;margin-bottom:var(--cg-space-1)}.step-content p[data-v-e13bfe76]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs);margin:0}.instance-card[data-v-746c3894]{border:1px solid var(--cg-color-border-subtle);background:var(--cg-color-bg-tertiary);padding:var(--cg-space-3);margin-bottom:var(--cg-space-2);border-left-width:3px;border-left-color:transparent}.instance-card.status-running[data-v-746c3894]{border-left-color:var(--cg-color-success)}.instance-card.status-deploying[data-v-746c3894],.instance-card.status-starting[data-v-746c3894]{border-left-color:var(--cg-color-info)}.instance-card.status-stopped[data-v-746c3894]{border-left-color:var(--cg-color-text-muted)}.instance-card.status-error[data-v-746c3894]{border-left-color:var(--cg-color-error)}.instance-card.status-terminated[data-v-746c3894]{border-left-color:var(--cg-color-border-subtle);opacity:.6}.instance-header[data-v-746c3894]{display:flex;align-items:center;gap:var(--cg-space-2);margin-bottom:var(--cg-space-2)}.provider-badge[data-v-746c3894]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);padding:var(--cg-space-1) var(--cg-space-2);background:var(--cg-color-bg-hover);border:1px solid var(--cg-color-border-subtle);color:var(--cg-color-text-secondary)}.instance-name[data-v-746c3894]{flex:1;font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm);color:var(--cg-color-text-primary);font-weight:var(--cg-font-weight-medium);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-indicator[data-v-746c3894]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);display:flex;align-items:center;gap:var(--cg-space-1)}.status-indicator.running[data-v-746c3894]{color:var(--cg-color-success)}.status-indicator.deploying[data-v-746c3894],.status-indicator.starting[data-v-746c3894]{color:var(--cg-color-info)}.status-indicator.stopped[data-v-746c3894]{color:var(--cg-color-text-muted)}.status-indicator.error[data-v-746c3894]{color:var(--cg-color-error)}.status-indicator.terminated[data-v-746c3894]{color:var(--cg-color-text-muted)}.status-indicator .spinner[data-v-746c3894]{width:10px;height:10px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin-746c3894 .8s linear infinite}@keyframes spin-746c3894{to{transform:rotate(360deg)}}.instance-details[data-v-746c3894]{display:flex;flex-wrap:wrap;gap:var(--cg-space-2);margin-bottom:var(--cg-space-2)}.instance-details .detail[data-v-746c3894]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.instance-details .total-cost[data-v-746c3894]{color:var(--cg-color-text-secondary)}.instance-details .instance-url[data-v-746c3894]{color:var(--cg-color-accent);word-break:break-all;flex-basis:100%}.deployment-progress[data-v-746c3894]{margin-bottom:var(--cg-space-2)}.progress-message[data-v-746c3894]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);color:var(--cg-color-info);margin-bottom:var(--cg-space-1)}.instance-actions[data-v-746c3894]{display:flex;gap:var(--cg-space-2);flex-wrap:wrap}.instances-tab[data-v-ba614fc3]{padding:var(--cg-space-3)}.instances-header[data-v-ba614fc3]{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--cg-space-3)}.loading-state[data-v-ba614fc3],.empty-state[data-v-ba614fc3]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--cg-space-6);color:var(--cg-color-text-muted);text-align:center}.loading-state .spinner[data-v-ba614fc3]{width:16px;height:16px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin-ba614fc3 .8s linear infinite;margin-bottom:var(--cg-space-2)}@keyframes spin-ba614fc3{to{transform:rotate(360deg)}}.empty-icon[data-v-ba614fc3]{font-size:var(--cg-font-size-2xl);margin-bottom:var(--cg-space-2)}.empty-text[data-v-ba614fc3]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);margin-bottom:var(--cg-space-2)}.empty-help[data-v-ba614fc3]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.instances-list[data-v-ba614fc3]{display:flex;flex-direction:column}.deploy-remote-card[data-v-d687d161]{display:flex;flex-direction:column;gap:var(--cg-space-3);padding:var(--cg-space-3);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);transition:border-color var(--cg-transition-fast)}.deploy-remote-card.selected[data-v-d687d161]{border-color:var(--cg-color-accent);background:var(--cg-color-bg-secondary)}.remote-header[data-v-d687d161]{display:flex;flex-direction:column;gap:var(--cg-space-1)}.remote-info[data-v-d687d161]{display:flex;align-items:center;gap:var(--cg-space-2);flex-wrap:wrap}.remote-icon[data-v-d687d161]{font-size:var(--cg-font-size-sm)}.remote-name[data-v-d687d161]{font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm)}.default-badge[data-v-d687d161]{display:inline-block;padding:2px 6px;background:transparent;border:1px solid var(--cg-color-success);color:var(--cg-color-success);font-size:var(--cg-font-size-xs);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.sync-badge[data-v-d687d161]{display:inline-flex;align-items:center;gap:var(--cg-space-1);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs)}.sync-badge .ahead[data-v-d687d161]{color:var(--cg-color-info)}.sync-badge .behind[data-v-d687d161]{color:var(--cg-color-warning)}.sync-badge .synced[data-v-d687d161]{color:var(--cg-color-success)}.remote-url[data-v-d687d161]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);color:var(--cg-color-info);text-decoration:none}.remote-url[data-v-d687d161]:hover{text-decoration:underline}.remote-url-text[data-v-d687d161]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.remote-actions[data-v-d687d161]{display:flex;gap:var(--cg-space-2);flex-wrap:wrap}.runpod-tab[data-v-522cd4d9]{padding:var(--cg-space-3)}.api-key-card[data-v-522cd4d9]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);padding:var(--cg-space-4);display:flex;flex-direction:column;gap:var(--cg-space-3)}.api-key-row[data-v-522cd4d9]{display:flex;gap:var(--cg-space-2);align-items:center}.api-key-input-wrapper[data-v-522cd4d9]{flex:1;position:relative;display:flex;align-items:center}.api-key-input[data-v-522cd4d9]{width:100%;padding:var(--cg-space-2) var(--cg-space-3);padding-right:40px;background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm)}.api-key-input[data-v-522cd4d9]:focus{outline:none;border-color:var(--cg-color-accent)}.api-key-input[data-v-522cd4d9]:disabled{opacity:.7;cursor:not-allowed}.toggle-visibility-btn[data-v-522cd4d9]{position:absolute;right:8px;background:transparent;border:none;color:var(--cg-color-text-muted);cursor:pointer;padding:4px;font-size:14px}.toggle-visibility-btn[data-v-522cd4d9]:hover{color:var(--cg-color-text-primary)}.connection-status[data-v-522cd4d9]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-2);font-size:var(--cg-font-size-xs)}.connection-status.success[data-v-522cd4d9]{background:var(--cg-color-success-muted);border:1px solid var(--cg-color-success)}.connection-status.error[data-v-522cd4d9]{background:var(--cg-color-error-muted);border:1px solid var(--cg-color-error)}.status-icon[data-v-522cd4d9]{font-weight:700}.connection-status.success .status-icon[data-v-522cd4d9]{color:var(--cg-color-success)}.connection-status.error .status-icon[data-v-522cd4d9]{color:var(--cg-color-error)}.status-text[data-v-522cd4d9]{flex:1;color:var(--cg-color-text-primary)}.credit-balance[data-v-522cd4d9]{color:var(--cg-color-accent);font-weight:var(--cg-font-weight-semibold)}.api-key-help[data-v-522cd4d9]{display:flex;gap:var(--cg-space-2);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.help-icon[data-v-522cd4d9]{flex-shrink:0;width:16px;height:16px;display:flex;align-items:center;justify-content:center;border:1px solid var(--cg-color-border-subtle);border-radius:50%;font-size:10px}.help-text a[data-v-522cd4d9]{color:var(--cg-color-accent);text-decoration:none}.help-text a[data-v-522cd4d9]:hover{text-decoration:underline}.config-card[data-v-522cd4d9]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);padding:var(--cg-space-4);display:flex;flex-direction:column;gap:var(--cg-space-4)}.config-row[data-v-522cd4d9]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.loading-inline[data-v-522cd4d9]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}.no-volumes-state[data-v-522cd4d9]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-2);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning)}.no-volumes-icon[data-v-522cd4d9]{color:var(--cg-color-warning)}.no-volumes-text[data-v-522cd4d9]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm)}.volume-help[data-v-522cd4d9]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);margin:var(--cg-space-2) 0;line-height:1.4}.create-volume-link[data-v-522cd4d9]{display:inline-block;padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-accent);color:var(--cg-color-bg-primary);font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-medium);text-decoration:none;text-align:center}.create-volume-link[data-v-522cd4d9]:hover{background:var(--cg-color-accent-hover)}.create-volume-inline-link[data-v-522cd4d9]{display:inline-block;margin-top:var(--cg-space-2);color:var(--cg-color-accent);font-size:var(--cg-font-size-xs);text-decoration:none;width:fit-content}.create-volume-inline-link[data-v-522cd4d9]:hover{text-decoration:underline}.config-label[data-v-522cd4d9]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.config-select[data-v-522cd4d9],.config-input[data-v-522cd4d9]{padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm)}.config-select[data-v-522cd4d9]:focus,.config-input[data-v-522cd4d9]:focus{outline:none;border-color:var(--cg-color-accent)}.config-select[data-v-522cd4d9]:disabled{opacity:.5}.radio-group[data-v-522cd4d9]{display:flex;gap:var(--cg-space-4)}.radio-option[data-v-522cd4d9]{display:flex;align-items:center;gap:var(--cg-space-2);cursor:pointer}.radio-option input[data-v-522cd4d9]{accent-color:var(--cg-color-accent)}.radio-option.disabled[data-v-522cd4d9]{cursor:not-allowed;opacity:.5}.radio-option.disabled input[data-v-522cd4d9]{cursor:not-allowed}.radio-label[data-v-522cd4d9]{font-size:var(--cg-font-size-sm);color:var(--cg-color-text-primary)}.summary-card[data-v-522cd4d9]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);padding:var(--cg-space-4);display:flex;flex-direction:column;gap:var(--cg-space-2)}.summary-row[data-v-522cd4d9]{display:flex;justify-content:space-between;align-items:center}.summary-label[data-v-522cd4d9]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-sm)}.summary-value[data-v-522cd4d9]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm)}.summary-sub-row[data-v-522cd4d9]{padding-left:var(--cg-space-4)}.summary-sub-label[data-v-522cd4d9]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs)}.summary-sub-row.warning .summary-sub-label[data-v-522cd4d9]{color:var(--cg-color-warning)}.deploy-actions[data-v-522cd4d9]{display:flex;gap:var(--cg-space-3);padding:var(--cg-space-4) 0}.deployment-summary[data-v-522cd4d9]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);padding:var(--cg-space-4)}.summary-columns[data-v-522cd4d9]{display:grid;grid-template-columns:1fr 1fr;gap:var(--cg-space-4)}.summary-column[data-v-522cd4d9]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.column-header[data-v-522cd4d9]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);padding-bottom:var(--cg-space-2);border-bottom:1px solid var(--cg-color-border-subtle);margin-bottom:var(--cg-space-1)}.pricing-row[data-v-522cd4d9]{display:flex;justify-content:space-between;align-items:center}.pricing-label[data-v-522cd4d9]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-sm)}.pricing-value[data-v-522cd4d9]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm);font-family:var(--cg-font-mono)}.pricing-divider[data-v-522cd4d9]{height:1px;background:var(--cg-color-border-subtle);margin:var(--cg-space-1) 0}.pricing-row.total .pricing-label[data-v-522cd4d9],.pricing-row.total .pricing-value[data-v-522cd4d9]{font-weight:var(--cg-font-weight-semibold)}.pricing-row.total .pricing-value[data-v-522cd4d9]{color:var(--cg-color-accent)}.spec-row[data-v-522cd4d9]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm)}.spec-row.spot-warning[data-v-522cd4d9]{color:var(--cg-color-warning);font-size:var(--cg-font-size-xs);margin-top:var(--cg-space-2)}.info-tooltip[data-v-522cd4d9]{cursor:help;color:var(--cg-color-text-muted);font-size:12px;margin-left:var(--cg-space-1)}.loading-text[data-v-522cd4d9]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);text-align:center;padding:var(--cg-space-4)}.empty-remotes[data-v-522cd4d9]{display:flex;flex-direction:column;align-items:center;gap:var(--cg-space-4);padding:var(--cg-space-6);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);text-align:center}.empty-message[data-v-522cd4d9]{display:flex;flex-direction:column;align-items:center;gap:var(--cg-space-2)}.empty-icon[data-v-522cd4d9]{font-size:var(--cg-font-size-2xl)}.empty-text[data-v-522cd4d9]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-medium)}.empty-help[data-v-522cd4d9]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);margin:0}.remotes-list[data-v-522cd4d9]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.sync-warning[data-v-522cd4d9]{display:flex;gap:var(--cg-space-3);align-items:flex-start;padding:var(--cg-space-3);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);margin-top:var(--cg-space-3)}.sync-warning .warning-icon[data-v-522cd4d9]{flex-shrink:0;font-size:var(--cg-font-size-lg)}.sync-warning .warning-content[data-v-522cd4d9]{flex:1}.sync-warning .warning-content strong[data-v-522cd4d9]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm)}.sync-warning .warning-content p[data-v-522cd4d9]{margin:var(--cg-space-1) 0 0 0;color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs)}.remotes-footer[data-v-522cd4d9]{margin-top:var(--cg-space-3);text-align:right}.progress-content[data-v-522cd4d9]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.phase-indicator[data-v-522cd4d9]{display:flex;align-items:center;gap:var(--cg-space-3)}.phase-icon[data-v-522cd4d9]{width:40px;height:40px;display:flex;align-items:center;justify-content:center;font-size:20px;border-radius:50%;background:var(--cg-color-bg-tertiary);border:2px solid var(--cg-color-border)}.phase-icon.ready[data-v-522cd4d9]{background:var(--cg-color-success-muted);border-color:var(--cg-color-success);color:var(--cg-color-success)}.phase-icon.error[data-v-522cd4d9]{background:var(--cg-color-error-muted);border-color:var(--cg-color-error);color:var(--cg-color-error)}.phase-icon.stopped[data-v-522cd4d9]{background:var(--cg-color-bg-tertiary);border-color:var(--cg-color-border);color:var(--cg-color-text-muted)}.phase-icon .spinner[data-v-522cd4d9]{animation:spin-522cd4d9 1s linear infinite}@keyframes spin-522cd4d9{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.phase-text[data-v-522cd4d9]{flex:1}.phase-name[data-v-522cd4d9]{font-size:var(--cg-font-size-md);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-primary)}.phase-detail[data-v-522cd4d9]{font-size:var(--cg-font-size-sm);color:var(--cg-color-text-muted);margin-top:var(--cg-space-1)}.ready-actions[data-v-522cd4d9]{display:flex;justify-content:center;padding:var(--cg-space-2) 0}.console-link[data-v-522cd4d9]{text-align:center}.console-link a[data-v-522cd4d9]{color:var(--cg-color-accent);font-size:var(--cg-font-size-xs);text-decoration:none}.console-link a[data-v-522cd4d9]:hover{text-decoration:underline}.worker-card[data-v-b1be7134]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);padding:var(--cg-space-3);display:flex;flex-direction:column;gap:var(--cg-space-2)}.worker-card.offline[data-v-b1be7134]{opacity:.7}.worker-header[data-v-b1be7134]{display:flex;align-items:center;justify-content:space-between;gap:var(--cg-space-2)}.worker-status[data-v-b1be7134]{display:flex;align-items:center;gap:var(--cg-space-2)}.status-dot[data-v-b1be7134]{width:8px;height:8px;border-radius:50%}.status-dot.online[data-v-b1be7134]{background:var(--cg-color-success);box-shadow:0 0 4px var(--cg-color-success)}.status-dot.offline[data-v-b1be7134]{background:var(--cg-color-text-muted)}.status-dot.unknown[data-v-b1be7134]{background:var(--cg-color-warning)}.worker-name[data-v-b1be7134]{font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-medium);color:var(--cg-color-text-primary)}.worker-actions[data-v-b1be7134]{display:flex;gap:var(--cg-space-1)}.worker-details[data-v-b1be7134]{display:flex;align-items:center;gap:var(--cg-space-2);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-secondary)}.detail-item[data-v-b1be7134]{display:flex;align-items:center;gap:var(--cg-space-1)}.detail-label[data-v-b1be7134]{color:var(--cg-color-text-muted)}.detail-value[data-v-b1be7134]{font-family:var(--cg-font-mono)}.mode-badge[data-v-b1be7134]{text-transform:capitalize;padding:1px 6px;background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border)}.worker-stats[data-v-b1be7134]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);display:flex;align-items:center;gap:var(--cg-space-1)}.stat-item[data-v-b1be7134]{display:flex;align-items:center;gap:var(--cg-space-1)}.stat-value[data-v-b1be7134]{font-weight:var(--cg-font-weight-medium)}.stat-value.online[data-v-b1be7134]{color:var(--cg-color-success)}.stat-value.offline[data-v-b1be7134]{color:var(--cg-color-text-muted)}.add-worker-content[data-v-07a00732]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.manual-form[data-v-07a00732]{display:flex;flex-direction:column;gap:var(--cg-space-3)}.form-row[data-v-07a00732]{display:flex;flex-direction:column;gap:var(--cg-space-1)}.form-row-inline[data-v-07a00732]{display:flex;gap:var(--cg-space-3)}.form-field[data-v-07a00732]{display:flex;flex-direction:column;gap:var(--cg-space-1)}.flex-1[data-v-07a00732]{flex:1}.flex-2[data-v-07a00732]{flex:2}.form-label[data-v-07a00732]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-secondary);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.form-input[data-v-07a00732]{padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm)}.form-input[data-v-07a00732]:focus{outline:none;border-color:var(--cg-color-accent)}.api-key-wrapper[data-v-07a00732]{position:relative;display:flex;align-items:center}.api-key-wrapper .form-input[data-v-07a00732]{width:100%;padding-right:40px}.toggle-visibility[data-v-07a00732]{position:absolute;right:8px;background:transparent;border:none;color:var(--cg-color-text-muted);cursor:pointer;padding:4px;font-size:14px}.toggle-visibility[data-v-07a00732]:hover{color:var(--cg-color-text-primary)}.form-help[data-v-07a00732]{display:flex;align-items:center;gap:var(--cg-space-1);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.help-icon[data-v-07a00732]{font-size:10px}.form-help code[data-v-07a00732]{padding:1px 4px;background:var(--cg-color-bg-secondary);font-family:var(--cg-font-mono);color:var(--cg-color-accent)}.test-result[data-v-07a00732]{display:flex;align-items:flex-start;gap:var(--cg-space-2);padding:var(--cg-space-3)}.test-result.success[data-v-07a00732]{background:var(--cg-color-success-muted);border:1px solid var(--cg-color-success)}.test-result.error[data-v-07a00732]{background:var(--cg-color-error-muted);border:1px solid var(--cg-color-error)}.result-icon[data-v-07a00732]{font-weight:700}.test-result.success .result-icon[data-v-07a00732]{color:var(--cg-color-success)}.test-result.error .result-icon[data-v-07a00732]{color:var(--cg-color-error)}.result-content[data-v-07a00732]{display:flex;flex-direction:column;gap:var(--cg-space-1)}.result-message[data-v-07a00732]{font-size:var(--cg-font-size-sm);color:var(--cg-color-text-primary)}.result-detail[data-v-07a00732]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-secondary)}.modal-actions[data-v-07a00732]{display:flex;gap:var(--cg-space-2);justify-content:flex-end}.discovered-content[data-v-5a3e40a4]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.workers-list[data-v-5a3e40a4]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.worker-item[data-v-5a3e40a4]{display:flex;align-items:center;justify-content:space-between;padding:var(--cg-space-3);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border)}.worker-info[data-v-5a3e40a4]{display:flex;flex-direction:column;gap:var(--cg-space-1)}.worker-name[data-v-5a3e40a4]{color:var(--cg-color-text-primary);font-weight:var(--cg-font-weight-medium);font-size:var(--cg-font-size-sm)}.worker-address[data-v-5a3e40a4]{color:var(--cg-color-text-muted);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs)}.worker-gpu[data-v-5a3e40a4]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs)}.empty-state[data-v-5a3e40a4]{display:flex;flex-direction:column;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-6);text-align:center}.empty-icon[data-v-5a3e40a4]{font-size:24px;opacity:.5}.empty-text[data-v-5a3e40a4]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm)}.empty-help[data-v-5a3e40a4]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs)}.empty-help code[data-v-5a3e40a4]{padding:1px 4px;background:var(--cg-color-bg-secondary);font-family:var(--cg-font-mono);color:var(--cg-color-accent)}.api-key-section[data-v-5a3e40a4]{border-top:1px solid var(--cg-color-border-subtle);padding-top:var(--cg-space-4);display:flex;flex-direction:column;gap:var(--cg-space-3)}.selected-worker[data-v-5a3e40a4]{display:flex;align-items:center;gap:var(--cg-space-2);font-size:var(--cg-font-size-sm)}.selected-label[data-v-5a3e40a4]{color:var(--cg-color-text-muted)}.selected-name[data-v-5a3e40a4]{color:var(--cg-color-text-primary);font-weight:var(--cg-font-weight-medium)}.selected-address[data-v-5a3e40a4]{color:var(--cg-color-text-muted);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs)}.form-row[data-v-5a3e40a4]{display:flex;flex-direction:column;gap:var(--cg-space-1)}.form-label[data-v-5a3e40a4]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-secondary);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.form-input[data-v-5a3e40a4]{padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm)}.form-input[data-v-5a3e40a4]:focus{outline:none;border-color:var(--cg-color-accent)}.api-key-wrapper[data-v-5a3e40a4]{position:relative;display:flex;align-items:center}.api-key-wrapper .form-input[data-v-5a3e40a4]{width:100%;padding-right:40px}.toggle-visibility[data-v-5a3e40a4]{position:absolute;right:8px;background:transparent;border:none;color:var(--cg-color-text-muted);cursor:pointer;padding:4px;font-size:14px}.toggle-visibility[data-v-5a3e40a4]:hover{color:var(--cg-color-text-primary)}.form-help[data-v-5a3e40a4]{display:flex;align-items:center;gap:var(--cg-space-1);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.help-icon[data-v-5a3e40a4]{font-size:10px}.form-help code[data-v-5a3e40a4]{padding:1px 4px;background:var(--cg-color-bg-secondary);font-family:var(--cg-font-mono);color:var(--cg-color-accent)}.test-result[data-v-5a3e40a4]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-2) var(--cg-space-3);font-size:var(--cg-font-size-sm)}.test-result.success[data-v-5a3e40a4]{background:var(--cg-color-success-muted);border:1px solid var(--cg-color-success)}.test-result.error[data-v-5a3e40a4]{background:var(--cg-color-error-muted);border:1px solid var(--cg-color-error)}.result-icon[data-v-5a3e40a4]{font-weight:700}.test-result.success .result-icon[data-v-5a3e40a4]{color:var(--cg-color-success)}.test-result.error .result-icon[data-v-5a3e40a4]{color:var(--cg-color-error)}.result-message[data-v-5a3e40a4]{color:var(--cg-color-text-primary)}.modal-actions[data-v-5a3e40a4]{display:flex;gap:var(--cg-space-2);justify-content:flex-end}.deploy-content[data-v-c12720d3]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.section[data-v-c12720d3]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.section-label[data-v-c12720d3]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.loading-text[data-v-c12720d3]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);padding:var(--cg-space-3);text-align:center}.empty-remotes[data-v-c12720d3]{display:flex;flex-direction:column;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-4);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);text-align:center}.empty-icon[data-v-c12720d3]{font-size:var(--cg-font-size-xl)}.empty-text[data-v-c12720d3]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm)}.empty-help[data-v-c12720d3]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);margin:0}.remotes-list[data-v-c12720d3],.mode-options[data-v-c12720d3]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.mode-option[data-v-c12720d3]{display:flex;align-items:center;gap:var(--cg-space-2);cursor:pointer}.mode-option input[data-v-c12720d3]{accent-color:var(--cg-color-accent)}.mode-option input[data-v-c12720d3]:disabled{opacity:.5}.mode-label[data-v-c12720d3]{font-size:var(--cg-font-size-sm);color:var(--cg-color-text-primary)}.form-input[data-v-c12720d3]{padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm)}.form-input[data-v-c12720d3]:focus{outline:none;border-color:var(--cg-color-accent)}.summary-row[data-v-c12720d3]{font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary);padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle)}.sync-warning[data-v-c12720d3]{display:flex;gap:var(--cg-space-3);align-items:flex-start;padding:var(--cg-space-3);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning)}.sync-warning .warning-icon[data-v-c12720d3]{flex-shrink:0;font-size:var(--cg-font-size-lg)}.sync-warning .warning-content[data-v-c12720d3]{flex:1}.sync-warning .warning-content strong[data-v-c12720d3]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm)}.sync-warning .warning-content p[data-v-c12720d3]{margin:var(--cg-space-1) 0 0 0;color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs)}.modal-actions[data-v-c12720d3]{display:flex;gap:var(--cg-space-2);justify-content:flex-end}.custom-tab[data-v-1637dead]{padding:var(--cg-space-3)}.section-header[data-v-1637dead]{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--cg-space-3)}.section-title[data-v-1637dead]{font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-secondary);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.section-actions[data-v-1637dead]{display:flex;gap:var(--cg-space-2)}.loading-state[data-v-1637dead]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--cg-space-6);color:var(--cg-color-text-muted)}.loading-state .spinner[data-v-1637dead]{width:16px;height:16px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin-1637dead .8s linear infinite;margin-bottom:var(--cg-space-2)}@keyframes spin-1637dead{to{transform:rotate(360deg)}}.empty-state[data-v-1637dead]{padding:var(--cg-space-2)}.empty-card[data-v-1637dead]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);padding:var(--cg-space-4)}.empty-text[data-v-1637dead]{display:block;color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-medium);margin-bottom:var(--cg-space-3)}.empty-help[data-v-1637dead]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);margin:0 0 var(--cg-space-2) 0}.setup-steps[data-v-1637dead]{margin:0;padding-left:var(--cg-space-4);color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs);line-height:1.6}.setup-steps li[data-v-1637dead]{margin-bottom:var(--cg-space-2)}.setup-steps code[data-v-1637dead]{display:inline-block;margin-top:var(--cg-space-1);padding:var(--cg-space-1) var(--cg-space-2);background:var(--cg-color-bg-secondary);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);color:var(--cg-color-accent)}.workers-list[data-v-1637dead]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.scan-result[data-v-1637dead]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-2) var(--cg-space-3);margin-top:var(--cg-space-3);font-size:var(--cg-font-size-xs)}.scan-result.success[data-v-1637dead]{background:var(--cg-color-success-muted);border:1px solid var(--cg-color-success)}.scan-result.info[data-v-1637dead]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border)}.scan-icon[data-v-1637dead]{flex-shrink:0}.scan-result.success .scan-icon[data-v-1637dead]{color:var(--cg-color-success)}.scan-message[data-v-1637dead]{flex:1;color:var(--cg-color-text-primary)}.dismiss-btn[data-v-1637dead]{background:transparent;border:none;color:var(--cg-color-text-muted);cursor:pointer;padding:0 var(--cg-space-1);font-size:var(--cg-font-size-md)}.dismiss-btn[data-v-1637dead]:hover{color:var(--cg-color-text-primary)}.settings-content[data-v-b21588ad]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.settings-section[data-v-b21588ad]{display:flex;flex-direction:column;gap:var(--cg-space-3)}.section-header[data-v-b21588ad]{display:flex;align-items:center;gap:var(--cg-space-2)}.section-title[data-v-b21588ad]{font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-medium);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);color:var(--cg-color-text-primary)}.section-description[data-v-b21588ad]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);margin:0;line-height:1.5}.ssh-warning[data-v-b21588ad]{display:flex;align-items:flex-start;gap:var(--cg-space-2);padding:var(--cg-space-3);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning)}.warning-icon[data-v-b21588ad]{color:var(--cg-color-warning);font-weight:700;font-size:var(--cg-font-size-sm)}.warning-content[data-v-b21588ad]{font-size:var(--cg-font-size-xs);line-height:1.5}.warning-content strong[data-v-b21588ad]{color:var(--cg-color-text-primary)}.warning-content p[data-v-b21588ad]{margin:var(--cg-space-1) 0 0 0;color:var(--cg-color-text-secondary)}.warning-content code[data-v-b21588ad]{padding:1px 4px;background:var(--cg-color-bg-secondary);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs)}.form-row[data-v-b21588ad]{display:flex;flex-direction:column;gap:var(--cg-space-1)}.form-label[data-v-b21588ad]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-secondary);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.token-wrapper[data-v-b21588ad]{display:flex;align-items:center;gap:var(--cg-space-1)}.form-input[data-v-b21588ad]{flex:1;padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm)}.form-input[data-v-b21588ad]:focus{outline:none;border-color:var(--cg-color-accent)}.toggle-visibility[data-v-b21588ad]{padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);text-transform:uppercase;cursor:pointer}.toggle-visibility[data-v-b21588ad]:hover{color:var(--cg-color-text-primary);border-color:var(--cg-color-border-strong)}.form-help[data-v-b21588ad]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);font-style:italic}.test-result[data-v-b21588ad]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-2) var(--cg-space-3);font-size:var(--cg-font-size-sm)}.test-result.success[data-v-b21588ad]{background:var(--cg-color-success-muted);border:1px solid var(--cg-color-success)}.test-result.error[data-v-b21588ad]{background:var(--cg-color-error-muted);border:1px solid var(--cg-color-error)}.result-icon[data-v-b21588ad]{font-weight:700}.test-result.success .result-icon[data-v-b21588ad]{color:var(--cg-color-success)}.test-result.error .result-icon[data-v-b21588ad]{color:var(--cg-color-error)}.result-message[data-v-b21588ad]{color:var(--cg-color-text-primary)}.token-actions[data-v-b21588ad]{display:flex;gap:var(--cg-space-2)}.deploy-info[data-v-d4e32a10]{display:flex;flex-direction:column;gap:var(--cg-space-3)}.info-section strong[data-v-d4e32a10]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm)}.info-section p[data-v-d4e32a10]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs);margin:var(--cg-space-1) 0 0 0;line-height:1.5}.info-section ul[data-v-d4e32a10]{margin:var(--cg-space-2) 0 0 0;padding-left:var(--cg-space-4);color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs);line-height:1.6}.info-section li[data-v-d4e32a10]{margin-bottom:var(--cg-space-1)}.info-section li strong[data-v-d4e32a10]{font-size:var(--cg-font-size-xs)}.header-info[data-v-d256ff6d]{flex:1;display:flex;flex-direction:column;gap:6px}.header-title[data-v-d256ff6d]{color:var(--cg-color-accent);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-size:var(--cg-font-size-sm);margin:0;font-weight:var(--cg-font-weight-normal)}.commit-hash[data-v-d256ff6d]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-base);color:var(--cg-color-info);font-weight:var(--cg-font-weight-semibold)}.commit-refs[data-v-d256ff6d]{display:flex;gap:6px;flex-wrap:wrap}.ref-badge[data-v-d256ff6d]{padding:2px 8px;background:transparent;border:1px solid var(--cg-color-accent);color:var(--cg-color-accent);font-size:var(--cg-font-size-xs);font-family:var(--cg-font-mono);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.commit-message[data-v-d256ff6d]{font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-primary);margin-bottom:6px}.commit-date[data-v-d256ff6d]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);margin-bottom:var(--cg-space-4)}.loading[data-v-d256ff6d]{text-align:center;padding:var(--cg-space-6);color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}.changes-section[data-v-d256ff6d]{margin-top:var(--cg-space-2)}.stats-row[data-v-d256ff6d]{display:flex;gap:16px;padding:10px 12px;background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);margin-bottom:var(--cg-space-4);font-size:var(--cg-font-size-sm);font-family:var(--cg-font-mono)}.stat[data-v-d256ff6d]{color:var(--cg-color-text-muted)}.stat.insertions[data-v-d256ff6d]{color:var(--cg-color-success)}.stat.deletions[data-v-d256ff6d]{color:var(--cg-color-error)}.change-group[data-v-d256ff6d]{margin-bottom:var(--cg-space-4)}.change-item[data-v-d256ff6d]{display:flex;align-items:center;gap:8px;padding:6px 8px;font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary);font-family:var(--cg-font-mono);background:var(--cg-color-bg-tertiary);border-left:2px solid transparent;margin-bottom:2px}.change-icon[data-v-d256ff6d]{font-family:var(--cg-font-mono);font-weight:var(--cg-font-weight-bold);width:14px;text-align:center;font-size:var(--cg-font-size-base)}.change-item.added[data-v-d256ff6d]{border-left-color:var(--cg-color-success)}.change-item.added .change-icon[data-v-d256ff6d]{color:var(--cg-color-success)}.change-item.modified[data-v-d256ff6d]{border-left-color:var(--cg-color-warning)}.change-item.modified .change-icon[data-v-d256ff6d]{color:var(--cg-color-warning)}.change-item.deleted[data-v-d256ff6d]{border-left-color:var(--cg-color-error)}.change-item.deleted .change-icon[data-v-d256ff6d]{color:var(--cg-color-error)}.version[data-v-d256ff6d]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.base-textarea-wrapper[data-v-c6d16c93]{display:flex;flex-direction:column;gap:4px}.base-textarea[data-v-c6d16c93]{width:100%;padding:10px 12px;background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-md);color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm);font-family:inherit;resize:vertical;line-height:var(--cg-line-height-normal);transition:all var(--cg-transition-fast)}.base-textarea[data-v-c6d16c93]:focus{outline:none;border-color:var(--cg-color-accent);box-shadow:0 0 0 2px var(--cg-color-accent-muted)}.base-textarea[data-v-c6d16c93]:disabled{opacity:.5;cursor:not-allowed}.base-textarea-count[data-v-c6d16c93]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);text-align:right}.base-checkbox[data-v-bf17c831]{display:inline-flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.base-checkbox.disabled[data-v-bf17c831]{opacity:.5;cursor:not-allowed}.base-checkbox-input[data-v-bf17c831]{position:absolute;opacity:0;pointer-events:none}.base-checkbox-box[data-v-bf17c831]{width:18px;height:18px;border:2px solid var(--cg-color-border);border-radius:var(--cg-radius-sm);background:var(--cg-color-bg-tertiary);display:flex;align-items:center;justify-content:center;transition:all var(--cg-transition-fast);flex-shrink:0}.base-checkbox:hover:not(.disabled) .base-checkbox-box[data-v-bf17c831]{border-color:var(--cg-color-accent)}.base-checkbox-input:checked+.base-checkbox-box[data-v-bf17c831]{background:var(--cg-color-accent);border-color:var(--cg-color-accent);color:var(--cg-color-text-inverse)}.base-checkbox-input:focus+.base-checkbox-box[data-v-bf17c831]{box-shadow:0 0 0 2px var(--cg-color-accent-muted)}.base-checkbox-label[data-v-bf17c831]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm)}.modal-overlay[data-v-5f897631]{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--cg-color-bg-overlay);display:flex;align-items:center;justify-content:center;z-index:10005;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.commit-popover[data-v-5f897631]{background:var(--cg-color-bg-primary);border:2px solid var(--cg-color-border);box-shadow:var(--cg-shadow-xl);min-width:400px;max-width:500px;display:flex;flex-direction:column}.commit-popover.modal[data-v-5f897631]{border-radius:var(--cg-radius-lg);animation:modalSlideIn-5f897631 .2s ease}@keyframes modalSlideIn-5f897631{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.popover-header[data-v-5f897631]{padding:var(--cg-space-3);border-bottom:1px solid var(--cg-color-border);background:var(--cg-color-bg-tertiary);display:flex;justify-content:space-between;align-items:center}.popover-title[data-v-5f897631]{color:var(--cg-color-accent);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-size:var(--cg-font-size-sm);margin:0;flex:1}.close-btn[data-v-5f897631]{background:transparent;border:1px solid transparent;color:var(--cg-color-text-primary);cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.close-btn[data-v-5f897631]:hover{background:var(--cg-color-bg-hover);border-color:var(--cg-color-border-subtle)}.popover-body[data-v-5f897631]{padding:var(--cg-space-3);max-height:400px;overflow-y:auto}.popover-footer[data-v-5f897631]{padding:var(--cg-space-3);border-top:1px solid var(--cg-color-border);background:var(--cg-color-bg-tertiary);display:flex;justify-content:flex-end;gap:8px}.changes-summary[data-v-5f897631]{background:var(--cg-color-bg-tertiary);border-radius:var(--cg-radius-md);padding:8px;margin-bottom:12px;font-size:var(--cg-font-size-xs)}.change-item[data-v-5f897631]{display:flex;align-items:center;gap:6px;padding:2px 0}.change-icon[data-v-5f897631]{font-family:monospace;font-weight:600;width:12px;text-align:center}.change-icon.new[data-v-5f897631]{color:var(--cg-color-success)}.change-icon.modified[data-v-5f897631]{color:var(--cg-color-warning)}.change-icon.deleted[data-v-5f897631]{color:var(--cg-color-error)}.no-changes[data-v-5f897631],.loading[data-v-5f897631]{text-align:center;padding:12px;color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}.message-section[data-v-5f897631]{margin-bottom:8px}.issues-error[data-v-5f897631]{background:var(--cg-color-error-muted);border:1px solid var(--cg-color-error);border-radius:var(--cg-radius-md);padding:10px;margin-bottom:12px}.error-header[data-v-5f897631]{display:flex;align-items:center;gap:6px;margin-bottom:8px;color:var(--cg-color-error)}.error-icon[data-v-5f897631]{font-size:14px;line-height:1}.error-title[data-v-5f897631]{font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-medium)}.issues-list[data-v-5f897631]{margin-bottom:10px;font-size:var(--cg-font-size-xs);color:var(--cg-color-text-secondary)}.issue-item[data-v-5f897631]{padding:4px 0;line-height:1.4}.issue-item strong[data-v-5f897631]{color:var(--cg-color-text-primary)}.workflow-state[data-v-5f897631]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);margin-left:4px}.allow-issues-toggle[data-v-5f897631]{margin-top:8px;font-size:var(--cg-font-size-xs)}.modal-overlay[data-v-e9c5253e]{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--cg-color-bg-overlay);display:flex;align-items:center;justify-content:center;z-index:10005;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-content[data-v-e9c5253e]{background:var(--cg-color-bg-primary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-lg);box-shadow:var(--cg-shadow-lg);max-width:500px;width:90%;max-height:80vh;overflow-y:auto}.modal-header[data-v-e9c5253e]{display:flex;justify-content:space-between;align-items:center;padding:var(--cg-space-4);border-bottom:1px solid var(--cg-color-border-subtle)}.modal-title[data-v-e9c5253e]{margin:0;font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-accent);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.modal-close[data-v-e9c5253e]{background:transparent;border:none;color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xl);cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;transition:color var(--cg-transition-fast)}.modal-close[data-v-e9c5253e]:hover{color:var(--cg-color-text-primary)}.modal-body[data-v-e9c5253e]{padding:var(--cg-space-4);display:flex;flex-direction:column;gap:var(--cg-space-3)}.switch-message[data-v-e9c5253e]{margin:0;font-size:var(--cg-font-size-base);color:var(--cg-color-text-primary);line-height:1.5}.switch-message strong[data-v-e9c5253e]{color:var(--cg-color-accent);font-family:var(--cg-font-mono)}.warning-box[data-v-e9c5253e]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-3);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-sm);color:var(--cg-color-warning)}.warning-icon[data-v-e9c5253e]{font-size:var(--cg-font-size-lg);flex-shrink:0}.switch-details[data-v-e9c5253e]{margin:0;font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary);line-height:1.5}.switch-eta[data-v-e9c5253e]{margin:0;font-size:var(--cg-font-size-sm);color:var(--cg-color-text-muted);font-style:italic}.modal-actions[data-v-e9c5253e]{padding:var(--cg-space-4);border-top:1px solid var(--cg-color-border-subtle);display:flex;gap:var(--cg-space-2);justify-content:flex-end}.modal-overlay[data-v-768a5078]{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--cg-color-bg-overlay);display:flex;align-items:center;justify-content:center;z-index:10006;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.modal-content[data-v-768a5078]{background:var(--cg-color-bg-primary);border:1px solid var(--cg-color-accent);border-radius:var(--cg-radius-lg);box-shadow:var(--cg-shadow-xl),0 0 20px var(--cg-color-accent-muted);max-width:500px;width:90%;animation:modalSlideIn-768a5078 .3s ease}@keyframes modalSlideIn-768a5078{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.modal-header[data-v-768a5078]{padding:var(--cg-space-4);border-bottom:1px solid var(--cg-color-border-subtle);text-align:center}.modal-title[data-v-768a5078]{margin:0;font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-accent);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.modal-body[data-v-768a5078]{padding:var(--cg-space-5);display:flex;flex-direction:column;gap:var(--cg-space-4)}.progress-info[data-v-768a5078]{display:flex;justify-content:space-between;align-items:center;gap:var(--cg-space-2)}.progress-percentage[data-v-768a5078]{font-size:var(--cg-font-size-xl);font-weight:var(--cg-font-weight-bold);color:var(--cg-color-accent);font-family:var(--cg-font-mono)}.progress-state[data-v-768a5078]{font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary);text-align:right;flex:1}.switch-steps[data-v-768a5078]{display:flex;flex-direction:column;gap:var(--cg-space-2);padding:var(--cg-space-3);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);border-radius:var(--cg-radius-sm)}.switch-step[data-v-768a5078]{display:flex;align-items:center;gap:var(--cg-space-2);font-size:var(--cg-font-size-sm);transition:all var(--cg-transition-fast)}.switch-step.pending[data-v-768a5078],.switch-step.pending .step-icon[data-v-768a5078]{color:var(--cg-color-text-muted)}.switch-step.active[data-v-768a5078]{color:var(--cg-color-accent);font-weight:var(--cg-font-weight-medium)}.switch-step.active .step-icon[data-v-768a5078]{color:var(--cg-color-accent);animation:spin-768a5078 1s linear infinite}@keyframes spin-768a5078{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.switch-step.completed[data-v-768a5078],.switch-step.completed .step-icon[data-v-768a5078]{color:var(--cg-color-success)}.step-icon[data-v-768a5078]{flex-shrink:0;font-size:var(--cg-font-size-base);width:16px;display:inline-block;text-align:center}.step-label[data-v-768a5078]{flex:1}.progress-warning[data-v-768a5078]{margin:0;padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-info-muted);border:1px solid var(--cg-color-info);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-sm);color:var(--cg-color-info);text-align:center}.modal-overlay[data-v-7cad7518]{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--cg-color-bg-overlay);display:flex;align-items:center;justify-content:center;z-index:10005;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-content[data-v-7cad7518]{background:var(--cg-color-bg-primary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-lg);box-shadow:var(--cg-shadow-lg);max-width:600px;width:90%;max-height:80vh;overflow-y:auto}.modal-header[data-v-7cad7518]{display:flex;justify-content:space-between;align-items:center;padding:var(--cg-space-4);border-bottom:1px solid var(--cg-color-border-subtle)}.modal-title[data-v-7cad7518]{margin:0;font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-accent);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.modal-close[data-v-7cad7518]{background:transparent;border:none;color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xl);cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;transition:color var(--cg-transition-fast)}.modal-close[data-v-7cad7518]:hover{color:var(--cg-color-text-primary)}.modal-body[data-v-7cad7518]{padding:var(--cg-space-4);display:flex;flex-direction:column;gap:var(--cg-space-3)}.sync-message[data-v-7cad7518]{margin:0;font-size:var(--cg-font-size-base);color:var(--cg-color-text-primary);line-height:1.5}.node-section[data-v-7cad7518]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.section-title[data-v-7cad7518]{margin:0;font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-secondary);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.node-list[data-v-7cad7518]{display:flex;flex-direction:column;gap:var(--cg-space-1);max-height:200px;overflow-y:auto;padding:var(--cg-space-2);background:var(--cg-color-bg-secondary);border-radius:var(--cg-radius-sm)}.node-item[data-v-7cad7518]{font-size:var(--cg-font-size-sm);font-family:var(--cg-font-mono);line-height:1.5}.node-item.add[data-v-7cad7518]{color:var(--cg-color-info)}.node-item.remove[data-v-7cad7518]{color:var(--cg-color-warning)}.warning-box[data-v-7cad7518]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-3);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-sm);color:var(--cg-color-warning)}.warning-icon[data-v-7cad7518]{font-size:var(--cg-font-size-lg);flex-shrink:0}.modal-actions[data-v-7cad7518]{padding:var(--cg-space-4);border-top:1px solid var(--cg-color-border-subtle);display:flex;gap:var(--cg-space-2);justify-content:flex-end}.social-buttons[data-v-4f846342]{display:flex;align-items:center;gap:4px}.icon-btn[data-v-4f846342]{background:transparent;border:1px solid transparent;color:var(--cg-color-text-primary);cursor:pointer;padding:6px;display:flex;align-items:center;justify-content:center}.icon-btn[data-v-4f846342]:hover{background:var(--cg-color-bg-hover);border-color:var(--cg-color-border-subtle)}.sponsor-btn[data-v-4f846342]{gap:4px;padding:4px 8px;border:1px solid var(--cg-color-border-subtle);color:var(--cg-color-text-secondary);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);opacity:.7}.sponsor-btn[data-v-4f846342]:hover{opacity:1;border-color:#db61a2;color:#db61a2}.icon-btn.social-link[data-v-4f846342]{opacity:.7}.icon-btn.social-link[data-v-4f846342]:hover{opacity:1}.footer-info[data-v-8bc3db0a]{display:flex;align-items:center;gap:var(--cg-space-3);font-size:10px;color:var(--cg-color-text-muted)}.version[data-v-8bc3db0a]{opacity:.7}.made-by[data-v-8bc3db0a]{display:flex;align-items:center;gap:2px}.heart-icon[data-v-8bc3db0a]{color:#db61a2}[data-v-fac00ae7] .base-modal-overlay{z-index:10004}.base-modal-title[data-v-9a9aadc0]{color:var(--cg-color-accent);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-size:var(--cg-font-size-sm);margin:0;flex:1}.header-actions[data-v-9a9aadc0]{display:flex;align-items:center;gap:var(--cg-space-2)}.wizard-step[data-v-9a9aadc0]{min-height:300px}.wizard-intro[data-v-9a9aadc0]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-sm);line-height:1.6;margin-bottom:var(--cg-space-4)}.form-field[data-v-9a9aadc0]{display:flex;flex-direction:column;gap:var(--cg-space-1);margin-bottom:var(--cg-space-4)}.form-field--checkbox[data-v-9a9aadc0]{flex-direction:row;align-items:center}.form-label[data-v-9a9aadc0]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.form-input[data-v-9a9aadc0],.form-select[data-v-9a9aadc0]{background:var(--cg-color-bg-primary);border:1px solid var(--cg-color-border-subtle);color:var(--cg-color-text-primary);padding:var(--cg-space-2) var(--cg-space-3);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm)}.form-input[data-v-9a9aadc0]:hover,.form-select[data-v-9a9aadc0]:hover{border-color:var(--cg-color-border)}.form-input[data-v-9a9aadc0]:focus,.form-select[data-v-9a9aadc0]:focus{outline:none;border-color:var(--cg-color-accent)}.form-select[data-v-9a9aadc0]{cursor:pointer}.form-select[data-v-9a9aadc0]:disabled{opacity:.5;cursor:not-allowed}.form-checkbox[data-v-9a9aadc0]{display:flex;align-items:center;gap:var(--cg-space-2);cursor:pointer;font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary)}.form-checkbox input[type=checkbox][data-v-9a9aadc0]{width:16px;height:16px;accent-color:var(--cg-color-accent);cursor:pointer}.form-error[data-v-9a9aadc0]{color:var(--cg-color-error);font-size:var(--cg-font-size-xs);margin-top:var(--cg-space-1)}.form-info[data-v-9a9aadc0]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);margin-top:var(--cg-space-1)}.form-suggestion[data-v-9a9aadc0]{color:var(--cg-color-accent);font-size:var(--cg-font-size-xs);margin-top:var(--cg-space-1)}.cli-warning[data-v-9a9aadc0]{background:#ffc1071a;border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-md);padding:var(--cg-space-3);margin-bottom:var(--cg-space-4)}.cli-warning-header[data-v-9a9aadc0]{display:flex;align-items:center;gap:var(--cg-space-2);margin-bottom:var(--cg-space-2)}.cli-warning-title[data-v-9a9aadc0]{flex:1}.cli-warning-close[data-v-9a9aadc0]{background:transparent;border:none;color:var(--cg-color-text-muted);cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;opacity:.7}.cli-warning-close[data-v-9a9aadc0]:hover{opacity:1;color:var(--cg-color-text-primary)}.cli-warning-icon[data-v-9a9aadc0]{color:var(--cg-color-warning);font-size:var(--cg-font-size-lg);font-weight:700}.cli-warning-title[data-v-9a9aadc0]{font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-primary)}.cli-warning-text[data-v-9a9aadc0]{font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary);margin:0 0 var(--cg-space-2) 0;line-height:1.5}.cli-warning-commands[data-v-9a9aadc0]{display:flex;align-items:center;gap:var(--cg-space-2);flex-wrap:wrap}.cli-warning-commands code[data-v-9a9aadc0]{background:var(--cg-color-bg-primary);padding:var(--cg-space-1) var(--cg-space-2);border-radius:var(--cg-radius-sm);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm)}.cli-warning-or[data-v-9a9aadc0]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs)}.env-landing[data-v-9a9aadc0]{display:flex;flex-direction:column;gap:var(--cg-space-3)}.landing-option[data-v-9a9aadc0]{display:flex;align-items:center;gap:var(--cg-space-3);padding:var(--cg-space-4);background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border-subtle);cursor:pointer;text-align:left;width:100%;transition:all var(--cg-transition-fast)}.landing-option[data-v-9a9aadc0]:hover{border-color:var(--cg-color-accent);background:var(--cg-color-bg-tertiary)}.option-icon[data-v-9a9aadc0]{font-size:var(--cg-font-size-2xl);flex-shrink:0}.option-content[data-v-9a9aadc0]{flex:1;display:flex;flex-direction:column;gap:var(--cg-space-1)}.option-title[data-v-9a9aadc0]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-semibold)}.option-description[data-v-9a9aadc0]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-sm)}.option-arrow[data-v-9a9aadc0]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-lg)}.landing-divider[data-v-9a9aadc0]{display:flex;align-items:center;gap:var(--cg-space-4);margin:var(--cg-space-2) 0}.landing-divider[data-v-9a9aadc0]:before,.landing-divider[data-v-9a9aadc0]:after{content:"";flex:1;height:1px;background:var(--cg-color-border-subtle)}.landing-divider span[data-v-9a9aadc0]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);text-transform:lowercase}.env-list[data-v-9a9aadc0]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.env-option[data-v-9a9aadc0]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border-subtle);border-radius:var(--cg-radius-sm);cursor:pointer;transition:all var(--cg-transition-fast)}.env-option[data-v-9a9aadc0]:hover{border-color:var(--cg-color-border)}.env-option.selected[data-v-9a9aadc0]{border-color:var(--cg-color-accent);background:var(--cg-color-bg-tertiary)}.env-option input[type=radio][data-v-9a9aadc0]{accent-color:var(--cg-color-accent)}.env-name[data-v-9a9aadc0]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm);color:var(--cg-color-text-primary)}.env-create[data-v-9a9aadc0],.env-import[data-v-9a9aadc0]{display:flex;flex-direction:column}.env-creating[data-v-9a9aadc0]{display:flex;flex-direction:column;gap:var(--cg-space-4);padding:var(--cg-space-4)}.creating-intro[data-v-9a9aadc0]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-base);margin:0;text-align:center}.creating-intro strong[data-v-9a9aadc0]{color:var(--cg-color-text-primary)}.progress-warning[data-v-9a9aadc0]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);text-align:center;margin:0}.progress-check-loading[data-v-9a9aadc0]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--cg-space-3);padding:var(--cg-space-8);min-height:200px}.loading-spinner[data-v-9a9aadc0]{width:32px;height:32px;border:3px solid var(--cg-color-border);border-top-color:var(--cg-color-accent);border-radius:50%;animation:spin-9a9aadc0 .8s linear infinite}@keyframes spin-9a9aadc0{to{transform:rotate(360deg)}}.loading-text[data-v-9a9aadc0]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}.icon-btn[data-v-9a9aadc0]{background:transparent;border:1px solid transparent;color:var(--cg-color-text-primary);cursor:pointer;padding:6px;display:flex;align-items:center;justify-content:center}.icon-btn[data-v-9a9aadc0]:hover{background:var(--cg-color-bg-hover);border-color:var(--cg-color-border-subtle)}.header-divider[data-v-9a9aadc0]{width:1px;height:16px;background:var(--cg-color-border-subtle);margin:0 4px;align-self:center}.wizard-footer[data-v-9a9aadc0]{display:flex;justify-content:space-between;align-items:center;width:100%}.wizard-footer-actions[data-v-9a9aadc0]{display:flex;align-items:center;gap:var(--cg-space-2)}.comfygit-panel[data-v-037b3ee3]{display:flex;flex-direction:column;height:70vh;width:100%;background:var(--cg-color-bg-primary);color:var(--cg-color-text-primary);border:2px solid var(--cg-color-border);overflow:hidden;font-family:var(--cg-font-mono)}.panel-header[data-v-037b3ee3]{padding:var(--cg-space-3) var(--cg-space-4);border-bottom:1px solid var(--cg-color-border);display:flex;justify-content:space-between;align-items:center;background:var(--cg-color-bg-tertiary);flex-shrink:0}.header-left[data-v-037b3ee3]{display:flex;align-items:center;gap:12px}.panel-title[data-v-037b3ee3]{font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);margin:0;color:var(--cg-color-accent);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.header-info[data-v-037b3ee3]{display:flex;align-items:center;gap:6px;font-size:var(--cg-font-size-xs)}.env-name[data-v-037b3ee3]{color:var(--cg-color-text-secondary)}.branch-name[data-v-037b3ee3]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs)}.status-dot[data-v-037b3ee3]{width:8px;height:8px;border-radius:50%}.status-dot.success[data-v-037b3ee3]{background:var(--cg-color-success)}.status-dot.warning[data-v-037b3ee3]{background:var(--cg-color-warning)}.status-dot.error[data-v-037b3ee3]{background:var(--cg-color-error)}.status-dot.neutral[data-v-037b3ee3]{background:var(--cg-color-text-muted)}.header-actions[data-v-037b3ee3]{display:flex;gap:4px}.icon-btn[data-v-037b3ee3]{background:transparent;border:1px solid transparent;color:var(--cg-color-text-primary);cursor:pointer;padding:6px;display:flex;align-items:center;justify-content:center}.icon-btn[data-v-037b3ee3]:hover{background:var(--cg-color-bg-hover);border-color:var(--cg-color-border-subtle)}.icon-btn.spinning svg[data-v-037b3ee3]{animation:spin-037b3ee3 1s linear infinite}@keyframes spin-037b3ee3{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.header-divider[data-v-037b3ee3]{width:1px;height:16px;background:var(--cg-color-border-subtle);margin:0 4px;align-self:center}.env-switcher[data-v-037b3ee3]{padding:var(--cg-space-3) var(--cg-space-4);border-bottom:1px solid var(--cg-color-border);background:var(--cg-color-bg-secondary);flex-shrink:0}.env-switcher-header[data-v-037b3ee3]{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.env-switcher-label[data-v-037b3ee3]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.env-control-buttons[data-v-037b3ee3]{display:flex;gap:var(--cg-space-2)}.env-control-btn[data-v-037b3ee3]{padding:2px 8px;font-family:var(--cg-font-mono);font-size:10px;text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);background:transparent;border:1px solid var(--cg-color-border);color:var(--cg-color-text-muted);cursor:pointer;transition:all var(--cg-transition-fast)}.env-control-btn[data-v-037b3ee3]:hover{border-color:var(--cg-color-accent);color:var(--cg-color-accent)}.env-control-btn.stop[data-v-037b3ee3]{border-color:var(--cg-color-error);color:var(--cg-color-error);opacity:.7}.env-control-btn.stop[data-v-037b3ee3]:hover{opacity:1}.env-switcher-btn[data-v-037b3ee3]{width:100%;display:flex;justify-content:space-between;align-items:center;background:transparent;border:1px solid var(--cg-color-border-subtle);color:var(--cg-color-text-primary);padding:8px 12px;cursor:pointer;font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm)}.env-switcher-btn[data-v-037b3ee3]:hover{border-color:var(--cg-color-accent);background:var(--cg-color-bg-hover)}.switch-indicator[data-v-037b3ee3]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.panel-main[data-v-037b3ee3]{display:flex;flex:1;overflow:hidden}.sidebar[data-v-037b3ee3]{width:234px;background:var(--cg-color-bg-tertiary);border-right:1px solid var(--cg-color-border);display:flex;flex-direction:column;flex-shrink:0}.sidebar-content[data-v-037b3ee3]{flex:1;overflow-y:auto}.sidebar-footer[data-v-037b3ee3]{padding:var(--cg-space-2) var(--cg-space-3);border-top:1px solid var(--cg-color-border-subtle);flex-shrink:0}.sidebar-section[data-v-037b3ee3]{padding:var(--cg-space-3) 0}.sidebar-section-title[data-v-037b3ee3]{padding:0 var(--cg-space-3);margin-bottom:var(--cg-space-2);color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.sidebar-item[data-v-037b3ee3]{width:100%;padding:8px var(--cg-space-3);background:transparent;border:none;border-left:2px solid transparent;color:var(--cg-color-text-secondary);text-align:left;cursor:pointer;font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-normal)}.sidebar-item[data-v-037b3ee3]:hover{background:var(--cg-color-bg-hover);color:var(--cg-color-accent)}.sidebar-item.active[data-v-037b3ee3]{border-left-color:var(--cg-color-accent);color:var(--cg-color-accent);background:var(--cg-color-bg-hover)}.sidebar-badge[data-v-037b3ee3]{margin-left:auto;padding:1px 6px;background:var(--cg-color-success);color:var(--cg-color-bg-primary);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-semibold)}.sidebar-divider[data-v-037b3ee3]{height:1px;background:var(--cg-color-border-subtle);margin:var(--cg-space-2) var(--cg-space-3)}.content-area[data-v-037b3ee3]{flex:1;overflow-y:auto;padding:var(--cg-space-4);-webkit-user-select:text;user-select:text}.loading[data-v-037b3ee3]{text-align:center;padding:var(--cg-space-6);color:var(--cg-color-text-muted)}.error-message[data-v-037b3ee3]{background:transparent;border:1px solid var(--cg-color-error);padding:var(--cg-space-3);color:var(--cg-color-error);font-size:var(--cg-font-size-sm);-webkit-user-select:text;user-select:text;cursor:text}.view-placeholder[data-v-037b3ee3]{padding:var(--cg-space-4)}.view-title[data-v-037b3ee3]{color:var(--cg-color-accent);font-size:var(--cg-font-size-lg);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);margin:0 0 var(--cg-space-4) 0}.view-placeholder p[data-v-037b3ee3]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-base)}.dialog-overlay[data-v-037b3ee3]{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--cg-color-bg-overlay);display:flex;align-items:center;justify-content:center;z-index:10003}.dialog-content[data-v-037b3ee3]{background:var(--cg-color-bg-primary);border:2px solid var(--cg-color-border);box-shadow:0 0 16px #00ff4180;max-width:780px;width:90vw;max-height:80vh;display:flex;flex-direction:column}.env-selector-dialog[data-v-037b3ee3]{width:780px}.dialog-header[data-v-037b3ee3]{padding:var(--cg-space-4);border-bottom:1px solid var(--cg-color-border);background:var(--cg-color-bg-tertiary);display:flex;justify-content:space-between;align-items:center}.dialog-title[data-v-037b3ee3]{color:var(--cg-color-accent);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-size:var(--cg-font-size-sm);text-shadow:0 0 8px var(--cg-color-accent);margin:0}.dialog-body[data-v-037b3ee3]{padding:var(--cg-space-4);overflow-y:auto}.dialog-message[data-v-037b3ee3]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base);margin:0 0 var(--cg-space-4) 0}.env-list[data-v-037b3ee3]{display:flex;flex-direction:column;gap:var(--cg-space-3)}.env-item[data-v-037b3ee3]{display:flex;justify-content:space-between;align-items:center;padding:var(--cg-space-3);border:1px solid var(--cg-color-border-subtle);background:var(--cg-color-bg-tertiary)}.env-item.current[data-v-037b3ee3]{border-color:var(--cg-color-accent)}.env-info[data-v-037b3ee3]{flex:1}.env-name-row[data-v-037b3ee3]{display:flex;align-items:center;gap:8px;margin-bottom:4px}.env-indicator[data-v-037b3ee3]{color:var(--cg-color-accent)}.env-name[data-v-037b3ee3]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-semibold)}.env-branch[data-v-037b3ee3]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}.current-label[data-v-037b3ee3]{margin-left:auto;padding:2px 8px;background:transparent;border:1px solid var(--cg-color-border-subtle);color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.env-stats[data-v-037b3ee3]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}.switch-btn[data-v-037b3ee3]{padding:6px 12px;background:transparent;border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);cursor:pointer}.switch-btn[data-v-037b3ee3]:hover{border-color:var(--cg-color-accent);color:var(--cg-color-accent);box-shadow:0 0 8px #00ff414d}.toast-container[data-v-037b3ee3]{position:fixed;bottom:16px;right:16px;z-index:10004;display:flex;flex-direction:column;gap:8px;pointer-events:none}.toast[data-v-037b3ee3]{display:flex;align-items:center;gap:8px;padding:10px 14px;background:var(--cg-color-bg-primary);border:1px solid var(--cg-color-border);box-shadow:0 0 8px #00ff4166;font-size:var(--cg-font-size-xs);color:var(--cg-color-text-primary);pointer-events:auto;min-width:234px;max-width:390px;font-family:var(--cg-font-mono)}.toast.info[data-v-037b3ee3]{border-left:3px solid var(--cg-color-info)}.toast.success[data-v-037b3ee3]{border-left:3px solid var(--cg-color-success)}.toast.warning[data-v-037b3ee3]{border-left:3px solid var(--cg-color-warning)}.toast.error[data-v-037b3ee3]{border-left:3px solid var(--cg-color-error)}.toast-message[data-v-037b3ee3]{flex:1}.toast-enter-active[data-v-037b3ee3],.toast-leave-active[data-v-037b3ee3]{transition:all .3s ease}.toast-enter-from[data-v-037b3ee3],.toast-leave-to[data-v-037b3ee3]{opacity:0;transform:translate(100%)}.toast-move[data-v-037b3ee3]{transition:transform .3s ease}.sidebar-content[data-v-037b3ee3]::-webkit-scrollbar,.content-area[data-v-037b3ee3]::-webkit-scrollbar{width:8px}.sidebar-content[data-v-037b3ee3]::-webkit-scrollbar-track,.content-area[data-v-037b3ee3]::-webkit-scrollbar-track{background:var(--cg-color-bg-tertiary)}.sidebar-content[data-v-037b3ee3]::-webkit-scrollbar-thumb,.content-area[data-v-037b3ee3]::-webkit-scrollbar-thumb{background:var(--cg-color-border-subtle);border:1px solid var(--cg-color-bg-tertiary)}.sidebar-content[data-v-037b3ee3]::-webkit-scrollbar-thumb:hover,.content-area[data-v-037b3ee3]::-webkit-scrollbar-thumb:hover{background:var(--cg-color-accent)}.download-item[data-v-2110df65]{padding:var(--cg-space-2);background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border-subtle)}.download-item.status-downloading[data-v-2110df65]{border-color:var(--cg-color-accent)}.download-item.status-completed[data-v-2110df65]{border-color:var(--cg-color-success)}.download-item.status-failed[data-v-2110df65]{border-color:var(--cg-color-error)}.download-item.status-paused[data-v-2110df65]{border-color:var(--cg-color-warning)}.item-header[data-v-2110df65]{display:flex;justify-content:space-between;align-items:flex-start}.item-info[data-v-2110df65]{flex:1;min-width:0}.filename[data-v-2110df65]{font-size:var(--cg-font-size-sm);color:var(--cg-color-text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.metadata[data-v-2110df65]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);margin-top:2px;display:flex;gap:var(--cg-space-2)}.item-actions[data-v-2110df65]{display:flex;gap:4px;flex-shrink:0}.action-icon[data-v-2110df65]{width:20px;height:20px;padding:0;background:transparent;border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary);cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center}.action-icon[data-v-2110df65]:hover{background:var(--cg-color-bg-hover)}.action-icon.cancel[data-v-2110df65]:hover,.action-icon.remove[data-v-2110df65]:hover{border-color:var(--cg-color-error);color:var(--cg-color-error)}.action-icon.retry[data-v-2110df65]:hover{border-color:var(--cg-color-warning);color:var(--cg-color-warning)}.action-icon.resume[data-v-2110df65]{font-size:10px}.action-icon.resume[data-v-2110df65]:hover{border-color:var(--cg-color-success);color:var(--cg-color-success)}.progress-section[data-v-2110df65]{margin-top:var(--cg-space-1)}.progress-bar[data-v-2110df65]{height:3px;background:var(--cg-color-bg-tertiary);border-radius:2px;overflow:hidden}.progress-fill[data-v-2110df65]{height:100%;background:var(--cg-color-accent);transition:width .2s ease}.progress-stats[data-v-2110df65]{display:flex;justify-content:space-between;margin-top:2px;font-size:10px;color:var(--cg-color-text-muted);font-family:var(--cg-font-mono)}.speed[data-v-2110df65]{color:var(--cg-color-accent)}.status-msg[data-v-2110df65]{font-size:var(--cg-font-size-xs);margin-top:var(--cg-space-1)}.status-msg.paused[data-v-2110df65]{color:var(--cg-color-warning)}.status-msg.queued[data-v-2110df65]{color:var(--cg-color-text-muted)}.status-msg.completed[data-v-2110df65]{color:var(--cg-color-success)}.status-msg.failed[data-v-2110df65]{color:var(--cg-color-error)}.retries[data-v-2110df65]{opacity:.7}.model-download-queue[data-v-60751cfa]{position:fixed;bottom:16px;right:340px;width:360px;background:var(--cg-color-bg-primary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-md);box-shadow:0 2px 12px #0000004d;z-index:0;display:flex;flex-direction:column;overflow:hidden}.queue-header[data-v-60751cfa]{padding:var(--cg-space-2) var(--cg-space-3);border-bottom:1px solid var(--cg-color-border);display:flex;justify-content:space-between;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none;background:var(--cg-color-bg-secondary)}.queue-header[data-v-60751cfa]:hover{background:var(--cg-color-bg-hover)}.queue-title[data-v-60751cfa]{display:flex;align-items:center;gap:var(--cg-space-2);color:var(--cg-color-text-primary);font-weight:var(--cg-font-weight-semibold);font-size:var(--cg-font-size-sm)}.icon[data-v-60751cfa]{font-size:var(--cg-font-size-base)}.count[data-v-60751cfa]{color:var(--cg-color-text-muted);font-weight:400;font-size:var(--cg-font-size-xs)}.action-label[data-v-60751cfa]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);text-transform:lowercase;font-style:italic}.overall-progress[data-v-60751cfa]{padding:var(--cg-space-2) var(--cg-space-3)}.progress-bar[data-v-60751cfa]{height:4px;background:var(--cg-color-bg-tertiary);border-radius:2px;overflow:hidden}.progress-fill[data-v-60751cfa]{height:100%;background:var(--cg-color-accent);transition:width .3s ease}.current-mini[data-v-60751cfa]{display:flex;justify-content:space-between;margin-top:var(--cg-space-1);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.current-mini .filename[data-v-60751cfa]{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.current-mini .speed[data-v-60751cfa]{color:var(--cg-color-accent);font-family:var(--cg-font-mono)}.queue-content[data-v-60751cfa]{max-height:450px;overflow-y:auto;padding:var(--cg-space-2);display:flex;flex-direction:column;gap:var(--cg-space-2)}.section[data-v-60751cfa]{display:flex;flex-direction:column;gap:var(--cg-space-1)}.section-header[data-v-60751cfa]{display:flex;justify-content:space-between;align-items:center}.section-label[data-v-60751cfa]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.section-label.failed[data-v-60751cfa]{color:var(--cg-color-error)}.section-label.paused[data-v-60751cfa]{color:var(--cg-color-warning)}.resume-all-btn[data-v-60751cfa]{padding:4px 10px;background:var(--cg-color-warning);border:none;color:#000;font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-semibold);cursor:pointer}.resume-all-btn[data-v-60751cfa]:hover{filter:brightness(1.1)}.clear-btn[data-v-60751cfa]{padding:2px 6px;background:transparent;border:1px solid var(--cg-color-border-subtle);color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);cursor:pointer}.clear-btn[data-v-60751cfa]:hover{color:var(--cg-color-error);border-color:var(--cg-color-error)}.items-list[data-v-60751cfa]{display:flex;flex-direction:column;gap:var(--cg-space-1)}[data-comfygit-theme]{user-select:text;-webkit-user-select:text}:root{--cg-font-display: system-ui, sans-serif;--cg-font-body: system-ui, sans-serif;--cg-font-mono: ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, monospace;--cg-font-size-xs: 10px;--cg-font-size-sm: 12px;--cg-font-size-base: 14px;--cg-font-size-lg: 16px;--cg-font-size-xl: 20px;--cg-font-size-2xl: 24px;--cg-font-weight-normal: 400;--cg-font-weight-medium: 500;--cg-font-weight-semibold: 600;--cg-font-weight-bold: 700;--cg-line-height-tight: 1.2;--cg-line-height-normal: 1.5;--cg-line-height-relaxed: 1.75;--cg-letter-spacing-tight: -.02em;--cg-letter-spacing-normal: 0;--cg-letter-spacing-wide: .05em;--cg-letter-spacing-wider: .1em;--cg-color-bg-primary: #353535;--cg-color-bg-secondary: #2a2a2a;--cg-color-bg-tertiary: #222222;--cg-color-bg-hover: #404040;--cg-color-bg-overlay: rgba(0, 0, 0, .5);--cg-color-text-primary: #dddddd;--cg-color-text-secondary: #999999;--cg-color-text-muted: #666666;--cg-color-text-inverse: #111111;--cg-color-border: #4a4a4a;--cg-color-border-subtle: #3a3a3a;--cg-color-border-strong: #5a5a5a;--cg-color-accent: #f97316;--cg-color-accent-hover: #ea580c;--cg-color-accent-muted: rgba(249, 115, 22, .2);--cg-color-success: #22c55e;--cg-color-success-muted: rgba(34, 197, 94, .15);--cg-color-warning: #fbbf24;--cg-color-warning-muted: rgba(251, 191, 36, .15);--cg-color-error: #ef4444;--cg-color-error-muted: rgba(239, 68, 68, .15);--cg-color-info: #3b82f6;--cg-color-info-muted: rgba(59, 130, 246, .15);--cg-space-0-5: 2px;--cg-space-1: 4px;--cg-space-2: 8px;--cg-space-3: 12px;--cg-space-4: 16px;--cg-space-5: 20px;--cg-space-6: 24px;--cg-space-8: 32px;--cg-space-10: 40px;--cg-space-12: 48px;--cg-radius-none: 0;--cg-radius-sm: 2px;--cg-radius-md: 4px;--cg-radius-lg: 8px;--cg-radius-xl: 12px;--cg-radius-2xl: 16px;--cg-radius-full: 9999px;--cg-shadow-sm: 0 1px 2px rgba(0, 0, 0, .2);--cg-shadow-md: 0 4px 12px rgba(0, 0, 0, .3);--cg-shadow-lg: 0 8px 32px rgba(0, 0, 0, .4);--cg-shadow-xl: 0 16px 48px rgba(0, 0, 0, .5);--cg-blur-sm: 4px;--cg-blur-md: 8px;--cg-blur-lg: 16px;--cg-transition-fast: .1s ease;--cg-transition-normal: .2s ease;--cg-transition-slow: .3s ease;--cg-z-dropdown: 100;--cg-z-modal: 1000;--cg-z-popover: 1001;--cg-z-tooltip: 1002;--cg-panel-width: 580px;--cg-panel-height: 70vh;--cg-panel-max-width: 90vw;--cg-panel-max-height: 85vh;--cg-btn-gradient-start: #fb923c;--cg-btn-gradient-end: #ea580c;--cg-btn-shadow-inset: inset 0 1px 0 rgba(255, 255, 255, .2), inset 0 -1px 0 rgba(0, 0, 0, .15);--cg-decoration-title-prefix: "";--cg-decoration-label-prefix: "";--cg-decoration-label-suffix: "";--cg-decoration-status-animation: none;--cg-decoration-status-shape: circle;--cg-shadow-accent: rgba(249, 115, 22, .3);--cg-shadow-accent-strong: rgba(249, 115, 22, .5);--cg-shadow-error: rgba(239, 68, 68, .3);--cg-shadow-success: rgba(34, 197, 94, .3);--cg-text-shadow-title: none;--cg-text-shadow-accent: none} +.panel-layout[data-v-21565df9]{display:flex;flex-direction:column;height:100%}.panel-layout-content[data-v-21565df9]{flex:1;overflow-y:auto;min-height:0}.panel-layout-content[data-v-21565df9]::-webkit-scrollbar{width:8px}.panel-layout-content[data-v-21565df9]::-webkit-scrollbar-track{background:var(--cg-color-bg-tertiary)}.panel-layout-content[data-v-21565df9]::-webkit-scrollbar-thumb{background:var(--cg-color-border-subtle);border:1px solid var(--cg-color-bg-tertiary)}.panel-layout-content[data-v-21565df9]::-webkit-scrollbar-thumb:hover{background:var(--cg-color-accent)}.panel-title[data-v-c3875efc]{margin:0;font-weight:var(--cg-font-weight-normal);text-shadow:var(--cg-text-shadow-title)}.panel-title.view[data-v-c3875efc]{color:var(--cg-color-accent);font-size:var(--cg-font-size-lg);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.panel-title.dialog[data-v-c3875efc]{color:var(--cg-color-accent);font-size:var(--cg-font-size-sm);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.panel-title-prefix[data-v-c3875efc]{opacity:.7}.panel-title-prefix-theme[data-v-c3875efc]:before{content:var(--cg-decoration-title-prefix);opacity:.7}.info-button[data-v-6fc7f16d]{background:transparent;border:none;color:var(--cg-color-text-muted);cursor:pointer;padding:var(--cg-space-0-5);display:flex;align-items:center;justify-content:center;transition:all var(--cg-transition-fast)}.info-button[data-v-6fc7f16d]:hover{color:var(--cg-color-accent);transform:scale(1.1)}.panel-header[data-v-55a62cd6]{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--cg-space-4)}.panel-header.stacked[data-v-55a62cd6]{flex-direction:column;align-items:flex-start;gap:var(--cg-space-3)}.header-left[data-v-55a62cd6]{display:flex;align-items:center;gap:var(--cg-space-2)}.header-actions[data-v-55a62cd6]{display:flex;gap:var(--cg-space-2);flex-wrap:wrap}.section-title[data-v-559361eb]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);margin:0;font-weight:var(--cg-font-weight-normal);text-shadow:var(--cg-text-shadow-accent)}.section-title[data-v-559361eb]:before{content:var(--cg-decoration-label-prefix)}.section-title[data-v-559361eb]:after{content:var(--cg-decoration-label-suffix)}.section-title.clickable[data-v-559361eb]{cursor:pointer;-webkit-user-select:none;user-select:none}.section-title.clickable[data-v-559361eb]:hover{color:var(--cg-color-accent)}.section-title-count[data-v-559361eb]{margin-left:var(--cg-space-1)}.section-title-icon[data-v-559361eb]{margin-left:var(--cg-space-2);font-size:var(--cg-font-size-xs)}.status-grid[data-v-73b7ba3f]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);border-radius:var(--cg-radius-md);overflow:hidden}.status-grid__columns[data-v-73b7ba3f]{display:grid;grid-template-columns:1fr 1fr;gap:0}.status-grid__column[data-v-73b7ba3f]{display:flex;flex-direction:column;gap:var(--cg-space-1);padding:var(--cg-space-3) var(--cg-space-4)}.status-grid__column--right[data-v-73b7ba3f]{border-left:1px solid var(--cg-color-border-subtle)}.status-grid__title[data-v-73b7ba3f]{font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-semibold);text-transform:uppercase;color:var(--cg-color-text-muted);margin:0 0 var(--cg-space-2) 0;letter-spacing:var(--cg-letter-spacing-wide)}.status-grid__footer[data-v-73b7ba3f]{border-top:1px solid var(--cg-color-border-subtle);padding:var(--cg-space-3) var(--cg-space-4)}.status-item[data-v-6f929183]{display:flex;align-items:center;gap:var(--cg-space-2);font-size:var(--cg-font-size-sm);color:var(--cg-color-text-primary);line-height:1.4}.status-item.is-separator[data-v-6f929183]{margin-top:var(--cg-space-1);padding-top:var(--cg-space-1);border-top:1px solid var(--cg-color-border-subtle)}.status-item__icon[data-v-6f929183]{font-size:var(--cg-font-size-xs);opacity:.7;flex-shrink:0}.status-item__count[data-v-6f929183]{font-weight:var(--cg-font-weight-semibold);min-width:16px;flex-shrink:0}.status-item__label[data-v-6f929183]{color:var(--cg-color-text-secondary);flex:1}.status-item--new .status-item__count[data-v-6f929183]{color:var(--cg-color-success)}.status-item--modified .status-item__count[data-v-6f929183]{color:var(--cg-color-warning)}.status-item--deleted .status-item__count[data-v-6f929183]{color:var(--cg-color-error)}.status-item--synced .status-item__count[data-v-6f929183],.status-item--synced .status-item__icon[data-v-6f929183]{color:var(--cg-color-text-muted)}.status-item--ok[data-v-6f929183]{color:var(--cg-color-success)}.status-item--ok .status-item__icon[data-v-6f929183]{opacity:1}.status-item--ok .status-item__label[data-v-6f929183]{color:var(--cg-color-success)}.issue-card[data-v-df6aa348]{display:flex;flex-direction:column;gap:var(--cg-space-3);padding:var(--cg-space-3) var(--cg-space-4);border-radius:var(--cg-radius-md);border:1px solid;margin-bottom:var(--cg-space-3)}.issue-card--info[data-v-df6aa348]{background:var(--cg-color-info-muted);border-color:var(--cg-color-accent);color:var(--cg-color-text-primary)}.issue-card--warning[data-v-df6aa348]{background:var(--cg-color-warning-muted);border-color:var(--cg-color-warning);color:var(--cg-color-text-primary)}.issue-card--error[data-v-df6aa348]{background:var(--cg-color-error-muted);border-color:var(--cg-color-error);color:var(--cg-color-text-primary)}.issue-card__header[data-v-df6aa348]{display:flex;align-items:center;gap:var(--cg-space-2)}.issue-card__icon[data-v-df6aa348]{font-size:var(--cg-font-size-lg);flex-shrink:0}.issue-card--warning .issue-card__icon[data-v-df6aa348]{color:var(--cg-color-warning)}.issue-card--error .issue-card__icon[data-v-df6aa348]{color:var(--cg-color-error)}.issue-card--info .issue-card__icon[data-v-df6aa348]{color:var(--cg-color-accent)}.issue-card__title[data-v-df6aa348]{font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-primary);margin:0}.issue-card__content[data-v-df6aa348]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.issue-card__description[data-v-df6aa348]{font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary);margin:0;line-height:1.5}.issue-card__items[data-v-df6aa348]{display:flex;flex-direction:column;gap:var(--cg-space-1);padding-left:var(--cg-space-2)}.issue-card__item[data-v-df6aa348]{display:flex;gap:var(--cg-space-2);font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary);line-height:1.5}.issue-card__bullet[data-v-df6aa348]{color:var(--cg-color-text-muted);flex-shrink:0}.issue-card__actions[data-v-df6aa348]{display:flex;gap:var(--cg-space-2);flex-wrap:wrap}.action-btn[data-v-772abe47]{font-family:var(--cg-font-mono);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);cursor:pointer;transition:all var(--cg-transition-fast);display:inline-flex;align-items:center;justify-content:center;gap:var(--cg-space-1);white-space:nowrap;border:1px solid}.action-btn[data-v-772abe47]:disabled{opacity:.5;cursor:not-allowed}.action-btn.loading[data-v-772abe47]{pointer-events:none}.spinner[data-v-772abe47]{width:12px;height:12px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin-772abe47 .6s linear infinite}@keyframes spin-772abe47{to{transform:rotate(360deg)}}.action-btn.xs[data-v-772abe47]{padding:var(--cg-space-1) var(--cg-space-2);font-size:var(--cg-font-size-xs)}.action-btn.sm[data-v-772abe47]{padding:var(--cg-space-1) var(--cg-space-3);font-size:var(--cg-font-size-xs)}.action-btn.md[data-v-772abe47]{padding:var(--cg-space-2) var(--cg-space-4);font-size:var(--cg-font-size-sm)}.action-btn.primary[data-v-772abe47]{background:transparent;color:var(--cg-color-accent);border-color:var(--cg-color-accent)}.action-btn.primary[data-v-772abe47]:hover:not(:disabled){background:var(--cg-color-bg-hover);box-shadow:0 0 8px var(--cg-shadow-accent)}.action-btn.secondary[data-v-772abe47]{background:transparent;color:var(--cg-color-text-secondary);border-color:var(--cg-color-border)}.action-btn.secondary[data-v-772abe47]:hover:not(:disabled){color:var(--cg-color-text-primary);border-color:var(--cg-color-text-primary)}.action-btn.destructive[data-v-772abe47]{background:transparent;color:var(--cg-color-error);border-color:var(--cg-color-error)}.action-btn.destructive[data-v-772abe47]:hover:not(:disabled){background:var(--cg-color-bg-hover);box-shadow:0 0 8px var(--cg-shadow-error)}.action-btn.ghost[data-v-772abe47]{background:transparent;color:var(--cg-color-text-muted);border-color:transparent}.action-btn.ghost[data-v-772abe47]:hover:not(:disabled){background:var(--cg-color-bg-hover);border-color:var(--cg-color-border-subtle);color:var(--cg-color-accent)}.action-btn.link[data-v-772abe47]{background:transparent;color:var(--cg-color-info);border:none;text-decoration:underline;padding:0}.action-btn.link[data-v-772abe47]:hover:not(:disabled){color:var(--cg-color-accent)}.empty-state[data-v-4466284f]{text-align:center;padding:var(--cg-space-8) var(--cg-space-6);color:var(--cg-color-text-muted)}.empty-icon[data-v-4466284f]{font-size:var(--cg-font-size-2xl);margin-bottom:var(--cg-space-3);opacity:.5}.empty-message[data-v-4466284f]{font-size:var(--cg-font-size-sm);margin:0 0 var(--cg-space-4) 0}.detail-label[data-v-75e9eeb8]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-normal)}.detail-value[data-v-2f186e4c]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-sm);flex:1;word-break:break-word}.detail-value.mono[data-v-2f186e4c]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs)}.detail-value.hash[data-v-2f186e4c]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);word-break:break-all}.detail-value.warning[data-v-2f186e4c]{color:var(--cg-color-warning)}.detail-value.error[data-v-2f186e4c]{color:var(--cg-color-error)}.detail-value.truncate[data-v-2f186e4c]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detail-row[data-v-ef15664a]{display:flex;gap:var(--cg-space-2);font-size:var(--cg-font-size-sm);align-items:baseline}.modal-overlay[data-v-e2b37122]{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--cg-color-bg-overlay);display:flex;align-items:center;justify-content:center;z-index:10005;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-content[data-v-e2b37122]{background:var(--cg-color-bg-primary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-lg);box-shadow:var(--cg-shadow-lg);max-width:700px;width:90%;max-height:85vh;display:flex;flex-direction:column}.modal-header[data-v-e2b37122]{display:flex;justify-content:space-between;align-items:center;padding:var(--cg-space-4);border-bottom:1px solid var(--cg-color-border-subtle);flex-shrink:0}.modal-title[data-v-e2b37122]{margin:0;font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-accent);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.modal-close[data-v-e2b37122]{background:transparent;border:none;color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xl);cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;transition:color var(--cg-transition-fast)}.modal-close[data-v-e2b37122]:hover{color:var(--cg-color-text-primary)}.modal-body[data-v-e2b37122]{padding:var(--cg-space-4);overflow-y:auto;flex:1;min-height:0}.modal-actions[data-v-e2b37122]{padding:var(--cg-space-4);border-top:1px solid var(--cg-color-border-subtle);display:flex;gap:var(--cg-space-2);justify-content:flex-end;flex-shrink:0}.status-section[data-v-e2b37122]{margin-bottom:var(--cg-space-5)}.status-section[data-v-e2b37122]:last-child{margin-bottom:0}.section-header-row[data-v-e2b37122]{display:flex;justify-content:space-between;align-items:center}.link-btn[data-v-e2b37122]{background:transparent;border:none;color:var(--cg-color-accent);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);cursor:pointer;padding:4px 8px;text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);transition:opacity var(--cg-transition-fast)}.link-btn[data-v-e2b37122]:hover{opacity:.8;text-decoration:underline}.workflow-group[data-v-e2b37122]{margin-bottom:var(--cg-space-3)}.workflow-group-header[data-v-e2b37122]{display:flex;align-items:center;gap:var(--cg-space-2);margin-bottom:var(--cg-space-2);font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary)}.workflow-group-header.clickable[data-v-e2b37122]{cursor:pointer;-webkit-user-select:none;user-select:none}.workflow-group-header.clickable[data-v-e2b37122]:hover{color:var(--cg-color-accent)}.workflow-status-icon[data-v-e2b37122]{font-size:var(--cg-font-size-base);flex-shrink:0}.workflow-status-icon.new[data-v-e2b37122]{color:var(--cg-color-info)}.workflow-status-icon.modified[data-v-e2b37122]{color:var(--cg-color-warning)}.workflow-status-icon.deleted[data-v-e2b37122]{color:var(--cg-color-error)}.workflow-status-icon.synced[data-v-e2b37122]{color:var(--cg-color-success)}.workflow-status-icon.broken[data-v-e2b37122]{color:var(--cg-color-error)}.workflow-group-title[data-v-e2b37122]{font-weight:var(--cg-font-weight-semibold);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);flex:1}.expand-icon[data-v-e2b37122]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.workflow-list[data-v-e2b37122]{display:flex;flex-direction:column;gap:var(--cg-space-1);padding-left:var(--cg-space-5)}.workflow-item[data-v-e2b37122]{display:flex;align-items:center;gap:var(--cg-space-2)}.workflow-name[data-v-e2b37122]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm);color:var(--cg-color-text-primary)}.workflow-issue[data-v-e2b37122]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);margin-left:var(--cg-space-2);font-style:italic}.change-group[data-v-e2b37122]{margin-bottom:var(--cg-space-3)}.change-group-header[data-v-e2b37122]{display:flex;align-items:center;gap:var(--cg-space-2);margin-bottom:var(--cg-space-2);font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary)}.change-icon[data-v-e2b37122]{font-size:var(--cg-font-size-lg);font-weight:var(--cg-font-weight-bold);font-family:var(--cg-font-mono);flex-shrink:0}.change-icon.add[data-v-e2b37122]{color:var(--cg-color-info)}.change-icon.remove[data-v-e2b37122]{color:var(--cg-color-error)}.change-icon.modified[data-v-e2b37122]{color:var(--cg-color-warning)}.change-group-title[data-v-e2b37122]{font-weight:var(--cg-font-weight-semibold);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.change-list[data-v-e2b37122]{display:flex;flex-direction:column;gap:var(--cg-space-1);padding-left:var(--cg-space-5)}.change-item[data-v-e2b37122]{display:flex;align-items:center;gap:var(--cg-space-2)}.node-name[data-v-e2b37122]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm);color:var(--cg-color-text-primary)}.dev-badge[data-v-e2b37122]{display:inline-block;padding:2px 6px;background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);text-transform:uppercase;font-weight:var(--cg-font-weight-semibold)}.drift-item[data-v-e2b37122]{margin-bottom:var(--cg-space-3)}.drift-list[data-v-e2b37122]{margin-top:var(--cg-space-2);padding-left:var(--cg-space-4);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary)}.drift-list-item[data-v-e2b37122]{margin-bottom:var(--cg-space-1)}.drift-list-more[data-v-e2b37122]{margin-top:var(--cg-space-1);color:var(--cg-color-text-muted);font-style:italic}.warning-box[data-v-e2b37122]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-3);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-sm);color:var(--cg-color-warning);margin-bottom:var(--cg-space-3)}.warning-icon[data-v-e2b37122]{font-size:var(--cg-font-size-lg);flex-shrink:0}.info-box[data-v-e2b37122]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-3);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary);margin-bottom:var(--cg-space-3)}.info-icon[data-v-e2b37122]{font-size:var(--cg-font-size-lg);flex-shrink:0;color:var(--cg-color-info)}.help-text[data-v-e2b37122]{margin:0;font-size:var(--cg-font-size-sm);color:var(--cg-color-text-muted);line-height:1.5}.empty-state-inline[data-v-e2b37122]{display:flex;align-items:center;gap:var(--cg-space-3);padding:var(--cg-space-4);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);border-radius:var(--cg-radius-sm)}.empty-icon[data-v-e2b37122]{font-size:var(--cg-font-size-2xl);flex-shrink:0}.empty-message[data-v-e2b37122]{flex:1}.empty-message strong[data-v-e2b37122]{display:block;color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base);margin-bottom:var(--cg-space-1)}.empty-message p[data-v-e2b37122]{margin:0;font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary);line-height:1.5}.version-mismatch[data-v-e2b37122]{display:flex;align-items:center;gap:var(--cg-space-1)}.version-actual[data-v-e2b37122]{color:var(--cg-color-error);text-decoration:line-through}.version-expected[data-v-e2b37122]{color:var(--cg-color-success)}.repair-action[data-v-e2b37122]{margin-top:var(--cg-space-4);padding-top:var(--cg-space-3);border-top:1px solid var(--cg-color-border-subtle)}.repair-action .help-text[data-v-e2b37122]{margin-top:var(--cg-space-2)}.health-section-wrapper[data-v-55fcd77f]{position:relative}.health-section-header[data-v-55fcd77f]{position:relative;display:flex;justify-content:space-between;align-items:flex-start}.show-all-button[data-v-55fcd77f]{position:absolute;top:0;right:0}.footer-title[data-v-55fcd77f]{font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-semibold);text-transform:uppercase;color:var(--cg-color-text-muted);margin:0 0 var(--cg-space-2) 0;letter-spacing:var(--cg-letter-spacing-wide)}.suggestions-content[data-v-55fcd77f]{display:flex;align-items:center;justify-content:space-between;gap:var(--cg-space-3)}.suggestions-text[data-v-55fcd77f]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-sm)}.fade-enter-active[data-v-55fcd77f],.fade-leave-active[data-v-55fcd77f]{transition:opacity var(--cg-transition-fast)}.fade-enter-from[data-v-55fcd77f],.fade-leave-to[data-v-55fcd77f]{opacity:0}.no-issues-text[data-v-55fcd77f]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}.text-input[data-v-0380d08f]{width:100%;padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-bg-primary);border:1px solid var(--cg-color-border-subtle);color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm);transition:border-color var(--cg-transition-fast),box-shadow var(--cg-transition-fast)}.text-input.monospace[data-v-0380d08f]{font-family:var(--cg-font-mono)}.text-input[data-v-0380d08f]:focus{outline:none;border-color:var(--cg-color-accent);box-shadow:0 0 8px var(--cg-shadow-accent)}.text-input[data-v-0380d08f]:disabled{opacity:.5;cursor:not-allowed}.text-input.error[data-v-0380d08f]{border-color:var(--cg-color-error)}.text-input.error[data-v-0380d08f]:focus{box-shadow:0 0 8px var(--cg-shadow-error)}.text-input[data-v-0380d08f]::placeholder{color:var(--cg-color-text-muted)}.branch-create-form[data-v-7c500394]{display:flex;flex-direction:column;gap:var(--cg-space-2);padding:var(--cg-space-3);margin-bottom:var(--cg-space-3);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle)}.form-actions[data-v-7c500394]{display:flex;gap:var(--cg-space-2)}.branch-list-item[data-v-c6581a24]{display:flex;align-items:center;padding:var(--cg-space-2) var(--cg-space-3);border-bottom:1px solid var(--cg-color-border-subtle);font-size:var(--cg-font-size-sm);transition:background var(--cg-transition-fast)}.branch-list-item[data-v-c6581a24]:last-child{border-bottom:none}.branch-list-item[data-v-c6581a24]:hover{background:var(--cg-color-bg-hover)}.branch-list-item.clickable[data-v-c6581a24]{cursor:pointer}.branch-list-item.current[data-v-c6581a24]{background:var(--cg-color-accent-muted);border-left:3px solid var(--cg-color-accent);padding-left:calc(var(--cg-space-3) - 3px)}.branch-list-item__indicator[data-v-c6581a24]{font-size:10px;margin-right:var(--cg-space-2);color:var(--cg-color-text-muted);flex-shrink:0}.branch-list-item.current .branch-list-item__indicator[data-v-c6581a24]{color:var(--cg-color-accent)}.branch-list-item__name[data-v-c6581a24]{flex:1;color:var(--cg-color-text-primary);font-family:var(--cg-font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.branch-list-item__actions[data-v-c6581a24]{display:flex;align-items:center;gap:var(--cg-space-2);flex-shrink:0}.branch-list-item__current-label[data-v-c6581a24]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);padding:var(--cg-space-1) var(--cg-space-2);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-family:var(--cg-font-mono)}.base-modal-overlay[data-v-8dab1081]{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--cg-color-bg-overlay);display:flex;align-items:center;justify-content:center;z-index:10003;animation:fadeIn-8dab1081 .15s ease}@keyframes fadeIn-8dab1081{0%{opacity:0}to{opacity:1}}.base-modal-content[data-v-8dab1081]{background:var(--cg-color-bg-primary);border:2px solid var(--cg-color-border);box-shadow:var(--cg-shadow-xl);max-height:80vh;width:90vw;display:flex;flex-direction:column;animation:slideIn-8dab1081 .2s ease}@keyframes slideIn-8dab1081{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.base-modal-content.sm[data-v-8dab1081]{max-width:400px}.base-modal-content.md[data-v-8dab1081]{max-width:600px}.base-modal-content.lg[data-v-8dab1081]{max-width:800px}.base-modal-content.xl[data-v-8dab1081]{max-width:1000px}.base-modal-content.fixed-height[data-v-8dab1081]{height:70vh;max-height:70vh}.base-modal-header[data-v-8dab1081]{padding:var(--cg-space-4);border-bottom:1px solid var(--cg-color-border);background:var(--cg-color-bg-tertiary);display:flex;justify-content:space-between;align-items:center;gap:var(--cg-space-2)}.base-modal-title[data-v-8dab1081]{color:var(--cg-color-accent);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-size:var(--cg-font-size-sm);margin:0;flex:1}.base-modal-close[data-v-8dab1081]{background:transparent;border:1px solid transparent;color:var(--cg-color-text-primary);cursor:pointer;padding:6px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.base-modal-close[data-v-8dab1081]:hover{background:var(--cg-color-bg-hover);border-color:var(--cg-color-border-subtle)}.base-modal-body[data-v-8dab1081]{flex:1;overflow-y:auto;padding:var(--cg-space-4)}.base-modal-body[data-v-8dab1081]::-webkit-scrollbar{width:8px}.base-modal-body[data-v-8dab1081]::-webkit-scrollbar-track{background:var(--cg-color-bg-tertiary)}.base-modal-body[data-v-8dab1081]::-webkit-scrollbar-thumb{background:var(--cg-color-border-subtle);border:1px solid var(--cg-color-bg-tertiary)}.base-modal-body[data-v-8dab1081]::-webkit-scrollbar-thumb:hover{background:var(--cg-color-accent)}.base-modal-loading[data-v-8dab1081],.base-modal-error[data-v-8dab1081]{text-align:center;padding:var(--cg-space-4);color:var(--cg-color-text-muted)}.base-modal-error[data-v-8dab1081]{color:var(--cg-color-error);border:1px solid var(--cg-color-error);background:var(--cg-color-error-muted)}.base-modal-footer[data-v-8dab1081]{padding:var(--cg-space-4);border-top:1px solid var(--cg-color-border);background:var(--cg-color-bg-tertiary);display:flex;justify-content:flex-end;gap:8px}.base-btn[data-v-f3452606]{border-radius:var(--cg-radius-md);font-family:var(--cg-font-mono);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-weight:var(--cg-font-weight-medium);cursor:pointer;transition:all var(--cg-transition-fast);display:inline-flex;align-items:center;justify-content:center;gap:6px;position:relative}.base-btn[data-v-f3452606]:disabled{opacity:.5;cursor:not-allowed}.base-btn.loading[data-v-f3452606]{pointer-events:none}.spinner[data-v-f3452606]{width:12px;height:12px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin-f3452606 .6s linear infinite}@keyframes spin-f3452606{to{transform:rotate(360deg)}}.base-btn.sm[data-v-f3452606]{padding:6px 12px;font-size:var(--cg-font-size-xs)}.base-btn.md[data-v-f3452606]{padding:8px 16px;font-size:var(--cg-font-size-sm)}.base-btn.lg[data-v-f3452606]{padding:10px 20px;font-size:var(--cg-font-size-base)}.base-btn.full-width[data-v-f3452606]{width:100%}.base-btn.primary[data-v-f3452606]{background:var(--cg-color-accent);color:var(--cg-color-text-inverse);border:none}.base-btn.primary[data-v-f3452606]:hover:not(:disabled){background:var(--cg-color-accent-hover);transform:translateY(-1px);box-shadow:0 2px 8px var(--cg-color-accent-muted)}.base-btn.secondary[data-v-f3452606]{background:transparent;color:var(--cg-color-text-secondary);border:1px solid var(--cg-color-border)}.base-btn.secondary[data-v-f3452606]:hover:not(:disabled){background:var(--cg-color-bg-hover);border-color:var(--cg-color-border-strong);color:var(--cg-color-text-primary)}.base-btn.danger[data-v-f3452606]{background:var(--cg-color-error);color:var(--cg-color-text-inverse);border:none}.base-btn.danger[data-v-f3452606]:hover:not(:disabled){background:#dc2626;transform:translateY(-1px)}.base-btn.ghost[data-v-f3452606]{background:transparent;color:var(--cg-color-text-muted);border:1px solid transparent}.base-btn.ghost[data-v-f3452606]:hover:not(:disabled){background:var(--cg-color-bg-hover);border-color:var(--cg-color-border-subtle);color:var(--cg-color-accent)}.base-btn.link[data-v-f3452606]{background:transparent;color:var(--cg-color-info);border:none;text-decoration:underline;padding:0}.base-btn.link[data-v-f3452606]:hover:not(:disabled){color:var(--cg-color-accent)}.commit-list[data-v-8c5ee761]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);overflow-y:auto}.commit-list[data-v-8c5ee761]::-webkit-scrollbar{width:8px}.commit-list[data-v-8c5ee761]::-webkit-scrollbar-track{background:var(--cg-color-bg-tertiary)}.commit-list[data-v-8c5ee761]::-webkit-scrollbar-thumb{background:var(--cg-color-border-subtle);border:1px solid var(--cg-color-bg-tertiary)}.commit-list[data-v-8c5ee761]::-webkit-scrollbar-thumb:hover{background:var(--cg-color-accent)}.commit-hash[data-v-7c333cc6]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);color:var(--cg-color-info);font-weight:var(--cg-font-weight-medium, 500);flex-shrink:0}.commit-item[data-v-dd7c621b]{display:flex;align-items:baseline;gap:var(--cg-space-2);padding:var(--cg-space-2) var(--cg-space-3);border-bottom:1px solid var(--cg-color-border-subtle);position:relative;transition:background var(--cg-transition-fast),border-color var(--cg-transition-fast)}.commit-item[data-v-dd7c621b]:last-child{border-bottom:none}.commit-item.clickable[data-v-dd7c621b]{cursor:pointer}.commit-item.clickable[data-v-dd7c621b]:hover{background:var(--cg-color-bg-hover)}.commit-item:hover .commit-actions[data-v-dd7c621b]{opacity:1}.commit-message[data-v-dd7c621b]{flex:1;color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.commit-date[data-v-dd7c621b]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);white-space:nowrap;flex-shrink:0;margin-right:32px}.commit-actions[data-v-dd7c621b]{position:absolute;right:var(--cg-space-2);top:50%;transform:translateY(-50%);opacity:0;transition:opacity .15s;display:flex;gap:var(--cg-space-1)}.header-info[data-v-2e5437cc]{flex:1;display:flex;flex-direction:column;gap:6px}.header-title[data-v-2e5437cc]{color:var(--cg-color-accent);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-size:var(--cg-font-size-sm);margin:0;font-weight:var(--cg-font-weight-normal)}.branch-name[data-v-2e5437cc]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-base);color:var(--cg-color-info);font-weight:var(--cg-font-weight-semibold)}.current-badge[data-v-2e5437cc]{display:inline-block;padding:2px 8px;background:transparent;border:1px solid var(--cg-color-accent);color:var(--cg-color-accent);font-size:var(--cg-font-size-xs);font-family:var(--cg-font-mono);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);width:fit-content}.branch-meta[data-v-2e5437cc]{font-size:var(--cg-font-size-sm);color:var(--cg-color-text-muted);margin-bottom:var(--cg-space-3);display:flex;gap:var(--cg-space-2)}.meta-note[data-v-2e5437cc]{color:var(--cg-color-text-muted);font-style:italic}.loading[data-v-2e5437cc],.empty-state[data-v-2e5437cc]{text-align:center;padding:var(--cg-space-6);color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}.branch-commits[data-v-2e5437cc]{max-height:300px;overflow-y:auto}.footer-spacer[data-v-2e5437cc]{flex:1}.branch-list[data-v-eefdcb00]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle)}.base-title[data-v-5a01561d]{font-weight:var(--cg-font-weight-normal)}.base-title.view[data-v-5a01561d]{color:var(--cg-color-accent);font-size:var(--cg-font-size-lg);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-weight:var(--cg-font-weight-semibold);margin:0 0 var(--cg-space-4) 0}.base-title.section[data-v-5a01561d]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);margin:0 0 var(--cg-space-2) 0}.base-title.group[data-v-5a01561d]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-sm);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-weight:var(--cg-font-weight-medium);margin:0 0 var(--cg-space-2) 0}.base-title.dialog[data-v-5a01561d]{color:var(--cg-color-accent);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-size:var(--cg-font-size-sm);margin:0}.base-title-count[data-v-5a01561d]{margin-left:4px}.base-select-wrapper[data-v-4996bfe0]{display:inline-flex;flex-direction:column;gap:4px}.base-select-wrapper.full-width[data-v-4996bfe0]{width:100%}.base-select[data-v-4996bfe0]{padding:10px 12px;background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-md);color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm);font-family:var(--cg-font-mono);transition:all var(--cg-transition-fast);cursor:pointer;width:100%;overscroll-behavior:contain;scrollbar-gutter:stable}.base-select[data-v-4996bfe0]:focus{outline:none;border-color:var(--cg-color-accent);box-shadow:0 0 0 2px var(--cg-color-accent-muted)}.base-select[data-v-4996bfe0]:disabled{opacity:.5;cursor:not-allowed}.base-select.error[data-v-4996bfe0]{border-color:var(--cg-color-error)}.base-select-error[data-v-4996bfe0]{font-size:var(--cg-font-size-xs);color:var(--cg-color-error)}.base-select[data-v-4996bfe0]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 12 12' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2 4L6 8L10 4' stroke='%2300d9ff' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:36px}.popover-overlay[data-v-42815ace]{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--cg-color-bg-overlay);display:flex;align-items:center;justify-content:center;z-index:10004}.popover[data-v-42815ace]{background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-md);box-shadow:var(--cg-shadow-lg);width:90%;animation:popoverFadeIn-42815ace var(--cg-transition-normal)}@keyframes popoverFadeIn-42815ace{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.popover-header[data-v-42815ace]{display:flex;justify-content:space-between;align-items:center;padding:var(--cg-space-3) var(--cg-space-4);border-bottom:1px solid var(--cg-color-border-subtle)}.popover-title[data-v-42815ace]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-semibold);margin:0}.popover-close[data-v-42815ace]{background:transparent;border:none;color:var(--cg-color-text-muted);font-size:var(--cg-font-size-lg);cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;transition:all var(--cg-transition-fast)}.popover-close[data-v-42815ace]:hover{color:var(--cg-color-text-primary)}.popover-content[data-v-42815ace]{padding:var(--cg-space-4);color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-sm);line-height:var(--cg-line-height-normal)}.popover-content[data-v-42815ace] p{margin:0 0 var(--cg-space-3) 0}.popover-content[data-v-42815ace] p:last-child{margin-bottom:0}.popover-content[data-v-42815ace] strong{color:var(--cg-color-accent);font-weight:var(--cg-font-weight-semibold)}.popover-actions[data-v-42815ace]{padding:var(--cg-space-3) var(--cg-space-4);border-top:1px solid var(--cg-color-border-subtle);display:flex;gap:var(--cg-space-2);justify-content:flex-end}.empty-message[data-v-668728e6]{text-align:center;padding:var(--cg-space-4);color:var(--cg-color-text-muted)}.detail-section[data-v-668728e6]{margin-bottom:var(--cg-space-5)}.model-card[data-v-668728e6]{border:1px solid var(--cg-color-border-subtle);background:var(--cg-color-bg-tertiary);padding:var(--cg-space-3);margin-bottom:var(--cg-space-3)}.model-header[data-v-668728e6]{display:flex;align-items:center;gap:8px;margin-bottom:var(--cg-space-2)}.model-icon[data-v-668728e6]{font-size:var(--cg-font-size-lg)}.model-name[data-v-668728e6]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-semibold)}.model-details[data-v-668728e6]{display:flex;flex-direction:column;gap:6px;margin-bottom:var(--cg-space-2)}.model-row[data-v-668728e6]{display:flex;align-items:center;gap:8px;font-size:var(--cg-font-size-sm)}.model-row .label[data-v-668728e6]{color:var(--cg-color-text-muted);min-width:80px;display:inline-flex;align-items:center;gap:4px}.model-row .value[data-v-668728e6]{color:var(--cg-color-text-secondary)}.model-row .value.success[data-v-668728e6]{color:var(--cg-color-success)}.model-row .value.error[data-v-668728e6]{color:var(--cg-color-error)}.model-row .value.warning[data-v-668728e6]{color:var(--cg-color-warning, #f59e0b)}.model-row .value.info[data-v-668728e6]{color:var(--cg-color-info, #3b82f6)}.model-row code[data-v-668728e6]{background:var(--cg-color-bg-secondary);padding:0 var(--cg-space-1);border-radius:var(--cg-radius-sm, 2px);font-family:var(--cg-font-mono, monospace);font-size:var(--cg-font-size-xs, 11px)}.model-row-nodes[data-v-668728e6]{align-items:flex-start}.node-list[data-v-668728e6]{display:flex;flex-direction:column;gap:4px;flex:1}.node-reference[data-v-668728e6]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-sm);padding:2px 0}.expand-toggle[data-v-668728e6]{background:none;border:none;color:var(--cg-color-accent);cursor:pointer;font-size:var(--cg-font-size-sm);padding:4px 0;text-align:left;margin-top:2px}.expand-toggle[data-v-668728e6]:hover{text-decoration:underline}.model-actions[data-v-668728e6]{margin-top:var(--cg-space-2)}.importance-info-list[data-v-668728e6]{margin:0;padding-left:var(--cg-space-4);color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-sm);list-style-type:"• "}.importance-info-list li[data-v-668728e6]{margin-bottom:var(--cg-space-2)}.importance-info-list strong[data-v-668728e6]{color:var(--cg-color-accent)}.node-item[data-v-668728e6]{display:flex;align-items:center;gap:8px;padding:8px;border:1px solid var(--cg-color-border-subtle);background:var(--cg-color-bg-tertiary);margin-bottom:4px;font-size:var(--cg-font-size-sm)}.node-status[data-v-668728e6]{font-weight:700;font-size:var(--cg-font-size-base)}.node-status.installed[data-v-668728e6]{color:var(--cg-color-success)}.node-status.missing[data-v-668728e6]{color:var(--cg-color-error)}.node-name[data-v-668728e6]{color:var(--cg-color-text-primary);flex:1}.node-version[data-v-668728e6]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs)}.resolution-stepper[data-v-2a7b3af8]{display:flex;flex-direction:column;gap:0}.stepper-header[data-v-2a7b3af8]{display:flex;align-items:center;justify-content:space-between;padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-bg-secondary);border-bottom:1px solid var(--cg-color-border)}.step[data-v-2a7b3af8]{display:flex;flex-direction:column;align-items:center;gap:4px;flex:1;position:relative;cursor:pointer;transition:opacity .2s}.step.disabled[data-v-2a7b3af8]{cursor:not-allowed;pointer-events:none}.step.disabled .step-indicator[data-v-2a7b3af8],.step.disabled .step-label[data-v-2a7b3af8]{opacity:.4}.step-indicator[data-v-2a7b3af8]{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--cg-color-bg-tertiary);border:2px solid var(--cg-color-border);color:var(--cg-color-text-muted);font-weight:var(--cg-font-weight-semibold);font-size:var(--cg-font-size-xs);transition:all .2s;position:relative;z-index:2}.step-indicator.state-pending[data-v-2a7b3af8]{background:var(--cg-color-bg-tertiary);border-color:var(--cg-color-border);color:var(--cg-color-text-muted)}.step-indicator.state-partial[data-v-2a7b3af8]{background:var(--cg-color-warning-muted);border-color:var(--cg-color-warning);color:var(--cg-color-warning)}.step-indicator.state-complete[data-v-2a7b3af8]{background:var(--cg-color-success);border-color:var(--cg-color-success);color:#fff}.step.active .step-indicator[data-v-2a7b3af8]{box-shadow:0 0 0 2px var(--cg-color-accent-muted);border-color:var(--cg-color-accent)}.step-label[data-v-2a7b3af8]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);text-align:center;font-weight:var(--cg-font-weight-medium)}.step.active .step-label[data-v-2a7b3af8]{color:var(--cg-color-text);font-weight:var(--cg-font-weight-semibold)}.step-connector[data-v-2a7b3af8]{position:absolute;top:14px;left:calc(50% + 14px);right:calc(-50% + 14px);height:2px;background:var(--cg-color-border);z-index:1}.stepper-content[data-v-2a7b3af8]{padding:var(--cg-space-2) var(--cg-space-3)}.confidence-badge[data-v-17ec4b80]{display:inline-flex;align-items:center;justify-content:center;padding:var(--cg-spacing-xs) var(--cg-spacing-sm);border-radius:var(--cg-border-radius-sm);font-weight:var(--cg-font-weight-semibold);white-space:nowrap}.confidence-badge.sm[data-v-17ec4b80]{font-size:var(--cg-font-size-xs);padding:2px var(--cg-spacing-xs)}.confidence-badge.md[data-v-17ec4b80]{font-size:var(--cg-font-size-sm)}.confidence-high[data-v-17ec4b80]{background-color:var(--cg-color-success-bg);color:var(--cg-color-success);border:1px solid var(--cg-color-success)}.confidence-medium[data-v-17ec4b80]{background-color:var(--cg-color-warning-bg);color:var(--cg-color-warning);border:1px solid var(--cg-color-warning)}.confidence-low[data-v-17ec4b80]{background-color:var(--cg-color-error-bg);color:var(--cg-color-error);border:1px solid var(--cg-color-error)}.node-resolution-item[data-v-c2997d1d]{border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-lg);background:var(--cg-color-bg-secondary);overflow:hidden;transition:all var(--cg-transition-fast)}.node-resolution-item.ambiguous[data-v-c2997d1d]{border-color:var(--cg-color-warning)}.node-resolution-item.resolved[data-v-c2997d1d]{border-color:var(--cg-color-success);background:var(--cg-color-success-muted)}.node-info[data-v-c2997d1d]{display:flex;align-items:center;justify-content:space-between;gap:var(--cg-space-2);padding:var(--cg-space-2) var(--cg-space-3);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);background:var(--cg-color-bg-tertiary);border-bottom:1px solid var(--cg-color-border-subtle)}.node-info-text[data-v-c2997d1d]{flex:1;min-width:0}.node-info code[data-v-c2997d1d]{font-family:var(--cg-font-mono);color:var(--cg-color-text-secondary)}.status-badge[data-v-c2997d1d]{padding:var(--cg-space-1) var(--cg-space-2);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-medium);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);white-space:nowrap;flex-shrink:0}.status-badge.unresolved[data-v-c2997d1d]{background:var(--cg-color-error-muted);color:var(--cg-color-error)}.status-badge.ambiguous[data-v-c2997d1d]{background:var(--cg-color-warning-muted);color:var(--cg-color-warning)}.status-badge.resolved[data-v-c2997d1d]{background:var(--cg-color-success-muted);color:var(--cg-color-success)}.status-badge.optional[data-v-c2997d1d]{background:var(--cg-color-info-muted);color:var(--cg-color-info)}.status-badge.skip[data-v-c2997d1d]{background:var(--cg-color-bg-hover);color:var(--cg-color-text-muted)}.item-body[data-v-c2997d1d]{padding:var(--cg-space-3)}.resolved-state[data-v-c2997d1d]{display:flex;justify-content:center}.multiple-options[data-v-c2997d1d]{display:flex;flex-direction:column;gap:var(--cg-space-3)}.options-prompt[data-v-c2997d1d]{margin:0;font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary)}.options-list[data-v-c2997d1d]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.option-card[data-v-c2997d1d]{display:flex;gap:var(--cg-space-2);padding:var(--cg-space-2) var(--cg-space-3);border:1px solid var(--cg-color-border-subtle);border-radius:var(--cg-radius-md);background:var(--cg-color-bg-primary);cursor:pointer;transition:all var(--cg-transition-fast)}.option-card[data-v-c2997d1d]:hover{border-color:var(--cg-color-accent);background:var(--cg-color-bg-hover)}.option-card.selected[data-v-c2997d1d]{border-color:var(--cg-color-success);background:var(--cg-color-success-muted)}.option-card input[type=radio][data-v-c2997d1d]{margin-top:4px;accent-color:var(--cg-color-accent)}.option-content[data-v-c2997d1d]{flex:1;min-width:0}.option-header[data-v-c2997d1d]{display:flex;align-items:center;gap:var(--cg-space-2);flex-wrap:wrap}.option-package-id[data-v-c2997d1d]{font-family:var(--cg-font-mono);font-weight:var(--cg-font-weight-semibold);font-size:var(--cg-font-size-sm);color:var(--cg-color-text-primary)}.option-title[data-v-c2997d1d]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-secondary)}.option-meta[data-v-c2997d1d]{display:flex;gap:var(--cg-space-2);align-items:center;margin-top:var(--cg-space-1)}.installed-badge[data-v-c2997d1d]{padding:2px var(--cg-space-2);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-medium);background:var(--cg-color-success-muted);color:var(--cg-color-success)}.action-buttons[data-v-c2997d1d]{display:flex;flex-wrap:wrap;gap:var(--cg-space-2);justify-content:flex-start;padding-top:var(--cg-space-2);border-top:1px solid var(--cg-color-border-subtle)}.unresolved[data-v-c2997d1d]{display:flex;flex-direction:column;gap:var(--cg-space-3)}.unresolved-message[data-v-c2997d1d]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-md);color:var(--cg-color-warning);font-size:var(--cg-font-size-sm)}.warning-icon[data-v-c2997d1d]{font-size:var(--cg-font-size-lg)}.searching-state[data-v-c2997d1d]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-3);color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}.searching-spinner[data-v-c2997d1d]{width:16px;height:16px;border:2px solid var(--cg-color-border);border-top-color:var(--cg-color-accent);border-radius:50%;animation:spin-c2997d1d .8s linear infinite}@keyframes spin-c2997d1d{to{transform:rotate(360deg)}}.option-description[data-v-c2997d1d]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);margin-top:2px}.item-navigator[data-v-74af7920]{display:flex;align-items:center;justify-content:space-between;gap:var(--cg-space-3);padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-bg-tertiary);border-radius:var(--cg-radius-sm);border:1px solid var(--cg-color-border-subtle)}.nav-item-info[data-v-74af7920]{display:flex;align-items:center;gap:var(--cg-space-2);flex:1;min-width:0;overflow:hidden}.item-name[data-v-74af7920]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm);color:var(--cg-color-accent);background:var(--cg-color-bg-primary);padding:var(--cg-space-1) var(--cg-space-2);border-radius:var(--cg-radius-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:default}.nav-controls[data-v-74af7920]{display:flex;align-items:center;gap:var(--cg-space-2);flex-shrink:0}.nav-arrows[data-v-74af7920]{display:flex;gap:4px}.nav-arrow[data-v-74af7920]{background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary);width:48px;height:24px;border-radius:var(--cg-radius-sm);cursor:pointer;font-size:var(--cg-font-size-sm);display:flex;align-items:center;justify-content:center;transition:all var(--cg-transition-fast)}.nav-arrow[data-v-74af7920]:first-child{border-radius:var(--cg-radius-sm) 0 0 var(--cg-radius-sm)}.nav-arrow[data-v-74af7920]:last-child{border-radius:0 var(--cg-radius-sm) var(--cg-radius-sm) 0}.nav-arrow[data-v-74af7920]:hover:not(:disabled){background:var(--cg-color-bg-hover);border-color:var(--cg-color-accent);color:var(--cg-color-accent)}.nav-arrow[data-v-74af7920]:disabled{opacity:.4;cursor:not-allowed}.nav-position[data-v-74af7920]{font-size:var(--cg-font-size-xs);font-family:var(--cg-font-mono);color:var(--cg-color-text-muted);min-width:36px;text-align:right}.base-input-wrapper[data-v-9ba02cdc]{display:inline-flex;flex-direction:column;gap:4px}.base-input-wrapper.full-width[data-v-9ba02cdc]{width:100%}.base-input[data-v-9ba02cdc]{padding:10px 12px;background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-md);color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm);font-family:var(--cg-font-mono);transition:all var(--cg-transition-fast);width:100%}.base-input[data-v-9ba02cdc]:focus{outline:none;border-color:var(--cg-color-accent);box-shadow:0 0 0 2px var(--cg-color-accent-muted)}.base-input[data-v-9ba02cdc]:disabled{opacity:.5;cursor:not-allowed}.base-input.error[data-v-9ba02cdc]{border-color:var(--cg-color-error)}.base-input-error[data-v-9ba02cdc]{font-size:var(--cg-font-size-xs);color:var(--cg-color-error)}.node-resolution-step[data-v-6d7f8125]{display:flex;flex-direction:column;gap:var(--cg-space-2);min-height:400px}.auto-resolved-section[data-v-6d7f8125]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.section-header[data-v-6d7f8125]{display:flex;justify-content:space-between;align-items:center;gap:var(--cg-space-3)}.section-info[data-v-6d7f8125]{flex:1}.section-title[data-v-6d7f8125]{font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-primary);margin:0}.section-description[data-v-6d7f8125]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);margin:2px 0 0}.resolved-packages-list[data-v-6d7f8125]{display:flex;flex-direction:column;gap:var(--cg-space-1);max-height:200px;overflow-y:auto}.resolved-package-item[data-v-6d7f8125]{display:flex;justify-content:space-between;align-items:center;padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-bg-secondary);border-radius:var(--cg-radius-sm);border-left:3px solid var(--cg-color-success)}.package-info[data-v-6d7f8125]{display:flex;align-items:center;gap:var(--cg-space-3)}.package-id[data-v-6d7f8125]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm);color:var(--cg-color-accent)}.node-count[data-v-6d7f8125]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.package-actions[data-v-6d7f8125]{display:flex;align-items:center;gap:var(--cg-space-2)}.status-badge[data-v-6d7f8125]{font-size:var(--cg-font-size-xs);font-family:var(--cg-font-mono);padding:2px 6px;border-radius:var(--cg-radius-sm);text-transform:uppercase;letter-spacing:.05em}.status-badge.install[data-v-6d7f8125]{background:var(--cg-color-success-muted);color:var(--cg-color-success)}.status-badge.skip[data-v-6d7f8125]{background:var(--cg-color-bg-hover);color:var(--cg-color-text-muted)}.toggle-skip-btn[data-v-6d7f8125]{font-size:var(--cg-font-size-xs);padding:var(--cg-space-1) var(--cg-space-2);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-sm);color:var(--cg-color-text-secondary);cursor:pointer;transition:all var(--cg-transition-fast)}.toggle-skip-btn[data-v-6d7f8125]:hover{background:var(--cg-color-bg-hover);color:var(--cg-color-text-primary)}.section-divider[data-v-6d7f8125]{height:1px;background:var(--cg-color-border);margin:var(--cg-space-2) 0}.step-header[data-v-6d7f8125]{display:flex;justify-content:space-between;align-items:center;gap:var(--cg-space-3);padding-bottom:var(--cg-space-2);border-bottom:1px solid var(--cg-color-border)}.step-info[data-v-6d7f8125]{flex:1}.step-title[data-v-6d7f8125]{font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-primary);margin:0}.step-description[data-v-6d7f8125]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);margin:2px 0 0}.stat-badge[data-v-6d7f8125]{font-size:var(--cg-font-size-xs);font-family:var(--cg-font-mono);padding:4px 8px;border-radius:var(--cg-radius-sm);background:var(--cg-color-bg-tertiary);color:var(--cg-color-text-secondary);border:1px solid var(--cg-color-border-subtle);white-space:nowrap}.step-body[data-v-6d7f8125]{flex:1;overflow-y:auto}.empty-state[data-v-6d7f8125]{flex:1;display:flex;align-items:center;justify-content:center;color:var(--cg-color-text-muted)}.node-resolution-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:10010}.node-search-modal{width:90%;max-width:500px;height:75vh;background:var(--cg-color-bg-primary, #1a1a2e);border:1px solid var(--cg-color-border, #333);border-radius:var(--cg-radius-lg, 8px);box-shadow:0 25px 50px -12px #00000080;display:flex;flex-direction:column;overflow:hidden}.node-manual-entry-modal{width:90%;max-width:500px;background:var(--cg-color-bg-primary, #1a1a2e);border:1px solid var(--cg-color-border, #333);border-radius:var(--cg-radius-lg, 8px);box-shadow:0 25px 50px -12px #00000080;display:flex;flex-direction:column;overflow:hidden}.node-modal-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--cg-color-border, #333);background:var(--cg-color-bg-secondary, #252542)}.node-modal-header h4{margin:0;font-size:14px;font-weight:600;color:var(--cg-color-text-primary, #fff)}.node-modal-close-btn{background:none;border:none;font-size:18px;color:var(--cg-color-text-muted, #888);cursor:pointer;padding:4px;border-radius:4px;transition:all .15s ease}.node-modal-close-btn:hover{color:var(--cg-color-text-primary, #fff);background:var(--cg-color-bg-hover, #333)}.node-modal-body{padding:16px;flex:1;display:flex;flex-direction:column;gap:12px;min-height:0;overflow:hidden}.node-modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:8px}.node-search-result-item{padding:8px 12px;border:1px solid var(--cg-color-border-subtle, #444);border-radius:6px;background:var(--cg-color-bg-secondary, #252542);cursor:pointer;transition:all .15s ease}.node-search-result-item:hover{border-color:var(--cg-color-accent, #7c3aed);background:var(--cg-color-bg-hover, #333)}.node-result-header{display:flex;align-items:center;gap:8px;margin-bottom:4px}.node-result-package-id{font-family:var(--cg-font-mono, monospace);font-weight:600;font-size:13px;color:var(--cg-color-accent, #7c3aed)}.node-result-description{font-size:12px;color:var(--cg-color-text-muted, #888)}.node-search-results-container{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.node-search-results{flex:1;display:flex;flex-direction:column;gap:8px;overflow-y:auto}.node-empty-state{flex:1;display:flex;align-items:center;justify-content:center;color:var(--cg-color-text-muted, #888);font-size:13px}.model-resolution-item[data-v-8a82fefa]{border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-lg);background:var(--cg-color-bg-secondary);overflow:hidden;transition:all var(--cg-transition-fast)}.model-resolution-item.ambiguous[data-v-8a82fefa]{border-color:var(--cg-color-warning)}.model-resolution-item.resolved[data-v-8a82fefa]{border-color:var(--cg-color-success);background:var(--cg-color-success-muted)}.node-info[data-v-8a82fefa]{display:flex;align-items:center;justify-content:space-between;gap:var(--cg-space-2);padding:var(--cg-space-2) var(--cg-space-3);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);background:var(--cg-color-bg-tertiary);border-bottom:1px solid var(--cg-color-border-subtle)}.node-info-text[data-v-8a82fefa]{flex:1;min-width:0}.node-info code[data-v-8a82fefa]{font-family:var(--cg-font-mono);color:var(--cg-color-text-secondary)}.status-badge[data-v-8a82fefa]{padding:var(--cg-space-1) var(--cg-space-2);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-medium);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);white-space:nowrap;flex-shrink:0}.status-badge.unresolved[data-v-8a82fefa]{background:var(--cg-color-error-muted);color:var(--cg-color-error)}.status-badge.ambiguous[data-v-8a82fefa]{background:var(--cg-color-warning-muted);color:var(--cg-color-warning)}.status-badge.resolved[data-v-8a82fefa]{background:var(--cg-color-success-muted);color:var(--cg-color-success)}.status-badge.optional[data-v-8a82fefa]{background:var(--cg-color-info-muted);color:var(--cg-color-info)}.status-badge.skip[data-v-8a82fefa]{background:var(--cg-color-bg-hover);color:var(--cg-color-text-muted)}.item-body[data-v-8a82fefa]{padding:var(--cg-space-3)}.resolved-state[data-v-8a82fefa]{display:flex;justify-content:center}.multiple-options[data-v-8a82fefa]{display:flex;flex-direction:column;gap:var(--cg-space-3)}.options-prompt[data-v-8a82fefa]{margin:0;font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary)}.options-list[data-v-8a82fefa]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.option-card[data-v-8a82fefa]{display:flex;gap:var(--cg-space-2);padding:var(--cg-space-2) var(--cg-space-3);border:1px solid var(--cg-color-border-subtle);border-radius:var(--cg-radius-md);background:var(--cg-color-bg-primary);cursor:pointer;transition:all var(--cg-transition-fast)}.option-card[data-v-8a82fefa]:hover{border-color:var(--cg-color-accent);background:var(--cg-color-bg-hover)}.option-card.selected[data-v-8a82fefa]{border-color:var(--cg-color-success);background:var(--cg-color-success-muted)}.option-card input[type=radio][data-v-8a82fefa]{margin-top:4px;accent-color:var(--cg-color-accent)}.option-content[data-v-8a82fefa]{flex:1;min-width:0}.option-header[data-v-8a82fefa]{display:flex;align-items:center;gap:var(--cg-space-2);flex-wrap:wrap}.option-filename[data-v-8a82fefa]{font-family:var(--cg-font-mono);font-weight:var(--cg-font-weight-semibold);font-size:var(--cg-font-size-sm);color:var(--cg-color-text-primary)}.option-meta[data-v-8a82fefa]{display:flex;gap:var(--cg-space-2);align-items:center;margin-top:var(--cg-space-1);font-size:var(--cg-font-size-xs)}.option-size[data-v-8a82fefa]{font-family:var(--cg-font-mono);color:var(--cg-color-text-muted)}.option-category[data-v-8a82fefa]{color:var(--cg-color-text-secondary);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.option-path[data-v-8a82fefa]{margin-top:var(--cg-space-1);font-size:var(--cg-font-size-xs);font-family:var(--cg-font-mono);color:var(--cg-color-text-muted)}.action-buttons[data-v-8a82fefa]{display:flex;flex-wrap:wrap;gap:var(--cg-space-2);justify-content:flex-start;padding-top:var(--cg-space-2);border-top:1px solid var(--cg-color-border-subtle)}.unresolved[data-v-8a82fefa]{display:flex;flex-direction:column;gap:var(--cg-space-3)}.unresolved-message[data-v-8a82fefa]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-md);color:var(--cg-color-warning);font-size:var(--cg-font-size-sm)}.warning-icon[data-v-8a82fefa]{font-size:var(--cg-font-size-lg)}.model-resolution-step[data-v-5c700bfa]{display:flex;flex-direction:column;gap:var(--cg-space-2);min-height:400px}.step-header[data-v-5c700bfa]{display:flex;justify-content:space-between;align-items:center;gap:var(--cg-space-3);padding-bottom:var(--cg-space-2);border-bottom:1px solid var(--cg-color-border)}.step-info[data-v-5c700bfa]{flex:1}.step-title[data-v-5c700bfa]{font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-primary);margin:0}.step-description[data-v-5c700bfa]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);margin:2px 0 0}.stat-badge[data-v-5c700bfa]{font-size:var(--cg-font-size-xs);font-family:var(--cg-font-mono);padding:4px 8px;border-radius:var(--cg-radius-sm);background:var(--cg-color-bg-tertiary);color:var(--cg-color-text-secondary);border:1px solid var(--cg-color-border-subtle);white-space:nowrap}.step-body[data-v-5c700bfa]{flex:1;overflow-y:auto}.empty-state[data-v-5c700bfa]{flex:1;display:flex;align-items:center;justify-content:center;color:var(--cg-color-text-muted)}.model-resolution-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:10010}.model-search-modal,.model-download-url-modal{width:90%;max-width:500px;max-height:80vh;background:var(--cg-color-bg-primary, #1a1a2e);border:1px solid var(--cg-color-border, #333);border-radius:var(--cg-radius-lg, 8px);box-shadow:0 25px 50px -12px #00000080;display:flex;flex-direction:column;overflow:hidden}.model-modal-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--cg-color-border, #333);background:var(--cg-color-bg-secondary, #252542)}.model-modal-header h4{margin:0;font-size:14px;font-weight:600;color:var(--cg-color-text-primary, #fff)}.model-modal-close-btn{background:none;border:none;font-size:18px;color:var(--cg-color-text-muted, #888);cursor:pointer;padding:4px;border-radius:4px;transition:all .15s ease}.model-modal-close-btn:hover{color:var(--cg-color-text-primary, #fff);background:var(--cg-color-bg-hover, #333)}.model-modal-body{padding:16px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:12px}.model-input-group{display:flex;flex-direction:column;gap:4px}.model-input-label{font-size:12px;font-weight:500;color:var(--cg-color-text-secondary, #aaa)}.model-modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:8px}.model-search-results{display:flex;flex-direction:column;gap:8px}.model-search-result-item{padding:8px 12px;border:1px solid var(--cg-color-border-subtle, #444);border-radius:6px;background:var(--cg-color-bg-secondary, #252542);cursor:pointer;transition:all .15s ease}.model-search-result-item:hover{border-color:var(--cg-color-accent, #7c3aed);background:var(--cg-color-bg-hover, #333)}.model-result-header{margin-bottom:4px}.model-result-filename{font-family:var(--cg-font-mono, monospace);font-weight:600;font-size:13px;color:var(--cg-color-accent, #7c3aed)}.model-result-meta{display:flex;gap:8px;font-size:12px;color:var(--cg-color-text-muted, #888);margin-bottom:4px}.model-result-category{text-transform:uppercase;letter-spacing:.05em}.model-result-size{font-family:var(--cg-font-mono, monospace)}.model-result-path{font-size:12px;font-family:var(--cg-font-mono, monospace);color:var(--cg-color-text-muted, #888)}.model-no-results,.model-searching{padding:16px;text-align:center;color:var(--cg-color-text-muted, #888);font-size:13px}.applying-step[data-v-5efaae58]{padding:var(--cg-space-4)}.phase-content[data-v-5efaae58]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.phase-header[data-v-5efaae58]{display:flex;align-items:center;gap:var(--cg-space-3)}.phase-icon[data-v-5efaae58]{font-size:var(--cg-font-size-xl)}.phase-icon.success[data-v-5efaae58]{color:var(--cg-color-success)}.phase-icon.error[data-v-5efaae58]{color:var(--cg-color-error)}.phase-icon.warning[data-v-5efaae58]{color:var(--cg-color-warning)}.phase-title[data-v-5efaae58]{margin:0;font-size:var(--cg-font-size-lg);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-primary)}.phase-description[data-v-5efaae58]{margin:0;color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}.loading-spinner[data-v-5efaae58]{width:24px;height:24px;border:3px solid var(--cg-color-border);border-top-color:var(--cg-color-accent);border-radius:50%;animation:spin-5efaae58 .8s linear infinite}@keyframes spin-5efaae58{to{transform:rotate(360deg)}}.completion-summary[data-v-5efaae58]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.summary-item[data-v-5efaae58]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-2) var(--cg-space-3);border-radius:var(--cg-radius-md);font-size:var(--cg-font-size-sm)}.summary-item.success[data-v-5efaae58]{background:var(--cg-color-success-muted);color:var(--cg-color-success)}.summary-item.info[data-v-5efaae58]{background:var(--cg-color-info-muted);color:var(--cg-color-info)}.summary-note[data-v-5efaae58]{margin:0;font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);font-style:italic}.summary-icon[data-v-5efaae58]{font-size:var(--cg-font-size-base)}.phase-content.error .error-message[data-v-5efaae58]{margin:0;padding:var(--cg-space-3);background:var(--cg-color-error-muted);border:1px solid var(--cg-color-error);border-radius:var(--cg-radius-md);color:var(--cg-color-error);font-size:var(--cg-font-size-sm);font-family:var(--cg-font-mono)}.summary-item.error[data-v-5efaae58]{background:var(--cg-color-error-muted);color:var(--cg-color-error)}.overall-progress[data-v-5efaae58]{display:flex;align-items:center;gap:var(--cg-space-3);margin-bottom:var(--cg-space-2)}.progress-bar[data-v-5efaae58]{flex:1;height:6px;background:var(--cg-color-bg-tertiary);border-radius:var(--cg-radius-full);overflow:hidden}.progress-fill[data-v-5efaae58]{height:100%;background:var(--cg-color-accent);border-radius:var(--cg-radius-full);transition:width var(--cg-transition-fast)}.progress-label[data-v-5efaae58]{font-size:var(--cg-font-size-xs);font-family:var(--cg-font-mono);color:var(--cg-color-text-muted);white-space:nowrap}.install-list[data-v-5efaae58]{display:flex;flex-direction:column;gap:var(--cg-space-1);padding:var(--cg-space-2);background:var(--cg-color-bg-secondary);border-radius:var(--cg-radius-sm);max-height:150px;overflow-y:auto}.install-item[data-v-5efaae58]{display:flex;align-items:center;gap:var(--cg-space-2);font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary);padding:var(--cg-space-1) var(--cg-space-2);border-radius:var(--cg-radius-sm);border-left:3px solid transparent}.install-item.pending[data-v-5efaae58]{border-left-color:var(--cg-color-border)}.install-item.installing[data-v-5efaae58]{border-left-color:var(--cg-color-accent);background:var(--cg-color-bg-tertiary)}.install-item.complete[data-v-5efaae58]{border-left-color:var(--cg-color-success)}.install-item.failed[data-v-5efaae58]{border-left-color:var(--cg-color-error)}.install-icon[data-v-5efaae58]{width:16px;text-align:center}.install-item.pending .install-icon[data-v-5efaae58]{color:var(--cg-color-text-muted)}.install-item.installing .install-icon[data-v-5efaae58]{color:var(--cg-color-accent)}.install-item.complete .install-icon[data-v-5efaae58]{color:var(--cg-color-success)}.install-item.failed .install-icon[data-v-5efaae58]{color:var(--cg-color-error)}.install-icon .spinner[data-v-5efaae58]{display:inline-block;animation:spin-5efaae58 1s linear infinite}.install-item code[data-v-5efaae58]{font-family:var(--cg-font-mono);color:var(--cg-color-text-primary)}.install-error[data-v-5efaae58]{font-size:var(--cg-font-size-xs);color:var(--cg-color-error);margin-left:auto}.restart-prompt[data-v-5efaae58]{margin-top:var(--cg-space-4);display:flex;flex-direction:column;gap:var(--cg-space-3)}.restart-warning[data-v-5efaae58]{display:flex;align-items:flex-start;gap:var(--cg-space-3);padding:var(--cg-space-3);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-md);color:var(--cg-color-warning)}.restart-warning .warning-icon[data-v-5efaae58]{font-size:var(--cg-font-size-lg);flex-shrink:0}.restart-warning .warning-content[data-v-5efaae58]{display:flex;flex-direction:column;gap:var(--cg-space-1)}.restart-warning .warning-content strong[data-v-5efaae58]{font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold)}.restart-warning .warning-content p[data-v-5efaae58]{margin:0;font-size:var(--cg-font-size-xs);color:var(--cg-color-text-secondary)}.restart-button[data-v-5efaae58]{align-self:flex-end;padding:var(--cg-space-2) var(--cg-space-4);background:var(--cg-color-warning);color:var(--cg-color-bg-primary);border:none;border-radius:var(--cg-radius-md);font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);cursor:pointer;transition:all var(--cg-transition-fast)}.restart-button[data-v-5efaae58]:hover{filter:brightness(1.1)}.failed-list[data-v-5efaae58]{display:flex;flex-direction:column;gap:var(--cg-space-1);padding:var(--cg-space-2);background:var(--cg-color-error-muted);border:1px solid var(--cg-color-error);border-radius:var(--cg-radius-md);max-height:150px;overflow-y:auto}.failed-item[data-v-5efaae58]{display:flex;flex-direction:column;gap:var(--cg-space-1);padding:var(--cg-space-1) var(--cg-space-2);background:var(--cg-color-bg-primary);border-radius:var(--cg-radius-sm)}.failed-node-id[data-v-5efaae58]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm);color:var(--cg-color-error)}.failed-error[data-v-5efaae58]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);word-break:break-word}.retry-button[data-v-5efaae58]{align-self:flex-start;margin-top:var(--cg-space-2);padding:var(--cg-space-2) var(--cg-space-4);background:var(--cg-color-accent);color:var(--cg-color-bg-primary);border:none;border-radius:var(--cg-radius-md);font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);cursor:pointer;transition:all var(--cg-transition-fast)}.retry-button[data-v-5efaae58]:hover{filter:brightness(1.1)}.loading-state[data-v-40d8d5a8]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--cg-space-8);gap:var(--cg-space-3);color:var(--cg-color-text-muted)}.loading-spinner[data-v-40d8d5a8]{width:32px;height:32px;border:3px solid var(--cg-color-border);border-top-color:var(--cg-color-accent);border-radius:50%;animation:spin-40d8d5a8 .8s linear infinite}@keyframes spin-40d8d5a8{to{transform:rotate(360deg)}}.wizard-content[data-v-40d8d5a8]{display:flex;flex-direction:column;gap:0}.step-content[data-v-40d8d5a8]{padding:var(--cg-space-3)}.analysis-summary[data-v-40d8d5a8]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.analysis-header[data-v-40d8d5a8],.review-header[data-v-40d8d5a8]{margin-bottom:var(--cg-space-2)}.summary-title[data-v-40d8d5a8]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-lg);font-weight:var(--cg-font-weight-semibold);margin:0 0 var(--cg-space-1) 0}.summary-description[data-v-40d8d5a8]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);margin:0}.stats-grid[data-v-40d8d5a8]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--cg-space-3)}.stat-card[data-v-40d8d5a8]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-lg);padding:var(--cg-space-3)}.stat-header[data-v-40d8d5a8]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-semibold);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);margin-bottom:var(--cg-space-2)}.stat-items[data-v-40d8d5a8]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.stat-item[data-v-40d8d5a8]{display:flex;align-items:center;gap:var(--cg-space-2);font-size:var(--cg-font-size-sm)}.stat-item.success[data-v-40d8d5a8]{color:var(--cg-color-success)}.stat-item.warning[data-v-40d8d5a8]{color:var(--cg-color-warning)}.stat-item.error[data-v-40d8d5a8]{color:var(--cg-color-error)}.stat-item.info[data-v-40d8d5a8]{color:var(--cg-color-info)}.stat-icon[data-v-40d8d5a8]{font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-bold)}.stat-count[data-v-40d8d5a8]{font-family:var(--cg-font-mono);font-weight:var(--cg-font-weight-semibold)}.stat-label[data-v-40d8d5a8]{color:inherit;opacity:.8}.status-message[data-v-40d8d5a8]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-3);border-radius:var(--cg-radius-md);font-size:var(--cg-font-size-sm)}.status-message.warning[data-v-40d8d5a8]{background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);color:var(--cg-color-warning)}.status-message.success[data-v-40d8d5a8]{background:var(--cg-color-success-muted);border:1px solid var(--cg-color-success);color:var(--cg-color-success)}.status-message.info[data-v-40d8d5a8]{background:var(--cg-color-info-muted);border:1px solid var(--cg-color-info);color:var(--cg-color-info)}.status-icon[data-v-40d8d5a8]{font-size:var(--cg-font-size-lg)}.category-mismatch-section[data-v-40d8d5a8]{margin-top:var(--cg-space-3);padding:var(--cg-space-3);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-md)}.section-subtitle[data-v-40d8d5a8]{color:var(--cg-color-warning);font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);margin:0 0 var(--cg-space-2) 0}.mismatch-list[data-v-40d8d5a8]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.mismatch-item[data-v-40d8d5a8]{display:flex;align-items:center;gap:var(--cg-space-2);font-size:var(--cg-font-size-sm);flex-wrap:wrap}.mismatch-path[data-v-40d8d5a8]{font-family:var(--cg-font-mono);color:var(--cg-color-error)}.mismatch-arrow[data-v-40d8d5a8]{color:var(--cg-color-text-muted)}.mismatch-target[data-v-40d8d5a8]{font-family:var(--cg-font-mono);color:var(--cg-color-success)}.review-summary[data-v-40d8d5a8]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.review-stats[data-v-40d8d5a8]{display:flex;gap:var(--cg-space-4);padding:var(--cg-space-3);background:var(--cg-color-bg-tertiary);border-radius:var(--cg-radius-lg)}.review-stat[data-v-40d8d5a8]{display:flex;flex-direction:column;align-items:center;flex:1}.review-stat .stat-value[data-v-40d8d5a8]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xl);font-weight:var(--cg-font-weight-bold);color:var(--cg-color-text-primary)}.review-stat .stat-label[data-v-40d8d5a8]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.review-section[data-v-40d8d5a8]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.section-title[data-v-40d8d5a8]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-semibold);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);margin:0;padding-bottom:var(--cg-space-1);border-bottom:1px solid var(--cg-color-border-subtle)}.review-items[data-v-40d8d5a8]{display:flex;flex-direction:column;gap:var(--cg-space-1)}.review-item[data-v-40d8d5a8]{display:flex;justify-content:space-between;align-items:center;padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-bg-secondary);border-radius:var(--cg-radius-sm)}.item-name[data-v-40d8d5a8]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);color:var(--cg-color-accent);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:60%}.item-choice[data-v-40d8d5a8]{display:flex;gap:var(--cg-space-2)}.choice-badge[data-v-40d8d5a8]{padding:var(--cg-space-1) var(--cg-space-2);font-size:var(--cg-font-size-xs);font-family:var(--cg-font-mono);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);border-radius:var(--cg-radius-sm)}.choice-badge.install[data-v-40d8d5a8],.choice-badge.download[data-v-40d8d5a8]{background:var(--cg-color-success-muted);color:var(--cg-color-success)}.choice-badge.optional[data-v-40d8d5a8]{background:var(--cg-color-info-muted);color:var(--cg-color-info)}.choice-badge.skip[data-v-40d8d5a8]{background:var(--cg-color-bg-hover);color:var(--cg-color-text-muted)}.choice-badge.pending[data-v-40d8d5a8]{background:var(--cg-color-bg-tertiary);color:var(--cg-color-text-muted);font-style:italic}.no-choices[data-v-40d8d5a8]{padding:var(--cg-space-4);background:var(--cg-color-bg-secondary);border-radius:var(--cg-radius-md);color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);text-align:center}.download-details .download-item[data-v-40d8d5a8]{flex-direction:column;align-items:flex-start;gap:var(--cg-space-2)}.download-info[data-v-40d8d5a8]{display:flex;flex-direction:column;gap:var(--cg-space-1);width:100%}.download-meta[data-v-40d8d5a8]{display:flex;flex-wrap:wrap;gap:var(--cg-space-2);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.download-path[data-v-40d8d5a8]{font-family:var(--cg-font-mono);color:var(--cg-color-text-secondary)}.download-url[data-v-40d8d5a8]{font-family:var(--cg-font-mono);color:var(--cg-color-info);cursor:help;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.footer-spacer[data-v-40d8d5a8]{flex:1}.search-input-wrapper[data-v-266f857a]{position:relative;width:100%}.search-input[data-v-266f857a]{width:100%;padding:var(--cg-space-2) var(--cg-space-3);padding-right:var(--cg-space-8);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);color:var(--cg-color-text-primary);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm)}.search-input[data-v-266f857a]:focus{outline:none;border-color:var(--cg-color-accent);box-shadow:0 0 8px var(--cg-shadow-accent)}.clear-button[data-v-266f857a]{position:absolute;right:var(--cg-space-2);top:50%;transform:translateY(-50%);background:transparent;border:none;color:var(--cg-color-text-muted);cursor:pointer;padding:var(--cg-space-1);font-size:var(--cg-font-size-sm);display:flex;align-items:center;justify-content:center;transition:color var(--cg-transition-fast)}.clear-button[data-v-266f857a]:hover{color:var(--cg-color-text-primary)}.search-bar[data-v-3d51bbfd]{margin-bottom:var(--cg-space-2)}.section-group[data-v-c48e33ed]{margin-bottom:var(--cg-space-4)}.section-content[data-v-c48e33ed]{margin-top:var(--cg-space-2)}.item-card[data-v-cc435e0e]{border:1px solid var(--cg-color-border-subtle);background:var(--cg-color-bg-tertiary);padding:var(--cg-space-3);margin-bottom:var(--cg-space-2);border-left-width:3px;border-left-color:transparent}.item-card.compact[data-v-cc435e0e]{padding:var(--cg-space-2)}.item-card.clickable[data-v-cc435e0e]{cursor:pointer}.item-card.clickable[data-v-cc435e0e]:hover{background:var(--cg-color-bg-hover)}.item-card.status-broken[data-v-cc435e0e]{border-left-color:var(--cg-color-error)}.item-card.status-new[data-v-cc435e0e]{border-left-color:var(--cg-color-info)}.item-card.status-modified[data-v-cc435e0e]{border-left-color:var(--cg-color-warning)}.item-card.status-synced[data-v-cc435e0e]{border-left-color:var(--cg-color-success)}.item-card.status-missing[data-v-cc435e0e]{border-left-color:var(--cg-color-warning)}.item-card.status-deleted[data-v-cc435e0e]{border-left-color:var(--cg-color-error)}.item-header[data-v-cc435e0e]{display:flex;align-items:flex-start;gap:var(--cg-space-2);margin-bottom:var(--cg-space-2)}.item-header[data-v-cc435e0e]:last-child{margin-bottom:0}.item-icon[data-v-cc435e0e]{font-size:var(--cg-font-size-xl);flex-shrink:0}.item-info[data-v-cc435e0e]{flex:1;min-width:0}.item-title[data-v-cc435e0e]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base);margin-bottom:var(--cg-space-1)}.item-subtitle[data-v-cc435e0e]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs)}.item-details[data-v-cc435e0e]{display:flex;flex-direction:column;gap:var(--cg-space-1);margin-bottom:var(--cg-space-2)}.item-details[data-v-cc435e0e]:last-child{margin-bottom:0}.item-actions[data-v-cc435e0e]{display:flex;gap:var(--cg-space-2);flex-wrap:wrap}.loading-state[data-v-ad8436c9]{text-align:center;padding:var(--cg-space-8) var(--cg-space-6);color:var(--cg-color-text-muted);display:flex;flex-direction:column;align-items:center;gap:var(--cg-space-3)}.spinner[data-v-ad8436c9]{width:32px;height:32px;border:3px solid var(--cg-color-border-subtle);border-top-color:var(--cg-color-accent);border-radius:50%;animation:spin-ad8436c9 .8s linear infinite}@keyframes spin-ad8436c9{to{transform:rotate(360deg)}}.loading-message[data-v-ad8436c9]{font-size:var(--cg-font-size-sm);margin:0}.error-state[data-v-5397be48]{text-align:center;padding:var(--cg-space-6);color:var(--cg-color-error);border:1px solid var(--cg-color-error);background:transparent;display:flex;flex-direction:column;align-items:center;gap:var(--cg-space-3)}.error-icon[data-v-5397be48]{font-size:var(--cg-font-size-2xl)}.error-message[data-v-5397be48]{font-size:var(--cg-font-size-sm);margin:0}.summary-bar[data-v-ccb7816e]{padding:var(--cg-space-3);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);margin-bottom:var(--cg-space-4)}.summary-bar.compact[data-v-ccb7816e]{padding:var(--cg-space-2) var(--cg-space-3);font-size:var(--cg-font-size-xs)}.model-details[data-v-f15cbb56]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.detail-section[data-v-f15cbb56]{background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border);padding:var(--cg-space-3)}.section-header[data-v-f15cbb56]{color:var(--cg-color-accent);text-transform:uppercase;font-size:var(--cg-font-size-xs);letter-spacing:var(--cg-letter-spacing-wide);margin:0 0 var(--cg-space-2) 0;padding-bottom:var(--cg-space-2);border-bottom:1px solid var(--cg-color-border)}.detail-row[data-v-f15cbb56]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-1) 0}.detail-label[data-v-f15cbb56]{color:var(--cg-color-text-muted);min-width:100px;font-size:var(--cg-font-size-sm)}.detail-value[data-v-f15cbb56]{color:var(--cg-color-text-primary);flex:1;word-break:break-all}.detail-value.mono[data-v-f15cbb56]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs)}.copy-btn[data-v-f15cbb56]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-muted);padding:2px 8px;font-size:var(--cg-font-size-xs);cursor:pointer}.copy-btn[data-v-f15cbb56]:hover{background:var(--cg-color-bg-hover);color:var(--cg-color-accent);border-color:var(--cg-color-accent)}.locations-list[data-v-f15cbb56],.sources-list[data-v-f15cbb56]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.location-item[data-v-f15cbb56]{display:flex;flex-direction:column;gap:2px;padding:var(--cg-space-2);background:var(--cg-color-bg-tertiary);border-left:2px solid var(--cg-color-accent)}.location-path[data-v-f15cbb56]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);word-break:break-all}.location-modified[data-v-f15cbb56]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs)}.source-item[data-v-f15cbb56]{display:flex;gap:var(--cg-space-2);align-items:center}.source-type[data-v-f15cbb56]{color:var(--cg-color-text-muted);text-transform:capitalize;flex-shrink:0}.source-url[data-v-f15cbb56]{color:var(--cg-color-accent);word-break:break-all;font-size:var(--cg-font-size-sm);flex:1}.remove-source-btn[data-v-f15cbb56]{background:transparent;border:1px solid var(--cg-color-border);color:var(--cg-color-text-muted);width:20px;height:20px;font-size:14px;line-height:1;cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center}.remove-source-btn[data-v-f15cbb56]:hover:not(:disabled){background:var(--cg-color-error, #ef4444);border-color:var(--cg-color-error, #ef4444);color:#fff}.remove-source-btn[data-v-f15cbb56]:disabled{opacity:.5;cursor:not-allowed}.empty-state[data-v-f15cbb56]{color:var(--cg-color-text-muted);font-style:italic;padding:var(--cg-space-2)}.add-source-form[data-v-f15cbb56]{display:flex;gap:var(--cg-space-2);margin-top:var(--cg-space-3)}.source-input[data-v-f15cbb56]{flex:1;background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary);padding:var(--cg-space-2);font-size:var(--cg-font-size-sm)}.source-input[data-v-f15cbb56]::placeholder{color:var(--cg-color-text-muted)}.source-input[data-v-f15cbb56]:focus{outline:none;border-color:var(--cg-color-accent)}.add-source-btn[data-v-f15cbb56]{background:var(--cg-color-accent);border:none;color:var(--cg-color-bg-primary);padding:var(--cg-space-2) var(--cg-space-3);font-size:var(--cg-font-size-sm);cursor:pointer;white-space:nowrap}.add-source-btn[data-v-f15cbb56]:disabled{opacity:.5;cursor:not-allowed}.add-source-btn[data-v-f15cbb56]:not(:disabled):hover{filter:brightness(1.1)}.source-error[data-v-f15cbb56]{color:var(--cg-color-error);font-size:var(--cg-font-size-sm);margin-top:var(--cg-space-2)}.source-success[data-v-f15cbb56]{color:var(--cg-color-success);font-size:var(--cg-font-size-sm);margin-top:var(--cg-space-2)}.btn-secondary[data-v-f15cbb56]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary);padding:var(--cg-space-2) var(--cg-space-4);cursor:pointer}.btn-secondary[data-v-f15cbb56]:hover{background:var(--cg-color-bg-hover);border-color:var(--cg-color-accent)}.open-location-btn[data-v-f15cbb56]{margin-top:var(--cg-space-2);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-muted);padding:4px 12px;font-size:var(--cg-font-size-xs);cursor:pointer;align-self:flex-start}.open-location-btn[data-v-f15cbb56]:hover{background:var(--cg-color-bg-hover);color:var(--cg-color-accent);border-color:var(--cg-color-accent)}.toast[data-v-f15cbb56]{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-accent);color:var(--cg-color-text-primary);padding:10px 20px;font-size:var(--cg-font-size-sm);z-index:10010;animation:toastSlideIn-f15cbb56 .2s ease}.toast.success[data-v-f15cbb56]{border-color:var(--cg-color-success, #4ade80)}.toast.error[data-v-f15cbb56]{border-color:var(--cg-color-error, #ef4444)}.toast.info[data-v-f15cbb56]{border-color:var(--cg-color-accent)}@keyframes toastSlideIn-f15cbb56{0%{opacity:0;transform:translate(-50%) translateY(10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.base-dropdown[data-v-857e085b]{position:relative;display:inline-flex;flex-direction:column;gap:4px}.dropdown-trigger[data-v-857e085b]{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-md);color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm);font-family:var(--cg-font-mono);cursor:pointer;width:100%;text-align:left;transition:all var(--cg-transition-fast)}.dropdown-trigger[data-v-857e085b]:hover:not(:disabled){border-color:var(--cg-color-accent)}.dropdown-trigger[data-v-857e085b]:focus{outline:none;border-color:var(--cg-color-accent);box-shadow:0 0 0 2px var(--cg-color-accent-muted)}.dropdown-trigger[data-v-857e085b]:disabled{opacity:.5;cursor:not-allowed}.dropdown-trigger.open[data-v-857e085b]{border-color:var(--cg-color-accent)}.dropdown-trigger.error[data-v-857e085b]{border-color:var(--cg-color-error)}.dropdown-value[data-v-857e085b]{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown-arrow[data-v-857e085b]{font-size:10px;color:var(--cg-color-accent);transition:transform .15s ease}.dropdown-trigger.open .dropdown-arrow[data-v-857e085b]{transform:rotate(180deg)}.dropdown-overlay[data-v-857e085b]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10010}.dropdown-menu[data-v-857e085b]{position:fixed;background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-md);box-shadow:var(--cg-shadow-lg);overflow-y:auto;overflow-x:hidden;z-index:10011;padding:4px 0}.dropdown-menu[data-v-857e085b]::-webkit-scrollbar{width:8px}.dropdown-menu[data-v-857e085b]::-webkit-scrollbar-track{background:var(--cg-color-bg-tertiary)}.dropdown-menu[data-v-857e085b]::-webkit-scrollbar-thumb{background:var(--cg-color-border-subtle);border-radius:4px}.dropdown-menu[data-v-857e085b]::-webkit-scrollbar-thumb:hover{background:var(--cg-color-accent)}.dropdown-option[data-v-857e085b]{padding:8px 12px;cursor:pointer;font-size:var(--cg-font-size-sm);font-family:var(--cg-font-mono);color:var(--cg-color-text-primary);transition:background-color .1s ease}.dropdown-option[data-v-857e085b]:hover{background:var(--cg-color-bg-hover)}.dropdown-option.selected[data-v-857e085b]{background:var(--cg-color-accent-muted);color:var(--cg-color-accent)}.dropdown-error[data-v-857e085b]{font-size:var(--cg-font-size-xs);color:var(--cg-color-error)}.hf-file-browser[data-v-183acebc]{display:flex;flex-direction:column;gap:var(--cg-space-3);height:100%}.browser-header[data-v-183acebc]{display:flex;align-items:center;gap:var(--cg-space-3);padding-bottom:var(--cg-space-2);border-bottom:1px solid var(--cg-color-border)}.back-btn[data-v-183acebc]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-secondary);padding:6px 10px;font-size:var(--cg-font-size-sm);cursor:pointer;display:flex;align-items:center;justify-content:center}.back-btn[data-v-183acebc]:hover{background:var(--cg-color-bg-hover);border-color:var(--cg-color-accent);color:var(--cg-color-accent)}.repo-info[data-v-183acebc]{display:flex;align-items:center;gap:var(--cg-space-2);flex:1}.repo-id[data-v-183acebc]{color:var(--cg-color-accent);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-medium)}.revision-pill[data-v-183acebc]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);padding:2px 8px;font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);font-family:var(--cg-font-mono)}.loading-state[data-v-183acebc],.error-state[data-v-183acebc]{padding:var(--cg-space-4);text-align:center;color:var(--cg-color-text-muted)}.error-state[data-v-183acebc]{color:var(--cg-color-error)}.toolbar[data-v-183acebc]{display:flex;gap:var(--cg-space-2);align-items:center;flex-wrap:wrap}.search-input[data-v-183acebc]{flex:1;min-width:200px}.toolbar-actions[data-v-183acebc]{display:flex;gap:var(--cg-space-2)}.toggle-btn[data-v-183acebc],.action-btn[data-v-183acebc]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-secondary);padding:6px 12px;font-size:var(--cg-font-size-xs);cursor:pointer;white-space:nowrap}.toggle-btn[data-v-183acebc]:hover,.action-btn[data-v-183acebc]:hover{background:var(--cg-color-bg-hover);border-color:var(--cg-color-accent);color:var(--cg-color-accent)}.toggle-btn.active[data-v-183acebc]{background:var(--cg-color-accent);color:var(--cg-color-text-inverse);border-color:var(--cg-color-accent)}.file-list-container[data-v-183acebc]{flex:1;min-height:0;max-height:300px;overflow-y:auto;background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border)}.file-list-container[data-v-183acebc]::-webkit-scrollbar{width:8px}.file-list-container[data-v-183acebc]::-webkit-scrollbar-track{background:var(--cg-color-bg-tertiary)}.file-list-container[data-v-183acebc]::-webkit-scrollbar-thumb{background:var(--cg-color-border-subtle);border:1px solid var(--cg-color-bg-tertiary)}.file-list-container[data-v-183acebc]::-webkit-scrollbar-thumb:hover{background:var(--cg-color-accent)}.file-list-header[data-v-183acebc]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-bg-tertiary);border-bottom:1px solid var(--cg-color-border);position:sticky;top:0;z-index:1}.header-name[data-v-183acebc],.header-size[data-v-183acebc]{font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-medium);color:var(--cg-color-text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;gap:var(--cg-space-1)}.header-name[data-v-183acebc]:hover,.header-size[data-v-183acebc]:hover{color:var(--cg-color-accent)}.header-name[data-v-183acebc]{flex:1}.header-size[data-v-183acebc]{white-space:nowrap}.sort-indicator[data-v-183acebc]{font-size:10px;color:var(--cg-color-accent);min-width:10px}.file-list[data-v-183acebc]{display:flex;flex-direction:column}.file-item[data-v-183acebc]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-2) var(--cg-space-3);cursor:pointer;border-bottom:1px solid var(--cg-color-border-subtle)}.file-item[data-v-183acebc]:last-child{border-bottom:none}.file-item[data-v-183acebc]:hover{background:var(--cg-color-bg-hover)}.file-item.selected[data-v-183acebc]{background:var(--cg-color-accent-muted)}.file-checkbox[data-v-183acebc]{cursor:pointer;accent-color:var(--cg-color-accent)}.file-path[data-v-183acebc]{flex:1;font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);word-break:break-all;color:var(--cg-color-text-primary)}.file-size[data-v-183acebc]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);white-space:nowrap}.empty-state[data-v-183acebc]{padding:var(--cg-space-4);text-align:center;color:var(--cg-color-text-muted);font-style:italic}.destination-section[data-v-183acebc]{background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border);padding:var(--cg-space-3)}.section-label[data-v-183acebc]{color:var(--cg-color-accent);text-transform:uppercase;font-size:var(--cg-font-size-xs);letter-spacing:var(--cg-letter-spacing-wide);margin:0 0 var(--cg-space-2) 0}.destination-row[data-v-183acebc]{display:flex;align-items:center;gap:var(--cg-space-2)}.dest-select[data-v-183acebc]{min-width:220px}.path-separator[data-v-183acebc]{color:var(--cg-color-text-muted);font-family:var(--cg-font-mono)}.dest-subfolder[data-v-183acebc]{flex:1}.dest-custom[data-v-183acebc]{margin-top:var(--cg-space-2)}.action-bar[data-v-183acebc]{display:flex;justify-content:space-between;align-items:center;gap:var(--cg-space-3)}.summary-info[data-v-183acebc]{display:flex;align-items:center;gap:var(--cg-space-3)}.summary-count[data-v-183acebc]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm)}.summary-size[data-v-183acebc]{color:var(--cg-color-accent);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm)}.token-config-modal[data-v-0687d0ce]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.provider-info[data-v-0687d0ce]{display:flex;align-items:center;gap:var(--cg-space-2);font-size:var(--cg-font-size-lg);font-weight:var(--cg-font-weight-medium)}.current-token[data-v-0687d0ce]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-3);background:var(--cg-color-bg-tertiary);border-radius:var(--cg-border-radius)}.current-token .label[data-v-0687d0ce]{color:var(--cg-color-text-secondary)}.current-token .mask[data-v-0687d0ce]{font-family:var(--cg-font-mono);flex:1}.token-input-section[data-v-0687d0ce]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.input-label[data-v-0687d0ce]{font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary)}.help-text[data-v-0687d0ce]{font-size:var(--cg-font-size-xs)}.help-text a[data-v-0687d0ce]{color:var(--cg-color-accent)}.modal-actions[data-v-0687d0ce]{display:flex;justify-content:flex-end;gap:var(--cg-space-2)}.huggingface-tab[data-v-e13209bf]{display:flex;flex-direction:column;gap:var(--cg-space-3);height:100%}.search-section[data-v-e13209bf]{flex-shrink:0}.search-header[data-v-e13209bf]{display:flex;justify-content:space-between;align-items:center;gap:var(--cg-space-2)}.search-bar[data-v-e13209bf]{display:flex;gap:var(--cg-space-2);flex:1}.search-bar[data-v-e13209bf] .base-input-wrapper{flex:1}.search-results[data-v-e13209bf]{flex:1;min-height:0;overflow-y:auto}.loading-state[data-v-e13209bf],.error-state[data-v-e13209bf],.empty-state[data-v-e13209bf],.hint-state[data-v-e13209bf]{padding:var(--cg-space-4);text-align:center;color:var(--cg-color-text-muted)}.error-state[data-v-e13209bf]{display:flex;flex-direction:column;align-items:center;gap:var(--cg-space-2)}.error-state p[data-v-e13209bf]{color:var(--cg-color-error);margin:0}.hint-state[data-v-e13209bf]{font-style:italic}.results-list[data-v-e13209bf]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.repo-card[data-v-e13209bf]{background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border);padding:var(--cg-space-3);cursor:pointer;transition:border-color .15s ease,background-color .15s ease}.repo-card[data-v-e13209bf]:hover{border-color:var(--cg-color-accent);background:var(--cg-color-bg-hover)}.repo-header[data-v-e13209bf]{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--cg-space-2);margin-bottom:var(--cg-space-1)}.repo-id[data-v-e13209bf]{color:var(--cg-color-accent);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-medium);word-break:break-all}.repo-stats[data-v-e13209bf]{display:flex;gap:var(--cg-space-3);flex-shrink:0}.stat[data-v-e13209bf]{display:flex;align-items:center;gap:var(--cg-space-1);color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);white-space:nowrap}.stat-icon[data-v-e13209bf]{font-size:var(--cg-font-size-xs)}.repo-desc[data-v-e13209bf]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-sm);margin:0 0 var(--cg-space-2) 0;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.repo-tags[data-v-e13209bf]{display:flex;flex-wrap:wrap;gap:var(--cg-space-1)}.tag[data-v-e13209bf]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);padding:2px 6px}.search-results[data-v-e13209bf]::-webkit-scrollbar{width:8px}.search-results[data-v-e13209bf]::-webkit-scrollbar-track{background:var(--cg-color-bg-tertiary)}.search-results[data-v-e13209bf]::-webkit-scrollbar-thumb{background:var(--cg-color-border-subtle);border:1px solid var(--cg-color-bg-tertiary)}.search-results[data-v-e13209bf]::-webkit-scrollbar-thumb:hover{background:var(--cg-color-accent)}.civitai-tab[data-v-44948051]{display:flex;align-items:center;justify-content:center;min-height:300px;padding:var(--cg-space-4)}.placeholder[data-v-44948051]{text-align:center;color:var(--cg-color-text-muted)}.placeholder .icon[data-v-44948051]{font-size:48px;margin-bottom:var(--cg-space-3)}.placeholder h3[data-v-44948051]{color:var(--cg-color-text-secondary);margin:0 0 var(--cg-space-2) 0}.placeholder p[data-v-44948051]{margin:0;font-size:var(--cg-font-size-sm)}.direct-url-tab[data-v-01def7aa]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.input-group[data-v-01def7aa]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.input-group label[data-v-01def7aa]{font-weight:var(--cg-font-weight-medium);font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary)}.error[data-v-01def7aa]{color:var(--cg-color-error);font-size:var(--cg-font-size-sm);margin:0}.note[data-v-01def7aa]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);margin:0}.actions[data-v-01def7aa]{display:flex;justify-content:flex-end;margin-top:var(--cg-space-2)}.download-modal[data-v-90a9f401]{display:flex;flex-direction:column;height:100%}.tab-bar[data-v-90a9f401]{display:flex;gap:var(--cg-space-1);padding-bottom:var(--cg-space-3);border-bottom:1px solid var(--cg-color-border);margin-bottom:var(--cg-space-3)}.tab-btn[data-v-90a9f401]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-secondary);padding:var(--cg-space-2) var(--cg-space-3);font-size:var(--cg-font-size-sm);cursor:pointer;transition:all .15s ease}.tab-btn[data-v-90a9f401]:hover{background:var(--cg-color-bg-hover);border-color:var(--cg-color-accent);color:var(--cg-color-accent)}.tab-btn.active[data-v-90a9f401]{background:var(--cg-color-accent);border-color:var(--cg-color-accent);color:var(--cg-color-text-inverse)}.tab-content[data-v-90a9f401]{flex:1;min-height:0;overflow-y:auto}.indexing-progress[data-v-3705114c]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-md);padding:var(--cg-space-2) var(--cg-space-3);margin-bottom:var(--cg-space-2)}.progress-info[data-v-3705114c]{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--cg-space-1)}.progress-label[data-v-3705114c]{font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary)}.progress-count[data-v-3705114c]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.progress-bar[data-v-3705114c]{height:4px;background:var(--cg-color-bg-hover);border-radius:2px;overflow:hidden}.progress-fill[data-v-3705114c]{height:100%;background:var(--cg-color-accent);transition:width .2s ease}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:10010}.modal-content{width:90%;max-width:500px;background:var(--cg-color-bg-primary, #1a1a2e);border:1px solid var(--cg-color-border, #333);border-radius:var(--cg-radius-lg, 8px);box-shadow:0 25px 50px -12px #00000080;display:flex;flex-direction:column;overflow:hidden}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--cg-color-border, #333);background:var(--cg-color-bg-secondary, #252542)}.modal-header h3{margin:0;font-size:14px;font-weight:600;color:var(--cg-color-text-primary, #fff)}.modal-close{background:none;border:none;font-size:18px;color:var(--cg-color-text-muted, #888);cursor:pointer;padding:4px;border-radius:4px;transition:all .15s ease}.modal-close:hover{color:var(--cg-color-text-primary, #fff);background:var(--cg-color-bg-hover, #333)}.modal-body{padding:16px;display:flex;flex-direction:column;gap:12px}.input-group{display:flex;flex-direction:column;gap:4px}.input-group label{font-size:12px;font-weight:500;color:var(--cg-color-text-secondary, #aaa)}.current-path{font-family:var(--cg-font-mono, monospace);font-size:13px;padding:8px 12px;background:var(--cg-color-bg-tertiary, #333);border-radius:4px;color:var(--cg-color-accent, #7c3aed);word-break:break-all;overflow-wrap:anywhere}.modal-note{font-size:12px;color:var(--cg-color-text-muted, #888);margin:0;padding:8px;background:var(--cg-color-bg-secondary, #252542);border-radius:4px}.modal-error{font-size:12px;color:var(--cg-color-error, #ef4444);margin-top:4px}.modal-footer{display:flex;gap:8px;justify-content:flex-end;padding:12px 16px;border-top:1px solid var(--cg-color-border, #333);background:var(--cg-color-bg-secondary, #252542)}.node-details[data-v-b342f626]{display:flex;flex-direction:column;gap:var(--cg-space-3)}.status-row[data-v-b342f626]{display:flex;align-items:center;gap:var(--cg-space-3);padding-bottom:var(--cg-space-3);border-bottom:1px solid var(--cg-color-border-subtle)}.status-badge[data-v-b342f626]{padding:4px 12px;border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);text-transform:uppercase;letter-spacing:.5px}.status-badge.installed[data-v-b342f626]{background:var(--cg-color-success-muted, rgba(34, 197, 94, .15));color:var(--cg-color-success);border:1px solid var(--cg-color-success)}.status-badge.dev[data-v-b342f626]{background:var(--cg-color-accent-muted);color:var(--cg-color-accent);border:1px solid var(--cg-color-accent)}.status-badge.missing[data-v-b342f626]{background:var(--cg-color-error-muted);color:var(--cg-color-error);border:1px solid var(--cg-color-error)}.status-badge.warning[data-v-b342f626]{background:#f59e0b26;color:var(--cg-color-warning, #f59e0b);border:1px solid var(--cg-color-warning, #f59e0b)}.detail-row[data-v-b342f626]{display:flex;align-items:flex-start;gap:var(--cg-space-3);font-size:var(--cg-font-size-sm)}.label[data-v-b342f626]{color:var(--cg-color-text-muted);min-width:100px;flex-shrink:0}.value[data-v-b342f626]{color:var(--cg-color-text-secondary);word-break:break-word}.value.mono[data-v-b342f626]{font-family:var(--cg-font-mono)}.value.small[data-v-b342f626]{font-size:var(--cg-font-size-xs)}.repo-link[data-v-b342f626]{color:var(--cg-color-accent);text-decoration:none;display:inline-flex;align-items:center;gap:6px;word-break:break-all}.repo-link[data-v-b342f626]:hover{text-decoration:underline}.external-icon[data-v-b342f626]{flex-shrink:0;opacity:.7}.section-divider[data-v-b342f626]{height:1px;background:var(--cg-color-border-subtle);margin:var(--cg-space-2) 0}.workflow-list[data-v-b342f626]{display:flex;flex-wrap:wrap;gap:6px}.workflow-tag[data-v-b342f626]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);padding:2px 8px;border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-secondary)}.dialog-message[data-v-3670b9f5]{margin:0 0 12px;font-size:var(--cg-font-size-sm);color:var(--cg-color-text-primary);line-height:var(--cg-line-height-normal)}.dialog-details[data-v-3670b9f5]{background:var(--cg-color-bg-tertiary);border-radius:var(--cg-radius-md);padding:8px 12px;margin-bottom:12px}.detail-item[data-v-3670b9f5]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-secondary);padding:2px 0}.dialog-warning[data-v-3670b9f5]{display:flex;align-items:flex-start;gap:8px;margin:0;padding:8px 10px;background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-md);font-size:var(--cg-font-size-xs);color:var(--cg-color-warning)}.warning-icon[data-v-3670b9f5]{flex-shrink:0}.mismatch-warning[data-v-1555a802]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-3);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-sm);color:var(--cg-color-warning);margin-bottom:var(--cg-space-3)}.warning-icon[data-v-1555a802]{font-size:var(--cg-font-size-lg);flex-shrink:0}.version-mismatch[data-v-1555a802]{display:flex;align-items:center;gap:var(--cg-space-1);font-family:var(--cg-font-mono)}.version-actual[data-v-1555a802]{color:var(--cg-color-error);text-decoration:line-through}.version-arrow[data-v-1555a802]{color:var(--cg-color-text-muted)}.version-expected[data-v-1555a802]{color:var(--cg-color-success)}.remote-url-display[data-v-7768a58d]{display:inline-flex;align-items:center;gap:var(--cg-space-2);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm)}.url-text[data-v-7768a58d]{color:var(--cg-color-text-secondary);word-break:break-all}.copy-btn[data-v-7768a58d]{background:transparent;border:1px solid var(--cg-color-border-subtle);color:var(--cg-color-text-muted);cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;transition:all var(--cg-transition-fast);flex-shrink:0}.copy-btn[data-v-7768a58d]:hover{border-color:var(--cg-color-accent);color:var(--cg-color-accent)}.copy-btn.copied[data-v-7768a58d]{color:var(--cg-color-success);border-color:var(--cg-color-success)}.remote-title[data-v-8310f3a8]{display:flex;align-items:center;gap:var(--cg-space-2);flex-wrap:wrap}.default-badge[data-v-8310f3a8]{display:inline-block;padding:2px 6px;background:transparent;border:1px solid var(--cg-color-success);color:var(--cg-color-success);font-size:var(--cg-font-size-xs);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.sync-badge[data-v-8310f3a8]{display:inline-flex;align-items:center;gap:var(--cg-space-1);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs)}.sync-badge .ahead[data-v-8310f3a8]{color:var(--cg-color-info)}.sync-badge .behind[data-v-8310f3a8]{color:var(--cg-color-warning)}.sync-badge .synced[data-v-8310f3a8]{color:var(--cg-color-success)}.remote-url-link[data-v-8310f3a8]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);color:var(--cg-color-info);text-decoration:none}.remote-url-link[data-v-8310f3a8]:hover{text-decoration:underline}.remote-url-text[data-v-8310f3a8]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.base-form-field[data-v-9a1cf296]{display:flex;flex-direction:column;gap:6px}.base-form-field.full-width[data-v-9a1cf296]{width:100%}.base-form-field-label[data-v-9a1cf296]{font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary);font-weight:var(--cg-font-weight-medium);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.base-form-field-required[data-v-9a1cf296]{color:var(--cg-color-error);margin-left:2px}.base-form-field-input[data-v-9a1cf296]{width:100%}.base-form-field-error[data-v-9a1cf296]{font-size:var(--cg-font-size-xs);color:var(--cg-color-error)}.base-form-field-hint[data-v-9a1cf296]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.remote-form[data-v-56021b18]{border:1px solid var(--cg-color-border);background:var(--cg-color-bg-tertiary);padding:var(--cg-space-4);margin-bottom:var(--cg-space-4)}.form-header[data-v-56021b18]{margin-bottom:var(--cg-space-4)}.form-body[data-v-56021b18]{display:flex;flex-direction:column;gap:var(--cg-space-3);margin-bottom:var(--cg-space-4)}.form-error[data-v-56021b18]{padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-error-muted);border:1px solid var(--cg-color-error);color:var(--cg-color-error);font-size:var(--cg-font-size-sm)}.form-actions[data-v-56021b18]{display:flex;gap:var(--cg-space-2)}.conflict-summary-box[data-v-4e9e6cc9]{display:flex;flex-direction:column;gap:var(--cg-space-3);padding:var(--cg-space-3);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-md)}.summary-header[data-v-4e9e6cc9]{display:flex;align-items:flex-start;gap:var(--cg-space-2)}.summary-icon[data-v-4e9e6cc9]{font-size:var(--cg-font-size-lg);color:var(--cg-color-warning)}.summary-text[data-v-4e9e6cc9]{flex:1}.summary-text strong[data-v-4e9e6cc9]{color:var(--cg-color-warning);font-size:var(--cg-font-size-sm)}.summary-text p[data-v-4e9e6cc9]{margin:var(--cg-space-1) 0 0 0;font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary)}.summary-text p.all-resolved[data-v-4e9e6cc9]{color:var(--cg-color-success)}.summary-progress[data-v-4e9e6cc9]{display:flex;align-items:center;gap:var(--cg-space-2)}.progress-bar[data-v-4e9e6cc9]{flex:1;height:6px;background:var(--cg-color-bg-tertiary);border-radius:var(--cg-radius-sm);overflow:hidden}.progress-fill[data-v-4e9e6cc9]{height:100%;background:var(--cg-color-warning);border-radius:var(--cg-radius-sm);transition:width .3s ease}.progress-text[data-v-4e9e6cc9]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);white-space:nowrap}.modal-overlay[data-v-1d633bba]{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--cg-color-bg-overlay);display:flex;align-items:center;justify-content:center;z-index:10005;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-content[data-v-1d633bba]{background:var(--cg-color-bg-primary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-lg);box-shadow:var(--cg-shadow-lg);max-width:600px;width:90%;max-height:80vh;overflow-y:auto}.modal-header[data-v-1d633bba]{display:flex;justify-content:space-between;align-items:center;padding:var(--cg-space-4);border-bottom:1px solid var(--cg-color-border-subtle)}.modal-title[data-v-1d633bba]{margin:0;font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-accent);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.modal-close[data-v-1d633bba]{background:transparent;border:none;color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xl);cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.modal-close[data-v-1d633bba]:hover{color:var(--cg-color-text-primary)}.modal-body[data-v-1d633bba]{padding:var(--cg-space-4);display:flex;flex-direction:column;gap:var(--cg-space-4)}.loading-state[data-v-1d633bba]{display:flex;align-items:center;gap:var(--cg-space-2);justify-content:center;padding:var(--cg-space-6);color:var(--cg-color-text-muted)}.spinner[data-v-1d633bba]{animation:spin-1d633bba 1s linear infinite}.error-box[data-v-1d633bba]{display:flex;align-items:flex-start;gap:var(--cg-space-3);padding:var(--cg-space-4);background:var(--cg-color-error-muted);border:1px solid var(--cg-color-error);border-radius:var(--cg-radius-sm);color:var(--cg-color-error)}.error-icon[data-v-1d633bba]{font-size:var(--cg-font-size-xl);flex-shrink:0}.error-box p[data-v-1d633bba]{margin:var(--cg-space-1) 0 0 0;font-size:var(--cg-font-size-sm)}.error-hint[data-v-1d633bba]{margin-top:var(--cg-space-2)!important;opacity:.9}@keyframes spin-1d633bba{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.commit-summary[data-v-1d633bba]{display:flex;align-items:center;gap:var(--cg-space-2);font-size:var(--cg-font-size-base);color:var(--cg-color-text-primary)}.commit-summary .icon[data-v-1d633bba]{font-size:var(--cg-font-size-lg)}.warning-box[data-v-1d633bba]{display:flex;align-items:flex-start;gap:var(--cg-space-3);padding:var(--cg-space-4);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-sm);color:var(--cg-color-warning)}.warning-icon[data-v-1d633bba]{font-size:var(--cg-font-size-xl);flex-shrink:0}.warning-box p[data-v-1d633bba]{margin:var(--cg-space-1) 0 0 0;font-size:var(--cg-font-size-sm)}.options-section[data-v-1d633bba]{padding:var(--cg-space-3);background:var(--cg-color-bg-secondary);border-radius:var(--cg-radius-sm)}.options-section ul[data-v-1d633bba]{margin:var(--cg-space-2) 0 0 var(--cg-space-4);padding:0;font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary)}.commits-section[data-v-1d633bba]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.commit-list[data-v-1d633bba]{display:flex;flex-direction:column;gap:var(--cg-space-1);padding:var(--cg-space-3);background:var(--cg-color-bg-secondary);border-radius:var(--cg-radius-sm);max-height:200px;overflow-y:auto}.commit-item[data-v-1d633bba]{display:flex;align-items:center;gap:var(--cg-space-2);font-size:var(--cg-font-size-sm)}.commit-hash[data-v-1d633bba]{font-family:var(--cg-font-mono);color:var(--cg-color-info);flex-shrink:0}.commit-message[data-v-1d633bba]{color:var(--cg-color-text-primary);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.commit-date[data-v-1d633bba]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);flex-shrink:0}.changes-section[data-v-1d633bba]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.section-title[data-v-1d633bba]{margin:0;font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-muted);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.change-group[data-v-1d633bba]{background:var(--cg-color-bg-secondary);border-radius:var(--cg-radius-sm);overflow:hidden}.change-group summary[data-v-1d633bba]{display:flex;justify-content:space-between;align-items:center;padding:var(--cg-space-2) var(--cg-space-3);cursor:pointer;-webkit-user-select:none;user-select:none}.change-group summary[data-v-1d633bba]:hover{background:var(--cg-color-bg-hover)}.change-type[data-v-1d633bba]{font-weight:var(--cg-font-weight-medium);color:var(--cg-color-text-primary)}.change-count[data-v-1d633bba]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.change-list[data-v-1d633bba]{padding:var(--cg-space-2) var(--cg-space-3);border-top:1px solid var(--cg-color-border-subtle);max-height:150px;overflow-y:auto}.change-item[data-v-1d633bba]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm);padding:var(--cg-space-1) 0}.change-item.add[data-v-1d633bba]{color:var(--cg-color-success)}.change-item.modify[data-v-1d633bba]{color:var(--cg-color-info)}.change-item.delete[data-v-1d633bba]{color:var(--cg-color-error)}.conflict-badge[data-v-1d633bba]{margin-left:var(--cg-space-2);padding:1px var(--cg-space-2);font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-semibold);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-xs);color:var(--cg-color-warning)}.strategy-section[data-v-1d633bba]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.radio-group[data-v-1d633bba]{display:flex;flex-direction:column;gap:var(--cg-space-2);padding:var(--cg-space-3);background:var(--cg-color-bg-secondary);border-radius:var(--cg-radius-sm)}.radio-option[data-v-1d633bba]{display:flex;align-items:center;gap:var(--cg-space-2);cursor:pointer;font-size:var(--cg-font-size-sm)}.radio-option input[data-v-1d633bba]{margin:0}.default-badge[data-v-1d633bba]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);background:var(--cg-color-bg-tertiary);padding:1px 4px;border-radius:var(--cg-radius-xs)}.strategy-hint[data-v-1d633bba]{margin:0;font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);font-style:italic}.up-to-date[data-v-1d633bba]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-4);color:var(--cg-color-success);justify-content:center}.modal-actions[data-v-1d633bba]{padding:var(--cg-space-4);border-top:1px solid var(--cg-color-border-subtle);display:flex;gap:var(--cg-space-2);justify-content:flex-end}.modal-overlay[data-v-3c2e35ab]{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--cg-color-bg-overlay);display:flex;align-items:center;justify-content:center;z-index:10005;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-content[data-v-3c2e35ab]{background:var(--cg-color-bg-primary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-lg);box-shadow:var(--cg-shadow-lg);max-width:600px;width:90%;max-height:80vh;overflow-y:auto}.modal-header[data-v-3c2e35ab]{display:flex;justify-content:space-between;align-items:center;padding:var(--cg-space-4);border-bottom:1px solid var(--cg-color-border-subtle)}.modal-title[data-v-3c2e35ab]{margin:0;font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-accent);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.modal-close[data-v-3c2e35ab]{background:transparent;border:none;color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xl);cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.modal-close[data-v-3c2e35ab]:hover{color:var(--cg-color-text-primary)}.modal-body[data-v-3c2e35ab]{padding:var(--cg-space-4);display:flex;flex-direction:column;gap:var(--cg-space-4)}.loading-state[data-v-3c2e35ab]{display:flex;align-items:center;gap:var(--cg-space-2);justify-content:center;padding:var(--cg-space-6);color:var(--cg-color-text-muted)}.spinner[data-v-3c2e35ab]{animation:spin-3c2e35ab 1s linear infinite}@keyframes spin-3c2e35ab{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.commit-summary[data-v-3c2e35ab]{display:flex;align-items:center;gap:var(--cg-space-2);font-size:var(--cg-font-size-base);color:var(--cg-color-text-primary)}.commit-summary .icon[data-v-3c2e35ab]{font-size:var(--cg-font-size-lg)}.warning-box[data-v-3c2e35ab]{display:flex;align-items:flex-start;gap:var(--cg-space-3);padding:var(--cg-space-4);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-sm);color:var(--cg-color-warning)}.warning-icon[data-v-3c2e35ab]{font-size:var(--cg-font-size-xl);flex-shrink:0}.warning-box p[data-v-3c2e35ab]{margin:var(--cg-space-1) 0 0 0;font-size:var(--cg-font-size-sm)}.info-box[data-v-3c2e35ab]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-3);background:var(--cg-color-info-muted);border:1px solid var(--cg-color-info);border-radius:var(--cg-radius-sm);color:var(--cg-color-info);font-size:var(--cg-font-size-sm)}.info-icon[data-v-3c2e35ab]{flex-shrink:0}.commits-section[data-v-3c2e35ab]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.section-title[data-v-3c2e35ab]{margin:0;font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-muted);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.commit-list[data-v-3c2e35ab]{display:flex;flex-direction:column;gap:var(--cg-space-1);padding:var(--cg-space-3);background:var(--cg-color-bg-secondary);border-radius:var(--cg-radius-sm);max-height:200px;overflow-y:auto}.commit-item[data-v-3c2e35ab]{display:flex;align-items:center;gap:var(--cg-space-2);font-size:var(--cg-font-size-sm)}.commit-hash[data-v-3c2e35ab]{font-family:var(--cg-font-mono);color:var(--cg-color-info);flex-shrink:0}.commit-message[data-v-3c2e35ab]{color:var(--cg-color-text-primary);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.commit-date[data-v-3c2e35ab]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);flex-shrink:0}.force-option[data-v-3c2e35ab]{padding:var(--cg-space-3);background:var(--cg-color-bg-secondary);border-radius:var(--cg-radius-sm)}.checkbox-option[data-v-3c2e35ab]{display:flex;align-items:center;gap:var(--cg-space-2);cursor:pointer;font-size:var(--cg-font-size-sm)}.checkbox-option input[data-v-3c2e35ab]{margin:0}.option-hint[data-v-3c2e35ab]{margin:var(--cg-space-1) 0 0 var(--cg-space-5);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.up-to-date[data-v-3c2e35ab]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-4);color:var(--cg-color-success);justify-content:center}.modal-actions[data-v-3c2e35ab]{padding:var(--cg-space-4);border-top:1px solid var(--cg-color-border-subtle);display:flex;gap:var(--cg-space-2);justify-content:flex-end}.resolution-choice-group[data-v-985715ed]{display:flex;gap:var(--cg-space-2)}.choice-btn[data-v-985715ed]{display:flex;align-items:center;gap:var(--cg-space-1);padding:var(--cg-space-2) var(--cg-space-3);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-sm);background:var(--cg-color-bg-secondary);color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-medium);cursor:pointer;transition:all .15s ease}.choice-btn[data-v-985715ed]:hover:not(:disabled){background:var(--cg-color-bg-hover);border-color:var(--cg-color-text-muted)}.choice-btn[data-v-985715ed]:disabled{opacity:.5;cursor:not-allowed}.choice-btn.selected[data-v-985715ed]{border-color:var(--cg-color-accent);background:var(--cg-color-accent-muted);color:var(--cg-color-accent)}.choice-btn.mine.selected[data-v-985715ed]{border-color:var(--cg-color-info);background:var(--cg-color-info-muted);color:var(--cg-color-info)}.choice-btn.theirs.selected[data-v-985715ed]{border-color:var(--cg-color-success);background:var(--cg-color-success-muted);color:var(--cg-color-success)}.choice-icon[data-v-985715ed]{font-size:var(--cg-font-size-xs)}.conflict-item[data-v-506d3bbf]{display:flex;flex-direction:column;gap:var(--cg-space-3);padding:var(--cg-space-3);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-md);transition:all .2s ease}.conflict-item.resolved[data-v-506d3bbf]{background:var(--cg-color-bg-secondary);border-color:var(--cg-color-border)}.conflict-header[data-v-506d3bbf]{display:flex;align-items:flex-start;gap:var(--cg-space-3)}.conflict-icon[data-v-506d3bbf]{font-size:var(--cg-font-size-lg);color:var(--cg-color-warning);flex-shrink:0}.conflict-item.resolved .conflict-icon[data-v-506d3bbf]{color:var(--cg-color-text-muted)}.conflict-info[data-v-506d3bbf]{flex:1;min-width:0}.workflow-name[data-v-506d3bbf]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm);color:var(--cg-color-text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.conflict-description[data-v-506d3bbf]{font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary);margin-top:var(--cg-space-1)}.resolved-badge[data-v-506d3bbf]{display:flex;align-items:center;gap:var(--cg-space-1);padding:var(--cg-space-1) var(--cg-space-2);background:var(--cg-color-success-muted);border-radius:var(--cg-radius-sm);color:var(--cg-color-success);font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-medium);flex-shrink:0}.conflict-hashes[data-v-506d3bbf]{display:flex;gap:var(--cg-space-4);padding:var(--cg-space-2);background:var(--cg-color-bg-tertiary);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.hash-item code[data-v-506d3bbf]{font-family:var(--cg-font-mono);color:var(--cg-color-text-secondary)}.conflict-actions[data-v-506d3bbf]{display:flex;justify-content:flex-end}.resolution-content[data-v-c58d150d]{display:flex;flex-direction:column;gap:var(--cg-space-4);height:100%;min-height:0}.error-box[data-v-c58d150d]{flex-shrink:0;display:flex;align-items:flex-start;gap:var(--cg-space-3);padding:var(--cg-space-4);background:var(--cg-color-error-muted);border:1px solid var(--cg-color-error);border-radius:var(--cg-radius-sm);color:var(--cg-color-error)}.error-icon[data-v-c58d150d]{font-size:var(--cg-font-size-xl);flex-shrink:0}.error-box p[data-v-c58d150d]{margin:var(--cg-space-1) 0 0 0;font-size:var(--cg-font-size-sm)}.resolution-header[data-v-c58d150d]{flex-shrink:0;padding-bottom:var(--cg-space-3);border-bottom:1px solid var(--cg-color-border-subtle)}.header-stats[data-v-c58d150d]{display:flex;gap:var(--cg-space-4);margin-bottom:var(--cg-space-2)}.stat[data-v-c58d150d]{display:flex;flex-direction:column;align-items:center}.stat-value[data-v-c58d150d]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xl);font-weight:var(--cg-font-weight-bold);color:var(--cg-color-text-primary)}.stat.resolved .stat-value[data-v-c58d150d]{color:var(--cg-color-success)}.stat.pending .stat-value[data-v-c58d150d]{color:var(--cg-color-warning)}.stat-label[data-v-c58d150d]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.header-hint[data-v-c58d150d]{font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary);margin:0;line-height:1.5}.conflicts-list[data-v-c58d150d]{display:flex;flex-direction:column;gap:var(--cg-space-3);flex:1;min-height:0;overflow-y:auto;padding-right:var(--cg-space-2)}.all-resolved-message[data-v-c58d150d]{flex-shrink:0;display:flex;align-items:center;justify-content:center;gap:var(--cg-space-2);padding:var(--cg-space-3);background:var(--cg-color-success-muted);border:1px solid var(--cg-color-success);border-radius:var(--cg-radius-md);color:var(--cg-color-success);font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-medium)}.resolved-icon[data-v-c58d150d]{font-size:var(--cg-font-size-lg)}.footer-spacer[data-v-c58d150d]{flex:1}.node-conflict-item[data-v-8b626725]{display:flex;flex-direction:column;gap:var(--cg-space-3);padding:var(--cg-space-3);background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-md)}.node-header[data-v-8b626725]{display:flex;align-items:baseline;gap:var(--cg-space-2)}.node-name[data-v-8b626725]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-primary)}.node-id[data-v-8b626725]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.version-comparison[data-v-8b626725]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-2);background:var(--cg-color-bg-tertiary);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-sm)}.version[data-v-8b626725]{display:flex;flex-direction:column;gap:2px}.version .label[data-v-8b626725]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.version code[data-v-8b626725]{font-family:var(--cg-font-mono);color:var(--cg-color-text-primary)}.version.yours code[data-v-8b626725]{color:var(--cg-color-info)}.version.theirs code[data-v-8b626725]{color:var(--cg-color-success)}.arrow[data-v-8b626725]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-lg)}.chosen-version[data-v-8b626725]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-2);background:var(--cg-color-accent-muted);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-sm)}.chosen-version .label[data-v-8b626725]{color:var(--cg-color-text-muted)}.chosen-version .chosen[data-v-8b626725]{font-family:var(--cg-font-mono);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-accent)}.chosen-reason[data-v-8b626725]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs);margin-left:auto}.affected-workflows[data-v-8b626725]{font-size:var(--cg-font-size-sm)}.affected-workflows summary[data-v-8b626725]{cursor:pointer;color:var(--cg-color-text-secondary);-webkit-user-select:none;user-select:none}.affected-workflows summary[data-v-8b626725]:hover{color:var(--cg-color-text-primary)}.affected-workflows ul[data-v-8b626725]{margin:var(--cg-space-2) 0 0 var(--cg-space-4);padding:0;list-style:none}.affected-workflows li[data-v-8b626725]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-1) 0;color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs)}.affected-workflows li code[data-v-8b626725]{font-family:var(--cg-font-mono);color:var(--cg-color-text-primary)}.wf-source[data-v-8b626725]{color:var(--cg-color-text-muted)}.wf-version[data-v-8b626725]{margin-left:auto;color:var(--cg-color-text-muted)}.validation-content[data-v-fefd26ed]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.compatible-message[data-v-fefd26ed]{display:flex;align-items:flex-start;gap:var(--cg-space-3);padding:var(--cg-space-4);background:var(--cg-color-success-muted);border:1px solid var(--cg-color-success);border-radius:var(--cg-radius-md);color:var(--cg-color-success)}.compatible-message .icon[data-v-fefd26ed]{font-size:var(--cg-font-size-xl)}.compatible-message p[data-v-fefd26ed]{margin:var(--cg-space-1) 0 0 0;font-size:var(--cg-font-size-sm)}.warning-header[data-v-fefd26ed]{display:flex;align-items:flex-start;gap:var(--cg-space-3);padding:var(--cg-space-4);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-md);color:var(--cg-color-warning)}.warning-header .icon[data-v-fefd26ed]{font-size:var(--cg-font-size-xl)}.warning-header p[data-v-fefd26ed]{margin:var(--cg-space-1) 0 0 0;font-size:var(--cg-font-size-sm)}.conflicts-list[data-v-fefd26ed]{display:flex;flex-direction:column;gap:var(--cg-space-3);max-height:300px;overflow-y:auto}.info-box[data-v-fefd26ed]{padding:var(--cg-space-3);background:var(--cg-color-bg-secondary);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-sm)}.info-box strong[data-v-fefd26ed]{display:block;margin-bottom:var(--cg-space-1);color:var(--cg-color-text-primary)}.info-box p[data-v-fefd26ed]{margin:0;color:var(--cg-color-text-secondary)}.warnings-section[data-v-fefd26ed]{padding:var(--cg-space-3);background:var(--cg-color-bg-secondary);border-radius:var(--cg-radius-sm)}.warnings-section h4[data-v-fefd26ed]{margin:0 0 var(--cg-space-2) 0;font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-muted);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.warnings-section ul[data-v-fefd26ed]{margin:0;padding:0 0 0 var(--cg-space-4);list-style:disc}.warnings-section li[data-v-fefd26ed]{font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary);padding:var(--cg-space-1) 0}.footer-spacer[data-v-fefd26ed]{flex:1}.setting-row[data-v-cb5d236c]{display:flex;justify-content:space-between;align-items:center;gap:var(--cg-space-4);padding:var(--cg-space-3) 0;border-bottom:1px solid var(--cg-color-border-subtle)}.setting-row[data-v-cb5d236c]:last-child{border-bottom:none}.setting-row.disabled[data-v-cb5d236c]{opacity:.5;pointer-events:none}.setting-info[data-v-cb5d236c]{flex:1;min-width:0}.setting-label[data-v-cb5d236c]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-medium);margin-bottom:var(--cg-space-1)}.required-marker[data-v-cb5d236c]{color:var(--cg-color-error);margin-left:2px}.setting-description[data-v-cb5d236c]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);line-height:var(--cg-line-height-normal)}.setting-control[data-v-cb5d236c]{flex-shrink:0;display:flex;align-items:center;gap:var(--cg-space-2)}.toggle[data-v-71c0f550]{position:relative;display:inline-block;width:40px;height:22px;cursor:pointer}.toggle-input[data-v-71c0f550]{opacity:0;width:0;height:0;position:absolute}.toggle-slider[data-v-71c0f550]{position:absolute;top:0;left:0;right:0;bottom:0;background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);transition:all var(--cg-transition-fast);border-radius:var(--cg-radius-full)}.toggle-slider[data-v-71c0f550]:before{content:"";position:absolute;height:14px;width:14px;left:3px;bottom:3px;background:var(--cg-color-text-muted);transition:all var(--cg-transition-fast);border-radius:50%}.toggle-input:checked+.toggle-slider[data-v-71c0f550]{background:var(--cg-color-accent);border-color:var(--cg-color-accent)}.toggle-input:checked+.toggle-slider[data-v-71c0f550]:before{transform:translate(18px);background:var(--cg-color-text-primary)}.toggle-input:disabled+.toggle-slider[data-v-71c0f550]{opacity:.5;cursor:not-allowed}.toggle-input:focus+.toggle-slider[data-v-71c0f550]{box-shadow:0 0 0 2px var(--cg-color-accent-muted)}.toggle-input:not(:disabled)+.toggle-slider[data-v-71c0f550]:hover{border-color:var(--cg-color-accent)}.workspace-settings-content[data-v-9c5b427b]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.settings-section[data-v-9c5b427b]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);padding:var(--cg-space-3)}.path-setting[data-v-9c5b427b]{padding:var(--cg-space-3) 0;border-bottom:1px solid var(--cg-color-border-subtle)}.path-setting[data-v-9c5b427b]:last-child{border-bottom:none}.path-label[data-v-9c5b427b]{font-size:var(--cg-font-size-sm);font-weight:500;color:var(--cg-color-text-primary);margin-bottom:var(--cg-space-1)}.path-description[data-v-9c5b427b]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-secondary);margin-bottom:var(--cg-space-2)}.path-value[data-v-9c5b427b]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-primary);background:var(--cg-color-bg-primary);padding:var(--cg-space-2);border-radius:var(--cg-border-radius-sm);border:1px solid var(--cg-color-border-subtle);word-break:break-all}.setting-hint[data-v-9c5b427b]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-secondary);margin-top:var(--cg-space-2);padding:var(--cg-space-2);background:var(--cg-color-bg-primary);border-radius:var(--cg-border-radius-sm)}.setting-hint code[data-v-9c5b427b]{font-family:var(--cg-font-mono);background:var(--cg-color-bg-secondary);padding:0 var(--cg-space-1);border-radius:var(--cg-border-radius-sm)}.base-tabs[data-v-ad5e6cad]{display:flex;gap:var(--cg-space-1);border-bottom:1px solid var(--cg-color-border-subtle);margin-bottom:var(--cg-space-3)}.base-tabs__tab[data-v-ad5e6cad]{padding:var(--cg-space-2) var(--cg-space-3);background:transparent;border:none;border-bottom:2px solid transparent;color:var(--cg-color-text-secondary);font-family:var(--cg-font-body);font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-medium);cursor:pointer;transition:all var(--cg-transition-fast);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.base-tabs__tab[data-v-ad5e6cad]:hover:not(.disabled){color:var(--cg-color-text-primary)}.base-tabs__tab.active[data-v-ad5e6cad]{color:var(--cg-color-accent);border-bottom-color:var(--cg-color-accent)}.base-tabs__tab.disabled[data-v-ad5e6cad]{opacity:.5;cursor:not-allowed}.base-tabs__badge[data-v-ad5e6cad]{margin-left:var(--cg-space-1);padding:1px 6px;background:var(--cg-color-accent-muted);color:var(--cg-color-accent);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-xs)}.log-viewer-wrapper[data-v-c0cc6d21]{position:relative}.log-output[data-v-c0cc6d21]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);padding:var(--cg-space-3);margin:0;user-select:text!important;-webkit-user-select:text!important;cursor:text}.copy-overlay-btn[data-v-c0cc6d21]{position:sticky;top:8px;float:right;margin-left:8px;margin-bottom:4px;padding:4px 8px;font-size:10px;font-family:var(--cg-font-body);line-height:1.2;background:var(--cg-color-bg-secondary);color:var(--cg-color-text-secondary);border:1px solid var(--cg-color-border);border-radius:4px;cursor:pointer;opacity:.4;transition:opacity .15s ease;z-index:2}.log-viewer-wrapper:hover .copy-overlay-btn[data-v-c0cc6d21]{opacity:1}.copy-overlay-btn[data-v-c0cc6d21]:hover{background:var(--cg-color-bg-hover);color:var(--cg-color-text-primary)}.copy-overlay-btn[data-v-c0cc6d21]:disabled{cursor:default}.log-line[data-v-c0cc6d21]{line-height:1.5;white-space:pre-wrap;word-wrap:break-word;user-select:text!important;-webkit-user-select:text!important}.log-level-error[data-v-c0cc6d21]{color:#f55}.log-level-warning[data-v-c0cc6d21]{color:#ffb86c}.log-level-info[data-v-c0cc6d21]{color:#50fa7b}.log-level-debug[data-v-c0cc6d21]{color:#6272a4}.env-title[data-v-9231917a]{display:flex;align-items:center;gap:var(--cg-space-2);flex-wrap:wrap}.current-badge[data-v-9231917a]{display:inline-block;padding:2px 6px;background:transparent;border:1px solid var(--cg-color-success);color:var(--cg-color-success);font-size:var(--cg-font-size-xs);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);border-radius:var(--cg-radius-sm)}.branch-info[data-v-9231917a]{font-family:var(--cg-font-mono);color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs);display:flex;align-items:center;gap:var(--cg-space-1)}.branch-icon[data-v-9231917a]{opacity:.7}.env-details[data-v-92e68b76]{display:flex;flex-direction:column;gap:var(--cg-space-3)}.status-row[data-v-92e68b76]{display:flex;align-items:center;gap:var(--cg-space-3);padding-bottom:var(--cg-space-3);border-bottom:1px solid var(--cg-color-border-subtle)}.status-badge[data-v-92e68b76]{padding:4px 12px;border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);text-transform:uppercase;letter-spacing:.5px}.status-badge.current[data-v-92e68b76]{background:var(--cg-color-success-muted, rgba(34, 197, 94, .15));color:var(--cg-color-success);border:1px solid var(--cg-color-success)}.status-badge.inactive[data-v-92e68b76]{background:var(--cg-color-bg-tertiary);color:var(--cg-color-text-muted);border:1px solid var(--cg-color-border-subtle)}.detail-row[data-v-92e68b76]{display:flex;align-items:flex-start;gap:var(--cg-space-3);font-size:var(--cg-font-size-sm)}.label[data-v-92e68b76]{color:var(--cg-color-text-muted);min-width:100px;flex-shrink:0}.value[data-v-92e68b76]{color:var(--cg-color-text-secondary);word-break:break-word}.value.mono[data-v-92e68b76]{font-family:var(--cg-font-mono)}.value.small[data-v-92e68b76]{font-size:var(--cg-font-size-xs)}.section-divider[data-v-92e68b76]{height:1px;background:var(--cg-color-border-subtle);margin:var(--cg-space-2) 0}.collapsible-section[data-v-92e68b76]{font-size:var(--cg-font-size-sm)}.collapsible-header[data-v-92e68b76]{display:flex;align-items:center;gap:var(--cg-space-3);cursor:pointer;-webkit-user-select:none;user-select:none;padding:var(--cg-space-1) 0;border-radius:var(--cg-radius-sm)}.collapsible-header[data-v-92e68b76]:hover{opacity:.8}.chevron[data-v-92e68b76]{margin-left:auto;font-size:10px;color:var(--cg-color-text-muted);transition:transform .15s ease}.chevron.expanded[data-v-92e68b76]{transform:rotate(90deg)}.collapsible-body[data-v-92e68b76]{max-height:200px;overflow-y:auto;margin-top:var(--cg-space-2);padding-left:var(--cg-space-3);border-left:2px solid var(--cg-color-border-subtle)}.item-list[data-v-92e68b76]{display:flex;flex-direction:column;gap:var(--cg-space-1)}.list-item[data-v-92e68b76]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-1) var(--cg-space-2);font-size:var(--cg-font-size-xs);border-radius:var(--cg-radius-sm)}.list-item[data-v-92e68b76]:hover{background:var(--cg-color-bg-tertiary)}.item-name[data-v-92e68b76]{color:var(--cg-color-text-secondary);font-family:var(--cg-font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.item-meta[data-v-92e68b76]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);flex-shrink:0}.empty-list[data-v-92e68b76]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);font-style:italic;padding:var(--cg-space-1) var(--cg-space-2)}.sync-badge[data-v-92e68b76]{padding:1px 6px;border-radius:var(--cg-radius-sm);font-size:10px;font-weight:var(--cg-font-weight-semibold);text-transform:uppercase;letter-spacing:.3px;flex-shrink:0}.sync-badge.synced[data-v-92e68b76]{background:var(--cg-color-success-muted, rgba(34, 197, 94, .15));color:var(--cg-color-success)}.sync-badge.new[data-v-92e68b76]{background:var(--cg-color-info-muted, rgba(59, 130, 246, .15));color:var(--cg-color-info)}.sync-badge.modified[data-v-92e68b76]{background:var(--cg-color-warning-muted, rgba(245, 158, 11, .15));color:var(--cg-color-warning)}.sync-badge.deleted[data-v-92e68b76]{background:var(--cg-color-error-muted, rgba(239, 68, 68, .15));color:var(--cg-color-error)}.criticality-badge[data-v-92e68b76]{padding:1px 6px;border-radius:var(--cg-radius-sm);font-size:10px;font-weight:var(--cg-font-weight-semibold);text-transform:uppercase;letter-spacing:.3px;flex-shrink:0}.criticality-badge.required[data-v-92e68b76]{background:var(--cg-color-error-muted, rgba(239, 68, 68, .15));color:var(--cg-color-error)}.criticality-badge.flexible[data-v-92e68b76]{background:var(--cg-color-warning-muted, rgba(245, 158, 11, .15));color:var(--cg-color-warning)}.criticality-badge.optional[data-v-92e68b76]{background:var(--cg-color-bg-tertiary);color:var(--cg-color-text-muted)}.model-item[data-v-92e68b76]{flex-direction:column;align-items:flex-start;gap:var(--cg-space-1)}.model-row[data-v-92e68b76]{display:flex;align-items:center;gap:var(--cg-space-2);width:100%}.model-meta[data-v-92e68b76]{display:flex;gap:var(--cg-space-2);padding-left:var(--cg-space-1)}.missing-count[data-v-92e68b76]{color:var(--cg-color-warning);font-size:var(--cg-font-size-xs)}.footer-actions[data-v-92e68b76]{display:flex;width:100%;align-items:center}.footer-spacer[data-v-92e68b76]{flex:1}.progress-bar[data-v-1beb0512]{width:100%;background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);border-radius:2px;overflow:hidden;position:relative}.progress-fill[data-v-1beb0512]{height:100%;transition:width .3s ease;position:relative}.progress-fill[data-v-1beb0512]:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.1),transparent);animation:shimmer-1beb0512 2s infinite}@keyframes shimmer-1beb0512{0%{transform:translate(-100%)}to{transform:translate(100%)}}.progress-fill.default[data-v-1beb0512]{background:var(--cg-color-accent);box-shadow:0 0 8px #00ff4166}.progress-fill.success[data-v-1beb0512]{background:var(--cg-color-success);box-shadow:0 0 8px #4ade8066}.progress-fill.warning[data-v-1beb0512]{background:var(--cg-color-warning);box-shadow:0 0 8px #fbbf2466}.progress-fill.error[data-v-1beb0512]{background:var(--cg-color-error);box-shadow:0 0 8px #ef444466}.progress-bar[data-v-1beb0512]{height:var(--cg-space-2)}.task-progress[data-v-9d1de66c]{display:flex;flex-direction:column;gap:var(--cg-space-2);padding:var(--cg-space-3);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle)}.progress-info[data-v-9d1de66c]{display:flex;justify-content:space-between;align-items:center;font-size:var(--cg-font-size-sm)}.progress-percentage[data-v-9d1de66c]{font-weight:var(--cg-font-weight-bold);color:var(--cg-color-accent);font-family:var(--cg-font-mono)}.progress-message[data-v-9d1de66c]{color:var(--cg-color-text-secondary);text-align:right;flex:1;margin-left:var(--cg-space-2)}.progress-steps[data-v-9d1de66c]{display:flex;flex-direction:column;gap:var(--cg-space-1);margin-top:var(--cg-space-2);padding-top:var(--cg-space-2);border-top:1px solid var(--cg-color-border-subtle)}.step[data-v-9d1de66c]{display:flex;align-items:center;gap:var(--cg-space-2);font-size:var(--cg-font-size-xs);transition:all var(--cg-transition-fast)}.step.pending[data-v-9d1de66c]{color:var(--cg-color-text-muted)}.step.active[data-v-9d1de66c]{color:var(--cg-color-accent);font-weight:var(--cg-font-weight-medium)}.step.completed[data-v-9d1de66c]{color:var(--cg-color-success)}.step.active .step-icon[data-v-9d1de66c]{animation:spin-9d1de66c 1s linear infinite}@keyframes spin-9d1de66c{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.step-icon[data-v-9d1de66c]{width:14px;text-align:center}.create-env-form[data-v-f37eaa42]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.form-field[data-v-f37eaa42]{display:flex;flex-direction:column;gap:var(--cg-space-1)}.form-field--checkbox[data-v-f37eaa42]{flex-direction:row;align-items:center;margin-top:var(--cg-space-2)}.form-label[data-v-f37eaa42]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.form-input[data-v-f37eaa42],.form-select[data-v-f37eaa42]{background:var(--cg-color-bg-primary);border:1px solid var(--cg-color-border-subtle);color:var(--cg-color-text-primary);padding:var(--cg-space-2) var(--cg-space-3);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm)}.form-input[data-v-f37eaa42]:hover,.form-select[data-v-f37eaa42]:hover{border-color:var(--cg-color-border)}.form-input[data-v-f37eaa42]:focus,.form-select[data-v-f37eaa42]:focus{outline:none;border-color:var(--cg-color-accent)}.form-select[data-v-f37eaa42]{cursor:pointer}.form-select[data-v-f37eaa42]:disabled{opacity:.5;cursor:not-allowed}.form-checkbox[data-v-f37eaa42]{display:flex;align-items:center;gap:var(--cg-space-2);cursor:pointer;font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary)}.form-checkbox input[type=checkbox][data-v-f37eaa42]{width:16px;height:16px;accent-color:var(--cg-color-accent);cursor:pointer}.creating-intro[data-v-f37eaa42]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-sm);margin-bottom:var(--cg-space-4);text-align:center}.progress-warning[data-v-f37eaa42]{margin-top:var(--cg-space-3);padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-info-muted);border:1px solid var(--cg-color-info);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-xs);color:var(--cg-color-info);text-align:center}.create-error[data-v-f37eaa42]{margin-top:var(--cg-space-3);padding:var(--cg-space-3);background:var(--cg-color-error-muted);border:1px solid var(--cg-color-error);border-radius:var(--cg-radius-sm)}.error-message[data-v-f37eaa42]{color:var(--cg-color-error);font-size:var(--cg-font-size-sm);margin:0}.footer-status[data-v-f37eaa42]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}.file-path[data-v-f0982173]{display:inline-flex;align-items:center;gap:var(--cg-space-2);background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border-subtle);padding:var(--cg-space-1) var(--cg-space-2);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-secondary);max-width:100%;overflow:hidden}.file-path-icon[data-v-f0982173]{flex-shrink:0;font-size:var(--cg-font-size-sm)}.file-path-text[data-v-f0982173]{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:none;border:none;padding:0;font-family:inherit;font-size:inherit;color:inherit}.copy-btn[data-v-f0982173]{flex-shrink:0;background:transparent;border:none;color:var(--cg-color-text-muted);cursor:pointer;padding:0;font-size:var(--cg-font-size-sm);transition:color var(--cg-transition-fast)}.copy-btn[data-v-f0982173]:hover{color:var(--cg-color-accent)}.export-blocked[data-v-b52f5e32]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.error-header[data-v-b52f5e32]{display:flex;gap:var(--cg-space-3);padding:var(--cg-space-3);background:var(--cg-color-error-muted);border:1px solid var(--cg-color-error);border-radius:var(--cg-radius-md)}.error-icon[data-v-b52f5e32]{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:var(--cg-color-error);color:var(--cg-color-bg-primary);border-radius:50%;flex-shrink:0}.error-summary[data-v-b52f5e32]{flex:1}.error-title[data-v-b52f5e32]{margin:0 0 var(--cg-space-1) 0;font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-primary)}.error-description[data-v-b52f5e32]{margin:0;font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary)}.issues-list[data-v-b52f5e32]{display:flex;flex-direction:column;gap:var(--cg-space-3)}.issue-item[data-v-b52f5e32]{padding:var(--cg-space-3);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-md)}.issue-message[data-v-b52f5e32]{font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-medium);color:var(--cg-color-text-primary);margin-bottom:var(--cg-space-2)}.issue-details[data-v-b52f5e32]{margin-bottom:var(--cg-space-2);padding-left:var(--cg-space-3)}.issue-detail[data-v-b52f5e32]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-secondary);font-family:var(--cg-font-mono);padding:var(--cg-space-1) 0}.issue-detail[data-v-b52f5e32]:before{content:"•";margin-right:var(--cg-space-2);color:var(--cg-color-text-muted)}.show-more-inline[data-v-b52f5e32]{background:none;border:none;color:var(--cg-color-accent);font-size:var(--cg-font-size-xs);cursor:pointer;padding:0;margin-top:var(--cg-space-1)}.issue-fix[data-v-b52f5e32]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);font-style:italic}.export-warnings[data-v-b698d882]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.warning-header[data-v-b698d882]{display:flex;gap:var(--cg-space-3);padding:var(--cg-space-3);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-md)}.warning-icon[data-v-b698d882]{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:var(--cg-color-warning);color:var(--cg-color-bg-primary);border-radius:50%;flex-shrink:0}.warning-summary[data-v-b698d882]{flex:1}.warning-title[data-v-b698d882]{margin:0 0 var(--cg-space-1) 0;font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-primary)}.warning-description[data-v-b698d882]{margin:0;font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary)}.models-section[data-v-b698d882]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-md);overflow:hidden}.models-list[data-v-b698d882]{max-height:240px;overflow-y:auto}.model-item[data-v-b698d882]{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--cg-space-3);padding:var(--cg-space-3);border-bottom:1px solid var(--cg-color-border-subtle)}.model-item[data-v-b698d882]:last-child{border-bottom:none}.model-info[data-v-b698d882]{flex:1;min-width:0}.model-filename[data-v-b698d882]{font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-medium);color:var(--cg-color-text-primary);font-family:var(--cg-font-mono);word-break:break-all}.model-workflows[data-v-b698d882]{margin-top:var(--cg-space-1);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.add-source-btn[data-v-b698d882]{flex-shrink:0;background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border);color:var(--cg-color-accent);padding:4px 10px;font-size:var(--cg-font-size-xs);cursor:pointer;white-space:nowrap}.add-source-btn[data-v-b698d882]:hover{background:var(--cg-color-accent);color:var(--cg-color-bg-primary);border-color:var(--cg-color-accent)}.show-more-btn[data-v-b698d882]{width:100%;padding:var(--cg-space-2);background:transparent;border:none;border-top:1px solid var(--cg-color-border-subtle);color:var(--cg-color-accent);font-size:var(--cg-font-size-sm);cursor:pointer;transition:background var(--cg-transition-base)}.show-more-btn[data-v-b698d882]:hover{background:var(--cg-color-bg-secondary)}.success-header[data-v-b698d882]{display:flex;gap:var(--cg-space-3);padding:var(--cg-space-3);background:var(--cg-color-success-muted);border:1px solid var(--cg-color-success);border-radius:var(--cg-radius-md)}.success-icon[data-v-b698d882]{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:var(--cg-color-success);color:var(--cg-color-bg-primary);border-radius:50%;flex-shrink:0}.success-summary[data-v-b698d882]{flex:1}.success-title[data-v-b698d882]{margin:0 0 var(--cg-space-1) 0;font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-primary)}.success-description[data-v-b698d882]{margin:0;font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary)}.export-card[data-v-f4d120f2]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);padding:var(--cg-space-4);display:flex;flex-direction:column;gap:var(--cg-space-4)}.export-card-header[data-v-f4d120f2]{display:flex;gap:var(--cg-space-3);align-items:flex-start}.export-icon[data-v-f4d120f2]{font-size:var(--cg-font-size-xl)}.export-header-text[data-v-f4d120f2]{flex:1}.export-title[data-v-f4d120f2]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-semibold)}.export-subtitle[data-v-f4d120f2]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);margin-top:var(--cg-space-1)}.export-path-row[data-v-f4d120f2]{display:flex;gap:var(--cg-space-2);align-items:center}.export-path-row .path-input[data-v-f4d120f2]{flex:1}.export-actions[data-v-f4d120f2]{display:flex;gap:var(--cg-space-3);align-items:center;padding-top:var(--cg-space-3);border-top:1px solid var(--cg-color-border-subtle)}.export-warning[data-v-f4d120f2]{display:flex;gap:var(--cg-space-2);padding:var(--cg-space-2);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);margin-top:var(--cg-space-2)}.warning-icon[data-v-f4d120f2]{color:var(--cg-color-warning);font-weight:var(--cg-font-weight-bold);flex-shrink:0}.warning-text[data-v-f4d120f2]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs);line-height:1.4}.export-info[data-v-f4d120f2]{display:flex;flex-direction:column;gap:var(--cg-space-3)}.info-section strong[data-v-f4d120f2]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm)}.info-section ul[data-v-f4d120f2]{margin:var(--cg-space-2) 0 0 0;padding-left:var(--cg-space-4);color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs);line-height:1.6}.info-section li[data-v-f4d120f2]{margin-bottom:var(--cg-space-1)}.info-section li strong[data-v-f4d120f2]{font-size:var(--cg-font-size-xs)}.info-note[data-v-f4d120f2]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);margin:0;padding:var(--cg-space-2);background:var(--cg-color-bg-secondary);border-left:2px solid var(--cg-color-warning)}.file-input-wrapper[data-v-cd192091]{display:inline-block}.file-input-hidden[data-v-cd192091]{display:none}.file-drop-zone[data-v-0f79cb86]{border:2px dashed var(--cg-color-border);background:var(--cg-color-bg-tertiary);padding:var(--cg-space-4);text-align:center;transition:all var(--cg-transition-base);min-height:140px;display:flex;align-items:center;justify-content:center}.file-drop-zone.drop-active[data-v-0f79cb86]{border-color:var(--cg-color-accent);background:var(--cg-color-accent-muted);box-shadow:0 0 16px var(--cg-shadow-accent)}.file-drop-zone.has-file[data-v-0f79cb86]{border-style:solid;border-color:var(--cg-color-success);background:var(--cg-color-success-muted);min-height:auto;padding:var(--cg-space-4)}.drop-zone-empty[data-v-0f79cb86]{display:flex;flex-direction:column;align-items:center;gap:var(--cg-space-2);width:100%}.drop-zone-icon[data-v-0f79cb86]{color:var(--cg-color-text-muted);opacity:.5}.drop-zone-text[data-v-0f79cb86]{display:flex;flex-direction:column;gap:var(--cg-space-1)}.drop-zone-primary[data-v-0f79cb86]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-medium);margin:0}.drop-zone-secondary[data-v-0f79cb86]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);margin:0}.drop-zone-actions[data-v-0f79cb86]{margin-top:0}.drop-zone-file[data-v-0f79cb86]{display:flex;align-items:center;justify-content:space-between;width:100%;gap:var(--cg-space-3)}.file-info[data-v-0f79cb86]{display:flex;align-items:center;gap:var(--cg-space-3);flex:1;min-width:0}.file-icon[data-v-0f79cb86]{font-size:var(--cg-font-size-2xl);flex-shrink:0}.file-details[data-v-0f79cb86]{flex:1;min-width:0;text-align:left}.file-name[data-v-0f79cb86]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-medium);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-size[data-v-0f79cb86]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);font-family:var(--cg-font-mono)}.import-preview[data-v-182fe113]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);padding:var(--cg-space-4)}.preview-header[data-v-182fe113]{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--cg-space-4);padding-bottom:var(--cg-space-3);border-bottom:1px solid var(--cg-color-border-subtle)}.source-env[data-v-182fe113]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-sm)}.preview-content[data-v-182fe113]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.preview-section[data-v-182fe113]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.section-header[data-v-182fe113]{display:flex;align-items:center;gap:var(--cg-space-3)}.section-icon[data-v-182fe113]{font-size:var(--cg-font-size-2xl);flex-shrink:0}.section-info[data-v-182fe113]{flex:1}.section-title[data-v-182fe113]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-semibold)}.section-count[data-v-182fe113]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}.item-list[data-v-182fe113]{display:flex;flex-direction:column;gap:var(--cg-space-1);padding-left:var(--cg-space-6)}.preview-item[data-v-182fe113]{display:flex;align-items:flex-start;gap:var(--cg-space-2);color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-sm)}.item-bullet[data-v-182fe113]{color:var(--cg-color-accent);flex-shrink:0}.item-name[data-v-182fe113]{font-family:var(--cg-font-mono);word-break:break-all}.item-details[data-v-182fe113]{display:flex;flex-direction:column;gap:var(--cg-space-1);min-width:0}.item-meta[data-v-182fe113]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);font-family:var(--cg-font-mono)}.item-more[data-v-182fe113]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);font-style:italic;padding-left:var(--cg-space-3)}.git-info[data-v-182fe113]{display:flex;flex-direction:column;gap:var(--cg-space-2);padding-left:var(--cg-space-6)}.import-config[data-v-89ea06a1]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);padding:var(--cg-space-4)}.config-container[data-v-89ea06a1]{display:flex;flex-direction:column;gap:var(--cg-space-4);margin-top:var(--cg-space-3)}.config-field[data-v-89ea06a1]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.input-wrapper[data-v-89ea06a1]{position:relative;display:flex;align-items:center}.name-input[data-v-89ea06a1]{width:100%;padding:var(--cg-space-2) var(--cg-space-3);padding-right:var(--cg-space-8);background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base);font-family:var(--cg-font-mono)}.name-input[data-v-89ea06a1]:focus{outline:none;border-color:var(--cg-color-accent)}.name-input.error[data-v-89ea06a1]{border-color:var(--cg-color-error)}.name-input.valid[data-v-89ea06a1]{border-color:var(--cg-color-success)}.validating-indicator[data-v-89ea06a1],.valid-indicator[data-v-89ea06a1]{position:absolute;right:var(--cg-space-3);color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}.valid-indicator[data-v-89ea06a1]{color:var(--cg-color-success)}.field-error[data-v-89ea06a1]{color:var(--cg-color-error);font-size:var(--cg-font-size-sm)}.field-hint[data-v-89ea06a1]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs)}.strategy-options[data-v-89ea06a1]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.strategy-option[data-v-89ea06a1]{display:flex;align-items:flex-start;gap:var(--cg-space-2);padding:var(--cg-space-3);background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border-subtle);cursor:pointer;transition:all var(--cg-transition-fast)}.strategy-option[data-v-89ea06a1]:hover{background:var(--cg-color-bg-hover);border-color:var(--cg-color-border)}.strategy-option.active[data-v-89ea06a1]{border-color:var(--cg-color-accent);background:var(--cg-color-accent-muted)}.strategy-option input[type=radio][data-v-89ea06a1]{margin-top:2px;flex-shrink:0;cursor:pointer;accent-color:var(--cg-color-accent)}.strategy-content[data-v-89ea06a1]{display:flex;flex-direction:column;gap:var(--cg-space-1);flex:1}.strategy-label[data-v-89ea06a1]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-medium)}.strategy-description[data-v-89ea06a1]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}.advanced-section[data-v-89ea06a1]{border:1px solid var(--cg-color-border-subtle);background:var(--cg-color-bg-secondary)}.advanced-toggle[data-v-89ea06a1]{padding:var(--cg-space-3);cursor:pointer;color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-sm)}.advanced-toggle[data-v-89ea06a1]:hover{color:var(--cg-color-text-primary)}.advanced-content[data-v-89ea06a1]{padding:var(--cg-space-3);padding-top:0}.backend-select[data-v-89ea06a1]{width:100%;padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base);cursor:pointer}.backend-select[data-v-89ea06a1]:focus{outline:none;border-color:var(--cg-color-accent)}.switch-field[data-v-89ea06a1]{padding-top:var(--cg-space-2)}.switch-label[data-v-89ea06a1]{display:flex;align-items:center;gap:var(--cg-space-2);cursor:pointer;color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm)}.switch-label input[type=checkbox][data-v-89ea06a1]{width:16px;height:16px;cursor:pointer;accent-color:var(--cg-color-accent)}.import-flow[data-v-72cbc04e]{display:flex;flex-direction:column}.import-empty[data-v-72cbc04e]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.import-configure[data-v-72cbc04e]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.selected-file-bar[data-v-72cbc04e]{display:flex;justify-content:space-between;align-items:center;background:var(--cg-color-success-muted);border:1px solid var(--cg-color-success);padding:var(--cg-space-3)}.file-bar-content[data-v-72cbc04e]{display:flex;align-items:center;gap:var(--cg-space-3)}.file-bar-icon[data-v-72cbc04e]{font-size:var(--cg-font-size-2xl)}.file-bar-info[data-v-72cbc04e]{display:flex;flex-direction:column;gap:var(--cg-space-1)}.file-bar-name[data-v-72cbc04e]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-semibold)}.file-bar-size[data-v-72cbc04e]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);font-family:var(--cg-font-mono)}.import-actions[data-v-72cbc04e]{display:flex;justify-content:flex-end;gap:var(--cg-space-3);padding-top:var(--cg-space-3);border-top:1px solid var(--cg-color-border-subtle)}.import-progress[data-v-72cbc04e]{display:flex;flex-direction:column;gap:var(--cg-space-4);padding:var(--cg-space-4)}.creating-intro[data-v-72cbc04e]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-base);margin:0;text-align:center}.creating-intro strong[data-v-72cbc04e]{color:var(--cg-color-text-primary)}.progress-warning[data-v-72cbc04e]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);text-align:center;margin:0}.import-error[data-v-72cbc04e]{background:var(--cg-color-error-muted);border:1px solid var(--cg-color-error);padding:var(--cg-space-3)}.error-message[data-v-72cbc04e]{color:var(--cg-color-error);font-size:var(--cg-font-size-sm);margin:0}.import-complete[data-v-72cbc04e]{display:flex;flex-direction:column;align-items:center;gap:var(--cg-space-4);padding:var(--cg-space-8) var(--cg-space-4)}.complete-icon[data-v-72cbc04e]{width:64px;height:64px;display:flex;align-items:center;justify-content:center;font-size:32px;font-weight:700;border:3px solid;border-radius:50%}.complete-icon.success[data-v-72cbc04e]{color:var(--cg-color-success);border-color:var(--cg-color-success);background:var(--cg-color-success-muted)}.complete-icon.error[data-v-72cbc04e]{color:var(--cg-color-error);border-color:var(--cg-color-error);background:var(--cg-color-error-muted)}.complete-message[data-v-72cbc04e]{text-align:center;max-width:500px}.complete-title[data-v-72cbc04e]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-xl);font-weight:var(--cg-font-weight-bold);margin-bottom:var(--cg-space-2)}.complete-details[data-v-72cbc04e]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-base)}.complete-actions[data-v-72cbc04e]{display:flex;gap:var(--cg-space-3);margin-top:var(--cg-space-2)}.preview-loading[data-v-72cbc04e]{display:flex;flex-direction:column;align-items:center;gap:var(--cg-space-3);padding:var(--cg-space-6);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle)}.loading-spinner[data-v-72cbc04e]{width:32px;height:32px;border:3px solid var(--cg-color-border);border-top-color:var(--cg-color-accent);border-radius:50%;animation:spin-72cbc04e .8s linear infinite}@keyframes spin-72cbc04e{to{transform:rotate(360deg)}}.loading-text[data-v-72cbc04e]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}.import-divider[data-v-72cbc04e]{display:flex;align-items:center;gap:var(--cg-space-4);margin:var(--cg-space-2) 0}.import-divider[data-v-72cbc04e]:before,.import-divider[data-v-72cbc04e]:after{content:"";flex:1;height:1px;background:var(--cg-color-border-subtle)}.import-divider span[data-v-72cbc04e]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);text-transform:lowercase}.git-import-section[data-v-72cbc04e]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);padding:var(--cg-space-4)}.git-import-header[data-v-72cbc04e]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-medium);margin-bottom:var(--cg-space-3)}.git-url-input-row[data-v-72cbc04e]{display:flex;gap:var(--cg-space-2)}.git-url-input[data-v-72cbc04e]{flex:1;padding:var(--cg-space-1) var(--cg-space-2);background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm);font-family:var(--cg-font-mono);height:28px}.git-url-input[data-v-72cbc04e]:focus{outline:none;border-color:var(--cg-color-accent)}.git-url-input[data-v-72cbc04e]:disabled{opacity:.6;cursor:not-allowed}.git-url-hint[data-v-72cbc04e]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);margin-top:var(--cg-space-2)}.git-error[data-v-72cbc04e]{color:var(--cg-color-error);font-size:var(--cg-font-size-sm);margin-top:var(--cg-space-2)}.help-steps[data-v-e13bfe76]{display:flex;flex-direction:column;gap:var(--cg-space-3)}.help-step[data-v-e13bfe76]{display:flex;gap:var(--cg-space-3);align-items:flex-start}.step-number[data-v-e13bfe76]{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:var(--cg-color-accent-muted);color:var(--cg-color-accent);border:1px solid var(--cg-color-accent);font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-bold);flex-shrink:0}.step-content[data-v-e13bfe76]{flex:1}.step-content strong[data-v-e13bfe76]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm);display:block;margin-bottom:var(--cg-space-1)}.step-content p[data-v-e13bfe76]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs);margin:0}.instance-card[data-v-746c3894]{border:1px solid var(--cg-color-border-subtle);background:var(--cg-color-bg-tertiary);padding:var(--cg-space-3);margin-bottom:var(--cg-space-2);border-left-width:3px;border-left-color:transparent}.instance-card.status-running[data-v-746c3894]{border-left-color:var(--cg-color-success)}.instance-card.status-deploying[data-v-746c3894],.instance-card.status-starting[data-v-746c3894]{border-left-color:var(--cg-color-info)}.instance-card.status-stopped[data-v-746c3894]{border-left-color:var(--cg-color-text-muted)}.instance-card.status-error[data-v-746c3894]{border-left-color:var(--cg-color-error)}.instance-card.status-terminated[data-v-746c3894]{border-left-color:var(--cg-color-border-subtle);opacity:.6}.instance-header[data-v-746c3894]{display:flex;align-items:center;gap:var(--cg-space-2);margin-bottom:var(--cg-space-2)}.provider-badge[data-v-746c3894]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);padding:var(--cg-space-1) var(--cg-space-2);background:var(--cg-color-bg-hover);border:1px solid var(--cg-color-border-subtle);color:var(--cg-color-text-secondary)}.instance-name[data-v-746c3894]{flex:1;font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm);color:var(--cg-color-text-primary);font-weight:var(--cg-font-weight-medium);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-indicator[data-v-746c3894]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);display:flex;align-items:center;gap:var(--cg-space-1)}.status-indicator.running[data-v-746c3894]{color:var(--cg-color-success)}.status-indicator.deploying[data-v-746c3894],.status-indicator.starting[data-v-746c3894]{color:var(--cg-color-info)}.status-indicator.stopped[data-v-746c3894]{color:var(--cg-color-text-muted)}.status-indicator.error[data-v-746c3894]{color:var(--cg-color-error)}.status-indicator.terminated[data-v-746c3894]{color:var(--cg-color-text-muted)}.status-indicator .spinner[data-v-746c3894]{width:10px;height:10px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin-746c3894 .8s linear infinite}@keyframes spin-746c3894{to{transform:rotate(360deg)}}.instance-details[data-v-746c3894]{display:flex;flex-wrap:wrap;gap:var(--cg-space-2);margin-bottom:var(--cg-space-2)}.instance-details .detail[data-v-746c3894]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.instance-details .total-cost[data-v-746c3894]{color:var(--cg-color-text-secondary)}.instance-details .instance-url[data-v-746c3894]{color:var(--cg-color-accent);word-break:break-all;flex-basis:100%}.deployment-progress[data-v-746c3894]{margin-bottom:var(--cg-space-2)}.progress-message[data-v-746c3894]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);color:var(--cg-color-info);margin-bottom:var(--cg-space-1)}.instance-actions[data-v-746c3894]{display:flex;gap:var(--cg-space-2);flex-wrap:wrap}.instances-tab[data-v-ba614fc3]{padding:var(--cg-space-3)}.instances-header[data-v-ba614fc3]{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--cg-space-3)}.loading-state[data-v-ba614fc3],.empty-state[data-v-ba614fc3]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--cg-space-6);color:var(--cg-color-text-muted);text-align:center}.loading-state .spinner[data-v-ba614fc3]{width:16px;height:16px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin-ba614fc3 .8s linear infinite;margin-bottom:var(--cg-space-2)}@keyframes spin-ba614fc3{to{transform:rotate(360deg)}}.empty-icon[data-v-ba614fc3]{font-size:var(--cg-font-size-2xl);margin-bottom:var(--cg-space-2)}.empty-text[data-v-ba614fc3]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);margin-bottom:var(--cg-space-2)}.empty-help[data-v-ba614fc3]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.instances-list[data-v-ba614fc3]{display:flex;flex-direction:column}.deploy-remote-card[data-v-d687d161]{display:flex;flex-direction:column;gap:var(--cg-space-3);padding:var(--cg-space-3);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);transition:border-color var(--cg-transition-fast)}.deploy-remote-card.selected[data-v-d687d161]{border-color:var(--cg-color-accent);background:var(--cg-color-bg-secondary)}.remote-header[data-v-d687d161]{display:flex;flex-direction:column;gap:var(--cg-space-1)}.remote-info[data-v-d687d161]{display:flex;align-items:center;gap:var(--cg-space-2);flex-wrap:wrap}.remote-icon[data-v-d687d161]{font-size:var(--cg-font-size-sm)}.remote-name[data-v-d687d161]{font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm)}.default-badge[data-v-d687d161]{display:inline-block;padding:2px 6px;background:transparent;border:1px solid var(--cg-color-success);color:var(--cg-color-success);font-size:var(--cg-font-size-xs);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.sync-badge[data-v-d687d161]{display:inline-flex;align-items:center;gap:var(--cg-space-1);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs)}.sync-badge .ahead[data-v-d687d161]{color:var(--cg-color-info)}.sync-badge .behind[data-v-d687d161]{color:var(--cg-color-warning)}.sync-badge .synced[data-v-d687d161]{color:var(--cg-color-success)}.remote-url[data-v-d687d161]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);color:var(--cg-color-info);text-decoration:none}.remote-url[data-v-d687d161]:hover{text-decoration:underline}.remote-url-text[data-v-d687d161]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.remote-actions[data-v-d687d161]{display:flex;gap:var(--cg-space-2);flex-wrap:wrap}.runpod-tab[data-v-522cd4d9]{padding:var(--cg-space-3)}.api-key-card[data-v-522cd4d9]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);padding:var(--cg-space-4);display:flex;flex-direction:column;gap:var(--cg-space-3)}.api-key-row[data-v-522cd4d9]{display:flex;gap:var(--cg-space-2);align-items:center}.api-key-input-wrapper[data-v-522cd4d9]{flex:1;position:relative;display:flex;align-items:center}.api-key-input[data-v-522cd4d9]{width:100%;padding:var(--cg-space-2) var(--cg-space-3);padding-right:40px;background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm)}.api-key-input[data-v-522cd4d9]:focus{outline:none;border-color:var(--cg-color-accent)}.api-key-input[data-v-522cd4d9]:disabled{opacity:.7;cursor:not-allowed}.toggle-visibility-btn[data-v-522cd4d9]{position:absolute;right:8px;background:transparent;border:none;color:var(--cg-color-text-muted);cursor:pointer;padding:4px;font-size:14px}.toggle-visibility-btn[data-v-522cd4d9]:hover{color:var(--cg-color-text-primary)}.connection-status[data-v-522cd4d9]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-2);font-size:var(--cg-font-size-xs)}.connection-status.success[data-v-522cd4d9]{background:var(--cg-color-success-muted);border:1px solid var(--cg-color-success)}.connection-status.error[data-v-522cd4d9]{background:var(--cg-color-error-muted);border:1px solid var(--cg-color-error)}.status-icon[data-v-522cd4d9]{font-weight:700}.connection-status.success .status-icon[data-v-522cd4d9]{color:var(--cg-color-success)}.connection-status.error .status-icon[data-v-522cd4d9]{color:var(--cg-color-error)}.status-text[data-v-522cd4d9]{flex:1;color:var(--cg-color-text-primary)}.credit-balance[data-v-522cd4d9]{color:var(--cg-color-accent);font-weight:var(--cg-font-weight-semibold)}.api-key-help[data-v-522cd4d9]{display:flex;gap:var(--cg-space-2);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.help-icon[data-v-522cd4d9]{flex-shrink:0;width:16px;height:16px;display:flex;align-items:center;justify-content:center;border:1px solid var(--cg-color-border-subtle);border-radius:50%;font-size:10px}.help-text a[data-v-522cd4d9]{color:var(--cg-color-accent);text-decoration:none}.help-text a[data-v-522cd4d9]:hover{text-decoration:underline}.config-card[data-v-522cd4d9]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);padding:var(--cg-space-4);display:flex;flex-direction:column;gap:var(--cg-space-4)}.config-row[data-v-522cd4d9]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.loading-inline[data-v-522cd4d9]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}.no-volumes-state[data-v-522cd4d9]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-2);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning)}.no-volumes-icon[data-v-522cd4d9]{color:var(--cg-color-warning)}.no-volumes-text[data-v-522cd4d9]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm)}.volume-help[data-v-522cd4d9]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);margin:var(--cg-space-2) 0;line-height:1.4}.create-volume-link[data-v-522cd4d9]{display:inline-block;padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-accent);color:var(--cg-color-bg-primary);font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-medium);text-decoration:none;text-align:center}.create-volume-link[data-v-522cd4d9]:hover{background:var(--cg-color-accent-hover)}.create-volume-inline-link[data-v-522cd4d9]{display:inline-block;margin-top:var(--cg-space-2);color:var(--cg-color-accent);font-size:var(--cg-font-size-xs);text-decoration:none;width:fit-content}.create-volume-inline-link[data-v-522cd4d9]:hover{text-decoration:underline}.config-label[data-v-522cd4d9]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.config-select[data-v-522cd4d9],.config-input[data-v-522cd4d9]{padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm)}.config-select[data-v-522cd4d9]:focus,.config-input[data-v-522cd4d9]:focus{outline:none;border-color:var(--cg-color-accent)}.config-select[data-v-522cd4d9]:disabled{opacity:.5}.radio-group[data-v-522cd4d9]{display:flex;gap:var(--cg-space-4)}.radio-option[data-v-522cd4d9]{display:flex;align-items:center;gap:var(--cg-space-2);cursor:pointer}.radio-option input[data-v-522cd4d9]{accent-color:var(--cg-color-accent)}.radio-option.disabled[data-v-522cd4d9]{cursor:not-allowed;opacity:.5}.radio-option.disabled input[data-v-522cd4d9]{cursor:not-allowed}.radio-label[data-v-522cd4d9]{font-size:var(--cg-font-size-sm);color:var(--cg-color-text-primary)}.summary-card[data-v-522cd4d9]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);padding:var(--cg-space-4);display:flex;flex-direction:column;gap:var(--cg-space-2)}.summary-row[data-v-522cd4d9]{display:flex;justify-content:space-between;align-items:center}.summary-label[data-v-522cd4d9]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-sm)}.summary-value[data-v-522cd4d9]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm)}.summary-sub-row[data-v-522cd4d9]{padding-left:var(--cg-space-4)}.summary-sub-label[data-v-522cd4d9]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs)}.summary-sub-row.warning .summary-sub-label[data-v-522cd4d9]{color:var(--cg-color-warning)}.deploy-actions[data-v-522cd4d9]{display:flex;gap:var(--cg-space-3);padding:var(--cg-space-4) 0}.deployment-summary[data-v-522cd4d9]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);padding:var(--cg-space-4)}.summary-columns[data-v-522cd4d9]{display:grid;grid-template-columns:1fr 1fr;gap:var(--cg-space-4)}.summary-column[data-v-522cd4d9]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.column-header[data-v-522cd4d9]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);padding-bottom:var(--cg-space-2);border-bottom:1px solid var(--cg-color-border-subtle);margin-bottom:var(--cg-space-1)}.pricing-row[data-v-522cd4d9]{display:flex;justify-content:space-between;align-items:center}.pricing-label[data-v-522cd4d9]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-sm)}.pricing-value[data-v-522cd4d9]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm);font-family:var(--cg-font-mono)}.pricing-divider[data-v-522cd4d9]{height:1px;background:var(--cg-color-border-subtle);margin:var(--cg-space-1) 0}.pricing-row.total .pricing-label[data-v-522cd4d9],.pricing-row.total .pricing-value[data-v-522cd4d9]{font-weight:var(--cg-font-weight-semibold)}.pricing-row.total .pricing-value[data-v-522cd4d9]{color:var(--cg-color-accent)}.spec-row[data-v-522cd4d9]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm)}.spec-row.spot-warning[data-v-522cd4d9]{color:var(--cg-color-warning);font-size:var(--cg-font-size-xs);margin-top:var(--cg-space-2)}.info-tooltip[data-v-522cd4d9]{cursor:help;color:var(--cg-color-text-muted);font-size:12px;margin-left:var(--cg-space-1)}.loading-text[data-v-522cd4d9]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);text-align:center;padding:var(--cg-space-4)}.empty-remotes[data-v-522cd4d9]{display:flex;flex-direction:column;align-items:center;gap:var(--cg-space-4);padding:var(--cg-space-6);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);text-align:center}.empty-message[data-v-522cd4d9]{display:flex;flex-direction:column;align-items:center;gap:var(--cg-space-2)}.empty-icon[data-v-522cd4d9]{font-size:var(--cg-font-size-2xl)}.empty-text[data-v-522cd4d9]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-medium)}.empty-help[data-v-522cd4d9]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);margin:0}.remotes-list[data-v-522cd4d9]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.sync-warning[data-v-522cd4d9]{display:flex;gap:var(--cg-space-3);align-items:flex-start;padding:var(--cg-space-3);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);margin-top:var(--cg-space-3)}.sync-warning .warning-icon[data-v-522cd4d9]{flex-shrink:0;font-size:var(--cg-font-size-lg)}.sync-warning .warning-content[data-v-522cd4d9]{flex:1}.sync-warning .warning-content strong[data-v-522cd4d9]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm)}.sync-warning .warning-content p[data-v-522cd4d9]{margin:var(--cg-space-1) 0 0 0;color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs)}.remotes-footer[data-v-522cd4d9]{margin-top:var(--cg-space-3);text-align:right}.progress-content[data-v-522cd4d9]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.phase-indicator[data-v-522cd4d9]{display:flex;align-items:center;gap:var(--cg-space-3)}.phase-icon[data-v-522cd4d9]{width:40px;height:40px;display:flex;align-items:center;justify-content:center;font-size:20px;border-radius:50%;background:var(--cg-color-bg-tertiary);border:2px solid var(--cg-color-border)}.phase-icon.ready[data-v-522cd4d9]{background:var(--cg-color-success-muted);border-color:var(--cg-color-success);color:var(--cg-color-success)}.phase-icon.error[data-v-522cd4d9]{background:var(--cg-color-error-muted);border-color:var(--cg-color-error);color:var(--cg-color-error)}.phase-icon.stopped[data-v-522cd4d9]{background:var(--cg-color-bg-tertiary);border-color:var(--cg-color-border);color:var(--cg-color-text-muted)}.phase-icon .spinner[data-v-522cd4d9]{animation:spin-522cd4d9 1s linear infinite}@keyframes spin-522cd4d9{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.phase-text[data-v-522cd4d9]{flex:1}.phase-name[data-v-522cd4d9]{font-size:var(--cg-font-size-md);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-primary)}.phase-detail[data-v-522cd4d9]{font-size:var(--cg-font-size-sm);color:var(--cg-color-text-muted);margin-top:var(--cg-space-1)}.ready-actions[data-v-522cd4d9]{display:flex;justify-content:center;padding:var(--cg-space-2) 0}.console-link[data-v-522cd4d9]{text-align:center}.console-link a[data-v-522cd4d9]{color:var(--cg-color-accent);font-size:var(--cg-font-size-xs);text-decoration:none}.console-link a[data-v-522cd4d9]:hover{text-decoration:underline}.worker-card[data-v-b1be7134]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);padding:var(--cg-space-3);display:flex;flex-direction:column;gap:var(--cg-space-2)}.worker-card.offline[data-v-b1be7134]{opacity:.7}.worker-header[data-v-b1be7134]{display:flex;align-items:center;justify-content:space-between;gap:var(--cg-space-2)}.worker-status[data-v-b1be7134]{display:flex;align-items:center;gap:var(--cg-space-2)}.status-dot[data-v-b1be7134]{width:8px;height:8px;border-radius:50%}.status-dot.online[data-v-b1be7134]{background:var(--cg-color-success);box-shadow:0 0 4px var(--cg-color-success)}.status-dot.offline[data-v-b1be7134]{background:var(--cg-color-text-muted)}.status-dot.unknown[data-v-b1be7134]{background:var(--cg-color-warning)}.worker-name[data-v-b1be7134]{font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-medium);color:var(--cg-color-text-primary)}.worker-actions[data-v-b1be7134]{display:flex;gap:var(--cg-space-1)}.worker-details[data-v-b1be7134]{display:flex;align-items:center;gap:var(--cg-space-2);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-secondary)}.detail-item[data-v-b1be7134]{display:flex;align-items:center;gap:var(--cg-space-1)}.detail-label[data-v-b1be7134]{color:var(--cg-color-text-muted)}.detail-value[data-v-b1be7134]{font-family:var(--cg-font-mono)}.mode-badge[data-v-b1be7134]{text-transform:capitalize;padding:1px 6px;background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border)}.worker-stats[data-v-b1be7134]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);display:flex;align-items:center;gap:var(--cg-space-1)}.stat-item[data-v-b1be7134]{display:flex;align-items:center;gap:var(--cg-space-1)}.stat-value[data-v-b1be7134]{font-weight:var(--cg-font-weight-medium)}.stat-value.online[data-v-b1be7134]{color:var(--cg-color-success)}.stat-value.offline[data-v-b1be7134]{color:var(--cg-color-text-muted)}.add-worker-content[data-v-07a00732]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.manual-form[data-v-07a00732]{display:flex;flex-direction:column;gap:var(--cg-space-3)}.form-row[data-v-07a00732]{display:flex;flex-direction:column;gap:var(--cg-space-1)}.form-row-inline[data-v-07a00732]{display:flex;gap:var(--cg-space-3)}.form-field[data-v-07a00732]{display:flex;flex-direction:column;gap:var(--cg-space-1)}.flex-1[data-v-07a00732]{flex:1}.flex-2[data-v-07a00732]{flex:2}.form-label[data-v-07a00732]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-secondary);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.form-input[data-v-07a00732]{padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm)}.form-input[data-v-07a00732]:focus{outline:none;border-color:var(--cg-color-accent)}.api-key-wrapper[data-v-07a00732]{position:relative;display:flex;align-items:center}.api-key-wrapper .form-input[data-v-07a00732]{width:100%;padding-right:40px}.toggle-visibility[data-v-07a00732]{position:absolute;right:8px;background:transparent;border:none;color:var(--cg-color-text-muted);cursor:pointer;padding:4px;font-size:14px}.toggle-visibility[data-v-07a00732]:hover{color:var(--cg-color-text-primary)}.form-help[data-v-07a00732]{display:flex;align-items:center;gap:var(--cg-space-1);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.help-icon[data-v-07a00732]{font-size:10px}.form-help code[data-v-07a00732]{padding:1px 4px;background:var(--cg-color-bg-secondary);font-family:var(--cg-font-mono);color:var(--cg-color-accent)}.test-result[data-v-07a00732]{display:flex;align-items:flex-start;gap:var(--cg-space-2);padding:var(--cg-space-3)}.test-result.success[data-v-07a00732]{background:var(--cg-color-success-muted);border:1px solid var(--cg-color-success)}.test-result.error[data-v-07a00732]{background:var(--cg-color-error-muted);border:1px solid var(--cg-color-error)}.result-icon[data-v-07a00732]{font-weight:700}.test-result.success .result-icon[data-v-07a00732]{color:var(--cg-color-success)}.test-result.error .result-icon[data-v-07a00732]{color:var(--cg-color-error)}.result-content[data-v-07a00732]{display:flex;flex-direction:column;gap:var(--cg-space-1)}.result-message[data-v-07a00732]{font-size:var(--cg-font-size-sm);color:var(--cg-color-text-primary)}.result-detail[data-v-07a00732]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-secondary)}.modal-actions[data-v-07a00732]{display:flex;gap:var(--cg-space-2);justify-content:flex-end}.discovered-content[data-v-5a3e40a4]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.workers-list[data-v-5a3e40a4]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.worker-item[data-v-5a3e40a4]{display:flex;align-items:center;justify-content:space-between;padding:var(--cg-space-3);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border)}.worker-info[data-v-5a3e40a4]{display:flex;flex-direction:column;gap:var(--cg-space-1)}.worker-name[data-v-5a3e40a4]{color:var(--cg-color-text-primary);font-weight:var(--cg-font-weight-medium);font-size:var(--cg-font-size-sm)}.worker-address[data-v-5a3e40a4]{color:var(--cg-color-text-muted);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs)}.worker-gpu[data-v-5a3e40a4]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs)}.empty-state[data-v-5a3e40a4]{display:flex;flex-direction:column;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-6);text-align:center}.empty-icon[data-v-5a3e40a4]{font-size:24px;opacity:.5}.empty-text[data-v-5a3e40a4]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm)}.empty-help[data-v-5a3e40a4]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs)}.empty-help code[data-v-5a3e40a4]{padding:1px 4px;background:var(--cg-color-bg-secondary);font-family:var(--cg-font-mono);color:var(--cg-color-accent)}.api-key-section[data-v-5a3e40a4]{border-top:1px solid var(--cg-color-border-subtle);padding-top:var(--cg-space-4);display:flex;flex-direction:column;gap:var(--cg-space-3)}.selected-worker[data-v-5a3e40a4]{display:flex;align-items:center;gap:var(--cg-space-2);font-size:var(--cg-font-size-sm)}.selected-label[data-v-5a3e40a4]{color:var(--cg-color-text-muted)}.selected-name[data-v-5a3e40a4]{color:var(--cg-color-text-primary);font-weight:var(--cg-font-weight-medium)}.selected-address[data-v-5a3e40a4]{color:var(--cg-color-text-muted);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs)}.form-row[data-v-5a3e40a4]{display:flex;flex-direction:column;gap:var(--cg-space-1)}.form-label[data-v-5a3e40a4]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-secondary);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.form-input[data-v-5a3e40a4]{padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm)}.form-input[data-v-5a3e40a4]:focus{outline:none;border-color:var(--cg-color-accent)}.api-key-wrapper[data-v-5a3e40a4]{position:relative;display:flex;align-items:center}.api-key-wrapper .form-input[data-v-5a3e40a4]{width:100%;padding-right:40px}.toggle-visibility[data-v-5a3e40a4]{position:absolute;right:8px;background:transparent;border:none;color:var(--cg-color-text-muted);cursor:pointer;padding:4px;font-size:14px}.toggle-visibility[data-v-5a3e40a4]:hover{color:var(--cg-color-text-primary)}.form-help[data-v-5a3e40a4]{display:flex;align-items:center;gap:var(--cg-space-1);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.help-icon[data-v-5a3e40a4]{font-size:10px}.form-help code[data-v-5a3e40a4]{padding:1px 4px;background:var(--cg-color-bg-secondary);font-family:var(--cg-font-mono);color:var(--cg-color-accent)}.test-result[data-v-5a3e40a4]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-2) var(--cg-space-3);font-size:var(--cg-font-size-sm)}.test-result.success[data-v-5a3e40a4]{background:var(--cg-color-success-muted);border:1px solid var(--cg-color-success)}.test-result.error[data-v-5a3e40a4]{background:var(--cg-color-error-muted);border:1px solid var(--cg-color-error)}.result-icon[data-v-5a3e40a4]{font-weight:700}.test-result.success .result-icon[data-v-5a3e40a4]{color:var(--cg-color-success)}.test-result.error .result-icon[data-v-5a3e40a4]{color:var(--cg-color-error)}.result-message[data-v-5a3e40a4]{color:var(--cg-color-text-primary)}.modal-actions[data-v-5a3e40a4]{display:flex;gap:var(--cg-space-2);justify-content:flex-end}.deploy-content[data-v-c12720d3]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.section[data-v-c12720d3]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.section-label[data-v-c12720d3]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.loading-text[data-v-c12720d3]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);padding:var(--cg-space-3);text-align:center}.empty-remotes[data-v-c12720d3]{display:flex;flex-direction:column;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-4);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);text-align:center}.empty-icon[data-v-c12720d3]{font-size:var(--cg-font-size-xl)}.empty-text[data-v-c12720d3]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm)}.empty-help[data-v-c12720d3]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);margin:0}.remotes-list[data-v-c12720d3],.mode-options[data-v-c12720d3]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.mode-option[data-v-c12720d3]{display:flex;align-items:center;gap:var(--cg-space-2);cursor:pointer}.mode-option input[data-v-c12720d3]{accent-color:var(--cg-color-accent)}.mode-option input[data-v-c12720d3]:disabled{opacity:.5}.mode-label[data-v-c12720d3]{font-size:var(--cg-font-size-sm);color:var(--cg-color-text-primary)}.form-input[data-v-c12720d3]{padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm)}.form-input[data-v-c12720d3]:focus{outline:none;border-color:var(--cg-color-accent)}.summary-row[data-v-c12720d3]{font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary);padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle)}.sync-warning[data-v-c12720d3]{display:flex;gap:var(--cg-space-3);align-items:flex-start;padding:var(--cg-space-3);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning)}.sync-warning .warning-icon[data-v-c12720d3]{flex-shrink:0;font-size:var(--cg-font-size-lg)}.sync-warning .warning-content[data-v-c12720d3]{flex:1}.sync-warning .warning-content strong[data-v-c12720d3]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm)}.sync-warning .warning-content p[data-v-c12720d3]{margin:var(--cg-space-1) 0 0 0;color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs)}.modal-actions[data-v-c12720d3]{display:flex;gap:var(--cg-space-2);justify-content:flex-end}.custom-tab[data-v-1637dead]{padding:var(--cg-space-3)}.section-header[data-v-1637dead]{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--cg-space-3)}.section-title[data-v-1637dead]{font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-secondary);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.section-actions[data-v-1637dead]{display:flex;gap:var(--cg-space-2)}.loading-state[data-v-1637dead]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--cg-space-6);color:var(--cg-color-text-muted)}.loading-state .spinner[data-v-1637dead]{width:16px;height:16px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin-1637dead .8s linear infinite;margin-bottom:var(--cg-space-2)}@keyframes spin-1637dead{to{transform:rotate(360deg)}}.empty-state[data-v-1637dead]{padding:var(--cg-space-2)}.empty-card[data-v-1637dead]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);padding:var(--cg-space-4)}.empty-text[data-v-1637dead]{display:block;color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-medium);margin-bottom:var(--cg-space-3)}.empty-help[data-v-1637dead]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);margin:0 0 var(--cg-space-2) 0}.setup-steps[data-v-1637dead]{margin:0;padding-left:var(--cg-space-4);color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs);line-height:1.6}.setup-steps li[data-v-1637dead]{margin-bottom:var(--cg-space-2)}.setup-steps code[data-v-1637dead]{display:inline-block;margin-top:var(--cg-space-1);padding:var(--cg-space-1) var(--cg-space-2);background:var(--cg-color-bg-secondary);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);color:var(--cg-color-accent)}.workers-list[data-v-1637dead]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.scan-result[data-v-1637dead]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-2) var(--cg-space-3);margin-top:var(--cg-space-3);font-size:var(--cg-font-size-xs)}.scan-result.success[data-v-1637dead]{background:var(--cg-color-success-muted);border:1px solid var(--cg-color-success)}.scan-result.info[data-v-1637dead]{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border)}.scan-icon[data-v-1637dead]{flex-shrink:0}.scan-result.success .scan-icon[data-v-1637dead]{color:var(--cg-color-success)}.scan-message[data-v-1637dead]{flex:1;color:var(--cg-color-text-primary)}.dismiss-btn[data-v-1637dead]{background:transparent;border:none;color:var(--cg-color-text-muted);cursor:pointer;padding:0 var(--cg-space-1);font-size:var(--cg-font-size-md)}.dismiss-btn[data-v-1637dead]:hover{color:var(--cg-color-text-primary)}.settings-content[data-v-b21588ad]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.settings-section[data-v-b21588ad]{display:flex;flex-direction:column;gap:var(--cg-space-3)}.section-header[data-v-b21588ad]{display:flex;align-items:center;gap:var(--cg-space-2)}.section-title[data-v-b21588ad]{font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-medium);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);color:var(--cg-color-text-primary)}.section-description[data-v-b21588ad]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);margin:0;line-height:1.5}.ssh-warning[data-v-b21588ad]{display:flex;align-items:flex-start;gap:var(--cg-space-2);padding:var(--cg-space-3);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning)}.warning-icon[data-v-b21588ad]{color:var(--cg-color-warning);font-weight:700;font-size:var(--cg-font-size-sm)}.warning-content[data-v-b21588ad]{font-size:var(--cg-font-size-xs);line-height:1.5}.warning-content strong[data-v-b21588ad]{color:var(--cg-color-text-primary)}.warning-content p[data-v-b21588ad]{margin:var(--cg-space-1) 0 0 0;color:var(--cg-color-text-secondary)}.warning-content code[data-v-b21588ad]{padding:1px 4px;background:var(--cg-color-bg-secondary);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs)}.form-row[data-v-b21588ad]{display:flex;flex-direction:column;gap:var(--cg-space-1)}.form-label[data-v-b21588ad]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-secondary);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.token-wrapper[data-v-b21588ad]{display:flex;align-items:center;gap:var(--cg-space-1)}.form-input[data-v-b21588ad]{flex:1;padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm)}.form-input[data-v-b21588ad]:focus{outline:none;border-color:var(--cg-color-accent)}.toggle-visibility[data-v-b21588ad]{padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);text-transform:uppercase;cursor:pointer}.toggle-visibility[data-v-b21588ad]:hover{color:var(--cg-color-text-primary);border-color:var(--cg-color-border-strong)}.form-help[data-v-b21588ad]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);font-style:italic}.test-result[data-v-b21588ad]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-2) var(--cg-space-3);font-size:var(--cg-font-size-sm)}.test-result.success[data-v-b21588ad]{background:var(--cg-color-success-muted);border:1px solid var(--cg-color-success)}.test-result.error[data-v-b21588ad]{background:var(--cg-color-error-muted);border:1px solid var(--cg-color-error)}.result-icon[data-v-b21588ad]{font-weight:700}.test-result.success .result-icon[data-v-b21588ad]{color:var(--cg-color-success)}.test-result.error .result-icon[data-v-b21588ad]{color:var(--cg-color-error)}.result-message[data-v-b21588ad]{color:var(--cg-color-text-primary)}.token-actions[data-v-b21588ad]{display:flex;gap:var(--cg-space-2)}.deploy-info[data-v-d4e32a10]{display:flex;flex-direction:column;gap:var(--cg-space-3)}.info-section strong[data-v-d4e32a10]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm)}.info-section p[data-v-d4e32a10]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs);margin:var(--cg-space-1) 0 0 0;line-height:1.5}.info-section ul[data-v-d4e32a10]{margin:var(--cg-space-2) 0 0 0;padding-left:var(--cg-space-4);color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs);line-height:1.6}.info-section li[data-v-d4e32a10]{margin-bottom:var(--cg-space-1)}.info-section li strong[data-v-d4e32a10]{font-size:var(--cg-font-size-xs)}.header-info[data-v-d256ff6d]{flex:1;display:flex;flex-direction:column;gap:6px}.header-title[data-v-d256ff6d]{color:var(--cg-color-accent);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-size:var(--cg-font-size-sm);margin:0;font-weight:var(--cg-font-weight-normal)}.commit-hash[data-v-d256ff6d]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-base);color:var(--cg-color-info);font-weight:var(--cg-font-weight-semibold)}.commit-refs[data-v-d256ff6d]{display:flex;gap:6px;flex-wrap:wrap}.ref-badge[data-v-d256ff6d]{padding:2px 8px;background:transparent;border:1px solid var(--cg-color-accent);color:var(--cg-color-accent);font-size:var(--cg-font-size-xs);font-family:var(--cg-font-mono);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.commit-message[data-v-d256ff6d]{font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-primary);margin-bottom:6px}.commit-date[data-v-d256ff6d]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);margin-bottom:var(--cg-space-4)}.loading[data-v-d256ff6d]{text-align:center;padding:var(--cg-space-6);color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}.changes-section[data-v-d256ff6d]{margin-top:var(--cg-space-2)}.stats-row[data-v-d256ff6d]{display:flex;gap:16px;padding:10px 12px;background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);margin-bottom:var(--cg-space-4);font-size:var(--cg-font-size-sm);font-family:var(--cg-font-mono)}.stat[data-v-d256ff6d]{color:var(--cg-color-text-muted)}.stat.insertions[data-v-d256ff6d]{color:var(--cg-color-success)}.stat.deletions[data-v-d256ff6d]{color:var(--cg-color-error)}.change-group[data-v-d256ff6d]{margin-bottom:var(--cg-space-4)}.change-item[data-v-d256ff6d]{display:flex;align-items:center;gap:8px;padding:6px 8px;font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary);font-family:var(--cg-font-mono);background:var(--cg-color-bg-tertiary);border-left:2px solid transparent;margin-bottom:2px}.change-icon[data-v-d256ff6d]{font-family:var(--cg-font-mono);font-weight:var(--cg-font-weight-bold);width:14px;text-align:center;font-size:var(--cg-font-size-base)}.change-item.added[data-v-d256ff6d]{border-left-color:var(--cg-color-success)}.change-item.added .change-icon[data-v-d256ff6d]{color:var(--cg-color-success)}.change-item.modified[data-v-d256ff6d]{border-left-color:var(--cg-color-warning)}.change-item.modified .change-icon[data-v-d256ff6d]{color:var(--cg-color-warning)}.change-item.deleted[data-v-d256ff6d]{border-left-color:var(--cg-color-error)}.change-item.deleted .change-icon[data-v-d256ff6d]{color:var(--cg-color-error)}.version[data-v-d256ff6d]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.base-textarea-wrapper[data-v-c6d16c93]{display:flex;flex-direction:column;gap:4px}.base-textarea[data-v-c6d16c93]{width:100%;padding:10px 12px;background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-md);color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm);font-family:inherit;resize:vertical;line-height:var(--cg-line-height-normal);transition:all var(--cg-transition-fast)}.base-textarea[data-v-c6d16c93]:focus{outline:none;border-color:var(--cg-color-accent);box-shadow:0 0 0 2px var(--cg-color-accent-muted)}.base-textarea[data-v-c6d16c93]:disabled{opacity:.5;cursor:not-allowed}.base-textarea-count[data-v-c6d16c93]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);text-align:right}.base-checkbox[data-v-bf17c831]{display:inline-flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.base-checkbox.disabled[data-v-bf17c831]{opacity:.5;cursor:not-allowed}.base-checkbox-input[data-v-bf17c831]{position:absolute;opacity:0;pointer-events:none}.base-checkbox-box[data-v-bf17c831]{width:18px;height:18px;border:2px solid var(--cg-color-border);border-radius:var(--cg-radius-sm);background:var(--cg-color-bg-tertiary);display:flex;align-items:center;justify-content:center;transition:all var(--cg-transition-fast);flex-shrink:0}.base-checkbox:hover:not(.disabled) .base-checkbox-box[data-v-bf17c831]{border-color:var(--cg-color-accent)}.base-checkbox-input:checked+.base-checkbox-box[data-v-bf17c831]{background:var(--cg-color-accent);border-color:var(--cg-color-accent);color:var(--cg-color-text-inverse)}.base-checkbox-input:focus+.base-checkbox-box[data-v-bf17c831]{box-shadow:0 0 0 2px var(--cg-color-accent-muted)}.base-checkbox-label[data-v-bf17c831]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm)}.modal-overlay[data-v-5f897631]{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--cg-color-bg-overlay);display:flex;align-items:center;justify-content:center;z-index:10005;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.commit-popover[data-v-5f897631]{background:var(--cg-color-bg-primary);border:2px solid var(--cg-color-border);box-shadow:var(--cg-shadow-xl);min-width:400px;max-width:500px;display:flex;flex-direction:column}.commit-popover.modal[data-v-5f897631]{border-radius:var(--cg-radius-lg);animation:modalSlideIn-5f897631 .2s ease}@keyframes modalSlideIn-5f897631{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.popover-header[data-v-5f897631]{padding:var(--cg-space-3);border-bottom:1px solid var(--cg-color-border);background:var(--cg-color-bg-tertiary);display:flex;justify-content:space-between;align-items:center}.popover-title[data-v-5f897631]{color:var(--cg-color-accent);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-size:var(--cg-font-size-sm);margin:0;flex:1}.close-btn[data-v-5f897631]{background:transparent;border:1px solid transparent;color:var(--cg-color-text-primary);cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.close-btn[data-v-5f897631]:hover{background:var(--cg-color-bg-hover);border-color:var(--cg-color-border-subtle)}.popover-body[data-v-5f897631]{padding:var(--cg-space-3);max-height:400px;overflow-y:auto}.popover-footer[data-v-5f897631]{padding:var(--cg-space-3);border-top:1px solid var(--cg-color-border);background:var(--cg-color-bg-tertiary);display:flex;justify-content:flex-end;gap:8px}.changes-summary[data-v-5f897631]{background:var(--cg-color-bg-tertiary);border-radius:var(--cg-radius-md);padding:8px;margin-bottom:12px;font-size:var(--cg-font-size-xs)}.change-item[data-v-5f897631]{display:flex;align-items:center;gap:6px;padding:2px 0}.change-icon[data-v-5f897631]{font-family:monospace;font-weight:600;width:12px;text-align:center}.change-icon.new[data-v-5f897631]{color:var(--cg-color-success)}.change-icon.modified[data-v-5f897631]{color:var(--cg-color-warning)}.change-icon.deleted[data-v-5f897631]{color:var(--cg-color-error)}.no-changes[data-v-5f897631],.loading[data-v-5f897631]{text-align:center;padding:12px;color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}.message-section[data-v-5f897631]{margin-bottom:8px}.issues-error[data-v-5f897631]{background:var(--cg-color-error-muted);border:1px solid var(--cg-color-error);border-radius:var(--cg-radius-md);padding:10px;margin-bottom:12px}.error-header[data-v-5f897631]{display:flex;align-items:center;gap:6px;margin-bottom:8px;color:var(--cg-color-error)}.error-icon[data-v-5f897631]{font-size:14px;line-height:1}.error-title[data-v-5f897631]{font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-medium)}.issues-list[data-v-5f897631]{margin-bottom:10px;font-size:var(--cg-font-size-xs);color:var(--cg-color-text-secondary)}.issue-item[data-v-5f897631]{padding:4px 0;line-height:1.4}.issue-item strong[data-v-5f897631]{color:var(--cg-color-text-primary)}.workflow-state[data-v-5f897631]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);margin-left:4px}.allow-issues-toggle[data-v-5f897631]{margin-top:8px;font-size:var(--cg-font-size-xs)}.modal-overlay[data-v-e9c5253e]{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--cg-color-bg-overlay);display:flex;align-items:center;justify-content:center;z-index:10005;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-content[data-v-e9c5253e]{background:var(--cg-color-bg-primary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-lg);box-shadow:var(--cg-shadow-lg);max-width:500px;width:90%;max-height:80vh;overflow-y:auto}.modal-header[data-v-e9c5253e]{display:flex;justify-content:space-between;align-items:center;padding:var(--cg-space-4);border-bottom:1px solid var(--cg-color-border-subtle)}.modal-title[data-v-e9c5253e]{margin:0;font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-accent);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.modal-close[data-v-e9c5253e]{background:transparent;border:none;color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xl);cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;transition:color var(--cg-transition-fast)}.modal-close[data-v-e9c5253e]:hover{color:var(--cg-color-text-primary)}.modal-body[data-v-e9c5253e]{padding:var(--cg-space-4);display:flex;flex-direction:column;gap:var(--cg-space-3)}.switch-message[data-v-e9c5253e]{margin:0;font-size:var(--cg-font-size-base);color:var(--cg-color-text-primary);line-height:1.5}.switch-message strong[data-v-e9c5253e]{color:var(--cg-color-accent);font-family:var(--cg-font-mono)}.warning-box[data-v-e9c5253e]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-3);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-sm);color:var(--cg-color-warning)}.warning-icon[data-v-e9c5253e]{font-size:var(--cg-font-size-lg);flex-shrink:0}.switch-details[data-v-e9c5253e]{margin:0;font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary);line-height:1.5}.switch-eta[data-v-e9c5253e]{margin:0;font-size:var(--cg-font-size-sm);color:var(--cg-color-text-muted);font-style:italic}.modal-actions[data-v-e9c5253e]{padding:var(--cg-space-4);border-top:1px solid var(--cg-color-border-subtle);display:flex;gap:var(--cg-space-2);justify-content:flex-end}.modal-overlay[data-v-768a5078]{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--cg-color-bg-overlay);display:flex;align-items:center;justify-content:center;z-index:10006;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.modal-content[data-v-768a5078]{background:var(--cg-color-bg-primary);border:1px solid var(--cg-color-accent);border-radius:var(--cg-radius-lg);box-shadow:var(--cg-shadow-xl),0 0 20px var(--cg-color-accent-muted);max-width:500px;width:90%;animation:modalSlideIn-768a5078 .3s ease}@keyframes modalSlideIn-768a5078{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.modal-header[data-v-768a5078]{padding:var(--cg-space-4);border-bottom:1px solid var(--cg-color-border-subtle);text-align:center}.modal-title[data-v-768a5078]{margin:0;font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-accent);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.modal-body[data-v-768a5078]{padding:var(--cg-space-5);display:flex;flex-direction:column;gap:var(--cg-space-4)}.progress-info[data-v-768a5078]{display:flex;justify-content:space-between;align-items:center;gap:var(--cg-space-2)}.progress-percentage[data-v-768a5078]{font-size:var(--cg-font-size-xl);font-weight:var(--cg-font-weight-bold);color:var(--cg-color-accent);font-family:var(--cg-font-mono)}.progress-state[data-v-768a5078]{font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary);text-align:right;flex:1}.switch-steps[data-v-768a5078]{display:flex;flex-direction:column;gap:var(--cg-space-2);padding:var(--cg-space-3);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);border-radius:var(--cg-radius-sm)}.switch-step[data-v-768a5078]{display:flex;align-items:center;gap:var(--cg-space-2);font-size:var(--cg-font-size-sm);transition:all var(--cg-transition-fast)}.switch-step.pending[data-v-768a5078],.switch-step.pending .step-icon[data-v-768a5078]{color:var(--cg-color-text-muted)}.switch-step.active[data-v-768a5078]{color:var(--cg-color-accent);font-weight:var(--cg-font-weight-medium)}.switch-step.active .step-icon[data-v-768a5078]{color:var(--cg-color-accent);animation:spin-768a5078 1s linear infinite}@keyframes spin-768a5078{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.switch-step.completed[data-v-768a5078],.switch-step.completed .step-icon[data-v-768a5078]{color:var(--cg-color-success)}.step-icon[data-v-768a5078]{flex-shrink:0;font-size:var(--cg-font-size-base);width:16px;display:inline-block;text-align:center}.step-label[data-v-768a5078]{flex:1}.progress-warning[data-v-768a5078]{margin:0;padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-info-muted);border:1px solid var(--cg-color-info);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-sm);color:var(--cg-color-info);text-align:center}.modal-overlay[data-v-7cad7518]{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--cg-color-bg-overlay);display:flex;align-items:center;justify-content:center;z-index:10005;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-content[data-v-7cad7518]{background:var(--cg-color-bg-primary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-lg);box-shadow:var(--cg-shadow-lg);max-width:600px;width:90%;max-height:80vh;overflow-y:auto}.modal-header[data-v-7cad7518]{display:flex;justify-content:space-between;align-items:center;padding:var(--cg-space-4);border-bottom:1px solid var(--cg-color-border-subtle)}.modal-title[data-v-7cad7518]{margin:0;font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-accent);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.modal-close[data-v-7cad7518]{background:transparent;border:none;color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xl);cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;transition:color var(--cg-transition-fast)}.modal-close[data-v-7cad7518]:hover{color:var(--cg-color-text-primary)}.modal-body[data-v-7cad7518]{padding:var(--cg-space-4);display:flex;flex-direction:column;gap:var(--cg-space-3)}.sync-message[data-v-7cad7518]{margin:0;font-size:var(--cg-font-size-base);color:var(--cg-color-text-primary);line-height:1.5}.node-section[data-v-7cad7518]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.section-title[data-v-7cad7518]{margin:0;font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-secondary);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.node-list[data-v-7cad7518]{display:flex;flex-direction:column;gap:var(--cg-space-1);max-height:200px;overflow-y:auto;padding:var(--cg-space-2);background:var(--cg-color-bg-secondary);border-radius:var(--cg-radius-sm)}.node-item[data-v-7cad7518]{font-size:var(--cg-font-size-sm);font-family:var(--cg-font-mono);line-height:1.5}.node-item.add[data-v-7cad7518]{color:var(--cg-color-info)}.node-item.remove[data-v-7cad7518]{color:var(--cg-color-warning)}.warning-box[data-v-7cad7518]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-3);background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-sm);color:var(--cg-color-warning)}.warning-icon[data-v-7cad7518]{font-size:var(--cg-font-size-lg);flex-shrink:0}.modal-actions[data-v-7cad7518]{padding:var(--cg-space-4);border-top:1px solid var(--cg-color-border-subtle);display:flex;gap:var(--cg-space-2);justify-content:flex-end}.social-buttons[data-v-4f846342]{display:flex;align-items:center;gap:4px}.icon-btn[data-v-4f846342]{background:transparent;border:1px solid transparent;color:var(--cg-color-text-primary);cursor:pointer;padding:6px;display:flex;align-items:center;justify-content:center}.icon-btn[data-v-4f846342]:hover{background:var(--cg-color-bg-hover);border-color:var(--cg-color-border-subtle)}.sponsor-btn[data-v-4f846342]{gap:4px;padding:4px 8px;border:1px solid var(--cg-color-border-subtle);color:var(--cg-color-text-secondary);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);opacity:.7}.sponsor-btn[data-v-4f846342]:hover{opacity:1;border-color:#db61a2;color:#db61a2}.icon-btn.social-link[data-v-4f846342]{opacity:.7}.icon-btn.social-link[data-v-4f846342]:hover{opacity:1}.footer-info[data-v-8bc3db0a]{display:flex;align-items:center;gap:var(--cg-space-3);font-size:10px;color:var(--cg-color-text-muted)}.version[data-v-8bc3db0a]{opacity:.7}.made-by[data-v-8bc3db0a]{display:flex;align-items:center;gap:2px}.heart-icon[data-v-8bc3db0a]{color:#db61a2}[data-v-fac00ae7] .base-modal-overlay{z-index:10004}.base-modal-title[data-v-9a9aadc0]{color:var(--cg-color-accent);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-size:var(--cg-font-size-sm);margin:0;flex:1}.header-actions[data-v-9a9aadc0]{display:flex;align-items:center;gap:var(--cg-space-2)}.wizard-step[data-v-9a9aadc0]{min-height:300px}.wizard-intro[data-v-9a9aadc0]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-sm);line-height:1.6;margin-bottom:var(--cg-space-4)}.form-field[data-v-9a9aadc0]{display:flex;flex-direction:column;gap:var(--cg-space-1);margin-bottom:var(--cg-space-4)}.form-field--checkbox[data-v-9a9aadc0]{flex-direction:row;align-items:center}.form-label[data-v-9a9aadc0]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.form-input[data-v-9a9aadc0],.form-select[data-v-9a9aadc0]{background:var(--cg-color-bg-primary);border:1px solid var(--cg-color-border-subtle);color:var(--cg-color-text-primary);padding:var(--cg-space-2) var(--cg-space-3);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm)}.form-input[data-v-9a9aadc0]:hover,.form-select[data-v-9a9aadc0]:hover{border-color:var(--cg-color-border)}.form-input[data-v-9a9aadc0]:focus,.form-select[data-v-9a9aadc0]:focus{outline:none;border-color:var(--cg-color-accent)}.form-select[data-v-9a9aadc0]{cursor:pointer}.form-select[data-v-9a9aadc0]:disabled{opacity:.5;cursor:not-allowed}.form-checkbox[data-v-9a9aadc0]{display:flex;align-items:center;gap:var(--cg-space-2);cursor:pointer;font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary)}.form-checkbox input[type=checkbox][data-v-9a9aadc0]{width:16px;height:16px;accent-color:var(--cg-color-accent);cursor:pointer}.form-error[data-v-9a9aadc0]{color:var(--cg-color-error);font-size:var(--cg-font-size-xs);margin-top:var(--cg-space-1)}.form-info[data-v-9a9aadc0]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);margin-top:var(--cg-space-1)}.form-suggestion[data-v-9a9aadc0]{color:var(--cg-color-accent);font-size:var(--cg-font-size-xs);margin-top:var(--cg-space-1)}.cli-warning[data-v-9a9aadc0]{background:#ffc1071a;border:1px solid var(--cg-color-warning);border-radius:var(--cg-radius-md);padding:var(--cg-space-3);margin-bottom:var(--cg-space-4)}.cli-warning-header[data-v-9a9aadc0]{display:flex;align-items:center;gap:var(--cg-space-2);margin-bottom:var(--cg-space-2)}.cli-warning-title[data-v-9a9aadc0]{flex:1}.cli-warning-close[data-v-9a9aadc0]{background:transparent;border:none;color:var(--cg-color-text-muted);cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;opacity:.7}.cli-warning-close[data-v-9a9aadc0]:hover{opacity:1;color:var(--cg-color-text-primary)}.cli-warning-icon[data-v-9a9aadc0]{color:var(--cg-color-warning);font-size:var(--cg-font-size-lg);font-weight:700}.cli-warning-title[data-v-9a9aadc0]{font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-primary)}.cli-warning-text[data-v-9a9aadc0]{font-size:var(--cg-font-size-sm);color:var(--cg-color-text-secondary);margin:0 0 var(--cg-space-2) 0;line-height:1.5}.cli-warning-commands[data-v-9a9aadc0]{display:flex;align-items:center;gap:var(--cg-space-2);flex-wrap:wrap}.cli-warning-commands code[data-v-9a9aadc0]{background:var(--cg-color-bg-primary);padding:var(--cg-space-1) var(--cg-space-2);border-radius:var(--cg-radius-sm);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm)}.cli-warning-or[data-v-9a9aadc0]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs)}.env-landing[data-v-9a9aadc0]{display:flex;flex-direction:column;gap:var(--cg-space-3)}.landing-option[data-v-9a9aadc0]{display:flex;align-items:center;gap:var(--cg-space-3);padding:var(--cg-space-4);background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border-subtle);cursor:pointer;text-align:left;width:100%;transition:all var(--cg-transition-fast)}.landing-option[data-v-9a9aadc0]:hover{border-color:var(--cg-color-accent);background:var(--cg-color-bg-tertiary)}.option-icon[data-v-9a9aadc0]{font-size:var(--cg-font-size-2xl);flex-shrink:0}.option-content[data-v-9a9aadc0]{flex:1;display:flex;flex-direction:column;gap:var(--cg-space-1)}.option-title[data-v-9a9aadc0]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-semibold)}.option-description[data-v-9a9aadc0]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-sm)}.option-arrow[data-v-9a9aadc0]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-lg)}.landing-divider[data-v-9a9aadc0]{display:flex;align-items:center;gap:var(--cg-space-4);margin:var(--cg-space-2) 0}.landing-divider[data-v-9a9aadc0]:before,.landing-divider[data-v-9a9aadc0]:after{content:"";flex:1;height:1px;background:var(--cg-color-border-subtle)}.landing-divider span[data-v-9a9aadc0]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);text-transform:lowercase}.env-list[data-v-9a9aadc0]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.env-option[data-v-9a9aadc0]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-2) var(--cg-space-3);background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border-subtle);border-radius:var(--cg-radius-sm);cursor:pointer;transition:all var(--cg-transition-fast)}.env-option[data-v-9a9aadc0]:hover{border-color:var(--cg-color-border)}.env-option.selected[data-v-9a9aadc0]{border-color:var(--cg-color-accent);background:var(--cg-color-bg-tertiary)}.env-option input[type=radio][data-v-9a9aadc0]{accent-color:var(--cg-color-accent)}.env-name[data-v-9a9aadc0]{font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm);color:var(--cg-color-text-primary)}.env-create[data-v-9a9aadc0],.env-import[data-v-9a9aadc0]{display:flex;flex-direction:column}.env-creating[data-v-9a9aadc0]{display:flex;flex-direction:column;gap:var(--cg-space-4);padding:var(--cg-space-4)}.creating-intro[data-v-9a9aadc0]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-base);margin:0;text-align:center}.creating-intro strong[data-v-9a9aadc0]{color:var(--cg-color-text-primary)}.progress-warning[data-v-9a9aadc0]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);text-align:center;margin:0}.progress-check-loading[data-v-9a9aadc0]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--cg-space-3);padding:var(--cg-space-8);min-height:200px}.loading-spinner[data-v-9a9aadc0]{width:32px;height:32px;border:3px solid var(--cg-color-border);border-top-color:var(--cg-color-accent);border-radius:50%;animation:spin-9a9aadc0 .8s linear infinite}@keyframes spin-9a9aadc0{to{transform:rotate(360deg)}}.loading-text[data-v-9a9aadc0]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}.icon-btn[data-v-9a9aadc0]{background:transparent;border:1px solid transparent;color:var(--cg-color-text-primary);cursor:pointer;padding:6px;display:flex;align-items:center;justify-content:center}.icon-btn[data-v-9a9aadc0]:hover{background:var(--cg-color-bg-hover);border-color:var(--cg-color-border-subtle)}.header-divider[data-v-9a9aadc0]{width:1px;height:16px;background:var(--cg-color-border-subtle);margin:0 4px;align-self:center}.wizard-footer[data-v-9a9aadc0]{display:flex;justify-content:space-between;align-items:center;width:100%}.wizard-footer-actions[data-v-9a9aadc0]{display:flex;align-items:center;gap:var(--cg-space-2)}.comfygit-panel[data-v-45a711b4]{display:flex;flex-direction:column;height:70vh;width:100%;background:var(--cg-color-bg-primary);color:var(--cg-color-text-primary);border:2px solid var(--cg-color-border);overflow:hidden;font-family:var(--cg-font-mono)}.panel-header[data-v-45a711b4]{padding:var(--cg-space-3) var(--cg-space-4);border-bottom:1px solid var(--cg-color-border);display:flex;justify-content:space-between;align-items:center;background:var(--cg-color-bg-tertiary);flex-shrink:0}.header-left[data-v-45a711b4]{display:flex;align-items:center;gap:12px}.panel-title[data-v-45a711b4]{font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-semibold);margin:0;color:var(--cg-color-accent);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.header-info[data-v-45a711b4]{display:flex;align-items:center;gap:6px;font-size:var(--cg-font-size-xs)}.env-name[data-v-45a711b4]{color:var(--cg-color-text-secondary)}.branch-name[data-v-45a711b4]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs)}.status-dot[data-v-45a711b4]{width:8px;height:8px;border-radius:50%}.status-dot.success[data-v-45a711b4]{background:var(--cg-color-success)}.status-dot.warning[data-v-45a711b4]{background:var(--cg-color-warning)}.status-dot.error[data-v-45a711b4]{background:var(--cg-color-error)}.status-dot.neutral[data-v-45a711b4]{background:var(--cg-color-text-muted)}.header-actions[data-v-45a711b4]{display:flex;gap:4px}.icon-btn[data-v-45a711b4]{background:transparent;border:1px solid transparent;color:var(--cg-color-text-primary);cursor:pointer;padding:6px;display:flex;align-items:center;justify-content:center}.icon-btn[data-v-45a711b4]:hover{background:var(--cg-color-bg-hover);border-color:var(--cg-color-border-subtle)}.icon-btn.spinning svg[data-v-45a711b4]{animation:spin-45a711b4 1s linear infinite}@keyframes spin-45a711b4{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.header-divider[data-v-45a711b4]{width:1px;height:16px;background:var(--cg-color-border-subtle);margin:0 4px;align-self:center}.env-switcher[data-v-45a711b4]{padding:var(--cg-space-3) var(--cg-space-4);border-bottom:1px solid var(--cg-color-border);background:var(--cg-color-bg-secondary);flex-shrink:0}.env-switcher-header[data-v-45a711b4]{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.env-switcher-label[data-v-45a711b4]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.env-control-buttons[data-v-45a711b4]{display:flex;gap:var(--cg-space-2)}.env-control-btn[data-v-45a711b4]{padding:2px 8px;font-family:var(--cg-font-mono);font-size:10px;text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);background:transparent;border:1px solid var(--cg-color-border);color:var(--cg-color-text-muted);cursor:pointer;transition:all var(--cg-transition-fast)}.env-control-btn[data-v-45a711b4]:hover{border-color:var(--cg-color-accent);color:var(--cg-color-accent)}.env-control-btn.stop[data-v-45a711b4]{border-color:var(--cg-color-error);color:var(--cg-color-error);opacity:.7}.env-control-btn.stop[data-v-45a711b4]:hover{opacity:1}.env-switcher-btn[data-v-45a711b4]{width:100%;display:flex;justify-content:space-between;align-items:center;background:transparent;border:1px solid var(--cg-color-border-subtle);color:var(--cg-color-text-primary);padding:8px 12px;cursor:pointer;font-family:var(--cg-font-mono);font-size:var(--cg-font-size-sm)}.env-switcher-btn[data-v-45a711b4]:hover{border-color:var(--cg-color-accent);background:var(--cg-color-bg-hover)}.switch-indicator[data-v-45a711b4]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.panel-main[data-v-45a711b4]{display:flex;flex:1;overflow:hidden}.sidebar[data-v-45a711b4]{width:234px;background:var(--cg-color-bg-tertiary);border-right:1px solid var(--cg-color-border);display:flex;flex-direction:column;flex-shrink:0}.sidebar-content[data-v-45a711b4]{flex:1;overflow-y:auto}.sidebar-footer[data-v-45a711b4]{padding:var(--cg-space-2) var(--cg-space-3);border-top:1px solid var(--cg-color-border-subtle);flex-shrink:0}.sidebar-section[data-v-45a711b4]{padding:var(--cg-space-3) 0}.sidebar-section-title[data-v-45a711b4]{padding:0 var(--cg-space-3);margin-bottom:var(--cg-space-2);color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.sidebar-item[data-v-45a711b4]{width:100%;padding:8px var(--cg-space-3);background:transparent;border:none;border-left:2px solid transparent;color:var(--cg-color-text-secondary);text-align:left;cursor:pointer;font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-normal)}.sidebar-item[data-v-45a711b4]:hover{background:var(--cg-color-bg-hover);color:var(--cg-color-accent)}.sidebar-item.active[data-v-45a711b4]{border-left-color:var(--cg-color-accent);color:var(--cg-color-accent);background:var(--cg-color-bg-hover)}.sidebar-badge[data-v-45a711b4]{margin-left:auto;padding:1px 6px;background:var(--cg-color-success);color:var(--cg-color-bg-primary);border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-semibold)}.sidebar-divider[data-v-45a711b4]{height:1px;background:var(--cg-color-border-subtle);margin:var(--cg-space-2) var(--cg-space-3)}.content-area[data-v-45a711b4]{flex:1;overflow-y:auto;padding:var(--cg-space-4);-webkit-user-select:text;user-select:text}.loading[data-v-45a711b4]{text-align:center;padding:var(--cg-space-6);color:var(--cg-color-text-muted)}.error-message[data-v-45a711b4]{background:transparent;border:1px solid var(--cg-color-error);padding:var(--cg-space-3);color:var(--cg-color-error);font-size:var(--cg-font-size-sm);-webkit-user-select:text;user-select:text;cursor:text}.view-placeholder[data-v-45a711b4]{padding:var(--cg-space-4)}.view-title[data-v-45a711b4]{color:var(--cg-color-accent);font-size:var(--cg-font-size-lg);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);margin:0 0 var(--cg-space-4) 0}.view-placeholder p[data-v-45a711b4]{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-base)}.dialog-overlay[data-v-45a711b4]{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--cg-color-bg-overlay);display:flex;align-items:center;justify-content:center;z-index:10003}.dialog-content[data-v-45a711b4]{background:var(--cg-color-bg-primary);border:2px solid var(--cg-color-border);box-shadow:0 0 16px #00ff4180;max-width:780px;width:90vw;max-height:80vh;display:flex;flex-direction:column}.env-selector-dialog[data-v-45a711b4]{width:780px}.dialog-header[data-v-45a711b4]{padding:var(--cg-space-4);border-bottom:1px solid var(--cg-color-border);background:var(--cg-color-bg-tertiary);display:flex;justify-content:space-between;align-items:center}.dialog-title[data-v-45a711b4]{color:var(--cg-color-accent);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-size:var(--cg-font-size-sm);text-shadow:0 0 8px var(--cg-color-accent);margin:0}.dialog-body[data-v-45a711b4]{padding:var(--cg-space-4);overflow-y:auto}.dialog-message[data-v-45a711b4]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base);margin:0 0 var(--cg-space-4) 0}.env-list[data-v-45a711b4]{display:flex;flex-direction:column;gap:var(--cg-space-3)}.env-item[data-v-45a711b4]{display:flex;justify-content:space-between;align-items:center;padding:var(--cg-space-3);border:1px solid var(--cg-color-border-subtle);background:var(--cg-color-bg-tertiary)}.env-item.current[data-v-45a711b4]{border-color:var(--cg-color-accent)}.env-info[data-v-45a711b4]{flex:1}.env-name-row[data-v-45a711b4]{display:flex;align-items:center;gap:8px;margin-bottom:4px}.env-indicator[data-v-45a711b4]{color:var(--cg-color-accent)}.env-name[data-v-45a711b4]{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base);font-weight:var(--cg-font-weight-semibold)}.env-branch[data-v-45a711b4]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}.current-label[data-v-45a711b4]{margin-left:auto;padding:2px 8px;background:transparent;border:1px solid var(--cg-color-border-subtle);color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.env-stats[data-v-45a711b4]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}.switch-btn[data-v-45a711b4]{padding:6px 12px;background:transparent;border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary);font-family:var(--cg-font-mono);font-size:var(--cg-font-size-xs);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);cursor:pointer}.switch-btn[data-v-45a711b4]:hover{border-color:var(--cg-color-accent);color:var(--cg-color-accent);box-shadow:0 0 8px #00ff414d}.toast-container[data-v-45a711b4]{position:fixed;bottom:16px;right:16px;z-index:10004;display:flex;flex-direction:column;gap:8px;pointer-events:none}.toast[data-v-45a711b4]{display:flex;align-items:center;gap:8px;padding:10px 14px;background:var(--cg-color-bg-primary);border:1px solid var(--cg-color-border);box-shadow:0 0 8px #00ff4166;font-size:var(--cg-font-size-xs);color:var(--cg-color-text-primary);pointer-events:auto;min-width:234px;max-width:390px;font-family:var(--cg-font-mono)}.toast.info[data-v-45a711b4]{border-left:3px solid var(--cg-color-info)}.toast.success[data-v-45a711b4]{border-left:3px solid var(--cg-color-success)}.toast.warning[data-v-45a711b4]{border-left:3px solid var(--cg-color-warning)}.toast.error[data-v-45a711b4]{border-left:3px solid var(--cg-color-error)}.toast-message[data-v-45a711b4]{flex:1}.toast-enter-active[data-v-45a711b4],.toast-leave-active[data-v-45a711b4]{transition:all .3s ease}.toast-enter-from[data-v-45a711b4],.toast-leave-to[data-v-45a711b4]{opacity:0;transform:translate(100%)}.toast-move[data-v-45a711b4]{transition:transform .3s ease}.sidebar-content[data-v-45a711b4]::-webkit-scrollbar,.content-area[data-v-45a711b4]::-webkit-scrollbar{width:8px}.sidebar-content[data-v-45a711b4]::-webkit-scrollbar-track,.content-area[data-v-45a711b4]::-webkit-scrollbar-track{background:var(--cg-color-bg-tertiary)}.sidebar-content[data-v-45a711b4]::-webkit-scrollbar-thumb,.content-area[data-v-45a711b4]::-webkit-scrollbar-thumb{background:var(--cg-color-border-subtle);border:1px solid var(--cg-color-bg-tertiary)}.sidebar-content[data-v-45a711b4]::-webkit-scrollbar-thumb:hover,.content-area[data-v-45a711b4]::-webkit-scrollbar-thumb:hover{background:var(--cg-color-accent)}.download-item[data-v-2110df65]{padding:var(--cg-space-2);background:var(--cg-color-bg-secondary);border:1px solid var(--cg-color-border-subtle)}.download-item.status-downloading[data-v-2110df65]{border-color:var(--cg-color-accent)}.download-item.status-completed[data-v-2110df65]{border-color:var(--cg-color-success)}.download-item.status-failed[data-v-2110df65]{border-color:var(--cg-color-error)}.download-item.status-paused[data-v-2110df65]{border-color:var(--cg-color-warning)}.item-header[data-v-2110df65]{display:flex;justify-content:space-between;align-items:flex-start}.item-info[data-v-2110df65]{flex:1;min-width:0}.filename[data-v-2110df65]{font-size:var(--cg-font-size-sm);color:var(--cg-color-text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.metadata[data-v-2110df65]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);margin-top:2px;display:flex;gap:var(--cg-space-2)}.item-actions[data-v-2110df65]{display:flex;gap:4px;flex-shrink:0}.action-icon[data-v-2110df65]{width:20px;height:20px;padding:0;background:transparent;border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary);cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center}.action-icon[data-v-2110df65]:hover{background:var(--cg-color-bg-hover)}.action-icon.cancel[data-v-2110df65]:hover,.action-icon.remove[data-v-2110df65]:hover{border-color:var(--cg-color-error);color:var(--cg-color-error)}.action-icon.retry[data-v-2110df65]:hover{border-color:var(--cg-color-warning);color:var(--cg-color-warning)}.action-icon.resume[data-v-2110df65]{font-size:10px}.action-icon.resume[data-v-2110df65]:hover{border-color:var(--cg-color-success);color:var(--cg-color-success)}.progress-section[data-v-2110df65]{margin-top:var(--cg-space-1)}.progress-bar[data-v-2110df65]{height:3px;background:var(--cg-color-bg-tertiary);border-radius:2px;overflow:hidden}.progress-fill[data-v-2110df65]{height:100%;background:var(--cg-color-accent);transition:width .2s ease}.progress-stats[data-v-2110df65]{display:flex;justify-content:space-between;margin-top:2px;font-size:10px;color:var(--cg-color-text-muted);font-family:var(--cg-font-mono)}.speed[data-v-2110df65]{color:var(--cg-color-accent)}.status-msg[data-v-2110df65]{font-size:var(--cg-font-size-xs);margin-top:var(--cg-space-1)}.status-msg.paused[data-v-2110df65]{color:var(--cg-color-warning)}.status-msg.queued[data-v-2110df65]{color:var(--cg-color-text-muted)}.status-msg.completed[data-v-2110df65]{color:var(--cg-color-success)}.status-msg.failed[data-v-2110df65]{color:var(--cg-color-error)}.retries[data-v-2110df65]{opacity:.7}.model-download-queue[data-v-60751cfa]{position:fixed;bottom:16px;right:340px;width:360px;background:var(--cg-color-bg-primary);border:1px solid var(--cg-color-border);border-radius:var(--cg-radius-md);box-shadow:0 2px 12px #0000004d;z-index:0;display:flex;flex-direction:column;overflow:hidden}.queue-header[data-v-60751cfa]{padding:var(--cg-space-2) var(--cg-space-3);border-bottom:1px solid var(--cg-color-border);display:flex;justify-content:space-between;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none;background:var(--cg-color-bg-secondary)}.queue-header[data-v-60751cfa]:hover{background:var(--cg-color-bg-hover)}.queue-title[data-v-60751cfa]{display:flex;align-items:center;gap:var(--cg-space-2);color:var(--cg-color-text-primary);font-weight:var(--cg-font-weight-semibold);font-size:var(--cg-font-size-sm)}.icon[data-v-60751cfa]{font-size:var(--cg-font-size-base)}.count[data-v-60751cfa]{color:var(--cg-color-text-muted);font-weight:400;font-size:var(--cg-font-size-xs)}.action-label[data-v-60751cfa]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);text-transform:lowercase;font-style:italic}.overall-progress[data-v-60751cfa]{padding:var(--cg-space-2) var(--cg-space-3)}.progress-bar[data-v-60751cfa]{height:4px;background:var(--cg-color-bg-tertiary);border-radius:2px;overflow:hidden}.progress-fill[data-v-60751cfa]{height:100%;background:var(--cg-color-accent);transition:width .3s ease}.current-mini[data-v-60751cfa]{display:flex;justify-content:space-between;margin-top:var(--cg-space-1);font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted)}.current-mini .filename[data-v-60751cfa]{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.current-mini .speed[data-v-60751cfa]{color:var(--cg-color-accent);font-family:var(--cg-font-mono)}.queue-content[data-v-60751cfa]{max-height:450px;overflow-y:auto;padding:var(--cg-space-2);display:flex;flex-direction:column;gap:var(--cg-space-2)}.section[data-v-60751cfa]{display:flex;flex-direction:column;gap:var(--cg-space-1)}.section-header[data-v-60751cfa]{display:flex;justify-content:space-between;align-items:center}.section-label[data-v-60751cfa]{font-size:var(--cg-font-size-xs);color:var(--cg-color-text-muted);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide)}.section-label.failed[data-v-60751cfa]{color:var(--cg-color-error)}.section-label.paused[data-v-60751cfa]{color:var(--cg-color-warning)}.resume-all-btn[data-v-60751cfa]{padding:4px 10px;background:var(--cg-color-warning);border:none;color:#000;font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-semibold);cursor:pointer}.resume-all-btn[data-v-60751cfa]:hover{filter:brightness(1.1)}.clear-btn[data-v-60751cfa]{padding:2px 6px;background:transparent;border:1px solid var(--cg-color-border-subtle);color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);cursor:pointer}.clear-btn[data-v-60751cfa]:hover{color:var(--cg-color-error);border-color:var(--cg-color-error)}.items-list[data-v-60751cfa]{display:flex;flex-direction:column;gap:var(--cg-space-1)}.detail-header[data-v-fac0fef0]{display:flex;justify-content:space-between;align-items:center;padding-bottom:var(--cg-space-3);margin-bottom:var(--cg-space-3);border-bottom:1px solid var(--cg-color-border-subtle)}.item-count[data-v-fac0fef0]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}.resource-list[data-v-fac0fef0]{display:flex;flex-direction:column;background:var(--cg-color-bg-tertiary);border-radius:var(--cg-radius-md);padding:var(--cg-space-2)}.resource-item[data-v-fac0fef0]{display:flex;align-items:center;justify-content:space-between;gap:var(--cg-space-2);padding:var(--cg-space-2)}.resource-item[data-v-fac0fef0]:not(:last-child){border-bottom:1px solid var(--cg-color-border)}.item-info[data-v-fac0fef0]{display:flex;align-items:center;gap:var(--cg-space-2);flex:1;min-width:0}.item-name[data-v-fac0fef0]{font-family:var(--cg-font-mono);color:var(--cg-color-text-primary);font-size:var(--cg-font-size-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item-subtitle[data-v-fac0fef0]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);flex-shrink:0}.no-action[data-v-fac0fef0]{color:var(--cg-color-warning);font-style:italic;font-size:var(--cg-font-size-xs);white-space:nowrap}.queued-badge[data-v-fac0fef0],.installing-badge[data-v-fac0fef0],.failed-badge[data-v-fac0fef0],.installed-badge[data-v-fac0fef0]{font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-medium);padding:var(--cg-space-1) var(--cg-space-2);border-radius:var(--cg-radius-sm);white-space:nowrap}.queued-badge[data-v-fac0fef0]{color:var(--cg-color-warning);background:color-mix(in srgb,var(--cg-color-warning) 15%,transparent)}.installing-badge[data-v-fac0fef0]{color:var(--cg-color-accent);background:color-mix(in srgb,var(--cg-color-accent) 15%,transparent)}.failed-badge[data-v-fac0fef0]{color:var(--cg-color-error);background:color-mix(in srgb,var(--cg-color-error) 15%,transparent);cursor:help}.installed-badge[data-v-fac0fef0]{color:var(--cg-color-success);background:color-mix(in srgb,var(--cg-color-success) 15%,transparent)}.loading-state[data-v-512ff6ab]{display:flex;align-items:center;justify-content:center;padding:var(--cg-space-8);gap:var(--cg-space-3);color:var(--cg-color-text-muted)}.loading-spinner[data-v-512ff6ab]{width:24px;height:24px;border:3px solid var(--cg-color-border);border-top-color:var(--cg-color-accent);border-radius:50%;animation:spin-512ff6ab .8s linear infinite}@keyframes spin-512ff6ab{to{transform:rotate(360deg)}}.section[data-v-512ff6ab]{margin-bottom:var(--cg-space-4)}.section-header[data-v-512ff6ab]{display:flex;align-items:center;justify-content:space-between;gap:var(--cg-space-2);margin-bottom:var(--cg-space-2)}.section-title[data-v-512ff6ab]{font-weight:var(--cg-font-weight-semibold);color:var(--cg-color-text-primary)}.item-list[data-v-512ff6ab]{background:var(--cg-color-bg-tertiary);border-radius:var(--cg-radius-md);padding:var(--cg-space-2)}.item[data-v-512ff6ab]{display:flex;align-items:center;gap:var(--cg-space-2);padding:var(--cg-space-1) var(--cg-space-2);font-size:var(--cg-font-size-sm)}.package-item[data-v-512ff6ab],.model-item[data-v-512ff6ab]{display:flex;align-items:center;justify-content:space-between;gap:var(--cg-space-2);padding:var(--cg-space-2)}.package-item[data-v-512ff6ab]:not(:last-child),.model-item[data-v-512ff6ab]:not(:last-child){border-bottom:1px solid var(--cg-color-border)}.package-info[data-v-512ff6ab],.model-info[data-v-512ff6ab]{display:flex;align-items:center;gap:var(--cg-space-2);flex:1;min-width:0}.package-name[data-v-512ff6ab]{font-weight:var(--cg-font-weight-medium);color:var(--cg-color-text-primary);font-size:var(--cg-font-size-sm)}.node-count[data-v-512ff6ab]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs)}.node-type[data-v-512ff6ab]{font-family:var(--cg-font-mono);background:var(--cg-color-bg-secondary);padding:var(--cg-space-1) var(--cg-space-2);border-radius:var(--cg-radius-sm);color:var(--cg-color-accent);font-size:var(--cg-font-size-xs)}.model-name[data-v-512ff6ab]{font-family:var(--cg-font-mono);color:var(--cg-color-text-primary);font-size:var(--cg-font-size-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.not-found[data-v-512ff6ab],.no-url[data-v-512ff6ab]{color:var(--cg-color-warning);font-style:italic;font-size:var(--cg-font-size-xs);white-space:nowrap}.queued-badge[data-v-512ff6ab],.installing-badge[data-v-512ff6ab],.failed-badge[data-v-512ff6ab],.installed-badge[data-v-512ff6ab]{font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-medium);padding:var(--cg-space-1) var(--cg-space-2);border-radius:var(--cg-radius-sm)}.queued-badge[data-v-512ff6ab]{color:var(--cg-color-warning);background:color-mix(in srgb,var(--cg-color-warning) 15%,transparent)}.installing-badge[data-v-512ff6ab]{color:var(--cg-color-accent);background:color-mix(in srgb,var(--cg-color-accent) 15%,transparent)}.failed-badge[data-v-512ff6ab]{color:var(--cg-color-error);background:color-mix(in srgb,var(--cg-color-error) 15%,transparent);cursor:help}.installed-badge[data-v-512ff6ab]{color:var(--cg-color-success);background:color-mix(in srgb,var(--cg-color-success) 15%,transparent)}.show-all-row[data-v-512ff6ab]{display:flex;align-items:center;justify-content:space-between;padding:var(--cg-space-2);color:var(--cg-color-accent);cursor:pointer;font-size:var(--cg-font-size-sm);border-top:1px solid var(--cg-color-border)}.show-all-row[data-v-512ff6ab]:hover{background:var(--cg-color-bg-hover)}.show-all-arrow[data-v-512ff6ab]{opacity:.6}.overflow-note[data-v-512ff6ab]{padding:var(--cg-space-1) var(--cg-space-2);color:var(--cg-color-text-muted);font-style:italic;font-size:var(--cg-font-size-xs)}.dont-show-again[data-v-512ff6ab]{margin-top:var(--cg-space-4);padding-top:var(--cg-space-3);border-top:1px solid var(--cg-color-border)}[data-comfygit-theme]{user-select:text;-webkit-user-select:text}:root{--cg-font-display: system-ui, sans-serif;--cg-font-body: system-ui, sans-serif;--cg-font-mono: ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, monospace;--cg-font-size-xs: 10px;--cg-font-size-sm: 12px;--cg-font-size-base: 14px;--cg-font-size-lg: 16px;--cg-font-size-xl: 20px;--cg-font-size-2xl: 24px;--cg-font-weight-normal: 400;--cg-font-weight-medium: 500;--cg-font-weight-semibold: 600;--cg-font-weight-bold: 700;--cg-line-height-tight: 1.2;--cg-line-height-normal: 1.5;--cg-line-height-relaxed: 1.75;--cg-letter-spacing-tight: -.02em;--cg-letter-spacing-normal: 0;--cg-letter-spacing-wide: .05em;--cg-letter-spacing-wider: .1em;--cg-color-bg-primary: #353535;--cg-color-bg-secondary: #2a2a2a;--cg-color-bg-tertiary: #222222;--cg-color-bg-hover: #404040;--cg-color-bg-overlay: rgba(0, 0, 0, .5);--cg-color-text-primary: #dddddd;--cg-color-text-secondary: #999999;--cg-color-text-muted: #666666;--cg-color-text-inverse: #111111;--cg-color-border: #4a4a4a;--cg-color-border-subtle: #3a3a3a;--cg-color-border-strong: #5a5a5a;--cg-color-accent: #f97316;--cg-color-accent-hover: #ea580c;--cg-color-accent-muted: rgba(249, 115, 22, .2);--cg-color-success: #22c55e;--cg-color-success-muted: rgba(34, 197, 94, .15);--cg-color-warning: #fbbf24;--cg-color-warning-muted: rgba(251, 191, 36, .15);--cg-color-error: #ef4444;--cg-color-error-muted: rgba(239, 68, 68, .15);--cg-color-info: #3b82f6;--cg-color-info-muted: rgba(59, 130, 246, .15);--cg-space-0-5: 2px;--cg-space-1: 4px;--cg-space-2: 8px;--cg-space-3: 12px;--cg-space-4: 16px;--cg-space-5: 20px;--cg-space-6: 24px;--cg-space-8: 32px;--cg-space-10: 40px;--cg-space-12: 48px;--cg-radius-none: 0;--cg-radius-sm: 2px;--cg-radius-md: 4px;--cg-radius-lg: 8px;--cg-radius-xl: 12px;--cg-radius-2xl: 16px;--cg-radius-full: 9999px;--cg-shadow-sm: 0 1px 2px rgba(0, 0, 0, .2);--cg-shadow-md: 0 4px 12px rgba(0, 0, 0, .3);--cg-shadow-lg: 0 8px 32px rgba(0, 0, 0, .4);--cg-shadow-xl: 0 16px 48px rgba(0, 0, 0, .5);--cg-blur-sm: 4px;--cg-blur-md: 8px;--cg-blur-lg: 16px;--cg-transition-fast: .1s ease;--cg-transition-normal: .2s ease;--cg-transition-slow: .3s ease;--cg-z-dropdown: 100;--cg-z-modal: 1000;--cg-z-popover: 1001;--cg-z-tooltip: 1002;--cg-panel-width: 580px;--cg-panel-height: 70vh;--cg-panel-max-width: 90vw;--cg-panel-max-height: 85vh;--cg-btn-gradient-start: #fb923c;--cg-btn-gradient-end: #ea580c;--cg-btn-shadow-inset: inset 0 1px 0 rgba(255, 255, 255, .2), inset 0 -1px 0 rgba(0, 0, 0, .15);--cg-decoration-title-prefix: "";--cg-decoration-label-prefix: "";--cg-decoration-label-suffix: "";--cg-decoration-status-animation: none;--cg-decoration-status-shape: circle;--cg-shadow-accent: rgba(249, 115, 22, .3);--cg-shadow-accent-strong: rgba(249, 115, 22, .5);--cg-shadow-error: rgba(239, 68, 68, .3);--cg-shadow-success: rgba(34, 197, 94, .3);--cg-text-shadow-title: none;--cg-text-shadow-accent: none} diff --git a/js/comfygit-panel.js b/js/comfygit-panel.js index 1e37494..ad52168 100644 --- a/js/comfygit-panel.js +++ b/js/comfygit-panel.js @@ -1,70 +1,70 @@ -import { app as Os } from "../../scripts/app.js"; +import { app as Wt } from "../../scripts/app.js"; /** * @vue/shared v3.5.25 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **/ // @__NO_SIDE_EFFECTS__ -function Ia(e) { +function za(e) { const s = /* @__PURE__ */ Object.create(null); for (const o of e.split(",")) s[o] = 1; return (o) => o in s; } -const st = {}, ro = [], ms = () => { -}, Xl = () => !1, Rn = (e) => e.charCodeAt(0) === 111 && e.charCodeAt(1) === 110 && // uppercase letter -(e.charCodeAt(2) > 122 || e.charCodeAt(2) < 97), Ea = (e) => e.startsWith("onUpdate:"), pt = Object.assign, Ta = (e, s) => { +const nt = {}, po = [], gs = () => { +}, ci = () => !1, Wn = (e) => e.charCodeAt(0) === 111 && e.charCodeAt(1) === 110 && // uppercase letter +(e.charCodeAt(2) > 122 || e.charCodeAt(2) < 97), Fa = (e) => e.startsWith("onUpdate:"), pt = Object.assign, Ba = (e, s) => { const o = e.indexOf(s); o > -1 && e.splice(o, 1); -}, Fr = Object.prototype.hasOwnProperty, Ze = (e, s) => Fr.call(e, s), Ue = Array.isArray, co = (e) => Jo(e) === "[object Map]", yo = (e) => Jo(e) === "[object Set]", sl = (e) => Jo(e) === "[object Date]", Be = (e) => typeof e == "function", ut = (e) => typeof e == "string", Zt = (e) => typeof e == "symbol", tt = (e) => e !== null && typeof e == "object", Ql = (e) => (tt(e) || Be(e)) && Be(e.then) && Be(e.catch), Zl = Object.prototype.toString, Jo = (e) => Zl.call(e), Br = (e) => Jo(e).slice(8, -1), ei = (e) => Jo(e) === "[object Object]", Pa = (e) => ut(e) && e !== "NaN" && e[0] !== "-" && "" + parseInt(e, 10) === e, Mo = /* @__PURE__ */ Ia( +}, oc = Object.prototype.hasOwnProperty, et = (e, s) => oc.call(e, s), Be = Array.isArray, go = (e) => an(e) === "[object Map]", Co = (e) => an(e) === "[object Set]", dl = (e) => an(e) === "[object Date]", Ge = (e) => typeof e == "function", ut = (e) => typeof e == "string", ts = (e) => typeof e == "symbol", ot = (e) => e !== null && typeof e == "object", ui = (e) => (ot(e) || Ge(e)) && Ge(e.then) && Ge(e.catch), di = Object.prototype.toString, an = (e) => di.call(e), nc = (e) => an(e).slice(8, -1), fi = (e) => an(e) === "[object Object]", Va = (e) => ut(e) && e !== "NaN" && e[0] !== "-" && "" + parseInt(e, 10) === e, Fo = /* @__PURE__ */ za( // the leading comma is intentional so empty string "" is also included ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" -), Mn = (e) => { +), Gn = (e) => { const s = /* @__PURE__ */ Object.create(null); return ((o) => s[o] || (s[o] = e(o))); -}, Vr = /-\w/g, Wt = Mn( - (e) => e.replace(Vr, (s) => s.slice(1).toUpperCase()) -), Wr = /\B([A-Z])/g, zs = Mn( - (e) => e.replace(Wr, "-$1").toLowerCase() -), Dn = Mn((e) => e.charAt(0).toUpperCase() + e.slice(1)), Hn = Mn( - (e) => e ? `on${Dn(e)}` : "" -), As = (e, s) => !Object.is(e, s), fn = (e, ...s) => { +}, ac = /-\w/g, Kt = Gn( + (e) => e.replace(ac, (s) => s.slice(1).toUpperCase()) +), lc = /\B([A-Z])/g, Vs = Gn( + (e) => e.replace(lc, "-$1").toLowerCase() +), jn = Gn((e) => e.charAt(0).toUpperCase() + e.slice(1)), na = Gn( + (e) => e ? `on${jn(e)}` : "" +), zs = (e, s) => !Object.is(e, s), xn = (e, ...s) => { for (let o = 0; o < e.length; o++) e[o](...s); -}, ti = (e, s, o, n = !1) => { +}, mi = (e, s, o, n = !1) => { Object.defineProperty(e, s, { configurable: !0, enumerable: !1, writable: n, value: o }); -}, Ln = (e) => { +}, Hn = (e) => { const s = parseFloat(e); return isNaN(s) ? e : s; -}, Gr = (e) => { +}, ic = (e) => { const s = ut(e) ? Number(e) : NaN; return isNaN(s) ? e : s; }; -let ol; -const On = () => ol || (ol = typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : typeof window < "u" ? window : typeof global < "u" ? global : {}); -function Gt(e) { - if (Ue(e)) { +let fl; +const Kn = () => fl || (fl = typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : typeof window < "u" ? window : typeof global < "u" ? global : {}); +function Ft(e) { + if (Be(e)) { const s = {}; for (let o = 0; o < e.length; o++) { - const n = e[o], l = ut(n) ? qr(n) : Gt(n); + const n = e[o], l = ut(n) ? dc(n) : Ft(n); if (l) - for (const i in l) - s[i] = l[i]; + for (const r in l) + s[r] = l[r]; } return s; - } else if (ut(e) || tt(e)) + } else if (ut(e) || ot(e)) return e; } -const jr = /;(?![^(]*\))/g, Hr = /:([^]+)/, Kr = /\/\*[^]*?\*\//g; -function qr(e) { +const rc = /;(?![^(]*\))/g, cc = /:([^]+)/, uc = /\/\*[^]*?\*\//g; +function dc(e) { const s = {}; - return e.replace(Kr, "").split(jr).forEach((o) => { + return e.replace(uc, "").split(rc).forEach((o) => { if (o) { - const n = o.split(Hr); + const n = o.split(cc); n.length > 1 && (s[n[0].trim()] = n[1].trim()); } }), s; @@ -73,66 +73,66 @@ function Se(e) { let s = ""; if (ut(e)) s = e; - else if (Ue(e)) + else if (Be(e)) for (let o = 0; o < e.length; o++) { const n = Se(e[o]); n && (s += n + " "); } - else if (tt(e)) + else if (ot(e)) for (const o in e) e[o] && (s += o + " "); return s.trim(); } -const Yr = "itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly", Jr = /* @__PURE__ */ Ia(Yr); -function si(e) { +const fc = "itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly", mc = /* @__PURE__ */ za(fc); +function vi(e) { return !!e || e === ""; } -function Xr(e, s) { +function vc(e, s) { if (e.length !== s.length) return !1; let o = !0; for (let n = 0; o && n < e.length; n++) - o = Qs(e[n], s[n]); + o = so(e[n], s[n]); return o; } -function Qs(e, s) { +function so(e, s) { if (e === s) return !0; - let o = sl(e), n = sl(s); + let o = dl(e), n = dl(s); if (o || n) return o && n ? e.getTime() === s.getTime() : !1; - if (o = Zt(e), n = Zt(s), o || n) + if (o = ts(e), n = ts(s), o || n) return e === s; - if (o = Ue(e), n = Ue(s), o || n) - return o && n ? Xr(e, s) : !1; - if (o = tt(e), n = tt(s), o || n) { + if (o = Be(e), n = Be(s), o || n) + return o && n ? vc(e, s) : !1; + if (o = ot(e), n = ot(s), o || n) { if (!o || !n) return !1; - const l = Object.keys(e).length, i = Object.keys(s).length; - if (l !== i) + const l = Object.keys(e).length, r = Object.keys(s).length; + if (l !== r) return !1; - for (const r in e) { - const u = e.hasOwnProperty(r), d = s.hasOwnProperty(r); - if (u && !d || !u && d || !Qs(e[r], s[r])) + for (const c in e) { + const u = e.hasOwnProperty(c), d = s.hasOwnProperty(c); + if (u && !d || !u && d || !so(e[c], s[c])) return !1; } } return String(e) === String(s); } -function Ra(e, s) { - return e.findIndex((o) => Qs(o, s)); +function Wa(e, s) { + return e.findIndex((o) => so(o, s)); } -const oi = (e) => !!(e && e.__v_isRef === !0), f = (e) => ut(e) ? e : e == null ? "" : Ue(e) || tt(e) && (e.toString === Zl || !Be(e.toString)) ? oi(e) ? f(e.value) : JSON.stringify(e, ni, 2) : String(e), ni = (e, s) => oi(s) ? ni(e, s.value) : co(s) ? { +const pi = (e) => !!(e && e.__v_isRef === !0), f = (e) => ut(e) ? e : e == null ? "" : Be(e) || ot(e) && (e.toString === di || !Ge(e.toString)) ? pi(e) ? f(e.value) : JSON.stringify(e, gi, 2) : String(e), gi = (e, s) => pi(s) ? gi(e, s.value) : go(s) ? { [`Map(${s.size})`]: [...s.entries()].reduce( - (o, [n, l], i) => (o[Kn(n, i) + " =>"] = l, o), + (o, [n, l], r) => (o[aa(n, r) + " =>"] = l, o), {} ) -} : yo(s) ? { - [`Set(${s.size})`]: [...s.values()].map((o) => Kn(o)) -} : Zt(s) ? Kn(s) : tt(s) && !Ue(s) && !ei(s) ? String(s) : s, Kn = (e, s = "") => { +} : Co(s) ? { + [`Set(${s.size})`]: [...s.values()].map((o) => aa(o)) +} : ts(s) ? aa(s) : ot(s) && !Be(s) && !fi(s) ? String(s) : s, aa = (e, s = "") => { var o; return ( // Symbol.description in es2019+ so we need to cast here to pass // the lib: es2016 check - Zt(e) ? `Symbol(${(o = e.description) != null ? o : s})` : e + ts(e) ? `Symbol(${(o = e.description) != null ? o : s})` : e ); }; /** @@ -140,10 +140,10 @@ const oi = (e) => !!(e && e.__v_isRef === !0), f = (e) => ut(e) ? e : e == null * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **/ -let Dt; -class Qr { +let At; +class pc { constructor(s = !1) { - this.detached = s, this._active = !0, this._on = 0, this.effects = [], this.cleanups = [], this._isPaused = !1, this.parent = Dt, !s && Dt && (this.index = (Dt.scopes || (Dt.scopes = [])).push( + this.detached = s, this._active = !0, this._on = 0, this.effects = [], this.cleanups = [], this._isPaused = !1, this.parent = At, !s && At && (this.index = (At.scopes || (At.scopes = [])).push( this ) - 1); } @@ -177,11 +177,11 @@ class Qr { } run(s) { if (this._active) { - const o = Dt; + const o = At; try { - return Dt = this, s(); + return At = this, s(); } finally { - Dt = o; + At = o; } } } @@ -190,14 +190,14 @@ class Qr { * @internal */ on() { - ++this._on === 1 && (this.prevScope = Dt, Dt = this); + ++this._on === 1 && (this.prevScope = At, At = this); } /** * This should only be called on non-detached scopes * @internal */ off() { - this._on > 0 && --this._on === 0 && (Dt = this.prevScope, this.prevScope = void 0); + this._on > 0 && --this._on === 0 && (At = this.prevScope, this.prevScope = void 0); } stop(s) { if (this._active) { @@ -220,84 +220,84 @@ class Qr { } } } -function Zr() { - return Dt; +function gc() { + return At; } -let nt; -const qn = /* @__PURE__ */ new WeakSet(); -class ai { +let lt; +const la = /* @__PURE__ */ new WeakSet(); +class hi { constructor(s) { - this.fn = s, this.deps = void 0, this.depsTail = void 0, this.flags = 5, this.next = void 0, this.cleanup = void 0, this.scheduler = void 0, Dt && Dt.active && Dt.effects.push(this); + this.fn = s, this.deps = void 0, this.depsTail = void 0, this.flags = 5, this.next = void 0, this.cleanup = void 0, this.scheduler = void 0, At && At.active && At.effects.push(this); } pause() { this.flags |= 64; } resume() { - this.flags & 64 && (this.flags &= -65, qn.has(this) && (qn.delete(this), this.trigger())); + this.flags & 64 && (this.flags &= -65, la.has(this) && (la.delete(this), this.trigger())); } /** * @internal */ notify() { - this.flags & 2 && !(this.flags & 32) || this.flags & 8 || ii(this); + this.flags & 2 && !(this.flags & 32) || this.flags & 8 || wi(this); } run() { if (!(this.flags & 1)) return this.fn(); - this.flags |= 2, nl(this), ri(this); - const s = nt, o = Jt; - nt = this, Jt = !0; + this.flags |= 2, ml(this), ki(this); + const s = lt, o = es; + lt = this, es = !0; try { return this.fn(); } finally { - ci(this), nt = s, Jt = o, this.flags &= -3; + _i(this), lt = s, es = o, this.flags &= -3; } } stop() { if (this.flags & 1) { for (let s = this.deps; s; s = s.nextDep) - La(s); - this.deps = this.depsTail = void 0, nl(this), this.onStop && this.onStop(), this.flags &= -2; + Ha(s); + this.deps = this.depsTail = void 0, ml(this), this.onStop && this.onStop(), this.flags &= -2; } } trigger() { - this.flags & 64 ? qn.add(this) : this.scheduler ? this.scheduler() : this.runIfDirty(); + this.flags & 64 ? la.add(this) : this.scheduler ? this.scheduler() : this.runIfDirty(); } /** * @internal */ runIfDirty() { - da(this) && this.run(); + ba(this) && this.run(); } get dirty() { - return da(this); + return ba(this); } } -let li = 0, Do, Lo; -function ii(e, s = !1) { +let yi = 0, Bo, Vo; +function wi(e, s = !1) { if (e.flags |= 8, s) { - e.next = Lo, Lo = e; + e.next = Vo, Vo = e; return; } - e.next = Do, Do = e; + e.next = Bo, Bo = e; } -function Ma() { - li++; +function Ga() { + yi++; } -function Da() { - if (--li > 0) +function ja() { + if (--yi > 0) return; - if (Lo) { - let s = Lo; - for (Lo = void 0; s; ) { + if (Vo) { + let s = Vo; + for (Vo = void 0; s; ) { const o = s.next; s.next = void 0, s.flags &= -9, s = o; } } let e; - for (; Do; ) { - let s = Do; - for (Do = void 0; s; ) { + for (; Bo; ) { + let s = Bo; + for (Bo = void 0; s; ) { const o = s.next; if (s.next = void 0, s.flags &= -9, s.flags & 1) try { @@ -310,365 +310,365 @@ function Da() { } if (e) throw e; } -function ri(e) { +function ki(e) { for (let s = e.deps; s; s = s.nextDep) s.version = -1, s.prevActiveLink = s.dep.activeLink, s.dep.activeLink = s; } -function ci(e) { +function _i(e) { let s, o = e.depsTail, n = o; for (; n; ) { const l = n.prevDep; - n.version === -1 ? (n === o && (o = l), La(n), ec(n)) : s = n, n.dep.activeLink = n.prevActiveLink, n.prevActiveLink = void 0, n = l; + n.version === -1 ? (n === o && (o = l), Ha(n), hc(n)) : s = n, n.dep.activeLink = n.prevActiveLink, n.prevActiveLink = void 0, n = l; } e.deps = s, e.depsTail = o; } -function da(e) { +function ba(e) { for (let s = e.deps; s; s = s.nextDep) - if (s.dep.version !== s.version || s.dep.computed && (ui(s.dep.computed) || s.dep.version !== s.version)) + if (s.dep.version !== s.version || s.dep.computed && (bi(s.dep.computed) || s.dep.version !== s.version)) return !0; return !!e._dirty; } -function ui(e) { - if (e.flags & 4 && !(e.flags & 16) || (e.flags &= -17, e.globalVersion === Vo) || (e.globalVersion = Vo, !e.isSSR && e.flags & 128 && (!e.deps && !e._dirty || !da(e)))) +function bi(e) { + if (e.flags & 4 && !(e.flags & 16) || (e.flags &= -17, e.globalVersion === Qo) || (e.globalVersion = Qo, !e.isSSR && e.flags & 128 && (!e.deps && !e._dirty || !ba(e)))) return; e.flags |= 2; - const s = e.dep, o = nt, n = Jt; - nt = e, Jt = !0; + const s = e.dep, o = lt, n = es; + lt = e, es = !0; try { - ri(e); + ki(e); const l = e.fn(e._value); - (s.version === 0 || As(l, e._value)) && (e.flags |= 128, e._value = l, s.version++); + (s.version === 0 || zs(l, e._value)) && (e.flags |= 128, e._value = l, s.version++); } catch (l) { throw s.version++, l; } finally { - nt = o, Jt = n, ci(e), e.flags &= -3; + lt = o, es = n, _i(e), e.flags &= -3; } } -function La(e, s = !1) { +function Ha(e, s = !1) { const { dep: o, prevSub: n, nextSub: l } = e; if (n && (n.nextSub = l, e.prevSub = void 0), l && (l.prevSub = n, e.nextSub = void 0), o.subs === e && (o.subs = n, !n && o.computed)) { o.computed.flags &= -5; - for (let i = o.computed.deps; i; i = i.nextDep) - La(i, !0); + for (let r = o.computed.deps; r; r = r.nextDep) + Ha(r, !0); } !s && !--o.sc && o.map && o.map.delete(o.key); } -function ec(e) { +function hc(e) { const { prevDep: s, nextDep: o } = e; s && (s.nextDep = o, e.prevDep = void 0), o && (o.prevDep = s, e.nextDep = void 0); } -let Jt = !0; -const di = []; -function $s() { - di.push(Jt), Jt = !1; +let es = !0; +const $i = []; +function Es() { + $i.push(es), es = !1; } -function Cs() { - const e = di.pop(); - Jt = e === void 0 ? !0 : e; +function Ts() { + const e = $i.pop(); + es = e === void 0 ? !0 : e; } -function nl(e) { +function ml(e) { const { cleanup: s } = e; if (e.cleanup = void 0, s) { - const o = nt; - nt = void 0; + const o = lt; + lt = void 0; try { s(); } finally { - nt = o; + lt = o; } } } -let Vo = 0; -class tc { +let Qo = 0; +class yc { constructor(s, o) { this.sub = s, this.dep = o, this.version = o.version, this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0; } } -class Oa { +class Ka { // TODO isolatedDeclarations "__v_skip" constructor(s) { this.computed = s, 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(s) { - if (!nt || !Jt || nt === this.computed) + if (!lt || !es || lt === this.computed) return; let o = this.activeLink; - if (o === void 0 || o.sub !== nt) - o = this.activeLink = new tc(nt, this), nt.deps ? (o.prevDep = nt.depsTail, nt.depsTail.nextDep = o, nt.depsTail = o) : nt.deps = nt.depsTail = o, fi(o); + if (o === void 0 || o.sub !== lt) + o = this.activeLink = new yc(lt, this), lt.deps ? (o.prevDep = lt.depsTail, lt.depsTail.nextDep = o, lt.depsTail = o) : lt.deps = lt.depsTail = o, Ci(o); else if (o.version === -1 && (o.version = this.version, o.nextDep)) { const n = o.nextDep; - n.prevDep = o.prevDep, o.prevDep && (o.prevDep.nextDep = n), o.prevDep = nt.depsTail, o.nextDep = void 0, nt.depsTail.nextDep = o, nt.depsTail = o, nt.deps === o && (nt.deps = n); + n.prevDep = o.prevDep, o.prevDep && (o.prevDep.nextDep = n), o.prevDep = lt.depsTail, o.nextDep = void 0, lt.depsTail.nextDep = o, lt.depsTail = o, lt.deps === o && (lt.deps = n); } return o; } trigger(s) { - this.version++, Vo++, this.notify(s); + this.version++, Qo++, this.notify(s); } notify(s) { - Ma(); + Ga(); try { for (let o = this.subs; o; o = o.prevSub) o.sub.notify() && o.sub.dep.notify(); } finally { - Da(); + ja(); } } } -function fi(e) { +function Ci(e) { if (e.dep.sc++, e.sub.flags & 4) { const s = e.dep.computed; if (s && !e.dep.subs) { s.flags |= 20; for (let n = s.deps; n; n = n.nextDep) - fi(n); + Ci(n); } const o = e.dep.subs; o !== e && (e.prevSub = o, o && (o.nextSub = e)), e.dep.subs = e; } } -const fa = /* @__PURE__ */ new WeakMap(), Js = Symbol( +const $a = /* @__PURE__ */ new WeakMap(), eo = Symbol( "" -), ma = Symbol( +), Ca = Symbol( "" -), Wo = Symbol( +), Xo = Symbol( "" ); -function bt(e, s, o) { - if (Jt && nt) { - let n = fa.get(e); - n || fa.set(e, n = /* @__PURE__ */ new Map()); +function _t(e, s, o) { + if (es && lt) { + let n = $a.get(e); + n || $a.set(e, n = /* @__PURE__ */ new Map()); let l = n.get(o); - l || (n.set(o, l = new Oa()), l.map = n, l.key = o), l.track(); + l || (n.set(o, l = new Ka()), l.map = n, l.key = o), l.track(); } } -function bs(e, s, o, n, l, i) { - const r = fa.get(e); - if (!r) { - Vo++; +function xs(e, s, o, n, l, r) { + const c = $a.get(e); + if (!c) { + Qo++; return; } const u = (d) => { d && d.trigger(); }; - if (Ma(), s === "clear") - r.forEach(u); + if (Ga(), s === "clear") + c.forEach(u); else { - const d = Ue(e), m = d && Pa(o); + const d = Be(e), m = d && Va(o); if (d && o === "length") { const v = Number(n); - r.forEach((h, w) => { - (w === "length" || w === Wo || !Zt(w) && w >= v) && u(h); + c.forEach((g, w) => { + (w === "length" || w === Xo || !ts(w) && w >= v) && u(g); }); } else - switch ((o !== void 0 || r.has(void 0)) && u(r.get(o)), m && u(r.get(Wo)), s) { + switch ((o !== void 0 || c.has(void 0)) && u(c.get(o)), m && u(c.get(Xo)), s) { case "add": - d ? m && u(r.get("length")) : (u(r.get(Js)), co(e) && u(r.get(ma))); + d ? m && u(c.get("length")) : (u(c.get(eo)), go(e) && u(c.get(Ca))); break; case "delete": - d || (u(r.get(Js)), co(e) && u(r.get(ma))); + d || (u(c.get(eo)), go(e) && u(c.get(Ca))); break; case "set": - co(e) && u(r.get(Js)); + go(e) && u(c.get(eo)); break; } } - Da(); + ja(); } -function so(e) { - const s = Je(e); - return s === e ? s : (bt(s, "iterate", Wo), Bt(e) ? s : s.map(es)); +function ro(e) { + const s = Xe(e); + return s === e ? s : (_t(s, "iterate", Xo), Gt(e) ? s : s.map(ss)); } -function An(e) { - return bt(e = Je(e), "iterate", Wo), e; +function qn(e) { + return _t(e = Xe(e), "iterate", Xo), e; } -function Ms(e, s) { - return xs(e) ? Xs(e) ? po(es(s)) : po(s) : es(s); +function Os(e, s) { + return Rs(e) ? to(e) ? _o(ss(s)) : _o(s) : ss(s); } -const sc = { +const wc = { __proto__: null, [Symbol.iterator]() { - return Yn(this, Symbol.iterator, (e) => Ms(this, e)); + return ia(this, Symbol.iterator, (e) => Os(this, e)); }, concat(...e) { - return so(this).concat( - ...e.map((s) => Ue(s) ? so(s) : s) + return ro(this).concat( + ...e.map((s) => Be(s) ? ro(s) : s) ); }, entries() { - return Yn(this, "entries", (e) => (e[1] = Ms(this, e[1]), e)); + return ia(this, "entries", (e) => (e[1] = Os(this, e[1]), e)); }, every(e, s) { - return hs(this, "every", e, s, void 0, arguments); + return bs(this, "every", e, s, void 0, arguments); }, filter(e, s) { - return hs( + return bs( this, "filter", e, s, - (o) => o.map((n) => Ms(this, n)), + (o) => o.map((n) => Os(this, n)), arguments ); }, find(e, s) { - return hs( + return bs( this, "find", e, s, - (o) => Ms(this, o), + (o) => Os(this, o), arguments ); }, findIndex(e, s) { - return hs(this, "findIndex", e, s, void 0, arguments); + return bs(this, "findIndex", e, s, void 0, arguments); }, findLast(e, s) { - return hs( + return bs( this, "findLast", e, s, - (o) => Ms(this, o), + (o) => Os(this, o), arguments ); }, findLastIndex(e, s) { - return hs(this, "findLastIndex", e, s, void 0, arguments); + return bs(this, "findLastIndex", e, s, void 0, arguments); }, // flat, flatMap could benefit from ARRAY_ITERATE but are not straight-forward to implement forEach(e, s) { - return hs(this, "forEach", e, s, void 0, arguments); + return bs(this, "forEach", e, s, void 0, arguments); }, includes(...e) { - return Jn(this, "includes", e); + return ra(this, "includes", e); }, indexOf(...e) { - return Jn(this, "indexOf", e); + return ra(this, "indexOf", e); }, join(e) { - return so(this).join(e); + return ro(this).join(e); }, // keys() iterator only reads `length`, no optimization required lastIndexOf(...e) { - return Jn(this, "lastIndexOf", e); + return ra(this, "lastIndexOf", e); }, map(e, s) { - return hs(this, "map", e, s, void 0, arguments); + return bs(this, "map", e, s, void 0, arguments); }, pop() { - return xo(this, "pop"); + return Po(this, "pop"); }, push(...e) { - return xo(this, "push", e); + return Po(this, "push", e); }, reduce(e, ...s) { - return al(this, "reduce", e, s); + return vl(this, "reduce", e, s); }, reduceRight(e, ...s) { - return al(this, "reduceRight", e, s); + return vl(this, "reduceRight", e, s); }, shift() { - return xo(this, "shift"); + return Po(this, "shift"); }, // slice could use ARRAY_ITERATE but also seems to beg for range tracking some(e, s) { - return hs(this, "some", e, s, void 0, arguments); + return bs(this, "some", e, s, void 0, arguments); }, splice(...e) { - return xo(this, "splice", e); + return Po(this, "splice", e); }, toReversed() { - return so(this).toReversed(); + return ro(this).toReversed(); }, toSorted(e) { - return so(this).toSorted(e); + return ro(this).toSorted(e); }, toSpliced(...e) { - return so(this).toSpliced(...e); + return ro(this).toSpliced(...e); }, unshift(...e) { - return xo(this, "unshift", e); + return Po(this, "unshift", e); }, values() { - return Yn(this, "values", (e) => Ms(this, e)); + return ia(this, "values", (e) => Os(this, e)); } }; -function Yn(e, s, o) { - const n = An(e), l = n[s](); - return n !== e && !Bt(e) && (l._next = l.next, l.next = () => { - const i = l._next(); - return i.done || (i.value = o(i.value)), i; +function ia(e, s, o) { + const n = qn(e), l = n[s](); + return n !== e && !Gt(e) && (l._next = l.next, l.next = () => { + const r = l._next(); + return r.done || (r.value = o(r.value)), r; }), l; } -const oc = Array.prototype; -function hs(e, s, o, n, l, i) { - const r = An(e), u = r !== e && !Bt(e), d = r[s]; - if (d !== oc[s]) { - const h = d.apply(e, i); - return u ? es(h) : h; +const kc = Array.prototype; +function bs(e, s, o, n, l, r) { + const c = qn(e), u = c !== e && !Gt(e), d = c[s]; + if (d !== kc[s]) { + const g = d.apply(e, r); + return u ? ss(g) : g; } let m = o; - r !== e && (u ? m = function(h, w) { - return o.call(this, Ms(e, h), w, e); - } : o.length > 2 && (m = function(h, w) { - return o.call(this, h, w, e); + c !== e && (u ? m = function(g, w) { + return o.call(this, Os(e, g), w, e); + } : o.length > 2 && (m = function(g, w) { + return o.call(this, g, w, e); })); - const v = d.call(r, m, n); + const v = d.call(c, m, n); return u && l ? l(v) : v; } -function al(e, s, o, n) { - const l = An(e); - let i = o; - return l !== e && (Bt(e) ? o.length > 3 && (i = function(r, u, d) { - return o.call(this, r, u, d, e); - }) : i = function(r, u, d) { - return o.call(this, r, Ms(e, u), d, e); - }), l[s](i, ...n); -} -function Jn(e, s, o) { - const n = Je(e); - bt(n, "iterate", Wo); +function vl(e, s, o, n) { + const l = qn(e); + let r = o; + return l !== e && (Gt(e) ? o.length > 3 && (r = function(c, u, d) { + return o.call(this, c, u, d, e); + }) : r = function(c, u, d) { + return o.call(this, c, Os(e, u), d, e); + }), l[s](r, ...n); +} +function ra(e, s, o) { + const n = Xe(e); + _t(n, "iterate", Xo); const l = n[s](...o); - return (l === -1 || l === !1) && Ua(o[0]) ? (o[0] = Je(o[0]), n[s](...o)) : l; + return (l === -1 || l === !1) && Ja(o[0]) ? (o[0] = Xe(o[0]), n[s](...o)) : l; } -function xo(e, s, o = []) { - $s(), Ma(); - const n = Je(e)[s].apply(e, o); - return Da(), Cs(), n; +function Po(e, s, o = []) { + Es(), Ga(); + const n = Xe(e)[s].apply(e, o); + return ja(), Ts(), n; } -const nc = /* @__PURE__ */ Ia("__proto__,__v_isRef,__isVue"), mi = new Set( - /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((e) => e !== "arguments" && e !== "caller").map((e) => Symbol[e]).filter(Zt) +const _c = /* @__PURE__ */ za("__proto__,__v_isRef,__isVue"), xi = new Set( + /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((e) => e !== "arguments" && e !== "caller").map((e) => Symbol[e]).filter(ts) ); -function ac(e) { - Zt(e) || (e = String(e)); - const s = Je(this); - return bt(s, "has", e), s.hasOwnProperty(e); +function bc(e) { + ts(e) || (e = String(e)); + const s = Xe(this); + return _t(s, "has", e), s.hasOwnProperty(e); } -class vi { +class Si { constructor(s = !1, o = !1) { this._isReadonly = s, this._isShallow = o; } get(s, o, n) { if (o === "__v_skip") return s.__v_skip; - const l = this._isReadonly, i = this._isShallow; + const l = this._isReadonly, r = this._isShallow; if (o === "__v_isReactive") return !l; if (o === "__v_isReadonly") return l; if (o === "__v_isShallow") - return i; + return r; if (o === "__v_raw") - return n === (l ? i ? pc : yi : i ? hi : gi).get(s) || // receiver is not the reactive proxy, but has the same prototype + return n === (l ? r ? Mc : Ri : r ? Ti : Ei).get(s) || // receiver is not the reactive proxy, but has the same prototype // this means the receiver is a user proxy of the reactive proxy Object.getPrototypeOf(s) === Object.getPrototypeOf(n) ? s : void 0; - const r = Ue(s); + const c = Be(s); if (!l) { let d; - if (r && (d = sc[o])) + if (c && (d = wc[o])) return d; if (o === "hasOwnProperty") - return ac; + return bc; } const u = Reflect.get( s, @@ -676,56 +676,56 @@ class vi { // if this is a proxy wrapping a ref, return methods using the raw ref // as receiver so that we don't have to call `toRaw` on the ref in all // its class methods - $t(s) ? s : n + Ct(s) ? s : n ); - if ((Zt(o) ? mi.has(o) : nc(o)) || (l || bt(s, "get", o), i)) + if ((ts(o) ? xi.has(o) : _c(o)) || (l || _t(s, "get", o), r)) return u; - if ($t(u)) { - const d = r && Pa(o) ? u : u.value; - return l && tt(d) ? wn(d) : d; + if (Ct(u)) { + const d = c && Va(o) ? u : u.value; + return l && ot(d) ? Mn(d) : d; } - return tt(u) ? l ? wn(u) : Fs(u) : u; + return ot(u) ? l ? Mn(u) : Ws(u) : u; } } -class pi extends vi { +class Ii extends Si { constructor(s = !1) { super(!1, s); } set(s, o, n, l) { - let i = s[o]; - const r = Ue(s) && Pa(o); + let r = s[o]; + const c = Be(s) && Va(o); if (!this._isShallow) { - const m = xs(i); - if (!Bt(n) && !xs(n) && (i = Je(i), n = Je(n)), !r && $t(i) && !$t(n)) - return m || (i.value = n), !0; + const m = Rs(r); + if (!Gt(n) && !Rs(n) && (r = Xe(r), n = Xe(n)), !c && Ct(r) && !Ct(n)) + return m || (r.value = n), !0; } - const u = r ? Number(o) < s.length : Ze(s, o), d = Reflect.set( + const u = c ? Number(o) < s.length : et(s, o), d = Reflect.set( s, o, n, - $t(s) ? s : l + Ct(s) ? s : l ); - return s === Je(l) && (u ? As(n, i) && bs(s, "set", o, n) : bs(s, "add", o, n)), d; + return s === Xe(l) && (u ? zs(n, r) && xs(s, "set", o, n) : xs(s, "add", o, n)), d; } deleteProperty(s, o) { - const n = Ze(s, o); + const n = et(s, o); s[o]; const l = Reflect.deleteProperty(s, o); - return l && n && bs(s, "delete", o, void 0), l; + return l && n && xs(s, "delete", o, void 0), l; } has(s, o) { const n = Reflect.has(s, o); - return (!Zt(o) || !mi.has(o)) && bt(s, "has", o), n; + return (!ts(o) || !xi.has(o)) && _t(s, "has", o), n; } ownKeys(s) { - return bt( + return _t( s, "iterate", - Ue(s) ? "length" : Js + Be(s) ? "length" : eo ), Reflect.ownKeys(s); } } -class lc extends vi { +class $c extends Si { constructor(s = !1) { super(!0, s); } @@ -736,21 +736,21 @@ class lc extends vi { return !0; } } -const ic = /* @__PURE__ */ new pi(), rc = /* @__PURE__ */ new lc(), cc = /* @__PURE__ */ new pi(!0); -const va = (e) => e, sn = (e) => Reflect.getPrototypeOf(e); -function uc(e, s, o) { +const Cc = /* @__PURE__ */ new Ii(), xc = /* @__PURE__ */ new $c(), Sc = /* @__PURE__ */ new Ii(!0); +const xa = (e) => e, pn = (e) => Reflect.getPrototypeOf(e); +function Ic(e, s, o) { return function(...n) { - const l = this.__v_raw, i = Je(l), r = co(i), u = e === "entries" || e === Symbol.iterator && r, d = e === "keys" && r, m = l[e](...n), v = o ? va : s ? po : es; - return !s && bt( - i, + const l = this.__v_raw, r = Xe(l), c = go(r), u = e === "entries" || e === Symbol.iterator && c, d = e === "keys" && c, m = l[e](...n), v = o ? xa : s ? _o : ss; + return !s && _t( + r, "iterate", - d ? ma : Js + d ? Ca : eo ), { // iterator protocol next() { - const { value: h, done: w } = m.next(); - return w ? { value: h, done: w } : { - value: u ? [v(h[0]), v(h[1])] : v(h), + const { value: g, done: w } = m.next(); + return w ? { value: g, done: w } : { + value: u ? [v(g[0]), v(g[1])] : v(g), done: w }; }, @@ -761,72 +761,72 @@ function uc(e, s, o) { }; }; } -function on(e) { +function gn(e) { return function(...s) { return e === "delete" ? !1 : e === "clear" ? void 0 : this; }; } -function dc(e, s) { +function Ec(e, s) { const o = { get(l) { - const i = this.__v_raw, r = Je(i), u = Je(l); - e || (As(l, u) && bt(r, "get", l), bt(r, "get", u)); - const { has: d } = sn(r), m = s ? va : e ? po : es; - if (d.call(r, l)) - return m(i.get(l)); - if (d.call(r, u)) - return m(i.get(u)); - i !== r && i.get(l); + const r = this.__v_raw, c = Xe(r), u = Xe(l); + e || (zs(l, u) && _t(c, "get", l), _t(c, "get", u)); + const { has: d } = pn(c), m = s ? xa : e ? _o : ss; + if (d.call(c, l)) + return m(r.get(l)); + if (d.call(c, u)) + return m(r.get(u)); + r !== c && r.get(l); }, get size() { const l = this.__v_raw; - return !e && bt(Je(l), "iterate", Js), l.size; + return !e && _t(Xe(l), "iterate", eo), l.size; }, has(l) { - const i = this.__v_raw, r = Je(i), u = Je(l); - return e || (As(l, u) && bt(r, "has", l), bt(r, "has", u)), l === u ? i.has(l) : i.has(l) || i.has(u); + const r = this.__v_raw, c = Xe(r), u = Xe(l); + return e || (zs(l, u) && _t(c, "has", l), _t(c, "has", u)), l === u ? r.has(l) : r.has(l) || r.has(u); }, - forEach(l, i) { - const r = this, u = r.__v_raw, d = Je(u), m = s ? va : e ? po : es; - return !e && bt(d, "iterate", Js), u.forEach((v, h) => l.call(i, m(v), m(h), r)); + forEach(l, r) { + const c = this, u = c.__v_raw, d = Xe(u), m = s ? xa : e ? _o : ss; + return !e && _t(d, "iterate", eo), u.forEach((v, g) => l.call(r, m(v), m(g), c)); } }; return pt( o, e ? { - add: on("add"), - set: on("set"), - delete: on("delete"), - clear: on("clear") + add: gn("add"), + set: gn("set"), + delete: gn("delete"), + clear: gn("clear") } : { add(l) { - !s && !Bt(l) && !xs(l) && (l = Je(l)); - const i = Je(this); - return sn(i).has.call(i, l) || (i.add(l), bs(i, "add", l, l)), this; + !s && !Gt(l) && !Rs(l) && (l = Xe(l)); + const r = Xe(this); + return pn(r).has.call(r, l) || (r.add(l), xs(r, "add", l, l)), this; }, - set(l, i) { - !s && !Bt(i) && !xs(i) && (i = Je(i)); - const r = Je(this), { has: u, get: d } = sn(r); - let m = u.call(r, l); - m || (l = Je(l), m = u.call(r, l)); - const v = d.call(r, l); - return r.set(l, i), m ? As(i, v) && bs(r, "set", l, i) : bs(r, "add", l, i), this; + set(l, r) { + !s && !Gt(r) && !Rs(r) && (r = Xe(r)); + const c = Xe(this), { has: u, get: d } = pn(c); + let m = u.call(c, l); + m || (l = Xe(l), m = u.call(c, l)); + const v = d.call(c, l); + return c.set(l, r), m ? zs(r, v) && xs(c, "set", l, r) : xs(c, "add", l, r), this; }, delete(l) { - const i = Je(this), { has: r, get: u } = sn(i); - let d = r.call(i, l); - d || (l = Je(l), d = r.call(i, l)), u && u.call(i, l); - const m = i.delete(l); - return d && bs(i, "delete", l, void 0), m; + const r = Xe(this), { has: c, get: u } = pn(r); + let d = c.call(r, l); + d || (l = Xe(l), d = c.call(r, l)), u && u.call(r, l); + const m = r.delete(l); + return d && xs(r, "delete", l, void 0), m; }, clear() { - const l = Je(this), i = l.size !== 0, r = l.clear(); - return i && bs( + const l = Xe(this), r = l.size !== 0, c = l.clear(); + return r && xs( l, "clear", void 0, void 0 - ), r; + ), c; } } ), [ @@ -835,26 +835,26 @@ function dc(e, s) { "entries", Symbol.iterator ].forEach((l) => { - o[l] = uc(l, e, s); + o[l] = Ic(l, e, s); }), o; } -function Aa(e, s) { - const o = dc(e, s); - return (n, l, i) => l === "__v_isReactive" ? !e : l === "__v_isReadonly" ? e : l === "__v_raw" ? n : Reflect.get( - Ze(o, l) && l in n ? o : n, +function qa(e, s) { + const o = Ec(e, s); + return (n, l, r) => l === "__v_isReactive" ? !e : l === "__v_isReadonly" ? e : l === "__v_raw" ? n : Reflect.get( + et(o, l) && l in n ? o : n, l, - i + r ); } -const fc = { - get: /* @__PURE__ */ Aa(!1, !1) -}, mc = { - get: /* @__PURE__ */ Aa(!1, !0) -}, vc = { - get: /* @__PURE__ */ Aa(!0, !1) +const Tc = { + get: /* @__PURE__ */ qa(!1, !1) +}, Rc = { + get: /* @__PURE__ */ qa(!1, !0) +}, Pc = { + get: /* @__PURE__ */ qa(!0, !1) }; -const gi = /* @__PURE__ */ new WeakMap(), hi = /* @__PURE__ */ new WeakMap(), yi = /* @__PURE__ */ new WeakMap(), pc = /* @__PURE__ */ new WeakMap(); -function gc(e) { +const Ei = /* @__PURE__ */ new WeakMap(), Ti = /* @__PURE__ */ new WeakMap(), Ri = /* @__PURE__ */ new WeakMap(), Mc = /* @__PURE__ */ new WeakMap(); +function Dc(e) { switch (e) { case "Object": case "Array": @@ -868,231 +868,231 @@ function gc(e) { return 0; } } -function hc(e) { - return e.__v_skip || !Object.isExtensible(e) ? 0 : gc(Br(e)); +function Lc(e) { + return e.__v_skip || !Object.isExtensible(e) ? 0 : Dc(nc(e)); } -function Fs(e) { - return xs(e) ? e : Na( +function Ws(e) { + return Rs(e) ? e : Ya( e, !1, - ic, - fc, - gi + Cc, + Tc, + Ei ); } -function yc(e) { - return Na( +function Ac(e) { + return Ya( e, !1, - cc, - mc, - hi + Sc, + Rc, + Ti ); } -function wn(e) { - return Na( +function Mn(e) { + return Ya( e, !0, - rc, - vc, - yi + xc, + Pc, + Ri ); } -function Na(e, s, o, n, l) { - if (!tt(e) || e.__v_raw && !(s && e.__v_isReactive)) +function Ya(e, s, o, n, l) { + if (!ot(e) || e.__v_raw && !(s && e.__v_isReactive)) return e; - const i = hc(e); - if (i === 0) + const r = Lc(e); + if (r === 0) return e; - const r = l.get(e); - if (r) - return r; + const c = l.get(e); + if (c) + return c; const u = new Proxy( e, - i === 2 ? n : o + r === 2 ? n : o ); return l.set(e, u), u; } -function Xs(e) { - return xs(e) ? Xs(e.__v_raw) : !!(e && e.__v_isReactive); +function to(e) { + return Rs(e) ? to(e.__v_raw) : !!(e && e.__v_isReactive); } -function xs(e) { +function Rs(e) { return !!(e && e.__v_isReadonly); } -function Bt(e) { +function Gt(e) { return !!(e && e.__v_isShallow); } -function Ua(e) { +function Ja(e) { return e ? !!e.__v_raw : !1; } -function Je(e) { +function Xe(e) { const s = e && e.__v_raw; - return s ? Je(s) : e; + return s ? Xe(s) : e; } -function wc(e) { - return !Ze(e, "__v_skip") && Object.isExtensible(e) && ti(e, "__v_skip", !0), e; +function Oc(e) { + return !et(e, "__v_skip") && Object.isExtensible(e) && mi(e, "__v_skip", !0), e; } -const es = (e) => tt(e) ? Fs(e) : e, po = (e) => tt(e) ? wn(e) : e; -function $t(e) { +const ss = (e) => ot(e) ? Ws(e) : e, _o = (e) => ot(e) ? Mn(e) : e; +function Ct(e) { return e ? e.__v_isRef === !0 : !1; } -function k(e) { - return bc(e, !1); +function _(e) { + return Nc(e, !1); } -function bc(e, s) { - return $t(e) ? e : new _c(e, s); +function Nc(e, s) { + return Ct(e) ? e : new Uc(e, s); } -class _c { +class Uc { constructor(s, o) { - this.dep = new Oa(), this.__v_isRef = !0, this.__v_isShallow = !1, this._rawValue = o ? s : Je(s), this._value = o ? s : es(s), this.__v_isShallow = o; + this.dep = new Ka(), this.__v_isRef = !0, this.__v_isShallow = !1, this._rawValue = o ? s : Xe(s), this._value = o ? s : ss(s), this.__v_isShallow = o; } get value() { return this.dep.track(), this._value; } set value(s) { - const o = this._rawValue, n = this.__v_isShallow || Bt(s) || xs(s); - s = n ? s : Je(s), As(s, o) && (this._rawValue = s, this._value = n ? s : es(s), this.dep.trigger()); + const o = this._rawValue, n = this.__v_isShallow || Gt(s) || Rs(s); + s = n ? s : Xe(s), zs(s, o) && (this._rawValue = s, this._value = n ? s : ss(s), this.dep.trigger()); } } -function Fe(e) { - return $t(e) ? e.value : e; +function We(e) { + return Ct(e) ? e.value : e; } -const kc = { - get: (e, s, o) => s === "__v_raw" ? e : Fe(Reflect.get(e, s, o)), +const zc = { + get: (e, s, o) => s === "__v_raw" ? e : We(Reflect.get(e, s, o)), set: (e, s, o, n) => { const l = e[s]; - return $t(l) && !$t(o) ? (l.value = o, !0) : Reflect.set(e, s, o, n); + return Ct(l) && !Ct(o) ? (l.value = o, !0) : Reflect.set(e, s, o, n); } }; -function wi(e) { - return Xs(e) ? e : new Proxy(e, kc); +function Pi(e) { + return to(e) ? e : new Proxy(e, zc); } -class $c { +class Fc { constructor(s, o, n) { - this.fn = s, this.setter = o, this._value = void 0, this.dep = new Oa(this), this.__v_isRef = !0, this.deps = void 0, this.depsTail = void 0, this.flags = 16, this.globalVersion = Vo - 1, this.next = void 0, this.effect = this, this.__v_isReadonly = !o, this.isSSR = n; + this.fn = s, this.setter = o, this._value = void 0, this.dep = new Ka(this), this.__v_isRef = !0, this.deps = void 0, this.depsTail = void 0, this.flags = 16, this.globalVersion = Qo - 1, this.next = void 0, this.effect = this, this.__v_isReadonly = !o, this.isSSR = n; } /** * @internal */ notify() { if (this.flags |= 16, !(this.flags & 8) && // avoid infinite self recursion - nt !== this) - return ii(this, !0), !0; + lt !== this) + return wi(this, !0), !0; } get value() { const s = this.dep.track(); - return ui(this), s && (s.version = this.dep.version), this._value; + return bi(this), s && (s.version = this.dep.version), this._value; } set value(s) { this.setter && this.setter(s); } } -function Cc(e, s, o = !1) { +function Bc(e, s, o = !1) { let n, l; - return Be(e) ? n = e : (n = e.get, l = e.set), new $c(n, l, o); + return Ge(e) ? n = e : (n = e.get, l = e.set), new Fc(n, l, o); } -const nn = {}, bn = /* @__PURE__ */ new WeakMap(); -let qs; -function xc(e, s = !1, o = qs) { +const hn = {}, Dn = /* @__PURE__ */ new WeakMap(); +let Xs; +function Vc(e, s = !1, o = Xs) { if (o) { - let n = bn.get(o); - n || bn.set(o, n = []), n.push(e); - } -} -function Sc(e, s, o = st) { - const { immediate: n, deep: l, once: i, scheduler: r, augmentJob: u, call: d } = o, m = (x) => l ? x : Bt(x) || l === !1 || l === 0 ? _s(x, 1) : _s(x); - let v, h, w, p, _ = !1, S = !1; - if ($t(e) ? (h = () => e.value, _ = Bt(e)) : Xs(e) ? (h = () => m(e), _ = !0) : Ue(e) ? (S = !0, _ = e.some((x) => Xs(x) || Bt(x)), h = () => e.map((x) => { - if ($t(x)) - return x.value; - if (Xs(x)) - return m(x); - if (Be(x)) - return d ? d(x, 2) : x(); - })) : Be(e) ? s ? h = d ? () => d(e, 2) : e : h = () => { + let n = Dn.get(o); + n || Dn.set(o, n = []), n.push(e); + } +} +function Wc(e, s, o = nt) { + const { immediate: n, deep: l, once: r, scheduler: c, augmentJob: u, call: d } = o, m = (E) => l ? E : Gt(E) || l === !1 || l === 0 ? Ss(E, 1) : Ss(E); + let v, g, w, p, k = !1, C = !1; + if (Ct(e) ? (g = () => e.value, k = Gt(e)) : to(e) ? (g = () => m(e), k = !0) : Be(e) ? (C = !0, k = e.some((E) => to(E) || Gt(E)), g = () => e.map((E) => { + if (Ct(E)) + return E.value; + if (to(E)) + return m(E); + if (Ge(E)) + return d ? d(E, 2) : E(); + })) : Ge(e) ? s ? g = d ? () => d(e, 2) : e : g = () => { if (w) { - $s(); + Es(); try { w(); } finally { - Cs(); + Ts(); } } - const x = qs; - qs = v; + const E = Xs; + Xs = v; try { return d ? d(e, 3, [p]) : e(p); } finally { - qs = x; + Xs = E; } - } : h = ms, s && l) { - const x = h, q = l === !0 ? 1 / 0 : l; - h = () => _s(x(), q); + } : g = gs, s && l) { + const E = g, U = l === !0 ? 1 / 0 : l; + g = () => Ss(E(), U); } - const $ = Zr(), P = () => { - v.stop(), $ && $.active && Ta($.effects, v); + const b = gc(), T = () => { + v.stop(), b && b.active && Ba(b.effects, v); }; - if (i && s) { - const x = s; - s = (...q) => { - x(...q), P(); + if (r && s) { + const E = s; + s = (...U) => { + E(...U), T(); }; } - let O = S ? new Array(e.length).fill(nn) : nn; - const T = (x) => { - if (!(!(v.flags & 1) || !v.dirty && !x)) + let D = C ? new Array(e.length).fill(hn) : hn; + const P = (E) => { + if (!(!(v.flags & 1) || !v.dirty && !E)) if (s) { - const q = v.run(); - if (l || _ || (S ? q.some((B, A) => As(B, O[A])) : As(q, O))) { + const U = v.run(); + if (l || k || (C ? U.some((B, V) => zs(B, D[V])) : zs(U, D))) { w && w(); - const B = qs; - qs = v; + const B = Xs; + Xs = v; try { - const A = [ - q, + const V = [ + U, // pass undefined as the old value when it's changed for the first time - O === nn ? void 0 : S && O[0] === nn ? [] : O, + D === hn ? void 0 : C && D[0] === hn ? [] : D, p ]; - O = q, d ? d(s, 3, A) : ( + D = U, d ? d(s, 3, V) : ( // @ts-expect-error - s(...A) + s(...V) ); } finally { - qs = B; + Xs = B; } } } else v.run(); }; - return u && u(T), v = new ai(h), v.scheduler = r ? () => r(T, !1) : T, p = (x) => xc(x, !1, v), w = v.onStop = () => { - const x = bn.get(v); - if (x) { + return u && u(P), v = new hi(g), v.scheduler = c ? () => c(P, !1) : P, p = (E) => Vc(E, !1, v), w = v.onStop = () => { + const E = Dn.get(v); + if (E) { if (d) - d(x, 4); + d(E, 4); else - for (const q of x) q(); - bn.delete(v); + for (const U of E) U(); + Dn.delete(v); } - }, s ? n ? T(!0) : O = v.run() : r ? r(T.bind(null, !0), !0) : v.run(), P.pause = v.pause.bind(v), P.resume = v.resume.bind(v), P.stop = P, P; + }, s ? n ? P(!0) : D = v.run() : c ? c(P.bind(null, !0), !0) : v.run(), T.pause = v.pause.bind(v), T.resume = v.resume.bind(v), T.stop = T, T; } -function _s(e, s = 1 / 0, o) { - if (s <= 0 || !tt(e) || e.__v_skip || (o = o || /* @__PURE__ */ new Map(), (o.get(e) || 0) >= s)) +function Ss(e, s = 1 / 0, o) { + if (s <= 0 || !ot(e) || e.__v_skip || (o = o || /* @__PURE__ */ new Map(), (o.get(e) || 0) >= s)) return e; - if (o.set(e, s), s--, $t(e)) - _s(e.value, s, o); - else if (Ue(e)) + if (o.set(e, s), s--, Ct(e)) + Ss(e.value, s, o); + else if (Be(e)) for (let n = 0; n < e.length; n++) - _s(e[n], s, o); - else if (yo(e) || co(e)) + Ss(e[n], s, o); + else if (Co(e) || go(e)) e.forEach((n) => { - _s(n, s, o); + Ss(n, s, o); }); - else if (ei(e)) { + else if (fi(e)) { for (const n in e) - _s(e[n], s, o); + Ss(e[n], s, o); for (const n of Object.getOwnPropertySymbols(e)) - Object.prototype.propertyIsEnumerable.call(e, n) && _s(e[n], s, o); + Object.prototype.propertyIsEnumerable.call(e, n) && Ss(e[n], s, o); } return e; } @@ -1101,167 +1101,167 @@ function _s(e, s = 1 / 0, o) { * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **/ -function Xo(e, s, o, n) { +function ln(e, s, o, n) { try { return n ? e(...n) : e(); } catch (l) { - Nn(l, s, o); + Yn(l, s, o); } } -function ts(e, s, o, n) { - if (Be(e)) { - const l = Xo(e, s, o, n); - return l && Ql(l) && l.catch((i) => { - Nn(i, s, o); +function os(e, s, o, n) { + if (Ge(e)) { + const l = ln(e, s, o, n); + return l && ui(l) && l.catch((r) => { + Yn(r, s, o); }), l; } - if (Ue(e)) { + if (Be(e)) { const l = []; - for (let i = 0; i < e.length; i++) - l.push(ts(e[i], s, o, n)); + for (let r = 0; r < e.length; r++) + l.push(os(e[r], s, o, n)); return l; } } -function Nn(e, s, o, n = !0) { - const l = s ? s.vnode : null, { errorHandler: i, throwUnhandledErrorInProduction: r } = s && s.appContext.config || st; +function Yn(e, s, o, n = !0) { + const l = s ? s.vnode : null, { errorHandler: r, throwUnhandledErrorInProduction: c } = s && s.appContext.config || nt; if (s) { let u = s.parent; const d = s.proxy, m = `https://vuejs.org/error-reference/#runtime-${o}`; for (; u; ) { const v = u.ec; if (v) { - for (let h = 0; h < v.length; h++) - if (v[h](e, d, m) === !1) + for (let g = 0; g < v.length; g++) + if (v[g](e, d, m) === !1) return; } u = u.parent; } - if (i) { - $s(), Xo(i, null, 10, [ + if (r) { + Es(), ln(r, null, 10, [ e, d, m - ]), Cs(); + ]), Ts(); return; } } - Ic(e, o, l, n, r); + Gc(e, o, l, n, c); } -function Ic(e, s, o, n = !0, l = !1) { +function Gc(e, s, o, n = !0, l = !1) { if (l) throw e; console.error(e); } -const It = []; -let us = -1; -const uo = []; -let Ds = null, ao = 0; -const bi = /* @__PURE__ */ Promise.resolve(); -let _n = null; -function Qo(e) { - const s = _n || bi; +const Rt = []; +let ms = -1; +const ho = []; +let Ns = null, fo = 0; +const Mi = /* @__PURE__ */ Promise.resolve(); +let Ln = null; +function gt(e) { + const s = Ln || Mi; return e ? s.then(this ? e.bind(this) : e) : s; } -function Ec(e) { - let s = us + 1, o = It.length; +function jc(e) { + let s = ms + 1, o = Rt.length; for (; s < o; ) { - const n = s + o >>> 1, l = It[n], i = Go(l); - i < e || i === e && l.flags & 2 ? s = n + 1 : o = n; + const n = s + o >>> 1, l = Rt[n], r = Zo(l); + r < e || r === e && l.flags & 2 ? s = n + 1 : o = n; } return s; } -function za(e) { +function Qa(e) { if (!(e.flags & 1)) { - const s = Go(e), o = It[It.length - 1]; + const s = Zo(e), o = Rt[Rt.length - 1]; !o || // fast path when the job id is larger than the tail - !(e.flags & 2) && s >= Go(o) ? It.push(e) : It.splice(Ec(s), 0, e), e.flags |= 1, _i(); + !(e.flags & 2) && s >= Zo(o) ? Rt.push(e) : Rt.splice(jc(s), 0, e), e.flags |= 1, Di(); } } -function _i() { - _n || (_n = bi.then($i)); +function Di() { + Ln || (Ln = Mi.then(Ai)); } -function Tc(e) { - Ue(e) ? uo.push(...e) : Ds && e.id === -1 ? Ds.splice(ao + 1, 0, e) : e.flags & 1 || (uo.push(e), e.flags |= 1), _i(); +function Hc(e) { + Be(e) ? ho.push(...e) : Ns && e.id === -1 ? Ns.splice(fo + 1, 0, e) : e.flags & 1 || (ho.push(e), e.flags |= 1), Di(); } -function ll(e, s, o = us + 1) { - for (; o < It.length; o++) { - const n = It[o]; +function pl(e, s, o = ms + 1) { + for (; o < Rt.length; o++) { + const n = Rt[o]; if (n && n.flags & 2) { if (e && n.id !== e.uid) continue; - It.splice(o, 1), o--, n.flags & 4 && (n.flags &= -2), n(), n.flags & 4 || (n.flags &= -2); + Rt.splice(o, 1), o--, n.flags & 4 && (n.flags &= -2), n(), n.flags & 4 || (n.flags &= -2); } } } -function ki(e) { - if (uo.length) { - const s = [...new Set(uo)].sort( - (o, n) => Go(o) - Go(n) +function Li(e) { + if (ho.length) { + const s = [...new Set(ho)].sort( + (o, n) => Zo(o) - Zo(n) ); - if (uo.length = 0, Ds) { - Ds.push(...s); + if (ho.length = 0, Ns) { + Ns.push(...s); return; } - for (Ds = s, ao = 0; ao < Ds.length; ao++) { - const o = Ds[ao]; + for (Ns = s, fo = 0; fo < Ns.length; fo++) { + const o = Ns[fo]; o.flags & 4 && (o.flags &= -2), o.flags & 8 || o(), o.flags &= -2; } - Ds = null, ao = 0; + Ns = null, fo = 0; } } -const Go = (e) => e.id == null ? e.flags & 2 ? -1 : 1 / 0 : e.id; -function $i(e) { +const Zo = (e) => e.id == null ? e.flags & 2 ? -1 : 1 / 0 : e.id; +function Ai(e) { try { - for (us = 0; us < It.length; us++) { - const s = It[us]; - s && !(s.flags & 8) && (s.flags & 4 && (s.flags &= -2), Xo( + for (ms = 0; ms < Rt.length; ms++) { + const s = Rt[ms]; + s && !(s.flags & 8) && (s.flags & 4 && (s.flags &= -2), ln( s, s.i, s.i ? 15 : 14 ), s.flags & 4 || (s.flags &= -2)); } } finally { - for (; us < It.length; us++) { - const s = It[us]; + for (; ms < Rt.length; ms++) { + const s = Rt[ms]; s && (s.flags &= -2); } - us = -1, It.length = 0, ki(), _n = null, (It.length || uo.length) && $i(); + ms = -1, Rt.length = 0, Li(), Ln = null, (Rt.length || ho.length) && Ai(); } } -let yt = null, Ci = null; -function kn(e) { - const s = yt; - return yt = e, Ci = e && e.type.__scopeId || null, s; +let wt = null, Oi = null; +function An(e) { + const s = wt; + return wt = e, Oi = e && e.type.__scopeId || null, s; } -function g(e, s = yt, o) { +function h(e, s = wt, o) { if (!s || e._n) return e; const n = (...l) => { - n._d && xn(-1); - const i = kn(s); - let r; + n._d && Un(-1); + const r = An(s); + let c; try { - r = e(...l); + c = e(...l); } finally { - kn(i), n._d && xn(1); + An(r), n._d && Un(1); } - return r; + return c; }; return n._n = !0, n._c = !0, n._d = !0, n; } function qe(e, s) { - if (yt === null) + if (wt === null) return e; - const o = Vn(yt), n = e.dirs || (e.dirs = []); + const o = ea(wt), n = e.dirs || (e.dirs = []); for (let l = 0; l < s.length; l++) { - let [i, r, u, d = st] = s[l]; - i && (Be(i) && (i = { - mounted: i, - updated: i - }), i.deep && _s(r), n.push({ - dir: i, + let [r, c, u, d = nt] = s[l]; + r && (Ge(r) && (r = { + mounted: r, + updated: r + }), r.deep && Ss(c), n.push({ + dir: r, instance: o, - value: r, + value: c, oldValue: void 0, arg: u, modifiers: d @@ -1269,154 +1269,154 @@ function qe(e, s) { } return e; } -function Gs(e, s, o, n) { - const l = e.dirs, i = s && s.dirs; - for (let r = 0; r < l.length; r++) { - const u = l[r]; - i && (u.oldValue = i[r].value); +function qs(e, s, o, n) { + const l = e.dirs, r = s && s.dirs; + for (let c = 0; c < l.length; c++) { + const u = l[c]; + r && (u.oldValue = r[c].value); let d = u.dir[n]; - d && ($s(), ts(d, o, 8, [ + d && (Es(), os(d, o, 8, [ e.el, u, e, s - ]), Cs()); + ]), Ts()); } } -const xi = Symbol("_vte"), Si = (e) => e.__isTeleport, Oo = (e) => e && (e.disabled || e.disabled === ""), il = (e) => e && (e.defer || e.defer === ""), rl = (e) => typeof SVGElement < "u" && e instanceof SVGElement, cl = (e) => typeof MathMLElement == "function" && e instanceof MathMLElement, pa = (e, s) => { +const Ni = Symbol("_vte"), Ui = (e) => e.__isTeleport, Wo = (e) => e && (e.disabled || e.disabled === ""), gl = (e) => e && (e.defer || e.defer === ""), hl = (e) => typeof SVGElement < "u" && e instanceof SVGElement, yl = (e) => typeof MathMLElement == "function" && e instanceof MathMLElement, Sa = (e, s) => { const o = e && e.to; return ut(o) ? s ? s(o) : null : o; -}, Ii = { +}, zi = { name: "Teleport", __isTeleport: !0, - process(e, s, o, n, l, i, r, u, d, m) { + process(e, s, o, n, l, r, c, u, d, m) { const { mc: v, - pc: h, + pc: g, pbc: w, - o: { insert: p, querySelector: _, createText: S, createComment: $ } - } = m, P = Oo(s.props); - let { shapeFlag: O, children: T, dynamicChildren: x } = s; + o: { insert: p, querySelector: k, createText: C, createComment: b } + } = m, T = Wo(s.props); + let { shapeFlag: D, children: P, dynamicChildren: E } = s; if (e == null) { - const q = s.el = S(""), B = s.anchor = S(""); - p(q, o, n), p(B, o, n); - const A = (E, L) => { - O & 16 && v( - T, - E, + const U = s.el = C(""), B = s.anchor = C(""); + p(U, o, n), p(B, o, n); + const V = (I, L) => { + D & 16 && v( + P, + I, L, l, - i, r, + c, u, d ); - }, I = () => { - const E = s.target = pa(s.props, _), L = Ei(E, s, S, p); - E && (r !== "svg" && rl(E) ? r = "svg" : r !== "mathml" && cl(E) && (r = "mathml"), l && l.isCE && (l.ce._teleportTargets || (l.ce._teleportTargets = /* @__PURE__ */ new Set())).add(E), P || (A(E, L), mn(s, !1))); + }, S = () => { + const I = s.target = Sa(s.props, k), L = Fi(I, s, C, p); + I && (c !== "svg" && hl(I) ? c = "svg" : c !== "mathml" && yl(I) && (c = "mathml"), l && l.isCE && (l.ce._teleportTargets || (l.ce._teleportTargets = /* @__PURE__ */ new Set())).add(I), T || (V(I, L), Sn(s, !1))); }; - P && (A(o, B), mn(s, !0)), il(s.props) ? (s.el.__isMounted = !1, St(() => { - I(), delete s.el.__isMounted; - }, i)) : I(); + T && (V(o, B), Sn(s, !0)), gl(s.props) ? (s.el.__isMounted = !1, Et(() => { + S(), delete s.el.__isMounted; + }, r)) : S(); } else { - if (il(s.props) && e.el.__isMounted === !1) { - St(() => { - Ii.process( + if (gl(s.props) && e.el.__isMounted === !1) { + Et(() => { + zi.process( e, s, o, n, l, - i, r, + c, u, d, m ); - }, i); + }, r); return; } s.el = e.el, s.targetStart = e.targetStart; - const q = s.anchor = e.anchor, B = s.target = e.target, A = s.targetAnchor = e.targetAnchor, I = Oo(e.props), E = I ? o : B, L = I ? q : A; - if (r === "svg" || rl(B) ? r = "svg" : (r === "mathml" || cl(B)) && (r = "mathml"), x ? (w( + const U = s.anchor = e.anchor, B = s.target = e.target, V = s.targetAnchor = e.targetAnchor, S = Wo(e.props), I = S ? o : B, L = S ? U : V; + if (c === "svg" || hl(B) ? c = "svg" : (c === "mathml" || yl(B)) && (c = "mathml"), E ? (w( e.dynamicChildren, - x, E, + I, l, - i, r, + c, u - ), Ga(e, s, !0)) : d || h( + ), sl(e, s, !0)) : d || g( e, s, - E, + I, L, l, - i, r, + c, u, !1 - ), P) - I ? s.props && e.props && s.props.to !== e.props.to && (s.props.to = e.props.to) : an( + ), T) + S ? s.props && e.props && s.props.to !== e.props.to && (s.props.to = e.props.to) : yn( s, o, - q, + U, m, 1 ); else if ((s.props && s.props.to) !== (e.props && e.props.to)) { - const re = s.target = pa( + const Z = s.target = Sa( s.props, - _ + k ); - re && an( + Z && yn( s, - re, + Z, null, m, 0 ); - } else I && an( + } else S && yn( s, B, - A, + V, m, 1 ); - mn(s, P); + Sn(s, T); } }, - remove(e, s, o, { um: n, o: { remove: l } }, i) { + remove(e, s, o, { um: n, o: { remove: l } }, r) { const { - shapeFlag: r, + shapeFlag: c, children: u, anchor: d, targetStart: m, targetAnchor: v, - target: h, + target: g, props: w } = e; - if (h && (l(m), l(v)), i && l(d), r & 16) { - const p = i || !Oo(w); - for (let _ = 0; _ < u.length; _++) { - const S = u[_]; + if (g && (l(m), l(v)), r && l(d), c & 16) { + const p = r || !Wo(w); + for (let k = 0; k < u.length; k++) { + const C = u[k]; n( - S, + C, s, o, p, - !!S.dynamicChildren + !!C.dynamicChildren ); } } }, - move: an, - hydrate: Pc + move: yn, + hydrate: Kc }; -function an(e, s, o, { o: { insert: n }, m: l }, i = 2) { - i === 0 && n(e.targetAnchor, s, o); - const { el: r, anchor: u, shapeFlag: d, children: m, props: v } = e, h = i === 2; - if (h && n(r, s, o), (!h || Oo(v)) && d & 16) +function yn(e, s, o, { o: { insert: n }, m: l }, r = 2) { + r === 0 && n(e.targetAnchor, s, o); + const { el: c, anchor: u, shapeFlag: d, children: m, props: v } = e, g = r === 2; + if (g && n(c, s, o), (!g || Wo(v)) && d & 16) for (let w = 0; w < m.length; w++) l( m[w], @@ -1424,66 +1424,66 @@ function an(e, s, o, { o: { insert: n }, m: l }, i = 2) { o, 2 ); - h && n(u, s, o); -} -function Pc(e, s, o, n, l, i, { - o: { nextSibling: r, parentNode: u, querySelector: d, insert: m, createText: v } -}, h) { - function w(S, $, P, O) { - $.anchor = h( - r(S), - $, - u(S), + g && n(u, s, o); +} +function Kc(e, s, o, n, l, r, { + o: { nextSibling: c, parentNode: u, querySelector: d, insert: m, createText: v } +}, g) { + function w(C, b, T, D) { + b.anchor = g( + c(C), + b, + u(C), o, n, l, - i - ), $.targetStart = P, $.targetAnchor = O; + r + ), b.targetStart = T, b.targetAnchor = D; } - const p = s.target = pa( + const p = s.target = Sa( s.props, d - ), _ = Oo(s.props); + ), k = Wo(s.props); if (p) { - const S = p._lpa || p.firstChild; + const C = p._lpa || p.firstChild; if (s.shapeFlag & 16) - if (_) + if (k) w( e, s, - S, - S && r(S) + C, + C && c(C) ); else { - s.anchor = r(e); - let $ = S; - for (; $; ) { - if ($ && $.nodeType === 8) { - if ($.data === "teleport start anchor") - s.targetStart = $; - else if ($.data === "teleport anchor") { - s.targetAnchor = $, p._lpa = s.targetAnchor && r(s.targetAnchor); + s.anchor = c(e); + let b = C; + for (; b; ) { + if (b && b.nodeType === 8) { + if (b.data === "teleport start anchor") + s.targetStart = b; + else if (b.data === "teleport anchor") { + s.targetAnchor = b, p._lpa = s.targetAnchor && c(s.targetAnchor); break; } } - $ = r($); + b = c(b); } - s.targetAnchor || Ei(p, s, v, m), h( - S && r(S), + s.targetAnchor || Fi(p, s, v, m), g( + C && c(C), s, p, o, n, l, - i + r ); } - mn(s, _); - } else _ && s.shapeFlag & 16 && w(e, s, e, r(e)); - return s.anchor && r(s.anchor); + Sn(s, k); + } else k && s.shapeFlag & 16 && w(e, s, e, c(e)); + return s.anchor && c(s.anchor); } -const wt = Ii; -function mn(e, s) { +const kt = zi; +function Sn(e, s) { const o = e.ctx; if (o && o.ut) { let n, l; @@ -1492,189 +1492,189 @@ function mn(e, s) { o.ut(); } } -function Ei(e, s, o, n) { - const l = s.targetStart = o(""), i = s.targetAnchor = o(""); - return l[xi] = i, e && (n(l, e), n(i, e)), i; +function Fi(e, s, o, n) { + const l = s.targetStart = o(""), r = s.targetAnchor = o(""); + return l[Ni] = r, e && (n(l, e), n(r, e)), r; } -const ws = Symbol("_leaveCb"), ln = Symbol("_enterCb"); -function Ti() { +const Cs = Symbol("_leaveCb"), wn = Symbol("_enterCb"); +function Bi() { const e = { isMounted: !1, isLeaving: !1, isUnmounting: !1, leavingVNodes: /* @__PURE__ */ new Map() }; - return et(() => { + return Qe(() => { e.isMounted = !0; - }), Ni(() => { + }), Yi(() => { e.isUnmounting = !0; }), e; } -const zt = [Function, Array], Pi = { +const Vt = [Function, Array], Vi = { mode: String, appear: Boolean, persisted: Boolean, // enter - onBeforeEnter: zt, - onEnter: zt, - onAfterEnter: zt, - onEnterCancelled: zt, + onBeforeEnter: Vt, + onEnter: Vt, + onAfterEnter: Vt, + onEnterCancelled: Vt, // leave - onBeforeLeave: zt, - onLeave: zt, - onAfterLeave: zt, - onLeaveCancelled: zt, + onBeforeLeave: Vt, + onLeave: Vt, + onAfterLeave: Vt, + onLeaveCancelled: Vt, // appear - onBeforeAppear: zt, - onAppear: zt, - onAfterAppear: zt, - onAppearCancelled: zt -}, Ri = (e) => { + onBeforeAppear: Vt, + onAppear: Vt, + onAfterAppear: Vt, + onAppearCancelled: Vt +}, Wi = (e) => { const s = e.subTree; - return s.component ? Ri(s.component) : s; -}, Rc = { + return s.component ? Wi(s.component) : s; +}, qc = { name: "BaseTransition", - props: Pi, + props: Vi, setup(e, { slots: s }) { - const o = Ha(), n = Ti(); + const o = nl(), n = Bi(); return () => { - const l = s.default && Fa(s.default(), !0); + const l = s.default && Xa(s.default(), !0); if (!l || !l.length) return; - const i = Mi(l), r = Je(e), { mode: u } = r; + const r = Gi(l), c = Xe(e), { mode: u } = c; if (n.isLeaving) - return Xn(i); - const d = ul(i); + return ca(r); + const d = wl(r); if (!d) - return Xn(i); - let m = jo( + return ca(r); + let m = en( d, - r, + c, n, o, // #11061, ensure enterHooks is fresh after clone - (h) => m = h + (g) => m = g ); - d.type !== _t && Zs(d, m); - let v = o.subTree && ul(o.subTree); - if (v && v.type !== _t && !Ys(v, d) && Ri(o).type !== _t) { - let h = jo( + d.type !== bt && oo(d, m); + let v = o.subTree && wl(o.subTree); + if (v && v.type !== bt && !Zs(v, d) && Wi(o).type !== bt) { + let g = en( v, - r, + c, n, o ); - if (Zs(v, h), u === "out-in" && d.type !== _t) - return n.isLeaving = !0, h.afterLeave = () => { - n.isLeaving = !1, o.job.flags & 8 || o.update(), delete h.afterLeave, v = void 0; - }, Xn(i); - u === "in-out" && d.type !== _t ? h.delayLeave = (w, p, _) => { - const S = Di( + if (oo(v, g), u === "out-in" && d.type !== bt) + return n.isLeaving = !0, g.afterLeave = () => { + n.isLeaving = !1, o.job.flags & 8 || o.update(), delete g.afterLeave, v = void 0; + }, ca(r); + u === "in-out" && d.type !== bt ? g.delayLeave = (w, p, k) => { + const C = ji( n, v ); - S[String(v.key)] = v, w[ws] = () => { - p(), w[ws] = void 0, delete m.delayedLeave, v = void 0; + C[String(v.key)] = v, w[Cs] = () => { + p(), w[Cs] = void 0, delete m.delayedLeave, v = void 0; }, m.delayedLeave = () => { - _(), delete m.delayedLeave, v = void 0; + k(), delete m.delayedLeave, v = void 0; }; } : v = void 0; } else v && (v = void 0); - return i; + return r; }; } }; -function Mi(e) { +function Gi(e) { let s = e[0]; if (e.length > 1) { for (const o of e) - if (o.type !== _t) { + if (o.type !== bt) { s = o; break; } } return s; } -const Mc = Rc; -function Di(e, s) { +const Yc = qc; +function ji(e, s) { const { leavingVNodes: o } = e; let n = o.get(s.type); return n || (n = /* @__PURE__ */ Object.create(null), o.set(s.type, n)), n; } -function jo(e, s, o, n, l) { +function en(e, s, o, n, l) { const { - appear: i, - mode: r, + appear: r, + mode: c, persisted: u = !1, onBeforeEnter: d, onEnter: m, onAfterEnter: v, - onEnterCancelled: h, + onEnterCancelled: g, onBeforeLeave: w, onLeave: p, - onAfterLeave: _, - onLeaveCancelled: S, - onBeforeAppear: $, - onAppear: P, - onAfterAppear: O, - onAppearCancelled: T - } = s, x = String(e.key), q = Di(o, e), B = (E, L) => { - E && ts( - E, + onAfterLeave: k, + onLeaveCancelled: C, + onBeforeAppear: b, + onAppear: T, + onAfterAppear: D, + onAppearCancelled: P + } = s, E = String(e.key), U = ji(o, e), B = (I, L) => { + I && os( + I, n, 9, L ); - }, A = (E, L) => { - const re = L[1]; - B(E, L), Ue(E) ? E.every((Y) => Y.length <= 1) && re() : E.length <= 1 && re(); - }, I = { - mode: r, + }, V = (I, L) => { + const Z = L[1]; + B(I, L), Be(I) ? I.every((W) => W.length <= 1) && Z() : I.length <= 1 && Z(); + }, S = { + mode: c, persisted: u, - beforeEnter(E) { + beforeEnter(I) { let L = d; if (!o.isMounted) - if (i) - L = $ || d; + if (r) + L = b || d; else return; - E[ws] && E[ws]( + I[Cs] && I[Cs]( !0 /* cancelled */ ); - const re = q[x]; - re && Ys(e, re) && re.el[ws] && re.el[ws](), B(L, [E]); + const Z = U[E]; + Z && Zs(e, Z) && Z.el[Cs] && Z.el[Cs](), B(L, [I]); }, - enter(E) { - let L = m, re = v, Y = h; + enter(I) { + let L = m, Z = v, W = g; if (!o.isMounted) - if (i) - L = P || m, re = O || v, Y = T || h; + if (r) + L = T || m, Z = D || v, W = P || g; else return; - let H = !1; - const te = E[ln] = (Q) => { - H || (H = !0, Q ? B(Y, [E]) : B(re, [E]), I.delayedLeave && I.delayedLeave(), E[ln] = void 0); + let A = !1; + const j = I[wn] = (X) => { + A || (A = !0, X ? B(W, [I]) : B(Z, [I]), S.delayedLeave && S.delayedLeave(), I[wn] = void 0); }; - L ? A(L, [E, te]) : te(); + L ? V(L, [I, j]) : j(); }, - leave(E, L) { - const re = String(e.key); - if (E[ln] && E[ln]( + leave(I, L) { + const Z = String(e.key); + if (I[wn] && I[wn]( !0 /* cancelled */ ), o.isUnmounting) return L(); - B(w, [E]); - let Y = !1; - const H = E[ws] = (te) => { - Y || (Y = !0, L(), te ? B(S, [E]) : B(_, [E]), E[ws] = void 0, q[re] === e && delete q[re]); + B(w, [I]); + let W = !1; + const A = I[Cs] = (j) => { + W || (W = !0, L(), j ? B(C, [I]) : B(k, [I]), I[Cs] = void 0, U[Z] === e && delete U[Z]); }; - q[re] = e, p ? A(p, [E, H]) : H(); + U[Z] = e, p ? V(p, [I, A]) : A(); }, - clone(E) { - const L = jo( - E, + clone(I) { + const L = en( + I, s, o, n, @@ -1683,60 +1683,60 @@ function jo(e, s, o, n, l) { return l && l(L), L; } }; - return I; + return S; } -function Xn(e) { - if (Un(e)) - return e = Ns(e), e.children = null, e; +function ca(e) { + if (Jn(e)) + return e = Fs(e), e.children = null, e; } -function ul(e) { - if (!Un(e)) - return Si(e.type) && e.children ? Mi(e.children) : e; +function wl(e) { + if (!Jn(e)) + return Ui(e.type) && e.children ? Gi(e.children) : e; if (e.component) return e.component.subTree; const { shapeFlag: s, children: o } = e; if (o) { if (s & 16) return o[0]; - if (s & 32 && Be(o.default)) + if (s & 32 && Ge(o.default)) return o.default(); } } -function Zs(e, s) { - e.shapeFlag & 6 && e.component ? (e.transition = s, Zs(e.component.subTree, s)) : e.shapeFlag & 128 ? (e.ssContent.transition = s.clone(e.ssContent), e.ssFallback.transition = s.clone(e.ssFallback)) : e.transition = s; +function oo(e, s) { + e.shapeFlag & 6 && e.component ? (e.transition = s, oo(e.component.subTree, s)) : e.shapeFlag & 128 ? (e.ssContent.transition = s.clone(e.ssContent), e.ssFallback.transition = s.clone(e.ssFallback)) : e.transition = s; } -function Fa(e, s = !1, o) { +function Xa(e, s = !1, o) { let n = [], l = 0; - for (let i = 0; i < e.length; i++) { - let r = e[i]; - const u = o == null ? r.key : String(o) + String(r.key != null ? r.key : i); - r.type === j ? (r.patchFlag & 128 && l++, n = n.concat( - Fa(r.children, s, u) - )) : (s || r.type !== _t) && n.push(u != null ? Ns(r, { key: u }) : r); + for (let r = 0; r < e.length; r++) { + let c = e[r]; + const u = o == null ? c.key : String(o) + String(c.key != null ? c.key : r); + c.type === H ? (c.patchFlag & 128 && l++, n = n.concat( + Xa(c.children, s, u) + )) : (s || c.type !== bt) && n.push(u != null ? Fs(c, { key: u }) : c); } if (l > 1) - for (let i = 0; i < n.length; i++) - n[i].patchFlag = -2; + for (let r = 0; r < n.length; r++) + n[r].patchFlag = -2; return n; } // @__NO_SIDE_EFFECTS__ function fe(e, s) { - return Be(e) ? ( + return Ge(e) ? ( // #8236: extend call and options.name access are considered side-effects // by Rollup, so we have to wrap it in a pure-annotated IIFE. pt({ name: e.name }, s, { setup: e }) ) : e; } -function Li(e) { +function Hi(e) { e.ids = [e.ids[0] + e.ids[2]++ + "-", 0, 0]; } -const $n = /* @__PURE__ */ new WeakMap(); -function Ao(e, s, o, n, l = !1) { - if (Ue(e)) { +const On = /* @__PURE__ */ new WeakMap(); +function Go(e, s, o, n, l = !1) { + if (Be(e)) { e.forEach( - (_, S) => Ao( - _, - s && (Ue(s) ? s[S] : s), + (k, C) => Go( + k, + s && (Be(s) ? s[C] : s), o, n, l @@ -1744,64 +1744,64 @@ function Ao(e, s, o, n, l = !1) { ); return; } - if (fo(n) && !l) { - n.shapeFlag & 512 && n.type.__asyncResolved && n.component.subTree.component && Ao(e, s, o, n.component.subTree); + if (yo(n) && !l) { + n.shapeFlag & 512 && n.type.__asyncResolved && n.component.subTree.component && Go(e, s, o, n.component.subTree); return; } - const i = n.shapeFlag & 4 ? Vn(n.component) : n.el, r = l ? null : i, { i: u, r: d } = e, m = s && s.r, v = u.refs === st ? u.refs = {} : u.refs, h = u.setupState, w = Je(h), p = h === st ? Xl : (_) => Ze(w, _); + const r = n.shapeFlag & 4 ? ea(n.component) : n.el, c = l ? null : r, { i: u, r: d } = e, m = s && s.r, v = u.refs === nt ? u.refs = {} : u.refs, g = u.setupState, w = Xe(g), p = g === nt ? ci : (k) => et(w, k); if (m != null && m !== d) { - if (dl(s), ut(m)) - v[m] = null, p(m) && (h[m] = null); - else if ($t(m)) { + if (kl(s), ut(m)) + v[m] = null, p(m) && (g[m] = null); + else if (Ct(m)) { m.value = null; - const _ = s; - _.k && (v[_.k] = null); + const k = s; + k.k && (v[k.k] = null); } } - if (Be(d)) - Xo(d, u, 12, [r, v]); + if (Ge(d)) + ln(d, u, 12, [c, v]); else { - const _ = ut(d), S = $t(d); - if (_ || S) { - const $ = () => { + const k = ut(d), C = Ct(d); + if (k || C) { + const b = () => { if (e.f) { - const P = _ ? p(d) ? h[d] : v[d] : d.value; + const T = k ? p(d) ? g[d] : v[d] : d.value; if (l) - Ue(P) && Ta(P, i); - else if (Ue(P)) - P.includes(i) || P.push(i); - else if (_) - v[d] = [i], p(d) && (h[d] = v[d]); + Be(T) && Ba(T, r); + else if (Be(T)) + T.includes(r) || T.push(r); + else if (k) + v[d] = [r], p(d) && (g[d] = v[d]); else { - const O = [i]; - d.value = O, e.k && (v[e.k] = O); + const D = [r]; + d.value = D, e.k && (v[e.k] = D); } - } else _ ? (v[d] = r, p(d) && (h[d] = r)) : S && (d.value = r, e.k && (v[e.k] = r)); + } else k ? (v[d] = c, p(d) && (g[d] = c)) : C && (d.value = c, e.k && (v[e.k] = c)); }; - if (r) { - const P = () => { - $(), $n.delete(e); + if (c) { + const T = () => { + b(), On.delete(e); }; - P.id = -1, $n.set(e, P), St(P, o); + T.id = -1, On.set(e, T), Et(T, o); } else - dl(e), $(); + kl(e), b(); } } } -function dl(e) { - const s = $n.get(e); - s && (s.flags |= 8, $n.delete(e)); +function kl(e) { + const s = On.get(e); + s && (s.flags |= 8, On.delete(e)); } -On().requestIdleCallback; -On().cancelIdleCallback; -const fo = (e) => !!e.type.__asyncLoader, Un = (e) => e.type.__isKeepAlive; -function Dc(e, s) { - Oi(e, "a", s); +Kn().requestIdleCallback; +Kn().cancelIdleCallback; +const yo = (e) => !!e.type.__asyncLoader, Jn = (e) => e.type.__isKeepAlive; +function Jc(e, s) { + Ki(e, "a", s); } -function Lc(e, s) { - Oi(e, "da", s); +function Qc(e, s) { + Ki(e, "da", s); } -function Oi(e, s, o = kt) { +function Ki(e, s, o = $t) { const n = e.__wdc || (e.__wdc = () => { let l = o; for (; l; ) { @@ -1811,152 +1811,152 @@ function Oi(e, s, o = kt) { } return e(); }); - if (zn(s, n, o), o) { + if (Qn(s, n, o), o) { let l = o.parent; for (; l && l.parent; ) - Un(l.parent.vnode) && Oc(n, s, o, l), l = l.parent; + Jn(l.parent.vnode) && Xc(n, s, o, l), l = l.parent; } } -function Oc(e, s, o, n) { - const l = zn( +function Xc(e, s, o, n) { + const l = Qn( s, e, n, !0 /* prepend */ ); - wo(() => { - Ta(n[s], l); + Gs(() => { + Ba(n[s], l); }, o); } -function zn(e, s, o = kt, n = !1) { +function Qn(e, s, o = $t, n = !1) { if (o) { - const l = o[e] || (o[e] = []), i = s.__weh || (s.__weh = (...r) => { - $s(); - const u = Zo(o), d = ts(s, o, e, r); - return u(), Cs(), d; + const l = o[e] || (o[e] = []), r = s.__weh || (s.__weh = (...c) => { + Es(); + const u = rn(o), d = os(s, o, e, c); + return u(), Ts(), d; }); - return n ? l.unshift(i) : l.push(i), i; + return n ? l.unshift(r) : l.push(r), r; } } -const Ss = (e) => (s, o = kt) => { - (!qo || e === "sp") && zn(e, (...n) => s(...n), o); -}, Ac = Ss("bm"), et = Ss("m"), Nc = Ss( +const Ps = (e) => (s, o = $t) => { + (!on || e === "sp") && Qn(e, (...n) => s(...n), o); +}, Zc = Ps("bm"), Qe = Ps("m"), eu = Ps( "bu" -), Ai = Ss("u"), Ni = Ss( +), qi = Ps("u"), Yi = Ps( "bum" -), wo = Ss("um"), Uc = Ss( +), Gs = Ps("um"), tu = Ps( "sp" -), zc = Ss("rtg"), Fc = Ss("rtc"); -function Bc(e, s = kt) { - zn("ec", e, s); +), su = Ps("rtg"), ou = Ps("rtc"); +function nu(e, s = $t) { + Qn("ec", e, s); } -const Vc = "components", Ui = Symbol.for("v-ndc"); -function Ba(e) { - return ut(e) ? Wc(Vc, e, !1) || e : e || Ui; +const au = "components", Ji = Symbol.for("v-ndc"); +function Za(e) { + return ut(e) ? lu(au, e, !1) || e : e || Ji; } -function Wc(e, s, o = !0, n = !1) { - const l = yt || kt; +function lu(e, s, o = !0, n = !1) { + const l = wt || $t; if (l) { - const i = l.type; + const r = l.type; { - const u = Ru( - i, + const u = qu( + r, !1 ); - if (u && (u === s || u === Wt(s) || u === Dn(Wt(s)))) - return i; + if (u && (u === s || u === Kt(s) || u === jn(Kt(s)))) + return r; } - const r = ( + const c = ( // local registration // check instance[type] first which is resolved for options API - fl(l[e] || i[e], s) || // global registration - fl(l.appContext[e], s) + _l(l[e] || r[e], s) || // global registration + _l(l.appContext[e], s) ); - return !r && n ? i : r; + return !c && n ? r : c; } } -function fl(e, s) { - return e && (e[s] || e[Wt(s)] || e[Dn(Wt(s))]); +function _l(e, s) { + return e && (e[s] || e[Kt(s)] || e[jn(Kt(s))]); } -function pe(e, s, o, n) { +function ve(e, s, o, n) { let l; - const i = o, r = Ue(e); - if (r || ut(e)) { - const u = r && Xs(e); + const r = o, c = Be(e); + if (c || ut(e)) { + const u = c && to(e); let d = !1, m = !1; - u && (d = !Bt(e), m = xs(e), e = An(e)), l = new Array(e.length); - for (let v = 0, h = e.length; v < h; v++) + u && (d = !Gt(e), m = Rs(e), e = qn(e)), l = new Array(e.length); + for (let v = 0, g = e.length; v < g; v++) l[v] = s( - d ? m ? po(es(e[v])) : es(e[v]) : e[v], + d ? m ? _o(ss(e[v])) : ss(e[v]) : e[v], v, void 0, - i + r ); } else if (typeof e == "number") { l = new Array(e); for (let u = 0; u < e; u++) - l[u] = s(u + 1, u, void 0, i); - } else if (tt(e)) + l[u] = s(u + 1, u, void 0, r); + } else if (ot(e)) if (e[Symbol.iterator]) l = Array.from( e, - (u, d) => s(u, d, void 0, i) + (u, d) => s(u, d, void 0, r) ); else { const u = Object.keys(e); l = new Array(u.length); for (let d = 0, m = u.length; d < m; d++) { const v = u[d]; - l[d] = s(e[v], v, d, i); + l[d] = s(e[v], v, d, r); } } else l = []; return l; } -function eo(e, s) { +function no(e, s) { for (let o = 0; o < s.length; o++) { const n = s[o]; - if (Ue(n)) + if (Be(n)) for (let l = 0; l < n.length; l++) e[n[l].name] = n[l].fn; else n && (e[n.name] = n.key ? (...l) => { - const i = n.fn(...l); - return i && (i.key = n.key), i; + const r = n.fn(...l); + return r && (r.key = n.key), r; } : n.fn); } return e; } -function He(e, s, o = {}, n, l) { - if (yt.ce || yt.parent && fo(yt.parent) && yt.parent.ce) { +function Ke(e, s, o = {}, n, l) { + if (wt.ce || wt.parent && yo(wt.parent) && wt.parent.ce) { const m = Object.keys(o).length > 0; - return s !== "default" && (o.name = s), a(), R( - j, + return s !== "default" && (o.name = s), a(), M( + H, null, - [C("slot", o, n && n())], + [x("slot", o, n && n())], m ? -2 : 64 ); } - let i = e[s]; - i && i._c && (i._d = !1), a(); - const r = i && zi(i(o)), u = o.key || // slot content array of a dynamic conditional slot may have a branch + let r = e[s]; + r && r._c && (r._d = !1), a(); + const c = r && Qi(r(o)), u = o.key || // slot content array of a dynamic conditional slot may have a branch // key attached in the `createSlots` helper, respect that - r && r.key, d = R( - j, + c && c.key, d = M( + H, { - key: (u && !Zt(u) ? u : `_${s}`) + // #7256 force differentiate fallback content from actual content - (!r && n ? "_fb" : "") + key: (u && !ts(u) ? u : `_${s}`) + // #7256 force differentiate fallback content from actual content + (!c && n ? "_fb" : "") }, - r || (n ? n() : []), - r && e._ === 1 ? 64 : -2 + c || (n ? n() : []), + c && e._ === 1 ? 64 : -2 ); - return i && i._c && (i._d = !0), d; + return r && r._c && (r._d = !0), d; } -function zi(e) { - return e.some((s) => Ko(s) ? !(s.type === _t || s.type === j && !zi(s.children)) : !0) ? e : null; +function Qi(e) { + return e.some((s) => sn(s) ? !(s.type === bt || s.type === H && !Qi(s.children)) : !0) ? e : null; } -const ga = (e) => e ? nr(e) ? Vn(e) : ga(e.parent) : null, No = ( +const Ia = (e) => e ? gr(e) ? ea(e) : Ia(e.parent) : null, jo = ( // Move PURE marker to new line to workaround compiler discarding it // due to type annotation /* @__PURE__ */ pt(/* @__PURE__ */ Object.create(null), { @@ -1967,24 +1967,24 @@ const ga = (e) => e ? nr(e) ? Vn(e) : ga(e.parent) : null, No = ( $attrs: (e) => e.attrs, $slots: (e) => e.slots, $refs: (e) => e.refs, - $parent: (e) => ga(e.parent), - $root: (e) => ga(e.root), + $parent: (e) => Ia(e.parent), + $root: (e) => Ia(e.root), $host: (e) => e.ce, $emit: (e) => e.emit, - $options: (e) => Bi(e), + $options: (e) => Zi(e), $forceUpdate: (e) => e.f || (e.f = () => { - za(e.update); + Qa(e.update); }), - $nextTick: (e) => e.n || (e.n = Qo.bind(e.proxy)), - $watch: (e) => tu.bind(e) + $nextTick: (e) => e.n || (e.n = gt.bind(e.proxy)), + $watch: (e) => yu.bind(e) }) -), Qn = (e, s) => e !== st && !e.__isScriptSetup && Ze(e, s), Gc = { +), ua = (e, s) => e !== nt && !e.__isScriptSetup && et(e, s), iu = { get({ _: e }, s) { if (s === "__v_skip") return !0; - const { ctx: o, setupState: n, data: l, props: i, accessCache: r, type: u, appContext: d } = e; + const { ctx: o, setupState: n, data: l, props: r, accessCache: c, type: u, appContext: d } = e; if (s[0] !== "$") { - const w = r[s]; + const w = c[s]; if (w !== void 0) switch (w) { case 1: @@ -1994,248 +1994,248 @@ const ga = (e) => e ? nr(e) ? Vn(e) : ga(e.parent) : null, No = ( case 4: return o[s]; case 3: - return i[s]; + return r[s]; } else { - if (Qn(n, s)) - return r[s] = 1, n[s]; - if (l !== st && Ze(l, s)) - return r[s] = 2, l[s]; - if (Ze(i, s)) - return r[s] = 3, i[s]; - if (o !== st && Ze(o, s)) - return r[s] = 4, o[s]; - ha && (r[s] = 0); + if (ua(n, s)) + return c[s] = 1, n[s]; + if (l !== nt && et(l, s)) + return c[s] = 2, l[s]; + if (et(r, s)) + return c[s] = 3, r[s]; + if (o !== nt && et(o, s)) + return c[s] = 4, o[s]; + Ea && (c[s] = 0); } } - const m = No[s]; - let v, h; + const m = jo[s]; + let v, g; if (m) - return s === "$attrs" && bt(e.attrs, "get", ""), m(e); + return s === "$attrs" && _t(e.attrs, "get", ""), m(e); if ( // css module (injected by vue-loader) (v = u.__cssModules) && (v = v[s]) ) return v; - if (o !== st && Ze(o, s)) - return r[s] = 4, o[s]; + if (o !== nt && et(o, s)) + return c[s] = 4, o[s]; if ( // global properties - h = d.config.globalProperties, Ze(h, s) + g = d.config.globalProperties, et(g, s) ) - return h[s]; + return g[s]; }, set({ _: e }, s, o) { - const { data: n, setupState: l, ctx: i } = e; - return Qn(l, s) ? (l[s] = o, !0) : n !== st && Ze(n, s) ? (n[s] = o, !0) : Ze(e.props, s) || s[0] === "$" && s.slice(1) in e ? !1 : (i[s] = o, !0); + const { data: n, setupState: l, ctx: r } = e; + return ua(l, s) ? (l[s] = o, !0) : n !== nt && et(n, s) ? (n[s] = o, !0) : et(e.props, s) || s[0] === "$" && s.slice(1) in e ? !1 : (r[s] = o, !0); }, has({ - _: { data: e, setupState: s, accessCache: o, ctx: n, appContext: l, props: i, type: r } + _: { data: e, setupState: s, accessCache: o, ctx: n, appContext: l, props: r, type: c } }, u) { let d; - return !!(o[u] || e !== st && u[0] !== "$" && Ze(e, u) || Qn(s, u) || Ze(i, u) || Ze(n, u) || Ze(No, u) || Ze(l.config.globalProperties, u) || (d = r.__cssModules) && d[u]); + return !!(o[u] || e !== nt && u[0] !== "$" && et(e, u) || ua(s, u) || et(r, u) || et(n, u) || et(jo, u) || et(l.config.globalProperties, u) || (d = c.__cssModules) && d[u]); }, defineProperty(e, s, o) { - return o.get != null ? e._.accessCache[s] = 0 : Ze(o, "value") && this.set(e, s, o.value, null), Reflect.defineProperty(e, s, o); + return o.get != null ? e._.accessCache[s] = 0 : et(o, "value") && this.set(e, s, o.value, null), Reflect.defineProperty(e, s, o); } }; -function ml(e) { - return Ue(e) ? e.reduce( +function bl(e) { + return Be(e) ? e.reduce( (s, o) => (s[o] = null, s), {} ) : e; } -let ha = !0; -function jc(e) { - const s = Bi(e), o = e.proxy, n = e.ctx; - ha = !1, s.beforeCreate && vl(s.beforeCreate, e, "bc"); +let Ea = !0; +function ru(e) { + const s = Zi(e), o = e.proxy, n = e.ctx; + Ea = !1, s.beforeCreate && $l(s.beforeCreate, e, "bc"); const { // state data: l, - computed: i, - methods: r, + computed: r, + methods: c, watch: u, provide: d, inject: m, // lifecycle created: v, - beforeMount: h, + beforeMount: g, mounted: w, beforeUpdate: p, - updated: _, - activated: S, - deactivated: $, - beforeDestroy: P, - beforeUnmount: O, - destroyed: T, - unmounted: x, - render: q, + updated: k, + activated: C, + deactivated: b, + beforeDestroy: T, + beforeUnmount: D, + destroyed: P, + unmounted: E, + render: U, renderTracked: B, - renderTriggered: A, - errorCaptured: I, - serverPrefetch: E, + renderTriggered: V, + errorCaptured: S, + serverPrefetch: I, // public API expose: L, - inheritAttrs: re, + inheritAttrs: Z, // assets - components: Y, - directives: H, - filters: te + components: W, + directives: A, + filters: j } = s; - if (m && Hc(m, n, null), r) - for (const U in r) { - const M = r[U]; - Be(M) && (n[U] = M.bind(o)); + if (m && cu(m, n, null), c) + for (const ae in c) { + const ee = c[ae]; + Ge(ee) && (n[ae] = ee.bind(o)); } if (l) { - const U = l.call(o, o); - tt(U) && (e.data = Fs(U)); - } - if (ha = !0, i) - for (const U in i) { - const M = i[U], we = Be(M) ? M.bind(o, o) : Be(M.get) ? M.get.bind(o, o) : ms, ve = !Be(M) && Be(M.set) ? M.set.bind(o) : ms, Ie = F({ - get: we, - set: ve + const ae = l.call(o, o); + ot(ae) && (e.data = Ws(ae)); + } + if (Ea = !0, r) + for (const ae in r) { + const ee = r[ae], ke = Ge(ee) ? ee.bind(o, o) : Ge(ee.get) ? ee.get.bind(o, o) : gs, be = !Ge(ee) && Ge(ee.set) ? ee.set.bind(o) : gs, Le = N({ + get: ke, + set: be }); - Object.defineProperty(n, U, { + Object.defineProperty(n, ae, { enumerable: !0, configurable: !0, - get: () => Ie.value, - set: (Re) => Ie.value = Re + get: () => Le.value, + set: (ze) => Le.value = ze }); } if (u) - for (const U in u) - Fi(u[U], n, o, U); + for (const ae in u) + Xi(u[ae], n, o, ae); if (d) { - const U = Be(d) ? d.call(o) : d; - Reflect.ownKeys(U).forEach((M) => { - Qc(M, U[M]); + const ae = Ge(d) ? d.call(o) : d; + Reflect.ownKeys(ae).forEach((ee) => { + pu(ee, ae[ee]); }); } - v && vl(v, e, "c"); - function N(U, M) { - Ue(M) ? M.forEach((we) => U(we.bind(o))) : M && U(M.bind(o)); + v && $l(v, e, "c"); + function z(ae, ee) { + Be(ee) ? ee.forEach((ke) => ae(ke.bind(o))) : ee && ae(ee.bind(o)); } - if (N(Ac, h), N(et, w), N(Nc, p), N(Ai, _), N(Dc, S), N(Lc, $), N(Bc, I), N(Fc, B), N(zc, A), N(Ni, O), N(wo, x), N(Uc, E), Ue(L)) + if (z(Zc, g), z(Qe, w), z(eu, p), z(qi, k), z(Jc, C), z(Qc, b), z(nu, S), z(ou, B), z(su, V), z(Yi, D), z(Gs, E), z(tu, I), Be(L)) if (L.length) { - const U = e.exposed || (e.exposed = {}); - L.forEach((M) => { - Object.defineProperty(U, M, { - get: () => o[M], - set: (we) => o[M] = we, + const ae = e.exposed || (e.exposed = {}); + L.forEach((ee) => { + Object.defineProperty(ae, ee, { + get: () => o[ee], + set: (ke) => o[ee] = ke, enumerable: !0 }); }); } else e.exposed || (e.exposed = {}); - q && e.render === ms && (e.render = q), re != null && (e.inheritAttrs = re), Y && (e.components = Y), H && (e.directives = H), E && Li(e); + U && e.render === gs && (e.render = U), Z != null && (e.inheritAttrs = Z), W && (e.components = W), A && (e.directives = A), I && Hi(e); } -function Hc(e, s, o = ms) { - Ue(e) && (e = ya(e)); +function cu(e, s, o = gs) { + Be(e) && (e = Ta(e)); for (const n in e) { const l = e[n]; - let i; - tt(l) ? "default" in l ? i = vn( + let r; + ot(l) ? "default" in l ? r = In( l.from || n, l.default, !0 - ) : i = vn(l.from || n) : i = vn(l), $t(i) ? Object.defineProperty(s, n, { + ) : r = In(l.from || n) : r = In(l), Ct(r) ? Object.defineProperty(s, n, { enumerable: !0, configurable: !0, - get: () => i.value, - set: (r) => i.value = r - }) : s[n] = i; + get: () => r.value, + set: (c) => r.value = c + }) : s[n] = r; } } -function vl(e, s, o) { - ts( - Ue(e) ? e.map((n) => n.bind(s.proxy)) : e.bind(s.proxy), +function $l(e, s, o) { + os( + Be(e) ? e.map((n) => n.bind(s.proxy)) : e.bind(s.proxy), s, o ); } -function Fi(e, s, o, n) { - let l = n.includes(".") ? Gi(o, n) : () => o[n]; +function Xi(e, s, o, n) { + let l = n.includes(".") ? sr(o, n) : () => o[n]; if (ut(e)) { - const i = s[e]; - Be(i) && Ct(l, i); - } else if (Be(e)) - Ct(l, e.bind(o)); - else if (tt(e)) - if (Ue(e)) - e.forEach((i) => Fi(i, s, o, n)); + const r = s[e]; + Ge(r) && dt(l, r); + } else if (Ge(e)) + dt(l, e.bind(o)); + else if (ot(e)) + if (Be(e)) + e.forEach((r) => Xi(r, s, o, n)); else { - const i = Be(e.handler) ? e.handler.bind(o) : s[e.handler]; - Be(i) && Ct(l, i, e); + const r = Ge(e.handler) ? e.handler.bind(o) : s[e.handler]; + Ge(r) && dt(l, r, e); } } -function Bi(e) { +function Zi(e) { const s = e.type, { mixins: o, extends: n } = s, { mixins: l, - optionsCache: i, - config: { optionMergeStrategies: r } - } = e.appContext, u = i.get(s); + optionsCache: r, + config: { optionMergeStrategies: c } + } = e.appContext, u = r.get(s); let d; return u ? d = u : !l.length && !o && !n ? d = s : (d = {}, l.length && l.forEach( - (m) => Cn(d, m, r, !0) - ), Cn(d, s, r)), tt(s) && i.set(s, d), d; + (m) => Nn(d, m, c, !0) + ), Nn(d, s, c)), ot(s) && r.set(s, d), d; } -function Cn(e, s, o, n = !1) { - const { mixins: l, extends: i } = s; - i && Cn(e, i, o, !0), l && l.forEach( - (r) => Cn(e, r, o, !0) +function Nn(e, s, o, n = !1) { + const { mixins: l, extends: r } = s; + r && Nn(e, r, o, !0), l && l.forEach( + (c) => Nn(e, c, o, !0) ); - for (const r in s) - if (!(n && r === "expose")) { - const u = Kc[r] || o && o[r]; - e[r] = u ? u(e[r], s[r]) : s[r]; + for (const c in s) + if (!(n && c === "expose")) { + const u = uu[c] || o && o[c]; + e[c] = u ? u(e[c], s[c]) : s[c]; } return e; } -const Kc = { - data: pl, - props: gl, - emits: gl, +const uu = { + data: Cl, + props: xl, + emits: xl, // objects - methods: Ro, - computed: Ro, + methods: zo, + computed: zo, // lifecycle - beforeCreate: xt, - created: xt, - beforeMount: xt, - mounted: xt, - beforeUpdate: xt, - updated: xt, - beforeDestroy: xt, - beforeUnmount: xt, - destroyed: xt, - unmounted: xt, - activated: xt, - deactivated: xt, - errorCaptured: xt, - serverPrefetch: xt, + beforeCreate: It, + created: It, + beforeMount: It, + mounted: It, + beforeUpdate: It, + updated: It, + beforeDestroy: It, + beforeUnmount: It, + destroyed: It, + unmounted: It, + activated: It, + deactivated: It, + errorCaptured: It, + serverPrefetch: It, // assets - components: Ro, - directives: Ro, + components: zo, + directives: zo, // watch - watch: Yc, + watch: fu, // provide / inject - provide: pl, - inject: qc + provide: Cl, + inject: du }; -function pl(e, s) { +function Cl(e, s) { return s ? e ? function() { return pt( - Be(e) ? e.call(this, this) : e, - Be(s) ? s.call(this, this) : s + Ge(e) ? e.call(this, this) : e, + Ge(s) ? s.call(this, this) : s ); } : s : e; } -function qc(e, s) { - return Ro(ya(e), ya(s)); +function du(e, s) { + return zo(Ta(e), Ta(s)); } -function ya(e) { - if (Ue(e)) { +function Ta(e) { + if (Be(e)) { const s = {}; for (let o = 0; o < e.length; o++) s[e[o]] = e[o]; @@ -2243,32 +2243,32 @@ function ya(e) { } return e; } -function xt(e, s) { +function It(e, s) { return e ? [...new Set([].concat(e, s))] : s; } -function Ro(e, s) { +function zo(e, s) { return e ? pt(/* @__PURE__ */ Object.create(null), e, s) : s; } -function gl(e, s) { - return e ? Ue(e) && Ue(s) ? [.../* @__PURE__ */ new Set([...e, ...s])] : pt( +function xl(e, s) { + return e ? Be(e) && Be(s) ? [.../* @__PURE__ */ new Set([...e, ...s])] : pt( /* @__PURE__ */ Object.create(null), - ml(e), - ml(s ?? {}) + bl(e), + bl(s ?? {}) ) : s; } -function Yc(e, s) { +function fu(e, s) { if (!e) return s; if (!s) return e; const o = pt(/* @__PURE__ */ Object.create(null), e); for (const n in s) - o[n] = xt(e[n], s[n]); + o[n] = It(e[n], s[n]); return o; } -function Vi() { +function er() { return { app: null, config: { - isNativeTag: Xl, + isNativeTag: ci, performance: !1, globalProperties: {}, optionMergeStrategies: {}, @@ -2285,125 +2285,125 @@ function Vi() { emitsCache: /* @__PURE__ */ new WeakMap() }; } -let Jc = 0; -function Xc(e, s) { +let mu = 0; +function vu(e, s) { return function(n, l = null) { - Be(n) || (n = pt({}, n)), l != null && !tt(l) && (l = null); - const i = Vi(), r = /* @__PURE__ */ new WeakSet(), u = []; + Ge(n) || (n = pt({}, n)), l != null && !ot(l) && (l = null); + const r = er(), c = /* @__PURE__ */ new WeakSet(), u = []; let d = !1; - const m = i.app = { - _uid: Jc++, + const m = r.app = { + _uid: mu++, _component: n, _props: l, _container: null, - _context: i, + _context: r, _instance: null, - version: Du, + version: Ju, get config() { - return i.config; + return r.config; }, set config(v) { }, - use(v, ...h) { - return r.has(v) || (v && Be(v.install) ? (r.add(v), v.install(m, ...h)) : Be(v) && (r.add(v), v(m, ...h))), m; + use(v, ...g) { + return c.has(v) || (v && Ge(v.install) ? (c.add(v), v.install(m, ...g)) : Ge(v) && (c.add(v), v(m, ...g))), m; }, mixin(v) { - return i.mixins.includes(v) || i.mixins.push(v), m; + return r.mixins.includes(v) || r.mixins.push(v), m; }, - component(v, h) { - return h ? (i.components[v] = h, m) : i.components[v]; + component(v, g) { + return g ? (r.components[v] = g, m) : r.components[v]; }, - directive(v, h) { - return h ? (i.directives[v] = h, m) : i.directives[v]; + directive(v, g) { + return g ? (r.directives[v] = g, m) : r.directives[v]; }, - mount(v, h, w) { + mount(v, g, w) { if (!d) { - const p = m._ceVNode || C(n, l); - return p.appContext = i, w === !0 ? w = "svg" : w === !1 && (w = void 0), e(p, v, w), d = !0, m._container = v, v.__vue_app__ = m, Vn(p.component); + const p = m._ceVNode || x(n, l); + return p.appContext = r, w === !0 ? w = "svg" : w === !1 && (w = void 0), e(p, v, w), d = !0, m._container = v, v.__vue_app__ = m, ea(p.component); } }, onUnmount(v) { u.push(v); }, unmount() { - d && (ts( + d && (os( u, m._instance, 16 ), e(null, m._container), delete m._container.__vue_app__); }, - provide(v, h) { - return i.provides[v] = h, m; + provide(v, g) { + return r.provides[v] = g, m; }, runWithContext(v) { - const h = mo; - mo = m; + const g = wo; + wo = m; try { return v(); } finally { - mo = h; + wo = g; } } }; return m; }; } -let mo = null; -function Qc(e, s) { - if (kt) { - let o = kt.provides; - const n = kt.parent && kt.parent.provides; - n === o && (o = kt.provides = Object.create(n)), o[e] = s; +let wo = null; +function pu(e, s) { + if ($t) { + let o = $t.provides; + const n = $t.parent && $t.parent.provides; + n === o && (o = $t.provides = Object.create(n)), o[e] = s; } } -function vn(e, s, o = !1) { - const n = Ha(); - if (n || mo) { - let l = mo ? mo._context.provides : n ? n.parent == null || n.ce ? n.vnode.appContext && n.vnode.appContext.provides : n.parent.provides : void 0; +function In(e, s, o = !1) { + const n = nl(); + if (n || wo) { + let l = wo ? wo._context.provides : n ? n.parent == null || n.ce ? n.vnode.appContext && n.vnode.appContext.provides : n.parent.provides : void 0; if (l && e in l) return l[e]; if (arguments.length > 1) - return o && Be(s) ? s.call(n && n.proxy) : s; + return o && Ge(s) ? s.call(n && n.proxy) : s; } } -const Zc = Symbol.for("v-scx"), eu = () => vn(Zc); -function Ct(e, s, o) { - return Wi(e, s, o); +const gu = Symbol.for("v-scx"), hu = () => In(gu); +function dt(e, s, o) { + return tr(e, s, o); } -function Wi(e, s, o = st) { - const { immediate: n, deep: l, flush: i, once: r } = o, u = pt({}, o), d = s && n || !s && i !== "post"; +function tr(e, s, o = nt) { + const { immediate: n, deep: l, flush: r, once: c } = o, u = pt({}, o), d = s && n || !s && r !== "post"; let m; - if (qo) { - if (i === "sync") { - const p = eu(); + if (on) { + if (r === "sync") { + const p = hu(); m = p.__watcherHandles || (p.__watcherHandles = []); } else if (!d) { const p = () => { }; - return p.stop = ms, p.resume = ms, p.pause = ms, p; + return p.stop = gs, p.resume = gs, p.pause = gs, p; } } - const v = kt; - u.call = (p, _, S) => ts(p, v, _, S); - let h = !1; - i === "post" ? u.scheduler = (p) => { - St(p, v && v.suspense); - } : i !== "sync" && (h = !0, u.scheduler = (p, _) => { - _ ? p() : za(p); + const v = $t; + u.call = (p, k, C) => os(p, v, k, C); + let g = !1; + r === "post" ? u.scheduler = (p) => { + Et(p, v && v.suspense); + } : r !== "sync" && (g = !0, u.scheduler = (p, k) => { + k ? p() : Qa(p); }), u.augmentJob = (p) => { - s && (p.flags |= 4), h && (p.flags |= 2, v && (p.id = v.uid, p.i = v)); + s && (p.flags |= 4), g && (p.flags |= 2, v && (p.id = v.uid, p.i = v)); }; - const w = Sc(e, s, u); - return qo && (m ? m.push(w) : d && w()), w; + const w = Wc(e, s, u); + return on && (m ? m.push(w) : d && w()), w; } -function tu(e, s, o) { - const n = this.proxy, l = ut(e) ? e.includes(".") ? Gi(n, e) : () => n[e] : e.bind(n, n); - let i; - Be(s) ? i = s : (i = s.handler, o = s); - const r = Zo(this), u = Wi(l, i.bind(n), o); - return r(), u; +function yu(e, s, o) { + const n = this.proxy, l = ut(e) ? e.includes(".") ? sr(n, e) : () => n[e] : e.bind(n, n); + let r; + Ge(s) ? r = s : (r = s.handler, o = s); + const c = rn(this), u = tr(l, r.bind(n), o); + return c(), u; } -function Gi(e, s) { +function sr(e, s) { const o = s.split("."); return () => { let n = e; @@ -2412,16 +2412,16 @@ function Gi(e, s) { return n; }; } -const su = (e, s) => s === "modelValue" || s === "model-value" ? e.modelModifiers : e[`${s}Modifiers`] || e[`${Wt(s)}Modifiers`] || e[`${zs(s)}Modifiers`]; -function ou(e, s, ...o) { +const wu = (e, s) => s === "modelValue" || s === "model-value" ? e.modelModifiers : e[`${s}Modifiers`] || e[`${Kt(s)}Modifiers`] || e[`${Vs(s)}Modifiers`]; +function ku(e, s, ...o) { if (e.isUnmounted) return; - const n = e.vnode.props || st; + const n = e.vnode.props || nt; let l = o; - const i = s.startsWith("update:"), r = i && su(n, s.slice(7)); - r && (r.trim && (l = o.map((v) => ut(v) ? v.trim() : v)), r.number && (l = o.map(Ln))); - let u, d = n[u = Hn(s)] || // also try camelCase event handler (#2249) - n[u = Hn(Wt(s))]; - !d && i && (d = n[u = Hn(zs(s))]), d && ts( + const r = s.startsWith("update:"), c = r && wu(n, s.slice(7)); + c && (c.trim && (l = o.map((v) => ut(v) ? v.trim() : v)), c.number && (l = o.map(Hn))); + let u, d = n[u = na(s)] || // also try camelCase event handler (#2249) + n[u = na(Kt(s))]; + !d && r && (d = n[u = na(Vs(s))]), d && os( d, e, 6, @@ -2433,7 +2433,7 @@ function ou(e, s, ...o) { e.emitted = {}; else if (e.emitted[u]) return; - e.emitted[u] = !0, ts( + e.emitted[u] = !0, os( m, e, 6, @@ -2441,127 +2441,127 @@ function ou(e, s, ...o) { ); } } -const nu = /* @__PURE__ */ new WeakMap(); -function ji(e, s, o = !1) { - const n = o ? nu : s.emitsCache, l = n.get(e); +const _u = /* @__PURE__ */ new WeakMap(); +function or(e, s, o = !1) { + const n = o ? _u : s.emitsCache, l = n.get(e); if (l !== void 0) return l; - const i = e.emits; - let r = {}, u = !1; - if (!Be(e)) { + const r = e.emits; + let c = {}, u = !1; + if (!Ge(e)) { const d = (m) => { - const v = ji(m, s, !0); - v && (u = !0, pt(r, v)); + const v = or(m, s, !0); + v && (u = !0, pt(c, v)); }; !o && s.mixins.length && s.mixins.forEach(d), e.extends && d(e.extends), e.mixins && e.mixins.forEach(d); } - return !i && !u ? (tt(e) && n.set(e, null), null) : (Ue(i) ? i.forEach((d) => r[d] = null) : pt(r, i), tt(e) && n.set(e, r), r); + return !r && !u ? (ot(e) && n.set(e, null), null) : (Be(r) ? r.forEach((d) => c[d] = null) : pt(c, r), ot(e) && n.set(e, c), c); } -function Fn(e, s) { - return !e || !Rn(s) ? !1 : (s = s.slice(2).replace(/Once$/, ""), Ze(e, s[0].toLowerCase() + s.slice(1)) || Ze(e, zs(s)) || Ze(e, s)); +function Xn(e, s) { + return !e || !Wn(s) ? !1 : (s = s.slice(2).replace(/Once$/, ""), et(e, s[0].toLowerCase() + s.slice(1)) || et(e, Vs(s)) || et(e, s)); } -function hl(e) { +function Sl(e) { const { type: s, vnode: o, proxy: n, withProxy: l, - propsOptions: [i], - slots: r, + propsOptions: [r], + slots: c, attrs: u, emit: d, render: m, renderCache: v, - props: h, + props: g, data: w, setupState: p, - ctx: _, - inheritAttrs: S - } = e, $ = kn(e); - let P, O; + ctx: k, + inheritAttrs: C + } = e, b = An(e); + let T, D; try { if (o.shapeFlag & 4) { - const x = l || n, q = x; - P = fs( + const E = l || n, U = E; + T = ps( m.call( - q, - x, + U, + E, v, - h, + g, p, w, - _ + k ) - ), O = u; + ), D = u; } else { - const x = s; - P = fs( - x.length > 1 ? x( - h, - { attrs: u, slots: r, emit: d } - ) : x( - h, + const E = s; + T = ps( + E.length > 1 ? E( + g, + { attrs: u, slots: c, emit: d } + ) : E( + g, null ) - ), O = s.props ? u : au(u); + ), D = s.props ? u : bu(u); } - } catch (x) { - Uo.length = 0, Nn(x, e, 1), P = C(_t); + } catch (E) { + Ho.length = 0, Yn(E, e, 1), T = x(bt); } - let T = P; - if (O && S !== !1) { - const x = Object.keys(O), { shapeFlag: q } = T; - x.length && q & 7 && (i && x.some(Ea) && (O = lu( - O, - i - )), T = Ns(T, O, !1, !0)); + let P = T; + if (D && C !== !1) { + const E = Object.keys(D), { shapeFlag: U } = P; + E.length && U & 7 && (r && E.some(Fa) && (D = $u( + D, + r + )), P = Fs(P, D, !1, !0)); } - return o.dirs && (T = Ns(T, null, !1, !0), T.dirs = T.dirs ? T.dirs.concat(o.dirs) : o.dirs), o.transition && Zs(T, o.transition), P = T, kn($), P; + return o.dirs && (P = Fs(P, null, !1, !0), P.dirs = P.dirs ? P.dirs.concat(o.dirs) : o.dirs), o.transition && oo(P, o.transition), T = P, An(b), T; } -const au = (e) => { +const bu = (e) => { let s; for (const o in e) - (o === "class" || o === "style" || Rn(o)) && ((s || (s = {}))[o] = e[o]); + (o === "class" || o === "style" || Wn(o)) && ((s || (s = {}))[o] = e[o]); return s; -}, lu = (e, s) => { +}, $u = (e, s) => { const o = {}; for (const n in e) - (!Ea(n) || !(n.slice(9) in s)) && (o[n] = e[n]); + (!Fa(n) || !(n.slice(9) in s)) && (o[n] = e[n]); return o; }; -function iu(e, s, o) { - const { props: n, children: l, component: i } = e, { props: r, children: u, patchFlag: d } = s, m = i.emitsOptions; +function Cu(e, s, o) { + const { props: n, children: l, component: r } = e, { props: c, children: u, patchFlag: d } = s, m = r.emitsOptions; if (s.dirs || s.transition) return !0; if (o && d >= 0) { if (d & 1024) return !0; if (d & 16) - return n ? yl(n, r, m) : !!r; + return n ? Il(n, c, m) : !!c; if (d & 8) { const v = s.dynamicProps; - for (let h = 0; h < v.length; h++) { - const w = v[h]; - if (r[w] !== n[w] && !Fn(m, w)) + for (let g = 0; g < v.length; g++) { + const w = v[g]; + if (c[w] !== n[w] && !Xn(m, w)) return !0; } } } else - return (l || u) && (!u || !u.$stable) ? !0 : n === r ? !1 : n ? r ? yl(n, r, m) : !0 : !!r; + return (l || u) && (!u || !u.$stable) ? !0 : n === c ? !1 : n ? c ? Il(n, c, m) : !0 : !!c; return !1; } -function yl(e, s, o) { +function Il(e, s, o) { const n = Object.keys(s); if (n.length !== Object.keys(e).length) return !0; for (let l = 0; l < n.length; l++) { - const i = n[l]; - if (s[i] !== e[i] && !Fn(o, i)) + const r = n[l]; + if (s[r] !== e[r] && !Xn(o, r)) return !0; } return !1; } -function ru({ vnode: e, parent: s }, o) { +function xu({ vnode: e, parent: s }, o) { for (; s; ) { const n = s.subTree; if (n.suspense && n.suspense.activeBranch === e && (n.el = e.el), n === e) @@ -2570,114 +2570,114 @@ function ru({ vnode: e, parent: s }, o) { break; } } -const Hi = {}, Ki = () => Object.create(Hi), qi = (e) => Object.getPrototypeOf(e) === Hi; -function cu(e, s, o, n = !1) { - const l = {}, i = Ki(); - e.propsDefaults = /* @__PURE__ */ Object.create(null), Yi(e, s, l, i); - for (const r in e.propsOptions[0]) - r in l || (l[r] = void 0); - o ? e.props = n ? l : yc(l) : e.type.props ? e.props = l : e.props = i, e.attrs = i; +const nr = {}, ar = () => Object.create(nr), lr = (e) => Object.getPrototypeOf(e) === nr; +function Su(e, s, o, n = !1) { + const l = {}, r = ar(); + e.propsDefaults = /* @__PURE__ */ Object.create(null), ir(e, s, l, r); + for (const c in e.propsOptions[0]) + c in l || (l[c] = void 0); + o ? e.props = n ? l : Ac(l) : e.type.props ? e.props = l : e.props = r, e.attrs = r; } -function uu(e, s, o, n) { +function Iu(e, s, o, n) { const { props: l, - attrs: i, - vnode: { patchFlag: r } - } = e, u = Je(l), [d] = e.propsOptions; + attrs: r, + vnode: { patchFlag: c } + } = e, u = Xe(l), [d] = e.propsOptions; let m = !1; if ( // always force full diff in dev // - #1942 if hmr is enabled with sfc component // - vite#872 non-sfc component used by sfc component - (n || r > 0) && !(r & 16) + (n || c > 0) && !(c & 16) ) { - if (r & 8) { + if (c & 8) { const v = e.vnode.dynamicProps; - for (let h = 0; h < v.length; h++) { - let w = v[h]; - if (Fn(e.emitsOptions, w)) + for (let g = 0; g < v.length; g++) { + let w = v[g]; + if (Xn(e.emitsOptions, w)) continue; const p = s[w]; if (d) - if (Ze(i, w)) - p !== i[w] && (i[w] = p, m = !0); + if (et(r, w)) + p !== r[w] && (r[w] = p, m = !0); else { - const _ = Wt(w); - l[_] = wa( + const k = Kt(w); + l[k] = Ra( d, u, - _, + k, p, e, !1 ); } else - p !== i[w] && (i[w] = p, m = !0); + p !== r[w] && (r[w] = p, m = !0); } } } else { - Yi(e, s, l, i) && (m = !0); + ir(e, s, l, r) && (m = !0); let v; - for (const h in u) + for (const g in u) (!s || // for camelCase - !Ze(s, h) && // it's possible the original props was passed in as kebab-case + !et(s, g) && // it's possible the original props was passed in as kebab-case // and converted to camelCase (#955) - ((v = zs(h)) === h || !Ze(s, v))) && (d ? o && // for camelCase - (o[h] !== void 0 || // for kebab-case - o[v] !== void 0) && (l[h] = wa( + ((v = Vs(g)) === g || !et(s, v))) && (d ? o && // for camelCase + (o[g] !== void 0 || // for kebab-case + o[v] !== void 0) && (l[g] = Ra( d, u, - h, + g, void 0, e, !0 - )) : delete l[h]); - if (i !== u) - for (const h in i) - (!s || !Ze(s, h)) && (delete i[h], m = !0); + )) : delete l[g]); + if (r !== u) + for (const g in r) + (!s || !et(s, g)) && (delete r[g], m = !0); } - m && bs(e.attrs, "set", ""); + m && xs(e.attrs, "set", ""); } -function Yi(e, s, o, n) { - const [l, i] = e.propsOptions; - let r = !1, u; +function ir(e, s, o, n) { + const [l, r] = e.propsOptions; + let c = !1, u; if (s) for (let d in s) { - if (Mo(d)) + if (Fo(d)) continue; const m = s[d]; let v; - l && Ze(l, v = Wt(d)) ? !i || !i.includes(v) ? o[v] = m : (u || (u = {}))[v] = m : Fn(e.emitsOptions, d) || (!(d in n) || m !== n[d]) && (n[d] = m, r = !0); + l && et(l, v = Kt(d)) ? !r || !r.includes(v) ? o[v] = m : (u || (u = {}))[v] = m : Xn(e.emitsOptions, d) || (!(d in n) || m !== n[d]) && (n[d] = m, c = !0); } - if (i) { - const d = Je(o), m = u || st; - for (let v = 0; v < i.length; v++) { - const h = i[v]; - o[h] = wa( + if (r) { + const d = Xe(o), m = u || nt; + for (let v = 0; v < r.length; v++) { + const g = r[v]; + o[g] = Ra( l, d, - h, - m[h], + g, + m[g], e, - !Ze(m, h) + !et(m, g) ); } } - return r; + return c; } -function wa(e, s, o, n, l, i) { - const r = e[o]; - if (r != null) { - const u = Ze(r, "default"); +function Ra(e, s, o, n, l, r) { + const c = e[o]; + if (c != null) { + const u = et(c, "default"); if (u && n === void 0) { - const d = r.default; - if (r.type !== Function && !r.skipFactory && Be(d)) { + const d = c.default; + if (c.type !== Function && !c.skipFactory && Ge(d)) { const { propsDefaults: m } = l; if (o in m) n = m[o]; else { - const v = Zo(l); + const v = rn(l); n = m[o] = d.call( null, s @@ -2687,944 +2687,944 @@ function wa(e, s, o, n, l, i) { n = d; l.ce && l.ce._setProp(o, n); } - r[ + c[ 0 /* shouldCast */ - ] && (i && !u ? n = !1 : r[ + ] && (r && !u ? n = !1 : c[ 1 /* shouldCastTrue */ - ] && (n === "" || n === zs(o)) && (n = !0)); + ] && (n === "" || n === Vs(o)) && (n = !0)); } return n; } -const du = /* @__PURE__ */ new WeakMap(); -function Ji(e, s, o = !1) { - const n = o ? du : s.propsCache, l = n.get(e); +const Eu = /* @__PURE__ */ new WeakMap(); +function rr(e, s, o = !1) { + const n = o ? Eu : s.propsCache, l = n.get(e); if (l) return l; - const i = e.props, r = {}, u = []; + const r = e.props, c = {}, u = []; let d = !1; - if (!Be(e)) { - const v = (h) => { + if (!Ge(e)) { + const v = (g) => { d = !0; - const [w, p] = Ji(h, s, !0); - pt(r, w), p && u.push(...p); + const [w, p] = rr(g, s, !0); + pt(c, w), p && u.push(...p); }; !o && s.mixins.length && s.mixins.forEach(v), e.extends && v(e.extends), e.mixins && e.mixins.forEach(v); } - if (!i && !d) - return tt(e) && n.set(e, ro), ro; - if (Ue(i)) - for (let v = 0; v < i.length; v++) { - const h = Wt(i[v]); - wl(h) && (r[h] = st); - } - else if (i) - for (const v in i) { - const h = Wt(v); - if (wl(h)) { - const w = i[v], p = r[h] = Ue(w) || Be(w) ? { type: w } : pt({}, w), _ = p.type; - let S = !1, $ = !0; - if (Ue(_)) - for (let P = 0; P < _.length; ++P) { - const O = _[P], T = Be(O) && O.name; - if (T === "Boolean") { - S = !0; + if (!r && !d) + return ot(e) && n.set(e, po), po; + if (Be(r)) + for (let v = 0; v < r.length; v++) { + const g = Kt(r[v]); + El(g) && (c[g] = nt); + } + else if (r) + for (const v in r) { + const g = Kt(v); + if (El(g)) { + const w = r[v], p = c[g] = Be(w) || Ge(w) ? { type: w } : pt({}, w), k = p.type; + let C = !1, b = !0; + if (Be(k)) + for (let T = 0; T < k.length; ++T) { + const D = k[T], P = Ge(D) && D.name; + if (P === "Boolean") { + C = !0; break; - } else T === "String" && ($ = !1); + } else P === "String" && (b = !1); } else - S = Be(_) && _.name === "Boolean"; + C = Ge(k) && k.name === "Boolean"; p[ 0 /* shouldCast */ - ] = S, p[ + ] = C, p[ 1 /* shouldCastTrue */ - ] = $, (S || Ze(p, "default")) && u.push(h); + ] = b, (C || et(p, "default")) && u.push(g); } } - const m = [r, u]; - return tt(e) && n.set(e, m), m; + const m = [c, u]; + return ot(e) && n.set(e, m), m; } -function wl(e) { - return e[0] !== "$" && !Mo(e); +function El(e) { + return e[0] !== "$" && !Fo(e); } -const Va = (e) => e === "_" || e === "_ctx" || e === "$stable", Wa = (e) => Ue(e) ? e.map(fs) : [fs(e)], fu = (e, s, o) => { +const el = (e) => e === "_" || e === "_ctx" || e === "$stable", tl = (e) => Be(e) ? e.map(ps) : [ps(e)], Tu = (e, s, o) => { if (s._n) return s; - const n = g((...l) => Wa(s(...l)), o); + const n = h((...l) => tl(s(...l)), o); return n._c = !1, n; -}, Xi = (e, s, o) => { +}, cr = (e, s, o) => { const n = e._ctx; for (const l in e) { - if (Va(l)) continue; - const i = e[l]; - if (Be(i)) - s[l] = fu(l, i, n); - else if (i != null) { - const r = Wa(i); - s[l] = () => r; + if (el(l)) continue; + const r = e[l]; + if (Ge(r)) + s[l] = Tu(l, r, n); + else if (r != null) { + const c = tl(r); + s[l] = () => c; } } -}, Qi = (e, s) => { - const o = Wa(s); +}, ur = (e, s) => { + const o = tl(s); e.slots.default = () => o; -}, Zi = (e, s, o) => { +}, dr = (e, s, o) => { for (const n in s) - (o || !Va(n)) && (e[n] = s[n]); -}, mu = (e, s, o) => { - const n = e.slots = Ki(); + (o || !el(n)) && (e[n] = s[n]); +}, Ru = (e, s, o) => { + const n = e.slots = ar(); if (e.vnode.shapeFlag & 32) { const l = s._; - l ? (Zi(n, s, o), o && ti(n, "_", l, !0)) : Xi(s, n); - } else s && Qi(e, s); -}, vu = (e, s, o) => { + l ? (dr(n, s, o), o && mi(n, "_", l, !0)) : cr(s, n); + } else s && ur(e, s); +}, Pu = (e, s, o) => { const { vnode: n, slots: l } = e; - let i = !0, r = st; + let r = !0, c = nt; if (n.shapeFlag & 32) { const u = s._; - u ? o && u === 1 ? i = !1 : Zi(l, s, o) : (i = !s.$stable, Xi(s, l)), r = s; - } else s && (Qi(e, s), r = { default: 1 }); - if (i) + u ? o && u === 1 ? r = !1 : dr(l, s, o) : (r = !s.$stable, cr(s, l)), c = s; + } else s && (ur(e, s), c = { default: 1 }); + if (r) for (const u in l) - !Va(u) && r[u] == null && delete l[u]; -}, St = wu; -function pu(e) { - return gu(e); + !el(u) && c[u] == null && delete l[u]; +}, Et = Ou; +function Mu(e) { + return Du(e); } -function gu(e, s) { - const o = On(); +function Du(e, s) { + const o = Kn(); o.__VUE__ = !0; const { insert: n, remove: l, - patchProp: i, - createElement: r, + patchProp: r, + createElement: c, createText: u, createComment: d, setText: m, setElementText: v, - parentNode: h, + parentNode: g, nextSibling: w, - setScopeId: p = ms, - insertStaticContent: _ - } = e, S = (D, V, se, ne = null, ue = null, de = null, $e = void 0, Ce = null, oe = !!V.dynamicChildren) => { - if (D === V) + setScopeId: p = gs, + insertStaticContent: k + } = e, C = (O, R, F, q = null, ne = null, re = null, $e = void 0, ie = null, we = !!R.dynamicChildren) => { + if (O === R) return; - D && !Ys(D, V) && (ne = Ge(D), Re(D, ue, de, !0), D = null), V.patchFlag === -2 && (oe = !1, V.dynamicChildren = null); - const { type: ce, ref: De, shapeFlag: xe } = V; - switch (ce) { - case Bn: - $(D, V, se, ne); + O && !Zs(O, R) && (q = ce(O), ze(O, ne, re, !0), O = null), R.patchFlag === -2 && (we = !1, R.dynamicChildren = null); + const { type: he, ref: Pe, shapeFlag: Ie } = R; + switch (he) { + case Zn: + b(O, R, F, q); break; - case _t: - P(D, V, se, ne); + case bt: + T(O, R, F, q); break; - case ea: - D == null && O(V, se, ne, $e); + case fa: + O == null && D(R, F, q, $e); break; - case j: - Y( - D, - V, - se, + case H: + W( + O, + R, + F, + q, ne, - ue, - de, + re, $e, - Ce, - oe + ie, + we ); break; default: - xe & 1 ? q( - D, - V, - se, + Ie & 1 ? U( + O, + R, + F, + q, ne, - ue, - de, + re, $e, - Ce, - oe - ) : xe & 6 ? H( - D, - V, - se, + ie, + we + ) : Ie & 6 ? A( + O, + R, + F, + q, ne, - ue, - de, + re, $e, - Ce, - oe - ) : (xe & 64 || xe & 128) && ce.process( - D, - V, - se, + ie, + we + ) : (Ie & 64 || Ie & 128) && he.process( + O, + R, + F, + q, ne, - ue, - de, + re, $e, - Ce, - oe, - Ve + ie, + we, + Re ); } - De != null && ue ? Ao(De, D && D.ref, de, V || D, !V) : De == null && D && D.ref != null && Ao(D.ref, null, de, D, !0); - }, $ = (D, V, se, ne) => { - if (D == null) + Pe != null && ne ? Go(Pe, O && O.ref, re, R || O, !R) : Pe == null && O && O.ref != null && Go(O.ref, null, re, O, !0); + }, b = (O, R, F, q) => { + if (O == null) n( - V.el = u(V.children), - se, - ne + R.el = u(R.children), + F, + q ); else { - const ue = V.el = D.el; - V.children !== D.children && m(ue, V.children); - } - }, P = (D, V, se, ne) => { - D == null ? n( - V.el = d(V.children || ""), - se, - ne - ) : V.el = D.el; - }, O = (D, V, se, ne) => { - [D.el, D.anchor] = _( - D.children, - V, - se, - ne, - D.el, - D.anchor + const ne = R.el = O.el; + R.children !== O.children && m(ne, R.children); + } + }, T = (O, R, F, q) => { + O == null ? n( + R.el = d(R.children || ""), + F, + q + ) : R.el = O.el; + }, D = (O, R, F, q) => { + [O.el, O.anchor] = k( + O.children, + R, + F, + q, + O.el, + O.anchor ); - }, T = ({ el: D, anchor: V }, se, ne) => { - let ue; - for (; D && D !== V; ) - ue = w(D), n(D, se, ne), D = ue; - n(V, se, ne); - }, x = ({ el: D, anchor: V }) => { - let se; - for (; D && D !== V; ) - se = w(D), l(D), D = se; - l(V); - }, q = (D, V, se, ne, ue, de, $e, Ce, oe) => { - if (V.type === "svg" ? $e = "svg" : V.type === "math" && ($e = "mathml"), D == null) + }, P = ({ el: O, anchor: R }, F, q) => { + let ne; + for (; O && O !== R; ) + ne = w(O), n(O, F, q), O = ne; + n(R, F, q); + }, E = ({ el: O, anchor: R }) => { + let F; + for (; O && O !== R; ) + F = w(O), l(O), O = F; + l(R); + }, U = (O, R, F, q, ne, re, $e, ie, we) => { + if (R.type === "svg" ? $e = "svg" : R.type === "math" && ($e = "mathml"), O == null) B( - V, - se, + R, + F, + q, ne, - ue, - de, + re, $e, - Ce, - oe + ie, + we ); else { - const ce = D.el && D.el._isVueCE ? D.el : null; + const he = O.el && O.el._isVueCE ? O.el : null; try { - ce && ce._beginPatch(), E( - D, - V, - ue, - de, + he && he._beginPatch(), I( + O, + R, + ne, + re, $e, - Ce, - oe + ie, + we ); } finally { - ce && ce._endPatch(); + he && he._endPatch(); } } - }, B = (D, V, se, ne, ue, de, $e, Ce) => { - let oe, ce; - const { props: De, shapeFlag: xe, transition: Z, dirs: K } = D; - if (oe = D.el = r( - D.type, - de, - De && De.is, - De - ), xe & 8 ? v(oe, D.children) : xe & 16 && I( - D.children, - oe, + }, B = (O, R, F, q, ne, re, $e, ie) => { + let we, he; + const { props: Pe, shapeFlag: Ie, transition: te, dirs: Y } = O; + if (we = O.el = c( + O.type, + re, + Pe && Pe.is, + Pe + ), Ie & 8 ? v(we, O.children) : Ie & 16 && S( + O.children, + we, null, + q, ne, - ue, - Zn(D, de), + da(O, re), $e, - Ce - ), K && Gs(D, null, ne, "created"), A(oe, D, D.scopeId, $e, ne), De) { - for (const he in De) - he !== "value" && !Mo(he) && i(oe, he, null, De[he], de, ne); - "value" in De && i(oe, "value", null, De.value, de), (ce = De.onVnodeBeforeMount) && is(ce, ne, D); - } - K && Gs(D, null, ne, "beforeMount"); - const Pe = hu(ue, Z); - Pe && Z.beforeEnter(oe), n(oe, V, se), ((ce = De && De.onVnodeMounted) || Pe || K) && St(() => { - ce && is(ce, ne, D), Pe && Z.enter(oe), K && Gs(D, null, ne, "mounted"); - }, ue); - }, A = (D, V, se, ne, ue) => { - if (se && p(D, se), ne) - for (let de = 0; de < ne.length; de++) - p(D, ne[de]); - if (ue) { - let de = ue.subTree; - if (V === de || tr(de.type) && (de.ssContent === V || de.ssFallback === V)) { - const $e = ue.vnode; - A( - D, + ie + ), Y && qs(O, null, q, "created"), V(we, O, O.scopeId, $e, q), Pe) { + for (const Ce in Pe) + Ce !== "value" && !Fo(Ce) && r(we, Ce, null, Pe[Ce], re, q); + "value" in Pe && r(we, "value", null, Pe.value, re), (he = Pe.onVnodeBeforeMount) && us(he, q, O); + } + Y && qs(O, null, q, "beforeMount"); + const Me = Lu(ne, te); + Me && te.beforeEnter(we), n(we, R, F), ((he = Pe && Pe.onVnodeMounted) || Me || Y) && Et(() => { + he && us(he, q, O), Me && te.enter(we), Y && qs(O, null, q, "mounted"); + }, ne); + }, V = (O, R, F, q, ne) => { + if (F && p(O, F), q) + for (let re = 0; re < q.length; re++) + p(O, q[re]); + if (ne) { + let re = ne.subTree; + if (R === re || mr(re.type) && (re.ssContent === R || re.ssFallback === R)) { + const $e = ne.vnode; + V( + O, $e, $e.scopeId, $e.slotScopeIds, - ue.parent + ne.parent ); } } - }, I = (D, V, se, ne, ue, de, $e, Ce, oe = 0) => { - for (let ce = oe; ce < D.length; ce++) { - const De = D[ce] = Ce ? Ls(D[ce]) : fs(D[ce]); - S( + }, S = (O, R, F, q, ne, re, $e, ie, we = 0) => { + for (let he = we; he < O.length; he++) { + const Pe = O[he] = ie ? Us(O[he]) : ps(O[he]); + C( null, - De, - V, - se, + Pe, + R, + F, + q, ne, - ue, - de, + re, $e, - Ce + ie ); } - }, E = (D, V, se, ne, ue, de, $e) => { - const Ce = V.el = D.el; - let { patchFlag: oe, dynamicChildren: ce, dirs: De } = V; - oe |= D.patchFlag & 16; - const xe = D.props || st, Z = V.props || st; - let K; - if (se && js(se, !1), (K = Z.onVnodeBeforeUpdate) && is(K, se, V, D), De && Gs(V, D, se, "beforeUpdate"), se && js(se, !0), (xe.innerHTML && Z.innerHTML == null || xe.textContent && Z.textContent == null) && v(Ce, ""), ce ? L( - D.dynamicChildren, - ce, - Ce, - se, - ne, - Zn(V, ue), - de - ) : $e || M( - D, - V, - Ce, + }, I = (O, R, F, q, ne, re, $e) => { + const ie = R.el = O.el; + let { patchFlag: we, dynamicChildren: he, dirs: Pe } = R; + we |= O.patchFlag & 16; + const Ie = O.props || nt, te = R.props || nt; + let Y; + if (F && Ys(F, !1), (Y = te.onVnodeBeforeUpdate) && us(Y, F, R, O), Pe && qs(R, O, F, "beforeUpdate"), F && Ys(F, !0), (Ie.innerHTML && te.innerHTML == null || Ie.textContent && te.textContent == null) && v(ie, ""), he ? L( + O.dynamicChildren, + he, + ie, + F, + q, + da(R, ne), + re + ) : $e || ee( + O, + R, + ie, null, - se, - ne, - Zn(V, ue), - de, + F, + q, + da(R, ne), + re, !1 - ), oe > 0) { - if (oe & 16) - re(Ce, xe, Z, se, ue); - else if (oe & 2 && xe.class !== Z.class && i(Ce, "class", null, Z.class, ue), oe & 4 && i(Ce, "style", xe.style, Z.style, ue), oe & 8) { - const Pe = V.dynamicProps; - for (let he = 0; he < Pe.length; he++) { - const ge = Pe[he], W = xe[ge], z = Z[ge]; - (z !== W || ge === "value") && i(Ce, ge, W, z, ue, se); + ), we > 0) { + if (we & 16) + Z(ie, Ie, te, F, ne); + else if (we & 2 && Ie.class !== te.class && r(ie, "class", null, te.class, ne), we & 4 && r(ie, "style", Ie.style, te.style, ne), we & 8) { + const Me = R.dynamicProps; + for (let Ce = 0; Ce < Me.length; Ce++) { + const ye = Me[Ce], K = Ie[ye], G = te[ye]; + (G !== K || ye === "value") && r(ie, ye, K, G, ne, F); } } - oe & 1 && D.children !== V.children && v(Ce, V.children); - } else !$e && ce == null && re(Ce, xe, Z, se, ue); - ((K = Z.onVnodeUpdated) || De) && St(() => { - K && is(K, se, V, D), De && Gs(V, D, se, "updated"); - }, ne); - }, L = (D, V, se, ne, ue, de, $e) => { - for (let Ce = 0; Ce < V.length; Ce++) { - const oe = D[Ce], ce = V[Ce], De = ( + we & 1 && O.children !== R.children && v(ie, R.children); + } else !$e && he == null && Z(ie, Ie, te, F, ne); + ((Y = te.onVnodeUpdated) || Pe) && Et(() => { + Y && us(Y, F, R, O), Pe && qs(R, O, F, "updated"); + }, q); + }, L = (O, R, F, q, ne, re, $e) => { + for (let ie = 0; ie < R.length; ie++) { + const we = O[ie], he = R[ie], Pe = ( // oldVNode may be an errored async setup() component inside Suspense // which will not have a mounted element - oe.el && // - In the case of a Fragment, we need to provide the actual parent + we.el && // - In the case of a Fragment, we need to provide the actual parent // of the Fragment itself so it can move its children. - (oe.type === j || // - In the case of different nodes, there is going to be a replacement + (we.type === H || // - In the case of different nodes, there is going to be a replacement // which also requires the correct parent container - !Ys(oe, ce) || // - In the case of a component, it could contain anything. - oe.shapeFlag & 198) ? h(oe.el) : ( + !Zs(we, he) || // - In the case of a component, it could contain anything. + we.shapeFlag & 198) ? g(we.el) : ( // In other cases, the parent container is not actually used so we // just pass the block element here to avoid a DOM parentNode call. - se + F ) ); - S( - oe, - ce, - De, + C( + we, + he, + Pe, null, + q, ne, - ue, - de, + re, $e, !0 ); } - }, re = (D, V, se, ne, ue) => { - if (V !== se) { - if (V !== st) - for (const de in V) - !Mo(de) && !(de in se) && i( - D, - de, - V[de], + }, Z = (O, R, F, q, ne) => { + if (R !== F) { + if (R !== nt) + for (const re in R) + !Fo(re) && !(re in F) && r( + O, + re, + R[re], null, - ue, - ne + ne, + q ); - for (const de in se) { - if (Mo(de)) continue; - const $e = se[de], Ce = V[de]; - $e !== Ce && de !== "value" && i(D, de, Ce, $e, ue, ne); + for (const re in F) { + if (Fo(re)) continue; + const $e = F[re], ie = R[re]; + $e !== ie && re !== "value" && r(O, re, ie, $e, ne, q); } - "value" in se && i(D, "value", V.value, se.value, ue); + "value" in F && r(O, "value", R.value, F.value, ne); } - }, Y = (D, V, se, ne, ue, de, $e, Ce, oe) => { - const ce = V.el = D ? D.el : u(""), De = V.anchor = D ? D.anchor : u(""); - let { patchFlag: xe, dynamicChildren: Z, slotScopeIds: K } = V; - K && (Ce = Ce ? Ce.concat(K) : K), D == null ? (n(ce, se, ne), n(De, se, ne), I( + }, W = (O, R, F, q, ne, re, $e, ie, we) => { + const he = R.el = O ? O.el : u(""), Pe = R.anchor = O ? O.anchor : u(""); + let { patchFlag: Ie, dynamicChildren: te, slotScopeIds: Y } = R; + Y && (ie = ie ? ie.concat(Y) : Y), O == null ? (n(he, F, q), n(Pe, F, q), S( // #10007 // such fragment like `<>` will be compiled into // a fragment which doesn't have a children. // In this case fallback to an empty array - V.children || [], - se, - De, - ue, - de, + R.children || [], + F, + Pe, + ne, + re, $e, - Ce, - oe - )) : xe > 0 && xe & 64 && Z && // #2715 the previous fragment could've been a BAILed one as a result + ie, + we + )) : Ie > 0 && Ie & 64 && te && // #2715 the previous fragment could've been a BAILed one as a result // of renderSlot() with no valid children - D.dynamicChildren ? (L( - D.dynamicChildren, - Z, - se, - ue, - de, + O.dynamicChildren ? (L( + O.dynamicChildren, + te, + F, + ne, + re, $e, - Ce + ie ), // #2080 if the stable fragment has a key, it's a