:root{
  /* ---- Fizzy brand palette (from logo: teal + fresh green) ---- */
  --primary:#0e7c8b; --primary-d:#0a606b; --primary-l:#e3f4f6; --primary-rgb:14,124,139;
  --accent:#5cb82b; --accent-d:#4c9d24; --accent-l:#eef8e6; --accent-rgb:92,184,43;
  --ink:#0f3a44;
  --sidebar-bg:#0c3a43; --sidebar-bg2:#072830; --sidebar-tx:#9fc4cb; --sidebar-tx-active:#fff;
  --bg:#eef3f5; --card:#fff; --bd:#e2e9ec; --tx:#15303a; --muted:#64798a;
  --ok:#22c55e; --warn:#f59e0b; --danger:#ef4444; --info:#0ea5e9;
  --sidebar-w:266px; --topbar-h:66px; --radius:14px;
  --shadow:0 1px 2px rgba(16,24,40,.04),0 1px 3px rgba(16,24,40,.06);
}
*{box-sizing:border-box}
body{margin:0;font-family:'Segoe UI',system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--tx);font-size:14.5px}
a{text-decoration:none}

/* ---------- Layout ---------- */
.admin-wrap{display:flex;min-height:100vh}
.admin-main{flex:1;min-width:0;display:flex;flex-direction:column;margin-left:var(--sidebar-w);transition:margin .2s}
.admin-content{flex:1;padding:26px 28px}
.admin-footer{display:flex;justify-content:space-between;padding:14px 28px;color:var(--muted);font-size:13px;border-top:1px solid var(--bd)}

/* ---------- Sidebar ---------- */
.admin-sidebar{position:fixed;top:0;left:0;width:var(--sidebar-w);height:100vh;background:linear-gradient(180deg,var(--sidebar-bg),var(--sidebar-bg2));display:flex;flex-direction:column;z-index:1040;transition:transform .2s,width .2s}
.sidebar-brand{display:flex;align-items:center;justify-content:space-between;height:var(--topbar-h);padding:0 16px;border-bottom:1px solid rgba(255,255,255,.07)}
.sidebar-brand a{display:flex;align-items:center;gap:10px;color:#fff;font-size:18px;overflow:hidden}
.sidebar-logo{height:40px;width:auto;max-width:170px;object-fit:contain;background:#fff;border-radius:9px;padding:5px 8px}
.sidebar-logo-mini{height:34px;width:34px;object-fit:contain;background:#fff;border-radius:9px;padding:3px;display:none}
.brand-mark{width:34px;height:34px;border-radius:9px;background:var(--primary);display:grid;place-items:center;font-size:18px;color:#fff}
.brand-text strong{font-weight:800}
.sidebar-nav{flex:1;overflow-y:auto;padding:12px 12px 30px}
.sidebar-nav::-webkit-scrollbar{width:6px}
.sidebar-nav::-webkit-scrollbar-thumb{background:rgba(255,255,255,.14);border-radius:3px}
.nav-section{color:#5b8088;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding:16px 12px 6px}
.sidebar-nav .nav-link{display:flex;align-items:center;gap:11px;color:var(--sidebar-tx);padding:9px 12px;border-radius:9px;font-weight:500;white-space:nowrap;transition:.15s}
.sidebar-nav .nav-link:hover{background:rgba(255,255,255,.07);color:#fff}
.sidebar-nav .nav-link.active{background:linear-gradient(90deg,var(--primary),var(--primary-d));color:#fff;box-shadow:0 6px 16px -6px rgba(var(--primary-rgb),.8)}
.sidebar-nav .nav-link i{font-size:17px;width:20px;text-align:center}

/* collapsed (desktop) */
body.sidebar-collapsed .admin-sidebar{width:76px}
body.sidebar-collapsed .admin-main{margin-left:76px}
body.sidebar-collapsed .brand-text,
body.sidebar-collapsed .sidebar-logo,
body.sidebar-collapsed .nav-link span,
body.sidebar-collapsed .nav-section{display:none}
body.sidebar-collapsed .sidebar-logo-mini{display:block}
body.sidebar-collapsed .sidebar-nav .nav-link{justify-content:center}

/* ---------- Topbar ---------- */
.admin-topbar{position:sticky;top:0;height:var(--topbar-h);background:var(--card);border-bottom:1px solid var(--bd);display:flex;align-items:center;justify-content:space-between;padding:0 22px;z-index:1020}
.btn-icon{width:40px;height:40px;border:1px solid var(--bd);background:#fff;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;color:var(--tx);font-size:18px;cursor:pointer;position:relative}
.btn-icon:hover{background:var(--primary-l);border-color:var(--primary);color:var(--primary)}
.topbar-search{align-items:center;gap:8px;background:var(--bg);border:1px solid var(--bd);border-radius:10px;padding:8px 14px;min-width:280px}
.topbar-search input{border:0;background:none;outline:0;width:100%;font-size:14px}
.topbar-badge{position:absolute;top:-4px;right:-4px;background:var(--danger);color:#fff;font-size:10px;min-width:16px;height:16px;border-radius:9px;display:grid;place-items:center;padding:0 4px}
.topbar-user{display:flex;align-items:center;gap:9px;border:1px solid var(--bd);background:#fff;border-radius:10px;padding:5px 10px;cursor:pointer}
.avatar{width:34px;height:34px;border-radius:8px;background:linear-gradient(135deg,var(--primary),var(--accent));color:#fff;display:grid;place-items:center;font-weight:700}
.topbar-user .u-name{display:block;font-weight:600;font-size:13px;line-height:1.1}
.topbar-user .u-role{display:block;font-size:11px;color:var(--muted)}

/* ---------- Common ---------- */
.page-title{font-size:22px;font-weight:700;margin:0;color:var(--ink)}
.admin-breadcrumb{font-size:13px;color:var(--muted);margin-top:3px}
.admin-breadcrumb a{color:var(--primary)}
.card{background:var(--card);border:1px solid var(--bd);border-radius:var(--radius);box-shadow:var(--shadow)}
.card-head{padding:16px 20px;border-bottom:1px solid var(--bd);font-weight:600;display:flex;align-items:center;justify-content:space-between}
.card-body{padding:20px}
.btn-primary{background:var(--primary);border-color:var(--primary)}
.btn-primary:hover,.btn-primary:focus,.btn-primary:active{background:var(--primary-d)!important;border-color:var(--primary-d)!important}
.btn-outline-primary{color:var(--primary);border-color:var(--primary)}
.btn-outline-primary:hover{background:var(--primary);border-color:var(--primary)}
.btn-success{background:var(--accent);border-color:var(--accent)}
.btn-success:hover{background:var(--accent-d);border-color:var(--accent-d)}
.text-primary{color:var(--primary)!important}
.bg-primary{background:var(--primary)!important}
.link-primary{color:var(--primary)!important}
a{color:var(--primary)}
.form-control:focus,.form-select:focus{border-color:var(--primary);box-shadow:0 0 0 .2rem rgba(var(--primary-rgb),.15)}
.page-link{color:var(--primary)}
.page-item.active .page-link{background:var(--primary);border-color:var(--primary)}
.badge.bg-primary{background:var(--primary)!important}

/* stat cards */
.stat-card{display:flex;align-items:center;gap:16px;padding:20px;position:relative;overflow:hidden}
.stat-card::after{content:"";position:absolute;right:-20px;top:-20px;width:90px;height:90px;border-radius:50%;background:rgba(var(--primary-rgb),.05)}
.stat-ic{width:54px;height:54px;border-radius:13px;display:grid;place-items:center;font-size:24px;color:#fff;flex-shrink:0}
.stat-card .val{font-size:26px;font-weight:800;line-height:1;color:var(--ink)}
.stat-card .lbl{color:var(--muted);font-size:13px;margin-top:3px}

/* ---------- DataTables (used across admin modules) ---------- */
table.dataTable thead th{background:var(--primary-l);color:var(--ink);font-weight:600;border-bottom:2px solid rgba(var(--primary-rgb),.2)!important;white-space:nowrap}
table.dataTable tbody tr:hover{background:rgba(var(--primary-rgb),.04)}
.dataTables_wrapper .dataTables_filter input,
.dataTables_wrapper .dataTables_length select{border:1px solid var(--bd);border-radius:8px;padding:5px 10px;outline:0}
.dataTables_wrapper .dataTables_filter input:focus{border-color:var(--primary);box-shadow:0 0 0 .15rem rgba(var(--primary-rgb),.15)}
.dataTables_wrapper .dataTables_paginate .paginate_button.current{background:var(--primary)!important;border-color:var(--primary)!important;color:#fff!important;border-radius:8px}
.dataTables_wrapper .dataTables_paginate .paginate_button{border-radius:8px}
.dataTables_wrapper .dataTables_paginate .paginate_button:hover{background:var(--primary-l)!important;border-color:var(--primary)!important;color:var(--primary)!important}
.dt-toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;margin-bottom:14px}
.dt-filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center}

/* ---------- Mobile ---------- */
.sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(7,40,48,.55);z-index:1035}
@media(max-width:991.98px){
  .admin-sidebar{transform:translateX(-100%)}
  .admin-main{margin-left:0}
  body.sidebar-open .admin-sidebar{transform:translateX(0)}
  body.sidebar-open .sidebar-overlay{display:block}
}

/* ====================================================================
   LOGIN  — split-screen (brand panel + form), inspired by billstack
   ==================================================================== */
.login-shell{min-height:100vh;display:grid;grid-template-columns:1.05fr .95fr;background:var(--card)}
.login-aside{position:relative;overflow:hidden;color:#fff;display:flex;flex-direction:column;justify-content:space-between;padding:48px 52px;
  background:linear-gradient(150deg,#0e7c8b 0%,#0a606b 45%,#072830 100%)}
.login-aside::before{content:"";position:absolute;width:520px;height:520px;border-radius:50%;background:radial-gradient(circle,rgba(92,184,43,.35),transparent 60%);top:-160px;right:-120px}
.login-aside::after{content:"";position:absolute;width:420px;height:420px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.10),transparent 60%);bottom:-140px;left:-100px}
.login-bubbles{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.login-bubbles span{position:absolute;bottom:-60px;background:rgba(255,255,255,.10);border-radius:50%;animation:bubble 14s linear infinite}
.login-bubbles span:nth-child(1){left:12%;width:34px;height:34px;animation-duration:13s}
.login-bubbles span:nth-child(2){left:32%;width:18px;height:18px;animation-duration:10s;animation-delay:2s}
.login-bubbles span:nth-child(3){left:54%;width:48px;height:48px;animation-duration:17s;animation-delay:1s}
.login-bubbles span:nth-child(4){left:72%;width:24px;height:24px;animation-duration:12s;animation-delay:4s}
.login-bubbles span:nth-child(5){left:86%;width:40px;height:40px;animation-duration:15s;animation-delay:3s}
@keyframes bubble{to{transform:translateY(-115vh) translateX(30px);opacity:0}}
.login-aside-top{position:relative;z-index:2}
.login-aside-logo{height:62px;width:auto;background:#fff;border-radius:14px;padding:8px 14px;box-shadow:0 14px 30px -14px rgba(0,0,0,.5)}
.login-aside-mid{position:relative;z-index:2;max-width:440px}
.login-aside-mid h2{font-size:34px;font-weight:800;line-height:1.18;margin:0 0 14px}
.login-aside-mid p{color:rgba(255,255,255,.82);font-size:15.5px;line-height:1.6;margin:0}
.login-feature{display:flex;align-items:center;gap:12px;margin-top:16px;color:rgba(255,255,255,.92);font-weight:500}
.login-feature i{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:rgba(255,255,255,.14);font-size:18px}
.login-feature .fi-green{background:rgba(92,184,43,.30)}
.login-aside-foot{position:relative;z-index:2;color:rgba(255,255,255,.6);font-size:13px}

.login-form-side{display:flex;align-items:center;justify-content:center;padding:40px}
.login-form-card{width:100%;max-width:420px}
.login-form-card .lf-logo{display:none;margin-bottom:18px}
.login-form-card h1{font-size:26px;font-weight:800;color:var(--ink);margin:0 0 6px}
.login-form-card .lf-sub{color:var(--muted);margin:0 0 26px}
.login-form-card .form-label{font-weight:600;color:var(--ink)}
.login-form-card .input-group-text{background:var(--primary-l);border-color:var(--bd);color:var(--primary)}
.login-form-card .form-control{padding:.62rem .8rem}
.login-form-card .btn-login{background:linear-gradient(135deg,var(--primary),var(--primary-d));border:0;color:#fff;font-weight:700;padding:.7rem;border-radius:11px;box-shadow:0 12px 24px -12px rgba(var(--primary-rgb),.9)}
.login-form-card .btn-login:hover{filter:brightness(1.06)}
.login-pwtoggle{cursor:pointer}
.login-trust{display:flex;gap:18px;justify-content:center;margin-top:26px;color:var(--muted);font-size:12.5px}
.login-trust span{display:inline-flex;align-items:center;gap:6px}
.login-trust i{color:var(--accent)}

@media(max-width:900px){
  .login-shell{grid-template-columns:1fr}
  .login-aside{display:none}
  .login-form-card .lf-logo{display:block;text-align:center}
  .login-form-card .lf-logo img{height:58px}
  .login-form-side{min-height:100vh;background:linear-gradient(160deg,var(--primary-l),#fff)}
}

/* legacy login card (kept for backward compatibility) */
.login-wrap{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,var(--primary) 0%,#072830 100%);padding:20px}
.login-card{width:100%;max-width:410px;background:#fff;border-radius:18px;box-shadow:0 30px 60px -20px rgba(2,6,23,.5);padding:34px 32px}
.login-brand{display:flex;align-items:center;gap:10px;justify-content:center;margin-bottom:22px;font-size:22px;font-weight:800}
.login-brand .brand-mark{width:40px;height:40px;font-size:20px}
