/* 仪表盘 */ .quick-actions { display: flex; gap: var(--space-sm); flex-wrap: wrap; margin-bottom: var(--space-xl); } /* 服务卡片 */ .service-card { display: flex; align-items: center; justify-content: space-between; padding: var(--space-lg); background: var(--bg-card); border: 1px solid var(--border-primary); border-radius: var(--radius-lg); margin-bottom: var(--space-md); transition: all var(--transition-fast); } .service-card:hover { background: var(--bg-card-hover); } .service-info { display: flex; align-items: center; gap: var(--space-md); } .service-name { font-weight: 600; font-size: var(--font-size-md); } .service-desc { font-size: var(--font-size-xs); color: var(--text-tertiary); margin-top: 2px; } .service-actions { display: flex; gap: var(--space-sm); } /* 日志工具栏 */ .log-toolbar { display: flex; align-items: center; gap: var(--space-md); margin-bottom: var(--space-md); } /* 日志查看器 */ .log-viewer { background: var(--bg-secondary); border: 1px solid var(--border-primary); border-radius: var(--radius-lg); font-family: var(--font-mono); font-size: var(--font-size-xs); line-height: 1.6; overflow: auto; max-height: calc(100vh - 240px); padding: var(--space-md); } .log-line { white-space: pre-wrap; word-break: break-all; padding: 1px 0; } .log-line:hover { background: var(--bg-glass); } /* 配置项说明 */ .form-hint { font-size: var(--font-size-xs); color: var(--text-tertiary); margin-top: 4px; line-height: 1.5; } /* 配置编辑区 */ .config-section { background: var(--bg-card); border: 1px solid var(--border-primary); border-radius: var(--radius-lg); padding: var(--space-xl); margin-bottom: var(--space-lg); } .config-section-title { font-size: var(--font-size-lg); font-weight: 600; margin-bottom: var(--space-lg); padding-bottom: var(--space-md); border-bottom: 1px solid var(--border-secondary); } /* 记忆文件管理 */ .memory-layout { display: grid; grid-template-columns: 240px 1fr; gap: var(--space-lg); height: calc(100vh - 200px); } .memory-sidebar { background: var(--bg-card); border: 1px solid var(--border-primary); border-radius: var(--radius-lg); padding: var(--space-md); overflow-y: auto; } .memory-editor { background: var(--bg-card); border: 1px solid var(--border-primary); border-radius: var(--radius-lg); display: flex; flex-direction: column; overflow: hidden; } .memory-editor textarea { flex: 1; width: 100%; background: transparent; border: none; resize: none; outline: none; color: var(--text-primary); font-family: var(--font-mono); font-size: var(--font-size-sm); line-height: 1.7; padding: var(--space-lg); } .file-item { padding: var(--space-sm) var(--space-md); border-radius: var(--radius-sm); font-size: var(--font-size-sm); color: var(--text-secondary); cursor: pointer; transition: all var(--transition-fast); } .file-item:hover { background: var(--bg-glass-hover); color: var(--text-primary); } .file-item.active { background: var(--accent-muted); color: var(--accent-hover); } .editor-area { flex: 1; width: 100%; background: transparent; border: none; resize: none; outline: none; color: var(--text-primary); font-family: var(--font-mono); font-size: var(--font-size-sm); line-height: 1.7; padding: var(--space-lg); } .editor-toolbar { display: flex; align-items: center; justify-content: space-between; padding: var(--space-sm) var(--space-lg); border-bottom: 1px solid var(--border-secondary); } /* 升级进度弹窗 */ .upgrade-progress-wrap { margin-bottom: var(--space-md); } .upgrade-progress-bar { height: 6px; background: var(--bg-tertiary); border-radius: 3px; overflow: hidden; margin-bottom: var(--space-xs); } .upgrade-progress-fill { height: 100%; background: var(--accent); border-radius: 3px; transition: width 0.4s ease; } .upgrade-progress-fill.done { background: var(--success); } .upgrade-progress-fill.error { background: var(--error); } .upgrade-progress-text { font-size: var(--font-size-xs); color: var(--text-secondary); } .upgrade-log-box { max-height: 220px; overflow-y: auto; background: var(--bg-tertiary); border-radius: var(--radius-md); padding: var(--space-sm) var(--space-md); font-family: var(--font-mono); font-size: 11px; line-height: 1.6; color: var(--text-secondary); white-space: pre-wrap; word-break: break-all; }