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

.data-grid {
  &.management {

    .user,
    .name,
    .project {
      width: 12%;

      .list-menu li {
        text-transform: inherit;
      }
    }

    .shape {
      width: 19% !important;
    }

    .status {
      width: 13% !important;
    }

    .type {
      width: 14%;
    }

    .resources {
      width: 22%;
      padding: 5px;
    }

    .settings {
      padding-right: 14px;


    }
    .actions {
      margin-top: 0px;
      .label{
        padding-right: 5px;
      }
    }
    .actions-col {
      width: 6%;

    }

    .dashboard_table_body {
      td:first-child {
        cursor: default;
      }
    }
  }
}

.source .resource-wrap .resource-name .detailed-link {
  cursor: default !important;
}

table.management {
  width: 100%;

  thead {
    background: transparent !important;
  }

  td {
    padding: 5px;
  }

  .header-row {
    height: auto;
    .label {
      display: inline-block;
      padding-top: 14px;
      vertical-align: super !important;
      padding-left: 5px;
      font-size: 12px;
    }
    .actions {
      text-align: right;
      .label {
        display: inline-block;
        padding-top: 11px;
      }
    }
  }

  .filter-row {
    background: inherit;
  }
}
