/*
 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.
*/

div.clear { clear:both; visibility: hidden; }
div.clear hr { display: none; }

/* Tweaks to the bootstrap theme
--------------------------------- */
li { line-height: 20px; }
code { color: #4e648e }
a code { color: #0088cc }
dt { margin: 15px 0 5px 0; font-size: 1.2em }

.big-red { font-weight: bold; color: #D14 }
.big-green { font-weight: bold; color: green }

.layout-table { width: 100%; }
.sidebar { width: 250px; vertical-align: top; }
.content { padding-left: 20px; vertical-align: top; }

.sidebar-nav { padding: 9px 0; }

.logo-left { margin: 10px; float: left; height: 100px}
.logo-center {margin-left: auto; margin-right: auto; display: block; width: 20%}
.logo-right { margin: 5px; float: right; height: 100px}

.navbar .nav { margin-left: 40px; }

.nav-list { margin-bottom: 15px; }
.nav-list li { line-height: 16px; }
.nav-list li.nav-header { color: #333; }
.nav-list li.nav-header i { margin-right: 5px; }

.nav-list li a { background: no-repeat 16px 9px; padding-left: 34px; }
.nav-list li.collapsed > a { background-image: url(../images/collapsed.gif) }
.nav-list li.expanded > a { background-image: url(../images/expanded.gif) }

.nav-list li.expanded ul { list-style: none; margin-left: 0; }
.nav-list li.expanded li a { display: block; padding: 3px 15px 3px 45px; margin-left: -15px; margin-right: -15px; }
.nav-list li.expanded li a:hover { text-decoration: none; background-color: #eee; }
.nav-list li.expanded li.active a { background-color: #08C; color: white }

.nav.nav-tabs { margin-bottom: 8px; }

.content .section { margin-top: 20px; }
.content .section:first-child { margin-top: 0; }
.section h2 { margin-bottom: 10px; }
.section h3 { margin-bottom: 10px; }
.section h4 { margin-bottom: 10px; }

.footer { background-color: whitesmoke; padding: 15px; margin-top: 15px; text-align: center; border-top: 1px solid #eee; }
.footer p { font-size: 12px; margin: 0 }

.table-not-wide { width: inherit;}
.alert-heading { display: block; font-size: 14px; margin-bottom: 6px; font-weight: bold; }

/* Additional styles.
-----------------------*/

/* add film icons to youtube and vimeo links (.icon-film) */
a[href^='https://www.youtube.com/']::before,
a[href^='https://vimeo.com/']::before {
    display: inline-block;
    width: 14px;
    height: 14px;
    margin-top: 1px;
    margin-right: .3em;
    line-height: 14px;
    vertical-align: text-top;
    content: '';
    /* .icon-film */
    background: url("../img/glyphicons-halflings.png") no-repeat -192px 0;
}
