.layout { display: flex; height: 100vh; background-color: var(--background-color); } .sidebar { width: 240px; background-color: var(--surface-color); border-right: 1px solid var(--border-color); display: flex; flex-direction: column; padding: var(--spacing-md); } .logo { display: flex; align-items: center; gap: var(--spacing-sm); padding: var(--spacing-md); margin-bottom: var(--spacing-lg); } .logoIcon { font-size: 24px; } .logoText { font-size: 18px; font-weight: 700; color: var(--text-primary); } .navList { list-style: none; flex: 1; } .navItem { display: flex; align-items: center; gap: var(--spacing-sm); padding: var(--spacing-md); border-radius: var(--radius-md); color: var(--text-secondary); text-decoration: none; transition: all 0.2s ease; margin-bottom: var(--spacing-xs); } .navItem:hover { background-color: var(--background-color); color: var(--text-primary); text-decoration: none; } .navItemActive { background-color: var(--primary-color); color: white; } .navItemActive:hover { background-color: var(--primary-light); color: white; } .navIcon { font-size: 18px; } .navLabel { font-size: 14px; font-weight: 500; } .footer { padding: var(--spacing-md); border-top: 1px solid var(--border-color); } /* 状态面板 */ .statusPanel { display: flex; flex-direction: column; gap: var(--spacing-sm); } .statusRow { display: flex; align-items: center; justify-content: space-between; font-size: 11px; } .statusLabel { color: var(--text-secondary); display: flex; align-items: center; gap: 4px; } .statusValue { display: flex; align-items: center; gap: 4px; } .statusDot { width: 6px; height: 6px; border-radius: 50%; flex-shrink: 0; } .statusText { color: var(--text-secondary); font-size: 10px; max-width: 80px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* 操作进度 */ .operationPanel { margin-top: var(--spacing-sm); padding: var(--spacing-sm); background-color: var(--background-color); border-radius: var(--radius-sm); } .operationHeader { display: flex; align-items: center; gap: var(--spacing-xs); font-size: 11px; font-weight: 600; color: var(--text-primary); margin-bottom: var(--spacing-xs); } .operationSpinner { width: 12px; height: 12px; border: 2px solid var(--border-color); border-top-color: var(--primary-color); border-radius: 50%; animation: spin 1s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } .operationProgress { width: 100%; height: 4px; background-color: var(--border-color); border-radius: 2px; overflow: hidden; margin-bottom: var(--spacing-xs); } .operationProgressBar { height: 100%; background-color: var(--primary-color); transition: width 0.3s ease; } .operationStep { font-size: 10px; color: var(--text-secondary); } /* 刷新按钮 */ .refreshButton { background: none; border: none; padding: 2px; cursor: pointer; opacity: 0.6; transition: opacity 0.2s; font-size: 12px; } .refreshButton:hover { opacity: 1; } .refreshButton.spinning { animation: spin 1s linear infinite; } .main { flex: 1; overflow-y: auto; padding: var(--spacing-xl); }