//
// Navbars
// --------------------------------------------------

// Wrapper and base class
.navbar {
  position: relative;
  min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)
  margin-bottom: 20px;
  padding-left: @navbar-padding-horizontal;
  padding-right: @navbar-padding-horizontal;
  background-color: @navbar-bg;
  border-radius: @border-radius-base;

  // Prevent floats from breaking the navbar
  .clearfix();
}

// Navbar nav links
// -------------------------

.navbar-nav {
  // Space out from .navbar .brand and .btn-navbar when stacked in mobile views
  margin-top: 10px;
  margin-bottom: 15px;

  > li > a {
    padding-top: ((@navbar-height - @line-height-computed) / 2);
    padding-bottom: ((@navbar-height - @line-height-computed) / 2);
    color: @navbar-link-color;
    line-height: 20px;
    border-radius: @border-radius-base;
    &:hover,
    &:focus {
      color: @navbar-link-hover-color;
      background-color: @navbar-link-hover-bg;
    }
  }
  > .active > a {
    &,
    &:hover,
    &:focus {
      color: @navbar-link-active-color;
      background-color: @navbar-link-active-bg;
    }
  }
  > .disabled > a {
    &,
    &:hover,
    &:focus {
      color: @navbar-link-disabled-color;
      background-color: @navbar-link-disabled-bg;
    }
  }

  // Right aligned contents
  // Make them full width first so that they align properly on mobile
  &.pull-right {
    width: 100%;
  }
}



//
// Navbar alignment options
// --------------------------------------------------

// Static navbar
.navbar-static-top {
  border-radius: 0;
}

// Fix the top/bottom navbars when screen real estate supports it
.navbar-fixed-top,
.navbar-fixed-bottom {
  position: fixed;
  right: 0;
  left: 0;
  z-index: @zindex-navbar-fixed;
  border-radius: 0;
}
.navbar-fixed-top {
  top: 0;
}
.navbar-fixed-bottom {
  bottom: 0;
  margin-bottom: 0; // override .navbar defaults
}



//
// Navbar optional components
// --------------------------------------------------

// Brand/project name
.navbar-brand {
  display: block;
  max-width: 200px;
  margin-left: auto;
  margin-right: auto;
  padding: @navbar-padding-vertical @navbar-padding-horizontal;
  font-size: @font-size-large;
  font-weight: 500;
  line-height: @line-height-computed;
  color: @navbar-brand-color;
  text-align: center;
  &:hover,
  &:focus {
    color: @navbar-brand-hover-color;
    text-decoration: none;
    background-color: @navbar-brand-hover-bg;
  }
}

// Collapsible navbar toggle
.navbar-toggle {
  position: absolute;
  top: floor((@navbar-height - 32) / 2);
  right: 10px;
  width: 48px;
  height: 32px;
  padding: 8px 12px;
  background-color: transparent;
  border: 1px solid @navbar-toggle-border-color;
  border-radius: @border-radius-base;

  &:hover,
  &:focus {
    background-color: @navbar-toggle-hover-bg;
  }

  // Bars
  .icon-bar {
    display: block;
    width: 22px;
    height: 2px;
    background-color: @navbar-toggle-icon-bar-bg;
    border-radius: 1px;
  }
  .icon-bar + .icon-bar {
    margin-top: 4px;
  }
}

// Navbar form
.navbar-form {
  .form-inline();
  .navbar-vertical-align(@input-height-base); // Vertically center in navbar
}

// Dropdown menus

// Menu position and menu carets
.navbar-nav > li > .dropdown-menu {
  margin-top: 0;
  border-top-left-radius: 0;
  border-top-right-radius: 0;
}
// Menu position and menu caret support for dropups via extra dropup class
.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
}

// Dropdown menu items and carets
.navbar-nav {
  // Caret should match text color on hover
  > .dropdown > a:hover .caret,
  > .dropdown > a:focus .caret {
    border-top-color: @navbar-link-hover-color;
    border-bottom-color: @navbar-link-hover-color;
  }

  // Remove background color from open dropdown
  > .open > a {
    &,
    &:hover,
    &:focus {
      background-color: @navbar-link-active-bg;
      color: @navbar-link-active-color;
      .caret {
        border-top-color: @navbar-link-active-color;
        border-bottom-color: @navbar-link-active-color;
      }
    }
  }
  > .dropdown > a .caret {
    border-top-color: @navbar-link-color;
    border-bottom-color: @navbar-link-color;
  }
}

// Right aligned menus need alt position
.navbar-nav.pull-right > li > .dropdown-menu,
.navbar-nav > li > .dropdown-menu.pull-right {
  left: auto;
  right: 0;
}



// Inverse navbar
// --------------------------------------------------

.navbar-inverse {
  background-color: @navbar-inverse-bg;

  .navbar-brand {
    color: @navbar-inverse-brand-color;
    &:hover,
    &:focus {
      color: @navbar-inverse-brand-hover-color;
      background-color: @navbar-inverse-brand-hover-bg;
    }
  }

  .navbar-text {
    color: @navbar-inverse-color;
  }

  .navbar-nav {
    > li > a {
      color: @navbar-inverse-link-color;

      &:hover,
      &:focus {
        color: @navbar-inverse-link-hover-color;
        background-color: @navbar-inverse-link-hover-bg;
      }
    }
    > .active > a {
      &,
      &:hover,
      &:focus {
        color: @navbar-inverse-link-active-color;
        background-color: @navbar-inverse-link-active-bg;
      }
    }
    > .disabled > a {
      &,
      &:hover,
      &:focus {
        color: @navbar-inverse-link-disabled-color;
        background-color: @navbar-inverse-link-disabled-bg;
      }
    }
  }

  // Darken the responsive nav toggle
  .navbar-toggle {
    border-color: @navbar-inverse-toggle-border-color;
    &:hover,
    &:focus {
      background-color: @navbar-inverse-toggle-hover-bg;
    }
    .icon-bar {
      background-color: @navbar-inverse-toggle-icon-bar-bg;
    }
  }

  // Dropdowns
  .navbar-nav {
    > .open > a {
      &,
      &:hover,
      &:focus {
        background-color: @navbar-inverse-link-active-bg;
        color: @navbar-inverse-link-active-color;
      }
    }
    > .dropdown > a:hover .caret {
      border-top-color: @navbar-inverse-link-hover-color;
      border-bottom-color: @navbar-inverse-link-hover-color;
    }
    > .dropdown > a .caret {
      border-top-color: @navbar-inverse-link-color;
      border-bottom-color: @navbar-inverse-link-color;
    }
    > .open > a {
      &,
      &:hover,
      &:focus {
        .caret {
          border-top-color: @navbar-inverse-link-active-color;
          border-bottom-color: @navbar-inverse-link-active-color;
        }
      }
    }
  }
}



// Responsive navbar
// --------------------------------------------------

@media screen and (min-width: @grid-float-breakpoint) {

  .navbar-brand {
    float: left;
    margin-left: -(@navbar-padding-horizontal);
    margin-right: 5px;
  }
  .navbar-nav {
    float: left;
    // undo margin to make nav extend full height of navbar
    margin-top: 0;
    margin-bottom: 0;

    > li {
      float: left;
      > a {
        border-radius: 0;
      }
    }

    &.pull-right {
      float: right;
      width: auto;
    }
  }

  // Required to make the collapsing navbar work on regular desktops
  .navbar-toggle {
    position: relative;
    top: auto;
    left: auto;
    display: none;
  }
  .nav-collapse.collapse {
    display: block !important;
    height: auto !important;
    overflow: visible !important;
  }

}



// Buttons in navbars
//
// Vertically center a button within a navbar (when *not* in a form).

.navbar-btn {
  margin-top: ((@navbar-height - @input-height-base) / 2);
}



// Text in navbars
//
// Add a class to make any element properly align itself vertically within the navbars.

.navbar-text {
  .navbar-vertical-align(@line-height-computed);
}



// Links in navbars
//
// Add a class to ensure links outside the navbar nav are colored correctly.

// Default navbar variables
.navbar-link {
  color: @navbar-link-color;
  &:hover {
    color: @navbar-link-hover-color;
  }
}

// Use the inverse navbar variables
.navbar-inverse .navbar-link {
  color: @navbar-inverse-link-color;
  &:hover {
    color: @navbar-inverse-link-hover-color;
  }
}
