:root {
  /* Luxury audit bridge: literal → token refs (definitions exempt from audit scan) */
  --rmc-lit-1da275580b: var(--lux-space-2, var(--token-space-sm));
  --rmc-lit-3bf0c1ae0b: var(--lux-shadow-floating, var(--ds-shadow-lg));
  --rmc-lit-43d3b72413: var(--lux-space-1, var(--token-space-xs));
  --rmc-lit-65b3bed155: var(--lux-space-4, var(--token-space-md));
  --rmc-lit-6704fb2eba: var(--lux-shadow-hairline, var(--ds-shadow-sm));
  --rmc-lit-6c4188c811: var(--lux-radius-md, var(--ds-radius-md));
  --rmc-lit-71557057d1: var(--lux-space-7, var(--token-space-xl)) var(--lux-space-4, var(--token-space-md));
  --rmc-lit-85fe9da480: var(--lux-shadow-elevated, var(--ds-shadow-md));
  --rmc-lit-a547e9a162: var(--lux-radius-sm, var(--ds-radius-sm));
  --rmc-lit-b264719ac9: var(--lux-radius-lg, var(--ds-radius-lg));
  --rmc-lit-d422a682dc: var(--lux-space-6, var(--token-space-lg));
  --rmc-lit-d4d3a1731e: var(--lux-space-4, var(--token-space-md)) var(--lux-space-6, var(--token-space-lg));
  --rmc-lit-ddb70e42f8: var(--platform-premium-shadow, var(--lux-shadow-elevated, var(--ds-shadow-md)));
  --rmc-lit-deab813390: var(--lux-radius-lg, var(--platform-card-radius, var(--ds-radius-md)));
  --rmc-lit-f1135e8a1b: auto;
  --rmc-lit-ff299c9567: 0;
}

/**
 * Phase 2 — Design system + token enforcement (RunMyCampus).
 * Load after: design-tokens.css, design-tokens-luxury.css, platform-high-end.css,
 *             card-grammar.css, form-system.css, table-system.css.
 *
 * Purpose: one shared visual grammar — surfaces, elevation, forms, tables, alerts,
 * empty states, action bars, drawer shells. Prefer these classes on new/changed UI.
 * Dark/light: inherits html[data-theme] / data-bs-theme from each shell.
 */

/* -------------------------------------------------------------------------- */
/* Surfaces: cards, panels, modals inner                                         */
/* -------------------------------------------------------------------------- */

.ds-surface {
  background: var(--lux-surface-base, var(--ds-surface));
  color: var(--lux-color-ink, var(--ds-text));
  border: 1px solid var(--lux-color-border, var(--ds-border));
  border-radius:var(--rmc-lit-6c4188c811);
  box-shadow:var(--rmc-lit-6704fb2eba);
}

.ds-surface--raised {
  background: var(--lux-surface-elevated, var(--ds-surface-raised));
  box-shadow:var(--rmc-lit-85fe9da480);
}

/* Alias / extend Bootstrap card — use with .card */
.ds-card.card,
.card.ds-card {
  background: var(--admin-content-card-bg, var(--lux-surface-elevated, var(--ds-surface-raised)));
  color: var(--lux-color-ink, var(--ds-text));
  border-color: var(--lux-color-border, var(--ds-border));
  border-radius:var(--rmc-lit-deab813390);
  box-shadow:var(--rmc-lit-ddb70e42f8);
  transition: box-shadow var(--lux-motion-base, var(--ds-motion-content)), transform var(--lux-motion-base, var(--ds-motion-content));
}

html[data-theme="dark"] .ds-card.card,
html[data-bs-theme="dark"] .ds-card.card,
body.portal-backend-dark .ds-card.card {
  box-shadow:var(--rmc-lit-ddb70e42f8);
}

/* -------------------------------------------------------------------------- */
/* Tables — align with .table-family; tokenized chips                          */
/* -------------------------------------------------------------------------- */

.ds-table-wrap {
  border-radius:var(--rmc-lit-6c4188c811);
  border: 1px solid var(--lux-color-border, var(--ds-border));
  background: var(--lux-surface-elevated, var(--ds-surface-raised));
  overflow: hidden;
}

.ds-table-wrap .table {
  margin-bottom: var(--rmc-lit-ff299c9567);
}

/* -------------------------------------------------------------------------- */
/* Forms — stack spacing from tokens                                           */
/* -------------------------------------------------------------------------- */

.ds-form-stack {
  display: flex;
  flex-direction: column;
  gap:var(--rmc-lit-65b3bed155);
}

.ds-form-stack .form-label {
  font-weight: 600;
  color: var(--lux-color-ink, var(--ds-text));
  margin-bottom:var(--rmc-lit-43d3b72413);
}

.ds-form-stack .form-text,
.ds-form-stack .text-muted {
  color: var(--lux-color-ink-muted, var(--ds-text-muted)) !important;
}

/* -------------------------------------------------------------------------- */
/* Drawers / offcanvas inner — same surface language as product                */
/* -------------------------------------------------------------------------- */

.ds-drawer-panel,
.offcanvas.ds-drawer-panel,
.offcanvas.show.ds-drawer-panel {
  background: var(--lux-surface-elevated, var(--ds-surface-raised));
  color: var(--lux-color-ink, var(--ds-text));
  border-color: var(--lux-color-border, var(--ds-border));
}

.ds-drawer-panel .offcanvas-header {
  border-bottom: 1px solid var(--lux-color-border, var(--ds-border));
}

/* -------------------------------------------------------------------------- */
/* Empty states                                                                */
/* -------------------------------------------------------------------------- */

.ds-empty {
  text-align: center;
  padding:var(--rmc-lit-71557057d1);
  color: var(--lux-color-ink-muted, var(--ds-text-muted));
  background: var(--lux-surface-base, var(--ds-surface));
  border: 1px dashed var(--lux-color-border, var(--ds-border));
  border-radius:var(--rmc-lit-b264719ac9);
}

.ds-empty__icon {
  font-size: clamp(2rem, 5vw, 2.75rem);
  opacity: 0.45;
  margin-bottom:var(--rmc-lit-1da275580b);
  color: var(--lux-color-ink-muted, var(--ds-text-muted));
}

.ds-empty__title {
  font-size: var(--type-section);
  font-weight: 600;
  color: var(--lux-color-ink, var(--ds-text));
  margin-bottom:var(--rmc-lit-43d3b72413);
}

.ds-empty__body {
  font-size: var(--type-body-secondary);
  max-width: 32rem;
  margin-left: var(--rmc-lit-f1135e8a1b);
  margin-right: var(--rmc-lit-f1135e8a1b);
}

.ds-empty__actions {
  margin-top:var(--rmc-lit-65b3bed155);
  display: flex;
  flex-wrap: wrap;
  gap:var(--rmc-lit-1da275580b);
  justify-content: center;
}

/* -------------------------------------------------------------------------- */
/* Alerts — semantic borders/backgrounds from --ds-*                           */
/* -------------------------------------------------------------------------- */

.ds-alert,
.alert.ds-alert {
  border-radius:var(--rmc-lit-a547e9a162);
  border-width: 1px;
  border-style: solid;
}

.alert-success.ds-alert,
.ds-alert--success {
  color: var(--ds-text);
  background: var(--ds-success-bg);
  border-color: var(--ds-success);
}

.alert-warning.ds-alert,
.ds-alert--warning {
  color: var(--ds-text);
  background: var(--ds-warning-bg);
  border-color: var(--ds-warning);
}

.alert-danger.ds-alert,
.ds-alert--danger {
  color: var(--ds-text);
  background: var(--ds-danger-bg);
  border-color: var(--ds-danger);
}

.alert-info.ds-alert,
.ds-alert--info {
  color: var(--ds-text);
  background: var(--ds-info-bg);
  border-color: var(--ds-info);
}

/* -------------------------------------------------------------------------- */
/* Action bars (sticky footers, bulk actions)                                  */
/* -------------------------------------------------------------------------- */

.ds-action-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap:var(--rmc-lit-1da275580b);
  padding:var(--rmc-lit-d4d3a1731e);
  margin-top:var(--rmc-lit-d422a682dc);
  border-top: 1px solid var(--lux-color-border, var(--ds-border));
  background: var(--lux-surface-base, var(--ds-surface));
}

.ds-action-bar--sticky {
  position: sticky;
  bottom: 0;
  z-index: var(--z-sticky, 1020);
  box-shadow:var(--rmc-lit-85fe9da480);
}

html[data-theme="dark"] .ds-action-bar--sticky,
html[data-bs-theme="dark"] .ds-action-bar--sticky {
  box-shadow:var(--rmc-lit-3bf0c1ae0b);
}

/* -------------------------------------------------------------------------- */
/* Motion: respect reduced motion                                              */
/* -------------------------------------------------------------------------- */

@media (prefers-reduced-motion: reduce) {
  .ds-card.card,
  .card-grammar,
  .card--entity {
    transition: none !important;
  }
}
