.#{$pui}tooltip {
  @include ui-colors($hover: false);

  display: block;
  position: absolute;
  z-index: 9;
  white-space: nowrap;

  text-align: left;
  font-size: $size-small-x;
  border-width: 1px;
  border-radius: $border-radius;
  padding: $tooltip-padding;
  box-shadow: $shadow-default;

  background-color: $color-black;
  color: $color-white;
  border-color: $color-black;

  &.is-multiline {
    min-width: 200px;
    white-space: normal;
  }

  // tooltip's corner
  &:after {
    content: '';
    display: block;
    position: absolute;

    width: 0; 
    height: 0;
  }

  &.is-top {
    bottom: calc(100% + #{$tooltip-triangle-size} + #{$tooltip-offset});
    left: 50%;
    transform: translateX(-50%);

    &:after {
      top: 100%;
      left: 50%;
      transform: translateX(-50%);
      border-bottom: 0;
      border-left: $tooltip-triangle-size solid transparent;
      border-right: $tooltip-triangle-size solid transparent;
      border-top: $tooltip-triangle-size solid $color-black;
    }
  }

  &.is-left {
    right: calc(100% + #{$tooltip-triangle-size} + #{$tooltip-offset});
    top: 50%;
    transform: translateY(-50%);

    &:after {
      left: 100%;
      top: 50%;
      transform: translateY(-50%);
      border-right: 0;
      border-bottom: $tooltip-triangle-size solid transparent;
      border-top: $tooltip-triangle-size solid transparent;
      border-left: $tooltip-triangle-size solid $color-black;
    }
  }

  &.is-right {
    left: calc(100% + #{$tooltip-triangle-size} + #{$tooltip-offset});
    top: 50%;
    transform: translateY(-50%);

    &:after {
      left: -#{$tooltip-triangle-size};
      top: 50%;
      transform: translateY(-50%);
      border-left: 0;
      border-bottom: $tooltip-triangle-size solid transparent;
      border-top: $tooltip-triangle-size solid transparent;
      border-right: $tooltip-triangle-size solid $color-black;
    }
  }

  &.is-bottom {
    top: calc(100% + #{$tooltip-triangle-size} + #{$tooltip-offset});
    left: 50%;
    transform: translateX(-50%);

    &:after {
      top: -#{$tooltip-triangle-size};
      left: 50%;
      transform: translateX(-50%);
      border-top: 0;
      border-left: $tooltip-triangle-size solid transparent;
      border-right: $tooltip-triangle-size solid transparent;
      border-bottom: $tooltip-triangle-size solid $color-black;
    }
  }

  @each $name, $color in $color-schema {
    &.is-#{$name} {
      &.is-top:after {
        border-top-color: $color;
      }

      &.is-left:after {
        border-left-color: $color;
      }

      &.is-right:after {
        border-right-color: $color;
      }

      &.is-bottom:after {
        border-bottom-color: $color;
      }
    }
  }
}

.#{$pui}tooltip-wrapper {
  position: relative;
  display: inline-block;
}

.#{$pui}tooltip-trigger {
  display: inline-block;
} 