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

div#bundle div.main-left {
    width: 61%;
    padding: 4% 0 0 1%;
}
div#bundle div.main-right {
    width: 37%;
    padding-top: 4%;
}

#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: 60%;
    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 img {
    width: 100%;
}

#bundle h2 {
    text-align: center;
    padding: 3%;
    font-weight: lighter;
    border: 1px solid #3C3C3C;
    cursor: pointer;
}
#bundle h2:hover {
    color: #CE5650;
    border-color: #CE5650;
}

div#bundles {
    position: relative;
}

div#available.ng-hide-add.ng-hide-add-active,
div#available.ng-hide-remove.ng-hide-remove-active {
    -webkit-transition: all linear 0.5s;
    transition: all linear 0.5s;
}
div#available.ng-hide {
    opacity: 0;
    top: -80px;
}

div#available {
    position: absolute;
    padding: 5%;
    opacity: 1;
    top: -10px;
    width: 100%;
}

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

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