<!--
@license
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.
-->
<link rel="import" href="/bower_components/polymer/lib/elements/custom-style.html">

<custom-style><style is="custom-style">
html {
  /**
   * When adding a new color variable make sure to also add it to the other
   * theme files in the same directory.
   *
   * For colors prefer lower case hex colors.
   *
   * Note that plugins might be using these variables, so removing a variable
   * can be a breaking change that should go into the release notes.
   */

  /* text colors */
  --primary-text-color: black;
  --link-color: #2a66d9;
  --comment-text-color: black;
  --deemphasized-text-color: #5F6368;
  --default-button-text-color: #2a66d9;
  --error-text-color: red;
  --primary-button-text-color: white;
    /* Used on text color for change list that doesn't need user's attention. */
  --reviewed-text-color: black;
  --secondary-button-text-color: #212121;
  --tooltip-text-color: white;
  --vote-text-color-recommended: #388e3c;
  --vote-text-color-disliked: #d32f2f;

  /* background colors */
  --assignee-highlight-color: #fcfad6;
  --chip-background-color: #eee;
  --comment-background-color: #fcfad6;
  --default-button-background-color: white;
  --dialog-background-color: white;
  --dropdown-background-color: white;
  --edit-mode-background-color: #ebf5fb;
  --emphasis-color: #fff9c4;
  --expanded-background-color: #eee;
  --hover-background-color: rgba(161, 194, 250, 0.2);
  --primary-button-background-color: #2a66d9;
  --secondary-button-background-color: white;
  --select-background-color: #f8f8f8;
  --selection-background-color: rgba(161, 194, 250, 0.1);
  --shell-command-background-color: #f5f5f5;
  --shell-command-decoration-background-color: #ebebeb;
  --table-header-background-color: #fafafa;
  --table-subheader-background-color: #eaeaea;
  --tooltip-background-color: #333;
  --unresolved-comment-background-color: #fcfaa6;
  --view-background-color: white;
  --vote-color-approved: #9fcc6b;
  --vote-color-disliked: #f7c4cb;
  --vote-color-neutral: #ebf5fb;
  --vote-color-recommended: #c9dfaf;
  --vote-color-rejected: #f7a1ad;

  /* misc colors */
  --border-color: #ddd;

  /* fonts */
  --font-family: 'Roboto', -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
  --monospace-font-family: 'Roboto Mono', Menlo, 'Lucida Console', Monaco, monospace;
  --font-size-code: 12px;     /* 12px mono */
  --font-size-mono: .929rem;  /* 13px mono */
  --font-size-small: .857rem; /* 12px */
  --font-size-normal: 1rem;   /* 14px */
  --font-size-h3: 1.143rem;   /* 16px */
  --font-size-h2: 1.429rem;   /* 20px */
  --font-size-h1: 1.714rem;   /* 24px */
  --line-height-code: 1.334;      /* 16px */
  --line-height-mono: 1.286rem;   /* 18px */
  --line-height-small: 1.143rem;  /* 16px */
  --line-height-normal: 1.429rem; /* 20px */
  --line-height-h3: 1.714rem;     /* 24px */
  --line-height-h2: 2rem;         /* 28px */
  --line-height-h1: 2.286rem;     /* 32px */
  --font-weight-normal: 400;
  --font-weight-bold: 500;

  /* spacing */
  --spacing-xxs: 1px;
  --spacing-xs: 2px;
  --spacing-s: 4px;
  --spacing-m: 8px;
  --spacing-l: 12px;
  --spacing-xl: 16px;
  --spacing-xxl: 24px;

  /* header and footer */
  --footer-background-color: #eee;
  --footer-border-top: 1px solid var(--border-color);
  --header-background-color: #eee;
  --header-border-bottom: 1px solid var(--border-color);
  --header-border-image: '';
  --header-padding: 0 var(--spacing-l);
  --header-icon-size: 0em;
  --header-icon: none;
  --header-text-color: black;
  --header-title-content: 'Gerrit';
  --header-title-font-size: 1.75rem;

  /* diff colors */
  --dark-add-highlight-color: #aaf2aa;
  --dark-rebased-add-highlight-color: #d7d7f9;
  --dark-rebased-remove-highlight-color: #f7e8b7;
  --dark-remove-highlight-color: #ffcdd2;
  --diff-blank-background-color: white;
  --diff-context-control-background-color: #fff7d4;
  --diff-context-control-border-color: #f6e6a5;
  --diff-context-control-color: var(--deemphasized-text-color);
  --diff-highlight-range-color: rgba(255, 213, 0, 0.5);
  --diff-highlight-range-hover-color: rgba(255, 255, 0, 0.5);
  --diff-selection-background-color: #c7dbf9;
  --diff-tab-indicator-color: var(--deemphasized-text-color);
  --diff-trailing-whitespace-indicator: #ff9ad2;
  --light-add-highlight-color: #d8fed8;
  --light-rebased-add-highlight-color: #eef;
  --light-remove-add-highlight-color: #fff8dc;
  --light-remove-highlight-color: #ffebee;

  /* syntax colors */
  --syntax-attr-color: #219;
  --syntax-attribute-color: var(--primary-text-color);
  --syntax-built_in-color: #30a;
  --syntax-comment-color: #3f7f5f;
  --syntax-default-color: var(--primary-text-color);
  --syntax-function-color: var(--primary-text-color);
  --syntax-keyword-color: #9e0069;
  --syntax-link-color: #219;
  --syntax-literal-color: #219;
  --syntax-meta-color: #ff1717;
  --syntax-meta-keyword-color: #219;
  --syntax-number-color: #164;
  --syntax-param-color: var(--primary-text-color);
  --syntax-regexp-color: #fa8602;
  --syntax-selector-attr-color: #fa8602;
  --syntax-selector-class-color: #164;
  --syntax-selector-id-color: #2a00ff;
  --syntax-selector-pseudo-color: #fa8602;
  --syntax-string-color: #2a00ff;
  --syntax-tag-color: #170;
  --syntax-template-tag-color: #fa8602;
  --syntax-template-variable-color: #0000c0;
  --syntax-title-color: #0000c0;
  --syntax-type-color: #2a66d9;
  --syntax-variable-color: var(--primary-text-color);

  /* misc */
  --border-radius: 4px;
  --reply-overlay-z-index: 1000;
  --iron-overlay-backdrop: {
    transition: none;
  };
}
@media screen and (max-width: 50em) {
  html {
    --spacing-xxs: 1px;
    --spacing-xs: 1px;
    --spacing-s: 2px;
    --spacing-m: 4px;
    --spacing-l: 8px;
    --spacing-xl: 12px;
    --spacing-xxl: 16px;
  }
}
</style></custom-style>
