/* ======================================== * CLI Manager Styles * Unified font: system-ui for UI, monospace for code * ======================================== */ /* Container */ .cli-manager-container { display: flex; flex-direction: column; gap: 1.25rem; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; } .cli-manager-grid { display: grid; grid-template-columns: 1.2fr 0.8fr; gap: 1.25rem; align-items: start; } @media (max-width: 768px) { .cli-manager-grid { grid-template-columns: 1fr; } } /* Panels */ .cli-panel { background: hsl(var(--card)); border: 1px solid hsl(var(--border)); border-radius: 0.75rem; overflow: hidden; box-shadow: 0 1px 3px hsl(var(--foreground) / 0.04); transition: box-shadow 0.2s ease; } .cli-panel:hover { box-shadow: 0 4px 12px hsl(var(--foreground) / 0.08); } .cli-panel-full { grid-column: 1 / -1; } /* Status Panel */ .cli-status-header { display: flex; align-items: center; justify-content: space-between; padding: 0.625rem 0.75rem; border-bottom: 1px solid hsl(var(--border)); background: hsl(var(--muted) / 0.3); } .cli-status-header h3 { display: flex; align-items: center; gap: 0.5rem; font-size: 0.8125rem; font-weight: 600; color: hsl(var(--foreground)); margin: 0; letter-spacing: -0.01em; } .cli-status-header h3 i { color: hsl(var(--muted-foreground)); } .cli-tools-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.5rem; padding: 0.5rem 0.625rem; } .cli-tool-card { padding: 0.625rem 0.5rem; border-radius: 0.5rem; background: hsl(var(--background)); text-align: center; border: 1.5px solid hsl(var(--border)); transition: all 0.2s ease; } .cli-tool-card.available { background: hsl(var(--background)); } .cli-tool-card.available:hover { box-shadow: 0 2px 8px hsl(var(--foreground) / 0.08); } /* Tool-specific border colors */ .cli-tool-card.tool-gemini.available { border-color: hsl(210 80% 55% / 0.5); } .cli-tool-card.tool-gemini.available:hover { border-color: hsl(210 80% 55% / 0.7); } .cli-tool-card.tool-qwen.available { border-color: hsl(280 70% 55% / 0.5); } .cli-tool-card.tool-qwen.available:hover { border-color: hsl(280 70% 55% / 0.7); } .cli-tool-card.tool-codex.available { border-color: hsl(142 71% 45% / 0.5); } .cli-tool-card.tool-codex.available:hover { border-color: hsl(142 71% 45% / 0.7); } .cli-tool-card.unavailable { border-color: hsl(var(--border)); opacity: 0.6; } .cli-tool-header { display: flex; align-items: center; justify-content: center; gap: 0.375rem; margin-bottom: 0.1875rem; } .cli-tool-status { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; } .cli-tool-status.status-available { background: hsl(var(--success)); box-shadow: 0 0 6px hsl(var(--success) / 0.5); } .cli-tool-status.status-unavailable { background: hsl(var(--muted-foreground) / 0.5); } .cli-tool-name { font-weight: 600; font-size: 0.8125rem; color: hsl(var(--foreground)); letter-spacing: -0.01em; } .cli-tool-badge { font-size: 0.5625rem; font-weight: 600; padding: 0.125rem 0.375rem; background: hsl(var(--primary)); color: hsl(var(--primary-foreground)); border-radius: 9999px; text-transform: uppercase; letter-spacing: 0.03em; } .cli-tool-info { font-size: 0.6875rem; margin-bottom: 0.3125rem; color: hsl(var(--muted-foreground)); } .cli-tool-info .text-success { color: hsl(var(--success)); font-weight: 500; } /* Execute Panel */ .cli-execute-header { display: flex; align-items: center; justify-content: space-between; padding: 1rem; border-bottom: 1px solid hsl(var(--border)); } .cli-execute-header h3 { font-size: 0.875rem; font-weight: 600; color: hsl(var(--foreground)); margin: 0; } .cli-execute-form { padding: 1rem; } .cli-execute-row { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-bottom: 0.75rem; } .cli-form-group { display: flex; flex-direction: column; gap: 0.375rem; } .cli-form-group label { font-size: 0.75rem; font-weight: 500; color: hsl(var(--muted-foreground)); } .cli-select, .cli-textarea { padding: 0.5rem; border: 1px solid hsl(var(--border)); border-radius: 0.375rem; background: hsl(var(--background)); color: hsl(var(--foreground)); font-size: 0.875rem; } .cli-textarea { min-height: 80px; resize: vertical; font-family: monospace; } .cli-select:focus, .cli-textarea:focus { outline: none; border-color: hsl(var(--primary)); box-shadow: 0 0 0 2px hsl(var(--primary) / 0.2); } .cli-execute-actions { display: flex; justify-content: flex-end; margin-top: 0.75rem; } /* History Panel */ .cli-history-header { display: flex; align-items: center; justify-content: space-between; padding: 0.875rem 1rem; border-bottom: 1px solid hsl(var(--border)); background: hsl(var(--muted) / 0.3); } .cli-history-header h3 { display: flex; align-items: center; gap: 0.5rem; font-size: 0.8125rem; font-weight: 600; color: hsl(var(--foreground)); margin: 0; letter-spacing: -0.01em; } .cli-history-header h3 i { color: hsl(var(--muted-foreground)); } .cli-history-controls { display: flex; align-items: center; gap: 0.5rem; } /* Search Input for History */ .cli-history-search { padding: 0.375rem 0.625rem; border: 1px solid hsl(var(--border)); border-radius: 0.375rem; background: hsl(var(--background)); color: hsl(var(--foreground)); font-size: 0.75rem; width: 160px; transition: all 0.2s ease; } .cli-history-search:focus { outline: none; border-color: hsl(var(--primary)); box-shadow: 0 0 0 2px hsl(var(--primary) / 0.15); width: 200px; } .cli-history-search::placeholder { color: hsl(var(--muted-foreground) / 0.7); } .cli-tool-filter { padding: 0.375rem 0.625rem; border: 1px solid hsl(var(--border)); border-radius: 0.375rem; background: hsl(var(--background)); color: hsl(var(--foreground)); font-size: 0.75rem; cursor: pointer; transition: all 0.2s ease; } .cli-tool-filter:hover { border-color: hsl(var(--primary) / 0.5); } .cli-tool-filter:focus { outline: none; border-color: hsl(var(--primary)); } .cli-history-list { max-height: 450px; overflow-y: auto; } .cli-history-item { display: flex; align-items: flex-start; justify-content: space-between; padding: 0.75rem 1rem; border-bottom: 1px solid hsl(var(--border) / 0.5); cursor: pointer; transition: all 0.15s ease; } .cli-history-item:hover { background: hsl(var(--hover)); } .cli-history-item:hover .cli-history-actions { opacity: 1; } .cli-history-item:last-child { border-bottom: none; } .cli-history-item-content { flex: 1; min-width: 0; } .cli-history-item-header { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.375rem; } .cli-tool-tag { font-size: 0.5625rem; font-weight: 600; padding: 0.125rem 0.5rem; border-radius: 9999px; text-transform: uppercase; letter-spacing: 0.04em; } .cli-tool-gemini { background: hsl(210 80% 55% / 0.12); color: hsl(210 80% 45%); } .cli-tool-qwen { background: hsl(280 70% 55% / 0.12); color: hsl(280 70% 45%); } .cli-tool-codex { background: hsl(142 71% 45% / 0.12); color: hsl(142 71% 35%); } .cli-history-time { font-size: 0.6875rem; color: hsl(var(--muted-foreground)); } .cli-history-prompt { font-size: 0.8125rem; font-weight: 450; color: hsl(var(--foreground)); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; line-height: 1.4; } .cli-history-meta { display: flex; align-items: center; gap: 0.75rem; font-size: 0.6875rem; margin-top: 0.25rem; color: hsl(var(--muted-foreground)); } /* History Item Actions */ .cli-history-actions { display: flex; align-items: center; gap: 0.25rem; opacity: 0; transition: opacity 0.15s ease; margin-left: 0.5rem; } .cli-history-actions .btn-icon { padding: 0.25rem; color: hsl(var(--muted-foreground)); } .cli-history-actions .btn-icon:hover { color: hsl(var(--foreground)); background: hsl(var(--hover)); } .cli-history-actions .btn-icon.btn-danger:hover { color: hsl(var(--destructive)); background: hsl(var(--destructive) / 0.1); } /* Output Panel */ .cli-output-header { display: flex; align-items: center; justify-content: space-between; padding: 1rem; border-bottom: 1px solid hsl(var(--border)); } .cli-output-header h3 { font-size: 0.875rem; font-weight: 600; color: hsl(var(--foreground)); margin: 0; } .cli-output-status { display: flex; align-items: center; gap: 0.5rem; } .status-indicator { width: 8px; height: 8px; border-radius: 50%; } .status-indicator.running { background: hsl(var(--warning)); animation: pulse 1.5s infinite; } .status-indicator.success { background: hsl(var(--success)); } .status-indicator.error { background: hsl(var(--destructive)); } @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } .cli-output-content { padding: 1rem; background: hsl(var(--muted)); font-family: monospace; font-size: 0.75rem; color: hsl(var(--foreground)); max-height: 300px; overflow-y: auto; white-space: pre-wrap; word-wrap: break-word; margin: 0; } /* Detail Modal */ .cli-detail-header { margin-bottom: 1.25rem; padding-bottom: 1rem; border-bottom: 1px solid hsl(var(--border)); } .cli-detail-info { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.625rem; flex-wrap: wrap; } .cli-detail-status { font-size: 0.6875rem; font-weight: 600; padding: 0.25rem 0.625rem; border-radius: 9999px; text-transform: uppercase; letter-spacing: 0.03em; } .cli-detail-status.status-success { background: hsl(var(--success) / 0.12); color: hsl(var(--success)); } .cli-detail-status.status-error { background: hsl(var(--destructive) / 0.12); color: hsl(var(--destructive)); } .cli-detail-status.status-timeout { background: hsl(var(--warning) / 0.12); color: hsl(var(--warning)); } .cli-detail-meta { display: flex; gap: 1.25rem; font-size: 0.75rem; color: hsl(var(--muted-foreground)); flex-wrap: wrap; } .cli-detail-meta span { display: flex; align-items: center; gap: 0.375rem; } .cli-detail-section { margin-bottom: 1.25rem; } .cli-detail-section h4 { display: flex; align-items: center; gap: 0.5rem; font-size: 0.75rem; font-weight: 600; color: hsl(var(--foreground)); margin-bottom: 0.625rem; text-transform: uppercase; letter-spacing: 0.03em; } .cli-detail-section h4 i { width: 14px; height: 14px; color: hsl(var(--muted-foreground)); } .cli-detail-prompt { padding: 1rem; background: hsl(var(--muted) / 0.5); border: 1px solid hsl(var(--border)); border-radius: 0.5rem; font-family: 'SF Mono', 'Consolas', 'Liberation Mono', monospace; font-size: 0.75rem; line-height: 1.6; white-space: pre-wrap; word-wrap: break-word; max-height: 200px; overflow-y: auto; color: hsl(var(--foreground)); } .cli-detail-output { padding: 1rem; background: hsl(var(--muted) / 0.5); border: 1px solid hsl(var(--border)); border-radius: 0.5rem; font-family: 'SF Mono', 'Consolas', 'Liberation Mono', monospace; font-size: 0.75rem; line-height: 1.6; white-space: pre-wrap; word-wrap: break-word; max-height: 350px; overflow-y: auto; color: hsl(var(--foreground)); } .cli-detail-error { padding: 1rem; background: hsl(var(--destructive) / 0.08); border: 1px solid hsl(var(--destructive) / 0.2); border-radius: 0.5rem; font-family: 'SF Mono', 'Consolas', 'Liberation Mono', monospace; font-size: 0.75rem; line-height: 1.6; color: hsl(var(--destructive)); white-space: pre-wrap; word-wrap: break-word; max-height: 180px; overflow-y: auto; } /* Detail Actions */ .cli-detail-actions { display: flex; justify-content: flex-end; gap: 0.5rem; margin-top: 1.5rem; padding-top: 1rem; border-top: 1px solid hsl(var(--border)); } /* Button Styles */ .btn { display: inline-flex; align-items: center; gap: 0.375rem; padding: 0.5rem 1rem; border: none; border-radius: 0.375rem; font-size: 0.875rem; font-weight: 500; cursor: pointer; transition: all 0.15s ease; } .btn-primary { background: hsl(var(--primary)); color: hsl(var(--primary-foreground)); } .btn-primary:hover:not(:disabled) { opacity: 0.9; } .btn-primary:disabled { opacity: 0.5; cursor: not-allowed; } .btn-icon { padding: 0.375rem; background: transparent; border: none; color: hsl(var(--muted-foreground)); cursor: pointer; border-radius: 0.25rem; transition: all 0.15s ease; } .btn-icon:hover { background: hsl(var(--hover)); color: hsl(var(--foreground)); } .btn-sm { padding: 0.25rem 0.5rem; font-size: 0.75rem; border-radius: 0.25rem; } .btn-outline { background: transparent; border: 1px solid hsl(var(--border)); color: hsl(var(--foreground)); } .btn-outline:hover { background: hsl(var(--hover)); } .btn-outline.btn-danger { border-color: hsl(var(--destructive) / 0.3); color: hsl(var(--destructive)); } .btn-outline.btn-danger:hover { background: hsl(var(--destructive) / 0.1); border-color: hsl(var(--destructive) / 0.5); } /* Empty State */ .empty-state { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 2rem; color: hsl(var(--muted-foreground)); } .empty-state svg { width: 2rem; height: 2rem; margin-bottom: 0.5rem; opacity: 0.5; } .empty-state p { font-size: 0.875rem; } /* ======================================== * CCW Installation Panel Styles * ======================================== */ /* CCW Header Actions */ .ccw-header-actions { display: flex; align-items: center; gap: 0.25rem; } /* CCW Install Content */ .ccw-install-content { padding: 0.5rem 0.625rem; } /* CCW Empty State */ .ccw-empty-state { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 2rem 1rem; text-align: center; color: hsl(var(--muted-foreground)); } .ccw-empty-state i { opacity: 0.4; margin-bottom: 0.75rem; } .ccw-empty-state p { font-size: 0.8125rem; margin-bottom: 1rem; } /* ======================================== * CCW Carousel Styles * ======================================== */ .ccw-carousel-wrapper { position: relative; display: flex; align-items: center; gap: 0.5rem; } .ccw-carousel-track { display: flex; flex: 1; overflow: hidden; transition: transform 0.3s ease; } .ccw-carousel-card { flex: 0 0 100%; min-width: 0; padding: 0.625rem 0.75rem; background: hsl(var(--background)); border: 1px solid hsl(var(--border)); border-radius: 0.5rem; transition: all 0.2s ease; } .ccw-carousel-card.active { border-color: hsl(var(--primary) / 0.4); box-shadow: 0 2px 8px hsl(var(--primary) / 0.1); } /* Carousel Card Header */ .ccw-card-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 0.375rem; } .ccw-card-header-right { display: flex; align-items: center; gap: 0.375rem; } .ccw-card-mode { display: flex; align-items: center; gap: 0.375rem; font-weight: 600; font-size: 0.8125rem; color: hsl(var(--foreground)); } .btn-icon-sm { padding: 0.25rem; } .ccw-card-mode.global { color: hsl(var(--primary)); } .ccw-card-mode.path { color: hsl(var(--warning)); } .ccw-version-tag { font-size: 0.625rem; font-weight: 600; padding: 0.25rem 0.5rem; background: hsl(var(--primary) / 0.1); color: hsl(var(--primary)); border-radius: 9999px; letter-spacing: 0.02em; } /* Carousel Card Path */ .ccw-card-path { font-size: 0.6875rem; color: hsl(var(--muted-foreground)); font-family: 'SF Mono', 'Consolas', 'Liberation Mono', monospace; background: hsl(var(--muted) / 0.5); padding: 0.3125rem 0.5rem; border-radius: 0.375rem; margin-bottom: 0.375rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* Carousel Card Meta */ .ccw-card-meta { display: flex; gap: 0.75rem; font-size: 0.625rem; color: hsl(var(--muted-foreground)); } .ccw-card-meta span { display: flex; align-items: center; gap: 0.25rem; } /* Carousel Card Actions - moved to header */ /* Carousel Navigation Buttons */ .ccw-carousel-btn { display: flex; align-items: center; justify-content: center; width: 2rem; height: 2rem; flex-shrink: 0; background: hsl(var(--background)); border: 1px solid hsl(var(--border)); border-radius: 50%; color: hsl(var(--muted-foreground)); cursor: pointer; transition: all 0.15s ease; } .ccw-carousel-btn:hover { background: hsl(var(--hover)); color: hsl(var(--foreground)); border-color: hsl(var(--primary) / 0.3); } .ccw-carousel-btn:disabled { opacity: 0.3; cursor: not-allowed; } /* Carousel Dots */ .ccw-carousel-dots { display: flex; justify-content: center; gap: 0.5rem; margin-top: 0.5rem; } .ccw-carousel-dot { width: 8px; height: 8px; border-radius: 50%; background: hsl(var(--muted-foreground) / 0.3); border: none; cursor: pointer; transition: all 0.2s ease; } .ccw-carousel-dot:hover { background: hsl(var(--muted-foreground) / 0.5); } .ccw-carousel-dot.active { background: hsl(var(--primary)); width: 20px; border-radius: 4px; } /* ======================================== * CCW Install Modal Styles * ======================================== */ .ccw-install-modal { padding: 0.5rem 0; } .ccw-install-options { display: flex; flex-direction: column; gap: 0.75rem; } .ccw-install-option { display: flex; align-items: center; gap: 1rem; padding: 1rem; background: hsl(var(--muted) / 0.3); border: 1px solid hsl(var(--border)); border-radius: 0.5rem; cursor: pointer; transition: all 0.15s ease; } .ccw-install-option:hover { background: hsl(var(--hover)); border-color: hsl(var(--primary) / 0.3); } .ccw-option-icon { display: flex; align-items: center; justify-content: center; width: 3rem; height: 3rem; border-radius: 0.5rem; flex-shrink: 0; } .ccw-option-icon.global { background: hsl(var(--primary) / 0.1); color: hsl(var(--primary)); } .ccw-option-icon.path { background: hsl(var(--warning) / 0.1); color: hsl(var(--warning)); } .ccw-option-info { flex: 1; } .ccw-option-title { font-weight: 600; font-size: 0.875rem; color: hsl(var(--foreground)); margin-bottom: 0.25rem; } .ccw-option-desc { font-size: 0.75rem; color: hsl(var(--muted-foreground)); } /* Path Input Section */ .ccw-path-input-section { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid hsl(var(--border)); } .ccw-path-input-group { margin-bottom: 1rem; } .ccw-path-input-group label { display: block; font-size: 0.75rem; font-weight: 500; color: hsl(var(--muted-foreground)); margin-bottom: 0.5rem; } .ccw-path-input-group .cli-textarea { width: 100%; min-height: auto; padding: 0.625rem 0.75rem; font-size: 0.8125rem; } .ccw-install-action { display: flex; justify-content: flex-end; } /* Danger Button */ .btn-icon.btn-danger { color: hsl(var(--destructive)); } .btn-icon.btn-danger:hover { background: hsl(var(--destructive) / 0.1); } /* ======================================== * Generic Modal Styles * ======================================== */ .generic-modal-overlay { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.5); backdrop-filter: blur(2px); display: flex; align-items: center; justify-content: center; z-index: 100; opacity: 0; transition: opacity 0.2s ease; } .generic-modal-overlay.active { opacity: 1; } .generic-modal { background: hsl(var(--card)); border: 1px solid hsl(var(--border)); border-radius: 0.75rem; width: 90%; max-width: 600px; max-height: 85vh; display: flex; flex-direction: column; box-shadow: 0 8px 32px rgb(0 0 0 / 0.25); transform: scale(0.95); transition: transform 0.2s ease; } .generic-modal-overlay.active .generic-modal { transform: scale(1); } .generic-modal.large { max-width: 800px; } .generic-modal-header { display: flex; align-items: center; justify-content: space-between; padding: 1rem 1.25rem; border-bottom: 1px solid hsl(var(--border)); background: hsl(var(--muted) / 0.3); border-radius: 0.75rem 0.75rem 0 0; } .generic-modal-title { font-size: 0.9375rem; font-weight: 600; color: hsl(var(--foreground)); margin: 0; } .generic-modal-close { width: 2rem; height: 2rem; display: flex; align-items: center; justify-content: center; background: none; border: none; font-size: 1.25rem; color: hsl(var(--muted-foreground)); cursor: pointer; border-radius: 0.375rem; transition: all 0.15s ease; } .generic-modal-close:hover { background: hsl(var(--hover)); color: hsl(var(--foreground)); } .generic-modal-body { flex: 1; overflow-y: auto; padding: 1.25rem; }