/* ============ 后台管理样式 ============ */
* { box-sizing: border-box; }
body.admin { margin:0; font-family:"PingFang SC","Microsoft YaHei",-apple-system,"Segoe UI",Roboto,sans-serif; background:#f3f5f9; color:#1f2a3d; }
.admin-shell { display:flex; min-height:100vh; }
.sidebar { width:230px; background:#0c1730; color:#aab8d4; display:flex; flex-direction:column; position:fixed; top:0; bottom:0; left:0; }
.sidebar .s-brand { padding:20px 22px; color:#fff; font-weight:800; font-size:17px; display:flex; align-items:center; gap:10px; border-bottom:1px solid rgba(255,255,255,.07); }
.sidebar .s-brand .logo { width:32px;height:32px;border-radius:9px;background:linear-gradient(135deg,#1f5cff,#16c2ff);display:grid;place-items:center;color:#fff;font-weight:900; }
.sidebar nav { padding:10px; overflow-y:auto; flex:1; }
.sidebar nav a { display:flex; align-items:center; gap:10px; padding:11px 14px; border-radius:10px; color:#aab8d4; font-size:14.5px; margin-bottom:3px; transition:.2s; }
.sidebar nav a:hover { background:rgba(255,255,255,.06); color:#fff; }
.sidebar nav a.active { background:linear-gradient(120deg,#1f5cff,#16c2ff); color:#fff; }
.sidebar nav a svg { width:18px;height:18px; }
.sidebar .s-foot { padding:14px; font-size:12px; color:#6f7da0; border-top:1px solid rgba(255,255,255,.07); }
.main { margin-left:230px; flex:1; display:flex; flex-direction:column; min-width:0; }
.topbar { height:60px; background:#fff; border-bottom:1px solid #e8ecf3; display:flex; align-items:center; justify-content:space-between; padding:0 24px; position:sticky; top:0; z-index:10; }
.topbar .t-title { font-weight:700; font-size:17px; }
.topbar .t-actions a { color:#1f5cff; font-weight:600; font-size:14px; text-decoration:none; margin-left:16px; }
.content { padding:26px 24px; }
.card-box { background:#fff; border:1px solid #e8ecf3; border-radius:14px; padding:22px; box-shadow:0 4px 14px rgba(20,40,90,.04); margin-bottom:22px; }
.card-box h3 { margin:0 0 16px; font-size:16px; }
.toolbar { display:flex; justify-content:space-between; align-items:center; margin-bottom:16px; flex-wrap:wrap; gap:10px; }
.btn { display:inline-flex; align-items:center; gap:7px; padding:9px 16px; border-radius:9px; font-size:14px; font-weight:600; cursor:pointer; border:1px solid transparent; text-decoration:none; }
.btn-primary { background:#1f5cff; color:#fff; }
.btn-primary:hover { background:#1547d6; }
.btn-ghost { background:#fff; color:#1f5cff; border-color:#cdd8ee; }
.btn-ghost:hover { background:#f3f7ff; }
.btn-danger { background:#fff; color:#e23b3b; border-color:#f0c4c4; }
.btn-danger:hover { background:#fdecec; }
.btn-sm { padding:6px 11px; font-size:13px; }
table.adm { width:100%; border-collapse:collapse; font-size:14px; }
table.adm th { text-align:left; color:#6b7894; font-weight:600; padding:11px 12px; border-bottom:2px solid #eef2f8; white-space:nowrap; }
table.adm td { padding:11px 12px; border-bottom:1px solid #f0f3f8; vertical-align:top; }
table.adm tr:hover td { background:#fafcff; }
.badge { display:inline-block; padding:2px 9px; border-radius:999px; font-size:12px; font-weight:600; }
.badge.on { background:#e8faf3; color:#04895f; }
.badge.off { background:#f0f2f6; color:#8a93a8; }
.form-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:16px; }
.form-grid .full { grid-column:1/-1; }
.field label { display:block; font-size:13px; font-weight:600; margin-bottom:6px; color:#3a465e; }
.field input, .field textarea, .field select { width:100%; padding:10px 12px; border:1px solid #d8e0ee; border-radius:9px; font-family:inherit; font-size:14px; background:#fbfdff; }
.field input:focus, .field textarea:focus, .field select:focus { outline:none; border-color:#1f5cff; box-shadow:0 0 0 3px rgba(31,92,255,.12); }
.field textarea { resize:vertical; min-height:90px; }
.hint { font-size:12px; color:#93a0b8; margin-top:4px; }
.form-actions { display:flex; gap:10px; margin-top:18px; }
.stat-cards { display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr)); gap:16px; }
.stat-card { background:#fff; border:1px solid #e8ecf3; border-radius:14px; padding:20px; }
.stat-card .n { font-size:30px; font-weight:800; color:#1f5cff; }
.stat-card .l { color:#6b7894; font-size:14px; margin-top:4px; }
.login-wrap { min-height:100vh; display:grid; place-items:center; background:linear-gradient(135deg,#0c1730,#1f5cff); padding:20px; }
.login-box { background:#fff; border-radius:18px; padding:38px 34px; width:380px; box-shadow:0 30px 70px rgba(0,0,0,.3); }
.login-box h2 { margin:0 0 4px; }
.login-box p { color:#6b7894; font-size:14px; margin-bottom:22px; }
.login-box .err { background:#fdecec; color:#c0392b; padding:10px 12px; border-radius:9px; font-size:13px; margin-bottom:14px; }
.login-box .field { margin-bottom:14px; }
.toast { position:fixed; top:20px; right:20px; background:#0c1730; color:#fff; padding:12px 18px; border-radius:10px; font-size:14px; opacity:0; transform:translateY(-10px); transition:.3s; z-index:100; }
.toast.show { opacity:1; transform:none; }
@media (max-width:760px){ .sidebar{transform:translateX(-100%);transition:.3s}.sidebar.open{transform:none}.main{margin-left:0}.form-grid{grid-template-columns:1fr} }
