<!--
Copyright (C) 2016 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-form-styles">
  <template>
    <style>
      .gr-form-styles h1 {
        margin-bottom: .1em;
      }
      .gr-form-styles h2 {
        margin-bottom: .3em;
      }
      .gr-form-styles fieldset {
        border: none;
        margin-bottom: 2em;
      }
      .gr-form-styles section {
        margin: .25em 0;
        min-height: 2em;
      }
      .gr-form-styles section * {
        vertical-align: middle;
      }
      .gr-form-styles .title,
      .gr-form-styles .value {
        display: inline-block;
      }
      .gr-form-styles .title {
        color: #666;
        font-family: var(--font-family-bold);
        padding-right: .5em;
        width: 15em;
      }
      .gr-form-styles iron-autogrow-textarea {
        font-size: 1em;
      }
      .gr-form-styles th {
        color: #666;
        text-align: left;
        vertical-align: bottom;
      }
      .gr-form-styles td,
      .gr-form-styles tfoot th {
        height: 2em;
        padding: .25em 0;
        vertical-align: middle;
      }
      .gr-form-styles .emptyHeader {
        text-align: right;
      }
      .gr-form-styles tbody tr:nth-child(even):not(.loading) {
        background-color: #f4f4f4;
      }
      .gr-form-styles table {
        width: 50em;
      }
      .gr-form-styles th:first-child,
      .gr-form-styles td:first-child {
        width: 15em;
      }
      .gr-form-styles th:first-child input,
      .gr-form-styles td:first-child input {
        width: 14em;
      }
      .gr-form-styles input:not([type="checkbox"]),
      .gr-form-styles select,
      .gr-form-styles textarea {
        border: 1px solid #d1d2d3;
        border-radius: 2px;
        font-size: 1em;
        height: 2em;
        padding: 0 .15em;
      }
      .gr-form-styles td:last-child {
        width: 5em;
      }
      .gr-form-styles th:last-child gr-button,
      .gr-form-styles td:last-child gr-button {
        width: 100%;
      }
      .gr-form-styles iron-autogrow-textarea {
        border: none;
        height: auto;
        min-height: 2em;
        --iron-autogrow-textarea: {
          border: 1px solid #d1d2d3;
          border-radius: 2px;
          box-sizing: border-box;
          font-size: 1em;
          padding: .25em .15em 0 .15em;
        }
      }
      .gr-form-styles gr-autocomplete {
        border: none;
        --gr-autocomplete: {
          border: 1px solid #d1d2d3;
          border-radius: 2px;
          font-size: 1em;
          height: 2em;
          padding: 0 .15em;
          width: 14em;
        }
      }
      @media only screen and (max-width: 40em) {
        .gr-form-styles section {
          margin-bottom: 1em;
        }
        .gr-form-styles .title,
        .gr-form-styles .value {
          display: block;
        }
        .gr-form-styles table {
          width: 100%;
        }
      }
    </style>
  </template>
</dom-module>
