<!--
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;
      }
      .headerRow {
        display: flex;
      }
      .topHeader,
      .groupHeader {
        border-bottom: 1px solid #eee;
        font-weight: bold;
        padding: .3em .5em;
      }
      .topHeader {
        background-color: #ddd;
        flex-shrink: 0;
      }
      .noChanges {
        border-bottom: 1px solid #eee;
        padding: .3em .5em;
      }
      .keyboard,
      .star {
        align-items: center;
        display: flex;
        justify-content: center;
        padding: 0;
        width: 2em;
      }
      .star {
        padding-top: .05em;
      }
      .number {
        width: 4em;
      }
      .subject {
        flex-grow: 1;
        flex-shrink: 1;
        word-break: break-word;
      }
      .status {
        width: 9em;
      }
      .owner {
        width: 15em;
      }
      .project,
      .branch {
        overflow: hidden;
        white-space: nowrap;
        text-overflow: ellipsis;
      }
      .project {
        width: 10em;
      }
      .branch {
        width: 7em;
      }
      .updated {
        width: 9em;
        text-align: right;
      }
      .size {
        width: 9em;
        text-align: right;
      }
      .label {
        width: 2.6em;
        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 {
          align-items: flex-start;
          padding-left: .35em;
          padding-top: .4em;
        }
        .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>
