/*!
 * Start Bootstrap - Simple Sidebar (http://startbootstrap.com/)
 * Copyright 2013-2016 Start Bootstrap
 * Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap/blob/gh-pages/LICENSE)
 */


/* Toggle Styles */

#wrapper {
    padding-left: 0;
    -webkit-transition: all 0.3s ease;
    -moz-transition: all 0.3s ease;
    -o-transition: all 0.3s ease;
    transition: all 0.3s ease;
}

#wrapper.toggled {
    padding-left: 300px;
}

#sidebar-wrapper {
    z-index: 1000;
    position: fixed;
    left: 350px;
    width: 0;
    height: 100%;
    margin-left: -350px;
    overflow-y: auto;
    background: #323544;
    -moz-transition: left 0.3s;
    -o-transition: left 0.3s;
    -webkit-transition: left 0.3s;
    transition: left 0.3s;
}

#wrapper.toggled #sidebar-wrapper {
    width: 350px;
}

#page-content-wrapper {
    width: 100%;
    position: absolute;
}

#wrapper.toggled #page-content-wrapper {
    position: absolute;
    margin-right: -350px;
}


/* Sidebar Styles */

.sidebar-nav {
    margin: 0;
    padding: 0;
    list-style: none;
}

.sidebar-nav>li {
    line-height: 50px;
    padding: 5px 20px;
    border-bottom: 1px #1c1e2a solid;
}

.sidebar-nav>li a {
    display: block;
    text-decoration: none;
    color: #fff;
}

.sidebar-nav>li a:hover {
    text-decoration: none;
    color: #fff;
}

.sidebar-nav>li a:active,
.sidebar-nav>li a:focus {
    text-decoration: none;
}

.sidebar-nav>.sidebar-brand {
    font-size: 18px;
    line-height: 50px;
}

.sidebar-nav>.sidebar-brand a {
    color: #ddd;
    letter-spacing: 1px;
}

.sidebar-nav>.sidebar-brand a:hover {
    color: #fff;
    background: none;
}


/* Extended Elements */

.sidebar-input .input-group {
    margin: 10px 0px;
}

.sidebar-input .form-control,
.sidebar-input .input-group-addon {
    background-color: transparent;
    border-radius: 0px;
}

.sidebar-input .form-control {
    border-right: none;
    color: #eee;
}

.sidebar-input .input-group-addon {
    border-left: none;
    color: #ccc;
}

.sidebar-input .form-control:focus+.input-group-addon {
    border-color: #66afe9;
}

@media(min-width:768px) {
    #wrapper {
        padding-left: 350px;
    }

    #wrapper.toggled {
        padding-left: 0;
    }

    #sidebar-wrapper {
        width: 350px;
    }

    #wrapper.toggled #sidebar-wrapper {
        width: 0;
        padding: 0;
    }

    #page-content-wrapper {
        position: relative;
    }

    #wrapper.toggled #page-content-wrapper {
        position: relative;
        margin-right: 0;
    }
}