* { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', sans-serif; background: #f0f2f5; color: #333; overflow: hidden; } /* 布局 */ .layout { display: flex; height: 100vh; overflow: hidden; } /* 侧边栏 */ .sidebar { width: 200px; background: #001529; color: white; display: flex; flex-direction: column; flex-shrink: 0; } .logo { height: 64px; display: flex; align-items: center; justify-content: center; font-size: 18px; font-weight: bold; border-bottom: 1px solid rgba(255, 255, 255, 0.1); } .menu { flex: 1; padding: 16px 0; } .menu-item { padding: 12px 24px; cursor: pointer; transition: all 0.3s; display: flex; align-items: center; gap: 12px; color: rgba(255, 255, 255, 0.65); } .menu-item:hover { background: rgba(255, 255, 255, 0.1); color: white; } .menu-item.active { background: #1890ff; color: white; } .menu-icon { font-size: 16px; } /* 主内容区 */ .main { flex: 1; display: flex; flex-direction: column; overflow: hidden; min-width: 0; } /* 顶部导航栏 */ .navbar { height: 64px; background: white; box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08); display: flex; align-items: center; justify-content: space-between; padding: 0 24px; flex-shrink: 0; } .breadcrumb { font-size: 16px; font-weight: 500; } .user-info { display: flex; align-items: center; gap: 8px; } .status-indicator { width: 8px; height: 8px; border-radius: 50%; background: #52c41a; animation: pulse 2s infinite; } @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } /* 内容区 */ .content { flex: 1; padding: 24px; overflow-y: auto; } /* 卡片 */ .card { background: white; border-radius: 2px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.03); margin-bottom: 24px; } .card-header { padding: 16px 24px; border-bottom: 1px solid #f0f0f0; font-size: 16px; font-weight: 500; } .card-body { padding: 24px; } /* 统计卡片 */ .stats-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; margin-bottom: 24px; } .stat-card { background: white; padding: 24px; border-radius: 2px; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.03); border-left: 3px solid #1890ff; } .stat-card:nth-child(2) { border-left-color: #52c41a; } .stat-card:nth-child(3) { border-left-color: #faad14; } .stat-card:nth-child(4) { border-left-color: #f5222d; } .stat-label { font-size: 14px; color: #666; margin-bottom: 8px; } .stat-value { font-size: 30px; font-weight: 600; color: #333; } /* 表单 */ .form-group { margin-bottom: 16px; } .form-label { display: block; margin-bottom: 8px; font-size: 14px; color: #333; } .form-input { width: 100%; padding: 8px 12px; border: 1px solid #d9d9d9; border-radius: 2px; font-size: 14px; transition: all 0.3s; } .form-input:focus { outline: none; border-color: #1890ff; box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); } .form-textarea { width: 100%; padding: 8px 12px; border: 1px solid #d9d9d9; border-radius: 2px; font-size: 14px; resize: vertical; min-height: 100px; font-family: inherit; } .form-textarea:focus { outline: none; border-color: #1890ff; box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); } /* 按钮 */ .btn { padding: 8px 16px; border: none; border-radius: 2px; font-size: 14px; cursor: pointer; transition: all 0.3s; display: inline-flex; align-items: center; gap: 6px; } .btn-primary { background: #1890ff; color: white; } .btn-primary:hover { background: #40a9ff; } .btn-success { background: #52c41a; color: white; } .btn-success:hover { background: #73d13d; } .btn-danger { background: #ff4d4f; color: white; } .btn-danger:hover { background: #ff7875; } .btn-warning { background: #faad14; color: white; } .btn-warning:hover { background: #ffc53d; } .btn-group { display: flex; gap: 12px; } /* 表格 */ .table-container { overflow-x: auto; } .table { width: 100%; border-collapse: collapse; } .table th { background: #fafafa; padding: 12px 16px; text-align: left; font-size: 14px; font-weight: 500; color: #333; border-bottom: 1px solid #f0f0f0; } .table td { padding: 12px 16px; font-size: 14px; border-bottom: 1px solid #f0f0f0; } .table tr:hover { background: #fafafa; } .table-url { color: #1890ff; text-decoration: none; max-width: 400px; display: inline-block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .table-url:hover { text-decoration: underline; } /* Toast提示 */ .toast { position: fixed; top: 24px; right: 24px; padding: 16px 24px; border-radius: 2px; color: white; font-size: 14px; z-index: 1000; min-width: 300px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); animation: slideIn 0.3s ease; } .toast-success { background: #52c41a; } .toast-error { background: #ff4d4f; } .toast-info { background: #1890ff; } @keyframes slideIn { from { transform: translateX(400px); opacity: 0; } to { transform: translateX(0); opacity: 1; } } /* 空状态 */ .empty-state { text-align: center; padding: 48px; color: #999; }