rustio-admin 0.21.0

Django Admin, but for Rust. A small, focused admin framework.
Documentation
/* ============================================================
 * rustio-admin / pages / db_browser
 *
 * Read-only Postgres schema explorer at `/admin/db`. Layout is
 * a stats strip at the top followed by one card per table; each
 * card has a column-list table and optional FK lists. Visual
 * weight stays calm — this is a diagnostic surface, not a
 * dashboard.
 * ============================================================ */

.rio-db-summary { margin-bottom: var(--rio-s5); }
.rio-db-stats {
  display: flex;
  gap: var(--rio-s6);
  margin: 0;
  padding: 0;
  flex-wrap: wrap;
}
.rio-db-stat {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}
.rio-db-stat dt {
  font-size: var(--rio-fs-xs);
  font-weight: var(--rio-fw-semibold);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--rio-text-muted);
}
.rio-db-stat dd {
  margin: 0;
  font-family: var(--rio-font-mono);
  font-size: var(--rio-fs-lg);
  font-weight: var(--rio-fw-semibold);
  color: var(--rio-text-strong);
  font-variant-numeric: tabular-nums;
}

.rio-db-table {
  margin-bottom: var(--rio-s5);
  /* Scroll-margin so anchor-link jumps from the FK list don't
   * land flush against the sticky topbar. */
  scroll-margin-top: calc(var(--rio-topbar-h) + var(--rio-s3));
}
.rio-db-table__header {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: var(--rio-s2);
  margin-bottom: var(--rio-s4);
}
.rio-db-table__header h2 {
  margin: 0;
  font-size: var(--rio-fs-lg);
  font-weight: var(--rio-fw-semibold);
}
.rio-db-table__header h2 code {
  background: none;
  padding: 0;
  font-size: inherit;
  color: var(--rio-text-strong);
}

.rio-db-columns code {
  font-size: var(--rio-fs-sm);
}

.rio-db-fks {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--rio-s5);
  margin-top: var(--rio-s4);
}
.rio-db-fks__group h3 {
  margin: 0 0 var(--rio-s2);
  font-size: var(--rio-fs-xs);
  font-weight: var(--rio-fw-semibold);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--rio-text-muted);
}
.rio-db-fk-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  font-size: var(--rio-fs-sm);
}
.rio-db-fk-list code {
  font-size: inherit;
}

/* Stack the FK columns under each other below the form-shell
 * breakpoint — they're wordy and the side-by-side grid stops
 * being legible at narrow widths. */
@media (max-width: 767.98px) {
  .rio-db-fks { grid-template-columns: 1fr; gap: var(--rio-s3); }
}