:root{--nav:#0B1B35;--bg:#f6f7fb;--card:#ffffff;--muted:#6b7280;--primary:#16a34a;--border:#e6e9f2;--danger:#b42318;}
*{box-sizing:border-box}
body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial;color:#0b1b35;background:var(--bg)}
a{color:inherit}
.app{display:flex;min-height:100vh}
.sidebar{width:260px;background:var(--nav);color:#fff;display:flex;flex-direction:column;padding:16px;position:sticky;top:0;height:100vh}
.sidebar.open{transform:translateX(0)}
.brand{display:flex;gap:10px;align-items:center;margin-bottom:14px}
.brand-logo{width:44px;height:44px;object-fit:contain;border-radius:10px;background:rgba(255,255,255,.08);padding:6px}
.brand-name{font-weight:700;font-size:14px}
.brand-sub{font-size:12px;opacity:.75}
.nav{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.nav-item{padding:10px 10px;border-radius:10px;text-decoration:none;color:#fff;opacity:.9}
.nav-item:hover{background:rgba(255,255,255,.08)}
.nav-item.active{background:rgba(255,255,255,.14);opacity:1}
.sidebar-footer{margin-top:auto;padding-top:12px;border-top:1px solid rgba(255,255,255,.12)}
.main{flex:1;display:flex;flex-direction:column}
.topbar{display:flex;align-items:center;gap:10px;padding:14px 16px;background:#fff;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10}
.topbar-title{font-weight:700}
.spacer{flex:1}
.hamburger{display:none;border:1px solid var(--border);background:#fff;border-radius:10px;padding:8px 10px;cursor:pointer}
.content{padding:16px}
.grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.card{background:var(--card);border:1px solid var(--border);border-radius:14px;box-shadow:0 10px 22px rgba(11,27,53,.06);padding:14px}
.card-title{font-weight:700;font-size:13px;color:#0b1b35}
.card-value{font-size:28px;font-weight:800;margin-top:10px}
.muted{color:var(--muted);font-size:12px}
.strong{font-weight:700}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:12px;padding:10px 12px;border:1px solid var(--border);background:#fff;cursor:pointer;text-decoration:none;font-weight:600;font-size:13px}
.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}
.btn-outline{background:transparent;border-color:rgba(255,255,255,.18);color:#fff}
.main .btn-outline{border-color:var(--border);color:#0b1b35;background:#fff}
.btn-danger{background:#fff;border-color:#fda29b;color:var(--danger)}
.label{display:block;font-size:12px;color:#111827;margin-top:8px}
.input{width:100%;padding:10px 12px;border-radius:12px;border:1px solid var(--border);outline:none;background:#fff}
.input:focus{border-color:#b9c3ff;box-shadow:0 0 0 4px rgba(73,96,255,.08)}
.table{width:100%;border-collapse:collapse}
.table th,.table td{padding:10px;border-bottom:1px solid var(--border);text-align:left;font-size:13px;white-space:nowrap}
.flash{background:#eef2ff;border:1px solid #dbe3ff;padding:10px;border-radius:12px;margin:12px 0}
.flash-error{background:#fff1f2;border-color:#fecdd3}
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:18px}
.login-card{width:420px;background:#fff;border-radius:16px;border:1px solid var(--border);box-shadow:0 10px 22px rgba(11,27,53,.08);padding:16px}
.login-brand{text-align:center;margin-bottom:12px}
.login-logo{width:60px;height:60px;object-fit:contain;margin:0 auto 8px auto;display:block}
.login-title{font-weight:800}
.login-sub{color:var(--muted);font-size:12px;margin-top:2px}
.link{color:#2563eb;cursor:pointer}
.sortable{list-style:none;margin:12px 0 0 0;padding:0;display:flex;flex-direction:column;gap:8px}
.sortable-item{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid var(--border);border-radius:12px;background:#fff;cursor:grab}
.handle{opacity:.5}
@media (max-width: 980px){.grid{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-2{grid-template-columns:1fr}.grid-3{grid-template-columns:1fr 1fr 1fr}}
@media (max-width: 820px){.sidebar{position:fixed;left:0;top:0;transform:translateX(-110%);transition:transform .2s ease;z-index:50}.hamburger{display:inline-flex}.grid{grid-template-columns:1fr}}
