<!--
@license
Copyright (C) 2017 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="shared-styles">
  <template>
    <style>

      /* CSS reset */

      html, body, button, div, span, applet, object, iframe, h1, h2, h3,
      h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite,
      code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub,
      sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form,
      label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article,
      aside, canvas, details, embed, figure, figcaption, footer, header, hgroup,
      main, menu, nav, output, ruby, section, summary, time, mark, audio, video {
        border: 0;
        box-sizing: border-box;
        font-size: 100%;
        font: inherit;
        margin: 0;
        padding: 0;
        vertical-align: baseline;
      }
      *::after,
      *::before {
        box-sizing: border-box;
      }
      input {
        background-color: inherit;
        border: 1px solid var(--border-color);
        box-sizing: border-box;
        color: var(--primary-text-color);
        margin: 0;
        padding: 0;
      }
      iron-autogrow-textarea {
        background-color: inherit;
        color: var(--primary-text-color);
        border: 1px solid var(--border-color);
        border-radius: var(--border-radius);
        box-sizing: border-box;
        /* iron-autogrow-textarea has a "-webkit-appearance: textarea" :host
           css rule, which prevents overriding the border color. Clear that. */
        -webkit-appearance: none;

        --iron-autogrow-textarea: {
          padding: 4px;
        };
      }
      a {
        color: var(--link-color);
      }
      input,
      textarea,
      select,
      button {
        font: inherit;
      }
      ol, ul {
        list-style: none;
      }
      blockquote, q {
        quotes: none;
      }
      blockquote:before, blockquote:after,
      q:before, q:after {
        content: '';
        content: none;
      }
      table {
        border-collapse: collapse;
        border-spacing: 0;
      }

      /* Fonts */

      .font-normal {
        font-size: var(--font-size-normal);
        font-weight: var(--font-weight-normal);
        line-height: var(--line-height-normal);
      }
      .font-small {
        font-size: var(--font-size-small);
        font-weight: var(--font-weight-normal);
        line-height: var(--line-height-small);
      }
      h1, .font-h1 {
        font-size: var(--font-size-h1);
        font-weight: var(--font-weight-bold);
        line-height: var(--line-height-h1);
      }
      h2, .font-h2 {
        font-size: var(--font-size-h2);
        font-weight: var(--font-weight-bold);
        line-height: var(--line-height-h2);
      }
      h3, .font-h3 {
        font-size: var(--font-size-h3);
        font-weight: var(--font-weight-bold);
        line-height: var(--line-height-h3);
      }
      iron-icon {
        color: var(--deemphasized-text-color);
        --iron-icon-height: 20px;
        --iron-icon-width: 20px;
      }

      /* Stopgap solution until we remove hidden$ attributes. */

      [hidden] {
        display: none !important;
      }
      .separator {
        border-left: 1px solid var(--border-color);
        height: 20px;
        margin: 0 8px;
      }
      .separator.transparent {
        border-color: transparent;
      }
      paper-toggle-button {
        --paper-toggle-button-checked-bar-color: var(--link-color);
        --paper-toggle-button-checked-button-color: var(--link-color);
      }
      paper-tabs {
        --paper-tab-content-focused: {
          /* paper-tabs uses 700 here, which can look awkward */
          font-weight: var(--font-weight-normal);
        };
        --paper-tab-content-unselected: {
          /* paper-tabs uses 0.8 here, but we want to control the color directly */
          opacity: 1;
          color: var(--deemphasized-text-color);
        };      }
      strong {
        font-weight: var(--font-weight-bold);
      }
    </style>
  </template>
</dom-module>
