<!--
@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.
-->
<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;
  --tooltip-text-color: white;
  --vote-text-color-recommended: #388e3c;
  --vote-text-color-disliked: #d32f2f;

  /* background colors */
  /* primary background colors */
  --background-color-primary: #ffffff;
  --background-color-secondary: #f8f9fa;
  --background-color-tertiary: #f1f3f4;
  /* directly derived from primary background colors */
  --chip-background-color: var(--background-color-tertiary);
  --default-button-background-color: var(--background-color-primary);
  --dialog-background-color: var(--background-color-primary);
  --dropdown-background-color: var(--background-color-primary);
  --expanded-background-color: var(--background-color-tertiary);
  --select-background-color: var(--background-color-secondary);
  --shell-command-background-color: var(--background-color-secondary);
  --shell-command-decoration-background-color: var(--background-color-tertiary);
  --table-header-background-color: var(--background-color-secondary);
  --table-subheader-background-color: var(--background-color-tertiary);
  --view-background-color: var(--background-color-primary);
  /* unique background colors */
  --assignee-highlight-color: #fcfad6;
  --comment-background-color: #fcfad6;
  --robot-comment-background-color: #e8f0fe;
  --edit-mode-background-color: #ebf5fb;
  --emphasis-color: #fff9c4;
  --hover-background-color: rgba(161, 194, 250, 0.2);
  --primary-button-background-color: #2a66d9;
  --selection-background-color: rgba(161, 194, 250, 0.1);
  --tooltip-background-color: #333;
  --unresolved-comment-background-color: #fcfaa6;
  --vote-color-approved: #9fcc6b;
  --vote-color-disliked: #f7c4cb;
  --vote-color-neutral: #ebf5fb;
  --vote-color-recommended: #c9dfaf;
  --vote-color-rejected: #f7a1ad;

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

  /* 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', 'SF Mono', '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: var(--background-color-tertiary);
  --footer-border-top: 1px solid var(--border-color);
  --header-background-color: var(--background-color-tertiary);
  --header-border-bottom: 1px solid var(--border-color);
  --header-border-image: '';
  --header-box-shadow: none;
  --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;
  --coverage-covered: #e0f2f1;
  --coverage-not-covered: #ffd1a4;

  /* 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-doctag-weight: bold;
  --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-params-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);

  /* elevation */
  --elevation-level-1: 0px 1px 2px 0px rgba(60, 64, 67, .30), 0px 1px 3px 1px rgba(60, 64, 67, .15);
  --elevation-level-2: 0px 1px 2px 0px rgba(60, 64, 67, .30), 0px 2px 6px 2px rgba(60, 64, 67, .15);
  --elevation-level-3: 0px 1px 3px 0px rgba(60, 64, 67, .30), 0px 4px 8px 3px rgba(60, 64, 67, .15);
  --elevation-level-4: 0px 2px 3px 0px rgba(60, 64, 67, .30), 0px 6px 10px 4px rgba(60, 64, 67, .15);
  --elevation-level-5: 0px 4px 4px 0px rgba(60, 64, 67, .30), 0px 8px 12px 6px rgba(60, 64, 67, .15);

  /* misc */
  --border-radius: 4px;
  --reply-overlay-z-index: 1000;

  /* paper and iron component overrides */
  --iron-overlay-backdrop-background-color: black;
  --iron-overlay-backdrop-opacity: 0.32;
  --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>
