/*
 * 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: 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%;
}
