/* Metric card — unifies AdminLTE .small-box stat tiles */
body.admindesk .metric-card {
  background: var(--fit-surface-3);
  border: 1px solid var(--fit-border-default);
  border-radius: var(--fit-radius-lg);
  padding: var(--fit-sp-4);
  box-shadow: var(--fit-shadow-sm);
}
body.admindesk .metric-card__label { font-size: var(--fit-fs-sm); color: var(--fit-text-tertiary); }
body.admindesk .metric-card__value { font-size: var(--fit-fs-3xl); font-weight: 700; color: var(--fit-text-primary); }
body.admindesk .metric-card__delta { font-size: var(--fit-fs-xs); }
body.admindesk .metric-card__delta--up { color: var(--fit-success); }
body.admindesk .metric-card__delta--down { color: var(--fit-danger); }
body.admindesk .metric-card__sub { margin-top: var(--fit-sp-2); font-size: var(--fit-fs-xs); color: var(--fit-text-tertiary); }
body.admindesk .metric-card__sub i { margin-right: 2px; }

/* Buttons — primary uses accent; loading spinner via .is-loading */
body.admindesk .btn-primary { background: var(--fit-accent); border-color: var(--fit-accent); }
body.admindesk .btn-primary:hover { background: var(--fit-accent-hover); border-color: var(--fit-accent-hover); }
body.admindesk .btn:focus-visible { outline: none; box-shadow: var(--fit-focus-ring); }
body.admindesk .btn.is-loading { position: relative; color: transparent !important; }
body.admindesk .btn.is-loading::after {
  content: ""; position: absolute; inset: 0; margin: auto;
  width: 1rem; height: 1rem; border: 2px solid rgba(255,255,255,.5);
  border-top-color: #fff; border-radius: 50%; animation: fit-spin .6s linear infinite;
}
@keyframes fit-spin { to { transform: rotate(360deg); } }

/* Tables — clean header, subtle hover, sortable affordance */
body.admindesk .table > :not(caption) > * > * { padding: var(--fit-sp-2) var(--fit-sp-3); }
body.admindesk .table thead th {
  background: var(--fit-surface-2); color: var(--fit-text-secondary);
  font-size: var(--fit-fs-sm); border-bottom: 1px solid var(--fit-border-default);
}
body.admindesk .table-hover tbody tr:hover { background: var(--fit-surface-2); }
body.admindesk .sortable-header { cursor: pointer; user-select: none; }
body.admindesk .sortable-header[aria-sort="ascending"]::after  { content: " ▲"; color: var(--fit-text-tertiary); }
body.admindesk .sortable-header[aria-sort="descending"]::after { content: " ▼"; color: var(--fit-text-tertiary); }

/* Status pill */
body.admindesk .status-pill {
  display: inline-flex; align-items: center; gap: 4px; padding: 2px 10px;
  border-radius: 999px; font-size: var(--fit-fs-xs); font-weight: 600;
}
body.admindesk .status-pill--success { background: var(--fit-success-subtle); color: var(--fit-success); }
body.admindesk .status-pill--warning { background: var(--fit-warning-subtle); color: var(--fit-warning); }
body.admindesk .status-pill--danger  { background: var(--fit-danger-subtle);  color: var(--fit-danger); }
body.admindesk .status-pill--info    { background: var(--fit-info-subtle);    color: var(--fit-info); }
body.admindesk .status-pill--neutral { background: var(--fit-surface-2);       color: var(--fit-text-secondary); }

/* Forms — accent focus ring */
body.admindesk .form-control:focus, body.admindesk .form-select:focus {
  border-color: var(--fit-accent); box-shadow: var(--fit-focus-ring);
}

/* Standardized states */
body.admindesk .state-empty, body.admindesk .state-error {
  text-align: center; padding: var(--fit-sp-6); color: var(--fit-text-tertiary);
}
body.admindesk .state-skeleton .sk-row {
  height: 14px; margin: 8px 0; border-radius: 4px;
  background: linear-gradient(90deg, var(--fit-surface-2), var(--fit-border-light), var(--fit-surface-2));
  background-size: 200% 100%; animation: fit-shimmer 1.2s infinite;
}
@keyframes fit-shimmer { to { background-position: -200% 0; } }

/* Sidebar nav — accent active state */
body.admindesk .nav-sidebar .nav-link.active { background: var(--fit-accent-subtle); color: var(--fit-accent); }
