:root{
  --bg:#0B1221; --card:#182038; --raised:#232C4A; --accent:#6366F1;
  --accent2:#4F46E5; --accent-light:#A5B4FC; --muted:#94A3B8; --text:#F8FAFC;
  --border:rgba(255,255,255,.08); --ok:#22C55E; --warn:#F59E0B; --danger:#EF4444;
}
*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--bg);color:var(--text);font-family:'Segoe UI',Tahoma,sans-serif;min-height:100vh}
a{text-decoration:none}

/* ---- admin shell ---- */
.layout{display:flex;min-height:100vh}
.sidebar{width:240px;background:#0E1728;border-right:1px solid var(--border);padding:22px 0;position:fixed;top:0;bottom:0;left:0;overflow-y:auto}
.sidebar .brand{display:flex;align-items:center;gap:10px;padding:0 22px 20px;border-bottom:1px solid var(--border);margin-bottom:14px}
.sidebar .brand .logo{width:38px;height:38px;border-radius:10px;background:linear-gradient(135deg,var(--accent),var(--accent2));display:flex;align-items:center;justify-content:center;font-weight:800;color:#fff}
.sidebar .brand span{font-weight:800;letter-spacing:.3px}
.sidebar a.nav-item{display:flex;align-items:center;gap:12px;color:var(--muted);padding:12px 22px;font-weight:600;font-size:.92rem;border-left:3px solid transparent}
.sidebar a.nav-item i{width:18px;text-align:center}
.sidebar a.nav-item:hover{color:#fff;background:rgba(255,255,255,.03)}
.sidebar a.nav-item.active{color:#fff;background:rgba(99,102,241,.12);border-left-color:var(--accent)}
.main{margin-left:240px;flex:1;display:flex;flex-direction:column}
.topbar{display:flex;align-items:center;justify-content:space-between;padding:16px 28px;border-bottom:1px solid var(--border);background:rgba(255,255,255,.02)}
.topbar h1{font-size:1.15rem;font-weight:700}
.topbar .who{color:var(--muted);font-size:.88rem}
.topbar .who a{color:var(--accent-light);margin-left:14px;font-weight:600}
.content{padding:28px;max-width:1200px;width:100%}

/* ---- cards / stats ---- */
.card2{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:22px;margin-bottom:22px}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px;margin-bottom:24px}
.stat{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:20px}
.stat .k{color:var(--muted);font-size:.8rem;text-transform:uppercase;letter-spacing:1px}
.stat .v{font-size:1.8rem;font-weight:800;margin-top:6px}
.stat .v.small{font-size:1.25rem}

/* ---- forms ---- */
label.form-label{color:#cbd5e1;font-weight:600;font-size:.85rem}
.form-control,.form-select{background:var(--raised);border:1px solid var(--border);color:var(--text);border-radius:10px;padding:10px 12px}
.form-control:focus,.form-select:focus{background:var(--raised);color:var(--text);border-color:var(--accent);box-shadow:0 0 0 3px rgba(99,102,241,.25)}
.form-control::placeholder{color:#64748B}
.btn-accent{background:var(--accent);border:none;color:#fff;font-weight:700;border-radius:10px;padding:10px 18px;cursor:pointer}
.btn-accent:hover{background:var(--accent2);color:#fff}
.btn-ghost{background:transparent;border:1px solid var(--border);color:var(--text);border-radius:10px;padding:8px 14px;font-weight:600;cursor:pointer}
.btn-ghost:hover{background:rgba(255,255,255,.05);color:#fff}

/* ---- tables ---- */
.table{color:var(--text)}
.table thead th{color:var(--muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.5px;border-color:var(--border)}
.table td{border-color:var(--border);vertical-align:middle}
.table tbody tr:hover{background:rgba(255,255,255,.02)}
.badge-pill{padding:5px 11px;border-radius:999px;font-size:.72rem;font-weight:700}
.b-active{background:rgba(34,197,94,.15);color:#4ade80}
.b-pending{background:rgba(245,158,11,.15);color:#fbbf24}
.b-expired,.b-suspended,.b-inactive{background:rgba(239,68,68,.15);color:#f87171}
.b-paid{background:rgba(34,197,94,.15);color:#4ade80}
.b-unpaid{background:rgba(245,158,11,.15);color:#fbbf24}
.b-cancelled{background:rgba(239,68,68,.15);color:#f87171}

/* ---- alerts ---- */
.alert{border-radius:12px;border:none;padding:12px 16px;margin-bottom:18px}
.alert-success{background:rgba(34,197,94,.12);color:#4ade80;border-left:4px solid var(--ok)}
.alert-danger{background:rgba(239,68,68,.12);color:#f87171;border-left:4px solid var(--danger)}
.alert-info{background:rgba(99,102,241,.12);color:var(--accent-light);border-left:4px solid var(--accent)}

/* ---- auth card ---- */
.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}
.auth-card{width:100%;max-width:420px;background:var(--card);border:1px solid var(--border);border-radius:20px;padding:42px 38px;box-shadow:0 20px 60px rgba(0,0,0,.5)}
.auth-logo{text-align:center;margin-bottom:28px}
.auth-logo .mark{width:62px;height:62px;border-radius:16px;background:linear-gradient(135deg,var(--accent),var(--accent2));display:inline-flex;align-items:center;justify-content:center;font-size:1.8rem;font-weight:800;color:#fff;margin-bottom:12px}
.auth-logo h2{color:#fff;font-weight:800;font-size:1.5rem}
.auth-logo p{color:var(--muted);letter-spacing:2px;font-size:.78rem;margin-top:4px}

/* ---- portal top navbar ---- */
.pnav{display:flex;align-items:center;justify-content:space-between;padding:16px 5%;border-bottom:1px solid var(--border);background:#0E1728;position:sticky;top:0;z-index:10}
.pnav .brand{display:flex;align-items:center;gap:10px;font-weight:800;color:#fff}
.pnav .brand .mark{width:36px;height:36px;border-radius:9px;background:linear-gradient(135deg,var(--accent),var(--accent2));display:flex;align-items:center;justify-content:center;color:#fff}
.pnav .links a{color:var(--muted);font-weight:600;margin-left:20px;font-size:.92rem}
.pnav .links a:hover,.pnav .links a.active{color:#fff}
.pwrap{max-width:1100px;margin:0 auto;padding:28px 20px}

@media(max-width:820px){
  .sidebar{width:68px}.sidebar .brand span,.sidebar a.nav-item span{display:none}.main{margin-left:68px}
  .pnav .links a{margin-left:12px}
}
