/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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.
 */

/*
 * Base structure
 */

html, body {
  height: 100%;
  margin: 0;
}

/* Move down content because we have a fixed navbar that is 50px tall */
body {
  padding-top: 50px;
  font-size: 14pt;
}

pre {
  font-size: 14pt;
}

a {
  color: #448628;
}

a:hover {
  color: #245F0B;
}
/*
 * Global add-ons
 */

.sub-header {
  padding-bottom: 10px;
  border-bottom: 1px solid #eee;
}

/*
 * Top navigation
 * Hide default border to remove 1px line.
 */
.navbar-fixed-top {
  border: 0;
}

A.ozone-logo {
  height: 50px;
  padding: 5px 10px 5px 0px;
}

.ozone-logo img {
  width: 40px;
  padding: 0px;
}

/*
 * Sidebar
 */

/* Hide for mobile, show later */
.sidebar {
  display: none;
}

@media (min-width: 768px) {
  .sidebar {
    position: fixed;
    top: 51px;
    bottom: 0;
    left: 0;
    z-index: 1000;
    display: block;
    padding: 20px;
    overflow-x: hidden;
    overflow-y: auto; /* Scrollable contents if viewport is shorter than content. */
    background-color: #f5f5f5;
    border-right: 1px solid #eee;
  }
}

/* Sidebar navigation */
.nav-sidebar {
  margin-right: -21px; /* 20px padding + 1px border */
  margin-bottom: 20px;
  margin-left: -20px;
}
.nav-sidebar > li > a {
  padding-right: 20px;
  padding-left: 20px;
}
.nav-sidebar > li > ul > li > a {
  padding-right: 40px;
  padding-left: 40px;
}
.nav-sidebar > li > ul > li > ul > li > a {
  padding-right: 60px;
  padding-left: 60px;
}
.nav-sidebar  .active > a,
.nav-sidebar  .active > a:hover,
.nav-sidebar  .active > a:focus {
  color: #fff;
  background-color: #73B148;
}

/*
 * Main content
 */

.main {
  padding: 20px;
}
@media (min-width: 768px) {
  .main {
    padding-right: 40px;
    padding-left: 40px;
  }
}
.main .page-header {
  margin-top: 0;
}


/*
 * Placeholder dashboard ideas
 */

.placeholders {
  margin-bottom: 30px;
  text-align: center;
}
.placeholders h4 {
  margin-bottom: 0;
}
.placeholder {
  margin-bottom: 20px;
}
.placeholder img {
  display: inline-block;
  border-radius: 50%;
}

h4 {
  font-weight: bold;
}

.cardgroup {
   margin-bottom: 50px;
}

.cardgroup .card {
  padding: 20px;
}

.cardgroup .media {
  padding: 30px;
}

h1 {
  margin-bottom: 20px;
}

.card {
  padding: 20px;
}

figure.ozone-usage {
  padding: 40px;
}

table.table {
  margin: 20px 20px 40px;
}

.footer,
.push {
  height: 50px;
}

.footer {
  background-color: #f5f5f5;
}

.wrapper {
  min-height: 100%;

  /* Equal to height of footer */
  /* But also accounting for potential margin-bottom of last child */
  margin-bottom: -50px;
}

.footer .container {
  padding-top: 10px;
  padding-bottom: 10px;
  text-align: center;
}
