:root{--app-bg:#f5f6f8;--sider-bg:#16181d;--sider-active:#2a2e37;--sider-text:#c9cdd4;--brand:#d42a47;--brand-ink:#b8243e;--ink:#16181d;--ink-2:#3a3f4a;--muted:#5b616e;--line:#e4e6eb;--line-2:#eef0f3;--ok-bg:#e3f5ea;--ok:#1e6b3e;--bad-bg:#fbe6e9;--bad:#9c1f35;--info-bg:#e5eefb;--info:#1f4e8c;--warn-bg:#fff4de;--warn:#8a5a00;--el-color-primary:#d42a47;--el-color-primary-light-3:#e16a7e;--el-color-primary-light-5:#e9949f;--el-color-primary-light-7:#f2bfc8;--el-color-primary-light-8:#f6d4da;--el-color-primary-light-9:#fbeaed;--el-color-primary-dark-2:#aa2239;--el-border-radius-base:6px;--el-font-family:"Noto Sans SC", "PingFang SC", "Microsoft YaHei", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}*{box-sizing:border-box}html,body,#app{height:100%;font-family:var(--el-font-family);background:var(--app-bg);color:var(--ink);margin:0}a{color:var(--brand-ink);text-decoration:none}a:hover{color:#8e1a2f}.page{flex-direction:column;gap:16px;min-width:0;display:flex}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.page-head h1{margin:0;font-size:22px;font-weight:700}.page-head p{color:var(--muted);margin:4px 0 0;font-size:13px}.page-head .actions{flex-wrap:wrap;gap:8px;display:flex}.card{border:1px solid var(--line);background:#fff;border-radius:12px;min-width:0;padding:16px}.card.flush{padding:0;overflow:hidden}.card-title{justify-content:space-between;align-items:baseline;gap:8px;margin:0 0 12px;font-size:15px;font-weight:500;display:flex}.card-title small{color:var(--muted);font-size:12px;font-weight:400}.split{flex-wrap:wrap;align-items:flex-start;gap:16px;display:flex}.split>.main-col{flex:2 520px;min-width:0}.split>.side-col{flex-direction:column;flex:300px;gap:16px;min-width:0;display:flex}.stat-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;display:grid}.stat{border:1px solid var(--line);background:#fff;border-radius:12px;flex-direction:column;gap:4px;padding:14px 16px;display:flex}.stat .label{color:var(--muted);font-size:12px}.stat .value{font-size:24px;font-weight:700}.stat .trend{font-size:12px}.trend.up{color:var(--ok)}.trend.down{color:var(--bad)}.form-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:0 16px;display:grid}.filter-bar{flex-wrap:wrap;align-items:flex-end;gap:10px;display:flex}.filter-bar .el-input,.filter-bar .el-select{width:160px}.table-wrap{width:100%;overflow-x:auto}.pager{border-top:1px solid var(--line-2);justify-content:flex-end;padding:12px 16px;display:flex}.tip-box{color:#5a4310;background:#fff7e8;border:1px solid #f2d9a6;border-radius:12px;padding:12px 16px;font-size:13px;line-height:1.9}.badge{white-space:nowrap;border-radius:10px;padding:1px 8px;font-size:12px;display:inline-block}.badge.ok{background:var(--ok-bg);color:var(--ok)}.badge.bad{background:var(--bad-bg);color:var(--bad)}.badge.info{background:var(--info-bg);color:var(--info)}.badge.warn{background:var(--warn-bg);color:var(--warn)}.badge.gray{color:var(--muted);background:#f1f2f4}.chip{color:var(--ink-2);background:#f1f2f4;border-radius:4px;padding:2px 8px;font-size:12px;display:inline-block}.chip.brand{background:var(--bad-bg);color:var(--bad)}.m-list{flex-direction:column;display:flex}.m-item{border-top:1px solid var(--line-2);flex-direction:column;gap:6px;padding:12px 14px;font-size:13px;display:flex}.m-item:first-child{border-top:0}.m-item .row{justify-content:space-between;align-items:center;gap:8px;display:flex}.m-item .ops{flex-wrap:wrap;gap:12px;display:flex}.mono{font-family:ui-monospace,Consolas,Menlo,monospace;font-size:12px}.muted{color:var(--muted);font-size:12px}.ellipsis{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.form-tip{color:var(--muted);margin-top:4px;font-size:12px;line-height:1.5}.spacer{flex:1}.toolbar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.el-table th.el-table__cell{color:var(--muted);font-weight:500;background:#f8f9fa!important}.el-tabs__item.is-active{font-weight:500}.el-dialog{border-radius:14px}.el-dialog__body{padding-top:8px}@media (width<=767px){.page-head h1{font-size:19px}.card{padding:12px}.filter-bar .el-input,.filter-bar .el-select{width:calc(50% - 5px)}.stat .value{font-size:20px}}
