body {
  min-height: 100vh;
}

.navbar-brand {
  letter-spacing: 0.5px;
}

.card {
  border: none;
  box-shadow: 0 1px 4px rgba(0,0,0,.08);
}

.table th {
  white-space: nowrap;
}

.badge {
  font-size: 0.8em;
}

/* ── Mobile: attendance table stacks per member ── */
@media (max-width: 575px) {
  .attendance-table thead { display: none; }
  .attendance-table,
  .attendance-table tbody { display: block; }
  .attendance-table tr.member-row {
    display: block;
    padding: 0.75rem 0;
    border-bottom: 2px solid #dee2e6;
  }
  .attendance-table tr.member-row td {
    display: block;
    padding: 0.2rem 0;
    border: none;
  }
  .attendance-table tr.dispute-row {
    display: block;
    border-bottom: 2px solid #dee2e6;
  }
  .attendance-table tr.dispute-row td {
    display: block;
    border: none;
  }

  /* Sticky save bar at bottom on mobile */
  .attendance-actions {
    position: sticky;
    bottom: 0;
    background: #f8f9fa;
    border-top: 1px solid #dee2e6;
    padding: 0.75rem 0;
    z-index: 10;
  }
  .attendance-actions .btn {
    width: 100%;
  }
}
