/*
 * Copyright 2015-present Open Networking Laboratory
 *
 * 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.
 */

#home div.main-left {
    width: 55%;
    padding: 0;
}
#home div.main-right {
    padding: 1% 0 0 3%;
    width: 42%;
}
#home div.move-down {
    margin-top: 5%;
}

#home div.image-holder {
    width: 100%;
    position: relative;
}

#home div.main-left img {
    width: 100%;
}

#home div.main-right div.bundle-title {
    padding: 2% 0;
}

#home h4 {
    padding-bottom: 2%;
}

#home p {
    margin-bottom: 3%;
}

#home table {
    width: 94%;
    table-layout: fixed;
    margin-left: 6%;
    border-left: 1px solid #CE5650;
}

#home table.users th,
#home table.users td {
    font-size: 90%;
}

#home td, #home th {
    text-align: left;
    padding: 2%;
}
