@mixin fade($gradient-direction, $gradient-color) {
  visibility: hidden;
  opacity: 0;
  z-index: 2;
  position: absolute;
  bottom: 12px;
  width: 43px;
  height: 30px;
  transition-duration: .3s;
  -webkit-transform: translateZ(0);
  background: linear-gradient(to $gradient-direction, $gradient-color 45%, rgba($gradient-color, 0.4));

  &.scrolling {
    visibility: visible;
    opacity: 1;
    transition-duration: .3s;
  }

  .fa {
    position: relative;
    top: 5px;
    font-size: 18px;
  }
}

@mixin scrolling-links() {
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  display: flex;

  &::-webkit-scrollbar {
    display: none;
  }
}

.nav-links {
  display: flex;
  padding: 0;
  margin: 0;
  list-style: none;
  height: auto;
  border-bottom: 1px solid $border-color;

  li {
    display: flex;

    a {
      padding: $gl-btn-padding;
      padding-bottom: 11px;
      font-size: 14px;
      line-height: 28px;
      color: $gl-text-color-secondary;
      border-bottom: 2px solid transparent;
      white-space: nowrap;

      &:hover,
      &:active,
      &:focus {
        text-decoration: none;
        border-bottom: 2px solid $gray-darkest;
        color: $black;

        .badge {
          color: $black;
        }
      }
    }

    &.active a {
      border-bottom: 2px solid $link-underline-blue;
      color: $black;
      font-weight: 600;

      .badge {
        color: $black;
      }
    }
  }

  &.sub-nav {
    text-align: center;
    background-color: $gray-normal;

    .container-fluid {
      background-color: $gray-normal;
      margin-bottom: 0;
      display: flex;
    }

    li {
      &.active a {
        border-bottom: none;
        color: $link-underline-blue;
      }

      a {
        margin: 0;
        padding: 11px 10px 9px;

        &:hover,
        &:active,
        &:focus {
          border-color: transparent;
        }
      }
    }
  }
}

.top-area {
  @include clearfix;
  border-bottom: 1px solid $border-color;

  .nav-text {
    padding-top: 16px;
    padding-bottom: 11px;
    display: inline-block;
    line-height: 28px;
    white-space: normal;

    /* Small devices (phones, tablets, 768px and lower) */
    @media (max-width: $screen-xs-max) {
      width: 100%;
    }
  }

  .nav-search {
    display: inline-block;
    width: 100%;
    padding: 11px 0;

    /* Small devices (phones, tablets, 768px and lower) */
    @media (min-width: $screen-sm-min) {
      width: 50%;
    }
  }

  .nav-links {
    margin-bottom: 0;
    border-bottom: none;
    float: left;

    &.wide {
      width: 100%;
      display: block;
    }

    &.scrolling-tabs {
      float: left;
    }

    li a {
      padding: 16px 15px 11px;
    }

    /* Small devices (phones, tablets, 768px and lower) */
    @media (max-width: $screen-xs-max) {
      width: 100%;
    }
  }

  .nav-controls {
    display: inline-block;
    float: right;
    text-align: right;
    padding: 11px 0;
    margin-bottom: 0;

    > .btn,
    > .btn-container,
    > .dropdown,
    > input,
    > form {
      margin-right: $gl-padding-top;
      display: inline-block;
      vertical-align: top;

      &:last-child {
        margin-right: 0;
        float: right;
      }
    }

    > .btn-grouped {
      float: none;
    }

    .icon-label {
      display: none;
    }

    .btn,
    .dropdown,
    .dropdown-toggle,
    input,
    form {
      height: 35px;
    }

    input {
      display: inline-block;
      position: relative;

      /* Medium devices (desktops, 992px and up) */
      @media (min-width: $screen-md-min) { width: 200px; }

      /* Large devices (large desktops, 1200px and up) */
      @media (min-width: $screen-lg-min) { width: 250px; }

      &.input-short {
        /* Medium devices (desktops, 992px and up) */
        @media (min-width: $screen-md-min) { width: 170px; }

        /* Large devices (large desktops, 1200px and up) */
        @media (min-width: $screen-lg-min) { width: 210px; }
      }
    }

    @media (max-width: $screen-xs-max) {
      padding-bottom: 0;
      width: 100%;

      .btn,
      form,
      .dropdown,
      .dropdown-toggle,
      .dropdown-menu-toggle,
      .form-control {
        margin: 0 0 10px;
        display: block;
        width: 100%;
      }

      form {
        display: block;
        height: auto;
        margin-bottom: 14px;

        input {
          width: 100%;
          margin: 0 0 10px;
        }
      }

      .input-short {
        width: 100%;
      }

      .icon-label {
        display: inline-block;
      }

      // Applies on /dashboard/issues
      .project-item-select-holder {
        display: block;
        margin: 0;
      }
    }
  }

  &.adjust {
    .nav-text,
    .nav-controls {
      width: auto;

      @media (max-width: $screen-xs-max) {
        width: 100%;
      }
    }
  }

  &.multi-line {
    .nav-text {
      line-height: 20px;
    }

    .nav-controls {
      padding: 17px 0;
    }
  }

  pre {
    width: 100%;
  }
}

.layout-nav {
  width: 100%;
  background: $gray-light;
  border-bottom: 1px solid $border-color;
  transition: padding $sidebar-transition-duration;
  text-align: center;
  margin-top: $header-height;

  .container-fluid {
    position: relative;

    .nav-control {
      @media (max-width: $screen-sm-max) {
        margin-right: 2px;
      }
    }
  }

  .controls {
    float: right;
    padding: 7px 0 0;

    i {
      color: $layout-link-gray;
    }

    .fa-rss,
    .fa-cog {
      font-size: 16px;
    }

    .fa-caret-down {
      margin-left: 5px;
      color: $gl-text-color-secondary;
    }

    .dropdown {
      position: absolute;
      top: 7px;
      right: 15px;
      z-index: 2;

      li.active {
        font-weight: bold;
      }
    }
  }

  .nav-links {
    border-bottom: none;
    height: 51px;

    @media (min-width: $screen-sm-min) {
      justify-content: center;
    }

    li {
      a {
        padding-top: 10px;
      }
    }
  }
}

.scrolling-tabs-container {
  position: relative;

  .merge-request-tabs-container & {
    overflow: hidden;
  }

  .nav-links {
    @include scrolling-links();
  }

  .fade-right {
    @include fade(left, $gray-light);
    right: -5px;

    .fa {
      right: -7px;
    }
  }

  .fade-left {
    @include fade(right, $gray-light);
    left: -5px;
    text-align: center;

    .fa {
      left: -7px;
    }
  }

  &.sub-nav-scroll {

    .fade-right {
      @include fade(left, $gray-normal);
      right: 0;

      .fa {
        right: -23px;
      }
    }

    .fade-left {
      @include fade(right, $gray-normal);
      left: 0;

      .fa {
        left: 10px;
      }
    }
  }
}

.nav-block {
  position: relative;

  .nav-links {
    @include scrolling-links();

    .fade-right {
      @include fade(left, $white-light);
      right: -5px;

      .fa {
        right: -7px;
      }
    }

    .fade-left {
      @include fade(right, $white-light);
      left: -5px;

      .fa {
        left: -7px;
      }
    }
  }
}

.page-with-layout-nav {
  .right-sidebar {
    top: ($header-height + 1) * 2;
  }

  &.page-with-sub-nav {
    .right-sidebar {
      top: ($header-height + 1) * 3;

      &.affix {
        top: $header-height;
      }
    }
  }
}

.nav-block {
  &.activities {
    border-bottom: 1px solid $border-color;

    .nav-links {
      border-bottom: none;
    }
  }
}

@media (max-width: $screen-xs-max) {
  .top-area {
    flex-flow: row wrap;

    .nav-controls {
      $controls-margin: $btn-xs-side-margin - 2px;
      flex: 0 0 100%;

      &.controls-flex {
        display: flex;
        flex-flow: row wrap;
        align-items: center;
        justify-content: center;
        padding: 0 0 $gl-padding-top;
      }

      .controls-item,
      .controls-item-full,
      .controls-item:last-child {
        flex: 1 1 35%;
        display: block;
        width: 100%;
        margin: $controls-margin;

        .btn,
        .dropdown {
          margin: 0;
        }
      }

      .controls-item-full {
        flex: 1 1 100%;
      }
    }
  }
}

.inner-page-scroll-tabs {
  position: relative;

  .fade-right {
    @include fade(left, $white-light);
    right: 0;
    text-align: right;

    .fa {
      right: 5px;
    }
  }

  .fade-left {
    @include fade(right, $white-light);
    left: 0;
    text-align: left;

    .fa {
      left: 5px;
    }
  }

  .fade-right,
  .fade-left {
    top: 16px;
    bottom: auto;
  }

  &.is-smaller {
    .fade-right,
    .fade-left {
      top: 11px;
    }
  }
}
