/* MudBlazor customizations */
.mud-card.alt-mud-card > .mud-card-header {
  background-color: var(--mud-palette-background-grey);
}

.alt-mud-card > .mud-card-header .mud-typography-body1 {
  font-weight: 700;
}

.alt-mud-card > .mud-card-content {
  min-height: 4em;
}

/* Error and Warning styles for MudTable rows/cells */
.error-row .mud-table-cell {
  background-color: var(--mud-palette-error-hover);
  color: var(--mud-palette-error-text);
}

.warning-row .mud-table-cell {
  background-color: var(--mud-palette-warning-hover);
  color: var(--mud-palette-warning-text);
}

em.mud-typography {
  font-style: italic;
}

strong.mud-typography {
  font-weight: var(--mud-typography-subtitle2-weight);
}

/* Fix background color for disabled MudButtonGroup Variant="Variant.Filled" buttons */
.mud-button-group-filled .mud-button-root:disabled {
  background-color: var(--mud-palette-action-disabled-background) !important;
}

/* Globally disable filled button drop-shadows */
.mud-button-filled {
  box-shadow: none;
}

.mud-button-filled:hover {
  box-shadow: none;
}

.mud-button-group-filled {
  box-shadow: none;
}

.mud-button-group-filled:hover {
  box-shadow: none;
}

/* ======================================== */
/* Formatting rules for ANSI escape sequences (ex: from GitHub Action logs) */
:root {
  --ansi-black: rgb(12, 12, 12);
  --ansi-red: rgb(197, 15, 31);
  --ansi-green: rgb(19, 161, 14);
  --ansi-yellow: rgb(193, 156, 0);
  --ansi-blue: rgb(0, 55, 218);
  --ansi-magenta: rgb(136, 23, 152);
  --ansi-cyan: rgb(58, 150, 221);
  --ansi-white: rgb(204, 204, 204);
  --ansi-bright-black: rgb(118, 118, 118);
  --ansi-bright-red: rgb(231, 72, 86);
  --ansi-bright-green: rgb(22, 198, 12);
  --ansi-bright-yellow: rgb(249, 241, 165);
  --ansi-bright-blue: rgb(59, 120, 255);
  --ansi-bright-magenta: rgb(180, 0, 158);
  --ansi-bright-cyan: rgb(97, 214, 214);
  --ansi-bright-white: rgb(242, 242, 242);
}

/* ANSI Text Formatting */
.ansi-1 {
  font-weight: bold;
}

.ansi-3 {
  font-style: italic;
}

.ansi-4 {
  text-decoration: underline;
}

.ansi-9 {
  text-decoration: line-through;
}

/* ANSI Foreground Colors */
.ansi-fg-black {
  color: var(--ansi-black);
}

.ansi-fg-blue {
  color: var(--ansi-blue);
}

.ansi-fg-cyan {
  color: var(--ansi-cyan);
}

.ansi-fg-green {
  color: var(--ansi-green);
}

.ansi-fg-magenta {
  color: var(--ansi-magenta);
}

.ansi-fg-red {
  color: var(--ansi-red);
}

.ansi-fg-white {
  color: var(--ansi-white);
}

.ansi-fg-yellow {
  color: var(--ansi-yellow);
}

/* ANSI Foreground Colors (Bright) */
.ansi-fg-bright-black {
  color: var(--ansi-bright-black);
}

.ansi-fg-bright-blue {
  color: var(--ansi-bright-blue);
}

.ansi-fg-bright-cyan {
  color: var(--ansi-bright-cyan);
}

.ansi-fg-bright-green {
  color: var(--ansi-bright-green);
}

.ansi-fg-bright-magenta {
  color: var(--ansi-bright-magenta);
}

.ansi-fg-bright-red {
  color: var(--ansi-bright-red);
}

.ansi-fg-bright-white {
  color: var(--ansi-bright-white);
}

.ansi-fg-bright-yellow {
  color: var(--ansi-bright-yellow);
}

/* ANSI Foreground Colors (Numeric) */
.ansi-30 {
  color: var(--ansi-black);
}

.ansi-31 {
  color: var(--ansi-red);
}

.ansi-32 {
  color: var(--ansi-green);
}

.ansi-33 {
  color: var(--ansi-yellow);
}

.ansi-34 {
  color: var(--ansi-blue);
}

.ansi-35 {
  color: var(--ansi-magenta);
}

.ansi-36 {
  color: var(--ansi-cyan);
}

.ansi-37 {
  color: var(--ansi-white);
}

/* ANSI Foreground Colors (Numeric, Bright) */
.ansi-90 {
  color: var(--ansi-bright-black);
}

.ansi-91 {
  color: var(--ansi-bright-red);
}

.ansi-92 {
  color: var(--ansi-bright-green);
}

.ansi-93 {
  color: var(--ansi-bright-yellow);
}

.ansi-94 {
  color: var(--ansi-bright-blue);
}

.ansi-95 {
  color: var(--ansi-bright-magenta);
}

.ansi-96 {
  color: var(--ansi-bright-cyan);
}

.ansi-97 {
  color: var(--ansi-bright-white);
}

/* ANSI Background Colors */
.ansi-bg-black {
  background-color: var(--ansi-black);
}

.ansi-bg-blue {
  background-color: var(--ansi-blue);
}

.ansi-bg-cyan {
  background-color: var(--ansi-cyan);
}

.ansi-bg-green {
  background-color: var(--ansi-green);
}

.ansi-bg-magenta {
  background-color: var(--ansi-magenta);
}

.ansi-bg-red {
  background-color: var(--ansi-red);
}

.ansi-bg-white {
  background-color: var(--ansi-white);
}

.ansi-bg-yellow {
  background-color: var(--ansi-yellow);
}

/* ANSI Background Colors (Bright) */
.ansi-bg-bright-black {
  background-color: var(--ansi-bright-black);
}

.ansi-bg-bright-blue {
  background-color: var(--ansi-bright-blue);
}

.ansi-bg-bright-cyan {
  background-color: var(--ansi-bright-cyan);
}

.ansi-bg-bright-green {
  background-color: var(--ansi-bright-green);
}

.ansi-bg-bright-magenta {
  background-color: var(--ansi-bright-magenta);
}

.ansi-bg-bright-red {
  background-color: var(--ansi-bright-red);
}

.ansi-bg-bright-white {
  background-color: var(--ansi-bright-white);
}

.ansi-bg-bright-yellow {
  background-color: var(--ansi-bright-yellow);
}

/* ANSI Background Colors (Numeric) */
.ansi-40 {
  background-color: var(--ansi-black);
}

.ansi-41 {
  background-color: var(--ansi-red);
}

.ansi-42 {
  background-color: var(--ansi-green);
}

.ansi-43 {
  background-color: var(--ansi-yellow);
}

.ansi-44 {
  background-color: var(--ansi-blue);
}

.ansi-45 {
  background-color: var(--ansi-magenta);
}

.ansi-46 {
  background-color: var(--ansi-cyan);
}

.ansi-47 {
  background-color: var(--ansi-white);
}

/* ANSI Background Colors (Numeric, Bright) */
.ansi-100 {
  background-color: var(--ansi-bright-black);
}

.ansi-101 {
  background-color: var(--ansi-bright-red);
}

.ansi-102 {
  background-color: var(--ansi-bright-green);
}

.ansi-103 {
  background-color: var(--ansi-bright-yellow);
}

.ansi-104 {
  background-color: var(--ansi-bright-blue);
}

.ansi-105 {
  background-color: var(--ansi-bright-magenta);
}

.ansi-106 {
  background-color: var(--ansi-bright-cyan);
}

.ansi-107 {
  background-color: var(--ansi-bright-white);
}

/* End of ANSI formatting styles */
/* ======================================== */
:root {
  --viewport-height: calc(100vh - var(--mud-appbar-height) - var(--mud-typography-h4-size) - var(--mud-typography-subtitle2-size));
  --padding-increment: 4px; /* MudBlazor default multiplier for padding */
}

.vh-100 {
  height: var(--viewport-height);
}

.h-100 {
  height: 100%;
}

.w-100 {
  width: 100%;
}

.viewport-scrollable {
  height: var(--viewport-height);
  overflow-x: unset !important;
  overflow-y: auto !important;
}

.overflow-scroll-x {
  overflow-x: auto !important;
  overflow-y: unset !important;
}

.overflow-scroll-y {
  overflow-x: unset !important;
  overflow-y: auto !important;
}

.overflow-ellipsis {
  width: 95%;
  overflow-x: clip;
  text-overflow: ellipsis;
  white-space: nowrap;
  display: inline-block;
}

.sticky-top {
  position: sticky;
  top: 0;
  z-index: 1023;
  background-color: var(--mud-palette-background);
}

.sticky-bottom {
  position: sticky;
  bottom: 0;
  z-index: 1023;
  background-color: var(--mud-palette-background);
}

@keyframes spinning {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}
.spinning {
  animation: spinning 1s linear infinite;
}

.spinning-stepped-fast {
  animation: spinning 1s steps(8) infinite;
}

.spinning-stepped {
  animation: spinning 1.5s steps(8) infinite;
}

.spinning-stepped-slow {
  animation: spinning 2s steps(8) infinite;
}

.hover-bounce-0 {
  box-shadow: var(--mud-elevation-0);
  transition-property: box-shadow;
  transition-duration: 1s;
}

.hover-bounce-0:hover {
  box-shadow: var(--mud-elevation-3);
}

.hover-bounce-1 {
  box-shadow: var(--mud-elevation-1);
  transition-property: box-shadow;
  transition-duration: 1s;
}

.hover-bounce-1:hover {
  box-shadow: var(--mud-elevation-4);
}

.hover-bounce-2 {
  box-shadow: var(--mud-elevation-2);
  transition-property: box-shadow;
  transition-duration: 1s;
}

.hover-bounce-2:hover {
  box-shadow: var(--mud-elevation-5);
}

.hover-bounce-3 {
  box-shadow: var(--mud-elevation-3);
  transition-property: box-shadow;
  transition-duration: 1s;
}

.hover-bounce-3:hover {
  box-shadow: var(--mud-elevation-6);
}

.hover-bounce-4 {
  box-shadow: var(--mud-elevation-4);
  transition-property: box-shadow;
  transition-duration: 1s;
}

.hover-bounce-4:hover {
  box-shadow: var(--mud-elevation-7);
}

.hover-bounce-5 {
  box-shadow: var(--mud-elevation-5);
  transition-property: box-shadow;
  transition-duration: 1s;
}

.hover-bounce-5:hover {
  box-shadow: var(--mud-elevation-8);
}

.hover-bounce-6 {
  box-shadow: var(--mud-elevation-6);
  transition-property: box-shadow;
  transition-duration: 1s;
}

.hover-bounce-6:hover {
  box-shadow: var(--mud-elevation-9);
}

.hover-bounce-7 {
  box-shadow: var(--mud-elevation-7);
  transition-property: box-shadow;
  transition-duration: 1s;
}

.hover-bounce-7:hover {
  box-shadow: var(--mud-elevation-10);
}

.hover-bounce-8 {
  box-shadow: var(--mud-elevation-8);
  transition-property: box-shadow;
  transition-duration: 1s;
}

.hover-bounce-8:hover {
  box-shadow: var(--mud-elevation-11);
}

.hover-bounce-9 {
  box-shadow: var(--mud-elevation-9);
  transition-property: box-shadow;
  transition-duration: 1s;
}

.hover-bounce-9:hover {
  box-shadow: var(--mud-elevation-12);
}

.hover-bounce-10 {
  box-shadow: var(--mud-elevation-10);
  transition-property: box-shadow;
  transition-duration: 1s;
}

.hover-bounce-10:hover {
  box-shadow: var(--mud-elevation-13);
}

.hover-bounce-11 {
  box-shadow: var(--mud-elevation-11);
  transition-property: box-shadow;
  transition-duration: 1s;
}

.hover-bounce-11:hover {
  box-shadow: var(--mud-elevation-14);
}

.hover-bounce-12 {
  box-shadow: var(--mud-elevation-12);
  transition-property: box-shadow;
  transition-duration: 1s;
}

.hover-bounce-12:hover {
  box-shadow: var(--mud-elevation-15);
}

.hover-bounce-13 {
  box-shadow: var(--mud-elevation-13);
  transition-property: box-shadow;
  transition-duration: 1s;
}

.hover-bounce-13:hover {
  box-shadow: var(--mud-elevation-16);
}

.hover-bounce-14 {
  box-shadow: var(--mud-elevation-14);
  transition-property: box-shadow;
  transition-duration: 1s;
}

.hover-bounce-14:hover {
  box-shadow: var(--mud-elevation-17);
}

.hover-bounce-15 {
  box-shadow: var(--mud-elevation-15);
  transition-property: box-shadow;
  transition-duration: 1s;
}

.hover-bounce-15:hover {
  box-shadow: var(--mud-elevation-18);
}

.hover-bounce-16 {
  box-shadow: var(--mud-elevation-16);
  transition-property: box-shadow;
  transition-duration: 1s;
}

.hover-bounce-16:hover {
  box-shadow: var(--mud-elevation-19);
}

.hover-bounce-17 {
  box-shadow: var(--mud-elevation-17);
  transition-property: box-shadow;
  transition-duration: 1s;
}

.hover-bounce-17:hover {
  box-shadow: var(--mud-elevation-20);
}

.hover-bounce-18 {
  box-shadow: var(--mud-elevation-18);
  transition-property: box-shadow;
  transition-duration: 1s;
}

.hover-bounce-18:hover {
  box-shadow: var(--mud-elevation-21);
}

.hover-bounce-19 {
  box-shadow: var(--mud-elevation-19);
  transition-property: box-shadow;
  transition-duration: 1s;
}

.hover-bounce-19:hover {
  box-shadow: var(--mud-elevation-22);
}

.hover-bounce-20 {
  box-shadow: var(--mud-elevation-20);
  transition-property: box-shadow;
  transition-duration: 1s;
}

.hover-bounce-20:hover {
  box-shadow: var(--mud-elevation-23);
}

.hover-bounce-21 {
  box-shadow: var(--mud-elevation-21);
  transition-property: box-shadow;
  transition-duration: 1s;
}

.hover-bounce-21:hover {
  box-shadow: var(--mud-elevation-24);
}

.hover-bounce-22 {
  box-shadow: var(--mud-elevation-22);
  transition-property: box-shadow;
  transition-duration: 1s;
}

.hover-bounce-22:hover {
  box-shadow: var(--mud-elevation-25);
}

.hover-bounce-23 {
  box-shadow: var(--mud-elevation-23);
  transition-property: box-shadow;
  transition-duration: 1s;
}

.hover-bounce-23:hover {
  box-shadow: var(--mud-elevation-26);
}

.hover-bounce-24 {
  box-shadow: var(--mud-elevation-24);
  transition-property: box-shadow;
  transition-duration: 1s;
}

.hover-bounce-24:hover {
  box-shadow: var(--mud-elevation-27);
}

.hover-bounce-25 {
  box-shadow: var(--mud-elevation-25);
  transition-property: box-shadow;
  transition-duration: 1s;
}

.hover-bounce-25:hover {
  box-shadow: var(--mud-elevation-28);
}

/* force bold-face text, overriding mud-typography settings */
.strong {
  font-weight: calc(2 * var(--mud-typography-default-weight)) !important;
}