*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
body{
  font-family:"Helvetica Neue",Helvetica,"PingFang SC","Microsoft YaHei",Arial,sans-serif;
  background:#f0f2f5;color:#303133;min-height:100vh;line-height:1.5;
}
.login-wrap{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px}
.login-card{width:420px;background:#fff;padding:40px 36px 32px;border-radius:8px;box-shadow:0 2px 12px rgba(0,0,0,.08)}
.login-card .logo{font-size:28px;font-weight:700;color:#303133;text-align:center;margin-bottom:4px}
.login-card .sub{font-size:12px;color:#909399;text-align:center;letter-spacing:2px;margin-bottom:28px}
.dash-header{display:flex;align-items:center;justify-content:space-between;padding:0 24px;height:52px;background:#fff;border-bottom:1px solid #e4e7ed;box-shadow:0 1px 4px rgba(0,0,0,.04)}
.dash-header h1{font-size:18px;font-weight:700;color:#303133}
.dash-header .server-tag{font-size:12px;color:#909399;margin-left:8px;font-weight:400}
.dash-body{padding:16px 20px;max-width:1400px;margin:0 auto}
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}
.stat-card{background:#fff;padding:16px 20px;border-radius:8px;box-shadow:0 1px 4px rgba(0,0,0,.04);transition:box-shadow .2s}
.stat-card:hover{box-shadow:0 2px 8px rgba(0,0,0,.08)}
.stat-card .label{font-size:12px;color:#909399;letter-spacing:.5px;margin-bottom:6px}
.stat-card .value{font-size:22px;font-weight:700;color:#303133;line-height:1.2}
.stat-card .value.on{color:#67c23a}
.stat-card .value.off{color:#f56c6c}
.action-bar{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap;align-items:center}
.main-row{display:flex;gap:12px;align-items:flex-start}
.cmd-sidebar{width:240px;flex-shrink:0;background:#fff;border-radius:8px;box-shadow:0 1px 4px rgba(0,0,0,.04);padding:12px;max-height:calc(100vh - 180px);overflow-y:auto;position:sticky;top:68px}
.cmd-sidebar .cp-title{font-size:13px;font-weight:700;color:#303133;margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid #f0f0f0}
.cmd-sidebar .cp-group{margin-bottom:2px}
.cmd-sidebar .cp-group-header{display:flex;align-items:center;justify-content:space-between;padding:6px 4px;cursor:pointer;border-radius:4px;font-size:12px;color:#606266;transition:background .15s;user-select:none}
.cmd-sidebar .cp-group-header:hover{background:#f5f7fa}
.cmd-sidebar .cp-group-header .el-icon{font-size:12px;transition:transform .2s}
.cmd-sidebar .cp-group-header .el-icon.open{transform:rotate(90deg)}
.cmd-sidebar .cp-btns{padding:2px 0 4px 4px;display:flex;flex-wrap:wrap;gap:4px}
.cmd-sidebar .cp-btns .el-button--small{font-size:12px;padding:4px 10px}
.console-wrap{flex:1;min-width:0;display:flex;flex-direction:column}
.console-box{background:#fff;padding:16px;border-radius:8px;box-shadow:0 1px 4px rgba(0,0,0,.04);display:flex;flex-direction:column;min-height:420px;max-height:calc(100vh - 240px)}
.console-box .cb-title{font-size:14px;font-weight:700;margin-bottom:8px;color:#303133}
.console-out{background:#1a1a2e;color:#a0ffc0;font-family:"Consolas","Monaco","Courier New",monospace;font-size:12px;line-height:1.6;padding:12px;flex:1;overflow-y:auto;white-space:pre-wrap;word-break:break-all;border-radius:6px;min-height:360px}
.console-out::-webkit-scrollbar{width:4px}
.console-out::-webkit-scrollbar-thumb{background:#444;border-radius:2px}
.console-out::-webkit-scrollbar-track{background:#111}
.console-input-row{display:flex;gap:8px;margin-top:10px}
.console-input-row input{flex:1;font-family:"Consolas","Monaco","Courier New",monospace;font-size:12px;padding:8px 12px;border:1px solid #dcdfe6;outline:none;background:#fafafa;border-radius:4px;transition:border-color .2s}
.console-input-row input:focus{border-color:#409eff}
:root{--el-color-primary:#409eff}
.el-form-item__label{font-size:12px!important;color:#606266!important;font-weight:500!important}
.el-input__wrapper{border-radius:6px!important}
.el-button{border-radius:6px!important}
@media(max-width:1024px){
  .stat-grid{grid-template-columns:repeat(2,1fr)}
  .main-row{flex-direction:column}
  .cmd-sidebar{width:100%;max-height:none;position:static;order:2}
  .console-wrap{order:1}
  .console-box{max-height:50vh}
}
@media(max-width:600px){
  .stat-grid{grid-template-columns:1fr 1fr;gap:8px}
  .stat-card{padding:12px 14px}
  .stat-card .value{font-size:18px}
  .login-card{width:100%;padding:28px 20px 24px}
  .dash-body{padding:10px}
  .dash-header{padding:0 12px}
  .dash-header h1{font-size:16px}
  .console-box{min-height:320px}
  .console-out{min-height:240px}
}