:root{--primary-color: #409eff;--success-color: #67c23a;--warning-color: #e6a23c;--danger-color: #f56c6c;--info-color: #909399;--bg-color: #f5f7fa;--sidebar-width: 220px}*{box-sizing:border-box;margin:0;padding:0}html,body,#app{height:100%;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background-color:var(--bg-color)}.main-layout{display:flex;height:100vh}.sidebar{width:var(--sidebar-width);background-color:#1f2937;color:#9ca3af}.sidebar .logo{height:60px;display:flex;align-items:center;justify-content:center;border-bottom:1px solid #374151}.sidebar .logo h1{color:#fff;font-size:18px;margin:0}.sidebar .menu{padding:10px 0}.sidebar .menu .menu-item{display:flex;align-items:center;padding:12px 20px;color:#9ca3af;text-decoration:none;transition:all .3s}.sidebar .menu .menu-item:hover{background-color:#374151;color:#fff}.sidebar .menu .menu-item.active{background-color:#4b5563;color:#fff}.sidebar .menu .menu-item .menu-icon{margin-right:10px;font-size:18px}.main-container{flex:1;display:flex;flex-direction:column;overflow:hidden}.main-header{background:#fff;height:60px;display:flex;align-items:center;justify-content:space-between;padding:0 20px;box-shadow:0 1px 4px #0000001a}.main-header .header-left .breadcrumb{color:#606266;font-size:14px}.main-header .header-right{display:flex;align-items:center;gap:12px}.main-header .header-right .username{color:#606266}.main-header .header-right .role-tag{padding:4px 8px;border-radius:4px;font-size:12px}.main-header .header-right .role-tag.role-admin{background:#fef0f0;color:#f56c6c}.main-header .header-right .role-tag.role-operator{background:#fdf6ec;color:#e6a23c}.main-header .header-right .btn-logout{background:none;border:none;color:#606266;cursor:pointer;padding:4px 8px}.main-header .header-right .btn-logout:hover{color:var(--primary-color)}.main-content{flex:1;overflow-y:auto;background:var(--bg-color);padding:20px}.login-container{height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2)}.login-card{width:400px;padding:40px;background:#fff;border-radius:12px;box-shadow:0 20px 60px #0000004d}.login-card .login-header{text-align:center;margin-bottom:40px}.login-card .login-header h1{margin:0;font-size:28px;color:#303133}.login-card .login-header p{margin:8px 0 0;color:#909399}.login-card .login-form .form-field{margin-bottom:20px}.login-card .login-form .form-field label{display:block;margin-bottom:8px;color:#606266;font-size:14px}.login-card .login-form .form-field .form-input{width:100%;padding:12px;border:1px solid #dcdfe6;border-radius:4px;font-size:14px}.login-card .login-form .form-field .form-input:focus{outline:none;border-color:var(--primary-color)}.login-card .login-form .form-field .form-error{color:var(--danger-color);font-size:12px;margin-top:4px}.login-card .login-form .btn-primary{width:100%;padding:12px;background:var(--primary-color);color:#fff;border:none;border-radius:4px;font-size:16px;cursor:pointer}.login-card .login-form .btn-primary:hover{background:#66b1ff}.login-card .login-form .btn-primary:disabled{background:#a0cfff;cursor:not-allowed}.page-container{padding:20px}.page-header{margin-bottom:20px}.page-header h2{margin:0 0 10px;font-size:20px;color:#303133}.stats-container{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:20px;margin-bottom:20px}.stat-card{background:#fff;border-radius:12px;padding:20px;display:flex;align-items:center;gap:16px;box-shadow:0 2px 12px #00000014}.stat-card .stat-icon{width:56px;height:56px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:24px}.stat-card .stat-icon.stat-success{background:#67c23a1a}.stat-card .stat-icon.stat-primary{background:#409eff1a}.stat-card .stat-icon.stat-info{background:#9093991a}.stat-card .stat-icon.stat-danger{background:#f56c6c1a}.stat-card .stat-icon.stat-warning{background:#e6a23c1a}.stat-card .stat-info{flex:1}.stat-card .stat-value{font-size:28px;font-weight:600;color:#303133}.stat-card .stat-label{font-size:14px;color:#909399;margin-top:4px}.charts-container{display:grid;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));gap:20px}.card{background:#fff;border-radius:8px;padding:20px;box-shadow:0 2px 12px #0000001a}.card h3{margin:0 0 16px;font-size:16px;color:#303133}.data-table{width:100%;border-collapse:collapse}.data-table th,.data-table td{padding:12px;text-align:left;border-bottom:1px solid #ebeef5}.data-table th{background:#f5f7fa;font-weight:600;color:#606266}.data-table tbody tr:hover{background:#f5f7fa}.form-field{margin-bottom:16px}.form-field label{display:block;margin-bottom:8px;color:#606266;font-size:14px}.form-field .form-input{width:100%;padding:12px;border:1px solid #dcdfe6;border-radius:4px;font-size:14px;box-sizing:border-box}.form-field .form-input:focus{outline:none;border-color:var(--primary-color)}.form-field textarea.form-input{resize:vertical;font-family:inherit}.form-field select.form-input{cursor:pointer}.form-field .form-error{color:var(--danger-color);font-size:12px;margin-top:4px}.btn-primary{padding:12px 24px;background:var(--primary-color);color:#fff;border:none;border-radius:4px;font-size:14px;cursor:pointer;transition:background .3s}.btn-primary:hover{background:#66b1ff}.btn-primary:disabled{background:#a0cfff;cursor:not-allowed}.btn-secondary{padding:12px 24px;background:#fff;color:#606266;border:1px solid #dcdfe6;border-radius:4px;font-size:14px;cursor:pointer;transition:all .3s}.btn-secondary:hover{color:var(--primary-color);border-color:var(--primary-color)}.btn-warning{padding:12px 24px;background:var(--warning-color);color:#fff;border:none;border-radius:4px;font-size:14px;cursor:pointer;transition:all .3s}.btn-warning:hover{background:#c78c30}.btn-warning:disabled{background:#ddd;cursor:not-allowed}.btn-danger{padding:12px 24px;background:var(--danger-color);color:#fff;border:none;border-radius:4px;font-size:14px;cursor:pointer;transition:all .3s}.btn-danger:hover{background:#d9534f}.btn-danger:disabled{background:#ddd;cursor:not-allowed}.table-container{background:#fff;border-radius:8px;padding:20px;box-shadow:0 2px 12px #0000001a}.tag{display:inline-block;padding:4px 8px;border-radius:4px;font-size:12px}.tag.tag-success{background:#67c23a1a;color:#67c23a}.tag.tag-danger{background:#f56c6c1a;color:#f56c6c}.tag.tag-warning{background:#e6a23c1a;color:#e6a23c}.tag.tag-info{background:#9093991a;color:#909399}.btn-link{background:none;border:none;color:var(--primary-color);cursor:pointer;padding:4px 8px;font-size:14px}.btn-link:hover{color:#66b1ff;text-decoration:underline}.btn-link:disabled{color:#c0c4cc;cursor:not-allowed}.btn-pagination{padding:8px 16px;background:#fff;color:#606266;border:1px solid #dcdfe6;border-radius:4px;font-size:14px;cursor:pointer;transition:all .3s}.btn-pagination:hover:not(:disabled){color:var(--primary-color);border-color:var(--primary-color)}.btn-pagination:disabled{background:#f5f7fa;color:#c0c4cc;cursor:not-allowed;border-color:#e4e7ed}.pagination-container{display:flex;justify-content:center;padding:20px 0}code{font-family:Courier New,Courier,monospace;font-size:12px;background:#f5f7fa;padding:4px 8px;border-radius:4px;color:#606266}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-container{background:#fff;border-radius:8px;box-shadow:0 20px 60px #0000004d;width:420px;max-width:90%}.modal-container .modal-header{padding:20px 20px 0;display:flex;align-items:center;justify-content:space-between}.modal-container .modal-header h3{margin:0;font-size:18px;color:#303133}.modal-container .modal-header .modal-close{background:none;border:none;font-size:20px;color:#909399;cursor:pointer;padding:4px;line-height:1}.modal-container .modal-header .modal-close:hover{color:#606266}.modal-container .modal-body{padding:20px}.modal-container .modal-footer{padding:0 20px 20px;display:flex;justify-content:flex-end;gap:12px}.btn-change-password{background:none;border:none;color:#606266;cursor:pointer;padding:4px 8px;font-size:14px}.btn-change-password:hover{color:var(--primary-color)}.page-description{color:#909399;font-size:14px;margin-bottom:20px}.card-header{padding:16px 20px;border-bottom:1px solid #ebeef5}.card-header h3{margin:0;font-size:16px;color:#303133}.card-body{padding:20px}.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:16px;margin-bottom:20px}.stat-card{text-align:center;padding:16px;border-radius:8px;background:#f8f9fa}.stat-card.stat-channel{background:#409eff1a}.stat-card.stat-pending{background:#e6a23c1a}.stat-card.stat-api{background:#67c23a1a}.stat-card.stat-proxy{background:#9093991a}.stat-card .stat-value{font-size:32px;font-weight:600;color:#303133}.stat-card .stat-label{font-size:13px;color:#909399;margin-top:4px}.channel-section{margin-top:20px}.channel-section h4{margin:0 0 12px;font-size:14px;color:#606266}.channel-list{display:flex;flex-direction:column;gap:8px}.channel-item{display:flex;align-items:center;gap:16px;padding:10px 12px;background:#f8f9fa;border-radius:4px;font-size:13px}.channel-item .channel-proxy{font-weight:500;color:#303133;min-width:180px}.channel-item .channel-status{padding:2px 8px;border-radius:4px;font-size:12px}.channel-item .channel-status.status-online{background:#67c23a1a;color:#67c23a}.channel-item .channel-time{color:#909399;margin-left:auto}.api-section{margin-bottom:24px}.api-section .section-header{margin-bottom:12px}.api-section .section-header h4{margin:0;font-size:14px;color:#606266}.api-section .section-header h4 code{font-size:14px;color:var(--primary-color)}.usage-bar{display:flex;align-items:center;gap:8px}.usage-bar .usage-fill{height:8px;border-radius:4px;transition:width .3s}.usage-bar .usage-fill.low{background:#67c23a}.usage-bar .usage-fill.medium{background:#e6a23c}.usage-bar .usage-fill.high{background:#f56c6c}.usage-bar .usage-text{font-size:12px;color:#909399;min-width:40px}.btn-small{padding:4px 12px;font-size:12px;border-radius:4px;cursor:pointer}.btn-small.btn-primary{background:var(--primary-color);color:#fff;border:none}.btn-small.btn-primary:hover{background:#66b1ff}.test-form{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.test-form .form-label{grid-column:1/-1;color:#606266;font-size:14px;margin-bottom:-8px}.test-form .form-textarea{grid-column:1/-1;width:100%;padding:12px;border:1px solid #dcdfe6;border-radius:4px;font-size:13px;font-family:Courier New,Courier,monospace;resize:vertical}.test-form .form-textarea:focus{outline:none;border-color:var(--primary-color)}.test-form .button-row{grid-column:1/-1;display:flex;gap:12px;margin-top:8px}.response-section{margin-top:24px;padding-top:20px;border-top:1px solid #ebeef5}.response-header{display:flex;align-items:center;gap:16px;margin-bottom:12px}.response-header .response-status{padding:4px 12px;border-radius:4px;font-size:13px;font-weight:500}.response-header .response-status.success{background:#67c23a1a;color:#67c23a}.response-header .response-status.error{background:#f56c6c1a;color:#f56c6c}.response-header .response-time,.response-header .response-code{font-size:13px;color:#909399}.response-body{background:#f8f9fa;border:1px solid #ebeef5;border-radius:4px;padding:16px;font-size:13px;font-family:Courier New,Courier,monospace;overflow-x:auto;white-space:pre-wrap;word-break:break-all;max-height:400px;overflow-y:auto}.response-body.error{background:#f56c6c0d;border-color:#f56c6c33}.empty-state,.loading{text-align:center;padding:40px 20px;color:#909399;font-size:14px}.error{text-align:center;padding:20px;color:#f56c6c;font-size:14px}.message-container{position:fixed;top:20px;right:20px;z-index:9999;display:flex;flex-direction:column;gap:10px}.message{min-width:300px;padding:12px 16px;border-radius:4px;box-shadow:0 2px 12px #0000001a;opacity:0;transform:translate(100%);transition:all .3s}.message.show{opacity:1;transform:translate(0)}.message.message-success{background:#f0f9ff;color:#67c23a;border-left:4px solid #67c23a}.message.message-error{background:#fef0f0;color:#f56c6c;border-left:4px solid #f56c6c}.message.message-warning{background:#fdf6ec;color:#e6a23c;border-left:4px solid #e6a23c}.message.message-info{background:#f4f4f5;color:#909399;border-left:4px solid #909399}
