/* Inter (latin subset, weights 400/500/600/700) is vendored under wwwroot/fonts, the same as the client.
   The admin site has no service worker; the fonts are served with the site itself. */
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/inter/Inter-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('../fonts/inter/Inter-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('../fonts/inter/Inter-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('../fonts/inter/Inter-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

html, body {
  margin: 0;
  background: #161826;
  color: #e9e9ed;
  font-family: "Inter", system-ui, sans-serif;
}

/* Blazor shows the loading indicator until the app starts. */
.loading-progress {
  position: relative;
  display: block;
  width: 8rem;
  height: 8rem;
  margin: 20vh auto 1rem;
}
.loading-progress circle {
  fill: none;
  stroke: #3f424d;
  stroke-width: 0.6rem;
  transform-origin: 50% 50%;
}
.loading-progress circle:last-child {
  stroke: #9184d9;
  stroke-dasharray: 250;
  stroke-dashoffset: 250;
  animation: loading-progress 2s linear infinite;
}
@keyframes loading-progress {
  100% { transform: rotate(360deg); }
}
/* Admin screens: dashboard tiles, pending requests, phone cards and action buttons. */
.admin-tile,
.admin-card {
  border: 1px solid rgba(233, 233, 237, 0.08);
}
.admin-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}
/* The drawer's content is a column so the account block sits at the bottom, with room around it. */
.admin-drawer .mud-drawer-content {
  display: flex;
  flex-direction: column;
  min-height: 100%;
}
.admin-account {
  margin-top: auto;
  padding: 16px;
}
/* Numbers line up on the right and dates stay on one line in the users table. */
.admin-num {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
/* MudBlazor's own cell alignment (text-align: start) would otherwise win over .admin-num, in header and body cells alike. */
.mud-table-root .mud-table-cell.admin-num {
  text-align: right;
}
/* The row's action buttons sit side by side at the right of the cell when there is room, and stack
   only when the column is too narrow, so the table can shrink to fit its container. */
.mud-table-cell .admin-actions {
  flex-wrap: wrap;
  justify-content: flex-end;
}
/* The delete dialog's content is two short elements that never need to scroll; let it overflow visibly.
   The extra class makes this more specific than MudBlazor's own .mud-dialog .mud-dialog-content rule,
   which is linked after this stylesheet and would otherwise win on order.
   Both axes are set: a single-axis visible is computed to auto when the other axis is not visible. */
.mud-dialog .mud-dialog-content.admin-delete-content {
  overflow: visible;
}
.admin-nowrap {
  white-space: nowrap;
}
.admin-actions-stacked {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.loading-progress-text {
  text-align: center;
  color: #9397ab;
}

/* Hidden until the framework reports an unhandled error. */
#blazor-error-ui {
  display: none;
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 0.6rem 1.25rem;
  background: #232532;
  color: #e9e9ed;
  z-index: 1000;
}
#blazor-error-ui .reload {
  color: #b5abfc;
  margin-left: 0.5rem;
}
#blazor-error-ui .dismiss {
  position: absolute;
  right: 0.75rem;
  top: 0.5rem;
  cursor: pointer;
}
