//  Licensed under the Apache License, Version 2.0 (the "License"); you may not
//  use this file except in compliance with the License. You may obtain a copy of
//  the License at
//
//    http://www.apache.org/licenses/LICENSE-2.0
//
//  Unless required by applicable law or agreed to in writing, software
//  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
//  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
//  License for the specific language governing permissions and limitations under
//  the License.

 @import "variables.less";

/* ajax loader */
.loader {
  background: url('../img/loader.gif') center center no-repeat;
  min-height:  100px;
}

#main {
  position: relative;
  overflow: hidden;
  height: 100%;
}

#global-notifications {
  position: fixed;
  top: 0px;
  display: block;
  z-index: 100000;
  width: 100%;
}

#app-container {
  height: 100%;
  position: relative;
  overflow: hidden;
}

@media screen and (max-height: 600px) {
  #primary-navbar {
    overflow-y: auto;
  }
}

@media screen and ( min-height: 600px ){
  #primary-navbar {
    overflow-y: hidden;
  }
}

/* Fixed side navigation */
#primary-navbar {
  z-index: 5;
  height: 100%;
  left: 0;
  top: 0;
  bottom: 0;
  position: absolute;
  width: @navWidth;
  .closeMenu & {
    width: @collapsedNavWidth;
    overflow-x: hidden;
  }
  background-color: @primaryNav;
  .version-footer {
    color: #fff;
    font-size: 10px;
    padding-left: 10px;
  }
  .closeMenu & {
    .version-footer {
      display: none;
    }
  }
  #user-create-admin {
    font-size: 12px
  }
  .navbar {
    .closeMenu & {
      width: @collapsedNavWidth;
    }
    .burger {
      padding: 22px 0 22px 18px;
      position: fixed;
      z-index: 100;
      top: 0;
      background-color: @primaryNav;
      width: @navWidth;
      .closeMenu & {
        width: @collapsedNavWidth;
      }
      div {
        height: 4px;
        width: 24px;
        .border-radius(2);
        background-color: @navBG;
        margin: 2px 0px;
      }
      &:hover div {
        background-color: @navBGHover;
      }
    }
    .bottom-container {
      position: fixed;
      bottom: 0;
      background: #3a2c2b;
      .brand {
        .box-sizing(content-box);
        .hide-text;
        margin: 10px 0 0 0;
        width: 200px;
        height: 40px;
        padding: 10px;
        float: none;
        background: #3a2c2b;
        .icon {
          .box-sizing(content-box);
          background: url(../img/couchdb-site.png) no-repeat 0 0;
          display: block;
          height: 100%;
          width: 100%;
        }
        .closeMenu & {
          width: 44px;
          .icon {
            background: url(../img/minilogo.png) no-repeat 0 0;
          }
        }
      }
      .nav-status-area {
        color: #FFF;
        padding: 0 0 10px 10px;
        font-size: 10px;
        .closeMenu & {
          display: none;
          color: transparent;
        }
      }

      #footer-nav-links {
        width: 100%;
        margin: 0;
        li {
          a {
            font-size: 12px;
            color: @linkColor;
            padding: 0 0 10px 10px;
            text-shadow: none;
          }
          &.active, &:hover {
            a {
              text-decoration: underline;
            }
          }
        }
      }
    }
    nav {
      margin-top: 64px;
      .nav {
        margin: 0;
        li {
          padding: 0;
          font-size: 16px;
          letter-spacing: 1px;
          line-height: 24px;
          width: @navWidth;
          .closeMenu & {
            width: @collapsedNavWidth;
          }
          font-weight: normal;
          font-family: helvetica;
          .box-sizing(border-box);
          background-color: @navBG;
          border-bottom:  1px solid @primaryNav;
          height: 48px;
          min-height: 48px;
          position: relative;

          &.active, &:hover {
            a {
              .box-shadow(none);
            }
            background-color: @navBGHover;
          }
          &:hover .fonticon:before {
            color: @white;
          }
          &.active .fonticon:before,
          &:hover .fonticon:before,
          {
            text-shadow: @boxShadow;
            color: @NavIconActive;
          }
          a {
            padding: 12px 25px 12px 60px;
            background-color: transparent;
            color: #fff;
            text-shadow: @textShadowOff;
            height: 48px;
            display: flex;

            .fonticon {
              position: relative;

              &:before {
                position: absolute;
                left: -41px;
                font-size: 24px;
                color: @NavIcon;
                text-shadow: @boxShadowOff;
              }
            }
            .closeMenu & {
              color: transparent;
              span {
                display: none;
              }
            }
          }
        }
      }
      ul#footer-nav-links {
        li {
          background-color: @primaryNav;
          border-top: 1px solid @linkColor;
          border-bottom: none;
          &.active, &:hover {
            background-color: @navBGHover;
            border-top: 1px solid @linkColor;
            a {
              color: white;
            }
          }
          a {
            color: @linkColor;
          }
        }

      }
      ul#bottom-nav-links {
        margin-top: 0;
        padding-bottom: 136px;
        li {
          background-color: @bottomNav;
          &.active {
            background-color:@navBGHover;
          }
          &:hover {
            background-color: @navBGHover;
          }
          a {
            &.fonticon {
              position: relative;
              &:before {
                top: -5px;
                left: -40px;
                font-size: 22px;
              }
            }
          }
        }
      }
    }
  }
}

.bottom-shadow-border {
  border-bottom: 1px solid #999;
  .box-shadow(0px 6px 0 0 rgba(0, 0, 0, 0.1));
}

.bottom-left-shadow-border {
  border-bottom: 1px solid #999;
  border-left: 1px solid #999;
  .box-shadow(-6px 6px 0 0 rgba(0, 0, 0, 0.1));
}

/*

FIXED HEADER, DASHBOARD & BREADCRUMBS:

one_pane.html
two_pane.html
with_sidebar.html
with_tabs.html
with_tabs_sidebar.html
 */
#dashboard {
  position: relative;
  left: @navWidth;
  padding-left: 0;
  background-color: @sidebarBG;
  height: 100%;
  width: 100%;
  .closeMenu & {
    left: @collapsedNavWidth;
  }
}

.wrapper {
  position: relative;
  overflow: hidden;
  height: 100%;
}

.one-pane {
  #dashboard-content {
    top: @collapsedNavWidth;
    .view {
      padding-bottom: 30px;
    }
  }
}

.two-pane {
  .inner {
    padding-bottom: @collapsedNavWidth;
  }
}

#sidebar-content {
  width: @sidebarWidth;
  background-color: @secondarySidebar;
  margin-top: 6px;
  > div.inner {
    display: block;
  }
  .nav-list:last-child {
    margin-bottom: 30px;
  }
}

.scrollable {
  height: auto;
  overflow-y: auto;
  overflow-x: hidden;
  width: 100%;
  position: absolute;
  padding: 0;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
}

.pusher {
  overflow: hidden;
  position: relative;
  height: 100%;
  left: 0;
  padding-right: @navWidth;
  .closeMenu & {
    padding-right: @collapsedNavWidth;
  }
}

.right-header-wrapper {
  overflow-x: hidden;
  height: @collapsedNavWidth;
}

.with-sidebar .right-header-wrapper {
  .box-shadow(-7px 0 rgba(0, 0, 0, 0.1));
}

.header-wrapper {
  .bottom-shadow-border();
  .box-shadow(0 6px 0 0 rgba(0, 0, 0, 0.1));
  position: absolute;
  left: 0;
  right: 0;
  /*z-index: 50; */
}

#app-container > div {
  position: relative;
  height: 100%;
}

/* SIDEBAR TEMPLATE STYLES */
.topmenu-defaults {
  height: 70px;
  padding: 12px 10px 0;
  .box-sizing(border-box);
}

/* used in addons/changes */
.dashboard-upper-menu {
  border-left: 1px solid #999;
  right: 0;
  left: @sidebarWidth+@navWidth;
  position: fixed;
  display: block;

  .topmenu-defaults;
  background-color: #CBCBCB;
  .closeMenu & {
    left: @sidebarWidth+@collapsedNavWidth;
  }
}

#dashboard-lower-content {
  padding: 20px;
  background-color: #F1F1F1;
}

#dashboard-content {

  & > div {
    padding: @panelPadding;
  }

  &.row-fluid {
    /*remove gutter without rewriting variable*/
    margin-left: 0px;
  }

  .with-sidebar & {
    border-left: 1px solid @grayLight;
    .left-shadow-border();
    width: auto;
    padding: 15px;
    bottom: 0px;
    top: @collapsedNavWidth;
    position: fixed;
    left: @sidebarWidth+@navWidth;
    right: 0;
    .box-sizing(border-box);
    .closeMenu & {
      left: @sidebarWidth+@collapsedNavWidth;
    }
  }
  .with-tabs-sidebar & {
    overflow: hidden;
  }

  > div.inner {
    display: block;
  }
}

/*
  Sidenav:
  USED IN DOCUMENT ADDON & EXTERNAL ADDONS
*/
.sidenav {
  padding: 0;
  header {
    width: @sidebarWidth;
    border-bottom: 1px solid #d3d7db;
  }
  .nav-list {
    .divider {
      border: none;
    }
    > li > a:hover{
      background-color: @linkColorHover;
      color: #fff;
    }
    li.active > a {
      color: @linkColorHover;
    }
    > li > a {
      color: @linkColor;
      padding: 10px 13px 10px 24px;
      border-bottom: 1px solid #d3d7db;
      span {
        margin-right: 8px;
        width: 14px;
        display: inline-block;
        text-align: center;
      }
    }
    a {
      display: block;
      padding: 10px 5px 5px 15px;
      color: @subListGray;
      .divider {
        background: none;
        color: #ccc;
        padding: 0 2px;
      }
    }
    .nav-header {
      padding: 0px;
      text-shadow: none;
      color: #333333;
      & > span:hover {
        color: @linkColor;
      }
    }
  }
}

.row-fluid.content-area {
  background-color: @background;
}

.two-pane {
  .content-area {
    height: 100%;
    top: @collapsedNavWidth;
    position: relative;
  }

  #right-content {
    .view {
      padding: 0 20px 40px;
    }
    border-left: 1px solid #999;
    .box-shadow(-6px 0 rgba(0, 0, 0, 0.1));
  }
  .right-header-wrapper {
    border-left: 1px solid #999;
    .box-shadow(-6px 0 rgba(0, 0, 0, 0.1));
    .searchbox-wrapper {
      display: none;
    }
  }
}
