/* 星枢AI 管理后台 admin.css v2 */
:root {
  --bg: #070d14;
  --panel: #0e1620;
  --panel2: #111c28;
  --line: rgba(255, 255, 255, .08);
  --txt: #e8edf2;
  --dim: #8b96a5;
  --cyan: #22d3ee;
  --purple: #8b5cf6;
  --green: #34d399;
  --red: #f87171;
  --amber: #fbbf24;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
html, body { height: 100%; }
body { background: var(--bg); color: var(--txt); font: 14px/1.6 -apple-system, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; }
.hidden { display: none !important; }
a { color: var(--cyan); text-decoration: none; }
button { cursor: pointer; font-family: inherit; }
input, select, textarea { font-family: inherit; }

/* 登录 */
.adm-login { min-height: 100vh; display: flex; align-items: center; justify-content: center; background: radial-gradient(900px 500px at 50% -10%, rgba(34,211,238,.14), transparent), var(--bg); }
.adm-login-card { width: 380px; max-width: 92vw; background: var(--panel); border: 1px solid var(--line); border-radius: 18px; padding: 32px 28px; display: flex; flex-direction: column; gap: 14px; box-shadow: 0 30px 80px rgba(0,0,0,.5); }
.adm-logo { display: flex; align-items: center; gap: 12px; }
.adm-logo span { width: 42px; height: 42px; border-radius: 12px; display: grid; place-items: center; font-weight: 800; color: #04121a; background: linear-gradient(135deg, var(--cyan), var(--purple)); font-size: 20px; }
.adm-logo strong { font-size: 17px; display: block; }
.adm-logo small { color: var(--dim); font-size: 12px; }
.adm-hint { color: var(--dim); font-size: 12.5px; }
.adm-login-card input { background: #0a121b; border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; color: var(--txt); font-size: 14px; outline: none; }
.adm-login-card input:focus { border-color: var(--cyan); }
.adm-back { text-align: center; font-size: 13px; color: var(--dim); }

/* 通用按钮 */
.adm-btn-primary { background: linear-gradient(135deg, var(--cyan), #0ea5b7); color: #04121a; border: none; border-radius: 10px; padding: 11px 18px; font-weight: 700; font-size: 14px; }
.adm-btn-primary:hover { filter: brightness(1.08); }
.adm-btn-ghost { background: transparent; color: var(--dim); border: 1px solid var(--line); border-radius: 9px; padding: 8px 14px; font-size: 13px; }
.adm-btn-ghost:hover { color: var(--txt); border-color: rgba(255,255,255,.2); }
.adm-sm { padding: 7px 13px !important; font-size: 13px !important; border-radius: 8px !important; }

/* 布局 */
.adm-shell { display: grid; grid-template-columns: 230px 1fr; min-height: 100vh; }
.adm-side { background: var(--panel); border-right: 1px solid var(--line); padding: 20px 14px; display: flex; flex-direction: column; gap: 6px; position: sticky; top: 0; height: 100vh; }
.adm-side .adm-logo { padding: 4px 8px 16px; }
.adm-side nav { display: flex; flex-direction: column; gap: 3px; flex: 1; overflow-y: auto; }
.adm-side nav button { position: relative; text-align: left; background: transparent; border: none; color: var(--dim); padding: 11px 14px; border-radius: 10px; font-size: 14px; transition: .15s; }
.adm-side nav button:hover { background: rgba(255,255,255,.04); color: var(--txt); }
.adm-side nav button.active { background: rgba(34,211,238,.12); color: var(--cyan); font-weight: 600; }
.adm-dot { display: none; width: 8px; height: 8px; border-radius: 50%; background: var(--red); position: absolute; right: 14px; top: 50%; transform: translateY(-50%); }
.adm-dot.show { display: inline-block; }
.adm-front { margin-top: 10px; text-align: center; padding: 10px; border: 1px solid var(--line); border-radius: 10px; font-size: 13px; }

.adm-main { display: flex; flex-direction: column; min-width: 0; }
.adm-top { display: flex; align-items: center; justify-content: space-between; padding: 20px 28px; border-bottom: 1px solid var(--line); background: rgba(14,22,32,.7); backdrop-filter: blur(8px); position: sticky; top: 0; z-index: 5; }
.adm-top h1 { font-size: 20px; font-weight: 700; }
.adm-top p { color: var(--dim); font-size: 12.5px; }
.adm-topright { display: flex; align-items: center; gap: 14px; }
#admWho { color: var(--dim); font-size: 13px; }
.adm-body { padding: 24px 28px; }
.adm-panel { display: none; }
.adm-panel.active { display: block !important; }

/* 卡片 */
.adm-cards { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-bottom: 20px; }
.adm-stat { background: var(--panel); border: 1px solid var(--line); border-radius: 14px; padding: 18px 20px; }
.adm-stat span { color: var(--dim); font-size: 13px; }
.adm-stat strong { display: block; font-size: 28px; font-weight: 800; margin-top: 6px; color: var(--cyan); font-variant-numeric: tabular-nums; }
.adm-grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.adm-box { background: var(--panel); border: 1px solid var(--line); border-radius: 14px; padding: 18px 20px; margin-bottom: 16px; }
.adm-box h3 { font-size: 15px; margin-bottom: 14px; }
.adm-boxhead { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.adm-boxhead h3 { margin: 0; }
.adm-note { color: var(--dim); font-size: 12.5px; margin-bottom: 12px; }

/* 表格 */
.adm-table { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; font-size: 13px; }
thead th { text-align: left; color: var(--dim); font-weight: 600; padding: 10px 12px; border-bottom: 1px solid var(--line); white-space: nowrap; }
tbody td { padding: 11px 12px; border-bottom: 1px solid rgba(255,255,255,.04); vertical-align: middle; }
tbody tr:hover { background: rgba(255,255,255,.02); }
.adm-empty { padding: 30px; text-align: center; color: var(--dim); }
.adm-table .mini { padding: 5px 10px; font-size: 12px; border-radius: 7px; border: 1px solid var(--line); background: transparent; color: var(--cyan); margin-right: 5px; }
.adm-table .mini.danger { color: var(--red); }
.adm-table .mini.ok { color: var(--green); }
.adm-table input, .adm-table select { background: #0a121b; border: 1px solid var(--line); border-radius: 7px; color: var(--txt); padding: 6px 9px; font-size: 12.5px; max-width: 120px; }

/* 状态徽章 */
.badge { display: inline-block; padding: 2px 9px; border-radius: 999px; font-size: 11.5px; font-weight: 600; }
.b-gray { background: rgba(255,255,255,.08); color: var(--dim); }
.b-green { background: rgba(52,211,153,.15); color: var(--green); }
.b-amber { background: rgba(251,191,36,.15); color: var(--amber); }
.b-red { background: rgba(248,113,113,.15); color: var(--red); }
.b-cyan { background: rgba(34,211,238,.15); color: var(--cyan); }

/* 表单 */
.adm-form { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; background: var(--panel2); border: 1px solid var(--line); border-radius: 12px; padding: 16px; margin-bottom: 16px; }
.adm-form input, .adm-form select, .adm-form textarea { background: #0a121b; border: 1px solid var(--line); border-radius: 9px; padding: 10px 12px; color: var(--txt); font-size: 13px; outline: none; width: 100%; }
.adm-form textarea { grid-column: 1 / -1; resize: vertical; }
.adm-form-actions { grid-column: 1 / -1; display: flex; gap: 10px; }
.adm-gen { display: flex; gap: 10px; margin-bottom: 16px; align-items: center; }
.adm-gen input { background: #0a121b; border: 1px solid var(--line); border-radius: 9px; padding: 10px 12px; color: var(--txt); width: 140px; }

/* toast */
.adm-toast { position: fixed; left: 50%; bottom: 34px; transform: translateX(-50%) translateY(20px); background: #111c28; border: 1px solid rgba(34,211,238,.4); color: var(--txt); padding: 12px 22px; border-radius: 12px; font-size: 14px; opacity: 0; pointer-events: none; transition: .25s; z-index: 99; box-shadow: 0 12px 40px rgba(0,0,0,.5); }
.adm-toast.show { opacity: 1; transform: translateX(-50%) translateY(0); }
.adm-toast.err { border-color: var(--red); }
.adm-toast.ok { border-color: var(--green); }

@media (max-width: 1100px) { .adm-cards { grid-template-columns: repeat(2,1fr); } .adm-grid2 { grid-template-columns: 1fr; } .adm-form { grid-template-columns: 1fr; } }
@media (max-width: 820px) { .adm-shell { grid-template-columns: 1fr; } .adm-side { position: static; height: auto; } }

.adm-ticket{border:1px solid var(--border,#e3e9f2);border-radius:12px;padding:14px 16px;margin-bottom:12px;background:var(--card,#fff)}
.adm-ticket-h{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.adm-ticket-h b{font-size:14px;flex:1}
.adm-ticket-time{color:#94a3b8;font-size:12px}
.adm-ticket p{margin:6px 0;font-size:13px;line-height:1.6;color:#33475e}
.adm-ticket-c{color:#0ea5e9!important}
.adm-ticket-r{margin:8px 0;padding:8px 10px;border-radius:8px;background:#ecfeff;border-left:3px solid #22d3ee;font-size:12.5px;color:#155e75}
.adm-ticket-form textarea{width:100%;box-sizing:border-box;border:1px solid #dbe4ef;border-radius:8px;padding:9px 11px;font-size:13px;font-family:inherit;resize:vertical;margin-bottom:8px}
.adm-ticket-actions{display:flex;gap:10px}

/* ===== 后台表格列挤压根治（v21）：列多时保持最小宽度并在容器内横滚，单元格不逐字竖排 ===== */
.adm-table table.admin-table,.adm-table table{min-width:880px;width:100%;table-layout:auto;border-collapse:collapse;}
.adm-table tbody td{white-space:normal;word-break:break-word;line-height:1.5;}
.adm-table tbody td.nowrap,.adm-table thead th{white-space:nowrap;}
.adm-table{width:100%;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;}

/* ============ 上游密钥管理卡片化（item5 美化） ============ */
.ak-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;}
.api-key-row.ak-card{display:flex;flex-direction:column;gap:9px;padding:15px 16px;border-radius:14px;
  background:var(--bg-card,#fff);border:1px solid var(--border,#e9ebf2);box-shadow:0 4px 16px rgba(30,42,80,.06);transition:.18s;}
.api-key-row.ak-card:hover{border-color:#9adce8;box-shadow:0 8px 24px rgba(14,158,192,.12);transform:translateY(-1px);}
.ak-card .ak-head{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.ak-card .key-name{font-weight:700;font-size:14px;color:var(--text-primary,#1c2233);}
.ak-card .ak-desc{color:var(--text-muted,#98a0b4);font-size:11.5px;margin:-4px 0 0;}
.ak-inputwrap{position:relative;display:flex;align-items:center;}
.ak-card input{width:100%;height:40px;padding:0 52px 0 13px;border-radius:10px;border:1px solid var(--border-strong,#d4d9e6);
  background:var(--bg-input,#f1f3f9);color:var(--text-primary,#1c2233);font-size:13px;font-family:ui-monospace,Consolas,monospace;letter-spacing:.2px;transition:.15s;}
.ak-card input:focus{outline:none;border-color:#0e9ec0;background:#fff;box-shadow:0 0 0 3px rgba(14,158,192,.14);}
.ak-eye{position:absolute;right:7px;width:38px;height:28px;border:none;border-radius:7px;background:#e6edf5;color:#525b70;font-size:12px;cursor:pointer;}
.ak-eye:hover{background:#d7e6ef;color:#0e7490;}
.ak-actions{display:flex;gap:9px;}
.ak-card .test-btn,.ak-card .save-btn{flex:1;height:36px;border-radius:9px;font-size:13px;font-weight:600;cursor:pointer;border:1px solid transparent;transition:.15s;}
.ak-card .test-btn{background:#eef6fb;color:#0e7490;border-color:#cfe8f1;}
.ak-card .test-btn:hover{background:#dff0f8;}
.ak-card .save-btn{background:linear-gradient(135deg,#0e9ec0,#0e7490);color:#fff;}
.ak-card .save-btn:hover{filter:brightness(1.06);}
.ak-card button:disabled{opacity:.6;cursor:not-allowed;}
.key-status{font-size:11px;font-weight:700;padding:3px 10px;border-radius:999px;white-space:nowrap;max-width:55%;overflow:hidden;text-overflow:ellipsis;}
.key-status.connected{background:rgba(16,185,129,.14);color:#059669;}
.key-status.disconnected{background:rgba(148,163,184,.16);color:#64748b;}
.key-status.testing{background:rgba(14,158,192,.14);color:#0e7490;}

/* ===== 密钥厂商覆盖 ===== */
.adm-kcov-summary{display:flex;gap:12px;flex-wrap:wrap;margin:4px 0 14px;}
.adm-kc-card{flex:1;min-width:150px;background:linear-gradient(135deg,#f7fafc,#eef3f8);border:1px solid #e2e8f0;border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:2px;}
.adm-kc-card .n{font-size:26px;font-weight:800;color:#1e293b;line-height:1.1;}
.adm-kc-card .l{font-size:12px;color:#64748b;}
.adm-kc-card.ok{background:linear-gradient(135deg,#ecfdf5,#dcfce7);border-color:#bbf7d0;}
.adm-kc-card.ok .n{color:#047857;}
.adm-kc-card.warn{background:linear-gradient(135deg,#fffbeb,#fef3c7);border-color:#fde68a;}
.adm-kc-card.warn .n{color:#b45309;}
.adm-kc-card.bad{background:linear-gradient(135deg,#fef2f2,#fee2e2);border-color:#fecaca;}
.adm-kc-card.bad .n{color:#b91c1c;}
.adm-filterbar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px;}
.adm-filterbar input,.adm-filterbar select{height:36px;border:1px solid #d7dee8;border-radius:9px;padding:0 12px;font-size:13px;background:#fff;color:#334155;}
.adm-filterbar input{flex:1;min-width:200px;}
.adm-filterbar input:focus,.adm-filterbar select:focus{outline:none;border-color:#0e9ec0;box-shadow:0 0 0 3px rgba(14,158,192,.14);}
.adm-filterbar .adm-filter-count{align-self:center;font-size:12px;color:#64748b;white-space:nowrap;flex-shrink:0;margin-right:2px;}
.adm-filterbar .mini{height:36px;}
.adm-filterbar .adm-btn-primary,.adm-filterbar .adm-btn-ghost{height:36px;display:inline-flex;align-items:center;}
#kcovTable table.adm-data-table{width:100%;border-collapse:collapse;font-size:13px;}
#kcovTable .adm-data-table th{background:#f1f5f9;color:#475569;font-weight:700;text-align:left;padding:10px 12px;border-bottom:1px solid #e2e8f0;white-space:nowrap;}
#kcovTable .adm-data-table td{padding:10px 12px;border-bottom:1px solid #eef2f7;color:#334155;vertical-align:middle;}
#kcovTable .adm-data-table tr:hover td{background:#f8fafc;}
.adm-mono{font-family:ui-monospace,Consolas,Menlo,monospace;font-size:12px;color:#64748b;}
#kcovTable .kc-ok{color:#059669;font-size:16px;}
#kcovTable .kc-warn{color:#d97706;font-size:16px;}
#kcovTable .kc-bad{color:#dc2626;font-size:16px;}
.adm-kc-vendor{display:inline-block;background:#eef6fb;color:#0e7490;border:1px solid #cfe8f1;border-radius:999px;padding:2px 11px;font-size:11px;font-weight:600;margin:2px 4px 2px 0;white-space:nowrap;}
.adm-kc-none{color:#dc2626;font-size:12px;font-weight:600;}

/* ===== #213 主备密钥调用链 + 调整弹窗 ===== */
.adm-kc-card.manual{background:linear-gradient(135deg,#eef2ff,#e0e7ff);border-color:#c7d2fe;}
.adm-kc-card.manual .n{color:#4338ca;}
.adm-kc-chain-cell{display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-width:320px;}
.adm-kc-chain-item{display:inline-flex;align-items:center;gap:5px;background:#f4f7fb;border:1px solid #e3e9f1;border-radius:8px;padding:3px 8px;font-size:12px;}
.adm-kc-arrow{color:#94a3b8;font-weight:700;}
.adm-kc-role{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:20px;border-radius:6px;font-size:12px;font-weight:800;color:#fff;padding:0 6px;}
.adm-kc-role.primary{background:linear-gradient(135deg,#10b981,#059669);}
.adm-kc-role.backup{background:#94a3b8;}
.adm-kc-role.off{background:#cbd5e1;color:#475569;}
.adm-kc-chain-item .adm-kc-vendor{color:#1e293b;font-weight:600;}
.adm-kc-cost{color:#64748b;font-size:11px;}
.adm-kc-cost.unknown{color:#94a3b8;}
.adm-kc-key{font-style:normal;}
.adm-kc-key.no{filter:grayscale(.3);}
.adm-kc-keytext{font-size:11px;padding:1px 6px;border-radius:5px;}
.adm-kc-keytext.ok{background:#dcfce7;color:#15803d;}
.adm-kc-keytext.no{background:#fee2e2;color:#b91c1c;}
.adm-kc-pin{font-size:11px;background:#e0f2fe;color:#0369a1;border:1px solid #bae6fd;border-radius:5px;padding:0 6px;}
.adm-kc-manual{font-size:11px;background:#e0e7ff;color:#4338ca;border:1px solid #c7d2fe;border-radius:5px;padding:1px 7px;}
.adm-kc-auto{font-size:11px;color:#94a3b8;}
/* 厂商实时健康（#239） */
.adm-boxhead-ops{display:flex;gap:8px;align-items:center;}
.adm-vh-wrap{border:1px solid #e2e8f0;border-radius:14px;padding:14px 16px;margin-bottom:14px;background:linear-gradient(135deg,#f8fbfd,#eef4f9);}
.adm-vh-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:10px;}
.adm-vh-title{font-size:14px;font-weight:700;color:#0f172a;}
.adm-vh-checked{font-size:11px;color:#94a3b8;}
.adm-vh-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;}
.adm-vh-card{background:#fff;border:1px solid #e2e8f0;border-left:4px solid #cbd5e1;border-radius:11px;padding:10px 12px;display:flex;flex-direction:column;gap:5px;transition:box-shadow .15s;}
.adm-vh-card:hover{box-shadow:0 6px 18px rgba(15,23,42,.08);}
.adm-vh-card.ok{border-left-color:#10b981;}
.adm-vh-card.bad{border-left-color:#ef4444;background:#fefdfd;}
.adm-vh-card.miss{border-left-color:#f59e0b;background:#fffdf8;}
.adm-vh-card.unk{border-left-color:#94a3b8;}
.adm-vh-top{display:flex;align-items:center;gap:7px;}
.adm-vh-name{font-size:13px;font-weight:700;color:#1e293b;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.adm-vh-tag{font-size:11px;font-weight:700;padding:1px 8px;border-radius:999px;white-space:nowrap;}
.adm-vh-tag.vh-ok{background:#dcfce7;color:#15803d;}
.adm-vh-tag.vh-bad{background:#fee2e2;color:#b91c1c;}
.adm-vh-tag.vh-miss{background:#fef3c7;color:#b45309;}
.adm-vh-tag.vh-unk{background:#e2e8f0;color:#475569;}
.adm-vh-mid{font-size:12px;color:#475569;}
.adm-vh-mid b{color:#0f172a;font-size:13px;}
.adm-vh-note{font-size:11px;color:#94a3b8;line-height:1.45;min-height:15px;}
.adm-vh-loading{grid-column:1/-1;color:#64748b;font-size:13px;padding:14px;}
.adm-vh-dot{display:inline-block;width:9px;height:9px;border-radius:50%;flex-shrink:0;background:#94a3b8;}
.adm-vh-dot.vh-ok{background:#10b981;box-shadow:0 0 0 3px rgba(16,185,129,.15);}
.adm-vh-dot.vh-bad{background:#ef4444;box-shadow:0 0 0 3px rgba(239,68,68,.15);}
.adm-vh-dot.vh-miss{background:#f59e0b;}
.adm-vh-dot.vh-unk{background:#94a3b8;}
.adm-kc-chain-item .adm-vh-dot{margin-right:1px;}
.adm-rt-overlay{position:fixed;inset:0;background:rgba(15,23,42,.55);backdrop-filter:blur(2px);display:none;align-items:center;justify-content:center;z-index:9999;padding:24px;}
.adm-rt-box{width:640px;max-width:96vw;max-height:88vh;overflow:auto;background:#fff;border-radius:14px;box-shadow:0 24px 60px rgba(2,6,23,.35);display:flex;flex-direction:column;}
.adm-rt-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #eef2f7;}
.adm-rt-head h3{margin:0;font-size:16px;color:#0f172a;}
.adm-rt-x{border:none;background:#f1f5f9;width:30px;height:30px;border-radius:8px;font-size:18px;cursor:pointer;color:#475569;}
.adm-rt-x:hover{background:#e2e8f0;}
.adm-rt-tip{padding:12px 20px;font-size:12.5px;color:#64748b;background:#f8fafc;border-bottom:1px solid #eef2f7;line-height:1.6;}
.adm-rt-list{padding:14px 20px;display:flex;flex-direction:column;gap:8px;overflow:auto;}
.adm-rt-row{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid #e3e9f1;border-radius:10px;padding:10px 12px;background:#fff;}
.adm-rt-row.disabled{background:#f8fafc;opacity:.62;}
.adm-rt-main{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.adm-rt-ops{display:flex;gap:6px;flex-shrink:0;}
.adm-rt-foot{display:flex;align-items:center;gap:10px;padding:14px 20px;border-top:1px solid #eef2f7;}
.adm-rt-spacer{flex:1;}
/* #269 厂商卡片底部充值/控制台链接 */
.adm-vh-foot{margin-top:2px;border-top:1px dashed #eef2f7;padding-top:7px;display:flex;}
.adm-vh-recharge{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:600;color:#0ea5e9;text-decoration:none;padding:4px 10px;border:1px solid #bae6fd;border-radius:999px;background:#f0f9ff;transition:all .15s;}
.adm-vh-recharge:hover{background:#e0f2fe;color:#0369a1;border-color:#7dd3fc;}
.adm-rt-recharge{display:inline-flex;align-items:center;font-size:12px;font-weight:600;color:#0ea5e9;text-decoration:none;padding:0 10px;line-height:28px;border:1px solid #bae6fd;border-radius:7px;background:#f0f9ff;transition:all .15s;}
.adm-rt-recharge:hover{background:#e0f2fe;color:#0369a1;border-color:#7dd3fc;}

/* ===== #267 余额/用量监控 ===== */
.adm-mon-wrap{margin:14px 0 6px;background:linear-gradient(180deg,#0e1826,#0c141f);border:1px solid rgba(34,211,238,.16);border-radius:14px;padding:14px 16px;}
.adm-mon-head{display:flex;align-items:center;gap:12px;margin-bottom:12px;}
.adm-mon-title{font-size:14px;font-weight:800;color:#eaf2ff;letter-spacing:.4px;display:flex;align-items:center;gap:8px;}
.adm-mon-title::before{content:"";width:4px;height:15px;border-radius:2px;background:linear-gradient(180deg,#22d3ee,#a855f7);}
.adm-mon-checked{font-size:12px;color:#7c93ad;flex:1;}
#vmBtn{margin-left:auto;}
.adm-mon-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-bottom:14px;}
.adm-mon-card{background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.07);border-radius:11px;padding:10px 12px;display:flex;flex-direction:column;gap:3px;}
.adm-mon-card .n{font-size:19px;font-weight:800;color:#f1f6fc;line-height:1.1;}
.adm-mon-card .l{font-size:11.5px;color:#8298b3;}
.adm-mon-card.img .n{color:#34d399;}
.adm-mon-card.vid .n{color:#38bdf8;}
.adm-mon-card.chat .n{color:#c084fc;}
.adm-mon-card.cost .n{color:#fbbf24;font-size:16px;}
.adm-mon-card.day .n{color:#fb923c;font-size:16px;}
.adm-mon-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px;margin-bottom:14px;}
.adm-mon-bcard{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);border-left:4px solid #64748b;border-radius:11px;padding:10px 12px;display:flex;flex-direction:column;gap:7px;}
.adm-mon-bcard.ok{border-left-color:#10b981;}
.adm-mon-bcard.bad{border-left-color:#ef4444;}
.adm-mon-bcard.inf{border-left-color:#a855f7;}
.adm-mon-btop{display:flex;align-items:center;gap:8px;}
.adm-mon-bname{font-size:13px;font-weight:700;color:#eaf2ff;flex:1;}
.adm-mon-btag{font-size:11px;font-weight:700;padding:2px 9px;border-radius:999px;background:rgba(148,163,184,.18);color:#aebfd4;}
.adm-mon-bcard.ok .adm-mon-btag{background:rgba(16,185,129,.18);color:#6ee7b7;}
.adm-mon-bcard.bad .adm-mon-btag{background:rgba(239,68,68,.18);color:#fca5a5;}
.adm-mon-bcard.inf .adm-mon-btag{background:rgba(168,85,247,.2);color:#d8b4fe;}
.adm-mon-bbody{display:flex;flex-direction:column;gap:2px;}
.adm-mon-bbody .big{font-size:21px;font-weight:800;color:#f4f8ff;}
.adm-mon-bsub{font-size:11.5px;color:#8298b3;}
.adm-mon-usage{overflow-x:auto;}
.adm-mon-usage table{min-width:820px;}
.adm-mon-usage thead th{white-space:nowrap;}
.adm-mon-vname{font-weight:700;color:#cfe3ff;}

/* ===== #229 后台高级化：会员与通知 + 通用次级按钮 + 侧栏/顶栏质感 ===== */
.adm-btn{background:rgba(255,255,255,.06);color:var(--txt);border:1px solid var(--line);border-radius:10px;padding:10px 16px;font-weight:600;font-size:13.5px;transition:.16s;}
.adm-btn:hover{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.22);}
.adm-btn.ok{color:#04121a;background:linear-gradient(135deg,var(--green),#10b981);border-color:transparent;}
.adm-box-title{font-size:15px;font-weight:800;color:var(--txt);margin-bottom:10px;display:flex;align-items:center;gap:8px;letter-spacing:.3px;}
.adm-box-title::before{content:"";width:4px;height:15px;border-radius:2px;background:linear-gradient(180deg,var(--cyan),var(--purple));}
/* 会员等级编辑器 */
#memberLevelsTable table{min-width:760px;}
#memberLevelsTable thead th{white-space:nowrap;}
#memberLevelsTable tbody tr{transition:background .15s;}
#memberLevelsTable tbody tr:hover{background:rgba(34,211,238,.05);}
#memberLevelsTable input{max-width:none!important;}
#memberLevelsTable input[type=color]{width:46px;height:32px;padding:2px;border-radius:8px;cursor:pointer;background:#0a121b;}
#memberLevelsTable input[data-f=perks]{min-width:240px;max-width:340px!important;}
#mbFloor{height:36px;border:1px solid var(--line);border-radius:9px;background:#0a121b;color:var(--txt);}
#mbFloor:focus{outline:none;border-color:var(--cyan);box-shadow:0 0 0 3px rgba(34,211,238,.14);}
#mbCustom{color:var(--amber);}
/* 侧栏 / 顶栏更高级的金属质感 */
.adm-side{background:linear-gradient(180deg,#0d151f 0%,#0b1118 100%);}
.adm-side nav button.active{background:linear-gradient(90deg,rgba(34,211,238,.18),rgba(34,211,238,.04));box-shadow:inset 2px 0 0 var(--cyan);}
.adm-logo span{box-shadow:0 6px 18px -6px rgba(34,211,238,.6);}
.adm-top{background:linear-gradient(90deg,rgba(14,22,32,.92),rgba(14,22,32,.78));border-bottom:1px solid rgba(34,211,238,.12);}
.adm-stat{transition:transform .18s,box-shadow .18s;}
.adm-stat:hover{transform:translateY(-2px);box-shadow:0 14px 34px -18px rgba(0,0,0,.7);}
.adm-box{box-shadow:0 1px 0 rgba(255,255,255,.02) inset;}
.adm-btn-primary{box-shadow:0 8px 20px -8px rgba(34,211,238,.55);}
@media(max-width:820px){#memberLevelsTable input[data-f=perks]{min-width:160px;}}

/* ========== 高级化概览（KPI / 趋势 / 厂商 / 分布） ========== */
.ov-kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:18px;}
.ov-kpi{position:relative;display:flex;align-items:center;gap:14px;padding:18px 20px;border-radius:16px;color:#fff;overflow:hidden;
  box-shadow:0 16px 38px -20px rgba(0,0,0,.8);transition:transform .2s,box-shadow .2s;}
.ov-kpi::after{content:"";position:absolute;right:-28px;top:-28px;width:96px;height:96px;border-radius:50%;
  background:radial-gradient(circle,rgba(255,255,255,.22),transparent 70%);}
.ov-kpi:hover{transform:translateY(-3px);box-shadow:0 22px 46px -20px rgba(0,0,0,.9);}
.ov-kpi-ico{font-size:26px;width:48px;height:48px;display:flex;align-items:center;justify-content:center;border-radius:13px;
  background:rgba(255,255,255,.16);backdrop-filter:blur(4px);flex:none;}
.ov-kpi-body{display:flex;flex-direction:column;min-width:0;}
.ov-kpi-label{font-size:12.5px;opacity:.92;}
.ov-kpi-body strong{font-size:26px;font-weight:800;line-height:1.25;font-variant-numeric:tabular-nums;letter-spacing:.3px;}
.ov-kpi-body small{font-size:11px;opacity:.85;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ov-grid{display:grid;grid-template-columns:1.55fr 1fr;gap:16px;}
.ov-grid3{grid-template-columns:1.15fr 1.25fr .9fr;margin-top:16px;}
.ov-grid .adm-box,.ov-grid3 .adm-box{margin-bottom:0;}
.ov-chart-box{min-height:278px;}
.ov-legend{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--dim);flex-wrap:wrap;}
.lg-ln{display:inline-block;width:16px;height:3px;border-radius:2px;margin-left:10px;}
.lg-rev{background:#2dd4bf;}.lg-spd{background:#f59e0b;}.lg-usrs{background:#38bdf8;}
.ov-chart{width:100%;}
.ov-svg{width:100%;height:240px;display:block;}
.ov-axis{fill:var(--dim);font-size:10px;}
.ov-vendor{display:flex;flex-direction:column;gap:9px;max-height:238px;overflow:auto;}
.vh-row{display:grid;grid-template-columns:14px 1fr auto;grid-template-rows:auto auto;gap:1px 8px;align-items:center;
  padding:9px 12px;border-radius:11px;background:rgba(255,255,255,.03);border:1px solid var(--line);}
.vh-dot{font-size:12px;grid-row:1/3;}
.vh-name{font-weight:700;font-size:13.5px;}
.vh-tag{font-size:11.5px;padding:2px 9px;border-radius:999px;text-align:center;white-space:nowrap;}
.vh-note{grid-column:2/4;color:var(--dim);font-size:11px;}
.vh-ok .vh-dot{color:#34d399;}.vh-ok .vh-tag{background:rgba(52,211,153,.15);color:#6ee7b7;}
.vh-bad .vh-dot{color:#f87171;}.vh-bad .vh-tag{background:rgba(248,113,113,.15);color:#fca5a5;}
.vh-unknown .vh-dot{color:#fbbf24;}.vh-unknown .vh-tag{background:rgba(251,191,36,.15);color:#fcd34d;}
#ovMemberDist,#ovTopModels,#ovCats{display:flex;flex-direction:column;gap:10px;}
.ov-dist-row,.ov-rank-row,.ov-cat-row{display:flex;align-items:center;gap:10px;font-size:13px;}
.ov-dist-name{width:150px;flex:none;font-weight:700;font-size:12.5px;display:flex;flex-direction:column;line-height:1.3;}
.ov-dist-name small{color:var(--dim);font-weight:400;font-size:10.5px;}
.ov-dist-bar,.ov-rank-bar{flex:1;height:8px;border-radius:999px;background:rgba(255,255,255,.06);overflow:hidden;}
.ov-dist-bar i,.ov-rank-bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--cyan),var(--purple));transition:width .5s;}
.ov-dist-cnt{width:64px;flex:none;text-align:right;color:var(--dim);font-variant-numeric:tabular-nums;}
.ov-dist-total{margin-top:6px;padding-top:10px;border-top:1px dashed var(--line);color:var(--dim);font-size:12px;}
.ov-rank-no{width:20px;height:20px;flex:none;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;background:rgba(255,255,255,.07);color:var(--dim);}
.ov-rank-no.top{background:linear-gradient(135deg,#f59e0b,#fbbf24);color:#3a2a05;}
.ov-rank-name{width:130px;flex:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12.5px;}
.ov-rank-val{width:64px;flex:none;text-align:right;color:var(--amber);font-variant-numeric:tabular-nums;font-weight:700;}
.ov-cat-name{width:78px;flex:none;font-size:12.5px;}
.ov-cat-pct{width:52px;flex:none;text-align:right;color:var(--cyan);font-variant-numeric:tabular-nums;}
.ov-total{margin-top:18px;}
@media(max-width:1280px){.ov-grid3{grid-template-columns:1fr;}.ov-grid{grid-template-columns:1fr;}}
@media(max-width:1100px){.ov-kpi-row{grid-template-columns:repeat(2,1fr);}}
@media(max-width:720px){.ov-kpi-row{grid-template-columns:1fr;}.ov-dist-name{width:120px;}.ov-rank-name{width:96px;}}
