/* Copyright 2015 The Vanadium Authors. All rights reserved. */
/* Use of this source code is governed by a BSD-style */
/* license that can be found in the LICENSE file. */

table {
  border-collapse: collapse;
  table-layout: fixed;
  width: 100%;
  border-spacing: 0;
  margin-top: 15px;
}

thead tr {
  border-bottom: solid 1px rgba(0,0,0, .12);
  padding-bottom: 0.75em;
}

thead tr th {
  position: relative;
}

td {
  overflow: hidden;
  vertical-align: top;
}

table tbody tr:nth-child(2) td {
  padding-top: 15px;
}

.more-icon {
  fill: #0a7e07;
  color: #0a7e07;
}

paper-dialog {
  max-width: 80em;
  width: 80vw;
}

.more-dialog-content .heading {
  font-size: 1.0em;
  padding-top: 0.2em;
  padding-bottom: 0.2em;
  color: #4285f4;
  border-bottom: 1px solid rgba(0,0,0,0.05);
  font-weight: normal;
  text-transform: uppercase;
  margin: 0;
}

.more-dialog-content .details {
  margin-bottom: 1em;
}

.search-fab {
  position: absolute;
  right: 20px;
  top: 10px;
  background-color: #03a9f4;
}

#searchTools {
  box-shadow: rgba(0, 0, 0, 0.14902) 2px 2px 4px;
  background-color: #f5f5f5;
  padding: 1em;
  padding-bottom: 0;
}

.result-count {
  font-size: 0.8em;
  color: #616161;
  float: right;
}

.info-column {
  text-align: center;
}

[moreInfoOnly] {
  display: none;
}

.more-dialog-content [moreInfoOnly] {
  display: initial;
}

.more-dialog-content [gridOnly] {
  display:none;
}

.paginator {
  display: inline-block;
  border: solid 1px rgba(0, 0, 0, 0.05);
  box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.15);
  color: rgba(0, 0, 0, 0.54);
  fill: rgba(0, 0, 0, 0.54);
  margin: 1em;
  font-size: 0.9em;
}

.paginator paper-icon-button {
  vertical-align: middle;
}
