.mt-0 { margin-top: 0; }
.mb-0 { margin-bottom: 0; }
.mb-2 { margin-bottom: var(--space-2); }
.mb-3 { margin-bottom: var(--space-3); }
.mb-4 { margin-bottom: var(--space-4); }
.mb-5 { margin-bottom: var(--space-5); }
.mt-4 { margin-top: var(--space-4); }
.gap-2 { gap: var(--space-2); }
.gap-3 { gap: var(--space-3); }
.flex { display: flex; }
.flex-wrap { flex-wrap: wrap; }
.items-center { align-items: center; }
.justify-between { justify-content: space-between; }
.w-full { width: 100%; }
.text-muted { color: var(--color-text-muted); }
.text-secondary { color: var(--color-text-secondary); }
.text-success { color: var(--color-success); }
.text-danger { color: var(--color-danger); }
.text-warning { color: var(--color-warning); }
.fw-700 { font-weight: 700; }
.fs-sm { font-size: 0.86rem; }
.hidden { display: none !important; }
.stack > * + * { margin-top: var(--space-3); }

.span-2 { grid-column: span 2; }
.span-3 { grid-column: span 3; }

.boq-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 280px;
  gap: var(--space-4);
  align-items: start;
}

.project-hub-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  margin-bottom: var(--space-4);
}

.project-hub-nav a {
  background: var(--color-bg-elevated);
  border: 1px solid var(--color-border);
  border-radius: 999px;
  padding: 0.35rem 0.8rem;
  color: var(--color-text-secondary);
  font-size: 0.86rem;
}

.project-hub-nav a.is-active,
.project-hub-nav a:hover {
  background: var(--color-primary-soft);
  border-color: transparent;
  color: var(--color-primary);
}
