 /*!
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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.
 */

 :host{
 width:100%;
 }

 .source {
   .no-details {
     color: #bdc9d5;
   }

   .resource-wrap {
     display: flex;
     justify-content: space-between;
     height: 26px;
     align-items: center;

     .resource-name {
       width: 50%;
       white-space: nowrap;
       overflow: hidden;

       .detailed-link {
         color: #35afd5;
         cursor: pointer;
       }
     }

     .resource-status {
       width: 35%;
       text-transform: capitalize;
     }

     .resource-actions {
       width: 15%;
       display: flex;
       justify-content: flex-end;
       padding-right: 10px;

       a {
         text-decoration: none;
         color: #748ba3;
         font-size: 18px;
         text-align: center;

         i {
           font-size: 18px;
           padding: 0 2px;
         }
       }

       .schedule {
         cursor: pointer;
         display: flex;
         align-items: center;
         font-size: 18px;

         &.not-allowed {
           pointer-events: none;
         }

         &.active {
           color: #49af38;
         }
       }

       .start-stop-action {
         display: flex;
         align-items: center;
         font-size: 18px;
         color: #36afd5;

         i {
           cursor: pointer;

           &.not-allowed {
             pointer-events: none;
           }
         }
       }

       .remove_butt {
         cursor: pointer;
         color: #ef5c4b;
         display: flex;
         align-items: center;

         &.disabled {
           color: #f5d3d3;
           pointer-events: none;
         }
       }
     }
   }
 }
 //@media screen and (max-width: 1520px) {
 //  .resources,
 //  managment {
 //    .source {
 //      .resource-wrap {
 //        .resource-name {
 //          width: 42%;
 //        }
 //
 //        .resource-status {
 //          width: 43%;
 //        }
 //
 //        .resource-actions {
 //          width: 15%;
 //        }
 //      }
 //    }
 //  }
 //}
