<!--
@license
Copyright (C) 2017 The Android Open Source Project

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

<dom-module id="gr-table-styles">
  <template>
    <style>
      .genericList {
        border-collapse: collapse;
        width: 100%;
      }
      .genericList td {
        height: 2.25rem;
        padding: var(--spacing-s) 0;
        vertical-align: middle;
      }
      .genericList tr {
        border-bottom: 1px solid var(--border-color);
      }
      .genericList tr:hover {
        background-color: var(--hover-background-color);
      }
      .genericList th {
        white-space: nowrap;
      }
      .genericList th,
      .genericList td {
        padding-right: var(--spacing-l);
      }
      .genericList tr th:first-of-type,
      .genericList tr td:first-of-type {
        padding-left: var(--spacing-l);
      }
      .genericList tr:first-of-type {
        border-top: 1px solid var(--border-color);
      }
      .genericList tr th:last-of-type,
      .genericList tr td:last-of-type {
        border-left: 1px solid var(--border-color);
        text-align: center;
        padding: 0 var(--spacing-l);
      }
      .genericList tr th.delete,
      .genericList tr td.delete,
      .genericList tr.loadingMsg td {
        border-left: none;
      }
      .genericList .loading {
        border: none;
        display: none;
      }
      .genericList td {
        flex-shrink: 0;
      }
      .genericList .topHeader,
      .genericList .groupHeader {
        color: var(--primary-text-color);
        font-weight: var(--font-weight-bold);
        text-align: left;
        vertical-align: middle
      }
      .genericList .topHeader {
        background-color: var(--table-header-background-color);
        height: 3rem;
      }
      .genericList .groupHeader {
        background-color: var(--table-subheader-background-color);
        font-size: var(--font-size-h3);
      }
      .genericList a {
        color: var(--primary-text-color);
        text-decoration: none;
      }
      .genericList a:hover {
        text-decoration: underline;
      }
      .genericList .description {
        width: 99%;
      }
      .genericList .loadingMsg {
        color: var(--deemphasized-text-color);
        display: block;
        padding: var(--spacing-s) var(--spacing-l);
      }
      .genericList .loadingMsg:not(.loading) {
        display: none;
      }
    </style>
  </template>
</dom-module>
