/* ============ 后台管理 ============ */

/* ---- 后台管理 ---- */
.admin-layout{display:grid;grid-template-columns:210px 1fr;gap:20px;align-items:start}
@media(max-width:900px){.admin-layout{grid-template-columns:1fr}}
.admin-side{position:sticky;top:86px;padding:12px;border-radius:var(--r2)}
.admin-side .a-brand{display:flex;align-items:center;gap:9px;padding:10px 12px 16px;font-weight:700;font-size:15.5px;border-bottom:1px solid var(--line);margin-bottom:8px}
.admin-side a{display:flex;align-items:center;gap:9px;padding:10px 12px;border-radius:10px;font-size:13.5px;color:var(--txt2);transition:.2s}
.admin-side a:hover{background:rgba(120,120,255,.1);color:var(--txt)}
.admin-side a.on{background:var(--grad);color:#0a0a18;font-weight:700}
.admin-side .a-sec{font-size:11px;color:var(--txt3);padding:12px 12px 5px;letter-spacing:1px}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:14px;margin-bottom:24px}
.stat-card{padding:18px 20px;border-radius:var(--r2);position:relative;overflow:hidden;transform-style:preserve-3d;transition:.25s}
.stat-card:hover{transform:translateY(-3px) rotateX(4deg)}
.stat-card .s-ico{position:absolute;right:10px;top:10px;font-size:34px;opacity:.14}
.stat-card b{font-size:26px;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.stat-card span{display:block;font-size:12px;color:var(--txt3);margin-top:3px}
.stat-card .s-trend{font-size:11px;color:var(--cyan);margin-top:6px}
table.tbl{width:100%;border-collapse:collapse;font-size:13px}
table.tbl th{text-align:left;padding:11px 14px;color:var(--txt3);font-weight:500;font-size:12px;border-bottom:1px solid var(--line2);white-space:nowrap}
table.tbl td{padding:11px 14px;border-bottom:1px solid var(--line);vertical-align:middle}
table.tbl tr:hover td{background:rgba(120,120,255,.06)}
.tbl-wrap{border-radius:var(--r2);overflow:hidden;border:1px solid var(--line);background:var(--panel);overflow-x:auto}
.tbl-title{display:flex;align-items:center;gap:12px;margin:0 0 16px}
.tbl-title h2{font-size:19px}
.tbl-title .spacer{flex:1}
.pill{display:inline-block;padding:2.5px 10px;border-radius:20px;font-size:11.5px;font-weight:600}
.pill.ok{background:rgba(94,234,212,.15);color:var(--cyan)}
.pill.warn{background:rgba(251,191,36,.15);color:var(--gold)}
.pill.bad{background:rgba(248,113,113,.15);color:#f87171}
.pill.info{background:rgba(96,165,250,.15);color:var(--blue)}
.pill.mute{background:rgba(120,120,255,.12);color:var(--txt2)}
.cell-user{display:flex;align-items:center;gap:9px}
.cell-user img{width:32px;height:32px;border-radius:50%;object-fit:cover;background:#22224a}
.mini-btn{padding:4px 12px;border-radius:8px;font-size:12px;background:rgba(120,120,255,.12);
  border:1px solid var(--line);color:var(--txt2);transition:.2s;margin-right:6px}
.mini-btn:hover{background:var(--grad);color:#0a0a18;border-color:transparent}
.mini-btn.danger:hover{background:linear-gradient(120deg,#f87171,#fb923c);color:#fff}
.pager{display:flex;gap:6px;justify-content:flex-end;margin-top:16px;align-items:center;font-size:12.5px;color:var(--txt3)}
.pager button{min-width:30px;height:30px;border-radius:8px;background:rgba(120,120,255,.1);border:1px solid var(--line);font-size:12.5px}
.pager button.on{background:var(--grad);color:#0a0a18;font-weight:700;border-color:transparent}
.filter-bar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px;align-items:center}
.filter-bar input,.filter-bar select{height:34px;padding:0 12px;border-radius:10px;border:1px solid var(--line2);
  background:rgba(30,30,60,.5);color:var(--txt);font-size:13px;outline:none}
.filter-bar input:focus{border-color:var(--cyan)}
.bar-mini{display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:var(--r);background:var(--panel);border:1px solid var(--line);margin-bottom:16px}
.bar-mini b{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;font-size:19px}
.act-item{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--line);font-size:13px}
.act-item .a-dot{width:8px;height:8px;border-radius:50%;background:var(--cyan);margin-top:6px;flex:none;box-shadow:0 0 8px var(--cyan)}
.act-item .a-time{color:var(--txt3);font-size:11.5px;margin-top:3px}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:20px}
@media(max-width:900px){.grid-2{grid-template-columns:1fr}}

/* ---- 后台入口校验门（未持管理员会话时显示；后台不出现在任何前台导航） ---- */
.admin-gate{display:flex;align-items:center;justify-content:center;padding:80px 20px}
.admin-gate-card{max-width:400px;width:100%;text-align:center;padding:36px 30px}
.admin-gate-card h2{margin:0 0 8px;font-size:20px}
.gate-tip{margin:0 0 20px;color:var(--txt3);font-size:12.5px;line-height:1.7}
.gate-foot{margin-top:16px;font-size:12.5px;color:var(--txt3)}
.gate-foot a{color:var(--cyan);text-decoration:none}

/* ---- 侧栏管理员身份条 ---- */
.admin-side .a-admin-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:8px 12px;margin:0 0 8px;border-radius:10px;background:rgba(120,120,255,.08);font-size:12.5px}
.admin-side .a-admin-who{color:var(--txt2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
