/* =============================================================
   ADMIN — registrations and payment tracking
   Internal tooling: dense and legible rather than decorative.
   ============================================================= */

.admin-flash {
  padding: var(--space-3) var(--space-5);
  margin-bottom: var(--space-6);
  border-radius: var(--radius-md);
  background: rgba(16, 185, 129, 0.12);
  border: 1px solid rgba(16, 185, 129, 0.35);
  color: var(--color-text-dark);
  font-size: var(--font-size-sm);
}

/* ── Summary strip ───────────────────────────────────────────── */
.admin-totals {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: var(--space-4);
  margin-bottom: var(--space-8);
}
.admin-total {
  padding: var(--space-5);
  text-align: center;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
}
.admin-total__n {
  display: block;
  font-family: var(--font-display);
  font-size: var(--font-size-2xl);
  font-weight: var(--font-weight-extrabold);
  color: var(--color-text-dark);
  line-height: 1.1;
}
.admin-total__l {
  display: block;
  margin-top: var(--space-1);
  font-size: var(--font-size-xs);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--color-text-medium);
}

/* ── Filter ──────────────────────────────────────────────────── */
.admin-filter {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin-bottom: var(--space-6);
}
.admin-filter a {
  padding: 8px 16px;
  border-radius: var(--radius-pill);
  border: 1px solid var(--color-border);
  font-size: var(--font-size-sm);
  color: var(--color-text-medium);
  text-decoration: none;
}
.admin-filter a:hover { border-color: var(--color-accent); color: var(--color-accent); }
.admin-filter a.is-active {
  background: var(--color-accent);
  border-color: var(--color-accent);
  color: #fff;
}

.admin-empty {
  padding: var(--space-12);
  text-align: center;
  color: var(--color-text-medium);
  background: var(--color-surface);
  border: 1px dashed var(--color-border);
  border-radius: var(--radius-lg);
}

/* ── Table ───────────────────────────────────────────────────── */
.admin-table-wrap {
  overflow-x: auto;                 /* narrow screens scroll the table, not the page */
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  background: var(--color-surface);
}
.admin-table { width: 100%; border-collapse: collapse; min-width: 900px; }
.admin-table th,
.admin-table td {
  padding: var(--space-4);
  text-align: left;
  vertical-align: top;
  border-bottom: 1px solid var(--color-border);
  font-size: var(--font-size-sm);
  color: var(--color-text-dark);
}
.admin-table th {
  font-size: var(--font-size-xs);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--color-text-medium);
  background: var(--color-bg-elevated);
  white-space: nowrap;
}
.admin-table tbody tr:last-child td { border-bottom: none; }
.admin-muted { color: var(--color-text-medium); font-size: var(--font-size-xs); }

/* ── Status pills ────────────────────────────────────────────── */
.admin-pill {
  display: inline-block;
  padding: 3px 10px;
  border-radius: var(--radius-pill);
  font-size: var(--font-size-xs);
  font-weight: var(--font-weight-semibold);
  white-space: nowrap;
}
.admin-pill--pending   { background: rgba(239, 68, 68, 0.12);  color: #b91c1c; border: 1px solid rgba(239,68,68,0.3); }
.admin-pill--part_paid { background: rgba(245, 158, 11, 0.14); color: #92400e; border: 1px solid rgba(245,158,11,0.35); }
.admin-pill--paid      { background: rgba(16, 185, 129, 0.14); color: #065f46; border: 1px solid rgba(16,185,129,0.35); }
.admin-pill--refunded,
.admin-pill--cancelled { background: rgba(17, 24, 39, 0.08);   color: var(--color-text-medium); border: 1px solid var(--color-border); }

:root[data-theme="dark"] .admin-pill--pending   { color: #fca5a5; }
:root[data-theme="dark"] .admin-pill--part_paid { color: #fcd34d; }
:root[data-theme="dark"] .admin-pill--paid      { color: #6ee7b7; }

/* ── Inline payment form ─────────────────────────────────────── */
.admin-pay { display: flex; flex-wrap: wrap; gap: var(--space-2); align-items: center; }
.admin-pay input {
  padding: 8px 10px;
  border-radius: var(--radius-sm);
  border: 1px solid var(--color-border);
  background: var(--color-surface);
  color: var(--color-text-dark);
  font-family: var(--font-body);
  font-size: var(--font-size-sm);
}
.admin-pay input[name="amount"]    { width: 120px; }
.admin-pay input[name="reference"] { width: 150px; }
.admin-pay input:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 1px; }

/* ── Challenge submissions ───────────────────────────────────────
   Same pill treatment as payment status, with the four judging
   states. Colour pairs match the payment pills above: light-mode
   text darkened to clear 4.5:1, lightened again in dark mode.
   ------------------------------------------------------------- */
.admin-pill--received    { background: rgba(59, 130, 246, 0.12); color: #1e40af; border: 1px solid rgba(59,130,246,0.3); }
.admin-pill--shortlisted { background: rgba(245, 158, 11, 0.14); color: #92400e; border: 1px solid rgba(245,158,11,0.35); }
.admin-pill--winner      { background: rgba(16, 185, 129, 0.14); color: #065f46; border: 1px solid rgba(16,185,129,0.35); }
.admin-pill--rejected    { background: rgba(17, 24, 39, 0.08);   color: var(--color-text-medium); border: 1px solid var(--color-border); }

:root[data-theme="dark"] .admin-pill--received    { color: #93c5fd; }
:root[data-theme="dark"] .admin-pill--shortlisted { color: #fcd34d; }
:root[data-theme="dark"] .admin-pill--winner      { color: #6ee7b7; }

/* Entry links — a compact stack, not six full URLs stretching the row */
.admin-links {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
}
.admin-links a {
  display: inline-block;
  font-size: var(--text-xs);
  padding: 2px 8px;
  border-radius: var(--radius-sm, 6px);
  border: 1px solid var(--color-border);
  color: var(--color-electric-bright);
  text-decoration: none;
  white-space: nowrap;
}
.admin-links a:hover,
.admin-links a:focus-visible {
  border-color: var(--color-electric-bright);
  background: var(--color-bg-elevated);
}

/* ── Mentorship waitlist ─────────────────────────────────────────
   Same pill treatment as the other admin tables. Light-mode text
   darkened to clear 4.5:1, lightened again in dark mode.
   ------------------------------------------------------------- */
.admin-pill--new       { background: rgba(59, 130, 246, 0.12); color: #1e40af; border: 1px solid rgba(59,130,246,0.3); }
.admin-pill--contacted { background: rgba(245, 158, 11, 0.14); color: #92400e; border: 1px solid rgba(245,158,11,0.35); }
.admin-pill--matched   { background: rgba(16, 185, 129, 0.14); color: #065f46; border: 1px solid rgba(16,185,129,0.35); }
.admin-pill--declined  { background: rgba(17, 24, 39, 0.08);   color: var(--color-text-medium); border: 1px solid var(--color-border); }

:root[data-theme="dark"] .admin-pill--new       { color: #93c5fd; }
:root[data-theme="dark"] .admin-pill--contacted { color: #fcd34d; }
:root[data-theme="dark"] .admin-pill--matched   { color: #6ee7b7; }

/* Free text needs to wrap; the rest of the table is short values */
.admin-wrap {
  white-space: normal;
  max-width: 34ch;
  line-height: 1.5;
}
