* { margin:0; padding:0; box-sizing:border-box; }

body {
  font-family:'Segoe UI','PingFang SC','Microsoft YaHei',sans-serif;
  background:#f0f2f5;min-height:100vh;color:#1e293b;
}

/* ═══ Login ═══ */
.login-wrap {
  display:flex;justify-content:center;align-items:center;
  min-height:100vh;
  background:linear-gradient(135deg,#6366f1,#8b5cf6,#a855f7);
}
.login-box {
  background:#fff;border-radius:20px;padding:44px 40px;
  width:400px;box-shadow:0 20px 60px rgba(0,0,0,.15);
}
.login-box h1 { text-align:center; margin-bottom:8px; font-weight:600; font-size:1.4rem; }
.login-box .login-sub { text-align:center; color:#94a3b8; font-size:.85rem; margin-bottom:28px; }
.login-box label { display:block; font-size:.85rem; margin-bottom:4px; color:#475569; }
.login-box input {
  width:100%;padding:10px 14px;border:1px solid #e2e8f0;border-radius:10px;
  font-size:.9rem;margin-bottom:18px;outline:none;transition:border .2s;
}
.login-box input:focus { border-color:#6366f1;box-shadow:0 0 0 3px rgba(99,102,241,.1); }
.login-box .btn {
  width:100%;padding:11px;
  background:linear-gradient(135deg,#6366f1,#8b5cf6);
  color:#fff;border:none;border-radius:10px;font-size:.95rem;cursor:pointer;font-weight:500;
}
.login-box .btn:hover { opacity:.92; }
.error { color:#ef4444; font-size:.85rem; text-align:center; margin-bottom:12px; }

/* ═══ Admin Layout ═══ */
.admin-wrap { display:flex; min-height:100vh; }

/* ── Sidebar ── */
.sidebar {
  width:220px;background:#fff;border-right:1px solid #e2e8f0;
  display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:100;
}
.sidebar-brand {
  padding:20px 20px;display:flex;align-items:center;gap:10px;
  font-weight:600;font-size:1rem;color:#1e293b;
  border-bottom:1px solid #f1f5f9;
}
.sidebar-brand i { font-size:1.3rem; color:#6366f1; }
.sidebar-nav { flex:1; padding:12px 0; overflow-y:auto; }
.sidebar-nav a {
  display:flex;align-items:center;gap:10px;
  padding:10px 20px;text-decoration:none;color:#64748b;
  font-size:.85rem;transition:all .15s ease;position:relative;
}
.sidebar-nav a i { width:18px; text-align:center; font-size:.9rem; }
.sidebar-nav a:hover { color:#1e293b; background:#f8fafc; }
.sidebar-nav a.active {
  color:#6366f1;background:rgba(99,102,241,.06);font-weight:500;
}
.sidebar-nav a.active::before {
  content:'';position:absolute;left:0;top:6px;bottom:6px;width:3px;
  background:#6366f1;border-radius:0 3px 3px 0;
}
.sidebar-footer {
  padding:12px 0;border-top:1px solid #f1f5f9;
}
.sidebar-footer a {
  display:flex;align-items:center;gap:10px;
  padding:10px 20px;text-decoration:none;color:#64748b;
  font-size:.85rem;transition:all .15s ease;
}
.sidebar-footer a i { width:18px; text-align:center; }
.sidebar-footer a:hover { color:#ef4444; background:#fef2f2; }

/* ── Main ── */
.admin-main {
  margin-left:220px;flex:1;padding:28px 32px;min-height:100vh;
}

/* ── Page header ── */
.page-header {
  display:flex;justify-content:space-between;align-items:center;
  margin-bottom:28px;
}
.page-header h2 { font-size:1.3rem; font-weight:600; display:flex; align-items:center; gap:8px; }
.page-header h2 i { color:#6366f1; }
.page-header .btn-back {
  color:#64748b;text-decoration:none;font-size:.85rem;
  display:flex;align-items:center;gap:6px;
}
.page-header .btn-back:hover { color:#1e293b; }

/* ── Stats cards ── */
.stat-grid {
  display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:16px;margin-bottom:32px;
}
.stat-card {
  background:#fff;border-radius:14px;padding:20px;
  box-shadow:0 2px 8px rgba(0,0,0,.03);
  display:flex;align-items:center;gap:16px;
}
.stat-card i { font-size:1.6rem; }
.stat-card .stat-num { font-size:1.8rem; font-weight:700; color:#1e293b; line-height:1; }
.stat-card .stat-label { font-size:.8rem; color:#94a3b8; margin-top:4px; }

/* ── Dashboard nav ── */
.dash-grid {
  display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px;margin-bottom:32px;
}
.dash-card {
  background:#fff;border-radius:14px;padding:24px;
  text-align:center;text-decoration:none;color:inherit;
  box-shadow:0 2px 8px rgba(0,0,0,.03);
  transition:transform .2s,box-shadow .2s;
  border:1px solid transparent;
}
.dash-card:hover { transform:translateY(-3px); box-shadow:0 12px 32px rgba(0,0,0,.06); border-color:#e2e8f0; }
.dash-card .dash-icon { font-size:1.8rem; color:#6366f1; margin-bottom:10px; }
.dash-card h3 { font-size:.95rem; margin-bottom:4px; }
.dash-card p { font-size:.78rem; color:#94a3b8; }

/* ── Panel ── */
.panel {
  background:#fff;border-radius:14px;padding:28px;
  box-shadow:0 2px 8px rgba(0,0,0,.03);margin-bottom:24px;
}
.panel h3 {
  font-size:1.05rem;margin-bottom:20px;
  padding-bottom:12px;border-bottom:1px solid #f1f5f9;
  display:flex;align-items:center;gap:8px;
}
.panel h3 i { color:#6366f1; }

/* ── Form ── */
.form-group { margin-bottom:16px; }
.form-group label { display:block; font-size:.82rem; color:#475569; margin-bottom:5px; font-weight:500; }
.form-group input, .form-group textarea, .form-group select {
  width:100%;padding:9px 12px;border:1px solid #e2e8f0;border-radius:8px;
  font-size:.88rem;outline:none;transition:border .2s;font-family:inherit;
}
.form-group input:focus, .form-group textarea:focus, .form-group select:focus {
  border-color:#6366f1;box-shadow:0 0 0 3px rgba(99,102,241,.08);
}
.form-group textarea { resize:vertical; min-height:80px; }

.form-row {
  display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;
}
.form-row .form-group { margin-bottom:0; }
.form-row .form-group input, .form-row .form-group select { width:auto; }

/* ── Buttons ── */
.btn {
  display:inline-block;padding:9px 20px;border-radius:8px;
  text-decoration:none;font-size:.85rem;cursor:pointer;
  border:none;font-weight:500;transition:all .15s ease;
}
.btn-primary { background:#6366f1; color:#fff; }
.btn-primary:hover { background:#4f46e5; }
.btn-success { background:#10b981; color:#fff; }
.btn-success:hover { background:#059669; }
.btn-danger { background:#ef4444; color:#fff; padding:4px 12px; font-size:.75rem; }
.btn-danger:hover { background:#dc2626; }
.btn-sm { font-size:.75rem; padding:5px 14px; }
.btn-ghost { background:transparent; color:#64748b; border:1px solid #e2e8f0; }
.btn-ghost:hover { background:#f8fafc; }

/* ── Messages ── */
.msg { padding:10px 16px; border-radius:8px; margin-bottom:16px; font-size:.85rem; }
.msg-success { background:#d1fae5; color:#065f46; border:1px solid #a7f3d0; }
.msg-error { background:#fee2e2; color:#991b1b; border:1px solid #fecaca; }

/* ── Table ── */
table { width:100%; border-collapse:collapse; font-size:.85rem; }
table th, table td { text-align:left; padding:10px 8px; border-bottom:1px solid #f1f5f9; }
table th { font-weight:600; color:#64748b; font-size:.78rem; text-transform:uppercase; letter-spacing:.5px; }
table td.actions { white-space:nowrap; }
table td.actions a { margin-right:6px; }
.inline-form { display:inline; }

/* ── Inline edit cards ── */
.form-inline-card {
  background:#f8fafc;border-radius:10px;padding:14px 16px;margin-bottom:10px;
  border:1px solid #f1f5f9;
}
.form-inline-card .row { display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
.form-inline-card .row input, .form-inline-card .row select {
  padding:7px 10px;border:1px solid #e2e8f0;border-radius:6px;font-size:.83rem;outline:none;
}
.form-inline-card .row input:focus, .form-inline-card .row select:focus { border-color:#6366f1; }
.form-inline-card .row .w1 { width:80px; }
.form-inline-card .row .w2 { width:160px; flex:1; min-width:100px; }
