:root{
  --lms-radius:14px;
  --lms-radius-sm:10px;
  --lms-transition:200ms cubic-bezier(.4,0,.2,1);
  --lms-font:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
}

/* ===================== THEME TOKENS ===================== */
[data-bs-theme="light"]{
  --lms-bg:#f4f6fb;
  --lms-bg-grad:radial-gradient(1200px 600px at 10% -10%,#e5ecff 0%,transparent 60%),radial-gradient(900px 500px at 110% 10%,#e8e2ff 0%,transparent 55%);
  --lms-surface:#ffffff;
  --lms-surface-2:#fbfcfe;
  --lms-border:#e6e9f2;
  --lms-text:#111827;
  --lms-muted:#6b7280;
  --lms-sidebar:#ffffff;
  --lms-sidebar-text:#4b5563;
  --lms-sidebar-active:#eef2ff;
  --lms-shadow:0 1px 2px rgba(16,24,40,.04),0 8px 24px rgba(16,24,40,.06);
  --lms-shadow-lg:0 20px 45px rgba(16,24,40,.12);
}
[data-bs-theme="dark"]{
  --lms-bg:#0b0f19;
  --lms-bg-grad:radial-gradient(1200px 600px at 10% -10%,#17224a 0%,transparent 60%),radial-gradient(900px 500px at 110% 10%,#2a1b4d 0%,transparent 55%);
  --lms-surface:#121826;
  --lms-surface-2:#161d2e;
  --lms-border:#232b3d;
  --lms-text:#e6e9f2;
  --lms-muted:#94a1b8;
  --lms-sidebar:#0f1523;
  --lms-sidebar-text:#a8b3c7;
  --lms-sidebar-active:#1b2embed;
  --lms-sidebar-active:#1b243a;
  --lms-shadow:0 1px 2px rgba(0,0,0,.4),0 8px 24px rgba(0,0,0,.35);
  --lms-shadow-lg:0 20px 45px rgba(0,0,0,.5);
}

/* ===================== BASE ===================== */
html,body{height:100%}
body{
  font-family:var(--lms-font);
  background:var(--lms-bg);
  background-image:var(--lms-bg-grad);
  background-attachment:fixed;
  color:var(--lms-text);
  -webkit-font-smoothing:antialiased;
}
a{text-decoration:none}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:var(--lms-border);border-radius:10px}
::-webkit-scrollbar-track{background:transparent}

.text-muted-2{color:var(--lms-muted)!important}
.fw-600{font-weight:600}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}

/* ===================== LAYOUT ===================== */
.lms-app{display:flex;min-height:100vh}
.lms-sidebar{
  width:260px;flex:0 0 260px;background:var(--lms-sidebar);
  border-right:1px solid var(--lms-border);
  display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;z-index:1040;
  transition:transform var(--lms-transition);
}
.lms-main{margin-left:260px;flex:1;min-width:0;display:flex;flex-direction:column}
@media (max-width:991.98px){
  .lms-sidebar{transform:translateX(-100%)}
  .lms-sidebar.show{transform:translateX(0);box-shadow:var(--lms-shadow-lg)}
  .lms-main{margin-left:0}
}
.lms-backdrop{position:fixed;inset:0;background:rgba(2,6,23,.5);z-index:1035;display:none}
.lms-backdrop.show{display:block}

.lms-brand{display:flex;align-items:center;gap:.65rem;padding:1.1rem 1.25rem;border-bottom:1px solid var(--lms-border)}
.lms-brand .logo{
  width:38px;height:38px;border-radius:11px;display:grid;place-items:center;color:#fff;font-weight:700;
  background:linear-gradient(135deg,#4f46e5,#7c3aed);box-shadow:0 6px 16px rgba(79,70,229,.35)
}
.lms-brand .name{font-weight:700;letter-spacing:-.2px;line-height:1.1}
.lms-brand .sub{font-size:.72rem;color:var(--lms-muted)}

.lms-nav{padding:.85rem .75rem;overflow-y:auto;flex:1}
.lms-nav .nav-label{font-size:.68rem;text-transform:uppercase;letter-spacing:.09em;color:var(--lms-muted);padding:.85rem .6rem .35rem}
.lms-nav a{
  display:flex;align-items:center;gap:.7rem;padding:.62rem .7rem;border-radius:var(--lms-radius-sm);
  color:var(--lms-sidebar-text);font-weight:500;font-size:.92rem;transition:var(--lms-transition);margin-bottom:2px
}
.lms-nav a i{width:18px;text-align:center;font-size:1rem;opacity:.9}
.lms-nav a:hover{background:var(--lms-sidebar-active);color:var(--lms-text)}
.lms-nav a.active{background:linear-gradient(135deg,#4f46e5,#7c3aed);color:#fff;box-shadow:0 6px 16px rgba(79,70,229,.3)}
.lms-nav a.active i{opacity:1}
.lms-sidebar-footer{padding:.85rem 1rem;border-top:1px solid var(--lms-border);font-size:.78rem;color:var(--lms-muted)}

.lms-topbar{
  position:sticky;top:0;z-index:1020;display:flex;align-items:center;gap:.75rem;
  padding:.75rem 1.25rem;background:color-mix(in srgb,var(--lms-surface) 88%,transparent);
  backdrop-filter:blur(10px);border-bottom:1px solid var(--lms-border)
}
.lms-content{padding:1.4rem 1.25rem 3rem;flex:1}
@media (min-width:1400px){.lms-content{padding-left:2rem;padding-right:2rem}}

/* ===================== CARDS ===================== */
.card{
  background:var(--lms-surface);border:1px solid var(--lms-border);
  border-radius:var(--lms-radius);box-shadow:var(--lms-shadow)
}
.card-header{background:transparent;border-bottom:1px solid var(--lms-border);padding:1rem 1.15rem;font-weight:600}
.card-body{padding:1.15rem}

.stat-card{position:relative;overflow:hidden;transition:transform var(--lms-transition),box-shadow var(--lms-transition)}
.stat-card:hover{transform:translateY(-3px);box-shadow:var(--lms-shadow-lg)}
.stat-card .stat-icon{
  width:46px;height:46px;border-radius:13px;display:grid;place-items:center;font-size:1.15rem;color:#fff;
  background:linear-gradient(135deg,#4f46e5,#7c3aed)
}
.stat-card .stat-value{font-size:1.75rem;font-weight:700;letter-spacing:-.5px;line-height:1.1}
.stat-card .stat-label{font-size:.8rem;color:var(--lms-muted);text-transform:uppercase;letter-spacing:.05em}
.stat-card.g-green .stat-icon{background:linear-gradient(135deg,#059669,#10b981)}
.stat-card.g-amber .stat-icon{background:linear-gradient(135deg,#d97706,#f59e0b)}
.stat-card.g-red   .stat-icon{background:linear-gradient(135deg,#dc2626,#f43f5e)}
.stat-card.g-blue  .stat-icon{background:linear-gradient(135deg,#2563eb,#0ea5e9)}
.stat-card.g-slate .stat-icon{background:linear-gradient(135deg,#475569,#64748b)}
.stat-card.g-violet .stat-icon{background:linear-gradient(135deg,#7c3aed,#a855f7)}

/* ===================== TABLES ===================== */
.table{--bs-table-bg:transparent;color:var(--lms-text);margin-bottom:0}
.table>:not(caption)>*>*{border-bottom-color:var(--lms-border);padding:.8rem .9rem;vertical-align:middle}
.table thead th{
  font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--lms-muted);
  font-weight:600;white-space:nowrap;background:var(--lms-surface-2)
}
.table tbody tr{transition:background var(--lms-transition)}
.table tbody tr:hover{background:var(--lms-surface-2)}
.table-wrap{border-radius:var(--lms-radius);overflow:auto}
.sortable{cursor:pointer;user-select:none}
.sortable:hover{color:var(--lms-text)}

/* ===================== BADGES ===================== */
.badge-status{font-weight:600;font-size:.72rem;padding:.36em .7em;border-radius:999px;text-transform:capitalize}
.st-unused{background:rgba(100,116,139,.15);color:#64748b}
.st-activated,.st-active,.st-success,.st-valid{background:rgba(16,185,129,.15);color:#10b981}
.st-expired{background:rgba(245,158,11,.16);color:#f59e0b}
.st-revoked,.st-failed,.st-blocked{background:rgba(244,63,94,.15);color:#f43f5e}
.st-suspended{background:rgba(168,85,247,.15);color:#a855f7}
.st-deleted,.st-released{background:rgba(107,114,128,.18);color:#9ca3af}

/* ===================== FORMS ===================== */
.form-control,.form-select{
  background:var(--lms-surface-2);border:1px solid var(--lms-border);color:var(--lms-text);
  border-radius:var(--lms-radius-sm);padding:.6rem .8rem;transition:var(--lms-transition)
}
.form-control:focus,.form-select:focus{
  background:var(--lms-surface);border-color:#6366f1;color:var(--lms-text);
  box-shadow:0 0 0 .2rem rgba(99,102,241,.18)
}
.form-control::placeholder{color:var(--lms-muted)}
.form-label{font-size:.85rem;font-weight:600;margin-bottom:.35rem}
.form-text{color:var(--lms-muted)}
.input-group-text{background:var(--lms-surface-2);border-color:var(--lms-border);color:var(--lms-muted)}

.btn{border-radius:var(--lms-radius-sm);font-weight:600;transition:var(--lms-transition)}
.btn-primary{background:linear-gradient(135deg,#4f46e5,#7c3aed);border:none;box-shadow:0 6px 16px rgba(79,70,229,.28)}
.btn-primary:hover,.btn-primary:focus{filter:brightness(1.07);box-shadow:0 10px 22px rgba(79,70,229,.36)}
.btn-primary:disabled{filter:grayscale(.4) brightness(.9)}
.btn-soft{background:var(--lms-surface-2);border:1px solid var(--lms-border);color:var(--lms-text)}
.btn-soft:hover{background:var(--lms-sidebar-active);color:var(--lms-text)}
.btn-icon{width:34px;height:34px;padding:0;display:inline-grid;place-items:center}

/* ===================== MODALS / DROPDOWNS ===================== */
.modal-content,.dropdown-menu,.offcanvas{
  background:var(--lms-surface);border:1px solid var(--lms-border);border-radius:var(--lms-radius);color:var(--lms-text)
}
.modal-header,.modal-footer{border-color:var(--lms-border)}
.dropdown-item{color:var(--lms-text);border-radius:8px;padding:.5rem .75rem}
.dropdown-item:hover{background:var(--lms-sidebar-active);color:var(--lms-text)}
.dropdown-menu{padding:.35rem;box-shadow:var(--lms-shadow-lg)}

/* ===================== AUTH PAGES ===================== */
.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:1.5rem}
.auth-card{
  width:100%;max-width:430px;background:var(--lms-surface);border:1px solid var(--lms-border);
  border-radius:20px;box-shadow:var(--lms-shadow-lg);padding:2.1rem;animation:rise .45s ease both
}
.auth-logo{
  width:56px;height:56px;border-radius:16px;display:grid;place-items:center;color:#fff;font-size:1.4rem;
  background:linear-gradient(135deg,#4f46e5,#7c3aed);box-shadow:0 10px 24px rgba(79,70,229,.35);margin:0 auto 1rem
}

/* ===================== TOASTS ===================== */
.lms-toasts{position:fixed;top:1rem;right:1rem;z-index:1090;display:flex;flex-direction:column;gap:.6rem;max-width:380px}
.lms-toast{
  background:var(--lms-surface);border:1px solid var(--lms-border);border-left:4px solid #6366f1;
  border-radius:var(--lms-radius-sm);box-shadow:var(--lms-shadow-lg);padding:.8rem 1rem;
  display:flex;gap:.65rem;align-items:flex-start;animation:slide-in .28s ease both
}
.lms-toast.success{border-left-color:#10b981}
.lms-toast.error{border-left-color:#f43f5e}
.lms-toast.warning{border-left-color:#f59e0b}
.lms-toast .msg{font-size:.9rem;line-height:1.35}

/* ===================== MISC ===================== */
.skeleton{
  background:linear-gradient(90deg,var(--lms-surface-2) 25%,var(--lms-border) 37%,var(--lms-surface-2) 63%);
  background-size:400% 100%;animation:shimmer 1.3s ease infinite;border-radius:8px;height:1rem
}
.empty-state{text-align:center;padding:3rem 1rem;color:var(--lms-muted)}
.empty-state i{font-size:2.5rem;opacity:.35;display:block;margin-bottom:.75rem}
.key-pill{
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-weight:600;letter-spacing:.5px;
  background:var(--lms-surface-2);border:1px dashed var(--lms-border);border-radius:8px;padding:.2rem .5rem;
  display:inline-flex;align-items:center;gap:.4rem
}
.progress{background:var(--lms-surface-2);height:8px;border-radius:999px}
.progress-bar{background:linear-gradient(90deg,#4f46e5,#7c3aed)}
.chart-box{position:relative;height:300px}
.page-title{font-weight:700;letter-spacing:-.4px;margin:0}
.page-sub{color:var(--lms-muted);font-size:.9rem;margin:0}
.nav-tabs{border-bottom-color:var(--lms-border)}
.nav-tabs .nav-link{color:var(--lms-muted);border:none;border-bottom:2px solid transparent;font-weight:600}
.nav-tabs .nav-link.active{color:var(--lms-text);background:transparent;border-bottom-color:#6366f1}
.list-group-item{background:var(--lms-surface);border-color:var(--lms-border);color:var(--lms-text)}
.pagination .page-link{background:var(--lms-surface);border-color:var(--lms-border);color:var(--lms-text)}
.pagination .page-item.active .page-link{background:linear-gradient(135deg,#4f46e5,#7c3aed);border-color:transparent}
.pagination .page-item.disabled .page-link{background:var(--lms-surface-2);color:var(--lms-muted)}
.form-check-input:checked{background-color:#6366f1;border-color:#6366f1}
.timeline{position:relative;padding-left:1.4rem}
.timeline:before{content:'';position:absolute;left:.42rem;top:.3rem;bottom:.3rem;width:2px;background:var(--lms-border)}
.timeline-item{position:relative;padding-bottom:1rem}
.timeline-item:before{content:'';position:absolute;left:-1.12rem;top:.35rem;width:9px;height:9px;border-radius:50%;background:#6366f1;box-shadow:0 0 0 3px color-mix(in srgb,#6366f1 20%,transparent)}

@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes slide-in{from{opacity:0;transform:translateX(22px)}to{opacity:1;transform:none}}
@keyframes shimmer{0%{background-position:100% 50%}100%{background-position:0 50%}}
.fade-in{animation:rise .35s ease both}

@media print{
  .lms-sidebar,.lms-topbar,.no-print{display:none!important}
  .lms-main{margin-left:0}
  body{background:#fff}
}
