<!--
Copyright (C) 2016 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-theme-default">
  <template>
    <style>
      /**
       * @overview Highlight.js emits the following classes that do not have
       * styles here:
       *    subst, symbol, class, function, doctag, meta-string, section, name,
       *    builtin-name, bulletm, code, formula, quote, addition, deletion,
       *    attribute
       * @see {@link http://highlightjs.readthedocs.io/en/latest/css-classes-reference.html}
       */

      .gr-syntax-meta {
         color: #FF1717;
      }
      .gr-syntax-keyword {
        color: #9E0069;
        line-height: 1;
      }
      .gr-syntax-number,
      .gr-syntax-selector-class {
        color: #164;
      }
      .gr-syntax-variable {
        color: black;
      }
      .gr-syntax-template-variable {
        color: #0000C0;
      }
      .gr-syntax-comment {
        color: #3F7F5F;
      }
      .gr-syntax-string,
      .gr-syntax-selector-id {
        color: #2A00FF;
      }
      .gr-syntax-built_in {
        color: #30a;
      }
      .gr-syntax-tag {
        color: #170;
      }
      .gr-syntax-link,
      .gr-syntax-meta-keyword {
        color: #219;
      }
      .gr-syntax-type {
        color: var(--color-link);
      }
      .gr-syntax-title {
        color: #0000C0;
      }
      .gr-syntax-attr,
      .gr-syntax-literal { /* XML/HTML Attribute */
        color: #219;
      }
      .gr-syntax-selector-pseudo,
      .gr-syntax-regexp,
      .gr-syntax-selector-attr,
      .gr-syntax-template-tag {
        color: #FA8602;
      }
      .gr-syntax-emphasis {
        font-style: italic;
      }
      .gr-syntax-strong {
        font-weight: 700;
      }
    </style>
  </template>
</dom-module>