:root{--sb:#111827;--sb-hover:#1f2937;--accent:#4f46e5}
body{background:#f4f5f9;font-size:.95rem}
.sidebar{width:240px;min-height:100vh;background:var(--sb);position:fixed;inset:0 auto 0 0;z-index:1030;transition:transform .2s}
.sidebar .brand{color:#fff;font-weight:700;padding:1.1rem 1.25rem;display:block;text-decoration:none;font-size:1.05rem}
.sidebar .nav-link{color:#cbd5e1;padding:.6rem 1.25rem;border-radius:0;display:flex;gap:.65rem;align-items:center}
.sidebar .nav-link:hover{background:var(--sb-hover);color:#fff}
.sidebar .nav-link.active{background:var(--accent);color:#fff}
.sidebar .nav-heading{color:#6b7280;font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;padding:1rem 1.25rem .35rem}
.main{margin-left:240px}
.topbar{background:#fff;border-bottom:1px solid #e5e7eb;padding:.7rem 1.25rem}
.card{border:0;box-shadow:0 1px 3px rgba(16,24,40,.08);border-radius:.75rem}
.stat .value{font-size:1.75rem;font-weight:700;line-height:1.1}
.stat .label{color:#6b7280;font-size:.8rem}
.chart-box{position:relative;height:280px}
.qr-preview{background:#fff;border:1px solid #e5e7eb;border-radius:.75rem;padding:1rem;text-align:center}
.qr-preview img{max-width:100%;height:auto;image-rendering:pixelated}
.table td,.table th{vertical-align:middle}
@media (max-width:991px){.sidebar{transform:translateX(-100%)}.sidebar.open{transform:none}.main{margin-left:0}}
