$vl-tabs-stroke-height: 3px;

.vl-tabs {
  margin-bottom: 3rem;
  border-bottom: $vl-tabs-stroke-height $vl-border-color solid;
  font-size: 0;
  text-align: left;

  &__wrapper {
    position: relative;

    &--fit-to-content {
      display: inline-flex;
    }
  }

  .no-js & {
    display: none;
  }

  @include respond-to(small) {
    [data-vl-tabs] & {
      display: none;
      position: relative;
      left: -1.5rem;
      width: calc(100% + 3rem);
      margin: 0 0 1rem;
      padding: 0.4rem 0;
      border-top: 1px $vl-alt-bg solid;
      border-bottom: 1px $vl-alt-bg solid;

      &[data-vl-show="true"] {
        display: block;
      }

      // Functional header tabs implementation
      .vl-functional-header & {
        left: 0;
        width: 100%;
      }
    }
  }

  .vl-functional-header & {
    margin: 0;
    border: 0;

    @include respond-to(small) {
      border-bottom: 1px $vl-border-color solid;
    }
  }
}

.vl-tabs--alt {
  position: relative;

  &::before {
    position: absolute;
    bottom: -$vl-tabs-stroke-height;
    left: -200%;
    width: 500%;
    height: $vl-tabs-stroke-height;
    background: $vl-border-color;
    content: "";
  }
}

.vl-tab {
  display: inline-block;
  position: relative;
  text-align: left;
  vertical-align: top;
  top: $vl-tabs-stroke-height;

  // Gray stroke
  &:not(:first-child) &__link {
    position: relative;
    border-left: 0;

    &::after {
      position: absolute;
      content: "";
      top: calc(50% - (1.8rem / 2));
      bottom: 0;
      left: 0;
      height: 1.8rem;
      width: 1px;// Functional header tabs implementation
      background: $vl-border-color;

      @include respond-to(xsmall) {
        height: 1.4rem;
        top: calc(50% - (1.4rem / 2));
      }
    }
  }

  @include respond-to(small) {
    [data-vl-tabs] & {
      display: block;
      top: 0;

      &:first-of-type {
        width: calc(100% - 4.2rem);
      }
    }
  }

  // General tab link
  &__link {
    display: block;
    padding: 1rem 1.1rem 1rem 1.2rem;
    transition: all 0.2s;
    border-bottom: $vl-tabs-stroke-height solid transparent;

    color: $vl-action-text-color;
    font-family: $vl-base-font;
    font-size: 1.6rem;
    font-weight: 500;
    text-decoration: none;

    &:hover,
    &:focus {
      background-color: transparent;
      border-bottom-color: $vl-text-color;
      color: $vl-action-hover-color;
    }

    .vl-tab--active & {
      color: $vl-text-color;
      border-bottom: $vl-tabs-stroke-height solid $vl-text-color;
      background-color: transparent;

      @include respond-to(small) {
        [data-vl-tabs] & {
          border: 0;
        }
      }

      // Functional header tabs implementation
      .vl-functional-header & {
        border-top: $vl-tabs-stroke-height $vl-text-color solid !important; // sass-lint:disable-line no-important

        @include respond-to(small) {
          border: 0;
        }
      }
    }

    @include respond-to(small) {
      font-size: 1.4rem;

      [data-vl-tabs] & {
        padding: 0.7rem 1.5rem;
        border: 0;
        font-size: 1.5rem;
      }
    }
  }

  // General tab pane
  &__pane {
    display: none;

    &[data-vl-show="true"] {
      display: block;
    }

    .no-js & {
      display: block;
    }
  }

  .vl-functional-header & {
    top: 0;
    margin: 0;

    .vl-tab__link {
      padding: 1rem 1.2rem 0.7rem;
      border: 0;
      border-top: $vl-tabs-stroke-height solid transparent;

      &:hover {
        border-top: $vl-tabs-stroke-height solid $vl-border-color;
      }

      @include respond-to(small) {
        padding: .7rem 1.5rem;
        border: 0 !important; // sass-lint:disable-line no-important
      }
    }
  }
}

// #### Tabs toggle used on mobile
.vl-tabs__toggle {
  display: none;
  position: relative;
  left: -1.5rem;

  width: calc(100% + 3rem);
  height: 4.2rem;

  margin: 0 auto 1rem;
  padding: 0 0 0 1.5rem;

  border: 0;
  border-top: 1px $vl-border-color solid;
  border-bottom: 1px $vl-border-color solid;
  background: none;

  font-family: $vl-base-font;
  font-size: 1.5rem;
  font-weight: 500;
  text-align: left;
  cursor: pointer;

  .vl-functional-header & {
    border-top: 0px;

    // Functional header tabs implementation
    @include respond-to(small) {
      left: 0;
      width: 100%;
      margin: 0;
      border-bottom: 1px $vl-border-color solid;
    }
  }

  span {
    display: block;
    width: calc(100% - 6rem);
    text-overflow: ellipsis;
    white-space: nowrap;
    overflow: hidden;
  }

  // Icon
  @include caret-before-absolute;

  &::before {
    top: 0;
    right: 0;
    padding: 1.2rem 1.4rem;
    transform: rotate(90deg);
    transition: color 0.2s ease-in-out;
    font-size: 1.5rem;
  }

  &:hover,
  &:focus {
    text-decoration: underline;

    &::before {
      color: $vl-action-text-color;
    }

    // Stroke next to icon
    &::after {
      background: $vl-border-color;
    }
  }

  // Stroke next to icon
  &::after {
    position: absolute;
    top: 0;
    right: 4.2rem;
    width: 1px;
    height: 100%;
    background: $vl-border-color;
    content: "";
  }

  &:focus {
    outline: thin dotted;
  }

  // Transform normal button to close button
  &[data-vl-close="true"] {
    position: absolute;
    top: 0;
    right: -1.5rem;
    left: auto;
    width: 4.2rem;
    height: 4.2rem;
    border: 0;
    z-index: 2;

    &::after {
      display: none;
    }

    @include vi-cross;

    &::before {
      padding: 1.4rem;
      font-size: 1.3rem;
    }

    span {
      display: none;
    }

    // Functional header tabs implementation
    .vl-functional-header & {
      right: 0;
      left: auto;
      width: 4.2rem;
      border: 0;
      border-bottom: 1px $vl-border-color solid;
    }
  }

  @include respond-to(small) {
    display: block;
  }
}
