:root {
  --sidebar-left-width: 15rem;
  --header-clearance: 1.5rem;
}

.form-control:focus,
.form-check-input:focus,
.form-select:focus {
  border-color: var(--bs-active-border-color);
  box-shadow: 0 0 0 0.25rem rgba(var(--bs-active-outline-color-rgb), 0.25);
}

/************* Layout ****************/

.toast-container {
  position: fixed;
  z-index: 2002;
  bottom: 1rem;
  right: 1rem;
}

label.is-invalid {
  color: var(--bs-danger);
}

input.is-invalid,
textarea.is-invalid {
  border-color: var(--bs-danger);
}

.page-content {
  padding-top: var(--header-clearance);

}


.fs-7 {
  font-size: 0.875rem;
}

/**
font-family: 'Source Sans Pro', sans-serif;
*/
/********************* Pic sizes **************************/
.pic-24 img,
.pic-32 img,
.pic-36 img,
.pic-48 img,
.pic-64 img {
  display: block;
  -webkit-border-radius: 50px;
  border-radius: 50px;
  border: #ccc solid 1px;
  margin-top: 3px;
}

.pic-24 img {
  width: 24px;
  height: 24px;
}

.pic-32 img {
  width: 32px;
  height: 32px;
}

.pic-36 img {
  width: 36px;
  height: 36px;
}

.pic-48 img {
  width: 48px;
  height: 48px;
}

.pic-64 img {
  width: 64px;
  height: 64px;
}

.pic-rs {
  width: 100px;
  display: block;
  border-radius: var(--default-radius) 0 0 var(--default-radius);
}

/****************************PARTS************************************/
.header {
  background-color: #fff;

  padding: 0.25rem;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  min-height: var(--header-clearance);
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  z-index: 99;
  height: var(--header-clearance);
}

.header-logo img,
.header-logo-mini img {
  height: 3rem;
  display: block;
}

.header-logo-mini {
  display: none;
}

.header-tool span {
  position: absolute;
  right: 0;
  top: 1px;
  font-size: 12px;
  background-color: rgba(255, 0, 0, 0.8);
  color: #fff;
  padding: 0 2px;
  line-height: 16px;
  -webkit-border-radius: 3px;
  border-radius: 3px;
  z-index: 2;
}

.panel {
  background-color: var(--bs-white);
  box-shadow: 0 0 6px var(--bs-gray-300);
}

.panel-standalone {
  width: 540px;
  max-width: 92%;
}

.v-extended {
  min-height: 90vh;
}

/** Header Icons ***/
.i-button {
  position: relative;
}

.i-button:after {
  position: absolute;
  font-family: 'Font Awesome';
  font-weight: 300;
  color: #666;
  font-size: 1.5rem;
  bottom: 6px;
  left: 4px;
  z-index: 1;
}

#ht_profile {
  width: 30px;
}

#ht_profile img {
  display: block;
  width: 30px;
  height: 30px;
  border-radius: 50px;
  border: #999 solid 1px;
}

.header-links a {
  display: inline-block;
  padding: 0.5rem 1rem;
}

.application-icon {
  width: 96px;
  height: 96px;
  display: block;
  margin-right: 0.5rem;
  background-color: #eee;
}

.application-icon img {
  width: 100%;
  height: 100%;
  display: block;
  border-radius: var(--default-radius);
}

/************** side bars *****************/
.sidebar-left {
  display: flex;
  flex-direction: column;
  position: fixed;
  background-color: #fff;
  top: 0;
  left: 0;
  bottom: 0;
  width: var(--sidebar-left-width);
  border-right: #eee solid 1px;
  margin-top: var(--header-clearance);
  padding: 0.5rem 0;
}

.sidebar-left a {
  padding: 0.5rem 1rem;
  display: block;
  ;
}

.sidebar-scroll {
  overflow: auto;

}

/******* Contents panels *******/
.page-dashboard {
  padding: 1rem;
  margin-top: var(--header-clearance);
  margin-left: var(--sidebar-left-width);
}

/** Grid **/
.grid .grid-body {
  min-height: 100px;
  background-color: var(--bs-white);
  position: relative;
}

.grid .grid-header .cell,
.grid .grid-row .cell {
  padding: 0.5rem;
  position: relative;
}

.grid .grid-header {
  background-color: var(--bs-gray-400);
  font-weight: bold;
  color: var(--bs-gray-700);
}

.grid .grid-header .cell {
  border-right: var(--bs-gray-100) solid 1px;
}

.grid .grid-header .cell[data-key] {
  cursor: pointer;
}

.grid .grid-header div div:last-child .cell {
  border: none;
}

.grid .grid-row {
  border-bottom: var(--bs-border-color) solid 1px;
}

.grid .grid-row.disabled {
  color: var(--bs-gray-500);
}

.grid .grid-row:nth-child(odd) {
  background-color: var(--bs-gray-100);
}

.grid .grid-row:hover {
  background-color: var(--hover--color);
}

.grid .grid-loader {
  background-color: rgba(255, 255, 255, 0.5);
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  position: absolute;
  z-index: 2;
  box-sizing: border-box;
  display: flex;
}

.grid .grid-sort {
  position: absolute;
  right: 0.3rem;
}


@keyframes sp-open {
  from {
    transform: translateX(100%);
  }

  to {
    transform: translateX(0%);
  }
}

@keyframes sp-close {
  from {
    transform: translateX(0%);
  }

  to {
    transform: translateX(100%);
  }
}

.side-panel {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  top: 72px;
  background-color: rgba(0, 0, 0, 0.2);
  z-index: 3;
}

.side-panel .sp-inner {
  width: 100%;
  height: 100%;
  background-color: var(--bs-white);
  margin-left: auto;
  display: flex;
  flex-direction: column;
  transition: all 0.2s;
  animation: sp-open 0.4s;
  animation-iteration-count: 1;
}

.side-panel .sp-inner .sp-close {
  position: absolute;
  width: 3rem;
  right: 0.25rem;
  margin-top: 0.25rem;
  z-index: 5;
}

.side-panel .sp-inner .sp-body {
  flex: 1 1 auto;
  overflow: auto;
}

.side-panel .sp-closing {
  transform: translateX(100%);
  animation: sp-close 0.4s;
}

.sp-sm {
  max-width: 600px;
}

.sp-md {
  max-width: 768px;
}

.sp-lg {
  max-width: 992px;
}

.card{
  box-shadow: var(--bs-box-shadow-sm) !important;
}
.card, .card-header, .card-footer {
  border-color: var(--color-gray-200);
}

/*********** Badge glow animation *************/
.badge-glow {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;


  color: #fff;
  /* Text color */
  overflow: hidden;
  /* Essential to contain the gradient animation */

  /* Background for the placeholder glow */
  /* Using a gradient that will be animated */
  background: linear-gradient(90deg,
      rgba(255, 145, 0, 0.3) 0%,
      /* Start with a semi-transparent blue */
      rgba(255, 145, 0, 0.7) 20%,
      /* Stronger blue at 20% */
      rgba(255, 145, 0, 0.9) 50%,
      /* Most intense blue at 50% */
      rgba(255, 145, 0, 0.7) 80%,
      /* Fades back at 80% */
      rgba(255, 145, 0, 0.3) 100%
      /* End with semi-transparent blue */
    );
  background-size: 200% 100%;
  /* Make the gradient wider than the element to allow movement */
  background-position: -100% 0;
  /* Start the gradient off-screen to the left */

  /* Apply the shimmering glow animation */
  animation: placeholder-glow 1.5s infinite linear;
  /* 1.5s duration, infinite, linear speed */
}

/* Define the keyframes for the placeholder-style glowing animation */
@keyframes placeholder-glow {
  0% {
    background-position: -100% 0;
    /* Gradient starts off-screen left */
  }

  100% {
    background-position: 100% 0;
    /* Gradient moves to off-screen right */
  }
}