<!--
@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.
-->
<style is="custom-style">
:root {
  /* Following vars have LTS for plugin API. */
  --primary-text-color: #000;
  --header-background-color: #eee;
  --header-title-content: 'Gerrit';
  --header-icon: none;
  --header-icon-size: 0em;
  --header-text-color: #000;
  --footer-background-color: var(--header-background-color);
  --border-color: #ddd;

  /* Following are not part of plugin API. */
  --selection-background-color: rgba(161, 194, 250, 0.1);
  --hover-background-color: rgba(161, 194, 250, 0.2);
  --expanded-background-color: #eee;
  --view-background-color: #fff;
  --default-horizontal-margin: 1rem;
  --deemphasized-text-color: #757575;
  --font-family: 'Roboto', -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
  --font-family-bold: 'Roboto Medium', -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;
  --iron-overlay-backdrop: {
    transition: none;
  }
  --table-header-background-color: #fafafa;
  --table-subheader-background-color: #eaeaea;

  --chip-background-color: var(--header-background-color);

  --dropdown-background-color: #fff;

  --select-background-color: rgb(248, 248, 248);

  /* Font sizes */
  --font-size-normal: 1rem;
  --font-size-small: .92rem;
  --font-size-large: 1.076rem;

  --link-color: #2a66d9;
  --primary-button-background-color: var(--link-color);
  --primary-button-text-color: #fff;
  --secondary-button-background-color: #fff;
  --secondary-button-text-color: #212121;
  --default-button-background-color: #fff;
  --default-button-text-color: var(--link-color);
  --dialog-background-color: #fff;

  /* Used for both the old patchset header and for indicating that a particular
    change message was selected. */
  --emphasis-color: #fff9c4;

  --error-text-color: red;

  --vote-color-approved: #9fcc6b;
  --vote-color-recommended: #c9dfaf;
  --vote-color-rejected: #f7a1ad;
  --vote-color-disliked: #f7c4cb;
  --vote-color-neutral: #ebf5fb;

  /* Diff colors */
  --diff-selection-background-color: #c7dbf9;
  --light-remove-highlight-color: #fee;
  --light-add-highlight-color: #efe;
  --light-remove-add-highlight-color: #fff6ea;
  --light-rebased-add-highlight-color: #edfffa;
  --dark-remove-highlight-color: rgba(255, 0, 0, 0.15);
  --dark-add-highlight-color: rgba(0, 255, 0, 0.15);
  --dark-rebased-remove-highlight-color: rgba(255, 139, 6, 0.15);
  --dark-rebased-add-highlight-color: rgba(11, 255, 155, 0.15);
  --diff-context-control-color: #fff7d4;
  --diff-context-control-border-color: #f6e6a5;
  --diff-tab-indicator-color: var(--deemphasized-text-color);
  --diff-trailing-whitespace-indicator: #ff9ad2;
  --diff-highlight-range-color: rgba(255, 213, 0, 0.5);
  --diff-highlight-range-hover-color: rgba(255, 255, 0, 0.5);

  --comment-text-color: #000;
  --comment-background-color: #fcfad6;
  --unresolved-comment-background-color: #fcfaa6;

  --edit-mode-background-color: #ebf5fb;

  --tooltip-background-color: #333;
  --tooltip-text-color: #fff;

  --syntax-default-color: var(--primary-text-color);
  --syntax-meta-color: #FF1717;
  --syntax-keyword-color: #9E0069;
  --syntax-number-color: #164;
  --syntax-selector-class-color: #164;
  --syntax-variable-color: black;
  --syntax-template-variable-color: #0000C0;
  --syntax-comment-color: #3F7F5F;
  --syntax-string-color: #2A00FF;
  --syntax-selector-id-color: #2A00FF;
  --syntax-built_in-color: #30a;
  --syntax-tag-color: #170;
  --syntax-link-color: #219;
  --syntax-meta-keyword-color: #219;
  --syntax-type-color: var(--color-link);
  --syntax-title-color: #0000C0;
  --syntax-attr-color: #219;
  --syntax-literal-color: #219;
  --syntax-selector-pseudo-color: #FA8602;
  --syntax-regexp-color: #FA8602;
  --syntax-selector-attr-color: #FA8602;
  --syntax-template-tag-color: #FA8602;
}
@media screen and (max-width: 50em) {
  :root {
    --default-horizontal-margin: .7rem;
  }
}
</style>
