/*
 * Copyright 2015 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.
 */

div#bundle div.main-left {
    width: 62%;
}
div#bundle div.main-right {
    width: 38%;
    height: 85vh;
    background-color: rgba(173, 216, 230, 0.25);
    border-radius: 5px;
}

#bundle table {
    width: 95%;
    margin-top: 5%;
    margin-left: 2%;
    border-radius: 3px;
}

#bundle td {
    font-size: 90%;
}
#bundle td.icon {
    text-align: center;
    width: 50px;
    height: 50px;
    padding: 4%;
}
#bundle td.name {
    border-left: solid 1px rgba(136, 0, 0, 0.25);
    padding-left: 3%;
}
#bundle td.desc {
    width: 50%;
    text-align: left;
    font-style: italic;
}
/* animation specific */
#bundle tr.fadein.ng-leave td.name,
#bundle tr.fadein.ng-leave-active td.name {
    opacity: 0;
    border: none;
}

#bundle h2 {
    text-align: center;
    padding: 3%;
    background-color: rgba(173, 216, 230, 0.75);
    border-top-left-radius: 5px;
    border-top-right-radius: 5px;
    color: white;
    font-weight: normal;
}

div#available {
    padding: 5%;
}

#available p {
    text-indent: initial;
    text-align: initial;
}

#available button {
    float: right;
    width: 33%;
    margin-top: 5%;
}
