@snackbar-width: 256px;
@snackbar-color: rgba(255, 255, 255, 0.87);
@snackbar-border-radius: 4px;
@snackbar-background: #333;
@snackbar-font-size: var(--font-size-md);
@snackbar-margin: 6px 24px;
@snackbar-border-color: currentColor;
@snackbar-success-background: var(--color-success);
@snackbar-info-background: var(--color-info);
@snackbar-error-background: var(--color-danger);
@snackbar-warning-background: var(--color-warning);
@snackbar-content-padding: 14px 16px;
@snackbar-action-margin: 0 16px 0 0;

:root {
  --snackbar-width: @snackbar-width;
  --snackbar-color: @snackbar-color;
  --snackbar-border-radius: @snackbar-border-radius;
  --snackbar-background: @snackbar-background;
  --snackbar-font-size: @snackbar-font-size;
  --snackbar-margin: @snackbar-margin;
  --snackbar-border-color: @snackbar-border-color;
  --snackbar-success-background: @snackbar-success-background;
  --snackbar-info-background: @snackbar-info-background;
  --snackbar-error-background: @snackbar-error-background;
  --snackbar-warning-background: @snackbar-warning-background;
  --snackbar-content-padding: @snackbar-content-padding;
  --snackbar-action-margin: @snackbar-action-margin;
}

.var-transition-group {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  pointer-events: none;
}

.var-pointer-auto {
  pointer-events: auto;
}

.var {
  &-snackbar {
    display: flex;
    justify-content: center;
    align-items: baseline;
    left: 0;
    right: 0;
    bottom: 0;
    transition: all 0.15s var(--cubic-bezier);

    &__wrapper {
      width: var(--snackbar-width);
      display: flex;
      border-radius: var(--snackbar-border-radius);
      color: var(--snackbar-color);
      background: var(--snackbar-background);
      font-size: var(--snackbar-font-size);
      margin: var(--snackbar-margin);
      align-items: center;
      border-color: var(--snackbar-border-color);
      pointer-events: auto;
      transition: 0.3s var(--cubic-bezier);

      &-success {
        background: var(--snackbar-success-background);
      }

      &-info {
        background: var(--snackbar-info-background);
      }

      &-warning {
        background: var(--snackbar-warning-background);
      }

      &-error {
        background: var(--snackbar-error-background);
      }
    }

    &__content {
      flex-grow: 1;
      padding: var(--snackbar-content-padding);
    }

    &__action {
      margin: var(--snackbar-action-margin);
      display: flex;
    }

    &__vertical {
      flex-direction: column;
      align-items: flex-start;

      .var-snackbar__action {
        align-self: flex-end;
        margin-bottom: 8px;
      }
    }

    &-fade-leave-active {
      position: absolute;
    }

    &-fade-enter,
    &-fade-leave-to {
      opacity: 0;
      transform: translateY(-30px);
    }
  }

  &-snackbar-transition {
    top: 0;
    position: fixed;

    .var-snackbar__wrapper {
      position: absolute;

      &-top {
        top: 5%;
      }

      &-center {
        top: 45%;
      }

      &-bottom {
        bottom: 5%;
      }
    }
  }
}
