<!--
Copyright (C) 2015 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-change-list-styles">
  <template>
    <style>
      :host {
        font-size: 13px;
      }
      .topHeader,
      .groupHeader {
        border-bottom: 1px solid #eee;
        font-weight: bold;
        padding: .3em .5em;
      }
      .topHeader {
        background-color: #ddd;
      }
      .noChanges {
        border-bottom: 1px solid #eee;
        padding: .3em .5em;
      }
      .keyboard,
      .star {
        padding: 0;
      }
      gr-change-star {
        vertical-align: middle;
      }
      .keyboard,
      .branch,
      .star,
      .label,
      .number,
      .owner,
      .updated,
      .size,
      .status,
      .project {
        white-space: nowrap;
      }
      .updated {
        text-align: right;
      }
      .size,
      .updated {
        text-align: right;
      }
      .label {
        text-align: center;
      }
      @media only screen and (max-width: 50em) {
        :host {
          font-size: 14px;
        }
        gr-change-list-item {
          flex-wrap: wrap;
          justify-content: space-between;
          padding: .25em .5em;
        }
        gr-change-list-item[selected] {
          background-color: transparent;
        }
        .topHeader,
        .keyboard,
        .status,
        .project,
        .branch,
        .updated,
        .label {
          display: none;
        }
        .star {
          padding-left: .35em;
          padding-top: .25em;
        }
        .subject {
          margin-bottom: .25em;
          width: calc(100% - 2em);
        }
        .owner,
        .size {
          width: auto;
        }
      }
      @media only screen and (min-width: 1450px) {
        .project {
          width: 20em;
        }
      }
    </style>
  </template>
</dom-module>
