.auth-body { min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center; background: var(--bs-tertiary-bg); padding: 1rem; }
.auth-card { width: 100%; max-width: 32rem; }
.brand-mark { font-size: 2rem; color: var(--bs-primary); }
.otp-input { letter-spacing: .5em; font-variant-numeric: tabular-nums; }
.narrow-card { max-width: 32rem; }
.narrow-card-lg { max-width: 48rem; }
@media (min-width: 992px) { .sidebar { min-height: calc(100vh - 56px); } }
.sidebar .nav-link { color: var(--bs-body-color); border-radius: .375rem; margin: 0 .5rem; }
.sidebar .nav-link.active { background: var(--bs-primary); color: #fff; }
.sidebar .nav-link.disabled { color: var(--bs-secondary-color); opacity: .6; }
.audit-changes { max-width: 28rem; white-space: pre-wrap; word-break: break-word; font-size: .75rem; }
table.dataTable td { vertical-align: middle; }
.actions form { display: inline; }
.calendar-month td { width: 14.28%; min-width: 7rem; height: 5.5rem; }
.calendar-month .badge { max-width: 100%; font-weight: 500; }
@media (min-width: 1200px) { .court-sidebar { position: sticky; top: 4.5rem; } }
.court-section { scroll-margin-top: 4.5rem; }
.court-section h2 { letter-spacing: .03em; }
form.was-validated :invalid { border-color: var(--bs-form-invalid-border-color); }
.court-savebar { position: sticky; bottom: 0; z-index: 1020; padding: .75rem 0; background: var(--bs-body-bg); border-top: 1px solid var(--bs-border-color); }
.site-footer { font-size: .75rem; }
.sidebar .nav-section { font-size: .7rem; letter-spacing: .06em; }
.col-order { width: 7rem; }
.evidence-img { max-height: 22rem; width: 100%; object-fit: contain; background: var(--bs-tertiary-bg); }

/* Review page: thumbnails of every image in the violation (V = violation image). */
.evidence-thumb { width: 5.5rem; height: 4rem; overflow: hidden; background: var(--bs-tertiary-bg); }
.evidence-thumb img { width: 100%; height: 100%; object-fit: cover; }
.evidence-thumb.active { outline: 3px solid var(--bs-primary); outline-offset: 1px; }
