<!--
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 .loading {
        display: none;
      }
      .genericList {
        border-collapse: collapse;
        width: 100%;
      }
      .genericList tr.table {
        border-bottom: 1px solid #eee;
      }
      .genericList td {
        flex-shrink: 0;
        padding: .3em .5em;
      }
      .genericList th {
        background-color: #ddd;
        border-bottom: 1px solid #eee;
        font-family: var(--font-family-bold);
        padding: .3em .5em;
        text-align: left;
      }
      .genericList a {
        color: var(--default-text-color);
        text-decoration: none;
      }
      .genericList a:hover {
        text-decoration: underline;
      }
      .genericList .description {
        width: 70%;
      }
      .genericList .loadingMsg {
        color: #666;
        display: block;
        padding: 1em var(--default-horizontal-margin);
      }
      .genericList .loadingMsg:not(.loading) {
        display: none;
      }
    </style>
  </template>
</dom-module>
