.cg-busy{
	position:absolute;
	top:0px;
	left:0px;
	right:0px;
	bottom:0px;
    z-index:1001;
}

.cg-busy-animation.ng-hide-add,
.cg-busy-animation.ng-hide-remove {
    -webkit-transition:all .3s ease;
    -moz-transition:all .3s ease;
    -o-transition:all .3s ease;
    transition:all .3s ease;
    display:block !important;
}
.cg-busy-animation.ng-hide-remove {
    opacity:0;
    -webkit-transform:translate(0px,-40px);
    -moz-transform:translate(0px,-40px);
    -ms-transform:translate(0px,-40px);
    -o-transform:translate(0px,-40px);
    transform:translate(0px,-40px);
}
.cg-busy-animation.ng-hide-remove.ng-hide-remove-active {
    opacity:1;
    -webkit-transform:translate(0px,0px);
    -moz-transform:translate(0px,0px);
    -ms-transform:translate(0px,0px);
    -o-transform:translate(0px,0px);
    transform:translate(0px,0px);
}
.cg-busy-animation.ng-hide-add {
    opacity:1;
    -webkit-transform:translate(0px,0px);
    -moz-transform:translate(0px,0px);
    -ms-transform:translate(0px,0px);
    -o-transform:translate(0px,0px);
    transform:translate(0px,0px);
}
.cg-busy-animation.ng-hide-add.ng-hide-add-active {
    opacity:0;
    -webkit-transform:translate(0px,-40px);
    -moz-transform:translate(0px,-40px);
    -ms-transform:translate(0px,-40px);
    -o-transform:translate(0px,-40px);
    transform:translate(0px,-40px);
}

.cg-busy-backdrop {
	background-color:#eef0f0;
	opacity:.7;
}

.cg-busy-backdrop-animation.ng-hide-add,
.cg-busy-backdrop-animation.ng-hide-remove {
    -webkit-transition:opacity .3s ease;
    -moz-transition:opacity .3s ease;
    -o-transition:opacity .3s ease;
    transition:opacity .3s ease;
    display:block !important;
}

.cg-busy-backdrop-animation.ng-hide {
  opacity:0;
}

.cg-busy-default-wrapper {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 2000;
  pointer-events: none;
  backdrop-filter: blur(2px); /* subtle background blur */
}

/* Enhanced dotted circular spinner */
.cg-busy-default-spinner {
  position: relative;
  width: 60px;                 /* bigger spinner */
  height: 60px;
  border-radius: 50%;
  border: 6px dotted #00b4ff;  /* larger visible dots */
  border-top-color: transparent;
  animation: dotted-spin 1.6s linear infinite;
  filter: drop-shadow(0 0 8px rgba(0, 180, 255, 0.4)); /* glow effect */
}

@keyframes dotted-spin {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

/* Prominent and modern loader text */
.cg-busy-default-text {
  font-family: "Poppins", "Inter", sans-serif;
  font-size: 20px;               /* larger, readable font */
  color: #1a2b3b;
  font-weight: 600;
  margin-top: 16px;
  letter-spacing: 0.5px;
  text-align: center;
  animation: fadePulse 1.5s ease-in-out infinite;
}

/* simple text pulse for life */
@keyframes fadePulse {
  0%, 100% {
    opacity: 0.8;
    transform: scale(1);
  }
  50% {
    opacity: 1;
    transform: scale(1.05);
  }
}

/* spinner + text vertical layout */
.cg-busy-default-sign {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 14px;
}




/* ? Always show only the latest (topmost) cg-busy loader */
.cg-busy-default-wrapper:not(:last-of-type),
.cg-busy-backdrop:not(:last-of-type) {
  display: none !important;
}

/* ? Keep latest loader visible and centered */
.cg-busy-default-wrapper:last-of-type {
  display: flex !important;
  justify-content: center;
  align-items: center;
  z-index: 3000 !important;
  animation: fadeInLoader 0.25s ease-in;
}

/* ? When modal is open: show loader inside modal, hide page loader */
.modal-open .modal .cg-busy-default-wrapper:last-of-type {
  position: absolute !important;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 3050 !important; /* higher than background */
  display: flex !important;
  justify-content: center;
  align-items: center;
  backdrop-filter: blur(2px);
}

/* ? Hide all other loaders when modal is open */
.modal-open .cg-busy-default-wrapper:not(.modal .cg-busy-default-wrapper:last-of-type),
.modal-open .cg-busy-backdrop:not(.modal .cg-busy-backdrop:last-of-type) {
  display: none !important;
}

/* ? Ensure only latest backdrop shows */
.cg-busy-backdrop:last-of-type {
  display: block !important;
  z-index: 2999 !important;
}

/* ? Smooth fade animation */
@keyframes fadeInLoader {
  from { opacity: 0; }
  to { opacity: 1; }
}
