:root { --pdp-sidebar: #fbfbfc; }

body { font-size: .95rem; }

.sidebar {
  background: var(--pdp-sidebar);
  min-height: calc(100vh - 56px);
  position: sticky;
  top: 56px;
  max-height: calc(100vh - 56px);
  overflow-y: auto;
}
.sidebar .nav-link {
  color: #495057;
  border-radius: .4rem;
  padding: .35rem .6rem;
  margin-bottom: 1px;
  display: flex;
  gap: .55rem;
  align-items: center;
}
.sidebar .nav-link.active { background: #0d6efd; color: #fff; }
.sidebar .nav-link:hover:not(.active) { background: #eceff3; }
.sidebar .nav-section {
  font-size: .7rem;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: #adb5bd;
  padding: .9rem .6rem .25rem;
  font-weight: 600;
}

.card-stat .value { font-size: 1.5rem; font-weight: 600; line-height: 1.1; }
.card-stat .label { font-size: .78rem; color: #6c757d; text-transform: uppercase; letter-spacing: .04em; }

.table-sm td, .table-sm th { padding: .35rem .5rem; }
.num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.mono { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .85em; }

.tree { list-style: none; padding-left: 0; }
.tree ul { list-style: none; padding-left: 1.4rem; border-left: 1px dashed #dee2e6; margin-left: .6rem; }
.tree li { padding: .15rem 0; }

.quorum-wrap { position: relative; }
.quorum-marker {
  position: absolute; top: -3px; width: 2px; height: 28px;
  background: #dc3545; transform: translateX(-1px);
}
.quorum-marker::after {
  content: ''; position: absolute; top: -4px; left: -3px;
  border: 4px solid transparent; border-top-color: #dc3545;
}

.ballot-choice input:checked + label { border-color: currentColor; font-weight: 600; }
.ballot-choice label { cursor: pointer; }

.hash { font-family: ui-monospace, monospace; font-size: .7rem; color: #adb5bd; word-break: break-all; }

@media print {
  .sidebar, .navbar, footer, .no-print { display: none !important; }
  main { width: 100% !important; max-width: 100% !important; flex: 0 0 100% !important; }
}
