#toasters-container::-webkit-scrollbar {
  display: none;
}

#toasters-container .toasters-wrapper {
  position: fixed;
  width: fit-content;
  overflow-y: scroll;
  z-index: 100;
  max-height: 100vh;
  scrollbar-width: none;
  display: flex;
  gap: 0.5em;
  flex-direction: column-reverse;
  --animation-time: 0.3s;
}

#toasters-container .toasters-wrapper.n,
#toasters-container .toasters-wrapper.s {
  --animation-time: 0.2s;
}

#toasters-container .toasters-wrapper.n {
  top: 0;
  right: 50%;
  transform: translateX(50%);
  --start-position: translateY(-110%);
}

#toasters-container .toasters-wrapper.ne {
  top: 0;
  right: 0;
  --start-position: translateX(110%);
}

#toasters-container .toasters-wrapper.se {
  bottom: 0;
  right: 0;
  --start-position: translateX(110%);
}

#toasters-container .toasters-wrapper.s {
  bottom: 0;
  right: 50%;
  transform: translateX(50%);
  --start-position: translateY(110%);
}

#toasters-container .toasters-wrapper.sw {
  bottom: 0;
  left: 0;
  --start-position: translateX(-110%);
}

#toasters-container .toasters-wrapper.nw {
  top: 0;
  left: 0;
  --start-position: translateX(-110%);
}

#toasters-container .toasters-wrapper.n .toaster:not(.mini):last-child,
#toasters-container .toasters-wrapper.ne .toaster:not(.mini):last-child,
#toasters-container .toasters-wrapper.nw .toaster:not(.mini):last-child {
  margin-top: 0.5em;
}

#toasters-container .toasters-wrapper.s .toaster:not(.mini):first-child,
#toasters-container .toasters-wrapper.se .toaster:not(.mini):first-child,
#toasters-container .toasters-wrapper.sw .toaster:not(.mini):first-child {
  margin-bottom: 0.5em;
}

#toasters-container .toasters-wrapper.ne .toaster:not(.mini),
#toasters-container .toasters-wrapper.se .toaster:not(.mini) {
  margin-right: 0.5em;
}

#toasters-container .toasters-wrapper.nw .toaster:not(.mini),
#toasters-container .toasters-wrapper.sw .toaster:not(.mini) {
  margin-left: 0.5em;
}

#toasters-container .toaster {
  width: 25em;
  height: fit-content;
  color: var(--text-color);
  font-size: 0.9em;
  padding: 0.5em;
  border-radius: 0.3em;
  display: flex;
  gap: 0.5em;
  animation: bounceIn var(--animation-time) normal;
  position: relative;
  overflow: hidden;
  background: var(--dark-grey);
  border-left: 0.2em solid var(--current-color);
  cursor: pointer;
  user-select: none;
  align-items: baseline;
}

#toasters-container .toaster.mini {
  width: 20em;
  font-size: 0.7em;
  border: 0.1em solid var(--secondary);
  border-bottom: none;
  border-radius: 0.5em 0.5em 0 0;
  padding: 0.3em 0.3em 0.5em 0.3em;
  justify-content: center;
}

#toasters-container .toaster.clicked {
  transform: scale(0.92);
  transition: transform 0.2s;
}

#toasters-container .toaster.closing {
  animation: bounceOut var(--animation-time) normal;
  transform: var(--start-position);
  z-index: -1;
}

#toasters-container .toaster.info {
  --current-color: var(--primary);
}

#toasters-container .toaster.success {
  --current-color: var(--success);
}

#toasters-container .toaster.warn {
  --current-color: var(--warn);
}

#toasters-container .toaster.error {
  --current-color: var(--danger);
}

#toasters-container .toaster .toaster-icon {
  color: var(--current-color);
}

#toasters-container .toaster .toaster-timeout {
  position: absolute;
  bottom: 0px;
  left: 0px;
  height: 0;
  animation-play-state: running;
  animation: onProgress linear 1 forwards;

  /* transform-origin: left;
  width: 100%;
  height: 0.2em;
  background: var(--current-color); */
}

#toasters-container .toaster.paused .toaster-timeout {
  animation-play-state: paused;
}

@keyframes bounceIn {
  0% {
    transform: var(--start-position);
  }
  100% {
    transform: translateX(0);
  }
}

@keyframes bounceOut {
  0% {
    transform: translateX(0);
  }
  100% {
    transform: var(--start-position);
    margin: 0;
    padding: 0;
    opacity: 0;
    height: 0;
  }
}

@keyframes onProgress {
  from {
    transform: scaleX(1);
  }
  to {
    transform: scaleX(0);
  }
}
