/* Turbo theme overrides for Radzen */
/* See https://github.com/radzenhq/radzen-blazor/blob/master/Radzen.Blazor/themes/default.scss */
:root {
  /* Primary */
  --rz-primary: var(--color-primary);
  --rz-primary-light: var(--color-primary-light);
  --rz-primary-lighter: rgba(var(--color-primary-rgb), 0.16);
  --rz-primary-dark: var(--color-primary-hover);
  --rz-primary-darker: var(--color-primary-dark);
  --rz-secondary: var(--color-primary);
  --rz-secondary-light: var(--color-primary-light);
  --rz-secondary-lighter: rgba(var(--color-primary-rgb), 0.2);
  --rz-secondary-dark: var(--color-primary-hover);
  --rz-secondary-darker: var(--color-primary-dark);
  --rz-on-primary-lighter: var(--color-primary);
  --rz-on-secondary-lighter: var(--color-primary);

  /* Semantic */
  --rz-info: var(--color-info);
  --rz-info-light: var(--color-info-light);
  --rz-info-lighter: rgba(var(--color-info-rgb), 0.2);
  --rz-info-dark: var(--color-info-hover);
  --rz-success: var(--color-success);
  --rz-success-light: var(--color-success-light);
  --rz-success-lighter: rgba(var(--color-success-rgb), 0.16);
  --rz-success-dark: var(--color-success-hover);
  --rz-warning: var(--color-warning);
  --rz-warning-light: var(--color-warning-light);
  --rz-warning-lighter: rgba(var(--color-warning-rgb), 0.2);
  --rz-warning-dark: var(--color-warning-hover);
  --rz-danger: var(--color-error);
  --rz-danger-light: var(--color-error-light);
  --rz-danger-lighter: rgba(var(--color-error-rgb), 0.2);
  --rz-danger-dark: var(--color-error-hover);

  /* Text */
  --rz-text-color: var(--color-text-primary);
  --rz-text-title-color: var(--color-text-primary);
  --rz-text-selection-background-color: var(--color-primary);
  --rz-text-selection-color: var(--color-text-inverse);
}

/* Re-map Radzen tokens in dark mode.
   Radzen's component styles reference --rz-base-* for backgrounds, borders, and text.
   The base palette goes from lightest (50) to darkest (900). In dark mode we invert the
   luminance axis: "light" values become dark surfaces; "dark" values become light text.
   This ensures DataGrid odd rows, hover states, inputs, and cards all render correctly. */
[data-theme="dark"] {
  /* Base palette — drives table rows, inputs, cards, checkboxes.
     50–200: used as subtle backgrounds (odd rows, selected, hover tints) → dark surfaces
     300–500: used as borders and dividers → border tokens
     600–900: used as text and icons → light text tokens */
  --rz-base: var(--color-surface-active);
  --rz-base-50: var(--color-surface-hover);      /* odd row bg, selected bg — was text-primary (#fff) */
  --rz-base-100: var(--color-surface-active);    /* hover bg — was text-secondary */
  --rz-base-200: var(--color-border-dark);       /* subtle dividers — was text-tertiary */
  --rz-base-300: var(--color-border);            /* borders */
  --rz-base-400: var(--color-border);            /* borders */
  --rz-base-500: var(--color-text-tertiary);     /* mid-gray icons/placeholders */
  --rz-base-600: var(--color-text-secondary);    /* secondary text */
  --rz-base-700: var(--color-text-secondary);    /* secondary text */
  --rz-base-800: var(--color-text-primary);      /* primary text — was background (#121212) */
  --rz-base-900: var(--color-text-primary);      /* primary text — was #0a0a0a */
  --rz-base-light: var(--color-surface-hover);   /* lighter surface */
  --rz-base-lighter: var(--color-surface);       /* lightest surface */
  --rz-base-dark: var(--color-surface-active);   /* darker surface */
  --rz-base-darker: var(--color-background);     /* darkest bg */

  /* Backgrounds */
  --rz-body-background-color: var(--color-background);
  --rz-base-background-color: var(--color-surface);

  /* Text */
  --rz-text-color: var(--color-text-primary);
  --rz-text-title-color: var(--color-text-primary);

  /* Re-assert brand colors (in case Radzen's dark base overrides them) */
  --rz-primary: var(--color-primary);
  --rz-primary-light: var(--color-primary-light);
  --rz-primary-lighter: rgba(var(--color-primary-rgb), 0.16);
  --rz-primary-dark: var(--color-primary-hover);
  --rz-primary-darker: var(--color-primary-dark);
  --rz-secondary: var(--color-primary);
  --rz-secondary-light: var(--color-primary-light);
  --rz-secondary-lighter: rgba(var(--color-primary-rgb), 0.2);
  --rz-secondary-dark: var(--color-primary-hover);
  --rz-secondary-darker: var(--color-primary-dark);
  --rz-on-primary-lighter: var(--color-primary);
  --rz-on-secondary-lighter: var(--color-primary);
  --rz-info: var(--color-info);
  --rz-info-light: var(--color-info-light);
  --rz-info-lighter: rgba(var(--color-info-rgb), 0.2);
  --rz-info-dark: var(--color-info-hover);
  --rz-success: var(--color-success);
  --rz-success-light: var(--color-success-light);
  --rz-success-lighter: rgba(var(--color-success-rgb), 0.16);
  --rz-success-dark: var(--color-success-hover);
  --rz-warning: var(--color-warning);
  --rz-warning-light: var(--color-warning-light);
  --rz-warning-lighter: rgba(var(--color-warning-rgb), 0.2);
  --rz-warning-dark: var(--color-warning-hover);
  --rz-danger: var(--color-error);
  --rz-danger-light: var(--color-error-light);
  --rz-danger-lighter: rgba(var(--color-error-rgb), 0.2);
  --rz-danger-dark: var(--color-error-hover);
}

/* ── Component integration ──────────────────────────────────────────────
   Universal Radzen-component fixes that apply across every consuming project.
   Project-specific overrides (one-off cursors, project-private hover states)
   stay in the consuming project's CSS file. */

/* Horizontal scroll on narrow viewports — when the viewport is narrower than
   the grid's natural minimum width, scroll the grid horizontally inside its
   host instead of compressing column widths or pushing the page wider. */
.rz-data-grid {
  overflow-x: auto;
}

/* RadzenDataGrid as a card section — drop the grid's own outer border so the
   card border doesn't double up. The card-header's own border-bottom serves
   as the separator. The card itself gets `overflow: clip` so its rounded
   corners clip the grid's square edges; otherwise the grid's bottom corners
   poke past the card's radius. */
.card:has(> .rz-data-grid) {
  overflow: clip;
}
.card > .rz-data-grid {
  border: 0;
  border-radius: 0;
}
