<!--
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;
          text-decoration: underline;
          width: calc(100% - 2em);
        }
        .owner,
        .size {
          width: auto;
        }
      }
      @media only screen and (min-width: 1450px) {
        .project {
          width: 20em;
        }
      }
    </style>
  </template>
</dom-module>
