<!--
@license
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-syntax-theme">
  <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}
       */

      .contentText {
        color: var(--syntax-default-color);
      }
      .gr-syntax-meta {
        color: var(--syntax-meta-color);
      }
      .gr-syntax-keyword {
        color: var(--syntax-keyword-color);
        line-height: 1;
      }
      .gr-syntax-number {
        color: var(--syntax-number-color);
      }
      .gr-syntax-selector-class {
        color: var(--syntax-selector-class-color);
      }
      .gr-syntax-variable {
        color: var(--syntax-variable-color);
      }
      .gr-syntax-template-variable {
        color: var(--syntax-template-variable-color);
      }
      .gr-syntax-comment {
        color: var(--syntax-comment-color);
      }
      .gr-syntax-string {
        color: var(--syntax-string-color);
      }
      .gr-syntax-selector-id {
        color: var(--syntax-selector-id-color);
      }
      .gr-syntax-built_in {
        color: var(--syntax-built_in-color);
      }
      .gr-syntax-tag {
        color: var(--syntax-tag-color);
      }
      .gr-syntax-link {
        color: var(--syntax-link-color);
      }
      .gr-syntax-meta-keyword {
        color: var(--syntax-meta-keyword-color);
      }
      .gr-syntax-type {
        color: var(--syntax-type-color);
      }
      .gr-syntax-title {
        color: var(--syntax-title-color);
      }
      .gr-syntax-attr {
        color: var(--syntax-attr-color);
      }
      .gr-syntax-literal { /* XML/HTML Attribute */
        color: var(--syntax-literal-color);
      }
      .gr-syntax-selector-pseudo {
        color: var(--syntax-selector-pseudo-color);
      }
      .gr-syntax-regexp {
        color: var(--syntax-regexp-color);
      }
      .gr-syntax-selector-attr {
        color: var(--syntax-selector-attr-color);
      }
      .gr-syntax-template-tag {
        color: var(--syntax-template-tag-color);
      }
      .gr-syntax-emphasis {
        font-style: italic;
      }
      .gr-syntax-strong {
        font-weight: 700;
      }
    </style>
  </template>
</dom-module>
