From 03c145e3595ab840842eb92f8c36291aa6159ab7 Mon Sep 17 00:00:00 2001 From: akatz-ai Date: Sat, 27 Dec 2025 04:52:28 +0000 Subject: [PATCH 1/4] fix: Show all workflows with issues in commit modal - Updated CommitPopover to display ALL workflows with issues, not just uncommitted ones (new/modified). This aligns UI with backend behavior where is_commit_safe blocks on any workflow with issues. - Changed header text from "can't run" to "have issues" for clarity - Added sync_state display next to workflow names so users can see which workflows are synced vs uncommitted - Improved blocked commit error messages to include actual issue details from the API response instead of generic text - Added CSS styling for workflow-state indicator Context: ctx://b8a6c4ebc56ed156/98e07973-937b-4115-9250-8074debafe6a --- frontend/src/components/CommitPopover.vue | 43 +- js/comfygit-panel.css | 2 +- js/comfygit-panel.js | 1512 +++++++++++---------- 3 files changed, 787 insertions(+), 770 deletions(-) diff --git a/frontend/src/components/CommitPopover.vue b/frontend/src/components/CommitPopover.vue index 6ade82a..79e715b 100644 --- a/frontend/src/components/CommitPopover.vue +++ b/frontend/src/components/CommitPopover.vue @@ -47,14 +47,16 @@ Loading... -
+
- {{ uncommittedWorkflowsWithIssues.length }} workflow(s) can't run + {{ workflowsWithIssues.length }} workflow(s) have issues
-
- {{ workflow.name }}: {{ workflow.issue_summary }} +
+ {{ workflow.name }} + ({{ workflow.sync_state }}): + {{ workflow.issue_summary }}
@@ -138,14 +140,16 @@ Loading...
-
+
- {{ uncommittedWorkflowsWithIssues.length }} workflow(s) can't run + {{ workflowsWithIssues.length }} workflow(s) have issues
-
- {{ workflow.name }}: {{ workflow.issue_summary }} +
+ {{ workflow.name }} + ({{ workflow.sync_state }}): + {{ workflow.issue_summary }}
@@ -223,20 +227,19 @@ const hasSpecificChanges = computed(() => { gc.nodes_added.length > 0 || gc.nodes_removed.length > 0 }) -const uncommittedWorkflowsWithIssues = computed(() => { +// Show ALL workflows with issues - is_commit_safe checks all workflows, not just uncommitted +const workflowsWithIssues = computed(() => { if (!props.status?.workflows.analyzed) return [] - return props.status.workflows.analyzed.filter( - w => w.has_issues && (w.sync_state === 'new' || w.sync_state === 'modified') - ) + return props.status.workflows.analyzed.filter(w => w.has_issues) }) -const hasUncommittedIssues = computed(() => uncommittedWorkflowsWithIssues.value.length > 0) +const hasWorkflowIssues = computed(() => workflowsWithIssues.value.length > 0) -const isBlockedByIssues = computed(() => hasUncommittedIssues.value && !allowIssues.value) +const isBlockedByIssues = computed(() => hasWorkflowIssues.value && !allowIssues.value) async function handleCommit() { // Guard: prevent commit if there are unresolved issues and user hasn't explicitly allowed - if (hasUncommittedIssues.value && !allowIssues.value) return + if (hasWorkflowIssues.value && !allowIssues.value) return if (!hasChanges.value || !message.value.trim() || isLoading.value) return isLoading.value = true @@ -250,7 +253,9 @@ async function handleCommit() { } else if (res.status === 'no_changes') { emit('committed', { success: false, message: 'No changes to commit' }) } else if (res.status === 'blocked') { - emit('committed', { success: false, message: 'Commit blocked - enable "Allow issues" to force commit' }) + // Include actual issues from the API response + const issuesList = res.issues?.map(i => `${i.name}: ${i.issue}`).join('; ') || 'Unknown issues' + emit('committed', { success: false, message: `Commit blocked - ${issuesList}. Enable "Allow issues" to force.` }) } else { emit('committed', { success: false, message: res.message || 'Commit failed' }) } @@ -429,6 +434,12 @@ async function handleCommit() { color: var(--cg-color-text-primary); } +.workflow-state { + color: var(--cg-color-text-muted); + font-size: var(--cg-font-size-xs); + margin-left: 4px; +} + .allow-issues-toggle { margin-top: 8px; font-size: var(--cg-font-size-xs); diff --git a/js/comfygit-panel.css b/js/comfygit-panel.css index f84904f..5c2eb13 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-6276cf1d]{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-6276cf1d]{width:32px;height:32px;border:3px solid var(--cg-color-border);border-top-color:var(--cg-color-accent);border-radius:50%;animation:spin-6276cf1d .8s linear infinite}@keyframes spin-6276cf1d{to{transform:rotate(360deg)}}.wizard-content[data-v-6276cf1d]{display:flex;flex-direction:column;gap:0}.step-content[data-v-6276cf1d]{padding:var(--cg-space-3)}.analysis-summary[data-v-6276cf1d]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.analysis-header[data-v-6276cf1d],.review-header[data-v-6276cf1d]{margin-bottom:var(--cg-space-2)}.summary-title[data-v-6276cf1d]{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-6276cf1d]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);margin:0}.stats-grid[data-v-6276cf1d]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--cg-space-3)}.stat-card[data-v-6276cf1d]{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-6276cf1d]{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-6276cf1d]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.stat-item[data-v-6276cf1d]{display:flex;align-items:center;gap:var(--cg-space-2);font-size:var(--cg-font-size-sm)}.stat-item.success[data-v-6276cf1d]{color:var(--cg-color-success)}.stat-item.warning[data-v-6276cf1d]{color:var(--cg-color-warning)}.stat-item.error[data-v-6276cf1d]{color:var(--cg-color-error)}.stat-item.info[data-v-6276cf1d]{color:var(--cg-color-info)}.stat-icon[data-v-6276cf1d]{font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-bold)}.stat-count[data-v-6276cf1d]{font-family:var(--cg-font-mono);font-weight:var(--cg-font-weight-semibold)}.stat-label[data-v-6276cf1d]{color:inherit;opacity:.8}.status-message[data-v-6276cf1d]{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-6276cf1d]{background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);color:var(--cg-color-warning)}.status-message.success[data-v-6276cf1d]{background:var(--cg-color-success-muted);border:1px solid var(--cg-color-success);color:var(--cg-color-success)}.status-message.info[data-v-6276cf1d]{background:var(--cg-color-info-muted);border:1px solid var(--cg-color-info);color:var(--cg-color-info)}.status-icon[data-v-6276cf1d]{font-size:var(--cg-font-size-lg)}.category-mismatch-section[data-v-6276cf1d]{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-6276cf1d]{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-6276cf1d]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.mismatch-item[data-v-6276cf1d]{display:flex;align-items:center;gap:var(--cg-space-2);font-size:var(--cg-font-size-sm);flex-wrap:wrap}.mismatch-path[data-v-6276cf1d]{font-family:var(--cg-font-mono);color:var(--cg-color-error)}.mismatch-arrow[data-v-6276cf1d]{color:var(--cg-color-text-muted)}.mismatch-target[data-v-6276cf1d]{font-family:var(--cg-font-mono);color:var(--cg-color-success)}.review-summary[data-v-6276cf1d]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.review-stats[data-v-6276cf1d]{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-6276cf1d]{display:flex;flex-direction:column;align-items:center;flex:1}.review-stat .stat-value[data-v-6276cf1d]{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-6276cf1d]{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-6276cf1d]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.section-title[data-v-6276cf1d]{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-6276cf1d]{display:flex;flex-direction:column;gap:var(--cg-space-1)}.review-item[data-v-6276cf1d]{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-6276cf1d]{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-6276cf1d]{display:flex;gap:var(--cg-space-2)}.choice-badge[data-v-6276cf1d]{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-6276cf1d],.choice-badge.download[data-v-6276cf1d]{background:var(--cg-color-success-muted);color:var(--cg-color-success)}.choice-badge.optional[data-v-6276cf1d]{background:var(--cg-color-info-muted);color:var(--cg-color-info)}.choice-badge.skip[data-v-6276cf1d]{background:var(--cg-color-bg-hover);color:var(--cg-color-text-muted)}.choice-badge.pending[data-v-6276cf1d]{background:var(--cg-color-bg-tertiary);color:var(--cg-color-text-muted);font-style:italic}.no-choices[data-v-6276cf1d]{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}.footer-spacer[data-v-6276cf1d]{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-d0fe6172]{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-d0fe6172]{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-d0fe6172]{border-radius:var(--cg-radius-lg);animation:modalSlideIn-d0fe6172 .2s ease}@keyframes modalSlideIn-d0fe6172{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.popover-header[data-v-d0fe6172]{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-d0fe6172]{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-d0fe6172]{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-d0fe6172]:hover{background:var(--cg-color-bg-hover);border-color:var(--cg-color-border-subtle)}.popover-body[data-v-d0fe6172]{padding:var(--cg-space-3);max-height:400px;overflow-y:auto}.popover-footer[data-v-d0fe6172]{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-d0fe6172]{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-d0fe6172]{display:flex;align-items:center;gap:6px;padding:2px 0}.change-icon[data-v-d0fe6172]{font-family:monospace;font-weight:600;width:12px;text-align:center}.change-icon.new[data-v-d0fe6172]{color:var(--cg-color-success)}.change-icon.modified[data-v-d0fe6172]{color:var(--cg-color-warning)}.change-icon.deleted[data-v-d0fe6172]{color:var(--cg-color-error)}.no-changes[data-v-d0fe6172],.loading[data-v-d0fe6172]{text-align:center;padding:12px;color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}.message-section[data-v-d0fe6172]{margin-bottom:8px}.issues-error[data-v-d0fe6172]{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-d0fe6172]{display:flex;align-items:center;gap:6px;margin-bottom:8px;color:var(--cg-color-error)}.error-icon[data-v-d0fe6172]{font-size:14px;line-height:1}.error-title[data-v-d0fe6172]{font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-medium)}.issues-list[data-v-d0fe6172]{margin-bottom:10px;font-size:var(--cg-font-size-xs);color:var(--cg-color-text-secondary)}.issue-item[data-v-d0fe6172]{padding:4px 0;line-height:1.4}.issue-item strong[data-v-d0fe6172]{color:var(--cg-color-text-primary)}.allow-issues-toggle[data-v-d0fe6172]{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)}.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-6276cf1d]{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-6276cf1d]{width:32px;height:32px;border:3px solid var(--cg-color-border);border-top-color:var(--cg-color-accent);border-radius:50%;animation:spin-6276cf1d .8s linear infinite}@keyframes spin-6276cf1d{to{transform:rotate(360deg)}}.wizard-content[data-v-6276cf1d]{display:flex;flex-direction:column;gap:0}.step-content[data-v-6276cf1d]{padding:var(--cg-space-3)}.analysis-summary[data-v-6276cf1d]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.analysis-header[data-v-6276cf1d],.review-header[data-v-6276cf1d]{margin-bottom:var(--cg-space-2)}.summary-title[data-v-6276cf1d]{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-6276cf1d]{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm);margin:0}.stats-grid[data-v-6276cf1d]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--cg-space-3)}.stat-card[data-v-6276cf1d]{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-6276cf1d]{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-6276cf1d]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.stat-item[data-v-6276cf1d]{display:flex;align-items:center;gap:var(--cg-space-2);font-size:var(--cg-font-size-sm)}.stat-item.success[data-v-6276cf1d]{color:var(--cg-color-success)}.stat-item.warning[data-v-6276cf1d]{color:var(--cg-color-warning)}.stat-item.error[data-v-6276cf1d]{color:var(--cg-color-error)}.stat-item.info[data-v-6276cf1d]{color:var(--cg-color-info)}.stat-icon[data-v-6276cf1d]{font-size:var(--cg-font-size-sm);font-weight:var(--cg-font-weight-bold)}.stat-count[data-v-6276cf1d]{font-family:var(--cg-font-mono);font-weight:var(--cg-font-weight-semibold)}.stat-label[data-v-6276cf1d]{color:inherit;opacity:.8}.status-message[data-v-6276cf1d]{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-6276cf1d]{background:var(--cg-color-warning-muted);border:1px solid var(--cg-color-warning);color:var(--cg-color-warning)}.status-message.success[data-v-6276cf1d]{background:var(--cg-color-success-muted);border:1px solid var(--cg-color-success);color:var(--cg-color-success)}.status-message.info[data-v-6276cf1d]{background:var(--cg-color-info-muted);border:1px solid var(--cg-color-info);color:var(--cg-color-info)}.status-icon[data-v-6276cf1d]{font-size:var(--cg-font-size-lg)}.category-mismatch-section[data-v-6276cf1d]{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-6276cf1d]{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-6276cf1d]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.mismatch-item[data-v-6276cf1d]{display:flex;align-items:center;gap:var(--cg-space-2);font-size:var(--cg-font-size-sm);flex-wrap:wrap}.mismatch-path[data-v-6276cf1d]{font-family:var(--cg-font-mono);color:var(--cg-color-error)}.mismatch-arrow[data-v-6276cf1d]{color:var(--cg-color-text-muted)}.mismatch-target[data-v-6276cf1d]{font-family:var(--cg-font-mono);color:var(--cg-color-success)}.review-summary[data-v-6276cf1d]{display:flex;flex-direction:column;gap:var(--cg-space-4)}.review-stats[data-v-6276cf1d]{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-6276cf1d]{display:flex;flex-direction:column;align-items:center;flex:1}.review-stat .stat-value[data-v-6276cf1d]{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-6276cf1d]{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-6276cf1d]{display:flex;flex-direction:column;gap:var(--cg-space-2)}.section-title[data-v-6276cf1d]{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-6276cf1d]{display:flex;flex-direction:column;gap:var(--cg-space-1)}.review-item[data-v-6276cf1d]{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-6276cf1d]{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-6276cf1d]{display:flex;gap:var(--cg-space-2)}.choice-badge[data-v-6276cf1d]{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-6276cf1d],.choice-badge.download[data-v-6276cf1d]{background:var(--cg-color-success-muted);color:var(--cg-color-success)}.choice-badge.optional[data-v-6276cf1d]{background:var(--cg-color-info-muted);color:var(--cg-color-info)}.choice-badge.skip[data-v-6276cf1d]{background:var(--cg-color-bg-hover);color:var(--cg-color-text-muted)}.choice-badge.pending[data-v-6276cf1d]{background:var(--cg-color-bg-tertiary);color:var(--cg-color-text-muted);font-style:italic}.no-choices[data-v-6276cf1d]{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}.footer-spacer[data-v-6276cf1d]{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} diff --git a/js/comfygit-panel.js b/js/comfygit-panel.js index 53fe557..8aec690 100644 --- a/js/comfygit-panel.js +++ b/js/comfygit-panel.js @@ -1000,15 +1000,15 @@ function xc(e, t = !1, o = qs) { } } function Sc(e, t, o = et) { - const { immediate: n, deep: l, once: i, scheduler: r, augmentJob: u, call: d } = o, m = (S) => l ? S : zt(S) || l === !1 || l === 0 ? _s(S, 1) : _s(S); - let v, h, w, p, _ = !1, x = !1; - if ($t(e) ? (h = () => e.value, _ = zt(e)) : Xs(e) ? (h = () => m(e), _ = !0) : Ae(e) ? (x = !0, _ = e.some((S) => Xs(S) || zt(S)), h = () => e.map((S) => { - if ($t(S)) - return S.value; - if (Xs(S)) - return m(S); - if (ze(S)) - return d ? d(S, 2) : S(); + const { immediate: n, deep: l, once: i, scheduler: r, augmentJob: u, call: d } = o, m = (x) => l ? x : zt(x) || l === !1 || l === 0 ? _s(x, 1) : _s(x); + let v, h, w, p, _ = !1, S = !1; + if ($t(e) ? (h = () => e.value, _ = zt(e)) : Xs(e) ? (h = () => m(e), _ = !0) : Ae(e) ? (S = !0, _ = e.some((x) => Xs(x) || zt(x)), h = () => e.map((x) => { + if ($t(x)) + return x.value; + if (Xs(x)) + return m(x); + if (ze(x)) + return d ? d(x, 2) : x(); })) : ze(e) ? t ? h = d ? () => d(e, 2) : e : h = () => { if (w) { $s(); @@ -1018,32 +1018,32 @@ function Sc(e, t, o = et) { Cs(); } } - const S = qs; + const x = qs; qs = v; try { return d ? d(e, 3, [p]) : e(p); } finally { - qs = S; + qs = x; } } : h = fs, t && l) { - const S = h, q = l === !0 ? 1 / 0 : l; - h = () => _s(S(), q); + const x = h, q = l === !0 ? 1 / 0 : l; + h = () => _s(x(), q); } const $ = Zr(), P = () => { v.stop(), $ && $.active && Ta($.effects, v); }; if (i && t) { - const S = t; + const x = t; t = (...q) => { - S(...q), P(); + x(...q), P(); }; } - let N = x ? new Array(e.length).fill(nn) : nn; - const T = (S) => { - if (!(!(v.flags & 1) || !v.dirty && !S)) + let N = S ? new Array(e.length).fill(nn) : nn; + const T = (x) => { + if (!(!(v.flags & 1) || !v.dirty && !x)) if (t) { const q = v.run(); - if (l || _ || (x ? q.some((B, A) => Ns(B, N[A])) : Ns(q, N))) { + if (l || _ || (S ? q.some((B, A) => Ns(B, N[A])) : Ns(q, N))) { w && w(); const B = qs; qs = v; @@ -1051,7 +1051,7 @@ function Sc(e, t, o = et) { const A = [ q, // pass undefined as the old value when it's changed for the first time - N === nn ? void 0 : x && N[0] === nn ? [] : N, + N === nn ? void 0 : S && N[0] === nn ? [] : N, p ]; N = q, d ? d(t, 3, A) : ( @@ -1065,13 +1065,13 @@ function Sc(e, t, o = et) { } else v.run(); }; - return u && u(T), v = new ai(h), v.scheduler = r ? () => r(T, !1) : T, p = (S) => xc(S, !1, v), w = v.onStop = () => { - const S = bn.get(v); - if (S) { + 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) { if (d) - d(S, 4); + d(x, 4); else - for (const q of S) q(); + for (const q of x) q(); bn.delete(v); } }, t ? n ? T(!0) : N = 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; @@ -1294,11 +1294,11 @@ const xi = Symbol("_vte"), Si = (e) => e.__isTeleport, Oo = (e) => e && (e.disab mc: v, pc: h, pbc: w, - o: { insert: p, querySelector: _, createText: x, createComment: $ } + o: { insert: p, querySelector: _, createText: S, createComment: $ } } = m, P = Oo(t.props); - let { shapeFlag: N, children: T, dynamicChildren: S } = t; + let { shapeFlag: N, children: T, dynamicChildren: x } = t; if (e == null) { - const q = t.el = x(""), B = t.anchor = x(""); + const q = t.el = S(""), B = t.anchor = S(""); p(q, o, n), p(B, o, n); const A = (E, O) => { N & 16 && v( @@ -1312,7 +1312,7 @@ const xi = Symbol("_vte"), Si = (e) => e.__isTeleport, Oo = (e) => e && (e.disab d ); }, I = () => { - const E = t.target = pa(t.props, _), O = Ei(E, t, x, p); + const E = t.target = pa(t.props, _), O = Ei(E, t, 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, O), mn(t, !1))); }; P && (A(o, B), mn(t, !0)), il(t.props) ? (t.el.__isMounted = !1, St(() => { @@ -1338,9 +1338,9 @@ const xi = Symbol("_vte"), Si = (e) => e.__isTeleport, Oo = (e) => e && (e.disab } t.el = e.el, t.targetStart = e.targetStart; const q = t.anchor = e.anchor, B = t.target = e.target, A = t.targetAnchor = e.targetAnchor, I = Oo(e.props), E = I ? o : B, O = I ? q : A; - if (r === "svg" || rl(B) ? r = "svg" : (r === "mathml" || cl(B)) && (r = "mathml"), S ? (w( + if (r === "svg" || rl(B) ? r = "svg" : (r === "mathml" || cl(B)) && (r = "mathml"), x ? (w( e.dynamicChildren, - S, + x, E, l, i, @@ -1399,13 +1399,13 @@ const xi = Symbol("_vte"), Si = (e) => e.__isTeleport, Oo = (e) => e && (e.disab if (h && (l(m), l(v)), i && l(d), r & 16) { const p = i || !Oo(w); for (let _ = 0; _ < u.length; _++) { - const x = u[_]; + const S = u[_]; n( - x, + S, t, o, p, - !!x.dynamicChildren + !!S.dynamicChildren ); } } @@ -1429,11 +1429,11 @@ function an(e, t, o, { o: { insert: n }, m: l }, i = 2) { function Pc(e, t, o, n, l, i, { o: { nextSibling: r, parentNode: u, querySelector: d, insert: m, createText: v } }, h) { - function w(x, $, P, N) { + function w(S, $, P, N) { $.anchor = h( - r(x), + r(S), $, - u(x), + u(S), o, n, l, @@ -1445,18 +1445,18 @@ function Pc(e, t, o, n, l, i, { d ), _ = Oo(t.props); if (p) { - const x = p._lpa || p.firstChild; + const S = p._lpa || p.firstChild; if (t.shapeFlag & 16) if (_) w( e, t, - x, - x && r(x) + S, + S && r(S) ); else { t.anchor = r(e); - let $ = x; + let $ = S; for (; $; ) { if ($ && $.nodeType === 8) { if ($.data === "teleport start anchor") @@ -1469,7 +1469,7 @@ function Pc(e, t, o, n, l, i, { $ = r($); } t.targetAnchor || Ei(p, t, v, m), h( - x && r(x), + S && r(S), t, p, o, @@ -1569,11 +1569,11 @@ const At = [Function, Array], Pi = { 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 x = Di( + const S = Di( n, v ); - x[String(v.key)] = v, w[ws] = () => { + S[String(v.key)] = v, w[ws] = () => { p(), w[ws] = void 0, delete m.delayedLeave, v = void 0; }, m.delayedLeave = () => { _(), delete m.delayedLeave, v = void 0; @@ -1613,12 +1613,12 @@ function jo(e, t, o, n, l) { onBeforeLeave: w, onLeave: p, onAfterLeave: _, - onLeaveCancelled: x, + onLeaveCancelled: S, onBeforeAppear: $, onAppear: P, onAfterAppear: N, onAppearCancelled: T - } = t, S = String(e.key), q = Di(o, e), B = (E, O) => { + } = t, x = String(e.key), q = Di(o, e), B = (E, O) => { E && es( E, n, @@ -1642,7 +1642,7 @@ function jo(e, t, o, n, l) { !0 /* cancelled */ ); - const re = q[S]; + const re = q[x]; re && Ys(e, re) && re.el[ws] && re.el[ws](), B(O, [E]); }, enter(E) { @@ -1668,7 +1668,7 @@ function jo(e, t, o, n, l) { B(w, [E]); let Y = !1; const H = E[ws] = (te) => { - Y || (Y = !0, O(), te ? B(x, [E]) : B(_, [E]), E[ws] = void 0, q[re] === e && delete q[re]); + Y || (Y = !0, O(), te ? B(S, [E]) : B(_, [E]), E[ws] = void 0, q[re] === e && delete q[re]); }; q[re] = e, p ? A(p, [E, H]) : H(); }, @@ -1734,9 +1734,9 @@ const $n = /* @__PURE__ */ new WeakMap(); function No(e, t, o, n, l = !1) { if (Ae(e)) { e.forEach( - (_, x) => No( + (_, S) => No( _, - t && (Ae(t) ? t[x] : t), + t && (Ae(t) ? t[S] : t), o, n, l @@ -1761,8 +1761,8 @@ function No(e, t, o, n, l = !1) { if (ze(d)) Xo(d, u, 12, [r, v]); else { - const _ = it(d), x = $t(d); - if (_ || x) { + const _ = it(d), S = $t(d); + if (_ || S) { const $ = () => { if (e.f) { const P = _ ? p(d) ? h[d] : v[d] : d.value; @@ -1776,7 +1776,7 @@ function No(e, t, o, n, l = !1) { const N = [i]; d.value = N, e.k && (v[e.k] = N); } - } else _ ? (v[d] = r, p(d) && (h[d] = r)) : x && (d.value = r, e.k && (v[e.k] = r)); + } else _ ? (v[d] = r, p(d) && (h[d] = r)) : S && (d.value = r, e.k && (v[e.k] = r)); }; if (r) { const P = () => { @@ -2063,12 +2063,12 @@ function jc(e) { mounted: w, beforeUpdate: p, updated: _, - activated: x, + activated: S, deactivated: $, beforeDestroy: P, beforeUnmount: N, destroyed: T, - unmounted: S, + unmounted: x, render: q, renderTracked: B, renderTriggered: A, @@ -2117,7 +2117,7 @@ function jc(e) { function U(z, R) { Ae(R) ? R.forEach((be) => z(be.bind(o))) : R && z(R.bind(o)); } - if (U(Nc, h), U(Qe, w), U(Ac, p), U(Ni, _), U(Dc, x), U(Lc, $), U(Bc, I), U(Fc, B), U(zc, A), U(Ai, N), U(wo, S), U(Uc, E), Ae(O)) + if (U(Nc, h), U(Qe, w), U(Ac, p), U(Ni, _), U(Dc, S), U(Lc, $), U(Bc, I), U(Fc, B), U(zc, A), U(Ai, N), U(wo, x), U(Uc, E), Ae(O)) if (O.length) { const z = e.exposed || (e.exposed = {}); O.forEach((R) => { @@ -2384,7 +2384,7 @@ function Wi(e, t, o = et) { } } const v = kt; - u.call = (p, _, x) => es(p, v, _, x); + u.call = (p, _, S) => es(p, v, _, S); let h = !1; i === "post" ? u.scheduler = (p) => { St(p, v && v.suspense); @@ -2476,16 +2476,16 @@ function hl(e) { data: w, setupState: p, ctx: _, - inheritAttrs: x + inheritAttrs: S } = e, $ = kn(e); let P, N; try { if (o.shapeFlag & 4) { - const S = l || n, q = S; + const x = l || n, q = x; P = ds( m.call( q, - S, + x, v, h, p, @@ -2494,24 +2494,24 @@ function hl(e) { ) ), N = u; } else { - const S = t; + const x = t; P = ds( - S.length > 1 ? S( + x.length > 1 ? x( h, { attrs: u, slots: r, emit: d } - ) : S( + ) : x( h, null ) ), N = t.props ? u : au(u); } - } catch (S) { - Uo.length = 0, An(S, e, 1), P = C(_t); + } catch (x) { + Uo.length = 0, An(x, e, 1), P = C(_t); } let T = P; - if (N && x !== !1) { - const S = Object.keys(N), { shapeFlag: q } = T; - S.length && q & 7 && (i && S.some(Ea) && (N = lu( + if (N && S !== !1) { + const x = Object.keys(N), { shapeFlag: q } = T; + x.length && q & 7 && (i && x.some(Ea) && (N = lu( N, i )), T = As(T, N, !1, !0)); @@ -2724,24 +2724,24 @@ function Ji(e, t, o = !1) { const h = Bt(v); if (wl(h)) { const w = i[v], p = r[h] = Ae(w) || ze(w) ? { type: w } : mt({}, w), _ = p.type; - let x = !1, $ = !0; + let S = !1, $ = !0; if (Ae(_)) for (let P = 0; P < _.length; ++P) { const N = _[P], T = ze(N) && N.name; if (T === "Boolean") { - x = !0; + S = !0; break; } else T === "String" && ($ = !1); } else - x = ze(_) && _.name === "Boolean"; + S = ze(_) && _.name === "Boolean"; p[ 0 /* shouldCast */ - ] = x, p[ + ] = S, p[ 1 /* shouldCastTrue */ - ] = $, (x || Xe(p, "default")) && u.push(h); + ] = $, (S || Xe(p, "default")) && u.push(h); } } const m = [r, u]; @@ -2809,7 +2809,7 @@ function gu(e, t) { nextSibling: w, setScopeId: p = fs, insertStaticContent: _ - } = e, x = (L, V, oe, ae = null, de = null, fe = null, ke = void 0, $e = null, ne = !!V.dynamicChildren) => { + } = e, S = (L, V, oe, ae = null, de = null, fe = null, ke = void 0, $e = null, ne = !!V.dynamicChildren) => { if (L === V) return; L && !Ys(L, V) && (ae = Ve(L), De(L, de, fe, !0), L = null), V.patchFlag === -2 && (ne = !1, V.dynamicChildren = null); @@ -2903,7 +2903,7 @@ function gu(e, t) { for (; L && L !== V; ) de = w(L), n(L, oe, ae), L = de; n(V, oe, ae); - }, S = ({ el: L, anchor: V }) => { + }, x = ({ el: L, anchor: V }) => { let oe; for (; L && L !== V; ) oe = w(L), l(L), L = oe; @@ -2983,7 +2983,7 @@ function gu(e, t) { }, I = (L, V, oe, ae, de, fe, ke, $e, ne = 0) => { for (let ue = ne; ue < L.length; ue++) { const Re = L[ue] = $e ? Ls(L[ue]) : ds(L[ue]); - x( + S( null, Re, V, @@ -3050,7 +3050,7 @@ function gu(e, t) { oe ) ); - x( + S( ne, ue, Re, @@ -3190,7 +3190,7 @@ function gu(e, t) { let W = Ce, ce; js(L, !1), Ce ? (Ce.el = D.el, z(L, Ce, ke)) : Ce = D, ee && fn(ee), (ce = Ce.props && Ce.props.onVnodeBeforeUpdate) && ls(ce, X, Ce, D), js(L, !0); const Te = hl(L), Ke = L.subTree; - L.subTree = Te, x( + L.subTree = Te, S( Ke, Te, // parent may have changed if it's in a teleport @@ -3212,7 +3212,7 @@ function gu(e, t) { ce.ce && // @ts-expect-error _def is private ce.ce._def.shadowRoot !== !1 && ce.ce._injectChildStyle(Te); const rt = L.subTree = hl(L); - x( + S( null, rt, oe, @@ -3298,7 +3298,7 @@ function gu(e, t) { let ee; for (ee = 0; ee < Ce; ee++) { const K = V[ee] = ne ? Ls(V[ee]) : ds(V[ee]); - x( + S( L[ee], K, oe, @@ -3335,7 +3335,7 @@ function gu(e, t) { for (; ue <= Ce && ue <= ee; ) { const K = L[ue], X = V[ue] = ne ? Ls(V[ue]) : ds(V[ue]); if (Ys(K, X)) - x( + S( K, X, oe, @@ -3353,7 +3353,7 @@ function gu(e, t) { for (; ue <= Ce && ue <= ee; ) { const K = L[Ce], X = V[ee] = ne ? Ls(V[ee]) : ds(V[ee]); if (Ys(K, X)) - x( + S( K, X, oe, @@ -3372,7 +3372,7 @@ function gu(e, t) { if (ue <= ee) { const K = ee + 1, X = K < Re ? V[K].el : ae; for (; ue <= ee; ) - x( + S( null, V[ue] = ne ? Ls(V[ue]) : ds(V[ue]), oe, @@ -3413,7 +3413,7 @@ function gu(e, t) { ft = W; break; } - ft === void 0 ? De(ct, de, fe, !0) : (yt[ft - X] = ue + 1, ft >= rt ? rt = ft : Ke = !0, x( + ft === void 0 ? De(ct, de, fe, !0) : (yt[ft - X] = ue + 1, ft >= rt ? rt = ft : Ke = !0, S( ct, V[ft], oe, @@ -3431,7 +3431,7 @@ function gu(e, t) { // #13559, fallback to el placeholder for unresolved async component Wt.el || Wt.placeholder ) : ae; - yt[ue] === 0 ? x( + yt[ue] === 0 ? S( null, ft, oe, @@ -3542,7 +3542,7 @@ function gu(e, t) { return; } if (V === ea) { - S(L); + x(L); return; } const fe = () => { @@ -3576,7 +3576,7 @@ function gu(e, t) { }; let ye = !1; const le = (L, V, oe) => { - L == null ? V._vnode && De(V._vnode, null, null, !0) : x( + L == null ? V._vnode && De(V._vnode, null, null, !0) : S( V._vnode || null, L, V, @@ -3586,7 +3586,7 @@ function gu(e, t) { oe ), V._vnode = L, ye || (ye = !0, ll(), ki(), ye = !1); }, Fe = { - p: x, + p: S, um: De, m: Ee, r: je, @@ -4209,11 +4209,11 @@ function cr(e) { leaveFromClass: h = `${o}-leave-from`, leaveActiveClass: w = `${o}-leave-active`, leaveToClass: p = `${o}-leave-to` - } = e, _ = zu(l), x = _ && _[0], $ = _ && _[1], { + } = e, _ = zu(l), S = _ && _[0], $ = _ && _[1], { onBeforeEnter: P, onEnter: N, onEnterCancelled: T, - onLeave: S, + onLeave: x, onLeaveCancelled: q, onBeforeAppear: B = P, onAppear: A = N, @@ -4225,7 +4225,7 @@ function cr(e) { }, re = (Y) => (H, te) => { const Z = Y ? A : N, U = () => E(H, Y, te); Hs(Z, [H, U]), Sl(() => { - Rs(H, Y ? d : i), rs(H, Y ? v : u), xl(Z) || Il(H, n, x, U); + Rs(H, Y ? d : i), rs(H, Y ? v : u), xl(Z) || Il(H, n, S, U); }); }; return mt(t, { @@ -4241,8 +4241,8 @@ function cr(e) { Y._isLeaving = !0; const te = () => O(Y, H); rs(Y, h), Y._enterCancelled ? (rs(Y, w), ka(Y)) : (ka(Y), rs(Y, w)), Sl(() => { - Y._isLeaving && (Rs(Y, h), rs(Y, p), xl(S) || Il(Y, n, $, te)); - }), Hs(S, [Y, te]); + Y._isLeaving && (Rs(Y, h), rs(Y, p), xl(x) || Il(Y, n, $, te)); + }), Hs(x, [Y, te]); }, onEnterCancelled(Y) { E(Y, !1, void 0, !0), Hs(T, [Y]); @@ -5292,30 +5292,30 @@ const yd = { class: "panel-layout" }, wd = { const n = F(() => { var w, p, _; return ((_ = (p = (w = t.status) == null ? void 0 : w.workflows) == null ? void 0 : p.analyzed) == null ? void 0 : _.filter( - (x) => x.status === "broken" && x.sync_state === "synced" + (S) => S.status === "broken" && S.sync_state === "synced" )) || []; }), l = F(() => { var w, p, _; return ((_ = (p = (w = t.status) == null ? void 0 : w.workflows) == null ? void 0 : p.analyzed) == null ? void 0 : _.filter( - (x) => x.status === "broken" && x.sync_state !== "synced" + (S) => S.status === "broken" && S.sync_state !== "synced" )) || []; }), i = F(() => { var w, p, _; - return ((_ = (p = (w = t.status) == null ? void 0 : w.workflows) == null ? void 0 : p.synced) == null ? void 0 : _.filter((x) => { + return ((_ = (p = (w = t.status) == null ? void 0 : w.workflows) == null ? void 0 : p.synced) == null ? void 0 : _.filter((S) => { var P, N, T; - const $ = (T = (N = (P = t.status) == null ? void 0 : P.workflows) == null ? void 0 : N.analyzed) == null ? void 0 : T.find((S) => S.name === x); + const $ = (T = (N = (P = t.status) == null ? void 0 : P.workflows) == null ? void 0 : N.analyzed) == null ? void 0 : T.find((x) => x.name === S); return !$ || $.status !== "broken"; })) || []; }), r = F(() => { - var w, p, _, x, $; - return (w = t.status) != null && w.workflows ? (((p = t.status.workflows.new) == null ? void 0 : p.length) ?? 0) > 0 || (((_ = t.status.workflows.modified) == null ? void 0 : _.length) ?? 0) > 0 || (((x = t.status.workflows.deleted) == null ? void 0 : x.length) ?? 0) > 0 || ((($ = t.status.workflows.synced) == null ? void 0 : $.length) ?? 0) > 0 : !1; + var w, p, _, S, $; + return (w = t.status) != null && w.workflows ? (((p = t.status.workflows.new) == null ? void 0 : p.length) ?? 0) > 0 || (((_ = t.status.workflows.modified) == null ? void 0 : _.length) ?? 0) > 0 || (((S = t.status.workflows.deleted) == null ? void 0 : S.length) ?? 0) > 0 || ((($ = t.status.workflows.synced) == null ? void 0 : $.length) ?? 0) > 0 : !1; }), u = F(() => { - var p, _, x; + var p, _, S; const w = (p = t.status) == null ? void 0 : p.git_changes; - return w ? (((_ = w.nodes_added) == null ? void 0 : _.length) ?? 0) > 0 || (((x = w.nodes_removed) == null ? void 0 : x.length) ?? 0) > 0 || w.workflow_changes || w.has_other_changes : !1; + return w ? (((_ = w.nodes_added) == null ? void 0 : _.length) ?? 0) > 0 || (((S = w.nodes_removed) == null ? void 0 : S.length) ?? 0) > 0 || w.workflow_changes || w.has_other_changes : !1; }), d = F(() => { - var w, p, _, x, $, P; - return !r.value && !u.value && ((p = (w = t.status) == null ? void 0 : w.comparison) == null ? void 0 : p.is_synced) && (((_ = t.status) == null ? void 0 : _.missing_models_count) ?? 0) === 0 && (((P = ($ = (x = t.status) == null ? void 0 : x.comparison) == null ? void 0 : $.disabled_nodes) == null ? void 0 : P.length) ?? 0) === 0; + var w, p, _, S, $, P; + return !r.value && !u.value && ((p = (w = t.status) == null ? void 0 : w.comparison) == null ? void 0 : p.is_synced) && (((_ = t.status) == null ? void 0 : _.missing_models_count) ?? 0) === 0 && (((P = ($ = (S = t.status) == null ? void 0 : S.comparison) == null ? void 0 : $.disabled_nodes) == null ? void 0 : P.length) ?? 0) === 0; }), m = F(() => { var p, _; const w = (_ = (p = t.status) == null ? void 0 : p.git_changes) == null ? void 0 : _.workflow_changes; @@ -5328,7 +5328,7 @@ const yd = { class: "panel-layout" }, wd = { return typeof w == "object" && w.is_development === !0; } return (w, p) => { - var _, x, $, P, N, T, S, q, B, A, I, E, O, re, Y, H, te, Z, U, z, R, be; + var _, S, $, P, N, T, x, q, B, A, I, E, O, re, Y, H, te, Z, U, z, R, be; return a(), M(ht, { to: "body" }, [ e.show ? (a(), c("div", { key: 0, @@ -5404,7 +5404,7 @@ const yd = { class: "panel-layout" }, wd = { ]))), 128)) ]) ])) : y("", !0), - (x = (_ = e.status.workflows) == null ? void 0 : _.new) != null && x.length ? (a(), c("div", Df, [ + (S = (_ = e.status.workflows) == null ? void 0 : _.new) != null && S.length ? (a(), c("div", Df, [ s("div", Lf, [ p[13] || (p[13] = s("span", { class: "workflow-status-icon new" }, "●", -1)), s("span", Of, "NEW (" + f(e.status.workflows.new.length) + ")", 1) @@ -5472,7 +5472,7 @@ const yd = { class: "panel-layout" }, wd = { ])]), _: 1 }), - (q = (S = e.status.git_changes) == null ? void 0 : S.nodes_added) != null && q.length ? (a(), c("div", em, [ + (q = (x = e.status.git_changes) == null ? void 0 : x.nodes_added) != null && q.length ? (a(), c("div", em, [ s("div", tm, [ p[18] || (p[18] = s("span", { class: "change-icon add" }, "+", -1)), s("span", sm, "NODES ADDED (" + f(e.status.git_changes.nodes_added.length) + ")", 1) @@ -5694,21 +5694,21 @@ const yd = { class: "panel-layout" }, wd = { function _() { l.value = !1; } - const x = F(() => { + const S = F(() => { const Z = n.status.workflows.analyzed || [], U = Z.filter( (z) => z.unresolved_models_count > 0 || z.ambiguous_models_count > 0 ); return U.length === 0 && n.status.missing_models_count > 0 ? Z.filter((z) => z.sync_state === "synced") : U; }); function $() { - const Z = x.value; + const Z = S.value; Z.length !== 0 && (v.value = !0, m("repair-missing-models", Z.map((U) => U.name))); } function P() { v.value = !1; } t({ resetRepairingState: P, resetRepairingEnvironmentState: p, closeDetailModal: _ }); - const N = F(() => n.status.workflows.new.length > 0 || n.status.workflows.modified.length > 0 || n.status.workflows.deleted.length > 0), T = F(() => n.status.has_changes), S = F(() => { + const N = F(() => n.status.workflows.new.length > 0 || n.status.workflows.modified.length > 0 || n.status.workflows.deleted.length > 0), T = F(() => n.status.has_changes), x = F(() => { const Z = n.status.git_changes; return Z.nodes_added.length > 0 || Z.nodes_removed.length > 0 || Z.workflow_changes; }), q = F(() => n.status.has_changes || N.value), B = F(() => Object.keys(n.status.git_changes.workflow_changes_detail).length), A = F(() => n.status.git_changes.has_other_changes), I = F(() => { @@ -5897,7 +5897,7 @@ const yd = { class: "panel-layout" }, wd = { label: "other changes", variant: "modified" })) : y("", !0), - T.value && !S.value && !A.value ? (a(), M(is, { + T.value && !x.value && !A.value ? (a(), M(is, { key: 4, icon: "●", label: "configuration updated", @@ -6424,13 +6424,13 @@ const yd = { class: "panel-layout" }, wd = { _: 1 })); } -}), bv = /* @__PURE__ */ pe(wv, [["__scopeId", "data-v-981c3c64"]]), wT = Fs({ +}), bv = /* @__PURE__ */ pe(wv, [["__scopeId", "data-v-981c3c64"]]), _T = Fs({ hasWorkspace: !1, hasEnvironments: !1, isManaged: !1, hasLegacyManager: !1 }); -const bT = [ +const kT = [ // BROKEN workflows (4) - Missing dependencies or category mismatch { name: "flux-dev-img2img.json", @@ -6512,7 +6512,7 @@ const bT = [ model_count: 1 + t % 3, sync_state: "synced" })) -], _T = { +], $T = { "flux-dev-img2img.json": { name: "flux-dev-img2img.json", status: "broken", @@ -6756,7 +6756,7 @@ const bT = [ clip_type: "clip_l" } } -], kT = [ +], CT = [ ..._v, { filename: "v1-5-pruned.ckpt", @@ -6892,7 +6892,7 @@ function at() { body: JSON.stringify({ branch: J, force: we }) }); } - async function x(J, we = !1) { + async function S(J, we = !1) { return o(`/v2/comfygit/branch/${encodeURIComponent(J)}`, { method: "DELETE", headers: { "Content-Type": "application/json" }, @@ -6942,7 +6942,7 @@ function at() { body: JSON.stringify(J) }); } - async function S() { + async function x() { return o("/v2/workspace/environments/create_status"); } async function q(J = 20) { @@ -7469,13 +7469,13 @@ function at() { checkout: w, createBranch: p, switchBranch: _, - deleteBranch: x, + deleteBranch: S, // Environment Management getEnvironments: $, switchEnvironment: P, getSwitchProgress: N, createEnvironment: T, - getCreateProgress: S, + getCreateProgress: x, getComfyUIReleases: q, deleteEnvironment: B, // Workflow Management @@ -7850,7 +7850,7 @@ const $v = { class: "base-modal-header" }, Cv = { { label: "Flexible", value: "flexible" }, { label: "Optional", value: "optional" } ]; - function x(I) { + function S(I) { switch (I) { case "available": return "success"; @@ -7891,7 +7891,7 @@ const $v = { class: "base-modal-header" }, Cv = { function T(I) { p.value.has(I) ? p.value.delete(I) : p.value.add(I), p.value = new Set(p.value); } - async function S() { + async function x() { d.value = !0, m.value = null; try { u.value = await l(o.workflowName); @@ -7927,7 +7927,7 @@ const $v = { class: "base-modal-header" }, Cv = { d.value = !1; } } - return Qe(S), (I, E) => (a(), c(j, null, [ + return Qe(x), (I, E) => (a(), c(j, null, [ C(vt, { title: `WORKFLOW DETAILS: ${e.workflowName}`, size: "lg", @@ -7959,7 +7959,7 @@ const $v = { class: "base-modal-header" }, Cv = { s("div", Xv, [ E[7] || (E[7] = s("span", { class: "label" }, "Status:", -1)), s("span", { - class: xe(["value", x(O.status)]) + class: xe(["value", S(O.status)]) }, f($(O.status)), 3) ]), s("div", Qv, [ @@ -8214,7 +8214,7 @@ function en() { function e($) { for (const P of $) { if (qe.items.some( - (S) => S.url === P.url && S.targetPath === P.targetPath && ["queued", "downloading", "paused", "completed"].includes(S.status) + (x) => x.url === P.url && x.targetPath === P.targetPath && ["queued", "downloading", "paused", "completed"].includes(x.status) )) { console.log(`[ComfyGit] Skipping duplicate download: ${P.filename}`); continue; @@ -8291,7 +8291,7 @@ function en() { () => qe.items.filter(($) => $.status === "paused") ), p = F(() => qe.items.length > 0), _ = F( () => qe.items.filter(($) => $.status === "queued" || $.status === "downloading").length - ), x = F( + ), S = F( () => qe.items.some(($) => $.status === "paused") ); return { @@ -8305,7 +8305,7 @@ function en() { pausedItems: w, hasItems: p, activeCount: _, - hasPaused: x, + hasPaused: S, // Actions addToQueue: e, cancelDownload: t, @@ -8324,12 +8324,12 @@ function hr() { var q; if (!((q = window.app) != null && q.api)) throw new Error("ComfyUI API not available"); - const S = await window.app.api.fetchApi(N, T); - if (!S.ok) { - const B = await S.json().catch(() => ({})), A = B.error || B.message || `Request failed: ${S.status}`; + const x = await window.app.api.fetchApi(N, T); + if (!x.ok) { + const B = await x.json().catch(() => ({})), A = B.error || B.message || `Request failed: ${x.status}`; throw new Error(A); } - return S.json(); + return x.json(); } async function u(N) { l.value = !0, i.value = null; @@ -8343,18 +8343,18 @@ function hr() { } )), e.value = T, T; } catch (T) { - const S = T instanceof Error ? T.message : "Unknown error occurred"; - throw i.value = S, T; + const x = T instanceof Error ? T.message : "Unknown error occurred"; + throw i.value = x, T; } finally { l.value = !1; } } - async function d(N, T, S, q) { + async function d(N, T, x, q) { l.value = !0, i.value = null; try { let B; if (!lo()) { - const A = Object.fromEntries(T), I = Object.fromEntries(S), E = q ? Array.from(q) : []; + const A = Object.fromEntries(T), I = Object.fromEntries(x), E = q ? Array.from(q) : []; B = await r( `/v2/comfygit/workflow/${N}/apply-resolution`, { @@ -8379,18 +8379,18 @@ function hr() { async function m(N, T = 10) { l.value = !0, i.value = null; try { - let S; - return lo() || (S = await r( + let x; + return lo() || (x = await r( "/v2/comfygit/workflow/search-nodes", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ query: N, limit: T }) } - )), o.value = S.results, S.results; - } catch (S) { - const q = S instanceof Error ? S.message : "Unknown error occurred"; - throw i.value = q, S; + )), o.value = x.results, x.results; + } catch (x) { + const q = x instanceof Error ? x.message : "Unknown error occurred"; + throw i.value = q, x; } finally { l.value = !1; } @@ -8398,18 +8398,18 @@ function hr() { async function v(N, T = 10) { l.value = !0, i.value = null; try { - let S; - return lo() || (S = await r( + let x; + return lo() || (x = await r( "/v2/comfygit/workflow/search-models", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ query: N, limit: T }) } - )), n.value = S.results, S.results; - } catch (S) { - const q = S instanceof Error ? S.message : "Unknown error occurred"; - throw i.value = q, S; + )), n.value = x.results, x.results; + } catch (x) { + const q = x instanceof Error ? x.message : "Unknown error occurred"; + throw i.value = q, x; } finally { l.value = !1; } @@ -8430,12 +8430,12 @@ function hr() { try { return lo(), await _(N); } catch (T) { - const S = T instanceof Error ? T.message : "Failed to install nodes"; - throw h.installError = S, T; + const x = T instanceof Error ? T.message : "Failed to install nodes"; + throw h.installError = x, T; } } async function _(N) { - var S; + var x; const T = await r( `/v2/comfygit/workflow/${N}/install`, { @@ -8448,7 +8448,7 @@ function hr() { ); if (h.nodeInstallProgress) { h.nodeInstallProgress.totalNodes = h.nodesToInstall.length; - const q = new Map(((S = T.failed) == null ? void 0 : S.map((B) => [B.node_id, B.error])) || []); + const q = new Map(((x = T.failed) == null ? void 0 : x.map((B) => [B.node_id, B.error])) || []); for (let B = 0; B < h.nodesToInstall.length; B++) { const A = h.nodesToInstall[B], I = q.get(A); h.nodeInstallProgress.completedNodes.push({ @@ -8460,9 +8460,9 @@ function hr() { } return h.nodesInstalled = T.nodes_installed, h.needsRestart = T.nodes_installed.length > 0, T.failed && T.failed.length > 0 && (h.installError = `${T.failed.length} package(s) failed to install`), T; } - async function x(N, T, S) { + async function S(N, T, x) { w(), h.phase = "resolving", i.value = null; - const q = Object.fromEntries(T), B = Object.fromEntries(S); + const q = Object.fromEntries(T), B = Object.fromEntries(x); try { const A = await fetch(`/v2/comfygit/workflow/${N}/apply-resolution-stream`, { method: "POST", @@ -8536,7 +8536,7 @@ function hr() { } } function P(N, T) { - const { addToQueue: S } = en(), q = T.filter((B) => B.url && B.target_path).map((B) => ({ + const { addToQueue: x } = en(), q = T.filter((B) => B.url && B.target_path).map((B) => ({ workflow: N, filename: B.filename, url: B.url, @@ -8544,7 +8544,7 @@ function hr() { size: B.size || 0, type: "model" })); - return q.length > 0 && S(q), q.length; + return q.length > 0 && x(q), q.length; } return { // State @@ -8558,7 +8558,7 @@ function hr() { // Methods analyzeWorkflow: u, applyResolution: d, - applyResolutionWithProgress: x, + applyResolutionWithProgress: S, installNodes: p, searchNodes: m, searchModels: v, @@ -9007,15 +9007,15 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp emits: ["mark-optional", "skip", "option-selected", "manual-entry", "clear-choice", "package-skip"], setup(e, { emit: t }) { const o = e, n = t, { searchNodes: l } = hr(), i = k(0), r = k(!1), u = k(!1), d = k(""), m = k(""), v = k([]), h = k(!1), w = k(/* @__PURE__ */ new Map()), p = k(/* @__PURE__ */ new Set()), _ = k(!1); - function x() { + function S() { _.value && z(), _.value = !1; } const $ = F(() => o.nodes[i.value]), P = F(() => o.nodes.filter((_e) => o.nodeChoices.has(_e.node_type)).length), N = F(() => $.value ? w.value.get($.value.node_type) || [] : []), T = F(() => $.value ? p.value.has($.value.node_type) : !1); Ct($, async (_e) => { var Se; - _e && ((Se = _e.options) != null && Se.length || w.value.has(_e.node_type) || p.value.has(_e.node_type) || o.nodeChoices.has(_e.node_type) || await S(_e.node_type)); + _e && ((Se = _e.options) != null && Se.length || w.value.has(_e.node_type) || p.value.has(_e.node_type) || o.nodeChoices.has(_e.node_type) || await x(_e.node_type)); }, { immediate: !0 }); - async function S(_e) { + async function x(_e) { p.value.add(_e); try { const Se = await l(_e, 5); @@ -9193,7 +9193,7 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp key: 0, class: "node-resolution-modal-overlay", onMousedown: Se[4] || (Se[4] = nt((le) => _.value = !0, ["self"])), - onMouseup: nt(x, ["self"]) + onMouseup: nt(S, ["self"]) }, [ s("div", { class: "node-search-modal", @@ -9529,7 +9529,7 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp var R; return z && ((R = o[z]) == null ? void 0 : R[0]) || null; } - const l = e, i = t, r = k(0), u = k(!1), d = k(!1), m = k(""), v = k(""), h = k(""), w = k([]), p = k(!1), _ = F(() => l.models[r.value]), x = F(() => l.models.some((z) => z.is_download_intent)), $ = F(() => l.models.filter( + const l = e, i = t, r = k(0), u = k(!1), d = k(!1), m = k(""), v = k(""), h = k(""), w = k([]), p = k(!1), _ = F(() => l.models[r.value]), S = F(() => l.models.some((z) => z.is_download_intent)), $ = F(() => l.models.filter( (z) => l.modelChoices.has(z.filename) || z.is_download_intent ).length), P = F(() => { var R; @@ -9573,7 +9573,7 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp } return _.value.is_download_intent ? "Pending Download" : (be = _.value.options) != null && be.length ? `${_.value.options.length} matches` : "Not Found"; }); - function S(z) { + function x(z) { z >= 0 && z < l.models.length && (r.value = z); } function q() { @@ -9621,8 +9621,8 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp return a(), c("div", mh, [ s("div", vh, [ s("div", ph, [ - s("h3", gh, f(x.value ? "Review Model Downloads" : "Resolve Missing Models"), 1), - s("p", hh, f(x.value ? "Review pending downloads. Mark as optional or skip to cancel." : "Browse unresolved models and choose how to handle each one. Unaddressed items will be skipped."), 1) + s("h3", gh, f(S.value ? "Review Model Downloads" : "Resolve Missing Models"), 1), + s("p", hh, f(S.value ? "Review pending downloads. Mark as optional or skip to cancel." : "Browse unresolved models and choose how to handle each one. Unaddressed items will be skipped."), 1) ]), s("span", yh, f($.value) + "/" + f(e.models.length) + " resolved", 1) ]), @@ -9631,8 +9631,8 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp "item-name": _.value.filename, "current-index": r.value, "total-items": e.models.length, - onPrev: R[0] || (R[0] = (De) => S(r.value - 1)), - onNext: R[1] || (R[1] = (De) => S(r.value + 1)) + onPrev: R[0] || (R[0] = (De) => x(r.value - 1)), + onNext: R[1] || (R[1] = (De) => x(r.value + 1)) }, null, 8, ["item-name", "current-index", "total-items"])) : y("", !0), _.value ? (a(), c("div", wh, [ C(fh, { @@ -10020,7 +10020,7 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp }, emits: ["close", "install", "refresh", "restart"], setup(e, { emit: t }) { - const o = e, n = t, { analyzeWorkflow: l, applyResolution: i, installNodes: r, queueModelDownloads: u, progress: d, resetProgress: m } = hr(), { loadPendingDownloads: v } = en(), { openFileLocation: h } = at(), w = k(null), p = k(!1), _ = k(!1), x = k(null), $ = k("analysis"), P = k([]), N = k(/* @__PURE__ */ new Map()), T = k(/* @__PURE__ */ new Map()), S = k(/* @__PURE__ */ new Set()), q = F(() => { + const o = e, n = t, { analyzeWorkflow: l, applyResolution: i, installNodes: r, queueModelDownloads: u, progress: d, resetProgress: m } = hr(), { loadPendingDownloads: v } = en(), { openFileLocation: h } = at(), w = k(null), p = k(!1), _ = k(!1), S = k(null), $ = k("analysis"), P = k([]), N = k(/* @__PURE__ */ new Map()), T = k(/* @__PURE__ */ new Map()), x = k(/* @__PURE__ */ new Set()), q = F(() => { const X = [ { id: "analysis", label: "Analysis" } ]; @@ -10041,7 +10041,7 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp }); } return Array.from(D.values()); - }), U = F(() => te.value.filter((X) => !S.value.has(X.package.package_id))), z = F(() => w.value ? w.value.models.resolved.filter((X) => X.match_type === "download_intent").map((X) => ({ + }), U = F(() => te.value.filter((X) => !x.value.has(X.package.package_id))), z = F(() => w.value ? w.value.models.resolved.filter((X) => X.match_type === "download_intent").map((X) => ({ filename: X.reference.widget_value, reference: X.reference, is_download_intent: !0, @@ -10118,7 +10118,7 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp D.action === "optional" && X++; return X; }), Je = F(() => { - let X = S.value.size; + let X = x.value.size; for (const D of N.value.values()) D.action === "skip" && X++; for (const D of T.value.values()) @@ -10160,11 +10160,11 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp X < q.value.length - 1 && ($.value = q.value[X + 1].id); } async function le() { - p.value = !0, x.value = null; + p.value = !0, S.value = null; try { w.value = await l(o.workflowName); } catch (X) { - x.value = X instanceof Error ? X.message : "Failed to analyze workflow"; + S.value = X instanceof Error ? X.message : "Failed to analyze workflow"; } finally { p.value = !1; } @@ -10196,7 +10196,7 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp N.value.delete(X); } function de(X) { - S.value.has(X) ? S.value.delete(X) : S.value.add(X); + x.value.has(X) ? x.value.delete(X) : x.value.add(X); } function fe(X) { T.value.set(X, { action: "optional" }); @@ -10226,14 +10226,14 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp try { await h(X); } catch (D) { - x.value = D instanceof Error ? D.message : "Failed to open file location"; + S.value = D instanceof Error ? D.message : "Failed to open file location"; } } async function Ce() { var X; - _.value = !0, x.value = null, m(), d.phase = "resolving", $.value = "applying"; + _.value = !0, S.value = null, m(), d.phase = "resolving", $.value = "applying"; try { - const D = await i(o.workflowName, N.value, T.value, S.value); + const D = await i(o.workflowName, N.value, T.value, x.value); D.models_to_download && D.models_to_download.length > 0 && u(o.workflowName, D.models_to_download); const W = [ ...D.nodes_to_install || [], @@ -10245,7 +10245,7 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp n("refresh"), n("install"), n("close"); }, 1500); } catch (D) { - x.value = D instanceof Error ? D.message : "Failed to apply resolution", d.error = x.value, d.phase = "error"; + S.value = D instanceof Error ? D.message : "Failed to apply resolution", d.error = S.value, d.phase = "error"; } finally { _.value = !1; } @@ -10272,7 +10272,7 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp title: `Resolve Dependencies: ${e.workflowName}`, size: "lg", loading: p.value, - error: x.value || void 0, + error: S.value || void 0, "fixed-height": !0, onClose: D[1] || (D[1] = (W) => n("close")) }, { @@ -10401,7 +10401,7 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp nodes: R.value, "node-choices": N.value, "auto-resolved-packages": Z.value, - "skipped-packages": S.value, + "skipped-packages": x.value, onMarkOptional: Ie, onSkip: L, onOptionSelected: V, @@ -10452,7 +10452,7 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp }, [ s("code", w1, f(W.package_id), 1), s("div", b1, [ - S.value.has(W.package_id) ? (a(), c("span", k1, "Skipped")) : (a(), c("span", _1, "Will Install")) + x.value.has(W.package_id) ? (a(), c("span", k1, "Skipped")) : (a(), c("span", _1, "Will Install")) ]) ]))), 128)) ]) @@ -10766,7 +10766,7 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp setup(e, { expose: t, emit: o }) { const n = o, { getWorkflows: l } = at(), i = k([]), r = k(!1), u = k(null), d = k(""), m = k(!0), v = k(!1), h = k(!1), w = k(!1), p = k(null), _ = F( () => i.value.filter((U) => U.status === "broken") - ), x = F( + ), S = F( () => i.value.filter((U) => U.status === "new") ), $ = F( () => i.value.filter((U) => U.status === "modified") @@ -10780,8 +10780,8 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp () => _.value.filter( (U) => !d.value.trim() || U.name.toLowerCase().includes(d.value.toLowerCase()) ) - ), S = F( - () => x.value.filter( + ), x = F( + () => S.value.filter( (U) => !d.value.trim() || U.name.toLowerCase().includes(d.value.toLowerCase()) ) ), q = F( @@ -10901,13 +10901,13 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp ]), _: 1 }, 8, ["count"])) : y("", !0), - S.value.length ? (a(), M(ot, { + x.value.length ? (a(), M(ot, { key: 1, title: "NEW", - count: S.value.length + count: x.value.length }, { default: g(() => [ - (a(!0), c(j, null, ge(S.value, (R) => (a(), M(Et, { + (a(!0), c(j, null, ge(x.value, (R) => (a(), M(Et, { key: R.name, status: R.has_path_sync_issues ? "warning" : "new" }, { @@ -11093,11 +11093,11 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp }, emits: ["close"], setup(e, { emit: t }) { - const o = e, { getModelDetails: n, addModelSource: l, removeModelSource: i, openFileLocation: r } = at(), u = k(null), d = k(!0), m = k(null), v = k(""), h = k(!1), w = k(null), p = k(null), _ = k(null), x = k(null); + const o = e, { getModelDetails: n, addModelSource: l, removeModelSource: i, openFileLocation: r } = at(), u = k(null), d = k(!0), m = k(null), v = k(""), h = k(!1), w = k(null), p = k(null), _ = k(null), S = k(null); let $ = null; function P(I, E = "success", O = 2e3) { - $ && clearTimeout($), x.value = { message: I, type: E }, $ = setTimeout(() => { - x.value = null; + $ && clearTimeout($), S.value = { message: I, type: E }, $ = setTimeout(() => { + S.value = null; }, O); } function N(I) { @@ -11108,7 +11108,7 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp function T(I) { navigator.clipboard.writeText(I), P("Copied to clipboard!"); } - async function S(I) { + async function x(I) { try { await r(I), P("Opening file location..."); } catch { @@ -11216,7 +11216,7 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp Z.path ? (a(), c("button", { key: 1, class: "open-location-btn", - onClick: (z) => S(Z.path) + onClick: (z) => x(Z.path) }, " Open File Location ", 8, U0)) : y("", !0) ]))), 128)) ])) : (a(), c("div", z0, "No locations found")) @@ -11271,10 +11271,10 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp _: 1 }, 8, ["title", "loading", "error"]), (a(), M(ht, { to: "body" }, [ - x.value ? (a(), c("div", { + S.value ? (a(), c("div", { key: 0, - class: xe(["toast", x.value.type]) - }, f(x.value.message), 3)) : y("", !0) + class: xe(["toast", S.value.type]) + }, f(S.value.message), 3)) : y("", !0) ])) ], 64); }; @@ -11289,7 +11289,7 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp } const _ = F( () => i.value.reduce((A, I) => A + (I.size || 0), 0) - ), x = F(() => { + ), S = F(() => { if (!v.value.trim()) return i.value; const A = v.value.toLowerCase(); return i.value.filter((I) => I.filename.toLowerCase().includes(A)); @@ -11299,7 +11299,7 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp return r.value.filter((I) => I.filename.toLowerCase().includes(A)); }), P = F(() => { const A = {}; - for (const E of x.value) { + for (const E of S.value) { const O = E.type || "other"; A[O] || (A[O] = []), A[O].push(E); } @@ -11317,7 +11317,7 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp function T(A) { w.value = A.hash || A.filename; } - function S(A) { + function x(A) { o("navigate", "model-index"); } function q(A) { @@ -11462,7 +11462,7 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp C(ie, { variant: "secondary", size: "sm", - onClick: (O) => S(E.filename) + onClick: (O) => x(E.filename) }, { default: g(() => [...I[9] || (I[9] = [ b(" Search Workspace Index ", -1) @@ -11475,7 +11475,7 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp ]), _: 1 }, 8, ["count"])) : y("", !0), - !x.value.length && !$.value.length ? (a(), M(ts, { + !S.value.length && !$.value.length ? (a(), M(ts, { key: 2, icon: "📭", message: v.value ? `No models match '${v.value}'` : "No models in this environment." @@ -11528,7 +11528,7 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp scanWorkspaceModels: n, getModelsDirectory: l, setModelsDirectory: i - } = at(), { addToQueue: r } = en(), u = t, d = k([]), m = k(!1), v = k(!1), h = k(null), w = k(""), p = k(!1), _ = k(null), x = k(!1), $ = k(null), P = k(""), N = k(!1), T = k(!1), S = k(""), q = k(""), B = k(null), A = F( + } = at(), { addToQueue: r } = en(), u = t, d = k([]), m = k(!1), v = k(!1), h = k(null), w = k(""), p = k(!1), _ = k(null), S = k(!1), $ = k(null), P = k(""), N = k(!1), T = k(!1), x = k(""), q = k(""), B = k(null), A = F( () => d.value.reduce((z, R) => z + (R.size || 0), 0) ), I = F(() => { if (!w.value.trim()) return d.value; @@ -11573,7 +11573,7 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp N.value = !0, h.value = null; try { const z = await i(P.value.trim()); - $.value = z.path, x.value = !1, P.value = "", await Z(), console.log(`Directory changed: ${z.models_indexed} models indexed`), u("refresh"); + $.value = z.path, S.value = !1, P.value = "", await Z(), console.log(`Directory changed: ${z.models_indexed} models indexed`), u("refresh"); } catch (z) { h.value = z instanceof Error ? z.message : "Failed to change directory"; } finally { @@ -11582,14 +11582,14 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp } } function te() { - if (!S.value.trim() || !q.value.trim()) return; + if (!x.value.trim() || !q.value.trim()) return; const z = q.value.split("/").pop() || "model.safetensors"; r([{ workflow: "__manual__", filename: z, - url: S.value.trim(), + url: x.value.trim(), targetPath: q.value.trim() - }]), S.value = "", q.value = "", T.value = !1; + }]), x.value = "", q.value = "", T.value = !1; } async function Z() { m.value = !0, h.value = null; @@ -11634,7 +11634,7 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp C(ie, { variant: "primary", size: "sm", - onClick: R[0] || (R[0] = (be) => x.value = !0) + onClick: R[0] || (R[0] = (be) => S.value = !0) }, { default: g(() => [...R[15] || (R[15] = [ b(" Change Directory ", -1) @@ -11778,17 +11778,17 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp onClose: R[5] || (R[5] = (be) => _.value = null) }, null, 8, ["identifier"])) : y("", !0), (a(), M(ht, { to: "body" }, [ - x.value ? (a(), c("div", { + S.value ? (a(), c("div", { key: 0, class: "modal-overlay", - onClick: R[9] || (R[9] = nt((be) => x.value = !1, ["self"])) + onClick: R[9] || (R[9] = nt((be) => S.value = !1, ["self"])) }, [ s("div", aw, [ s("div", lw, [ R[20] || (R[20] = s("h3", null, "Change Models Directory", -1)), s("button", { class: "modal-close", - onClick: R[6] || (R[6] = (be) => x.value = !1) + onClick: R[6] || (R[6] = (be) => S.value = !1) }, "✕") ]), s("div", iw, [ @@ -11809,7 +11809,7 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp s("div", dw, [ C(Me, { variant: "secondary", - onClick: R[8] || (R[8] = (be) => x.value = !1) + onClick: R[8] || (R[8] = (be) => S.value = !1) }, { default: g(() => [...R[24] || (R[24] = [ b(" Cancel ", -1) @@ -11849,8 +11849,8 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp s("div", pw, [ R[26] || (R[26] = s("label", null, "Download URL", -1)), C(Xt, { - modelValue: S.value, - "onUpdate:modelValue": R[11] || (R[11] = (be) => S.value = be), + modelValue: x.value, + "onUpdate:modelValue": R[11] || (R[11] = (be) => x.value = be), placeholder: "https://civitai.com/api/download/models/..." }, null, 8, ["modelValue"]) ]), @@ -11876,7 +11876,7 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp }), C(Me, { variant: "primary", - disabled: !S.value.trim() || !q.value.trim(), + disabled: !x.value.trim() || !q.value.trim(), onClick: te }, { default: g(() => [...R[30] || (R[30] = [ @@ -12086,7 +12086,7 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp installed_count: 0, missing_count: 0, untracked_count: 0 - }), m = k(!1), v = k(null), h = k(""), w = k(!1), p = k(null), _ = k(null), x = F(() => { + }), m = k(!1), v = k(null), h = k(""), w = k(!1), p = k(null), _ = k(null), S = F(() => { if (!h.value.trim()) return d.value.nodes; const Y = h.value.toLowerCase(); return d.value.nodes.filter( @@ -12096,11 +12096,11 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp } ); }), $ = F( - () => x.value.filter((Y) => Y.installed && Y.tracked) + () => S.value.filter((Y) => Y.installed && Y.tracked) ), P = F( - () => x.value.filter((Y) => !Y.installed && Y.tracked) + () => S.value.filter((Y) => !Y.installed && Y.tracked) ), N = F( - () => x.value.filter((Y) => Y.installed && !Y.tracked) + () => S.value.filter((Y) => Y.installed && !Y.tracked) ); function T(Y) { return { @@ -12111,7 +12111,7 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp untracked: "Untracked" }[Y] || Y; } - const S = F(() => o.versionMismatches.length > 0); + const x = F(() => o.versionMismatches.length > 0); function q(Y) { return !Y.used_in_workflows || Y.used_in_workflows.length === 0 ? "Not used in any workflows" : Y.used_in_workflows.length === 1 ? Y.used_in_workflows[0] : `${Y.used_in_workflows.length} workflows`; } @@ -12249,7 +12249,7 @@ const gp = { class: "resolution-stepper" }, hp = { class: "stepper-header" }, yp ]), _: 1 })) : y("", !0), - S.value ? (a(), M(ot, { + x.value ? (a(), M(ot, { key: 1, title: "VERSION MISMATCHES", count: e.versionMismatches.length, @@ -12976,7 +12976,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = const P = $.replace(/\.json$/, ""); return m.value.workflow_conflicts.some((N) => N.name === P); } - function x($) { + function S($) { const P = o.conflictResolutions ? Array.from(o.conflictResolutions.values()) : void 0; n("pull", { modelStrategy: l.value, force: $, resolutions: P }); } @@ -12986,7 +12986,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = e.show ? (a(), c("div", { key: 0, class: "modal-overlay", - onClick: P[11] || (P[11] = (S) => $.$emit("close")) + onClick: P[11] || (P[11] = (x) => $.$emit("close")) }, [ s("div", { class: "modal-content", @@ -12997,7 +12997,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = s("h3", Ab, "PULL FROM " + f(e.remoteName.toUpperCase()), 1), s("button", { class: "modal-close", - onClick: P[0] || (P[0] = (S) => $.$emit("close")) + onClick: P[0] || (P[0] = (x) => $.$emit("close")) }, "✕") ]), s("div", Ub, [ @@ -13041,21 +13041,21 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = s("span", jb, f(r.value) + " changes", 1) ]), s("div", Hb, [ - (a(!0), c(j, null, ge(e.preview.changes.workflows.added, (S) => (a(), c("div", { - key: "a-" + S, + (a(!0), c(j, null, ge(e.preview.changes.workflows.added, (x) => (a(), c("div", { + key: "a-" + x, class: "change-item add" - }, " + " + f(S), 1))), 128)), - (a(!0), c(j, null, ge(e.preview.changes.workflows.modified, (S) => (a(), c("div", { - key: "m-" + S, + }, " + " + f(x), 1))), 128)), + (a(!0), c(j, null, ge(e.preview.changes.workflows.modified, (x) => (a(), c("div", { + key: "m-" + x, class: "change-item modify" }, [ - b(" ~ " + f(S) + " ", 1), - _(S) ? (a(), c("span", Kb, "CONFLICT")) : y("", !0) + b(" ~ " + f(x) + " ", 1), + _(x) ? (a(), c("span", Kb, "CONFLICT")) : y("", !0) ]))), 128)), - (a(!0), c(j, null, ge(e.preview.changes.workflows.deleted, (S) => (a(), c("div", { - key: "d-" + S, + (a(!0), c(j, null, ge(e.preview.changes.workflows.deleted, (x) => (a(), c("div", { + key: "d-" + x, class: "change-item delete" - }, " - " + f(S), 1))), 128)) + }, " - " + f(x), 1))), 128)) ]) ])) : y("", !0), u.value > 0 ? (a(), c("details", qb, [ @@ -13064,10 +13064,10 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = s("span", Yb, f(u.value) + " to install", 1) ]), s("div", Jb, [ - (a(!0), c(j, null, ge(e.preview.changes.nodes.to_install, (S) => (a(), c("div", { - key: S, + (a(!0), c(j, null, ge(e.preview.changes.nodes.to_install, (x) => (a(), c("div", { + key: x, class: "change-item add" - }, " + " + f(S), 1))), 128)) + }, " + " + f(x), 1))), 128)) ]) ])) : y("", !0), e.preview.changes.models.count > 0 ? (a(), c("details", Xb, [ @@ -13076,10 +13076,10 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = s("span", Qb, f(e.preview.changes.models.count) + " referenced", 1) ]), s("div", Zb, [ - (a(!0), c(j, null, ge(e.preview.changes.models.referenced, (S) => (a(), c("div", { - key: S, + (a(!0), c(j, null, ge(e.preview.changes.models.referenced, (x) => (a(), c("div", { + key: x, class: "change-item" - }, f(S), 1))), 128)) + }, f(x), 1))), 128)) ]) ])) : y("", !0) ])) : y("", !0), @@ -13095,7 +13095,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = s("label", s_, [ He(s("input", { type: "radio", - "onUpdate:modelValue": P[1] || (P[1] = (S) => l.value = S), + "onUpdate:modelValue": P[1] || (P[1] = (x) => l.value = x), value: "all" }, null, 512), [ [qt, l.value] @@ -13105,7 +13105,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = s("label", o_, [ He(s("input", { type: "radio", - "onUpdate:modelValue": P[2] || (P[2] = (S) => l.value = S), + "onUpdate:modelValue": P[2] || (P[2] = (x) => l.value = x), value: "required" }, null, 512), [ [qt, l.value] @@ -13115,7 +13115,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = s("label", n_, [ He(s("input", { type: "radio", - "onUpdate:modelValue": P[3] || (P[3] = (S) => l.value = S), + "onUpdate:modelValue": P[3] || (P[3] = (x) => l.value = x), value: "skip" }, null, 512), [ [qt, l.value] @@ -13135,7 +13135,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = s("div", l_, [ C(ie, { variant: "secondary", - onClick: P[4] || (P[4] = (S) => $.$emit("close")) + onClick: P[4] || (P[4] = (x) => $.$emit("close")) }, { default: g(() => [...P[29] || (P[29] = [ b(" Cancel ", -1) @@ -13146,7 +13146,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = C(ie, { variant: "secondary", loading: e.pulling, - onClick: P[5] || (P[5] = (S) => x(!1)) + onClick: P[5] || (P[5] = (x) => S(!1)) }, { default: g(() => [...P[30] || (P[30] = [ b(" Retry ", -1) @@ -13156,7 +13156,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = C(ie, { variant: "destructive", loading: e.pulling, - onClick: P[6] || (P[6] = (S) => x(!0)) + onClick: P[6] || (P[6] = (x) => S(!0)) }, { default: g(() => [...P[31] || (P[31] = [ b(" Force Pull ", -1) @@ -13167,7 +13167,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = key: 1, variant: "destructive", loading: e.pulling, - onClick: P[7] || (P[7] = (S) => x(!0)) + onClick: P[7] || (P[7] = (x) => S(!0)) }, { default: g(() => [...P[32] || (P[32] = [ b(" Force Pull (Discard Changes) ", -1) @@ -13177,7 +13177,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = m.value && !w.value ? (a(), M(ie, { key: 0, variant: "primary", - onClick: P[8] || (P[8] = (S) => n("openConflictResolution")) + onClick: P[8] || (P[8] = (x) => n("openConflictResolution")) }, { default: g(() => [ b(" Resolve Conflicts (" + f(h.value) + "/" + f(v.value) + ") ", 1) @@ -13188,7 +13188,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = variant: "primary", loading: e.pulling, disabled: !p.value, - onClick: P[9] || (P[9] = (S) => x(!1)) + onClick: P[9] || (P[9] = (x) => S(!1)) }, { default: g(() => [...P[33] || (P[33] = [ b(" Pull Changes ", -1) @@ -13537,7 +13537,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = key: _.name, conflict: _, resolution: d(_.name), - onResolve: (x) => m(_.name, x) + onResolve: (S) => m(_.name, S) }, null, 8, ["conflict", "resolution", "onResolve"]))), 128)) ]), r.value ? (a(), c("div", rk, [ @@ -13719,7 +13719,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = getPushPreview: h, pushToRemote: w, validateMerge: p - } = at(), _ = k([]), x = k(null), $ = k({}), P = k(!1), N = k(null), T = k(""), S = k(!1), q = k(null), B = k(!1), A = k("add"), I = k({ + } = at(), _ = k([]), S = k(null), $ = k({}), P = k(!1), N = k(null), T = k(""), x = k(!1), q = k(null), B = k(!1), A = k("add"), I = k({ name: "", fetchUrl: "", pushUrl: "" @@ -13734,7 +13734,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = P.value = !0, N.value = null; try { const W = await n(); - _.value = W.remotes, x.value = W.current_branch_tracking || null, await Promise.all( + _.value = W.remotes, S.value = W.current_branch_tracking || null, await Promise.all( W.remotes.map(async (ce) => { const Te = await d(ce.name); Te && ($.value[ce.name] = Te); @@ -13903,7 +13903,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = C(Pt, { title: "GIT REMOTES", "show-info": !0, - onInfoClick: ce[0] || (ce[0] = (Te) => S.value = !0) + onInfoClick: ce[0] || (ce[0] = (Te) => x.value = !0) }, { actions: g(() => [ B.value ? y("", !0) : (a(), M(ie, { @@ -13954,7 +13954,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = }, { default: g(() => [ b(" Total: " + f(_.value.length) + " remote" + f(_.value.length !== 1 ? "s" : "") + " ", 1), - x.value ? (a(), c("span", Mk, " • Tracking: " + f(x.value.remote) + "/" + f(x.value.branch), 1)) : y("", !0) + S.value ? (a(), c("span", Mk, " • Tracking: " + f(S.value.remote) + "/" + f(S.value.branch), 1)) : y("", !0) ]), _: 1 })) : y("", !0), @@ -14001,9 +14001,9 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = _: 1 }), C(ss, { - show: S.value, + show: x.value, title: "About Git Remotes", - onClose: ce[2] || (ce[2] = (Te) => S.value = !1) + onClose: ce[2] || (ce[2] = (Te) => x.value = !1) }, { content: g(() => [...ce[5] || (ce[5] = [ s("p", null, " Git remotes are named references to repositories on other servers. They allow you to fetch changes from and push changes to remote repositories. ", -1), @@ -14127,7 +14127,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = emits: ["saved", "error"], setup(e, { expose: t, emit: o }) { const n = e, l = o, { getConfig: i, updateConfig: r } = at(), u = k(!1), d = k(null), m = k(null), v = k(null), h = k(null), w = k(""), p = k(""), _ = k(!1); - function x(B) { + function S(B) { return B.join(" "); } function $(B) { @@ -14135,13 +14135,13 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = } const P = F(() => { if (!h.value) return !1; - const B = w.value !== (h.value.civitai_api_key || ""), A = p.value !== x(h.value.comfyui_extra_args || []); + const B = w.value !== (h.value.civitai_api_key || ""), A = p.value !== S(h.value.comfyui_extra_args || []); return B || A; }); async function N() { u.value = !0, d.value = null; try { - v.value = await i(n.workspacePath || void 0), h.value = { ...v.value }, w.value = v.value.civitai_api_key || "", p.value = x(v.value.comfyui_extra_args || []); + v.value = await i(n.workspacePath || void 0), h.value = { ...v.value }, w.value = v.value.civitai_api_key || "", p.value = S(v.value.comfyui_extra_args || []); const B = localStorage.getItem("ComfyGit.Settings.AutoRefresh"); _.value = B !== "false"; } catch (B) { @@ -14155,7 +14155,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = m.value = null; try { const I = {}; - w.value !== (((B = h.value) == null ? void 0 : B.civitai_api_key) || "") && (I.civitai_api_key = w.value || null), p.value !== x(((A = h.value) == null ? void 0 : A.comfyui_extra_args) || []) && (I.comfyui_extra_args = $(p.value)), await r(I, n.workspacePath || void 0), await N(), m.value = { type: "success", message: "Settings saved successfully" }, l("saved"), setTimeout(() => { + w.value !== (((B = h.value) == null ? void 0 : B.civitai_api_key) || "") && (I.civitai_api_key = w.value || null), p.value !== S(((A = h.value) == null ? void 0 : A.comfyui_extra_args) || []) && (I.comfyui_extra_args = $(p.value)), await r(I, n.workspacePath || void 0), await N(), m.value = { type: "success", message: "Settings saved successfully" }, l("saved"), setTimeout(() => { m.value = null; }, 3e3); } catch (I) { @@ -14163,15 +14163,15 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = m.value = { type: "error", message: E }, l("error", E); } } - function S() { - h.value && (w.value = h.value.civitai_api_key || "", p.value = x(h.value.comfyui_extra_args || []), m.value = null); + function x() { + h.value && (w.value = h.value.civitai_api_key || "", p.value = S(h.value.comfyui_extra_args || []), m.value = null); } function q(B) { localStorage.setItem("ComfyGit.Settings.AutoRefresh", String(B)), console.log("[ComfyGit] Auto-refresh setting saved:", B); } return t({ saveSettings: T, - resetSettings: S, + resetSettings: x, hasChanges: P, loadSettings: N }), Qe(N), (B, A) => (a(), c("div", jk, [ @@ -14451,7 +14451,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = getOrchestratorLogPath: l, openFile: i } = at(), r = k("workspace"), u = k([]), d = k(!1), m = k(null), v = k(!1), h = k(null), w = k(null), p = k(!1), _ = F(() => r.value === "workspace" ? h.value : w.value); - async function x() { + async function S() { d.value = !0, m.value = null; try { r.value === "workspace" ? u.value = await t(void 0, 500) : u.value = await n(void 0, 500); @@ -14484,16 +14484,16 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = } } return Ct(r, () => { - x(); + S(); }), Qe(() => { - x(), $(); + S(), $(); }), (N, T) => (a(), c(j, null, [ C(Tt, null, { header: g(() => [ C(Pt, { title: "DEBUG (LOGS)", "show-info": !0, - onInfoClick: T[0] || (T[0] = (S) => v.value = !0) + onInfoClick: T[0] || (T[0] = (x) => v.value = !0) }, { actions: g(() => [ C(ie, { @@ -14511,7 +14511,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = C(ie, { variant: "secondary", size: "sm", - onClick: x, + onClick: S, disabled: d.value }, { default: g(() => [ @@ -14526,7 +14526,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = search: g(() => [ C(_r, { modelValue: r.value, - "onUpdate:modelValue": T[1] || (T[1] = (S) => r.value = S), + "onUpdate:modelValue": T[1] || (T[1] = (x) => r.value = x), tabs: [ { id: "workspace", label: "Workspace" }, { id: "orchestrator", label: "Orchestrator" } @@ -14541,7 +14541,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = key: 1, message: m.value, retry: !0, - onRetry: x + onRetry: S }, null, 8, ["message"])) : (a(), c(j, { key: 2 }, [ u.value.length === 0 ? (a(), M(ts, { key: 0, @@ -14559,7 +14559,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = C(ss, { show: v.value, title: "About Logs", - onClose: T[3] || (T[3] = (S) => v.value = !1) + onClose: T[3] || (T[3] = (x) => v.value = !1) }, { content: g(() => [...T[4] || (T[4] = [ s("p", null, [ @@ -14589,7 +14589,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = actions: g(() => [ C(ie, { variant: "primary", - onClick: T[2] || (T[2] = (S) => v.value = !1) + onClick: T[2] || (T[2] = (x) => v.value = !1) }, { default: g(() => [...T[5] || (T[5] = [ b(" Got it ", -1) @@ -14610,20 +14610,20 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = try { i.value = await t(void 0, 500); try { - const x = await o(); - m.value = x.environment || "production"; + const S = await o(); + m.value = S.environment || "production"; } catch { } - } catch (x) { - u.value = x instanceof Error ? x.message : "Failed to load environment logs"; + } catch (S) { + u.value = S instanceof Error ? S.message : "Failed to load environment logs"; } finally { r.value = !1; } } async function p() { try { - const x = await n(); - x.exists && (v.value = x.path); + const S = await n(); + S.exists && (v.value = S.path); } catch { } } @@ -14632,8 +14632,8 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = h.value = !0; try { await l(v.value); - } catch (x) { - console.error("Failed to open log file:", x); + } catch (S) { + console.error("Failed to open log file:", S); } finally { h.value = !1; } @@ -14641,7 +14641,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = } return Qe(() => { w(), p(); - }), (x, $) => (a(), c(j, null, [ + }), (S, $) => (a(), c(j, null, [ C(Tt, null, { header: g(() => [ C(Pt, { @@ -15054,7 +15054,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = progress: 0, message: "" }); - let x = null, $ = 0; + let S = null, $ = 0; const P = [ { id: "init_structure", label: "Initialize structure", progressThreshold: 5 }, { id: "resolve_version", label: "Resolve ComfyUI version", progressThreshold: 10 }, @@ -15069,7 +15069,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = function T() { p.value || o("close"); } - async function S() { + async function x() { const E = r.value.trim(); if (E) { p.value = !0, _.value = { progress: 0, message: "Starting...", phase: "init" }; @@ -15097,7 +15097,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = } } function q() { - x || ($ = 0, x = window.setInterval(async () => { + S || ($ = 0, S = window.setInterval(async () => { try { const E = await i(); $ = 0, _.value = { @@ -15112,7 +15112,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = }, 2e3)); } function B() { - x && (clearInterval(x), x = null); + S && (clearInterval(S), S = null); } function A() { p.value = !1, _.value = { progress: 0, message: "" }, o("close"); @@ -15167,7 +15167,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = type: "text", class: "form-input", placeholder: "my-environment", - onKeyup: Jt(S, ["enter"]) + onKeyup: Jt(x, ["enter"]) }, null, 544), [ [Nt, r.value] ]) @@ -15244,7 +15244,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = C(Me, { variant: "primary", disabled: !r.value.trim(), - onClick: S + onClick: x }, { default: g(() => [...O[13] || (O[13] = [ b(" Create ", -1) @@ -15274,8 +15274,8 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = const N = d.value.toLowerCase(); return i.value.filter( (T) => { - var S; - return T.name.toLowerCase().includes(N) || ((S = T.current_branch) == null ? void 0 : S.toLowerCase().includes(N)); + var x; + return T.name.toLowerCase().includes(N) || ((x = T.current_branch) == null ? void 0 : x.toLowerCase().includes(N)); } ); }); @@ -15285,7 +15285,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = function _() { v.value = !0; } - function x(N) { + function S(N) { h.value = N; } function $(N) { @@ -15310,7 +15310,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = C(Pt, { title: "ENVIRONMENTS", "show-info": !0, - onInfoClick: T[0] || (T[0] = (S) => m.value = !0) + onInfoClick: T[0] || (T[0] = (x) => m.value = !0) }, { actions: g(() => [ C(ie, { @@ -15340,7 +15340,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = search: g(() => [ C(bo, { modelValue: d.value, - "onUpdate:modelValue": T[1] || (T[1] = (S) => d.value = S), + "onUpdate:modelValue": T[1] || (T[1] = (x) => d.value = x), placeholder: "🔍 Search environments..." }, null, 8, ["modelValue"]) ]), @@ -15360,19 +15360,19 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = count: w.value.length }, { default: g(() => [ - (a(!0), c(j, null, ge(w.value, (S) => (a(), M(p2, { - key: S.name, - "environment-name": S.name, - "is-current": S.is_current, - "current-branch": S.current_branch, + (a(!0), c(j, null, ge(w.value, (x) => (a(), M(p2, { + key: x.name, + "environment-name": x.name, + "is-current": x.is_current, + "current-branch": x.current_branch, "show-last-used": !1 }, { actions: g(() => [ - S.is_current ? y("", !0) : (a(), M(ie, { + x.is_current ? y("", !0) : (a(), M(ie, { key: 0, variant: "primary", size: "sm", - onClick: (q) => N.$emit("switch", S.name) + onClick: (q) => N.$emit("switch", x.name) }, { default: g(() => [...T[8] || (T[8] = [ b(" Switch ", -1) @@ -15382,7 +15382,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = C(ie, { variant: "secondary", size: "sm", - onClick: (q) => x(S) + onClick: (q) => S(x) }, { default: g(() => [...T[9] || (T[9] = [ b(" Details ", -1) @@ -15423,7 +15423,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = C(ss, { show: m.value, title: "About Environments", - onClose: T[3] || (T[3] = (S) => m.value = !1) + onClose: T[3] || (T[3] = (x) => m.value = !1) }, { content: g(() => [...T[11] || (T[11] = [ s("p", null, [ @@ -15443,7 +15443,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = actions: g(() => [ C(ie, { variant: "secondary", - onClick: T[2] || (T[2] = (S) => m.value = !1) + onClick: T[2] || (T[2] = (x) => m.value = !1) }, { default: g(() => [...T[12] || (T[12] = [ b(" Got it ", -1) @@ -15457,12 +15457,12 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = key: 0, environment: h.value, "can-delete": i.value.length > 1, - onClose: T[4] || (T[4] = (S) => h.value = null), + onClose: T[4] || (T[4] = (x) => h.value = null), onDelete: $ }, null, 8, ["environment", "can-delete"])) : y("", !0), v.value ? (a(), M(d$, { key: 1, - onClose: T[5] || (T[5] = (S) => v.value = !1), + onClose: T[5] || (T[5] = (x) => v.value = !1), onCreated: p })) : y("", !0) ], 64)); @@ -15710,7 +15710,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = async function _() { h.value = !1, await $(); } - async function x() { + async function S() { try { const T = await t(); m.value = T; @@ -15737,8 +15737,8 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = if ((T = u.value) != null && T.path) try { await navigator.clipboard.writeText(u.value.path); - } catch (S) { - console.error("Failed to copy path:", S); + } catch (x) { + console.error("Failed to copy path:", x); } } async function N() { @@ -15746,32 +15746,32 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = if ((T = u.value) != null && T.path) { r.value = !0; try { - const S = await fetch(`/v2/comfygit/download?path=${encodeURIComponent(u.value.path)}`); - if (!S.ok) - throw new Error(`Download failed: ${S.statusText}`); - const q = await S.blob(), B = URL.createObjectURL(q), A = u.value.path.split("/").pop() || "environment-export.tar.gz", I = document.createElement("a"); + const x = await fetch(`/v2/comfygit/download?path=${encodeURIComponent(u.value.path)}`); + if (!x.ok) + throw new Error(`Download failed: ${x.statusText}`); + const q = await x.blob(), B = URL.createObjectURL(q), A = u.value.path.split("/").pop() || "environment-export.tar.gz", I = document.createElement("a"); I.href = B, I.download = A, document.body.appendChild(I), I.click(), document.body.removeChild(I), URL.revokeObjectURL(B); - } catch (S) { - console.error("Failed to download:", S), alert(`Download failed: ${S instanceof Error ? S.message : "Unknown error"}`); + } catch (x) { + console.error("Failed to download:", x), alert(`Download failed: ${x instanceof Error ? x.message : "Unknown error"}`); } finally { r.value = !1; } } } - return (T, S) => (a(), c(j, null, [ + return (T, x) => (a(), c(j, null, [ C(Tt, null, { header: g(() => [ C(Pt, { title: "EXPORT ENVIRONMENT", "show-info": !0, - onInfoClick: S[0] || (S[0] = (q) => d.value = !0) + onInfoClick: x[0] || (x[0] = (q) => d.value = !0) }) ]), content: g(() => [ C(ot, { title: "EXPORT OPTIONS" }, { default: g(() => [ s("div", U$, [ - S[7] || (S[7] = s("div", { class: "export-card-header" }, [ + x[7] || (x[7] = s("div", { class: "export-card-header" }, [ s("span", { class: "export-icon" }, "📁"), s("div", { class: "export-header-text" }, [ s("div", { class: "export-title" }, "Output Destination"), @@ -15781,7 +15781,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = s("div", z$, [ C(En, { modelValue: n.value, - "onUpdate:modelValue": S[1] || (S[1] = (q) => n.value = q), + "onUpdate:modelValue": x[1] || (x[1] = (q) => n.value = q), placeholder: "Leave empty for default, or enter path like /mnt/c/Users/you/exports/", class: "path-input" }, null, 8, ["modelValue"]) @@ -15795,7 +15795,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = onClick: p }, { default: g(() => [ - S[6] || (S[6] = s("svg", { + x[6] || (x[6] = s("svg", { width: "16", height: "16", viewBox: "0 0 16 16", @@ -15848,7 +15848,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = label: "Models without sources:", value: u.value.models_without_sources.toString() }, null, 8, ["value"])) : y("", !0), - u.value.models_without_sources && u.value.models_without_sources > 0 ? (a(), c("div", B$, [...S[8] || (S[8] = [ + u.value.models_without_sources && u.value.models_without_sources > 0 ? (a(), c("div", B$, [...x[8] || (x[8] = [ s("span", { class: "warning-icon" }, "!", -1), s("span", { class: "warning-text" }, " Some models don't have source information. They may need to be downloaded manually when importing this environment elsewhere. ", -1) ])])) : y("", !0) @@ -15864,7 +15864,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = loading: r.value, onClick: N }, { - default: g(() => [...S[9] || (S[9] = [ + default: g(() => [...x[9] || (x[9] = [ s("svg", { width: "14", height: "14", @@ -15883,7 +15883,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = size: "sm", onClick: P }, { - default: g(() => [...S[10] || (S[10] = [ + default: g(() => [...x[10] || (x[10] = [ b(" Copy Path ", -1) ])]), _: 1 @@ -15891,9 +15891,9 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = C(ie, { variant: "ghost", size: "sm", - onClick: S[2] || (S[2] = (q) => u.value = null) + onClick: x[2] || (x[2] = (q) => u.value = null) }, { - default: g(() => [...S[11] || (S[11] = [ + default: g(() => [...x[11] || (x[11] = [ b(" Dismiss ", -1) ])]), _: 1 @@ -15911,9 +15911,9 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = C(ss, { show: d.value, title: "What Gets Exported", - onClose: S[3] || (S[3] = (q) => d.value = !1) + onClose: x[3] || (x[3] = (q) => d.value = !1) }, { - content: g(() => [...S[12] || (S[12] = [ + content: g(() => [...x[12] || (x[12] = [ s("div", { class: "export-info" }, [ s("div", { class: "info-section" }, [ s("strong", null, "Included in Export:"), @@ -15955,14 +15955,14 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = v.value && m.value ? (a(), M(Sr, { key: 0, issues: m.value.blocking_issues, - onClose: S[4] || (S[4] = (q) => v.value = !1) + onClose: x[4] || (x[4] = (q) => v.value = !1) }, null, 8, ["issues"])) : y("", !0), h.value && m.value ? (a(), M(Ir, { key: 1, models: m.value.warnings.models_without_sources, onConfirm: _, - onCancel: S[5] || (S[5] = (q) => h.value = !1), - onRevalidate: x + onCancel: x[5] || (x[5] = (q) => h.value = !1), + onRevalidate: S }, null, 8, ["models"])) : y("", !0) ], 64)); } @@ -16071,7 +16071,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = function _($) { l.value = $, o("fileSelected", $); } - function x() { + function S() { l.value = null, o("clear"); } return ($, P) => (a(), c("div", { @@ -16092,7 +16092,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = C(ie, { variant: "ghost", size: "xs", - onClick: x, + onClick: S, title: "Remove file" }, { default: g(() => [...P[2] || (P[2] = [ @@ -16479,7 +16479,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = var Je, _e, Se, Ve; const n = e, l = o, { previewTarballImport: i, previewGitImport: r, validateEnvironmentName: u, executeImport: d, executeGitImport: m, getImportProgress: v } = at(); let h = null; - const w = k(null), p = k(n.resumeImport ?? !1), _ = k(!1), x = k(!1), $ = k(""), P = k(!1), N = k(null), T = k(""), S = k(null), q = k(!1), B = k(null), A = k(null), I = k({ + const w = k(null), p = k(n.resumeImport ?? !1), _ = k(!1), S = k(!1), $ = k(""), P = k(!1), N = k(null), T = k(""), x = k(null), q = k(!1), B = k(null), A = k(null), I = k({ name: ((Je = n.initialProgress) == null ? void 0 : Je.environmentName) ?? "", modelStrategy: "required", torchBackend: "auto", @@ -16522,7 +16522,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = gitBranch: void 0, gitCommit: void 0 }; - }), H = F(() => !P.value && !N.value && A.value && I.value.name.length > 0 && !E.value && (w.value || S.value)); + }), H = F(() => !P.value && !N.value && A.value && I.value.name.length > 0 && !E.value && (w.value || x.value)); async function te(ye) { w.value = ye, P.value = !0, N.value = null, A.value = null; try { @@ -16535,7 +16535,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = } } function Z() { - w.value = null, S.value = null, T.value = "", B.value = null, _.value = !1, x.value = !1, $.value = "", A.value = null, N.value = null, I.value = { name: "", modelStrategy: "required", torchBackend: "auto", switchAfterImport: !0 }, E.value = null, l("source-cleared"); + w.value = null, x.value = null, T.value = "", B.value = null, _.value = !1, S.value = !1, $.value = "", A.value = null, N.value = null, I.value = { name: "", modelStrategy: "required", torchBackend: "auto", switchAfterImport: !0 }, E.value = null, l("source-cleared"); } function U() { De(), Z(), p.value = !1, P.value = !1, q.value = !1, O.value = { @@ -16550,7 +16550,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = q.value = !0, B.value = null; try { const ye = await r(T.value.trim()); - S.value = T.value.trim(), A.value = ye; + x.value = T.value.trim(), A.value = ye; } catch (ye) { B.value = ye instanceof Error ? ye.message : "Failed to analyze repository"; } finally { @@ -16579,7 +16579,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = } } async function ve() { - if (I.value.name && !(!w.value && !S.value)) { + if (I.value.name && !(!w.value && !x.value)) { p.value = !0, _.value = !1, O.value = { message: `Creating environment '${I.value.name}'...`, phase: "", progress: 0, error: null }, l("import-started"); try { let ye; @@ -16590,18 +16590,18 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = I.value.modelStrategy, I.value.torchBackend ); - else if (S.value) + else if (x.value) ye = await m( - S.value, + x.value, I.value.name, I.value.modelStrategy, I.value.torchBackend ); else throw new Error("No import source selected"); - ye.status === "started" ? Ee() : (x.value = !1, $.value = ye.message, p.value = !1, _.value = !0); + ye.status === "started" ? Ee() : (S.value = !1, $.value = ye.message, p.value = !1, _.value = !0); } catch (ye) { - x.value = !1, $.value = ye instanceof Error ? ye.message : "Unknown error occurred during import", p.value = !1, _.value = !0; + S.value = !1, $.value = ye instanceof Error ? ye.message : "Unknown error occurred during import", p.value = !1, _.value = !0; } } } @@ -16615,7 +16615,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = phase: Fe.phase || "", progress: Fe.progress ?? (Fe.state === "importing" ? 50 : 0), error: Fe.error || null - }, Fe.state === "complete" ? (De(), x.value = !0, $.value = `Environment '${Fe.environment_name}' created successfully`, p.value = !1, _.value = !0, Fe.environment_name && l("import-complete", Fe.environment_name, I.value.switchAfterImport), !1) : Fe.state === "error" ? (De(), x.value = !1, $.value = Fe.error || Fe.message, p.value = !1, _.value = !0, !1) : !0; + }, Fe.state === "complete" ? (De(), S.value = !0, $.value = `Environment '${Fe.environment_name}' created successfully`, p.value = !1, _.value = !0, Fe.environment_name && l("import-complete", Fe.environment_name, I.value.switchAfterImport), !1) : Fe.state === "error" ? (De(), S.value = !1, $.value = Fe.error || Fe.message, p.value = !1, _.value = !0, !1) : !0; } catch (Fe) { return console.error("Failed to poll import progress:", Fe), !0; } @@ -16649,7 +16649,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = }), (ye, le) => { var Fe; return a(), c("div", i3, [ - !w.value && !S.value && !p.value ? (a(), c("div", r3, [ + !w.value && !x.value && !p.value ? (a(), c("div", r3, [ C(aC, { accept: ".tar.gz,.tgz,.zip", "primary-text": "Drag & drop environment export here", @@ -16688,7 +16688,7 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = B.value ? (a(), c("div", f3, f(B.value), 1)) : y("", !0), le[6] || (le[6] = s("div", { class: "git-url-hint" }, "Paste a GitHub URL to preview the environment", -1)) ]) - ])) : (w.value || S.value) && !p.value && !_.value ? (a(), c("div", m3, [ + ])) : (w.value || x.value) && !p.value && !_.value ? (a(), c("div", m3, [ s("div", v3, [ w.value ? (a(), c("div", p3, [ le[8] || (le[8] = s("div", { class: "file-bar-icon" }, "📦", -1)), @@ -16696,10 +16696,10 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = s("div", h3, f(w.value.name), 1), s("div", y3, f(je(w.value.size)), 1) ]) - ])) : S.value ? (a(), c("div", w3, [ + ])) : x.value ? (a(), c("div", w3, [ le[10] || (le[10] = s("div", { class: "file-bar-icon" }, "🔗", -1)), s("div", b3, [ - s("div", _3, f(R(S.value)), 1), + s("div", _3, f(R(x.value)), 1), le[9] || (le[9] = s("div", { class: "file-bar-size" }, "Git Repository", -1)) ]) ])) : y("", !0), @@ -16796,10 +16796,10 @@ const Jw = { class: "remote-url-display" }, Xw = ["title"], Qw = ["title"], Zw = ])) : y("", !0) ])) : _.value ? (a(), c("div", T3, [ s("div", { - class: xe(["complete-icon", x.value ? "success" : "error"]) - }, f(x.value ? "✓" : "✕"), 3), + class: xe(["complete-icon", S.value ? "success" : "error"]) + }, f(S.value ? "✓" : "✕"), 3), s("div", P3, [ - s("div", R3, f(x.value ? "Import Successful" : "Import Failed"), 1), + s("div", R3, f(S.value ? "Import Successful" : "Import Failed"), 1), s("div", M3, f($.value), 1) ]), s("div", D3, [ @@ -16907,7 +16907,7 @@ function Tr(e) { terminated: 4 }; return [...oo.value].sort( - (_, x) => (p[_.status] ?? 5) - (p[x.status] ?? 5) + (_, S) => (p[_.status] ?? 5) - (p[S.status] ?? 5) ); }); async function r() { @@ -16929,17 +16929,17 @@ function Tr(e) { } function u(p, _) { if (p.provider === "custom" && p.worker_name) { - const x = p.id.includes(":") ? p.id.split(":").slice(1).join(":") : p.id; - return _ === "terminate" ? `/v2/comfygit/deploy/custom/${p.worker_name}/instances/${x}` : `/v2/comfygit/deploy/custom/${p.worker_name}/instances/${x}/${_}`; + const S = p.id.includes(":") ? p.id.split(":").slice(1).join(":") : p.id; + return _ === "terminate" ? `/v2/comfygit/deploy/custom/${p.worker_name}/instances/${S}` : `/v2/comfygit/deploy/custom/${p.worker_name}/instances/${S}/${_}`; } return _ === "terminate" ? `/v2/comfygit/deploy/${p.provider}/${p.id}` : `/v2/comfygit/deploy/${p.provider}/${p.id}/${_}`; } async function d(p) { try { if (!un) { - const _ = u(p, "stop"), x = await dn(_, { method: "POST" }); - if (!x.ok) { - const $ = await x.json(); + const _ = u(p, "stop"), S = await dn(_, { method: "POST" }); + if (!S.ok) { + const $ = await S.json(); throw new Error($.message || "Failed to stop instance"); } } @@ -16951,9 +16951,9 @@ function Tr(e) { async function m(p) { try { if (!un) { - const _ = u(p, "start"), x = await dn(_, { method: "POST" }); - if (!x.ok) { - const $ = await x.json(); + const _ = u(p, "start"), S = await dn(_, { method: "POST" }); + if (!S.ok) { + const $ = await S.json(); throw new Error($.message || "Failed to start instance"); } } @@ -16965,9 +16965,9 @@ function Tr(e) { async function v(p) { try { if (!un) { - const _ = u(p, "terminate"), x = await dn(_, { method: "DELETE" }); - if (!x.ok) { - const $ = await x.json(); + const _ = u(p, "terminate"), S = await dn(_, { method: "DELETE" }); + if (!S.ok) { + const $ = await S.json(); throw new Error($.message || "Failed to terminate instance"); } } @@ -17383,9 +17383,9 @@ const U3 = { class: "instance-header" }, z3 = { class: "provider-badge" }, F3 = getRemotes: w, getRemoteSyncStatus: p, fetchRemote: _, - pushToRemote: x, + pushToRemote: S, getDataCenters: $ - } = at(), P = k(!1), N = k(""), T = k(!1), S = k(!1), q = k(null), B = k(null), A = k(""), I = k(""), E = k(""), O = k("SECURE"), re = k("ON_DEMAND"), Y = k("my-comfyui-deploy"), H = k([]), te = k({}), Z = k(!1), U = k(null), z = k(null), R = k(null), be = k([]), ve = k(!1), Ee = k([]), De = k(!1), je = k([]), Je = k(!1), _e = k(null), Se = k(!1), Ve = k(!1), ye = k(null), le = k(!1), Fe = k(null), Ie = k(null), L = k(null), V = k(!1), oe = k(null), ae = k(!1), de = k(!1), fe = F(() => Ee.value.find((he) => he.id === I.value) || null), ke = F(() => A.value ? Ee.value.filter((he) => he.data_center_id === A.value) : Ee.value), $e = F(() => je.value.filter((he) => he.available)), ne = F(() => U.value && te.value[U.value] || null), ue = F(() => { + } = at(), P = k(!1), N = k(""), T = k(!1), x = k(!1), q = k(null), B = k(null), A = k(""), I = k(""), E = k(""), O = k("SECURE"), re = k("ON_DEMAND"), Y = k("my-comfyui-deploy"), H = k([]), te = k({}), Z = k(!1), U = k(null), z = k(null), R = k(null), be = k([]), ve = k(!1), Ee = k([]), De = k(!1), je = k([]), Je = k(!1), _e = k(null), Se = k(!1), Ve = k(!1), ye = k(null), le = k(!1), Fe = k(null), Ie = k(null), L = k(null), V = k(!1), oe = k(null), ae = k(!1), de = k(!1), fe = F(() => Ee.value.find((he) => he.id === I.value) || null), ke = F(() => A.value ? Ee.value.filter((he) => he.data_center_id === A.value) : Ee.value), $e = F(() => je.value.filter((he) => he.available)), ne = F(() => U.value && te.value[U.value] || null), ue = F(() => { if (!U.value) return null; const he = H.value.find((Q) => Q.name === U.value); return (he == null ? void 0 : he.fetch_url) || null; @@ -17446,7 +17446,7 @@ const U3 = { class: "instance-header" }, z3 = { class: "provider-badge" }, F3 = async function W(he) { R.value = he; try { - await x(he, { force: !1 }); + await S(he, { force: !1 }); const Q = await p(he); Q && (te.value[he] = Q), o("toast", `Pushed to ${he}`, "success"); } catch { @@ -17460,7 +17460,7 @@ const U3 = { class: "instance-header" }, z3 = { class: "provider-badge" }, F3 = } async function Te() { if (N.value) { - S.value = !0, q.value = null; + x.value = !0, q.value = null; try { const he = await l(N.value, !0); he.status === "success" ? (T.value = !0, B.value = he.credit_balance ?? null, q.value = { type: "success", message: he.message }, await K()) : q.value = { type: "error", message: he.message }; @@ -17470,7 +17470,7 @@ const U3 = { class: "instance-header" }, z3 = { class: "provider-badge" }, F3 = message: he instanceof Error ? he.message : "Connection test failed" }; } finally { - S.value = !1; + x.value = !1; } } } @@ -17673,8 +17673,8 @@ const U3 = { class: "instance-header" }, z3 = { class: "provider-badge" }, F3 = key: 0, variant: "secondary", size: "xs", - loading: S.value, - disabled: !N.value || S.value, + loading: x.value, + disabled: !N.value || x.value, onClick: Te }, { default: g(() => [...Q[16] || (Q[16] = [ @@ -18314,7 +18314,7 @@ const U3 = { class: "instance-header" }, z3 = { class: "provider-badge" }, F3 = return (p, _) => (a(), M(vt, { title: "ADD WORKER MANUALLY", size: "md", - onClose: _[5] || (_[5] = (x) => p.$emit("close")) + onClose: _[5] || (_[5] = (S) => p.$emit("close")) }, { body: g(() => [ s("div", b8, [ @@ -18322,7 +18322,7 @@ const U3 = { class: "instance-header" }, z3 = { class: "provider-badge" }, F3 = s("div", k8, [ _[6] || (_[6] = s("label", { class: "form-label" }, "Worker Name", -1)), He(s("input", { - "onUpdate:modelValue": _[0] || (_[0] = (x) => l.name = x), + "onUpdate:modelValue": _[0] || (_[0] = (S) => l.name = S), type: "text", class: "form-input", placeholder: "my-gpu-worker" @@ -18334,7 +18334,7 @@ const U3 = { class: "instance-header" }, z3 = { class: "provider-badge" }, F3 = s("div", C8, [ _[7] || (_[7] = s("label", { class: "form-label" }, "Host", -1)), He(s("input", { - "onUpdate:modelValue": _[1] || (_[1] = (x) => l.host = x), + "onUpdate:modelValue": _[1] || (_[1] = (S) => l.host = S), type: "text", class: "form-input", placeholder: "192.168.1.50" @@ -18345,7 +18345,7 @@ const U3 = { class: "instance-header" }, z3 = { class: "provider-badge" }, F3 = s("div", x8, [ _[8] || (_[8] = s("label", { class: "form-label" }, "Port", -1)), He(s("input", { - "onUpdate:modelValue": _[2] || (_[2] = (x) => l.port = x), + "onUpdate:modelValue": _[2] || (_[2] = (S) => l.port = S), type: "number", class: "form-input", placeholder: "9090" @@ -18363,7 +18363,7 @@ const U3 = { class: "instance-header" }, z3 = { class: "provider-badge" }, F3 = _[9] || (_[9] = s("label", { class: "form-label" }, "API Key", -1)), s("div", I8, [ He(s("input", { - "onUpdate:modelValue": _[3] || (_[3] = (x) => l.apiKey = x), + "onUpdate:modelValue": _[3] || (_[3] = (S) => l.apiKey = S), type: i.value ? "text" : "password", class: "form-input", placeholder: "cg_wk_*********************************" @@ -18372,7 +18372,7 @@ const U3 = { class: "instance-header" }, z3 = { class: "provider-badge" }, F3 = ]), s("button", { class: "toggle-visibility", - onClick: _[4] || (_[4] = (x) => i.value = !i.value), + onClick: _[4] || (_[4] = (S) => i.value = !i.value), type: "button" }, f(i.value ? "👁" : "👁‍🗨"), 1) ]), @@ -18499,7 +18499,7 @@ const U3 = { class: "instance-header" }, z3 = { class: "provider-badge" }, F3 = C(ie, { variant: "primary", size: "xs", - onClick: (x) => v(_) + onClick: (S) => v(_) }, { default: g(() => [...p[4] || (p[4] = [ b(" Add ", -1) @@ -18620,7 +18620,7 @@ const U3 = { class: "instance-header" }, z3 = { class: "provider-badge" }, F3 = pushToRemote: u, getDeploySummary: d, deployToWorker: m - } = at(), v = k([]), h = k({}), w = k(!1), p = k(null), _ = k(null), x = k(null), $ = k(o.worker.mode || "native"), P = k(""), N = k(null), T = k(!1), S = F(() => p.value && h.value[p.value] || null), q = F(() => { + } = at(), v = k([]), h = k({}), w = k(!1), p = k(null), _ = k(null), S = k(null), $ = k(o.worker.mode || "native"), P = k(""), N = k(null), T = k(!1), x = F(() => p.value && h.value[p.value] || null), q = F(() => { if (!p.value) return null; const H = v.value.find((te) => te.name === p.value); return (H == null ? void 0 : H.fetch_url) || null; @@ -18662,7 +18662,7 @@ const U3 = { class: "instance-header" }, z3 = { class: "provider-badge" }, F3 = } } async function O(H) { - x.value = H; + S.value = H; try { await u(H, { force: !1 }); const te = await i(H); @@ -18670,7 +18670,7 @@ const U3 = { class: "instance-header" }, z3 = { class: "provider-badge" }, F3 = } catch { n("toast", "Push failed", "error"); } finally { - x.value = null; + S.value = null; } } function re(H) { @@ -18715,7 +18715,7 @@ const U3 = { class: "instance-header" }, z3 = { class: "provider-badge" }, F3 = "sync-status": h.value[Z.name], "is-selected": p.value === Z.name, "is-fetching": _.value === Z.name, - "is-pushing": x.value === Z.name, + "is-pushing": S.value === Z.name, onFetch: E, onPush: O, onSelect: re @@ -18763,16 +18763,16 @@ const U3 = { class: "instance-header" }, z3 = { class: "provider-badge" }, F3 = te[12] || (te[12] = s("div", { class: "section-label" }, "ENVIRONMENT SUMMARY", -1)), s("div", mS, " ComfyUI: " + f(N.value.comfyui_version) + " • " + f(N.value.node_count) + " nodes • " + f(N.value.model_count) + " models • " + f(N.value.workflow_count) + " workflows ", 1) ])) : y("", !0), - S.value && S.value.ahead > 0 ? (a(), c("div", vS, [ + x.value && x.value.ahead > 0 ? (a(), c("div", vS, [ te[14] || (te[14] = s("span", { class: "warning-icon" }, "⚠", -1)), s("div", pS, [ - s("strong", null, f(S.value.ahead) + " unpushed commit" + f(S.value.ahead !== 1 ? "s" : ""), 1), + s("strong", null, f(x.value.ahead) + " unpushed commit" + f(x.value.ahead !== 1 ? "s" : ""), 1), s("p", null, "Push to '" + f(p.value) + "' before deploying to include your latest changes.", 1) ]), C(ie, { variant: "primary", size: "xs", - loading: x.value === p.value, + loading: S.value === p.value, onClick: te[3] || (te[3] = (Z) => p.value && O(p.value)) }, { default: g(() => [...te[13] || (te[13] = [ @@ -18830,7 +18830,7 @@ const U3 = { class: "instance-header" }, z3 = { class: "provider-badge" }, F3 = addCustomWorker: l, removeCustomWorker: i, scanForWorkers: r - } = at(), u = k([]), d = k([]), m = k(!1), v = k(!1), h = k(null), w = k(!1), p = k(!1), _ = k(null), x = k(null); + } = at(), u = k([]), d = k([]), m = k(!1), v = k(!1), h = k(null), w = k(!1), p = k(!1), _ = k(null), S = k(null); async function $() { m.value = !0; try { @@ -18843,15 +18843,15 @@ const U3 = { class: "instance-header" }, z3 = { class: "provider-badge" }, F3 = } } async function P() { - v.value = !0, x.value = null; + v.value = !0, S.value = null; try { const A = await r(), I = A.discovered.filter( (E) => !u.value.some((O) => O.host === E.host && O.port === E.port) ); - d.value = I, I.length > 0 ? p.value = !0 : A.discovered.length > 0 ? x.value = { + d.value = I, I.length > 0 ? p.value = !0 : A.discovered.length > 0 ? S.value = { type: "info", message: "All discovered workers are already registered" - } : x.value = { + } : S.value = { type: "info", message: "No workers found on the network. Make sure workers are running with --broadcast" }; @@ -18875,7 +18875,7 @@ const U3 = { class: "instance-header" }, z3 = { class: "provider-badge" }, F3 = o("toast", I instanceof Error ? I.message : "Failed to add worker", "error"); } } - async function S(A) { + async function x(A) { h.value = A; try { await i(A), o("toast", `Worker '${A}' removed`, "success"), await $(); @@ -18946,19 +18946,19 @@ const U3 = { class: "instance-header" }, z3 = { class: "provider-badge" }, F3 = worker: E, "is-action-loading": h.value === E.name, onDeploy: q, - onRemove: S + onRemove: x }, null, 8, ["worker", "is-action-loading"]))), 128)) ])) ]), - x.value ? (a(), c("div", { + S.value ? (a(), c("div", { key: 0, - class: xe(["scan-result", x.value.type]) + class: xe(["scan-result", S.value.type]) }, [ - s("span", SS, f(x.value.type === "success" ? "✓" : "ⓘ"), 1), - s("span", IS, f(x.value.message), 1), + s("span", SS, f(S.value.type === "success" ? "✓" : "ⓘ"), 1), + s("span", IS, f(S.value.message), 1), s("button", { class: "dismiss-btn", - onClick: I[1] || (I[1] = (E) => x.value = null) + onClick: I[1] || (I[1] = (E) => S.value = null) }, "×") ], 2)) : y("", !0), p.value ? (a(), M(eS, { @@ -19041,7 +19041,7 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS } catch { } }); - async function x() { + async function S() { if (m.value) { h.value = !0, w.value = null; try { @@ -19069,7 +19069,7 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS return (N, T) => (a(), M(vt, { title: "DEPLOY SETTINGS", size: "sm", - onClose: T[2] || (T[2] = (S) => N.$emit("close")) + onClose: T[2] || (T[2] = (x) => N.$emit("close")) }, { body: g(() => [ s("div", MS, [ @@ -19094,7 +19094,7 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS T[4] || (T[4] = s("label", { class: "form-label" }, "Personal Access Token", -1)), s("div", NS, [ He(s("input", { - "onUpdate:modelValue": T[0] || (T[0] = (S) => m.value = S), + "onUpdate:modelValue": T[0] || (T[0] = (x) => m.value = x), type: v.value ? "text" : "password", class: "form-input", placeholder: "ghp_xxxxxxxxxxxxxxxxxxxx" @@ -19104,7 +19104,7 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS s("button", { type: "button", class: "toggle-visibility", - onClick: T[1] || (T[1] = (S) => v.value = !v.value) + onClick: T[1] || (T[1] = (x) => v.value = !v.value) }, f(v.value ? "Hide" : "Show"), 1) ]), T[5] || (T[5] = s("div", { class: "form-help" }, " Token is stored in your browser only. Never saved to the server. ", -1)) @@ -19122,7 +19122,7 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS size: "sm", loading: h.value, disabled: !m.value || h.value, - onClick: x + onClick: S }, { default: g(() => [...T[6] || (T[6] = [ b(" Test Connection ", -1) @@ -19174,7 +19174,7 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS terminateInstance: m, startPolling: v, stopPolling: h - } = Tr(), w = k(!1), p = k(!1), _ = k("instances"), x = k(null), $ = k(null), P = F(() => [ + } = Tr(), w = k(!1), p = k(!1), _ = k("instances"), S = k(null), $ = k(null), P = F(() => [ { id: "instances", label: "Instances", @@ -19190,38 +19190,38 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS } ]); async function N(A) { - x.value = A.id; + S.value = A.id; try { await u(A), o("toast", "Instance stopped", "success"); } catch (I) { o("toast", I instanceof Error ? I.message : "Failed to stop instance", "error"); } finally { - x.value = null; + S.value = null; } } async function T(A) { - x.value = A.id; + S.value = A.id; try { await d(A), o("toast", "Instance starting...", "success"); } catch (I) { o("toast", I instanceof Error ? I.message : "Failed to start instance", "error"); } finally { - x.value = null; + S.value = null; } } - function S(A) { + function x(A) { $.value = A; } async function q() { const A = $.value; if (A) { - $.value = null, x.value = A.id; + $.value = null, S.value = A.id; try { await m(A), o("toast", "Instance terminated", "success"); } catch (I) { o("toast", I instanceof Error ? I.message : "Failed to terminate instance", "error"); } finally { - x.value = null; + S.value = null; } } } @@ -19267,11 +19267,11 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS key: 0, instances: Ue(n), "is-loading": Ue(l), - "action-loading-id": x.value, + "action-loading-id": S.value, onRefresh: Ue(r), onStop: N, onStart: T, - onTerminate: S + onTerminate: x }, null, 8, ["instances", "is-loading", "action-loading-id", "onRefresh"])) : y("", !0), _.value === "runpod" ? (a(), M(s8, { key: 1, @@ -19636,40 +19636,40 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS }, T4 = { key: 3, class: "issues-error" -}, P4 = { class: "error-header" }, R4 = { class: "error-title" }, M4 = { class: "issues-list" }, D4 = { class: "message-section" }, L4 = { class: "popover-footer" }, O4 = { +}, P4 = { class: "error-header" }, R4 = { class: "error-title" }, M4 = { class: "issues-list" }, D4 = { class: "workflow-state" }, L4 = { class: "message-section" }, O4 = { class: "popover-footer" }, N4 = { key: 1, class: "commit-popover" -}, N4 = { class: "popover-header" }, A4 = { class: "popover-body" }, U4 = { +}, A4 = { class: "popover-header" }, U4 = { class: "popover-body" }, z4 = { key: 0, class: "changes-summary" -}, z4 = { +}, F4 = { key: 0, class: "change-item" -}, F4 = { +}, B4 = { key: 1, class: "change-item" -}, B4 = { +}, V4 = { key: 2, class: "change-item" -}, V4 = { +}, W4 = { key: 3, class: "change-item" -}, W4 = { +}, G4 = { key: 4, class: "change-item" -}, G4 = { +}, j4 = { key: 5, class: "change-item" -}, j4 = { +}, H4 = { key: 1, class: "no-changes" -}, H4 = { +}, K4 = { key: 2, class: "loading" -}, K4 = { +}, q4 = { key: 3, class: "issues-error" -}, q4 = { class: "error-header" }, Y4 = { class: "error-title" }, J4 = { class: "issues-list" }, X4 = { class: "message-section" }, Q4 = { class: "popover-footer" }, Z4 = /* @__PURE__ */ me({ +}, Y4 = { class: "error-header" }, J4 = { class: "error-title" }, X4 = { class: "issues-list" }, Q4 = { class: "workflow-state" }, Z4 = { class: "message-section" }, e6 = { class: "popover-footer" }, t6 = /* @__PURE__ */ me({ __name: "CommitPopover", props: { status: {}, @@ -19683,50 +19683,54 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS return _.new.length > 0 || _.modified.length > 0 || _.deleted.length > 0 || o.status.has_changes; }), m = F(() => { if (!o.status) return !1; - const _ = o.status.workflows, x = o.status.git_changes; - return _.new.length > 0 || _.modified.length > 0 || _.deleted.length > 0 || x.nodes_added.length > 0 || x.nodes_removed.length > 0; + const _ = o.status.workflows, S = o.status.git_changes; + return _.new.length > 0 || _.modified.length > 0 || _.deleted.length > 0 || S.nodes_added.length > 0 || S.nodes_removed.length > 0; }), v = F(() => { var _; - return (_ = o.status) != null && _.workflows.analyzed ? o.status.workflows.analyzed.filter( - (x) => x.has_issues && (x.sync_state === "new" || x.sync_state === "modified") - ) : []; + return (_ = o.status) != null && _.workflows.analyzed ? o.status.workflows.analyzed.filter((S) => S.has_issues) : []; }), h = F(() => v.value.length > 0), w = F(() => h.value && !u.value); async function p() { - var _, x, $; + var _, S, $, P; if (!(h.value && !u.value) && !(!d.value || !i.value.trim() || r.value)) { r.value = !0; try { - const P = await l(i.value.trim(), u.value); - if (P.status === "success") { - const N = `Committed: ${((_ = P.summary) == null ? void 0 : _.new) || 0} new, ${((x = P.summary) == null ? void 0 : x.modified) || 0} modified, ${(($ = P.summary) == null ? void 0 : $.deleted) || 0} deleted`; - n("committed", { success: !0, message: N }); - } else P.status === "no_changes" ? n("committed", { success: !1, message: "No changes to commit" }) : P.status === "blocked" ? n("committed", { success: !1, message: 'Commit blocked - enable "Allow issues" to force commit' }) : n("committed", { success: !1, message: P.message || "Commit failed" }); - } catch (P) { - n("committed", { success: !1, message: P instanceof Error ? P.message : "Commit failed" }); + const N = await l(i.value.trim(), u.value); + if (N.status === "success") { + const T = `Committed: ${((_ = N.summary) == null ? void 0 : _.new) || 0} new, ${((S = N.summary) == null ? void 0 : S.modified) || 0} modified, ${(($ = N.summary) == null ? void 0 : $.deleted) || 0} deleted`; + n("committed", { success: !0, message: T }); + } else if (N.status === "no_changes") + n("committed", { success: !1, message: "No changes to commit" }); + else if (N.status === "blocked") { + const T = ((P = N.issues) == null ? void 0 : P.map((x) => `${x.name}: ${x.issue}`).join("; ")) || "Unknown issues"; + n("committed", { success: !1, message: `Commit blocked - ${T}. Enable "Allow issues" to force.` }); + } else + n("committed", { success: !1, message: N.message || "Commit failed" }); + } catch (N) { + n("committed", { success: !1, message: N instanceof Error ? N.message : "Commit failed" }); } finally { r.value = !1; } } } - return (_, x) => e.asModal ? (a(), M(ht, { + return (_, S) => e.asModal ? (a(), M(ht, { key: 0, to: "body" }, [ s("div", { class: "modal-overlay", - onClick: x[5] || (x[5] = ($) => n("close")) + onClick: S[5] || (S[5] = ($) => n("close")) }, [ s("div", { class: "commit-popover modal", - onClick: x[4] || (x[4] = nt(() => { + onClick: S[4] || (S[4] = nt(() => { }, ["stop"])) }, [ s("div", y4, [ - x[11] || (x[11] = s("h3", { class: "popover-title" }, "COMMIT CHANGES", -1)), + S[11] || (S[11] = s("h3", { class: "popover-title" }, "COMMIT CHANGES", -1)), s("button", { class: "close-btn", - onClick: x[0] || (x[0] = ($) => n("close")) - }, [...x[10] || (x[10] = [ + onClick: S[0] || (S[0] = ($) => n("close")) + }, [...S[10] || (S[10] = [ s("svg", { width: "16", height: "16", @@ -19740,34 +19744,34 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS s("div", w4, [ e.status && d.value ? (a(), c("div", b4, [ e.status.workflows.new.length ? (a(), c("div", _4, [ - x[12] || (x[12] = s("span", { class: "change-icon new" }, "+", -1)), + S[12] || (S[12] = s("span", { class: "change-icon new" }, "+", -1)), s("span", null, f(e.status.workflows.new.length) + " new workflow(s)", 1) ])) : y("", !0), e.status.workflows.modified.length ? (a(), c("div", k4, [ - x[13] || (x[13] = s("span", { class: "change-icon modified" }, "~", -1)), + S[13] || (S[13] = s("span", { class: "change-icon modified" }, "~", -1)), s("span", null, f(e.status.workflows.modified.length) + " modified", 1) ])) : y("", !0), e.status.workflows.deleted.length ? (a(), c("div", $4, [ - x[14] || (x[14] = s("span", { class: "change-icon deleted" }, "-", -1)), + S[14] || (S[14] = s("span", { class: "change-icon deleted" }, "-", -1)), s("span", null, f(e.status.workflows.deleted.length) + " deleted", 1) ])) : y("", !0), e.status.git_changes.nodes_added.length ? (a(), c("div", C4, [ - x[15] || (x[15] = s("span", { class: "change-icon new" }, "+", -1)), + S[15] || (S[15] = s("span", { class: "change-icon new" }, "+", -1)), s("span", null, f(e.status.git_changes.nodes_added.length) + " node(s) added", 1) ])) : y("", !0), e.status.git_changes.nodes_removed.length ? (a(), c("div", x4, [ - x[16] || (x[16] = s("span", { class: "change-icon deleted" }, "-", -1)), + S[16] || (S[16] = s("span", { class: "change-icon deleted" }, "-", -1)), s("span", null, f(e.status.git_changes.nodes_removed.length) + " node(s) removed", 1) ])) : y("", !0), - m.value ? y("", !0) : (a(), c("div", S4, [...x[17] || (x[17] = [ + m.value ? y("", !0) : (a(), c("div", S4, [...S[17] || (S[17] = [ s("span", { class: "change-icon modified" }, "~", -1), s("span", null, "Configuration updated", -1) ])])) ])) : e.status ? (a(), c("div", I4, " No changes to commit ")) : (a(), c("div", E4, " Loading... ")), h.value ? (a(), c("div", T4, [ s("div", P4, [ - x[18] || (x[18] = s("span", { class: "error-icon" }, "⚠", -1)), - s("span", R4, f(v.value.length) + " workflow(s) can't run", 1) + S[18] || (S[18] = s("span", { class: "error-icon" }, "⚠", -1)), + s("span", R4, f(v.value.length) + " workflow(s) have issues", 1) ]), s("div", M4, [ (a(!0), c(j, null, ge(v.value, ($) => (a(), c("div", { @@ -19775,24 +19779,25 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS class: "issue-item" }, [ s("strong", null, f($.name), 1), + s("span", D4, "(" + f($.sync_state) + ")", 1), b(": " + f($.issue_summary), 1) ]))), 128)) ]), C(Kl, { modelValue: u.value, - "onUpdate:modelValue": x[1] || (x[1] = ($) => u.value = $), + "onUpdate:modelValue": S[1] || (S[1] = ($) => u.value = $), class: "allow-issues-toggle" }, { - default: g(() => [...x[19] || (x[19] = [ + default: g(() => [...S[19] || (S[19] = [ b(" Commit anyway (ignore issues) ", -1) ])]), _: 1 }, 8, ["modelValue"]) ])) : y("", !0), - s("div", D4, [ + s("div", L4, [ C(Hl, { modelValue: i.value, - "onUpdate:modelValue": x[2] || (x[2] = ($) => i.value = $), + "onUpdate:modelValue": S[2] || (S[2] = ($) => i.value = $), placeholder: w.value ? "Enable 'Allow issues' to commit" : d.value ? "Describe your changes..." : "No changes", disabled: !d.value || r.value || w.value, rows: 3, @@ -19802,12 +19807,12 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS }, null, 8, ["modelValue", "placeholder", "disabled"]) ]) ]), - s("div", L4, [ + s("div", O4, [ C(Me, { variant: "secondary", - onClick: x[3] || (x[3] = ($) => n("close")) + onClick: S[3] || (S[3] = ($) => n("close")) }, { - default: g(() => [...x[20] || (x[20] = [ + default: g(() => [...S[20] || (S[20] = [ b(" Cancel ", -1) ])]), _: 1 @@ -19826,13 +19831,13 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS ]) ]) ]) - ])) : (a(), c("div", O4, [ - s("div", N4, [ - x[22] || (x[22] = s("h3", { class: "popover-title" }, "COMMIT CHANGES", -1)), + ])) : (a(), c("div", N4, [ + s("div", A4, [ + S[22] || (S[22] = s("h3", { class: "popover-title" }, "COMMIT CHANGES", -1)), s("button", { class: "close-btn", - onClick: x[6] || (x[6] = ($) => n("close")) - }, [...x[21] || (x[21] = [ + onClick: S[6] || (S[6] = ($) => n("close")) + }, [...S[21] || (S[21] = [ s("svg", { width: "16", height: "16", @@ -19843,62 +19848,63 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS ], -1) ])]) ]), - s("div", A4, [ - e.status && d.value ? (a(), c("div", U4, [ - e.status.workflows.new.length ? (a(), c("div", z4, [ - x[23] || (x[23] = s("span", { class: "change-icon new" }, "+", -1)), + s("div", U4, [ + e.status && d.value ? (a(), c("div", z4, [ + e.status.workflows.new.length ? (a(), c("div", F4, [ + S[23] || (S[23] = s("span", { class: "change-icon new" }, "+", -1)), s("span", null, f(e.status.workflows.new.length) + " new workflow(s)", 1) ])) : y("", !0), - e.status.workflows.modified.length ? (a(), c("div", F4, [ - x[24] || (x[24] = s("span", { class: "change-icon modified" }, "~", -1)), + e.status.workflows.modified.length ? (a(), c("div", B4, [ + S[24] || (S[24] = s("span", { class: "change-icon modified" }, "~", -1)), s("span", null, f(e.status.workflows.modified.length) + " modified", 1) ])) : y("", !0), - e.status.workflows.deleted.length ? (a(), c("div", B4, [ - x[25] || (x[25] = s("span", { class: "change-icon deleted" }, "-", -1)), + e.status.workflows.deleted.length ? (a(), c("div", V4, [ + S[25] || (S[25] = s("span", { class: "change-icon deleted" }, "-", -1)), s("span", null, f(e.status.workflows.deleted.length) + " deleted", 1) ])) : y("", !0), - e.status.git_changes.nodes_added.length ? (a(), c("div", V4, [ - x[26] || (x[26] = s("span", { class: "change-icon new" }, "+", -1)), + e.status.git_changes.nodes_added.length ? (a(), c("div", W4, [ + S[26] || (S[26] = s("span", { class: "change-icon new" }, "+", -1)), s("span", null, f(e.status.git_changes.nodes_added.length) + " node(s) added", 1) ])) : y("", !0), - e.status.git_changes.nodes_removed.length ? (a(), c("div", W4, [ - x[27] || (x[27] = s("span", { class: "change-icon deleted" }, "-", -1)), + e.status.git_changes.nodes_removed.length ? (a(), c("div", G4, [ + S[27] || (S[27] = s("span", { class: "change-icon deleted" }, "-", -1)), s("span", null, f(e.status.git_changes.nodes_removed.length) + " node(s) removed", 1) ])) : y("", !0), - m.value ? y("", !0) : (a(), c("div", G4, [...x[28] || (x[28] = [ + m.value ? y("", !0) : (a(), c("div", j4, [...S[28] || (S[28] = [ s("span", { class: "change-icon modified" }, "~", -1), s("span", null, "Configuration updated", -1) ])])) - ])) : e.status ? (a(), c("div", j4, " No changes to commit ")) : (a(), c("div", H4, " Loading... ")), - h.value ? (a(), c("div", K4, [ - s("div", q4, [ - x[29] || (x[29] = s("span", { class: "error-icon" }, "⚠", -1)), - s("span", Y4, f(v.value.length) + " workflow(s) can't run", 1) + ])) : e.status ? (a(), c("div", H4, " No changes to commit ")) : (a(), c("div", K4, " Loading... ")), + h.value ? (a(), c("div", q4, [ + s("div", Y4, [ + S[29] || (S[29] = s("span", { class: "error-icon" }, "⚠", -1)), + s("span", J4, f(v.value.length) + " workflow(s) have issues", 1) ]), - s("div", J4, [ + s("div", X4, [ (a(!0), c(j, null, ge(v.value, ($) => (a(), c("div", { key: $.name, class: "issue-item" }, [ s("strong", null, f($.name), 1), + s("span", Q4, "(" + f($.sync_state) + ")", 1), b(": " + f($.issue_summary), 1) ]))), 128)) ]), C(Kl, { modelValue: u.value, - "onUpdate:modelValue": x[7] || (x[7] = ($) => u.value = $), + "onUpdate:modelValue": S[7] || (S[7] = ($) => u.value = $), class: "allow-issues-toggle" }, { - default: g(() => [...x[30] || (x[30] = [ + default: g(() => [...S[30] || (S[30] = [ b(" Commit anyway (ignore issues) ", -1) ])]), _: 1 }, 8, ["modelValue"]) ])) : y("", !0), - s("div", X4, [ + s("div", Z4, [ C(Hl, { modelValue: i.value, - "onUpdate:modelValue": x[8] || (x[8] = ($) => i.value = $), + "onUpdate:modelValue": S[8] || (S[8] = ($) => i.value = $), placeholder: w.value ? "Enable 'Allow issues' to commit" : d.value ? "Describe your changes..." : "No changes", disabled: !d.value || r.value || w.value, rows: 3, @@ -19908,12 +19914,12 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS }, null, 8, ["modelValue", "placeholder", "disabled"]) ]) ]), - s("div", Q4, [ + s("div", e6, [ C(Me, { variant: "secondary", - onClick: x[9] || (x[9] = ($) => n("close")) + onClick: S[9] || (S[9] = ($) => n("close")) }, { - default: g(() => [...x[31] || (x[31] = [ + default: g(() => [...S[31] || (S[31] = [ b(" Cancel ", -1) ])]), _: 1 @@ -19932,7 +19938,7 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS ]) ])); } -}), Mr = /* @__PURE__ */ pe(Z4, [["__scopeId", "data-v-d0fe6172"]]), e6 = { class: "modal-header" }, t6 = { class: "modal-body" }, s6 = { class: "switch-message" }, o6 = { class: "switch-details" }, n6 = { class: "modal-actions" }, a6 = /* @__PURE__ */ me({ +}), Mr = /* @__PURE__ */ pe(t6, [["__scopeId", "data-v-5f897631"]]), s6 = { class: "modal-header" }, o6 = { class: "modal-body" }, n6 = { class: "switch-message" }, a6 = { class: "switch-details" }, l6 = { class: "modal-actions" }, i6 = /* @__PURE__ */ me({ __name: "ConfirmSwitchModal", props: { show: { type: Boolean }, @@ -19952,15 +19958,15 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS onClick: o[3] || (o[3] = nt(() => { }, ["stop"])) }, [ - s("div", e6, [ + s("div", s6, [ o[5] || (o[5] = s("h3", { class: "modal-title" }, "CONFIRM ENVIRONMENT SWITCH", -1)), s("button", { class: "modal-close", onClick: o[0] || (o[0] = (n) => t.$emit("close")) }, "✕") ]), - s("div", t6, [ - s("p", s6, [ + s("div", o6, [ + s("p", n6, [ o[6] || (o[6] = b(" Switch from ", -1)), s("strong", null, f(e.fromEnvironment), 1), o[7] || (o[7] = b(" to ", -1)), @@ -19971,10 +19977,10 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS s("span", { class: "warning-icon" }, "⚠"), s("span", null, "This will restart ComfyUI") ], -1)), - s("p", o6, ' Your current work will be preserved. You can switch back to "' + f(e.fromEnvironment) + '" anytime. ', 1), + s("p", a6, ' Your current work will be preserved. You can switch back to "' + f(e.fromEnvironment) + '" anytime. ', 1), o[10] || (o[10] = s("p", { class: "switch-eta" }, " Estimated downtime: ~30 seconds ", -1)) ]), - s("div", n6, [ + s("div", l6, [ C(ie, { variant: "secondary", onClick: o[1] || (o[1] = (n) => t.$emit("close")) @@ -19998,10 +20004,10 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS ])) : y("", !0) ])); } -}), l6 = /* @__PURE__ */ pe(a6, [["__scopeId", "data-v-e9c5253e"]]), i6 = { +}), r6 = /* @__PURE__ */ pe(i6, [["__scopeId", "data-v-e9c5253e"]]), c6 = { key: 0, class: "modal-overlay" -}, r6 = { class: "modal-content" }, c6 = { class: "modal-body" }, u6 = { class: "progress-info" }, d6 = { class: "progress-percentage" }, f6 = { class: "progress-state" }, m6 = { class: "switch-steps" }, v6 = { class: "step-icon" }, p6 = { class: "step-label" }, g6 = /* @__PURE__ */ me({ +}, u6 = { class: "modal-content" }, d6 = { class: "modal-body" }, f6 = { class: "progress-info" }, m6 = { class: "progress-percentage" }, v6 = { class: "progress-state" }, p6 = { class: "switch-steps" }, g6 = { class: "step-icon" }, h6 = { class: "step-label" }, y6 = /* @__PURE__ */ me({ __name: "SwitchProgressModal", props: { show: { type: Boolean }, @@ -20039,27 +20045,27 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS }); }); return (i, r) => (a(), M(ht, { to: "body" }, [ - e.show ? (a(), c("div", i6, [ - s("div", r6, [ + e.show ? (a(), c("div", c6, [ + s("div", u6, [ r[1] || (r[1] = s("div", { class: "modal-header" }, [ s("h3", { class: "modal-title" }, "SWITCHING ENVIRONMENTS...") ], -1)), - s("div", c6, [ + s("div", d6, [ C(jn, { progress: e.progress, variant: n.value }, null, 8, ["progress", "variant"]), - s("div", u6, [ - s("div", d6, f(e.progress) + "%", 1), - s("div", f6, f(o.value), 1) + s("div", f6, [ + s("div", m6, f(e.progress) + "%", 1), + s("div", v6, f(o.value), 1) ]), - s("div", m6, [ + s("div", p6, [ (a(!0), c(j, null, ge(l.value, (u) => (a(), c("div", { key: u.state, class: xe(["switch-step", u.status]) }, [ - s("span", v6, f(u.icon), 1), - s("span", p6, f(u.label), 1) + s("span", g6, f(u.icon), 1), + s("span", h6, f(u.label), 1) ], 2))), 128)) ]), r[0] || (r[0] = s("p", { class: "progress-warning" }, " Please wait, do not close this window. ", -1)) @@ -20068,13 +20074,13 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS ])) : y("", !0) ])); } -}), h6 = /* @__PURE__ */ pe(g6, [["__scopeId", "data-v-768a5078"]]), y6 = { class: "modal-header" }, w6 = { class: "modal-body" }, b6 = { +}), w6 = /* @__PURE__ */ pe(y6, [["__scopeId", "data-v-768a5078"]]), b6 = { class: "modal-header" }, _6 = { class: "modal-body" }, k6 = { key: 0, class: "node-section" -}, _6 = { class: "node-list" }, k6 = { +}, $6 = { class: "node-list" }, C6 = { key: 1, class: "node-section" -}, $6 = { class: "node-list" }, C6 = { class: "modal-actions" }, x6 = /* @__PURE__ */ me({ +}, x6 = { class: "node-list" }, S6 = { class: "modal-actions" }, I6 = /* @__PURE__ */ me({ __name: "SyncEnvironmentModal", props: { show: { type: Boolean }, @@ -20093,27 +20099,27 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS onClick: o[3] || (o[3] = nt(() => { }, ["stop"])) }, [ - s("div", y6, [ + s("div", b6, [ o[5] || (o[5] = s("h3", { class: "modal-title" }, "SYNC ENVIRONMENT", -1)), s("button", { class: "modal-close", onClick: o[0] || (o[0] = (n) => t.$emit("close")) }, "✕") ]), - s("div", w6, [ + s("div", _6, [ o[8] || (o[8] = s("p", { class: "sync-message" }, " Fix environment state mismatch: ", -1)), - e.mismatchDetails.missing_nodes.length ? (a(), c("div", b6, [ + e.mismatchDetails.missing_nodes.length ? (a(), c("div", k6, [ o[6] || (o[6] = s("h4", { class: "section-title" }, "Missing (will be installed):", -1)), - s("div", _6, [ + s("div", $6, [ (a(!0), c(j, null, ge(e.mismatchDetails.missing_nodes, (n) => (a(), c("div", { key: n, class: "node-item add" }, " + " + f(n), 1))), 128)) ]) ])) : y("", !0), - e.mismatchDetails.extra_nodes.length ? (a(), c("div", k6, [ + e.mismatchDetails.extra_nodes.length ? (a(), c("div", C6, [ o[7] || (o[7] = s("h4", { class: "section-title" }, "Extra (will be removed):", -1)), - s("div", $6, [ + s("div", x6, [ (a(!0), c(j, null, ge(e.mismatchDetails.extra_nodes, (n) => (a(), c("div", { key: n, class: "node-item remove" @@ -20125,7 +20131,7 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS s("span", null, "This may take several minutes") ], -1)) ]), - s("div", C6, [ + s("div", S6, [ C(ie, { variant: "secondary", onClick: o[1] || (o[1] = (n) => t.$emit("close")) @@ -20149,7 +20155,7 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS ])) : y("", !0) ])); } -}), S6 = /* @__PURE__ */ pe(x6, [["__scopeId", "data-v-7cad7518"]]), I6 = [ +}), E6 = /* @__PURE__ */ pe(I6, [["__scopeId", "data-v-7cad7518"]]), T6 = [ { id: "sponsor", url: "https://github.com/sponsors/comfygit-ai", @@ -20186,24 +20192,24 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS ariaLabel: "View ComfyGit Documentation", iconPath: "M8 1.783C7.015.936 5.587.81 4.287.94c-1.514.153-3.042.672-3.994 1.105A.5.5 0 0 0 0 2.5v11a.5.5 0 0 0 .707.455c.882-.4 2.303-.881 3.68-1.02 1.409-.142 2.59.087 3.223.877a.5.5 0 0 0 .78 0c.633-.79 1.814-1.019 3.222-.877 1.378.139 2.8.62 3.681 1.02A.5.5 0 0 0 16 13.5v-11a.5.5 0 0 0-.293-.455c-.952-.433-2.48-.952-3.994-1.105C10.413.809 8.985.936 8 1.783z" } -], E6 = "v0.0.14", T6 = "Akatz", P6 = { class: "social-buttons" }, R6 = ["title", "aria-label", "onClick"], M6 = { +], P6 = "v0.0.14", R6 = "Akatz", M6 = { class: "social-buttons" }, D6 = ["title", "aria-label", "onClick"], L6 = { width: "14", height: "14", viewBox: "0 0 16 16", fill: "currentColor" -}, D6 = ["d"], L6 = ["title", "aria-label", "onClick"], O6 = { +}, O6 = ["d"], N6 = ["title", "aria-label", "onClick"], A6 = { width: "16", height: "16", viewBox: "0 0 16 16", fill: "currentColor" -}, N6 = ["d"], A6 = /* @__PURE__ */ me({ +}, U6 = ["d"], z6 = /* @__PURE__ */ me({ __name: "SocialButtons", setup(e) { function t(o) { window.open(o, "_blank", "noopener,noreferrer"); } - return (o, n) => (a(), c("div", P6, [ - (a(!0), c(j, null, ge(Ue(I6), (l) => (a(), c(j, { + return (o, n) => (a(), c("div", M6, [ + (a(!0), c(j, null, ge(Ue(T6), (l) => (a(), c(j, { key: l.id }, [ l.label ? (a(), c("button", { @@ -20214,33 +20220,33 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS onClick: (i) => t(l.url) }, [ b(f(l.label) + " ", 1), - (a(), c("svg", M6, [ + (a(), c("svg", L6, [ s("path", { d: l.iconPath - }, null, 8, D6) + }, null, 8, O6) ])) - ], 8, R6)) : (a(), c("button", { + ], 8, D6)) : (a(), c("button", { key: 1, class: "icon-btn social-link", title: l.title, "aria-label": l.ariaLabel, onClick: (i) => t(l.url) }, [ - (a(), c("svg", O6, [ + (a(), c("svg", A6, [ s("path", { d: l.iconPath - }, null, 8, N6) + }, null, 8, U6) ])) - ], 8, L6)) + ], 8, N6)) ], 64))), 128)) ])); } -}), Dr = /* @__PURE__ */ pe(A6, [["__scopeId", "data-v-4f846342"]]), U6 = { class: "footer-info" }, z6 = { class: "version" }, F6 = { class: "made-by" }, B6 = /* @__PURE__ */ me({ +}), Dr = /* @__PURE__ */ pe(z6, [["__scopeId", "data-v-4f846342"]]), F6 = { class: "footer-info" }, B6 = { class: "version" }, V6 = { class: "made-by" }, W6 = /* @__PURE__ */ me({ __name: "FooterInfo", setup(e) { - return (t, o) => (a(), c("div", U6, [ - s("span", z6, f(Ue(E6)), 1), - s("span", F6, [ + return (t, o) => (a(), c("div", F6, [ + s("span", B6, f(Ue(P6)), 1), + s("span", V6, [ o[0] || (o[0] = b(" made with ", -1)), o[1] || (o[1] = s("svg", { class: "heart-icon", @@ -20251,11 +20257,11 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS }, [ s("path", { d: "M8 14s-5.5-3.5-5.5-7A3.5 3.5 0 0 1 6 3.5c1.1 0 2 .5 2 .5s.9-.5 2-.5a3.5 3.5 0 0 1 3.5 3.5c0 3.5-5.5 7-5.5 7z" }) ], -1)), - b(" by " + f(Ue(T6)), 1) + b(" by " + f(Ue(R6)), 1) ]) ])); } -}), Lr = /* @__PURE__ */ pe(B6, [["__scopeId", "data-v-8bc3db0a"]]), V6 = /* @__PURE__ */ me({ +}), Lr = /* @__PURE__ */ pe(W6, [["__scopeId", "data-v-8bc3db0a"]]), G6 = /* @__PURE__ */ me({ __name: "WorkspaceSettingsModal", props: { workspacePath: {} @@ -20311,52 +20317,52 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS _: 1 })); } -}), W6 = /* @__PURE__ */ pe(V6, [["__scopeId", "data-v-fac00ae7"]]), G6 = { class: "header-actions" }, j6 = { +}), j6 = /* @__PURE__ */ pe(G6, [["__scopeId", "data-v-fac00ae7"]]), H6 = { class: "header-actions" }, K6 = { key: 0, class: "wizard-step" -}, H6 = { class: "form-field" }, K6 = ["placeholder"], q6 = { +}, q6 = { class: "form-field" }, Y6 = ["placeholder"], J6 = { key: 0, class: "form-error" -}, Y6 = { class: "form-field form-field--checkbox" }, J6 = { class: "form-checkbox" }, X6 = { +}, X6 = { class: "form-field form-field--checkbox" }, Q6 = { class: "form-checkbox" }, Z6 = { key: 0, class: "form-field" -}, Q6 = ["placeholder"], Z6 = { +}, eI = ["placeholder"], tI = { key: 0, class: "form-info" -}, eI = { +}, sI = { key: 1, class: "form-suggestion" -}, tI = { +}, oI = { key: 2, class: "form-error" -}, sI = { +}, nI = { key: 3, class: "form-info" -}, oI = { +}, aI = { key: 1, class: "wizard-step" -}, nI = { +}, lI = { key: 0, class: "progress-check-loading" -}, aI = { +}, iI = { key: 0, class: "cli-warning" -}, lI = { class: "cli-warning-header" }, iI = { +}, rI = { class: "cli-warning-header" }, cI = { key: 1, class: "env-landing" -}, rI = { class: "env-list" }, cI = ["value"], uI = { class: "env-name" }, dI = { +}, uI = { class: "env-list" }, dI = ["value"], fI = { class: "env-name" }, mI = { key: 2, class: "env-create" -}, fI = { class: "form-field" }, mI = { class: "form-field" }, vI = ["value"], pI = { class: "form-field" }, gI = ["disabled"], hI = ["value"], yI = { class: "form-field" }, wI = ["value"], bI = { class: "form-field form-field--checkbox" }, _I = { class: "form-checkbox" }, kI = { +}, vI = { class: "form-field" }, pI = { class: "form-field" }, gI = ["value"], hI = { class: "form-field" }, yI = ["disabled"], wI = ["value"], bI = { class: "form-field" }, _I = ["value"], kI = { class: "form-field form-field--checkbox" }, $I = { class: "form-checkbox" }, CI = { key: 0, class: "form-error" -}, $I = { +}, xI = { key: 1, class: "env-creating" -}, CI = { class: "creating-intro" }, xI = { +}, SI = { class: "creating-intro" }, II = { key: 3, class: "env-import" -}, SI = { class: "wizard-footer" }, II = { class: "wizard-footer-actions" }, no = 10, EI = 600 * 1e3, ql = 1800 * 1e3, TI = /* @__PURE__ */ me({ +}, EI = { class: "wizard-footer" }, TI = { class: "wizard-footer-actions" }, no = 10, PI = 600 * 1e3, ql = 1800 * 1e3, RI = /* @__PURE__ */ me({ __name: "FirstTimeSetupWizard", props: { defaultPath: {}, @@ -20377,7 +20383,7 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS getCreateProgress: d, getImportProgress: m, getComfyUIReleases: v - } = at(), h = k(o.initialStep || 1), w = k(null), p = k("landing"), _ = k(!1), x = k(!1), $ = k(!1), P = k(!1), N = k(null), T = k(o.initialStep === 2), S = k(o.defaultPath), q = k(!!o.detectedModelsDir), B = k(o.detectedModelsDir || ""), A = k(null), I = k(null), E = k(null), O = k(null), re = k("my-new-env"), Y = k(Cr), H = k("latest"), te = k(xr), Z = k(!0), U = k(null), z = k(null), R = k([{ tag_name: "latest", name: "Latest", published_at: "" }]), be = k(!1), ve = k(!1), Ee = k(!1), De = k({ progress: 0, message: "" }), je = k({ progress: 0, message: "" }), Je = [ + } = at(), h = k(o.initialStep || 1), w = k(null), p = k("landing"), _ = k(!1), S = k(!1), $ = k(!1), P = k(!1), N = k(null), T = k(o.initialStep === 2), x = k(o.defaultPath), q = k(!!o.detectedModelsDir), B = k(o.detectedModelsDir || ""), A = k(null), I = k(null), E = k(null), O = k(null), re = k("my-new-env"), Y = k(Cr), H = k("latest"), te = k(xr), Z = k(!0), U = k(null), z = k(null), R = k([{ tag_name: "latest", name: "Latest", published_at: "" }]), be = k(!1), ve = k(!1), Ee = k(!1), De = k({ progress: 0, message: "" }), je = k({ progress: 0, message: "" }), Je = [ { id: "init_structure", label: "Initialize structure", progressThreshold: 5 }, { id: "resolve_version", label: "Resolve ComfyUI version", progressThreshold: 10 }, { id: "clone_comfyui", label: "Clone/restore ComfyUI", progressThreshold: 25 }, @@ -20389,7 +20395,7 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS { id: "finalize", label: "Finalize environment", progressThreshold: 100 } ], _e = k(0), Se = k(null), Ve = k(0), ye = k(null), le = F(() => { var D, W; - const ee = (D = S.value) == null ? void 0 : D.trim(), K = !A.value, X = !q.value || !I.value && ((W = B.value) == null ? void 0 : W.trim()); + const ee = (D = x.value) == null ? void 0 : D.trim(), K = !A.value, X = !q.value || !I.value && ((W = B.value) == null ? void 0 : W.trim()); return ee && K && X; }), Fe = F(() => { var ee; @@ -20397,9 +20403,9 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS }), Ie = F(() => !!(h.value === 2 || z.value || o.setupState === "empty_workspace" || o.setupState === "unmanaged")), L = F(() => z.value || o.workspacePath || null); async function V() { var ee; - if (A.value = null, !!((ee = S.value) != null && ee.trim())) + if (A.value = null, !!((ee = x.value) != null && ee.trim())) try { - const K = await r({ path: S.value, type: "workspace" }); + const K = await r({ path: x.value, type: "workspace" }); K.valid || (A.value = K.error || "Invalid path"); } catch (K) { A.value = K instanceof Error ? K.message : "Validation failed"; @@ -20424,19 +20430,19 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS async function ae() { var ee, K, X, D, W; if (A.value = null, I.value = null, await V(), (ee = A.value) != null && ee.includes("already exists")) { - A.value = null, z.value = ((K = S.value) == null ? void 0 : K.trim()) || o.defaultPath, h.value = 2, fe(); + A.value = null, z.value = ((K = x.value) == null ? void 0 : K.trim()) || o.defaultPath, h.value = 2, fe(); return; } if (!A.value && !(q.value && ((X = B.value) != null && X.trim()) && (await oe(), I.value))) { ve.value = !0; try { await l({ - workspace_path: ((D = S.value) == null ? void 0 : D.trim()) || o.defaultPath, + workspace_path: ((D = x.value) == null ? void 0 : D.trim()) || o.defaultPath, models_directory: q.value && ((W = B.value) == null ? void 0 : W.trim()) || null }), _e.value = 0, Se.value = Date.now(); const ce = setInterval(async () => { var Te; - if (Se.value && Date.now() - Se.value > EI) { + if (Se.value && Date.now() - Se.value > PI) { clearInterval(ce), ve.value = !1, A.value = "Workspace creation timed out. Please try again or check server logs."; return; } @@ -20446,7 +20452,7 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS clearInterval(ce), ve.value = !1, A.value = "Workspace creation was interrupted. Please try again."; return; } - De.value = { progress: Ke.progress, message: Ke.message }, Ke.state === "complete" ? (clearInterval(ce), ve.value = !1, z.value = ((Te = S.value) == null ? void 0 : Te.trim()) || o.defaultPath, h.value = 2, fe()) : Ke.state === "error" && (clearInterval(ce), ve.value = !1, A.value = Ke.error || "Workspace creation failed"); + De.value = { progress: Ke.progress, message: Ke.message }, Ke.state === "complete" ? (clearInterval(ce), ve.value = !1, z.value = ((Te = x.value) == null ? void 0 : Te.trim()) || o.defaultPath, h.value = 2, fe()) : Ke.state === "error" && (clearInterval(ce), ve.value = !1, A.value = Ke.error || "Workspace creation failed"); } catch (Ke) { _e.value++, console.warn(`Polling failure ${_e.value}/${no}:`, Ke), _e.value >= no && (clearInterval(ce), ve.value = !1, A.value = "Lost connection to server. Please refresh the page and try again."); } @@ -20516,7 +20522,7 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS p.value === "create" || p.value === "import" ? p.value = "landing" : h.value === 2 && o.setupState === "no_workspace" && (h.value = 1); } function ne(ee, K) { - x.value = !1, K ? n("complete", ee, z.value) : (n("environment-created-no-switch", ee), p.value = "landing"); + S.value = !1, K ? n("complete", ee, z.value) : (n("environment-created-no-switch", ee), p.value = "landing"); } function ue() { } @@ -20550,7 +20556,7 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS phase: ee.phase || "", progress: ee.progress ?? 0, environmentName: ee.environment_name || "" - }, P.value = !0, p.value = "import", x.value = !0); + }, P.value = !0, p.value = "import", S.value = !0); } catch (ee) { console.log("[ComfyGit] Import progress check failed:", ee); } @@ -20593,7 +20599,7 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS }, { header: g(() => [ K[20] || (K[20] = s("h3", { class: "base-modal-title" }, "WELCOME TO COMFYGIT", -1)), - s("div", G6, [ + s("div", H6, [ C(Dr), K[19] || (K[19] = s("span", { class: "header-divider" }, null, -1)), Ie.value ? (a(), c("button", { @@ -20637,22 +20643,22 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS body: g(() => { var X; return [ - h.value === 1 ? (a(), c("div", j6, [ + h.value === 1 ? (a(), c("div", K6, [ K[24] || (K[24] = s("p", { class: "wizard-intro" }, " Let's set up your ComfyGit workspace. This is where your managed environments, workflows, and model index will be stored. ", -1)), - s("div", H6, [ + s("div", q6, [ K[21] || (K[21] = s("label", { class: "form-label" }, "Workspace Path", -1)), He(s("input", { - "onUpdate:modelValue": K[2] || (K[2] = (D) => S.value = D), + "onUpdate:modelValue": K[2] || (K[2] = (D) => x.value = D), type: "text", class: "form-input", placeholder: e.defaultPath - }, null, 8, K6), [ - [Nt, S.value] + }, null, 8, Y6), [ + [Nt, x.value] ]), - A.value ? (a(), c("p", q6, f(A.value), 1)) : y("", !0) + A.value ? (a(), c("p", J6, f(A.value), 1)) : y("", !0) ]), - s("div", Y6, [ - s("label", J6, [ + s("div", X6, [ + s("label", Q6, [ He(s("input", { type: "checkbox", "onUpdate:modelValue": K[3] || (K[3] = (D) => q.value = D) @@ -20662,20 +20668,20 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS K[22] || (K[22] = s("span", null, "I have existing ComfyUI models", -1)) ]) ]), - q.value ? (a(), c("div", X6, [ + q.value ? (a(), c("div", Z6, [ K[23] || (K[23] = s("label", { class: "form-label" }, "Models Directory", -1)), He(s("input", { "onUpdate:modelValue": K[4] || (K[4] = (D) => B.value = D), type: "text", class: "form-input", placeholder: e.detectedModelsDir || "/path/to/models" - }, null, 8, Q6), [ + }, null, 8, eI), [ [Nt, B.value] ]), - e.detectedModelsDir && !B.value ? (a(), c("p", Z6, " Detected: " + f(e.detectedModelsDir), 1)) : y("", !0), - E.value ? (a(), c("p", eI, " Did you mean: " + f(E.value), 1)) : y("", !0), - I.value ? (a(), c("p", tI, f(I.value), 1)) : y("", !0), - O.value !== null && !I.value ? (a(), c("p", sI, " Found " + f(O.value) + " model files ", 1)) : y("", !0) + e.detectedModelsDir && !B.value ? (a(), c("p", tI, " Detected: " + f(e.detectedModelsDir), 1)) : y("", !0), + E.value ? (a(), c("p", sI, " Did you mean: " + f(E.value), 1)) : y("", !0), + I.value ? (a(), c("p", oI, f(I.value), 1)) : y("", !0), + O.value !== null && !I.value ? (a(), c("p", nI, " Found " + f(O.value) + " model files ", 1)) : y("", !0) ])) : y("", !0), ve.value ? (a(), M(Pn, { key: 1, @@ -20683,13 +20689,13 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS message: De.value.message }, null, 8, ["progress", "message"])) : y("", !0) ])) : y("", !0), - h.value === 2 ? (a(), c("div", oI, [ - T.value ? (a(), c("div", nI, [...K[25] || (K[25] = [ + h.value === 2 ? (a(), c("div", aI, [ + T.value ? (a(), c("div", lI, [...K[25] || (K[25] = [ s("div", { class: "loading-spinner" }, null, -1), s("div", { class: "loading-text" }, "Checking for in-progress operations...", -1) ])])) : (a(), c(j, { key: 1 }, [ - !o.cliInstalled && !$.value ? (a(), c("div", aI, [ - s("div", lI, [ + !o.cliInstalled && !$.value ? (a(), c("div", iI, [ + s("div", rI, [ K[27] || (K[27] = s("span", { class: "cli-warning-icon" }, "!", -1)), K[28] || (K[28] = s("span", { class: "cli-warning-title" }, "ComfyGit CLI Not Installed", -1)), s("button", { @@ -20714,7 +20720,7 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS s("code", null, "uv tool install comfygit") ], -1)) ])) : y("", !0), - p.value === "landing" ? (a(), c("div", iI, [ + p.value === "landing" ? (a(), c("div", cI, [ K[34] || (K[34] = s("p", { class: "wizard-intro" }, " Now let's set up your first environment. ", -1)), s("button", { class: "landing-option", @@ -20744,7 +20750,7 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS K[33] || (K[33] = s("div", { class: "landing-divider" }, [ s("span", null, "or switch to existing") ], -1)), - s("div", rI, [ + s("div", uI, [ (a(!0), c(j, null, ge(o.existingEnvironments, (D) => (a(), c("label", { key: D, class: xe(["env-option", { selected: w.value === D }]) @@ -20754,16 +20760,16 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS name: "env-select", value: D, "onUpdate:modelValue": K[8] || (K[8] = (W) => w.value = W) - }, null, 8, cI), [ + }, null, 8, dI), [ [qt, w.value] ]), - s("span", uI, f(D), 1) + s("span", fI, f(D), 1) ], 2))), 128)) ]) ], 64)) : y("", !0) - ])) : p.value === "create" ? (a(), c("div", dI, [ - Ee.value ? (a(), c("div", $I, [ - s("p", CI, [ + ])) : p.value === "create" ? (a(), c("div", mI, [ + Ee.value ? (a(), c("div", xI, [ + s("p", SI, [ K[41] || (K[41] = b(" Creating environment ", -1)), s("strong", null, f(re.value), 1), K[42] || (K[42] = b("... ", -1)) @@ -20778,7 +20784,7 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS K[43] || (K[43] = s("p", { class: "progress-warning" }, " This may take several minutes. Please wait... ", -1)) ])) : (a(), c(j, { key: 0 }, [ K[40] || (K[40] = s("p", { class: "wizard-intro" }, " Create a new managed environment: ", -1)), - s("div", fI, [ + s("div", vI, [ K[35] || (K[35] = s("label", { class: "form-label" }, "Environment Name", -1)), He(s("input", { "onUpdate:modelValue": K[9] || (K[9] = (D) => re.value = D), @@ -20789,7 +20795,7 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS [Nt, re.value] ]) ]), - s("div", mI, [ + s("div", pI, [ K[36] || (K[36] = s("label", { class: "form-label" }, "Python Version", -1)), He(s("select", { "onUpdate:modelValue": K[10] || (K[10] = (D) => Y.value = D), @@ -20798,12 +20804,12 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS (a(!0), c(j, null, ge(Ue($r), (D) => (a(), c("option", { key: D, value: D - }, f(D), 9, vI))), 128)) + }, f(D), 9, gI))), 128)) ], 512), [ [ms, Y.value] ]) ]), - s("div", pI, [ + s("div", hI, [ K[37] || (K[37] = s("label", { class: "form-label" }, "ComfyUI Version", -1)), He(s("select", { "onUpdate:modelValue": K[11] || (K[11] = (D) => H.value = D), @@ -20813,12 +20819,12 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS (a(!0), c(j, null, ge(R.value, (D) => (a(), c("option", { key: D.tag_name, value: D.tag_name - }, f(D.name), 9, hI))), 128)) - ], 8, gI), [ + }, f(D.name), 9, wI))), 128)) + ], 8, yI), [ [ms, H.value] ]) ]), - s("div", yI, [ + s("div", bI, [ K[38] || (K[38] = s("label", { class: "form-label" }, "PyTorch Backend", -1)), He(s("select", { "onUpdate:modelValue": K[12] || (K[12] = (D) => te.value = D), @@ -20827,13 +20833,13 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS (a(!0), c(j, null, ge(Ue(Ja), (D) => (a(), c("option", { key: D, value: D - }, f(D) + f(D === "auto" ? " (detect GPU)" : ""), 9, wI))), 128)) + }, f(D) + f(D === "auto" ? " (detect GPU)" : ""), 9, _I))), 128)) ], 512), [ [ms, te.value] ]) ]), - s("div", bI, [ - s("label", _I, [ + s("div", kI, [ + s("label", $I, [ He(s("input", { type: "checkbox", "onUpdate:modelValue": K[13] || (K[13] = (D) => Z.value = D) @@ -20843,15 +20849,15 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS K[39] || (K[39] = s("span", null, "Switch to this environment after creation", -1)) ]) ]), - U.value ? (a(), c("div", kI, f(U.value), 1)) : y("", !0) + U.value ? (a(), c("div", CI, f(U.value), 1)) : y("", !0) ], 64)) - ])) : p.value === "import" ? (a(), c("div", xI, [ + ])) : p.value === "import" ? (a(), c("div", II, [ C(Er, { "workspace-path": z.value, "resume-import": P.value, "initial-progress": N.value ?? void 0, onImportComplete: ne, - onImportStarted: K[14] || (K[14] = (D) => x.value = !0), + onImportStarted: K[14] || (K[14] = (D) => S.value = !0), onSourceCleared: ue }, null, 8, ["workspace-path", "resume-import", "initial-progress"]) ])) : y("", !0) @@ -20860,9 +20866,9 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS ]; }), footer: g(() => [ - s("div", SI, [ + s("div", EI, [ C(Lr), - s("div", II, [ + s("div", TI, [ h.value === 1 ? (a(), M(Me, { key: 0, variant: "primary", @@ -20874,7 +20880,7 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS ]), _: 1 }, 8, ["disabled"])) : h.value === 2 ? (a(), c(j, { key: 1 }, [ - !Ee.value && !x.value && (p.value !== "landing" || o.setupState === "no_workspace" && !z.value) ? (a(), M(Me, { + !Ee.value && !S.value && (p.value !== "landing" || o.setupState === "no_workspace" && !z.value) ? (a(), M(Me, { key: 0, variant: "secondary", onClick: $e @@ -20911,35 +20917,35 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS ]), _: 1 }), - _.value ? (a(), M(W6, { + _.value ? (a(), M(j6, { key: 0, "workspace-path": L.value, onClose: K[16] || (K[16] = (X) => _.value = !1) }, null, 8, ["workspace-path"])) : y("", !0) ], 64)); } -}), PI = /* @__PURE__ */ pe(TI, [["__scopeId", "data-v-9a9aadc0"]]), RI = { class: "comfygit-panel" }, MI = { class: "panel-header" }, DI = { class: "header-left" }, LI = { +}), MI = /* @__PURE__ */ pe(RI, [["__scopeId", "data-v-9a9aadc0"]]), DI = { class: "comfygit-panel" }, LI = { class: "panel-header" }, OI = { class: "header-left" }, NI = { key: 0, class: "header-info" -}, OI = { class: "header-actions" }, NI = { class: "env-switcher" }, AI = { +}, AI = { class: "header-actions" }, UI = { class: "env-switcher" }, zI = { key: 0, class: "header-info" -}, UI = { class: "branch-name" }, zI = { class: "panel-main" }, FI = { class: "sidebar" }, BI = { class: "sidebar-content" }, VI = { class: "sidebar-section" }, WI = { class: "sidebar-section" }, GI = { class: "sidebar-section" }, jI = { +}, FI = { class: "branch-name" }, BI = { class: "panel-main" }, VI = { class: "sidebar" }, WI = { class: "sidebar-content" }, GI = { class: "sidebar-section" }, jI = { class: "sidebar-section" }, HI = { class: "sidebar-section" }, KI = { key: 0, class: "sidebar-badge" -}, HI = { class: "sidebar-footer" }, KI = { class: "content-area" }, qI = { +}, qI = { class: "sidebar-footer" }, YI = { class: "content-area" }, JI = { key: 0, class: "error-message" -}, YI = { +}, XI = { key: 1, class: "loading" -}, JI = { class: "dialog-content env-selector-dialog" }, XI = { class: "dialog-header" }, QI = { class: "dialog-body" }, ZI = { class: "env-list" }, eE = { class: "env-info" }, tE = { class: "env-name-row" }, sE = { class: "env-indicator" }, oE = { class: "env-name" }, nE = { +}, QI = { class: "dialog-content env-selector-dialog" }, ZI = { class: "dialog-header" }, eE = { class: "dialog-body" }, tE = { class: "env-list" }, sE = { class: "env-info" }, oE = { class: "env-name-row" }, nE = { class: "env-indicator" }, aE = { class: "env-name" }, lE = { key: 0, class: "env-branch" -}, aE = { +}, iE = { key: 1, class: "current-label" -}, lE = { class: "env-stats" }, iE = ["onClick"], rE = { class: "toast-container" }, cE = { class: "toast-message" }, uE = /* @__PURE__ */ me({ +}, rE = { class: "env-stats" }, cE = ["onClick"], uE = { class: "toast-container" }, dE = { class: "toast-message" }, fE = /* @__PURE__ */ me({ __name: "ComfyGitPanel", props: { initialView: {} @@ -20958,10 +20964,10 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS switchEnvironment: w, getSwitchProgress: p, deleteEnvironment: _, - syncEnvironmentManually: x, + syncEnvironmentManually: S, repairWorkflowModels: $, getSetupStatus: P - } = at(), N = kv(), { liveInstanceCount: T } = Tr({ autoStart: !0 }), S = k(null), q = k([]), B = k([]), A = k([]), I = F(() => A.value.find((se) => se.is_current)), E = k(null), O = k(!1), re = k(1), Y = F(() => { + } = at(), N = kv(), { liveInstanceCount: T } = Tr({ autoStart: !0 }), x = k(null), q = k([]), B = k([]), A = k([]), I = F(() => A.value.find((se) => se.is_current)), E = k(null), O = k(!1), re = k(1), Y = F(() => { var se; return ((se = E.value) == null ? void 0 : se.state) || "managed"; }), H = k(!1), te = k(null), Z = k(null), U = k(!1), z = k(null), R = k(null), be = k(null), ve = k(!1), Ee = k(!1), De = k(""), je = k(null), Je = k({ state: "idle", progress: 0, message: "" }); @@ -21011,11 +21017,11 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS ne(se, G); } const Ce = F(() => { - if (!S.value) return "neutral"; - const se = S.value.workflows, G = se.new.length > 0 || se.modified.length > 0 || se.deleted.length > 0 || S.value.has_changes; - return S.value.comparison.is_synced ? G ? "warning" : "success" : "error"; + if (!x.value) return "neutral"; + const se = x.value.workflows, G = se.new.length > 0 || se.modified.length > 0 || se.deleted.length > 0 || x.value.has_changes; + return x.value.comparison.is_synced ? G ? "warning" : "success" : "error"; }); - F(() => S.value ? Ce.value === "success" ? "All synced" : Ce.value === "warning" ? "Uncommitted changes" : Ce.value === "error" ? "Not synced" : "" : ""); + F(() => x.value ? Ce.value === "success" ? "All synced" : Ce.value === "warning" ? "Uncommitted changes" : Ce.value === "error" ? "Not synced" : "" : ""); async function ee() { H.value = !0, te.value = null; try { @@ -21025,9 +21031,9 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS r(), h() ]); - S.value = se, q.value = G.commits, B.value = Pe.branches, A.value = Be, n("statusUpdate", se), z.value && await z.value.loadWorkflows(!0); + x.value = se, q.value = G.commits, B.value = Pe.branches, A.value = Be, n("statusUpdate", se), z.value && await z.value.loadWorkflows(!0); } catch (se) { - te.value = se instanceof Error ? se.message : "Failed to load status", S.value = null, q.value = [], B.value = []; + te.value = se instanceof Error ? se.message : "Failed to load status", x.value = null, q.value = [], B.value = []; } finally { H.value = !1; } @@ -21038,7 +21044,7 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS async function X(se) { var Pe; Z.value = null; - const G = S.value && (S.value.workflows.new.length > 0 || S.value.workflows.modified.length > 0 || S.value.workflows.deleted.length > 0 || S.value.has_changes); + const G = x.value && (x.value.workflows.new.length > 0 || x.value.workflows.modified.length > 0 || x.value.workflows.deleted.length > 0 || x.value.has_changes); ae.value = { title: G ? "Checkout with Uncommitted Changes" : "Checkout Commit", message: G ? "You have uncommitted changes that will be lost." : `Checkout commit ${se.short_hash || ((Pe = se.hash) == null ? void 0 : Pe.slice(0, 7))}?`, @@ -21056,7 +21062,7 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS }; } async function D(se) { - const G = S.value && (S.value.workflows.new.length > 0 || S.value.workflows.modified.length > 0 || S.value.workflows.deleted.length > 0 || S.value.has_changes); + const G = x.value && (x.value.workflows.new.length > 0 || x.value.workflows.modified.length > 0 || x.value.workflows.deleted.length > 0 || x.value.has_changes); ae.value = { title: G ? "Switch Branch with Uncommitted Changes" : "Switch Branch", message: G ? "You have uncommitted changes." : `Switch to branch "${se}"?`, @@ -21240,7 +21246,7 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS fe.value = !1; const se = ne("Syncing environment...", "info", 0); try { - const G = await x("skip", !0); + const G = await S("skip", !0); if (ue(se), G.status === "success") { const Pe = []; G.nodes_installed.length && Pe.push(`${G.nodes_installed.length} installed`), G.nodes_removed.length && Pe.push(`${G.nodes_removed.length} removed`); @@ -21269,7 +21275,7 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS var G, Pe; const se = ne("Repairing environment...", "info", 0); try { - const Be = await x("skip", !0); + const Be = await S("skip", !0); if (ue(se), Be.status === "success") { const tt = []; Be.nodes_installed.length && tt.push(`${Be.nodes_installed.length} installed`), Be.nodes_removed.length && tt.push(`${Be.nodes_removed.length} removed`); @@ -21339,8 +21345,8 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS }, 100); } function ns() { - if (!S.value) return []; - const se = [], G = S.value.workflows; + if (!x.value) return []; + const se = [], G = x.value.workflows; return G.new.length && se.push(`${G.new.length} new workflow(s)`), G.modified.length && se.push(`${G.modified.length} modified workflow(s)`), G.deleted.length && se.push(`${G.deleted.length} deleted workflow(s)`), se; } return Qe(async () => { @@ -21363,13 +21369,13 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS await ee(); }), (se, G) => { var Pe, Be, tt, dt, Rt, as, Vs, Ws, J, we, Oe, lt; - return a(), c("div", RI, [ - s("div", MI, [ - s("div", DI, [ + return a(), c("div", DI, [ + s("div", LI, [ + s("div", OI, [ G[31] || (G[31] = s("h2", { class: "panel-title" }, "ComfyGit", -1)), - S.value ? (a(), c("div", LI)) : y("", !0) + x.value ? (a(), c("div", NI)) : y("", !0) ]), - s("div", OI, [ + s("div", AI, [ C(Dr), G[34] || (G[34] = s("span", { class: "header-divider" }, null, -1)), s("button", { @@ -21402,7 +21408,7 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS ])]) ]) ]), - s("div", NI, [ + s("div", UI, [ s("div", { class: "env-switcher-header" }, [ G[35] || (G[35] = s("div", { class: "env-switcher-label" }, "CURRENT ENVIRONMENT", -1)), s("div", { class: "env-control-buttons" }, [ @@ -21422,17 +21428,17 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS class: "env-switcher-btn", onClick: G[1] || (G[1] = (Ne) => Ie("environments", "all-envs")) }, [ - S.value ? (a(), c("div", AI, [ - s("span", null, f(((Pe = I.value) == null ? void 0 : Pe.name) || ((Be = S.value) == null ? void 0 : Be.environment) || "Loading..."), 1), - s("span", UI, "(" + f(S.value.branch || "detached") + ")", 1) + x.value ? (a(), c("div", zI, [ + s("span", null, f(((Pe = I.value) == null ? void 0 : Pe.name) || ((Be = x.value) == null ? void 0 : Be.environment) || "Loading..."), 1), + s("span", FI, "(" + f(x.value.branch || "detached") + ")", 1) ])) : y("", !0), G[36] || (G[36] = s("span", { class: "switch-indicator" }, "SWITCH ▸", -1)) ]) ]), - s("div", zI, [ - s("div", FI, [ - s("div", BI, [ - s("div", VI, [ + s("div", BI, [ + s("div", VI, [ + s("div", WI, [ + s("div", GI, [ G[37] || (G[37] = s("div", { class: "sidebar-section-title" }, "THIS ENV", -1)), s("button", { class: xe(["sidebar-item", { active: le.value === "status" && Fe.value === "this-env" }]), @@ -21464,7 +21470,7 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS }, " DEBUG ", 2) ]), G[41] || (G[41] = s("div", { class: "sidebar-divider" }, null, -1)), - s("div", WI, [ + s("div", jI, [ G[38] || (G[38] = s("div", { class: "sidebar-section-title" }, "ALL ENVS", -1)), s("button", { class: xe(["sidebar-item", { active: le.value === "environments" }]), @@ -21484,14 +21490,14 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS }, " DEBUG ", 2) ]), G[42] || (G[42] = s("div", { class: "sidebar-divider" }, null, -1)), - s("div", GI, [ + s("div", HI, [ G[40] || (G[40] = s("div", { class: "sidebar-section-title" }, "SHARING", -1)), s("button", { class: xe(["sidebar-item", { active: le.value === "deploy" }]), onClick: G[13] || (G[13] = (Ne) => Ie("deploy", "sharing")) }, [ G[39] || (G[39] = b(" DEPLOY ", -1)), - Ue(T) > 0 ? (a(), c("span", jI, f(Ue(T)), 1)) : y("", !0) + Ue(T) > 0 ? (a(), c("span", KI, f(Ue(T)), 1)) : y("", !0) ], 2), s("button", { class: xe(["sidebar-item", { active: le.value === "export" }]), @@ -21507,17 +21513,17 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS }, " REMOTES ", 2) ]) ]), - s("div", HI, [ + s("div", qI, [ C(Lr) ]) ]), - s("div", KI, [ - te.value ? (a(), c("div", qI, f(te.value), 1)) : !S.value && le.value === "status" ? (a(), c("div", YI, " Loading status... ")) : (a(), c(j, { key: 2 }, [ + s("div", YI, [ + te.value ? (a(), c("div", JI, f(te.value), 1)) : !x.value && le.value === "status" ? (a(), c("div", XI, " Loading status... ")) : (a(), c(j, { key: 2 }, [ le.value === "status" ? (a(), M(qm, { key: 0, ref_key: "statusSectionRef", ref: be, - status: S.value, + status: x.value, "setup-state": Y.value, onSwitchBranch: V, onCommitChanges: G[17] || (G[17] = (Ne) => de.value = !0), @@ -21542,7 +21548,7 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS })) : le.value === "branches" ? (a(), M(cv, { key: 3, branches: B.value, - current: ((tt = S.value) == null ? void 0 : tt.branch) || null, + current: ((tt = x.value) == null ? void 0 : tt.branch) || null, onSwitch: D, onCreate: W, onDelete: ce @@ -21553,7 +21559,7 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS onCheckout: X }, null, 8, ["commits"])) : le.value === "nodes" ? (a(), M(Yw, { key: 5, - "version-mismatches": ((Rt = (dt = S.value) == null ? void 0 : dt.comparison) == null ? void 0 : Rt.version_mismatches) || [], + "version-mismatches": ((Rt = (dt = x.value) == null ? void 0 : dt.comparison) == null ? void 0 : Rt.version_mismatches) || [], onOpenNodeManager: oe, onRepairEnvironment: he, onToast: Re @@ -21603,31 +21609,31 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS onCancel: G[26] || (G[26] = (Ne) => ae.value = null), onSecondary: ae.value.onSecondary }, null, 8, ["title", "message", "details", "warning", "confirmLabel", "cancelLabel", "secondaryLabel", "secondaryAction", "destructive", "onConfirm", "onSecondary"])) : y("", !0), - C(l6, { + C(r6, { show: ve.value, "from-environment": ((as = I.value) == null ? void 0 : as.name) || "unknown", "to-environment": De.value, onConfirm: ct, onClose: to }, null, 8, ["show", "from-environment", "to-environment"]), - de.value && S.value ? (a(), M(Mr, { + de.value && x.value ? (a(), M(Mr, { key: 2, - status: S.value, + status: x.value, "as-modal": !0, onClose: G[27] || (G[27] = (Ne) => de.value = !1), onCommitted: _o }, null, 8, ["status"])) : y("", !0), - fe.value && S.value ? (a(), M(S6, { + fe.value && x.value ? (a(), M(E6, { key: 3, show: fe.value, "mismatch-details": { - missing_nodes: S.value.comparison.missing_nodes, - extra_nodes: S.value.comparison.extra_nodes + missing_nodes: x.value.comparison.missing_nodes, + extra_nodes: x.value.comparison.extra_nodes }, onConfirm: ko, onClose: G[28] || (G[28] = (Ne) => fe.value = !1) }, null, 8, ["show", "mismatch-details"])) : y("", !0), - C(h6, { + C(w6, { show: Ee.value, state: Je.value.state, progress: Je.value.progress, @@ -21638,8 +21644,8 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS class: "dialog-overlay", onClick: G[30] || (G[30] = nt((Ne) => U.value = !1, ["self"])) }, [ - s("div", JI, [ - s("div", XI, [ + s("div", QI, [ + s("div", ZI, [ G[44] || (G[44] = s("h3", { class: "dialog-title" }, "SWITCH ENVIRONMENT", -1)), s("button", { class: "icon-btn", @@ -21655,33 +21661,33 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS ], -1) ])]) ]), - s("div", QI, [ + s("div", eE, [ G[45] || (G[45] = s("p", { class: "dialog-message" }, "Select environment to switch to:", -1)), - s("div", ZI, [ + s("div", tE, [ (a(!0), c(j, null, ge(A.value, (Ne) => (a(), c("div", { key: Ne.name, class: xe(["env-item", { current: Ne.is_current }]) }, [ - s("div", eE, [ - s("div", tE, [ - s("span", sE, f(Ne.is_current ? "●" : "○"), 1), - s("span", oE, f(Ne.name), 1), - Ne.current_branch ? (a(), c("span", nE, "(" + f(Ne.current_branch) + ")", 1)) : y("", !0), - Ne.is_current ? (a(), c("span", aE, "CURRENT")) : y("", !0) + s("div", sE, [ + s("div", oE, [ + s("span", nE, f(Ne.is_current ? "●" : "○"), 1), + s("span", aE, f(Ne.name), 1), + Ne.current_branch ? (a(), c("span", lE, "(" + f(Ne.current_branch) + ")", 1)) : y("", !0), + Ne.is_current ? (a(), c("span", iE, "CURRENT")) : y("", !0) ]), - s("div", lE, f(Ne.workflow_count) + " workflows • " + f(Ne.node_count) + " nodes ", 1) + s("div", rE, f(Ne.workflow_count) + " workflows • " + f(Ne.node_count) + " nodes ", 1) ]), Ne.is_current ? y("", !0) : (a(), c("button", { key: 0, class: "switch-btn", onClick: (Co) => wt(Ne.name) - }, " SWITCH ", 8, iE)) + }, " SWITCH ", 8, cE)) ], 2))), 128)) ]) ]) ]) ])) : y("", !0), - O.value ? (a(), M(PI, { + O.value ? (a(), M(MI, { key: 5, "default-path": ((Vs = E.value) == null ? void 0 : Vs.default_path) || "~/comfygit", "detected-models-dir": ((Ws = E.value) == null ? void 0 : Ws.detected_models_dir) || null, @@ -21695,14 +21701,14 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS onSwitchEnvironment: ps, onEnvironmentCreatedNoSwitch: os }, null, 8, ["default-path", "detected-models-dir", "initial-step", "existing-environments", "cli-installed", "setup-state", "workspace-path"])) : y("", !0), - s("div", rE, [ + s("div", uE, [ C(nd, { name: "toast" }, { default: g(() => [ (a(!0), c(j, null, ge(ke.value, (Ne) => (a(), c("div", { key: Ne.id, class: xe(["toast", Ne.type]) }, [ - s("span", cE, f(Ne.message), 1) + s("span", dE, f(Ne.message), 1) ], 2))), 128)) ]), _: 1 @@ -21711,31 +21717,31 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS ]); }; } -}), dE = /* @__PURE__ */ pe(uE, [["__scopeId", "data-v-037b3ee3"]]), fE = { class: "item-header" }, mE = { class: "item-info" }, vE = { class: "filename" }, pE = { class: "metadata" }, gE = { class: "size" }, hE = { +}), mE = /* @__PURE__ */ pe(fE, [["__scopeId", "data-v-037b3ee3"]]), vE = { class: "item-header" }, pE = { class: "item-info" }, gE = { class: "filename" }, hE = { class: "metadata" }, yE = { class: "size" }, wE = { key: 0, class: "type" -}, yE = { class: "item-actions" }, wE = { +}, bE = { class: "item-actions" }, _E = { key: 0, class: "progress-section" -}, bE = { class: "progress-bar" }, _E = { class: "progress-stats" }, kE = { class: "downloaded" }, $E = { class: "speed" }, CE = { +}, kE = { class: "progress-bar" }, $E = { class: "progress-stats" }, CE = { class: "downloaded" }, xE = { class: "speed" }, SE = { key: 0, class: "eta" -}, xE = { +}, IE = { key: 1, class: "status-msg paused" -}, SE = { +}, EE = { key: 2, class: "status-msg queued" -}, IE = { +}, TE = { key: 3, class: "status-msg completed" -}, EE = { +}, PE = { key: 4, class: "status-msg failed" -}, TE = { +}, RE = { key: 0, class: "retries" -}, PE = /* @__PURE__ */ me({ +}, ME = /* @__PURE__ */ me({ __name: "DownloadQueueItem", props: { item: {} @@ -21759,15 +21765,15 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS return (r, u) => (a(), c("div", { class: xe(["download-item", `status-${e.item.status}`]) }, [ - s("div", fE, [ - s("div", mE, [ - s("div", vE, f(e.item.filename), 1), - s("div", pE, [ - s("span", gE, f(n(e.item.size)), 1), - e.item.type ? (a(), c("span", hE, f(e.item.type), 1)) : y("", !0) + s("div", vE, [ + s("div", pE, [ + s("div", gE, f(e.item.filename), 1), + s("div", hE, [ + s("span", yE, f(n(e.item.size)), 1), + e.item.type ? (a(), c("span", wE, f(e.item.type), 1)) : y("", !0) ]) ]), - s("div", yE, [ + s("div", bE, [ e.item.status === "queued" || e.item.status === "downloading" ? (a(), c("button", { key: 0, class: "action-icon cancel", @@ -21794,49 +21800,49 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS }, " × ")) : y("", !0) ]) ]), - e.item.status === "downloading" ? (a(), c("div", wE, [ - s("div", bE, [ + e.item.status === "downloading" ? (a(), c("div", _E, [ + s("div", kE, [ s("div", { class: "progress-fill", style: Vt({ width: `${e.item.progress}%` }) }, null, 4) ]), - s("div", _E, [ - s("span", kE, f(n(e.item.downloaded)) + " / " + f(n(e.item.size)), 1), - s("span", $E, f(l(e.item.speed)), 1), - e.item.eta > 0 ? (a(), c("span", CE, f(i(e.item.eta)), 1)) : y("", !0) + s("div", $E, [ + s("span", CE, f(n(e.item.downloaded)) + " / " + f(n(e.item.size)), 1), + s("span", xE, f(l(e.item.speed)), 1), + e.item.eta > 0 ? (a(), c("span", SE, f(i(e.item.eta)), 1)) : y("", !0) ]) - ])) : e.item.status === "paused" ? (a(), c("div", xE, " Paused - click Resume to download ")) : e.item.status === "queued" ? (a(), c("div", SE, " Waiting in queue... ")) : e.item.status === "completed" ? (a(), c("div", IE, " ✓ Downloaded ")) : e.item.status === "failed" ? (a(), c("div", EE, [ + ])) : e.item.status === "paused" ? (a(), c("div", IE, " Paused - click Resume to download ")) : e.item.status === "queued" ? (a(), c("div", EE, " Waiting in queue... ")) : e.item.status === "completed" ? (a(), c("div", TE, " ✓ Downloaded ")) : e.item.status === "failed" ? (a(), c("div", PE, [ b(" ✗ " + f(e.item.error || "Failed") + " ", 1), - e.item.retries > 0 ? (a(), c("span", TE, "(" + f(e.item.retries) + " retries)", 1)) : y("", !0) + e.item.retries > 0 ? (a(), c("span", RE, "(" + f(e.item.retries) + " retries)", 1)) : y("", !0) ])) : y("", !0) ], 2)); } -}), Eo = /* @__PURE__ */ pe(PE, [["__scopeId", "data-v-2110df65"]]), RE = { class: "queue-title" }, ME = { class: "count" }, DE = { class: "queue-actions" }, LE = { class: "action-label" }, OE = { +}), Eo = /* @__PURE__ */ pe(ME, [["__scopeId", "data-v-2110df65"]]), DE = { class: "queue-title" }, LE = { class: "count" }, OE = { class: "queue-actions" }, NE = { class: "action-label" }, AE = { key: 0, class: "overall-progress" -}, NE = { class: "progress-bar" }, AE = { +}, UE = { class: "progress-bar" }, zE = { key: 0, class: "current-mini" -}, UE = { class: "filename" }, zE = { class: "speed" }, FE = { +}, FE = { class: "filename" }, BE = { class: "speed" }, VE = { key: 1, class: "queue-content" -}, BE = { +}, WE = { key: 0, class: "section" -}, VE = { +}, GE = { key: 1, class: "section" -}, WE = { class: "section-header" }, GE = { class: "section-label paused" }, jE = { class: "items-list" }, HE = { +}, jE = { class: "section-header" }, HE = { class: "section-label paused" }, KE = { class: "items-list" }, qE = { key: 2, class: "section" -}, KE = { class: "section-header" }, qE = { class: "section-label" }, YE = { class: "items-list" }, JE = { +}, YE = { class: "section-header" }, JE = { class: "section-label" }, XE = { class: "items-list" }, QE = { key: 3, class: "section" -}, XE = { class: "section-header" }, QE = { class: "section-label" }, ZE = { class: "items-list" }, eT = { +}, ZE = { class: "section-header" }, eT = { class: "section-label" }, tT = { class: "items-list" }, sT = { key: 4, class: "section" -}, tT = { class: "section-header" }, sT = { class: "section-label failed" }, oT = { class: "items-list" }, nT = /* @__PURE__ */ me({ +}, oT = { class: "section-header" }, nT = { class: "section-label failed" }, aT = { class: "items-list" }, lT = /* @__PURE__ */ me({ __name: "ModelDownloadQueue", setup(e) { const { @@ -21854,7 +21860,7 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS resumeAllPaused: w, removeItem: p, clearCompleted: _ - } = en(), x = k(!1); + } = en(), S = k(!1); let $ = null; Ct( () => ({ @@ -21863,9 +21869,9 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS paused: r.value.length, completed: l.value.length }), - (S, q) => { + (x, q) => { $ && (clearTimeout($), $ = null); - const B = S.active === 0 && S.failed === 0 && S.paused === 0 && S.completed > 0, A = q && (q.active > 0 || q.paused > 0); + const B = x.active === 0 && x.failed === 0 && x.paused === 0 && x.completed > 0, A = q && (q.active > 0 || q.paused > 0); B && A && ($ = setTimeout(() => { _(), $ = null; }, 2e3)); @@ -21875,51 +21881,51 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS const P = F(() => { var B; if (t.items.length === 0) return 0; - const S = l.value.length, q = ((B = o.value) == null ? void 0 : B.progress) || 0; - return Math.round((S + q / 100) / t.items.length * 100); + const x = l.value.length, q = ((B = o.value) == null ? void 0 : B.progress) || 0; + return Math.round((x + q / 100) / t.items.length * 100); }); - function N(S) { - m(S); + function N(x) { + m(x); } - function T(S) { - return S === 0 ? "" : `${(S / (1024 * 1024)).toFixed(1)} MB/s`; + function T(x) { + return x === 0 ? "" : `${(x / (1024 * 1024)).toFixed(1)} MB/s`; } - return (S, q) => (a(), M(ht, { to: "body" }, [ + return (x, q) => (a(), M(ht, { to: "body" }, [ Ue(u) ? (a(), c("div", { key: 0, - class: xe(["model-download-queue", { minimized: !x.value }]) + class: xe(["model-download-queue", { minimized: !S.value }]) }, [ s("div", { class: "queue-header", - onClick: q[0] || (q[0] = (B) => x.value = !x.value) + onClick: q[0] || (q[0] = (B) => S.value = !S.value) }, [ - s("div", RE, [ + s("div", DE, [ q[4] || (q[4] = s("span", { class: "icon" }, "↓", -1)), q[5] || (q[5] = s("span", { class: "title" }, "Downloads", -1)), - s("span", ME, "(" + f(Ue(d)) + "/" + f(Ue(t).items.length) + ")", 1) + s("span", LE, "(" + f(Ue(d)) + "/" + f(Ue(t).items.length) + ")", 1) ]), - s("div", DE, [ - s("span", LE, f(x.value ? "minimize" : "expand"), 1) + s("div", OE, [ + s("span", NE, f(S.value ? "minimize" : "expand"), 1) ]) ]), - x.value ? (a(), c("div", FE, [ - Ue(o) ? (a(), c("div", BE, [ + S.value ? (a(), c("div", VE, [ + Ue(o) ? (a(), c("div", WE, [ q[6] || (q[6] = s("div", { class: "section-label" }, "Downloading", -1)), C(Eo, { item: Ue(o), onCancel: q[1] || (q[1] = (B) => N(Ue(o).id)) }, null, 8, ["item"]) ])) : y("", !0), - Ue(r).length > 0 ? (a(), c("div", VE, [ - s("div", WE, [ - s("span", GE, "Paused (" + f(Ue(r).length) + ")", 1), + Ue(r).length > 0 ? (a(), c("div", GE, [ + s("div", jE, [ + s("span", HE, "Paused (" + f(Ue(r).length) + ")", 1), s("button", { class: "resume-all-btn", onClick: q[2] || (q[2] = //@ts-ignore (...B) => Ue(w) && Ue(w)(...B)) }, "Resume All") ]), - s("div", jE, [ + s("div", KE, [ (a(!0), c(j, null, ge(Ue(r), (B) => (a(), M(Eo, { key: B.id, item: B, @@ -21928,11 +21934,11 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS }, null, 8, ["item", "onResume", "onRemove"]))), 128)) ]) ])) : y("", !0), - Ue(n).length > 0 ? (a(), c("div", HE, [ - s("div", KE, [ - s("span", qE, "Queued (" + f(Ue(n).length) + ")", 1) - ]), + Ue(n).length > 0 ? (a(), c("div", qE, [ s("div", YE, [ + s("span", JE, "Queued (" + f(Ue(n).length) + ")", 1) + ]), + s("div", XE, [ (a(!0), c(j, null, ge(Ue(n), (B) => (a(), M(Eo, { key: B.id, item: B, @@ -21940,16 +21946,16 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS }, null, 8, ["item", "onCancel"]))), 128)) ]) ])) : y("", !0), - Ue(l).length > 0 ? (a(), c("div", JE, [ - s("div", XE, [ - s("span", QE, "Completed (" + f(Ue(l).length) + ")", 1), + Ue(l).length > 0 ? (a(), c("div", QE, [ + s("div", ZE, [ + s("span", eT, "Completed (" + f(Ue(l).length) + ")", 1), s("button", { class: "clear-btn", onClick: q[3] || (q[3] = //@ts-ignore (...B) => Ue(_) && Ue(_)(...B)) }, "Clear") ]), - s("div", ZE, [ + s("div", tT, [ (a(!0), c(j, null, ge(Ue(l).slice(0, 3), (B) => (a(), M(Eo, { key: B.id, item: B, @@ -21957,11 +21963,11 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS }, null, 8, ["item", "onRemove"]))), 128)) ]) ])) : y("", !0), - Ue(i).length > 0 ? (a(), c("div", eT, [ - s("div", tT, [ - s("span", sT, "Failed (" + f(Ue(i).length) + ")", 1) - ]), + Ue(i).length > 0 ? (a(), c("div", sT, [ s("div", oT, [ + s("span", nT, "Failed (" + f(Ue(i).length) + ")", 1) + ]), + s("div", aT, [ (a(!0), c(j, null, ge(Ue(i), (B) => (a(), M(Eo, { key: B.id, item: B, @@ -21970,27 +21976,27 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS }, null, 8, ["item", "onRetry", "onRemove"]))), 128)) ]) ])) : y("", !0) - ])) : (a(), c("div", OE, [ - s("div", NE, [ + ])) : (a(), c("div", AE, [ + s("div", UE, [ s("div", { class: "progress-fill", style: Vt({ width: `${P.value}%` }) }, null, 4) ]), - Ue(o) ? (a(), c("div", AE, [ - s("span", UE, f(Ue(o).filename), 1), - s("span", zE, f(T(Ue(o).speed)), 1) + Ue(o) ? (a(), c("div", zE, [ + s("span", FE, f(Ue(o).filename), 1), + s("span", BE, f(T(Ue(o).speed)), 1) ])) : y("", !0) ])) ], 2)) : y("", !0) ])); } -}), aT = /* @__PURE__ */ pe(nT, [["__scopeId", "data-v-60751cfa"]]), lT = '@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";[data-comfygit-theme=comfy]{--cg-font-display: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--cg-font-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--cg-font-mono: ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, monospace;--cg-font-size-xs: 14.3px;--cg-font-size-sm: 16.9px;--cg-font-size-base: 18.2px;--cg-font-size-lg: 20.8px;--cg-font-size-xl: 23.4px;--cg-font-size-2xl: 26px;--cg-font-weight-normal: 400;--cg-font-weight-medium: 500;--cg-font-weight-semibold: 600;--cg-font-weight-bold: 700;--cg-panel-width: 884px;--cg-space-1: 5.2px;--cg-space-2: 10.4px;--cg-space-3: 15.6px;--cg-space-4: 20.8px;--cg-space-5: 26px;--cg-space-6: 31.2px;--cg-space-8: 41.6px;--cg-space-10: 52px;--cg-space-12: 62.4px;--cg-letter-spacing-normal: 0;--cg-letter-spacing-wide: .025em;--cg-transition-fast: .15s ease;--cg-transition-base: .2s ease;--cg-transition-slow: .3s ease;--cg-color-bg-primary: #2d2e32;--cg-color-bg-secondary: #262729;--cg-color-bg-tertiary: #202121;--cg-color-bg-hover: #3c3d42;--cg-color-bg-overlay: rgba(0, 0, 0, .75);--cg-color-text-primary: #ffffff;--cg-color-text-secondary: #c5c5c5;--cg-color-text-muted: #8a8a8a;--cg-color-text-inverse: #000000;--cg-color-border: #55565e;--cg-color-border-subtle: #3c3d42;--cg-color-border-strong: #828282;--cg-color-accent: #31b9f4;--cg-color-accent-hover: #0b8ce9;--cg-color-accent-muted: rgba(49, 185, 244, .15);--cg-color-success: #47e469;--cg-color-success-muted: rgba(71, 228, 105, .15);--cg-color-warning: #fcbf64;--cg-color-warning-muted: rgba(252, 191, 100, .15);--cg-color-error: #dd424e;--cg-color-error-muted: rgba(221, 66, 78, .15);--cg-color-info: #31b9f4;--cg-color-info-muted: rgba(49, 185, 244, .15);--cg-radius-none: 0;--cg-radius-sm: 4px;--cg-radius-md: 6px;--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, .3);--cg-shadow-md: 0 2px 8px rgba(0, 0, 0, .4);--cg-shadow-lg: 0 4px 16px rgba(0, 0, 0, .5);--cg-shadow-xl: 0 8px 32px rgba(0, 0, 0, .6);--cg-btn-gradient-start: #31b9f4;--cg-btn-gradient-end: #0b8ce9;--cg-btn-shadow-inset: inset 0 1px 0 rgba(255, 255, 255, .1);--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(49, 185, 244, .3);--cg-shadow-accent-strong: rgba(49, 185, 244, .5);--cg-shadow-error: rgba(221, 66, 78, .3);--cg-shadow-success: rgba(71, 228, 105, .3);--cg-text-shadow-title: none;--cg-text-shadow-accent: none}[data-comfygit-theme=comfy] .comfygit-panel{box-shadow:var(--cg-shadow-lg);border:1px solid var(--cg-color-border-subtle)}[data-comfygit-theme=comfy] .sidebar{background:var(--cg-color-bg-secondary);border-right:1px solid var(--cg-color-border-subtle)}[data-comfygit-theme=comfy] .sidebar-item{border-radius:var(--cg-radius-md);transition:background var(--cg-transition-fast),color var(--cg-transition-fast)}[data-comfygit-theme=comfy] .sidebar-item:hover{background:var(--cg-color-bg-hover)}[data-comfygit-theme=comfy] .sidebar-item.active{background:var(--cg-color-accent-muted);color:var(--cg-color-accent);font-weight:var(--cg-font-weight-medium)}[data-comfygit-theme=comfy] button{border-radius:var(--cg-radius-md)}[data-comfygit-theme=comfy] .icon-btn{border-radius:var(--cg-radius-md);transition:all var(--cg-transition-fast)}[data-comfygit-theme=comfy] .icon-btn:hover{background:var(--cg-color-bg-hover)}[data-comfygit-theme=comfy] .status-grid{border-radius:var(--cg-radius-lg);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=comfy] .issue-card{border-radius:var(--cg-radius-lg);box-shadow:var(--cg-shadow-sm);transition:all var(--cg-transition-fast)}[data-comfygit-theme=comfy] .issue-card:hover{box-shadow:var(--cg-shadow-md)}[data-comfygit-theme=comfy] .issue-card--warning,[data-comfygit-theme=comfy] .issue-card--error,[data-comfygit-theme=comfy] .issue-card--info{border-left-width:4px}[data-comfygit-theme=comfy] .branch-indicator{border-radius:var(--cg-radius-md)}[data-comfygit-theme=comfy] .branch-indicator__name{font-weight:var(--cg-font-weight-semibold)}[data-comfygit-theme=comfy] .commit-list{border-radius:var(--cg-radius-md)}[data-comfygit-theme=comfy] .commit-item{transition:all var(--cg-transition-fast)}[data-comfygit-theme=comfy] .commit-item:hover{background:var(--cg-color-bg-hover)}[data-comfygit-theme=comfy] .branch-item,[data-comfygit-theme=comfy] .branch-list-item{border-radius:var(--cg-radius-md);transition:all var(--cg-transition-fast)}[data-comfygit-theme=comfy] .branch-item:hover,[data-comfygit-theme=comfy] .branch-list-item:hover{background:var(--cg-color-bg-hover)}[data-comfygit-theme=comfy] .branch-list{border-radius:var(--cg-radius-md);overflow:hidden}[data-comfygit-theme=comfy] .branch-create-form,[data-comfygit-theme=comfy] .create-form{border-radius:var(--cg-radius-md);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=comfy] .text-input{border-radius:var(--cg-radius-md)}[data-comfygit-theme=comfy] input[type=text],[data-comfygit-theme=comfy] textarea{border-radius:var(--cg-radius-md);border:1px solid var(--cg-color-border);transition:border-color var(--cg-transition-fast),box-shadow var(--cg-transition-fast)}[data-comfygit-theme=comfy] input[type=text]:focus,[data-comfygit-theme=comfy] textarea:focus{border-color:var(--cg-color-accent);box-shadow:0 0 0 3px var(--cg-color-accent-muted)}[data-comfygit-theme=comfy] .dialog-content{border-radius:var(--cg-radius-xl);box-shadow:var(--cg-shadow-xl);border:1px solid var(--cg-color-border-subtle)}[data-comfygit-theme=comfy] .status-badge{border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-medium);padding:2px 8px}[data-comfygit-theme=comfy] .warning-box{border-radius:var(--cg-radius-md);border-left:4px solid var(--cg-color-warning);background:var(--cg-color-warning-muted)}[data-comfygit-theme=comfy] .env-switcher-btn{border-radius:var(--cg-radius-md);transition:all var(--cg-transition-fast)}[data-comfygit-theme=comfy] .env-switcher-btn:hover{background:var(--cg-color-bg-hover);transform:translateY(-1px);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=comfy] .section-title{font-weight:var(--cg-font-weight-semibold);letter-spacing:var(--cg-letter-spacing-wide);color:var(--cg-color-text-secondary)}[data-comfygit-theme=comfy] .commit-hash,[data-comfygit-theme=comfy] .branch-name-mono,[data-comfygit-theme=comfy] .file-path{font-family:var(--cg-font-mono)}[data-comfygit-theme=comfy] .settings-section{border-radius:var(--cg-radius-md);background:var(--cg-color-bg-secondary)}[data-comfygit-theme=comfy] .setting-row{transition:background var(--cg-transition-fast)}[data-comfygit-theme=comfy] .setting-row:hover{background:var(--cg-color-bg-hover)}[data-comfygit-theme=comfy] .toggle-slider{border-radius:var(--cg-radius-full)}[data-comfygit-theme=comfy] .commit-hash{color:var(--cg-color-accent);font-weight:var(--cg-font-weight-medium)}[data-comfygit-theme=comfy] .status-dot.success{background:var(--cg-color-success)}[data-comfygit-theme=comfy] .status-dot.warning{background:var(--cg-color-warning)}[data-comfygit-theme=comfy] .status-dot.error{background:var(--cg-color-error)}[data-comfygit-theme=comfy] ::-webkit-scrollbar{width:8px;height:8px}[data-comfygit-theme=comfy] ::-webkit-scrollbar-track{background:var(--cg-color-bg-secondary)}[data-comfygit-theme=comfy] ::-webkit-scrollbar-thumb{background:var(--cg-color-border);border-radius:var(--cg-radius-sm)}[data-comfygit-theme=comfy] ::-webkit-scrollbar-thumb:hover{background:var(--cg-color-border-strong)}[data-comfygit-theme=comfy] .view-title:before,[data-comfygit-theme=comfy] .panel-title:before,[data-comfygit-theme=comfy] .section-title:before{content:""}[data-comfygit-theme=comfy] .status-dot{width:8px;height:8px;border-radius:50%;animation:none}[data-comfygit-theme=comfy] .env-switcher-label{font-weight:var(--cg-font-weight-semibold)}[data-comfygit-theme=comfy] .panel-title,[data-comfygit-theme=comfy] .view-title{text-shadow:none}[data-comfygit-theme=comfy] .log-level{border-radius:var(--cg-radius-sm);font-weight:var(--cg-font-weight-semibold)}[data-comfygit-theme=comfy] .log-item{border-radius:var(--cg-radius-md);transition:all var(--cg-transition-fast);margin-bottom:var(--cg-space-1)}[data-comfygit-theme=comfy] .log-item:hover{background:var(--cg-color-bg-hover)}[data-comfygit-theme=comfy] .log-item__context{border-radius:var(--cg-radius-sm);font-weight:var(--cg-font-weight-medium)}[data-comfygit-theme=comfy] .log-filter-bar{border-radius:var(--cg-radius-md);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);margin-bottom:var(--cg-space-3)}[data-comfygit-theme=comfy] .filter-option{border-radius:var(--cg-radius-sm);transition:all var(--cg-transition-fast)}[data-comfygit-theme=comfy] .filter-option:hover{transform:translateY(-1px);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=comfy] .filter-option.active{box-shadow:0 0 8px var(--cg-shadow-accent)}[data-comfygit-theme=comfy] .log-list{border-radius:var(--cg-radius-md);overflow:hidden}[data-comfygit-theme=comfy] .remote-form{border-radius:var(--cg-radius-md);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=comfy] .remote-url-display{background:var(--cg-color-bg-secondary);padding:var(--cg-space-1) var(--cg-space-2);border-radius:var(--cg-radius-sm)}[data-comfygit-theme=comfy] .default-badge,[data-comfygit-theme=comfy] .copy-btn{border-radius:var(--cg-radius-sm)}[data-comfygit-theme=comfy] .file-path,[data-comfygit-theme=comfy] .export-warning{border-radius:var(--cg-radius-md)}[data-comfygit-theme=comfy] .file-drop-zone{border-radius:var(--cg-radius-lg);transition:all var(--cg-transition-base)}[data-comfygit-theme=comfy] .file-drop-zone.drop-active{transform:scale(1.01)}[data-comfygit-theme=comfy] .file-drop-zone.has-file{border-radius:var(--cg-radius-md)}[data-comfygit-theme=comfy] .import-preview,[data-comfygit-theme=comfy] .import-options{border-radius:var(--cg-radius-lg);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=comfy] .option-item{border-radius:var(--cg-radius-md)}[data-comfygit-theme=comfy] .option-item:hover{transform:translate(2px)}[data-comfygit-theme=comfy] .selected-file-bar{border-radius:var(--cg-radius-md);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=comfy] .import-help{border-radius:var(--cg-radius-lg);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=comfy] .help-number{border-radius:var(--cg-radius-md);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=comfy] .progress-bar{border-radius:var(--cg-radius-full);overflow:hidden}[data-comfygit-theme=comfy] .progress-bar-fill{border-radius:var(--cg-radius-full);box-shadow:0 0 8px var(--cg-shadow-accent-strong)}[data-comfygit-theme=comfy] .complete-icon.success{box-shadow:0 0 16px var(--cg-shadow-success)}[data-comfygit-theme=comfy] .complete-icon.error{box-shadow:0 0 16px var(--cg-shadow-error)}[data-comfygit-theme=comfy] .base-tabs{border-bottom-color:var(--cg-color-border-subtle)}[data-comfygit-theme=comfy] .base-tabs__tab{border-radius:var(--cg-radius-sm) var(--cg-radius-sm) 0 0}[data-comfygit-theme=comfy] .base-tabs__tab:hover:not(.disabled){background:var(--cg-color-bg-hover)}[data-comfygit-theme=comfy] .base-tabs__tab.active{background:var(--cg-color-accent-muted)}', iT = '@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600;700&display=swap";[data-comfygit-theme=phosphor]{--cg-font-display: "IBM Plex Mono", ui-monospace, monospace;--cg-font-body: "IBM Plex Mono", ui-monospace, monospace;--cg-font-mono: "IBM Plex Mono", ui-monospace, monospace;--cg-font-size-xs: 15.6px;--cg-font-size-sm: 18.2px;--cg-font-size-base: 22.1px;--cg-font-size-lg: 26px;--cg-font-size-xl: 31.2px;--cg-font-size-2xl: 36.4px;--cg-panel-width: 980px;--cg-space-1: 5.2px;--cg-space-2: 10.4px;--cg-space-3: 15.6px;--cg-space-4: 20.8px;--cg-space-5: 26px;--cg-space-6: 31.2px;--cg-space-8: 41.6px;--cg-space-10: 52px;--cg-space-12: 62.4px;--cg-letter-spacing-normal: .02em;--cg-letter-spacing-wide: .08em;--cg-color-bg-primary: #0a0a0a;--cg-color-bg-secondary: #050505;--cg-color-bg-tertiary: #000000;--cg-color-bg-hover: #0f1f0f;--cg-color-bg-overlay: rgba(0, 0, 0, .85);--cg-color-text-primary: #00ff41;--cg-color-text-secondary: #00cc33;--cg-color-text-muted: #008f11;--cg-color-text-inverse: #000000;--cg-color-border: #00ff41;--cg-color-border-subtle: #003b00;--cg-color-border-strong: #00ff41;--cg-color-accent: #00ff41;--cg-color-accent-hover: #39ff14;--cg-color-accent-muted: rgba(0, 255, 65, .15);--cg-color-success: #00ff41;--cg-color-success-muted: rgba(0, 255, 65, .2);--cg-color-warning: #ffff00;--cg-color-warning-muted: rgba(255, 255, 0, .15);--cg-color-error: #ff0040;--cg-color-error-muted: rgba(255, 0, 64, .15);--cg-color-info: #00ffff;--cg-color-info-muted: rgba(0, 255, 255, .15);--cg-radius-none: 0;--cg-radius-sm: 0;--cg-radius-md: 0;--cg-radius-lg: 0;--cg-radius-xl: 0;--cg-radius-2xl: 0;--cg-radius-full: 0;--cg-shadow-sm: 0 0 4px rgba(0, 255, 65, .3);--cg-shadow-md: 0 0 8px rgba(0, 255, 65, .4);--cg-shadow-lg: 0 0 16px rgba(0, 255, 65, .5);--cg-shadow-xl: 0 0 32px rgba(0, 255, 65, .6);--cg-btn-gradient-start: #00ff41;--cg-btn-gradient-end: #00cc33;--cg-btn-shadow-inset: none;--cg-decoration-title-prefix: "> ";--cg-decoration-label-prefix: "/* ";--cg-decoration-label-suffix: " */";--cg-decoration-status-animation: cursor-blink 1s step-end infinite;--cg-decoration-status-shape: cursor;--cg-shadow-accent: rgba(0, 255, 65, .3);--cg-shadow-accent-strong: rgba(0, 255, 65, .5);--cg-shadow-error: rgba(255, 0, 64, .3);--cg-shadow-success: rgba(0, 255, 65, .3);--cg-text-shadow-title: 0 0 8px var(--cg-color-accent);--cg-text-shadow-accent: 0 0 8px var(--cg-color-accent)}[data-comfygit-theme=phosphor] .comfygit-panel{position:relative;overflow:hidden}[data-comfygit-theme=phosphor] .comfygit-panel:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,0,0,.15) 2px,rgba(0,0,0,.15) 3px);pointer-events:none;z-index:100}[data-comfygit-theme=phosphor] .comfygit-panel:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:#00ff4105;pointer-events:none;animation:phosphor-flicker 4s infinite;z-index:99}@keyframes phosphor-flicker{0%,to{opacity:1}50%{opacity:.98}52%{opacity:1}54%{opacity:.96}56%{opacity:1}}[data-comfygit-theme=phosphor] .comfygit-panel{background:var(--cg-color-bg-primary);border:2px solid var(--cg-color-border);box-shadow:var(--cg-shadow-lg),inset 0 0 100px #00ff4108;font-family:var(--cg-font-mono)}[data-comfygit-theme=phosphor] .panel-title{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)}[data-comfygit-theme=phosphor] .panel-title:before{content:var(--cg-decoration-title-prefix);opacity:.7}[data-comfygit-theme=phosphor] .view-title{text-shadow:0 0 8px var(--cg-color-accent)}[data-comfygit-theme=phosphor] .view-title:before{content:var(--cg-decoration-title-prefix);opacity:.7}[data-comfygit-theme=phosphor] .env-name,[data-comfygit-theme=phosphor] .branch-name{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs)}[data-comfygit-theme=phosphor] .branch-name:before{content:"@";margin-right:2px}[data-comfygit-theme=phosphor] .env-switcher-label:before{content:var(--cg-decoration-label-prefix)}[data-comfygit-theme=phosphor] .env-switcher-label:after{content:var(--cg-decoration-label-suffix)}[data-comfygit-theme=phosphor] .group-title:before{content:var(--cg-decoration-label-prefix)}[data-comfygit-theme=phosphor] .group-title:after{content:var(--cg-decoration-label-suffix)}[data-comfygit-theme=phosphor] .status-dot{width:6px;height:12px;border-radius:0;animation:var(--cg-decoration-status-animation)}[data-comfygit-theme=phosphor] .status-dot.success{background:var(--cg-color-success)}[data-comfygit-theme=phosphor] .status-dot.warning{background:var(--cg-color-warning)}[data-comfygit-theme=phosphor] .status-dot.error{background:var(--cg-color-error)}@keyframes cursor-blink{50%{opacity:0}}[data-comfygit-theme=phosphor] .icon-btn{color:var(--cg-color-text-primary);border:1px solid transparent}[data-comfygit-theme=phosphor] .icon-btn:hover{background:var(--cg-color-bg-hover);border-color:var(--cg-color-border-subtle)}[data-comfygit-theme=phosphor] .status-section{margin-bottom:var(--cg-space-4)}[data-comfygit-theme=phosphor] .section-title{color:var(--cg-color-accent);font-size:var(--cg-font-size-xs);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);text-shadow:0 0 8px var(--cg-color-accent);margin-bottom:var(--cg-space-2)}[data-comfygit-theme=phosphor] .section-title:before{content:"> ";opacity:.7}[data-comfygit-theme=phosphor] .count{font-size:var(--cg-font-size-base)}[data-comfygit-theme=phosphor] .status-grid{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle)}[data-comfygit-theme=phosphor] .column-title{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wider)}[data-comfygit-theme=phosphor] .column-title:before{content:"/* "}[data-comfygit-theme=phosphor] .column-title:after{content:" */"}[data-comfygit-theme=phosphor] .status-item{font-size:var(--cg-font-size-sm)}[data-comfygit-theme=phosphor] .status-item .icon{display:none}[data-comfygit-theme=phosphor] .synced-item:before{content:"└─ "}[data-comfygit-theme=phosphor] .count{font-weight:var(--cg-font-weight-bold)}[data-comfygit-theme=phosphor] .count.new{color:var(--cg-color-success);text-shadow:0 0 4px var(--cg-color-success)}[data-comfygit-theme=phosphor] .count.modified{color:var(--cg-color-warning);text-shadow:0 0 4px var(--cg-color-warning)}[data-comfygit-theme=phosphor] .count.deleted{color:var(--cg-color-error);text-shadow:0 0 4px var(--cg-color-error)}[data-comfygit-theme=phosphor] .count.synced{color:var(--cg-color-text-muted)}[data-comfygit-theme=phosphor] .warning-box{background:transparent;border:1px solid var(--cg-color-warning);color:var(--cg-color-warning);font-size:var(--cg-font-size-sm)}[data-comfygit-theme=phosphor] .warning-box:before{content:"[!] ";font-weight:700}[data-comfygit-theme=phosphor] .warning-box.error{border-color:var(--cg-color-error);color:var(--cg-color-error)}[data-comfygit-theme=phosphor] .issue-card{background:transparent;border:1px solid;box-shadow:var(--cg-shadow-sm);transition:all var(--cg-transition-fast)}[data-comfygit-theme=phosphor] .issue-card:hover{box-shadow:var(--cg-shadow-md)}[data-comfygit-theme=phosphor] .issue-card--warning{border-color:var(--cg-color-warning)}[data-comfygit-theme=phosphor] .issue-card--warning .issue-card__icon,[data-comfygit-theme=phosphor] .issue-card--warning .issue-card__title{text-shadow:0 0 8px var(--cg-color-warning)}[data-comfygit-theme=phosphor] .issue-card--error{border-color:var(--cg-color-error)}[data-comfygit-theme=phosphor] .issue-card--error .issue-card__icon,[data-comfygit-theme=phosphor] .issue-card--error .issue-card__title{text-shadow:0 0 8px var(--cg-color-error)}[data-comfygit-theme=phosphor] .issue-card--info{border-color:var(--cg-color-accent)}[data-comfygit-theme=phosphor] .issue-card--info .issue-card__icon,[data-comfygit-theme=phosphor] .issue-card--info .issue-card__title{text-shadow:0 0 8px var(--cg-color-accent)}[data-comfygit-theme=phosphor] .status-item__icon{display:none}[data-comfygit-theme=phosphor] .status-item:before{content:"├─ ";color:var(--cg-color-border-subtle)}[data-comfygit-theme=phosphor] .status-item.is-separator:before{content:"└─ "}[data-comfygit-theme=phosphor] .status-item__count{font-weight:var(--cg-font-weight-bold)}[data-comfygit-theme=phosphor] .status-item--new .status-item__count{text-shadow:0 0 4px var(--cg-color-success)}[data-comfygit-theme=phosphor] .status-item--modified .status-item__count{text-shadow:0 0 4px var(--cg-color-warning)}[data-comfygit-theme=phosphor] .status-item--deleted .status-item__count{text-shadow:0 0 4px var(--cg-color-error)}[data-comfygit-theme=phosphor] .branch-indicator__label:before{content:"/* ";color:var(--cg-color-text-muted)}[data-comfygit-theme=phosphor] .branch-indicator__label:after{content:" */";color:var(--cg-color-text-muted)}[data-comfygit-theme=phosphor] .branch-indicator__name{font-weight:var(--cg-font-weight-bold);text-shadow:0 0 8px var(--cg-color-accent)}[data-comfygit-theme=phosphor] .branch-indicator__remote{opacity:.7}[data-comfygit-theme=phosphor] .branch-indicator__ahead{text-shadow:0 0 4px var(--cg-color-success)}[data-comfygit-theme=phosphor] .branch-indicator__behind{text-shadow:0 0 4px var(--cg-color-warning)}[data-comfygit-theme=phosphor] .branch-item,[data-comfygit-theme=phosphor] .branch-name{font-size:var(--cg-font-size-base)}[data-comfygit-theme=phosphor] .switch-btn,[data-comfygit-theme=phosphor] .current-label{font-size:var(--cg-font-size-sm)!important;padding:6px 12px!important}[data-comfygit-theme=phosphor] .switch-btn{background:transparent;border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary)}[data-comfygit-theme=phosphor] .switch-btn:hover{border-color:var(--cg-color-accent);color:var(--cg-color-accent);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=phosphor] .current-label{color:var(--cg-color-text-muted);border:1px solid var(--cg-color-border-subtle)}[data-comfygit-theme=phosphor] .history-section{font-size:var(--cg-font-size-base)}[data-comfygit-theme=phosphor] .history-title{color:var(--cg-color-text-muted);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-size:var(--cg-font-size-xs)}[data-comfygit-theme=phosphor] .commit-item{background:transparent;border:none;border-left:2px solid var(--cg-color-border-subtle);padding-left:var(--cg-space-3);margin-left:var(--cg-space-2)}[data-comfygit-theme=phosphor] .commit-item:hover{border-left-color:var(--cg-color-accent);background:var(--cg-color-bg-hover)}[data-comfygit-theme=phosphor] .commit-hash{color:var(--cg-color-accent);font-weight:var(--cg-font-weight-bold);font-size:var(--cg-font-size-sm)}[data-comfygit-theme=phosphor] .commit-hash:before{content:"#"}[data-comfygit-theme=phosphor] .commit-message{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base)}[data-comfygit-theme=phosphor] .commit-date{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}[data-comfygit-theme=phosphor] .panel-footer{border-top:1px solid var(--cg-color-border);background:var(--cg-color-bg-tertiary)}[data-comfygit-theme=phosphor] .export-btn{background:transparent;color:var(--cg-color-text-primary);border:1px solid var(--cg-color-border);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-size:var(--cg-font-size-xs)}[data-comfygit-theme=phosphor] .export-btn:hover:not(:disabled){background:var(--cg-color-bg-hover);border-color:var(--cg-color-accent);color:var(--cg-color-accent);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=phosphor] .commit-popover{background:var(--cg-color-bg-primary);border:2px solid var(--cg-color-border);box-shadow:var(--cg-shadow-lg)}[data-comfygit-theme=phosphor] .commit-input{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)}[data-comfygit-theme=phosphor] .commit-input:focus{border-color:var(--cg-color-accent);box-shadow:var(--cg-shadow-sm);outline:none}[data-comfygit-theme=phosphor] .comfygit-panel-btn{background:var(--cg-color-accent)!important;color:var(--cg-color-bg-primary)!important;border:none!important;text-transform:uppercase;letter-spacing:.1em;font-family:var(--cg-font-mono);font-size:11px;box-shadow:0 0 8px var(--cg-color-accent)!important}[data-comfygit-theme=phosphor] .comfygit-panel-btn:hover{box-shadow:0 0 16px var(--cg-color-accent)!important}[data-comfygit-theme=phosphor] .comfygit-commit-btn{background:var(--cg-color-bg-tertiary)!important;color:var(--cg-color-text-primary)!important;border:1px solid var(--cg-color-border-subtle)!important;font-family:var(--cg-font-mono)}[data-comfygit-theme=phosphor] .comfygit-commit-btn:hover{border-color:var(--cg-color-accent)!important;box-shadow:0 0 8px #00ff414d!important}[data-comfygit-theme=phosphor] .commit-indicator{background:var(--cg-color-warning);box-shadow:0 0 6px var(--cg-color-warning)}[data-comfygit-theme=phosphor] .panel-content::-webkit-scrollbar{width:8px}[data-comfygit-theme=phosphor] .panel-content::-webkit-scrollbar-track{background:var(--cg-color-bg-tertiary)}[data-comfygit-theme=phosphor] .panel-content::-webkit-scrollbar-thumb{background:var(--cg-color-border-subtle);border:1px solid var(--cg-color-bg-tertiary)}[data-comfygit-theme=phosphor] .panel-content::-webkit-scrollbar-thumb:hover{background:var(--cg-color-accent)}[data-comfygit-theme=phosphor] .comfygit-panel ::selection,[data-comfygit-theme=phosphor] .toast ::selection,[data-comfygit-theme=phosphor] .dialog-content ::selection,[data-comfygit-theme=phosphor] .commit-popover ::selection{background:var(--cg-color-accent);color:var(--cg-color-bg-primary)}[data-comfygit-theme=phosphor] .toast{background:var(--cg-color-bg-primary);border:1px solid var(--cg-color-border);font-family:var(--cg-font-mono);box-shadow:var(--cg-shadow-md)}[data-comfygit-theme=phosphor] .toast.info{border-left:3px solid var(--cg-color-info)}[data-comfygit-theme=phosphor] .toast.success{border-left:3px solid var(--cg-color-success)}[data-comfygit-theme=phosphor] .toast.warning{border-left:3px solid var(--cg-color-warning)}[data-comfygit-theme=phosphor] .toast.error{border-left:3px solid var(--cg-color-error)}[data-comfygit-theme=phosphor] .toast-message:before{content:"> ";opacity:.5}[data-comfygit-theme=phosphor] .dialog-content{background:var(--cg-color-bg-primary);border:2px solid var(--cg-color-border);box-shadow:var(--cg-shadow-lg);font-family:var(--cg-font-mono)}[data-comfygit-theme=phosphor] .dialog-title{color:var(--cg-color-accent);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-size:var(--cg-font-size-sm)}[data-comfygit-theme=phosphor] .dialog-title:before{content:"> ";opacity:.7}[data-comfygit-theme=phosphor] .dialog-message{color:var(--cg-color-text-primary)}[data-comfygit-theme=phosphor] .dialog-details{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle)}[data-comfygit-theme=phosphor] .dialog-warning{background:transparent;border:1px solid var(--cg-color-warning);color:var(--cg-color-warning)}[data-comfygit-theme=phosphor] .dialog-btn{font-family:var(--cg-font-mono);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-size:var(--cg-font-size-xs)}[data-comfygit-theme=phosphor] .dialog-btn.cancel{background:transparent;border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary)}[data-comfygit-theme=phosphor] .dialog-btn.cancel:hover{border-color:var(--cg-color-accent);color:var(--cg-color-accent)}[data-comfygit-theme=phosphor] .dialog-btn.primary{background:var(--cg-color-accent);color:var(--cg-color-bg-primary);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=phosphor] .dialog-btn.primary:hover{box-shadow:var(--cg-shadow-md)}[data-comfygit-theme=phosphor] .dialog-btn.primary.destructive{background:var(--cg-color-error)}[data-comfygit-theme=phosphor] .branch-input{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)}[data-comfygit-theme=phosphor] .branch-input:focus{border-color:var(--cg-color-accent);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=phosphor] .action-btn{font-family:var(--cg-font-mono);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-size:var(--cg-font-size-xs)}[data-comfygit-theme=phosphor] .action-btn.create{background:var(--cg-color-accent);color:var(--cg-color-bg-primary);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=phosphor] .action-btn.create:hover:not(:disabled){box-shadow:var(--cg-shadow-md);transform:none}[data-comfygit-theme=phosphor] .action-btn.cancel{background:transparent;border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary)}[data-comfygit-theme=phosphor] .action-btn.cancel:hover{border-color:var(--cg-color-accent);color:var(--cg-color-accent);background:transparent}[data-comfygit-theme=phosphor] .commit-popover{background:var(--cg-color-bg-primary);border:2px solid var(--cg-color-border);box-shadow:var(--cg-shadow-lg);font-family:var(--cg-font-mono)}[data-comfygit-theme=phosphor] .popover-title{color:var(--cg-color-accent);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-size:var(--cg-font-size-sm)}[data-comfygit-theme=phosphor] .popover-title:before{content:"> ";opacity:.7}[data-comfygit-theme=phosphor] .commit-input{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)}[data-comfygit-theme=phosphor] .commit-input:focus{border-color:var(--cg-color-accent);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=phosphor] .commit-input::placeholder{color:var(--cg-color-text-muted)}[data-comfygit-theme=phosphor] .changes-summary{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle)}[data-comfygit-theme=phosphor] .change-item:before{content:"├─ ";color:var(--cg-color-border-subtle);margin-right:4px}[data-comfygit-theme=phosphor] .cancel-btn{font-family:var(--cg-font-mono);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-size:var(--cg-font-size-xs);background:transparent;border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary)}[data-comfygit-theme=phosphor] .cancel-btn:hover{border-color:var(--cg-color-accent);color:var(--cg-color-accent);background:transparent}[data-comfygit-theme=phosphor] .commit-btn{font-family:var(--cg-font-mono);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-size:var(--cg-font-size-xs);background:var(--cg-color-accent);color:var(--cg-color-bg-primary);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=phosphor] .commit-btn:hover:not(:disabled){box-shadow:var(--cg-shadow-md);transform:none}[data-comfygit-theme=phosphor] .result.success{background:transparent;border:1px solid var(--cg-color-success);color:var(--cg-color-success)}[data-comfygit-theme=phosphor] .result.error{background:transparent;border:1px solid var(--cg-color-error);color:var(--cg-color-error)}[data-comfygit-theme=phosphor] .base-modal-content{box-shadow:var(--cg-shadow-xl)}[data-comfygit-theme=phosphor] .base-title.view:before{content:var(--cg-decoration-title-prefix)}[data-comfygit-theme=phosphor] .base-title.section:before{content:var(--cg-decoration-label-prefix)}[data-comfygit-theme=phosphor] .base-title.section:after{content:var(--cg-decoration-label-suffix)}[data-comfygit-theme=phosphor] .base-title.dialog{text-shadow:0 0 8px var(--cg-color-accent)}[data-comfygit-theme=phosphor] .base-btn.primary{background:var(--cg-color-accent);color:var(--cg-color-bg-primary);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=phosphor] .base-btn.primary:hover:not(:disabled){box-shadow:var(--cg-shadow-md);transform:none}[data-comfygit-theme=phosphor] .base-btn.secondary{background:transparent;border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary)}[data-comfygit-theme=phosphor] .base-btn.secondary:hover:not(:disabled){border-color:var(--cg-color-accent);color:var(--cg-color-accent);background:transparent}[data-comfygit-theme=phosphor] .base-tabs{border-bottom-color:var(--cg-color-border)}[data-comfygit-theme=phosphor] .base-tabs__tab{text-shadow:none}[data-comfygit-theme=phosphor] .base-tabs__tab:before{content:""}[data-comfygit-theme=phosphor] .base-tabs__tab.active:before{content:"> ";opacity:.7}[data-comfygit-theme=phosphor] .base-tabs__tab.active{text-shadow:0 0 8px var(--cg-color-accent);border-bottom-color:var(--cg-color-accent);box-shadow:0 2px 8px var(--cg-shadow-accent)}[data-comfygit-theme=phosphor] .base-tabs__tab:hover:not(.disabled):not(.active){color:var(--cg-color-accent);text-shadow:0 0 4px var(--cg-color-accent)}', rT = { - comfy: lT, - phosphor: iT +}), iT = /* @__PURE__ */ pe(lT, [["__scopeId", "data-v-60751cfa"]]), rT = '@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";[data-comfygit-theme=comfy]{--cg-font-display: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--cg-font-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--cg-font-mono: ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, monospace;--cg-font-size-xs: 14.3px;--cg-font-size-sm: 16.9px;--cg-font-size-base: 18.2px;--cg-font-size-lg: 20.8px;--cg-font-size-xl: 23.4px;--cg-font-size-2xl: 26px;--cg-font-weight-normal: 400;--cg-font-weight-medium: 500;--cg-font-weight-semibold: 600;--cg-font-weight-bold: 700;--cg-panel-width: 884px;--cg-space-1: 5.2px;--cg-space-2: 10.4px;--cg-space-3: 15.6px;--cg-space-4: 20.8px;--cg-space-5: 26px;--cg-space-6: 31.2px;--cg-space-8: 41.6px;--cg-space-10: 52px;--cg-space-12: 62.4px;--cg-letter-spacing-normal: 0;--cg-letter-spacing-wide: .025em;--cg-transition-fast: .15s ease;--cg-transition-base: .2s ease;--cg-transition-slow: .3s ease;--cg-color-bg-primary: #2d2e32;--cg-color-bg-secondary: #262729;--cg-color-bg-tertiary: #202121;--cg-color-bg-hover: #3c3d42;--cg-color-bg-overlay: rgba(0, 0, 0, .75);--cg-color-text-primary: #ffffff;--cg-color-text-secondary: #c5c5c5;--cg-color-text-muted: #8a8a8a;--cg-color-text-inverse: #000000;--cg-color-border: #55565e;--cg-color-border-subtle: #3c3d42;--cg-color-border-strong: #828282;--cg-color-accent: #31b9f4;--cg-color-accent-hover: #0b8ce9;--cg-color-accent-muted: rgba(49, 185, 244, .15);--cg-color-success: #47e469;--cg-color-success-muted: rgba(71, 228, 105, .15);--cg-color-warning: #fcbf64;--cg-color-warning-muted: rgba(252, 191, 100, .15);--cg-color-error: #dd424e;--cg-color-error-muted: rgba(221, 66, 78, .15);--cg-color-info: #31b9f4;--cg-color-info-muted: rgba(49, 185, 244, .15);--cg-radius-none: 0;--cg-radius-sm: 4px;--cg-radius-md: 6px;--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, .3);--cg-shadow-md: 0 2px 8px rgba(0, 0, 0, .4);--cg-shadow-lg: 0 4px 16px rgba(0, 0, 0, .5);--cg-shadow-xl: 0 8px 32px rgba(0, 0, 0, .6);--cg-btn-gradient-start: #31b9f4;--cg-btn-gradient-end: #0b8ce9;--cg-btn-shadow-inset: inset 0 1px 0 rgba(255, 255, 255, .1);--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(49, 185, 244, .3);--cg-shadow-accent-strong: rgba(49, 185, 244, .5);--cg-shadow-error: rgba(221, 66, 78, .3);--cg-shadow-success: rgba(71, 228, 105, .3);--cg-text-shadow-title: none;--cg-text-shadow-accent: none}[data-comfygit-theme=comfy] .comfygit-panel{box-shadow:var(--cg-shadow-lg);border:1px solid var(--cg-color-border-subtle)}[data-comfygit-theme=comfy] .sidebar{background:var(--cg-color-bg-secondary);border-right:1px solid var(--cg-color-border-subtle)}[data-comfygit-theme=comfy] .sidebar-item{border-radius:var(--cg-radius-md);transition:background var(--cg-transition-fast),color var(--cg-transition-fast)}[data-comfygit-theme=comfy] .sidebar-item:hover{background:var(--cg-color-bg-hover)}[data-comfygit-theme=comfy] .sidebar-item.active{background:var(--cg-color-accent-muted);color:var(--cg-color-accent);font-weight:var(--cg-font-weight-medium)}[data-comfygit-theme=comfy] button{border-radius:var(--cg-radius-md)}[data-comfygit-theme=comfy] .icon-btn{border-radius:var(--cg-radius-md);transition:all var(--cg-transition-fast)}[data-comfygit-theme=comfy] .icon-btn:hover{background:var(--cg-color-bg-hover)}[data-comfygit-theme=comfy] .status-grid{border-radius:var(--cg-radius-lg);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=comfy] .issue-card{border-radius:var(--cg-radius-lg);box-shadow:var(--cg-shadow-sm);transition:all var(--cg-transition-fast)}[data-comfygit-theme=comfy] .issue-card:hover{box-shadow:var(--cg-shadow-md)}[data-comfygit-theme=comfy] .issue-card--warning,[data-comfygit-theme=comfy] .issue-card--error,[data-comfygit-theme=comfy] .issue-card--info{border-left-width:4px}[data-comfygit-theme=comfy] .branch-indicator{border-radius:var(--cg-radius-md)}[data-comfygit-theme=comfy] .branch-indicator__name{font-weight:var(--cg-font-weight-semibold)}[data-comfygit-theme=comfy] .commit-list{border-radius:var(--cg-radius-md)}[data-comfygit-theme=comfy] .commit-item{transition:all var(--cg-transition-fast)}[data-comfygit-theme=comfy] .commit-item:hover{background:var(--cg-color-bg-hover)}[data-comfygit-theme=comfy] .branch-item,[data-comfygit-theme=comfy] .branch-list-item{border-radius:var(--cg-radius-md);transition:all var(--cg-transition-fast)}[data-comfygit-theme=comfy] .branch-item:hover,[data-comfygit-theme=comfy] .branch-list-item:hover{background:var(--cg-color-bg-hover)}[data-comfygit-theme=comfy] .branch-list{border-radius:var(--cg-radius-md);overflow:hidden}[data-comfygit-theme=comfy] .branch-create-form,[data-comfygit-theme=comfy] .create-form{border-radius:var(--cg-radius-md);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=comfy] .text-input{border-radius:var(--cg-radius-md)}[data-comfygit-theme=comfy] input[type=text],[data-comfygit-theme=comfy] textarea{border-radius:var(--cg-radius-md);border:1px solid var(--cg-color-border);transition:border-color var(--cg-transition-fast),box-shadow var(--cg-transition-fast)}[data-comfygit-theme=comfy] input[type=text]:focus,[data-comfygit-theme=comfy] textarea:focus{border-color:var(--cg-color-accent);box-shadow:0 0 0 3px var(--cg-color-accent-muted)}[data-comfygit-theme=comfy] .dialog-content{border-radius:var(--cg-radius-xl);box-shadow:var(--cg-shadow-xl);border:1px solid var(--cg-color-border-subtle)}[data-comfygit-theme=comfy] .status-badge{border-radius:var(--cg-radius-sm);font-size:var(--cg-font-size-xs);font-weight:var(--cg-font-weight-medium);padding:2px 8px}[data-comfygit-theme=comfy] .warning-box{border-radius:var(--cg-radius-md);border-left:4px solid var(--cg-color-warning);background:var(--cg-color-warning-muted)}[data-comfygit-theme=comfy] .env-switcher-btn{border-radius:var(--cg-radius-md);transition:all var(--cg-transition-fast)}[data-comfygit-theme=comfy] .env-switcher-btn:hover{background:var(--cg-color-bg-hover);transform:translateY(-1px);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=comfy] .section-title{font-weight:var(--cg-font-weight-semibold);letter-spacing:var(--cg-letter-spacing-wide);color:var(--cg-color-text-secondary)}[data-comfygit-theme=comfy] .commit-hash,[data-comfygit-theme=comfy] .branch-name-mono,[data-comfygit-theme=comfy] .file-path{font-family:var(--cg-font-mono)}[data-comfygit-theme=comfy] .settings-section{border-radius:var(--cg-radius-md);background:var(--cg-color-bg-secondary)}[data-comfygit-theme=comfy] .setting-row{transition:background var(--cg-transition-fast)}[data-comfygit-theme=comfy] .setting-row:hover{background:var(--cg-color-bg-hover)}[data-comfygit-theme=comfy] .toggle-slider{border-radius:var(--cg-radius-full)}[data-comfygit-theme=comfy] .commit-hash{color:var(--cg-color-accent);font-weight:var(--cg-font-weight-medium)}[data-comfygit-theme=comfy] .status-dot.success{background:var(--cg-color-success)}[data-comfygit-theme=comfy] .status-dot.warning{background:var(--cg-color-warning)}[data-comfygit-theme=comfy] .status-dot.error{background:var(--cg-color-error)}[data-comfygit-theme=comfy] ::-webkit-scrollbar{width:8px;height:8px}[data-comfygit-theme=comfy] ::-webkit-scrollbar-track{background:var(--cg-color-bg-secondary)}[data-comfygit-theme=comfy] ::-webkit-scrollbar-thumb{background:var(--cg-color-border);border-radius:var(--cg-radius-sm)}[data-comfygit-theme=comfy] ::-webkit-scrollbar-thumb:hover{background:var(--cg-color-border-strong)}[data-comfygit-theme=comfy] .view-title:before,[data-comfygit-theme=comfy] .panel-title:before,[data-comfygit-theme=comfy] .section-title:before{content:""}[data-comfygit-theme=comfy] .status-dot{width:8px;height:8px;border-radius:50%;animation:none}[data-comfygit-theme=comfy] .env-switcher-label{font-weight:var(--cg-font-weight-semibold)}[data-comfygit-theme=comfy] .panel-title,[data-comfygit-theme=comfy] .view-title{text-shadow:none}[data-comfygit-theme=comfy] .log-level{border-radius:var(--cg-radius-sm);font-weight:var(--cg-font-weight-semibold)}[data-comfygit-theme=comfy] .log-item{border-radius:var(--cg-radius-md);transition:all var(--cg-transition-fast);margin-bottom:var(--cg-space-1)}[data-comfygit-theme=comfy] .log-item:hover{background:var(--cg-color-bg-hover)}[data-comfygit-theme=comfy] .log-item__context{border-radius:var(--cg-radius-sm);font-weight:var(--cg-font-weight-medium)}[data-comfygit-theme=comfy] .log-filter-bar{border-radius:var(--cg-radius-md);background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle);margin-bottom:var(--cg-space-3)}[data-comfygit-theme=comfy] .filter-option{border-radius:var(--cg-radius-sm);transition:all var(--cg-transition-fast)}[data-comfygit-theme=comfy] .filter-option:hover{transform:translateY(-1px);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=comfy] .filter-option.active{box-shadow:0 0 8px var(--cg-shadow-accent)}[data-comfygit-theme=comfy] .log-list{border-radius:var(--cg-radius-md);overflow:hidden}[data-comfygit-theme=comfy] .remote-form{border-radius:var(--cg-radius-md);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=comfy] .remote-url-display{background:var(--cg-color-bg-secondary);padding:var(--cg-space-1) var(--cg-space-2);border-radius:var(--cg-radius-sm)}[data-comfygit-theme=comfy] .default-badge,[data-comfygit-theme=comfy] .copy-btn{border-radius:var(--cg-radius-sm)}[data-comfygit-theme=comfy] .file-path,[data-comfygit-theme=comfy] .export-warning{border-radius:var(--cg-radius-md)}[data-comfygit-theme=comfy] .file-drop-zone{border-radius:var(--cg-radius-lg);transition:all var(--cg-transition-base)}[data-comfygit-theme=comfy] .file-drop-zone.drop-active{transform:scale(1.01)}[data-comfygit-theme=comfy] .file-drop-zone.has-file{border-radius:var(--cg-radius-md)}[data-comfygit-theme=comfy] .import-preview,[data-comfygit-theme=comfy] .import-options{border-radius:var(--cg-radius-lg);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=comfy] .option-item{border-radius:var(--cg-radius-md)}[data-comfygit-theme=comfy] .option-item:hover{transform:translate(2px)}[data-comfygit-theme=comfy] .selected-file-bar{border-radius:var(--cg-radius-md);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=comfy] .import-help{border-radius:var(--cg-radius-lg);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=comfy] .help-number{border-radius:var(--cg-radius-md);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=comfy] .progress-bar{border-radius:var(--cg-radius-full);overflow:hidden}[data-comfygit-theme=comfy] .progress-bar-fill{border-radius:var(--cg-radius-full);box-shadow:0 0 8px var(--cg-shadow-accent-strong)}[data-comfygit-theme=comfy] .complete-icon.success{box-shadow:0 0 16px var(--cg-shadow-success)}[data-comfygit-theme=comfy] .complete-icon.error{box-shadow:0 0 16px var(--cg-shadow-error)}[data-comfygit-theme=comfy] .base-tabs{border-bottom-color:var(--cg-color-border-subtle)}[data-comfygit-theme=comfy] .base-tabs__tab{border-radius:var(--cg-radius-sm) var(--cg-radius-sm) 0 0}[data-comfygit-theme=comfy] .base-tabs__tab:hover:not(.disabled){background:var(--cg-color-bg-hover)}[data-comfygit-theme=comfy] .base-tabs__tab.active{background:var(--cg-color-accent-muted)}', cT = '@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600;700&display=swap";[data-comfygit-theme=phosphor]{--cg-font-display: "IBM Plex Mono", ui-monospace, monospace;--cg-font-body: "IBM Plex Mono", ui-monospace, monospace;--cg-font-mono: "IBM Plex Mono", ui-monospace, monospace;--cg-font-size-xs: 15.6px;--cg-font-size-sm: 18.2px;--cg-font-size-base: 22.1px;--cg-font-size-lg: 26px;--cg-font-size-xl: 31.2px;--cg-font-size-2xl: 36.4px;--cg-panel-width: 980px;--cg-space-1: 5.2px;--cg-space-2: 10.4px;--cg-space-3: 15.6px;--cg-space-4: 20.8px;--cg-space-5: 26px;--cg-space-6: 31.2px;--cg-space-8: 41.6px;--cg-space-10: 52px;--cg-space-12: 62.4px;--cg-letter-spacing-normal: .02em;--cg-letter-spacing-wide: .08em;--cg-color-bg-primary: #0a0a0a;--cg-color-bg-secondary: #050505;--cg-color-bg-tertiary: #000000;--cg-color-bg-hover: #0f1f0f;--cg-color-bg-overlay: rgba(0, 0, 0, .85);--cg-color-text-primary: #00ff41;--cg-color-text-secondary: #00cc33;--cg-color-text-muted: #008f11;--cg-color-text-inverse: #000000;--cg-color-border: #00ff41;--cg-color-border-subtle: #003b00;--cg-color-border-strong: #00ff41;--cg-color-accent: #00ff41;--cg-color-accent-hover: #39ff14;--cg-color-accent-muted: rgba(0, 255, 65, .15);--cg-color-success: #00ff41;--cg-color-success-muted: rgba(0, 255, 65, .2);--cg-color-warning: #ffff00;--cg-color-warning-muted: rgba(255, 255, 0, .15);--cg-color-error: #ff0040;--cg-color-error-muted: rgba(255, 0, 64, .15);--cg-color-info: #00ffff;--cg-color-info-muted: rgba(0, 255, 255, .15);--cg-radius-none: 0;--cg-radius-sm: 0;--cg-radius-md: 0;--cg-radius-lg: 0;--cg-radius-xl: 0;--cg-radius-2xl: 0;--cg-radius-full: 0;--cg-shadow-sm: 0 0 4px rgba(0, 255, 65, .3);--cg-shadow-md: 0 0 8px rgba(0, 255, 65, .4);--cg-shadow-lg: 0 0 16px rgba(0, 255, 65, .5);--cg-shadow-xl: 0 0 32px rgba(0, 255, 65, .6);--cg-btn-gradient-start: #00ff41;--cg-btn-gradient-end: #00cc33;--cg-btn-shadow-inset: none;--cg-decoration-title-prefix: "> ";--cg-decoration-label-prefix: "/* ";--cg-decoration-label-suffix: " */";--cg-decoration-status-animation: cursor-blink 1s step-end infinite;--cg-decoration-status-shape: cursor;--cg-shadow-accent: rgba(0, 255, 65, .3);--cg-shadow-accent-strong: rgba(0, 255, 65, .5);--cg-shadow-error: rgba(255, 0, 64, .3);--cg-shadow-success: rgba(0, 255, 65, .3);--cg-text-shadow-title: 0 0 8px var(--cg-color-accent);--cg-text-shadow-accent: 0 0 8px var(--cg-color-accent)}[data-comfygit-theme=phosphor] .comfygit-panel{position:relative;overflow:hidden}[data-comfygit-theme=phosphor] .comfygit-panel:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,0,0,.15) 2px,rgba(0,0,0,.15) 3px);pointer-events:none;z-index:100}[data-comfygit-theme=phosphor] .comfygit-panel:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:#00ff4105;pointer-events:none;animation:phosphor-flicker 4s infinite;z-index:99}@keyframes phosphor-flicker{0%,to{opacity:1}50%{opacity:.98}52%{opacity:1}54%{opacity:.96}56%{opacity:1}}[data-comfygit-theme=phosphor] .comfygit-panel{background:var(--cg-color-bg-primary);border:2px solid var(--cg-color-border);box-shadow:var(--cg-shadow-lg),inset 0 0 100px #00ff4108;font-family:var(--cg-font-mono)}[data-comfygit-theme=phosphor] .panel-title{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)}[data-comfygit-theme=phosphor] .panel-title:before{content:var(--cg-decoration-title-prefix);opacity:.7}[data-comfygit-theme=phosphor] .view-title{text-shadow:0 0 8px var(--cg-color-accent)}[data-comfygit-theme=phosphor] .view-title:before{content:var(--cg-decoration-title-prefix);opacity:.7}[data-comfygit-theme=phosphor] .env-name,[data-comfygit-theme=phosphor] .branch-name{color:var(--cg-color-text-secondary);font-size:var(--cg-font-size-xs)}[data-comfygit-theme=phosphor] .branch-name:before{content:"@";margin-right:2px}[data-comfygit-theme=phosphor] .env-switcher-label:before{content:var(--cg-decoration-label-prefix)}[data-comfygit-theme=phosphor] .env-switcher-label:after{content:var(--cg-decoration-label-suffix)}[data-comfygit-theme=phosphor] .group-title:before{content:var(--cg-decoration-label-prefix)}[data-comfygit-theme=phosphor] .group-title:after{content:var(--cg-decoration-label-suffix)}[data-comfygit-theme=phosphor] .status-dot{width:6px;height:12px;border-radius:0;animation:var(--cg-decoration-status-animation)}[data-comfygit-theme=phosphor] .status-dot.success{background:var(--cg-color-success)}[data-comfygit-theme=phosphor] .status-dot.warning{background:var(--cg-color-warning)}[data-comfygit-theme=phosphor] .status-dot.error{background:var(--cg-color-error)}@keyframes cursor-blink{50%{opacity:0}}[data-comfygit-theme=phosphor] .icon-btn{color:var(--cg-color-text-primary);border:1px solid transparent}[data-comfygit-theme=phosphor] .icon-btn:hover{background:var(--cg-color-bg-hover);border-color:var(--cg-color-border-subtle)}[data-comfygit-theme=phosphor] .status-section{margin-bottom:var(--cg-space-4)}[data-comfygit-theme=phosphor] .section-title{color:var(--cg-color-accent);font-size:var(--cg-font-size-xs);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);text-shadow:0 0 8px var(--cg-color-accent);margin-bottom:var(--cg-space-2)}[data-comfygit-theme=phosphor] .section-title:before{content:"> ";opacity:.7}[data-comfygit-theme=phosphor] .count{font-size:var(--cg-font-size-base)}[data-comfygit-theme=phosphor] .status-grid{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle)}[data-comfygit-theme=phosphor] .column-title{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-xs);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wider)}[data-comfygit-theme=phosphor] .column-title:before{content:"/* "}[data-comfygit-theme=phosphor] .column-title:after{content:" */"}[data-comfygit-theme=phosphor] .status-item{font-size:var(--cg-font-size-sm)}[data-comfygit-theme=phosphor] .status-item .icon{display:none}[data-comfygit-theme=phosphor] .synced-item:before{content:"└─ "}[data-comfygit-theme=phosphor] .count{font-weight:var(--cg-font-weight-bold)}[data-comfygit-theme=phosphor] .count.new{color:var(--cg-color-success);text-shadow:0 0 4px var(--cg-color-success)}[data-comfygit-theme=phosphor] .count.modified{color:var(--cg-color-warning);text-shadow:0 0 4px var(--cg-color-warning)}[data-comfygit-theme=phosphor] .count.deleted{color:var(--cg-color-error);text-shadow:0 0 4px var(--cg-color-error)}[data-comfygit-theme=phosphor] .count.synced{color:var(--cg-color-text-muted)}[data-comfygit-theme=phosphor] .warning-box{background:transparent;border:1px solid var(--cg-color-warning);color:var(--cg-color-warning);font-size:var(--cg-font-size-sm)}[data-comfygit-theme=phosphor] .warning-box:before{content:"[!] ";font-weight:700}[data-comfygit-theme=phosphor] .warning-box.error{border-color:var(--cg-color-error);color:var(--cg-color-error)}[data-comfygit-theme=phosphor] .issue-card{background:transparent;border:1px solid;box-shadow:var(--cg-shadow-sm);transition:all var(--cg-transition-fast)}[data-comfygit-theme=phosphor] .issue-card:hover{box-shadow:var(--cg-shadow-md)}[data-comfygit-theme=phosphor] .issue-card--warning{border-color:var(--cg-color-warning)}[data-comfygit-theme=phosphor] .issue-card--warning .issue-card__icon,[data-comfygit-theme=phosphor] .issue-card--warning .issue-card__title{text-shadow:0 0 8px var(--cg-color-warning)}[data-comfygit-theme=phosphor] .issue-card--error{border-color:var(--cg-color-error)}[data-comfygit-theme=phosphor] .issue-card--error .issue-card__icon,[data-comfygit-theme=phosphor] .issue-card--error .issue-card__title{text-shadow:0 0 8px var(--cg-color-error)}[data-comfygit-theme=phosphor] .issue-card--info{border-color:var(--cg-color-accent)}[data-comfygit-theme=phosphor] .issue-card--info .issue-card__icon,[data-comfygit-theme=phosphor] .issue-card--info .issue-card__title{text-shadow:0 0 8px var(--cg-color-accent)}[data-comfygit-theme=phosphor] .status-item__icon{display:none}[data-comfygit-theme=phosphor] .status-item:before{content:"├─ ";color:var(--cg-color-border-subtle)}[data-comfygit-theme=phosphor] .status-item.is-separator:before{content:"└─ "}[data-comfygit-theme=phosphor] .status-item__count{font-weight:var(--cg-font-weight-bold)}[data-comfygit-theme=phosphor] .status-item--new .status-item__count{text-shadow:0 0 4px var(--cg-color-success)}[data-comfygit-theme=phosphor] .status-item--modified .status-item__count{text-shadow:0 0 4px var(--cg-color-warning)}[data-comfygit-theme=phosphor] .status-item--deleted .status-item__count{text-shadow:0 0 4px var(--cg-color-error)}[data-comfygit-theme=phosphor] .branch-indicator__label:before{content:"/* ";color:var(--cg-color-text-muted)}[data-comfygit-theme=phosphor] .branch-indicator__label:after{content:" */";color:var(--cg-color-text-muted)}[data-comfygit-theme=phosphor] .branch-indicator__name{font-weight:var(--cg-font-weight-bold);text-shadow:0 0 8px var(--cg-color-accent)}[data-comfygit-theme=phosphor] .branch-indicator__remote{opacity:.7}[data-comfygit-theme=phosphor] .branch-indicator__ahead{text-shadow:0 0 4px var(--cg-color-success)}[data-comfygit-theme=phosphor] .branch-indicator__behind{text-shadow:0 0 4px var(--cg-color-warning)}[data-comfygit-theme=phosphor] .branch-item,[data-comfygit-theme=phosphor] .branch-name{font-size:var(--cg-font-size-base)}[data-comfygit-theme=phosphor] .switch-btn,[data-comfygit-theme=phosphor] .current-label{font-size:var(--cg-font-size-sm)!important;padding:6px 12px!important}[data-comfygit-theme=phosphor] .switch-btn{background:transparent;border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary)}[data-comfygit-theme=phosphor] .switch-btn:hover{border-color:var(--cg-color-accent);color:var(--cg-color-accent);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=phosphor] .current-label{color:var(--cg-color-text-muted);border:1px solid var(--cg-color-border-subtle)}[data-comfygit-theme=phosphor] .history-section{font-size:var(--cg-font-size-base)}[data-comfygit-theme=phosphor] .history-title{color:var(--cg-color-text-muted);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-size:var(--cg-font-size-xs)}[data-comfygit-theme=phosphor] .commit-item{background:transparent;border:none;border-left:2px solid var(--cg-color-border-subtle);padding-left:var(--cg-space-3);margin-left:var(--cg-space-2)}[data-comfygit-theme=phosphor] .commit-item:hover{border-left-color:var(--cg-color-accent);background:var(--cg-color-bg-hover)}[data-comfygit-theme=phosphor] .commit-hash{color:var(--cg-color-accent);font-weight:var(--cg-font-weight-bold);font-size:var(--cg-font-size-sm)}[data-comfygit-theme=phosphor] .commit-hash:before{content:"#"}[data-comfygit-theme=phosphor] .commit-message{color:var(--cg-color-text-primary);font-size:var(--cg-font-size-base)}[data-comfygit-theme=phosphor] .commit-date{color:var(--cg-color-text-muted);font-size:var(--cg-font-size-sm)}[data-comfygit-theme=phosphor] .panel-footer{border-top:1px solid var(--cg-color-border);background:var(--cg-color-bg-tertiary)}[data-comfygit-theme=phosphor] .export-btn{background:transparent;color:var(--cg-color-text-primary);border:1px solid var(--cg-color-border);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-size:var(--cg-font-size-xs)}[data-comfygit-theme=phosphor] .export-btn:hover:not(:disabled){background:var(--cg-color-bg-hover);border-color:var(--cg-color-accent);color:var(--cg-color-accent);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=phosphor] .commit-popover{background:var(--cg-color-bg-primary);border:2px solid var(--cg-color-border);box-shadow:var(--cg-shadow-lg)}[data-comfygit-theme=phosphor] .commit-input{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)}[data-comfygit-theme=phosphor] .commit-input:focus{border-color:var(--cg-color-accent);box-shadow:var(--cg-shadow-sm);outline:none}[data-comfygit-theme=phosphor] .comfygit-panel-btn{background:var(--cg-color-accent)!important;color:var(--cg-color-bg-primary)!important;border:none!important;text-transform:uppercase;letter-spacing:.1em;font-family:var(--cg-font-mono);font-size:11px;box-shadow:0 0 8px var(--cg-color-accent)!important}[data-comfygit-theme=phosphor] .comfygit-panel-btn:hover{box-shadow:0 0 16px var(--cg-color-accent)!important}[data-comfygit-theme=phosphor] .comfygit-commit-btn{background:var(--cg-color-bg-tertiary)!important;color:var(--cg-color-text-primary)!important;border:1px solid var(--cg-color-border-subtle)!important;font-family:var(--cg-font-mono)}[data-comfygit-theme=phosphor] .comfygit-commit-btn:hover{border-color:var(--cg-color-accent)!important;box-shadow:0 0 8px #00ff414d!important}[data-comfygit-theme=phosphor] .commit-indicator{background:var(--cg-color-warning);box-shadow:0 0 6px var(--cg-color-warning)}[data-comfygit-theme=phosphor] .panel-content::-webkit-scrollbar{width:8px}[data-comfygit-theme=phosphor] .panel-content::-webkit-scrollbar-track{background:var(--cg-color-bg-tertiary)}[data-comfygit-theme=phosphor] .panel-content::-webkit-scrollbar-thumb{background:var(--cg-color-border-subtle);border:1px solid var(--cg-color-bg-tertiary)}[data-comfygit-theme=phosphor] .panel-content::-webkit-scrollbar-thumb:hover{background:var(--cg-color-accent)}[data-comfygit-theme=phosphor] .comfygit-panel ::selection,[data-comfygit-theme=phosphor] .toast ::selection,[data-comfygit-theme=phosphor] .dialog-content ::selection,[data-comfygit-theme=phosphor] .commit-popover ::selection{background:var(--cg-color-accent);color:var(--cg-color-bg-primary)}[data-comfygit-theme=phosphor] .toast{background:var(--cg-color-bg-primary);border:1px solid var(--cg-color-border);font-family:var(--cg-font-mono);box-shadow:var(--cg-shadow-md)}[data-comfygit-theme=phosphor] .toast.info{border-left:3px solid var(--cg-color-info)}[data-comfygit-theme=phosphor] .toast.success{border-left:3px solid var(--cg-color-success)}[data-comfygit-theme=phosphor] .toast.warning{border-left:3px solid var(--cg-color-warning)}[data-comfygit-theme=phosphor] .toast.error{border-left:3px solid var(--cg-color-error)}[data-comfygit-theme=phosphor] .toast-message:before{content:"> ";opacity:.5}[data-comfygit-theme=phosphor] .dialog-content{background:var(--cg-color-bg-primary);border:2px solid var(--cg-color-border);box-shadow:var(--cg-shadow-lg);font-family:var(--cg-font-mono)}[data-comfygit-theme=phosphor] .dialog-title{color:var(--cg-color-accent);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-size:var(--cg-font-size-sm)}[data-comfygit-theme=phosphor] .dialog-title:before{content:"> ";opacity:.7}[data-comfygit-theme=phosphor] .dialog-message{color:var(--cg-color-text-primary)}[data-comfygit-theme=phosphor] .dialog-details{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle)}[data-comfygit-theme=phosphor] .dialog-warning{background:transparent;border:1px solid var(--cg-color-warning);color:var(--cg-color-warning)}[data-comfygit-theme=phosphor] .dialog-btn{font-family:var(--cg-font-mono);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-size:var(--cg-font-size-xs)}[data-comfygit-theme=phosphor] .dialog-btn.cancel{background:transparent;border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary)}[data-comfygit-theme=phosphor] .dialog-btn.cancel:hover{border-color:var(--cg-color-accent);color:var(--cg-color-accent)}[data-comfygit-theme=phosphor] .dialog-btn.primary{background:var(--cg-color-accent);color:var(--cg-color-bg-primary);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=phosphor] .dialog-btn.primary:hover{box-shadow:var(--cg-shadow-md)}[data-comfygit-theme=phosphor] .dialog-btn.primary.destructive{background:var(--cg-color-error)}[data-comfygit-theme=phosphor] .branch-input{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)}[data-comfygit-theme=phosphor] .branch-input:focus{border-color:var(--cg-color-accent);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=phosphor] .action-btn{font-family:var(--cg-font-mono);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-size:var(--cg-font-size-xs)}[data-comfygit-theme=phosphor] .action-btn.create{background:var(--cg-color-accent);color:var(--cg-color-bg-primary);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=phosphor] .action-btn.create:hover:not(:disabled){box-shadow:var(--cg-shadow-md);transform:none}[data-comfygit-theme=phosphor] .action-btn.cancel{background:transparent;border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary)}[data-comfygit-theme=phosphor] .action-btn.cancel:hover{border-color:var(--cg-color-accent);color:var(--cg-color-accent);background:transparent}[data-comfygit-theme=phosphor] .commit-popover{background:var(--cg-color-bg-primary);border:2px solid var(--cg-color-border);box-shadow:var(--cg-shadow-lg);font-family:var(--cg-font-mono)}[data-comfygit-theme=phosphor] .popover-title{color:var(--cg-color-accent);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-size:var(--cg-font-size-sm)}[data-comfygit-theme=phosphor] .popover-title:before{content:"> ";opacity:.7}[data-comfygit-theme=phosphor] .commit-input{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)}[data-comfygit-theme=phosphor] .commit-input:focus{border-color:var(--cg-color-accent);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=phosphor] .commit-input::placeholder{color:var(--cg-color-text-muted)}[data-comfygit-theme=phosphor] .changes-summary{background:var(--cg-color-bg-tertiary);border:1px solid var(--cg-color-border-subtle)}[data-comfygit-theme=phosphor] .change-item:before{content:"├─ ";color:var(--cg-color-border-subtle);margin-right:4px}[data-comfygit-theme=phosphor] .cancel-btn{font-family:var(--cg-font-mono);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-size:var(--cg-font-size-xs);background:transparent;border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary)}[data-comfygit-theme=phosphor] .cancel-btn:hover{border-color:var(--cg-color-accent);color:var(--cg-color-accent);background:transparent}[data-comfygit-theme=phosphor] .commit-btn{font-family:var(--cg-font-mono);text-transform:uppercase;letter-spacing:var(--cg-letter-spacing-wide);font-size:var(--cg-font-size-xs);background:var(--cg-color-accent);color:var(--cg-color-bg-primary);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=phosphor] .commit-btn:hover:not(:disabled){box-shadow:var(--cg-shadow-md);transform:none}[data-comfygit-theme=phosphor] .result.success{background:transparent;border:1px solid var(--cg-color-success);color:var(--cg-color-success)}[data-comfygit-theme=phosphor] .result.error{background:transparent;border:1px solid var(--cg-color-error);color:var(--cg-color-error)}[data-comfygit-theme=phosphor] .base-modal-content{box-shadow:var(--cg-shadow-xl)}[data-comfygit-theme=phosphor] .base-title.view:before{content:var(--cg-decoration-title-prefix)}[data-comfygit-theme=phosphor] .base-title.section:before{content:var(--cg-decoration-label-prefix)}[data-comfygit-theme=phosphor] .base-title.section:after{content:var(--cg-decoration-label-suffix)}[data-comfygit-theme=phosphor] .base-title.dialog{text-shadow:0 0 8px var(--cg-color-accent)}[data-comfygit-theme=phosphor] .base-btn.primary{background:var(--cg-color-accent);color:var(--cg-color-bg-primary);box-shadow:var(--cg-shadow-sm)}[data-comfygit-theme=phosphor] .base-btn.primary:hover:not(:disabled){box-shadow:var(--cg-shadow-md);transform:none}[data-comfygit-theme=phosphor] .base-btn.secondary{background:transparent;border:1px solid var(--cg-color-border);color:var(--cg-color-text-primary)}[data-comfygit-theme=phosphor] .base-btn.secondary:hover:not(:disabled){border-color:var(--cg-color-accent);color:var(--cg-color-accent);background:transparent}[data-comfygit-theme=phosphor] .base-tabs{border-bottom-color:var(--cg-color-border)}[data-comfygit-theme=phosphor] .base-tabs__tab{text-shadow:none}[data-comfygit-theme=phosphor] .base-tabs__tab:before{content:""}[data-comfygit-theme=phosphor] .base-tabs__tab.active:before{content:"> ";opacity:.7}[data-comfygit-theme=phosphor] .base-tabs__tab.active{text-shadow:0 0 8px var(--cg-color-accent);border-bottom-color:var(--cg-color-accent);box-shadow:0 2px 8px var(--cg-shadow-accent)}[data-comfygit-theme=phosphor] .base-tabs__tab:hover:not(.disabled):not(.active){color:var(--cg-color-accent);text-shadow:0 0 4px var(--cg-color-accent)}', uT = { + comfy: rT, + phosphor: cT }, Xa = "comfy", Or = "comfygit-theme"; let Ks = null, Nr = Xa; -function cT() { +function dT() { try { const e = localStorage.getItem(Or); if (e && (e === "comfy" || e === "phosphor")) @@ -22000,20 +22006,20 @@ function cT() { return Xa; } function Ar(e = Xa) { - Ks && Ks.remove(), Ks = document.createElement("style"), Ks.id = "comfygit-theme-styles", Ks.setAttribute("data-theme", e), Ks.textContent = rT[e], document.head.appendChild(Ks), document.body.setAttribute("data-comfygit-theme", e), Nr = e; + Ks && Ks.remove(), Ks = document.createElement("style"), Ks.id = "comfygit-theme-styles", Ks.setAttribute("data-theme", e), Ks.textContent = uT[e], document.head.appendChild(Ks), document.body.setAttribute("data-comfygit-theme", e), Nr = e; try { localStorage.setItem(Or, e); } catch { } console.log(`[ComfyGit] Applied theme: ${e}`); } -function uT() { +function fT() { return Nr; } -function dT(e) { +function mT(e) { Ar(e); } -function fT(e) { +function vT(e) { var i; const { ui_id: t, state: o } = e || {}, n = (o == null ? void 0 : o.history) || {}; if (!t) @@ -22025,14 +22031,14 @@ const Qa = document.createElement("link"); Qa.rel = "stylesheet"; Qa.href = new URL("./comfygit-panel.css", import.meta.url).href; document.head.appendChild(Qa); -const mT = cT(); -Ar(mT); +const pT = dT(); +Ar(pT); window.ComfyGit = { setTheme: (e) => { - console.log(`[ComfyGit] Switching to theme: ${e}`), dT(e); + console.log(`[ComfyGit] Switching to theme: ${e}`), mT(e); }, getTheme: () => { - const e = uT(); + const e = fT(); return console.log(`[ComfyGit] Current theme: ${e}`), e; } }; @@ -22070,7 +22076,7 @@ function xa() { return; } } -function vT() { +function gT() { if (!vo.value) return !1; const e = vo.value.workflows; return e.new.length > 0 || e.modified.length > 0 || e.deleted.length > 0 || vo.value.has_changes; @@ -22085,7 +22091,7 @@ function Jl(e) { l.key === "Escape" && (ua(), document.removeEventListener("keydown", o)); }; document.addEventListener("keydown", o), Ka({ - render: () => Wn(dE, { + render: () => Wn(mE, { initialView: e, onClose: ua, onStatusUpdate: async (l) => { @@ -22097,7 +22103,7 @@ function Jl(e) { function ua() { Kt && (Kt.remove(), Kt = null); } -function pT(e) { +function hT(e) { Po(), Dt = document.createElement("div"), Dt.className = "comfygit-commit-popover-container"; const t = e.getBoundingClientRect(); Dt.style.position = "fixed", Dt.style.top = `${t.bottom + 8}px`, Dt.style.right = `${window.innerWidth - t.right}px`, Dt.style.zIndex = "10001"; @@ -22113,7 +22119,7 @@ function pT(e) { status: vo.value, onClose: Po, onCommitted: (l) => { - Po(), gT(l.success, l.message), yn().then(Bo); + Po(), yT(l.success, l.message), yn().then(Bo); } }) }), Fo.mount(Dt), document.body.appendChild(Dt); @@ -22121,7 +22127,7 @@ function pT(e) { function Po() { Fo && (Fo.unmount(), Fo = null), Dt && (Dt.remove(), Dt = null); } -function gT(e, t) { +function yT(e, t) { const o = document.createElement("div"), n = e ? "#22c55e" : "#ef4444"; o.style.cssText = ` position: fixed; @@ -22153,16 +22159,16 @@ function gT(e, t) { o.style.opacity = "0", o.style.transition = "opacity 0.2s ease", setTimeout(() => o.remove(), 200); }, 3e3); } -function hT() { +function wT() { To || (To = document.createElement("div"), To.className = "comfygit-download-queue-root", Yl = Ka({ - render: () => Wn(aT) + render: () => Wn(iT) }), Yl.mount(To), document.body.appendChild(To), console.log("[ComfyGit] Model download queue mounted")); } let Ut = null; function Bo() { if (!Ut) return; const e = Ut.querySelector(".commit-indicator"); - e && (e.style.display = vT() ? "block" : "none"); + e && (e.style.display = gT() ? "block" : "none"); } function Sa() { if (!Ut) return; @@ -22291,7 +22297,7 @@ Os.registerExtension({ const e = document.createElement("div"); e.className = "comfygit-btn-group"; const t = document.createElement("button"); - t.className = "comfyui-button comfyui-menu-mobile-collapse comfygit-panel-btn", t.textContent = "ComfyGit", t.title = "ComfyGit Control Panel", t.onclick = Jl, Ut = document.createElement("button"), Ut.className = "comfyui-button comfyui-menu-mobile-collapse comfygit-commit-btn", Ut.innerHTML = 'Commit ', Ut.title = "Quick Commit", Ut.onclick = () => pT(Ut), e.appendChild(t), e.appendChild(Ut), (i = (l = Os.menu) == null ? void 0 : l.settingsGroup) != null && i.element && (Os.menu.settingsGroup.element.before(e), console.log("[ComfyGit] Control Panel buttons added to toolbar")), hT(); + t.className = "comfyui-button comfyui-menu-mobile-collapse comfygit-panel-btn", t.textContent = "ComfyGit", t.title = "ComfyGit Control Panel", t.onclick = Jl, Ut = document.createElement("button"), Ut.className = "comfyui-button comfyui-menu-mobile-collapse comfygit-commit-btn", Ut.innerHTML = 'Commit ', Ut.title = "Quick Commit", Ut.onclick = () => hT(Ut), e.appendChild(t), e.appendChild(Ut), (i = (l = Os.menu) == null ? void 0 : l.settingsGroup) != null && i.element && (Os.menu.settingsGroup.element.before(e), console.log("[ComfyGit] Control Panel buttons added to toolbar")), wT(); const { loadPendingDownloads: o } = en(); o(), await Promise.all([yn(), Ca()]), Bo(), Sa(), xa(), setTimeout(xa, 100), setInterval(async () => { await Promise.all([yn(), Ca()]), Bo(), Sa(); @@ -22373,8 +22379,8 @@ Os.registerExtension({ p.textContent = "⚠️", p.style.fontSize = "20px", w.appendChild(p); const _ = document.createElement("div"); _.style.cssText = "flex: 1; display: flex; flex-direction: column; gap: 4px;"; - const x = document.createElement("div"); - x.textContent = "Node installation failed", x.style.cssText = "font-weight: 600; color: #e53935;", _.appendChild(x); + const S = document.createElement("div"); + S.textContent = "Node installation failed", S.style.cssText = "font-weight: 600; color: #e53935;", _.appendChild(S); const $ = document.createElement("div"); $.textContent = "Dependency conflict detected", $.style.cssText = "font-size: 12px; opacity: 0.8;", _.appendChild($), w.appendChild(_); const P = document.createElement("button"); @@ -22414,7 +22420,7 @@ Os.registerExtension({ const h = v.detail != null; h && !m && sessionStorage.getItem("ComfyGit.PendingRefresh") && (sessionStorage.removeItem("ComfyGit.PendingRefresh"), localStorage.getItem("ComfyGit.Settings.AutoRefresh") !== "false" ? (console.log("[ComfyGit] Auto-refresh enabled, reloading page..."), r()) : u()), m = h; }), console.log("[ComfyGit] Refresh notification system initialized"), n.addEventListener("cm-task-completed", (v) => { - const h = fT(v.detail); + const h = vT(v.detail); h && d(h); }), console.log("[ComfyGit] Manager error notification system initialized"); } From dea38db33f010b735b45773ae095e43dfa9bb2d8 Mon Sep 17 00:00:00 2001 From: akatz-ai Date: Sat, 27 Dec 2025 05:12:39 +0000 Subject: [PATCH 2/4] Bump version to 0.0.15 --- pyproject.toml | 4 ++-- requirements.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index eea50fa..c1d69cd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,11 +1,11 @@ [project] name = "comfygit-manager" -version = "0.0.14" +version = "0.0.15" description = "ComfyGit Manager - Node for managing comfygit environments in ComfyUI" readme = "README.md" requires-python = ">=3.10" dependencies = [ - "comfygit-core>=0.3.10", + "comfygit-core>=0.3.11", "watchdog>=6.0.0", "zeroconf>=0.131.0", ] diff --git a/requirements.txt b/requirements.txt index 0e6b148..2a2efd0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ -comfygit-core>=0.3.8.dev1 +comfygit-core>=0.3.11 watchdog>=6.0.0 zeroconf>=0.131.0 From a6ac9b33f361e0b9f51a507d1220eca52dd42817 Mon Sep 17 00:00:00 2001 From: akatz-ai Date: Sat, 27 Dec 2025 05:17:35 +0000 Subject: [PATCH 3/4] Update frontend according to changes made --- js/comfygit-panel.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/comfygit-panel.js b/js/comfygit-panel.js index 8aec690..5958afe 100644 --- a/js/comfygit-panel.js +++ b/js/comfygit-panel.js @@ -20192,7 +20192,7 @@ const MS = { class: "settings-content" }, DS = { class: "settings-section" }, LS ariaLabel: "View ComfyGit Documentation", iconPath: "M8 1.783C7.015.936 5.587.81 4.287.94c-1.514.153-3.042.672-3.994 1.105A.5.5 0 0 0 0 2.5v11a.5.5 0 0 0 .707.455c.882-.4 2.303-.881 3.68-1.02 1.409-.142 2.59.087 3.223.877a.5.5 0 0 0 .78 0c.633-.79 1.814-1.019 3.222-.877 1.378.139 2.8.62 3.681 1.02A.5.5 0 0 0 16 13.5v-11a.5.5 0 0 0-.293-.455c-.952-.433-2.48-.952-3.994-1.105C10.413.809 8.985.936 8 1.783z" } -], P6 = "v0.0.14", R6 = "Akatz", M6 = { class: "social-buttons" }, D6 = ["title", "aria-label", "onClick"], L6 = { +], P6 = "v0.0.15", R6 = "Akatz", M6 = { class: "social-buttons" }, D6 = ["title", "aria-label", "onClick"], L6 = { width: "14", height: "14", viewBox: "0 0 16 16", From de0dafccabc4fa4e9f8795f10ad344aeebdc0dfc Mon Sep 17 00:00:00 2001 From: akatz-ai Date: Mon, 29 Dec 2025 07:54:33 +0000 Subject: [PATCH 4/4] Pin comfygit-core to exact version 0.3.11 - Changed from >=0.3.11 to ==0.3.11 for reproducible builds - Added dependency pinning note to CLAUDE.md --- CLAUDE.md | 4 ++++ pyproject.toml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CLAUDE.md b/CLAUDE.md index a90b8a1..c57412e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -63,6 +63,10 @@ Before starting any work, familiarize yourself with the codebase by reviewing th ### Additional Documentation - **frontend/THEMES.md** - Theme system documentation +## Dependencies + +- **Pin comfygit-core to exact versions** - Always use `==X.Y.Z` (not `>=`) for the core dependency in pyproject.toml. This ensures reproducible builds and prevents unexpected breakage from core updates. + ## General Don't make any implementation overly complex. This is a one-person dev MVP project. We are still pre-customer - any unnecessary fallbacks, unnecessary versioning, testing overkill should be avoided. diff --git a/pyproject.toml b/pyproject.toml index c1d69cd..ff0fca8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ description = "ComfyGit Manager - Node for managing comfygit environments in Com readme = "README.md" requires-python = ">=3.10" dependencies = [ - "comfygit-core>=0.3.11", + "comfygit-core==0.3.11", "watchdog>=6.0.0", "zeroconf>=0.131.0", ]