:root {
  --sidebar-w: 230px;
  --brand: #0d6efd;
}
body { background: #f5f6f8; }
.app-wrapper { display: flex; min-height: 100vh; }
.sidebar {
  width: var(--sidebar-w);
  background: #1e2939;
  color: #e5e7eb;
  flex-shrink: 0;
  min-height: 100vh;
  position: sticky;
  top: 0;
}
.sidebar-brand { padding: 18px 16px; font-weight: 700; font-size: 1.05rem; border-bottom: 1px solid #2b3648; }
.sidebar-project { padding: 12px 16px; border-bottom: 1px solid #2b3648; }
.sidebar-project a { color: #93c5fd; text-decoration: none; }
.sidebar-nav { padding: 8px 0; }
.sidebar-nav li a {
  display: block; padding: 10px 18px; color: #cbd5e1; text-decoration: none; font-size: .92rem;
}
.sidebar-nav li a:hover, .sidebar-nav li a.active { background: #2b3648; color: #fff; border-left: 3px solid var(--brand); }
.app-main { flex: 1; min-width: 0; }
.app-topbar { background: #fff; padding: 12px 20px; border-bottom: 1px solid #e5e7eb; }
.app-content { padding: 20px; }
.card-stat { border-radius: 10px; }
.auth-body { display:flex; align-items:center; justify-content:center; min-height:100vh; background:#1e2939; }
.auth-box { background:#fff; padding: 32px; border-radius: 12px; width: 100%; max-width: 380px; }
table.table-tree td { vertical-align: middle; }
.indent-1 { padding-left: 20px; }
.indent-2 { padding-left: 40px; }
.indent-3 { padding-left: 60px; }
.badge-status-draft { background:#6b7280; }
.badge-status-final { background:#0d6efd; }
.badge-status-printed { background:#198754; }
.badge-status-revised { background:#fd7e14; }
.badge-status-cancelled { background:#dc3545; }
@media (max-width: 991px) {
  .sidebar { position: fixed; left: -260px; z-index: 1050; transition: left .2s; height: 100vh; }
  .sidebar.show { left: 0; }
}
