@import 'syntax-variables';

atom-text-editor, :host {
  background-color: @syntax-background-color;
  color: @syntax-text-color;

  .invisible-character {
    color: @syntax-invisible-character-color;
  }

  .indent-guide {
    color: @syntax-indent-guide-color;
  }

  .wrap-guide {
    background-color: @syntax-wrap-guide-color;
  }

  .gutter {
    background-color: @syntax-gutter-background-color;
  }
  .gutter .cursor-line {
    background-color: @syntax-gutter-background-color-selected;
  }
  .line-number.cursor-line-no-selection {
    background-color: @syntax-gutter-background-color-selected;
  }

  .gutter .line-number.folded,
  .gutter .line-number:after,
  .fold-marker:after {
    color: #fba0e3;
  }

  .invisible {
    color: @syntax-text-color;
  }

  .cursor {
    border-color: @syntax-cursor-color;
  }

  .selection .region {
    background-color: @syntax-selection-color;
  }

  // Markdown Styles

  .source.gfm {
    color: #999;
  }

  .gfm {
    .markup.heading {
      color: #eee;
    }

    .link {
      color: #555;
    }

    .variable.list,
    .support.quote {
      color: #555;
    }

    .link .entity {
      color: #ddd;
    }

    .raw {
      color: #aaa;
    }
  }

  .markdown {
    .paragraph {
      color: #999;
    }

    .heading {
      color: #eee;
    }

    .raw {
      color: #aaa;
    }

    .link {
      color: #555;

      .string {
        color: #555;

        &.title {
          color: #ddd;
        }
      }
    }
  }
}

.bracket-matcher .region {
  border-bottom: 1px solid #f8de7e;
  margin-top: -1px;
  opacity: .7;
}

.comment {
  color: #7C7C7C;
}

.entity {
  color: #FFD2A7;

  &.name.type {
    text-decoration: underline;
    color: #FFFFB6;
  }

  &.other.inherited-class {
    color: #9B5C2E;
  }
}

.keyword {
  color: #96CBFE;

  &.control {
    color: #96CBFE;
  }

  &.operator {
    color: #EDEDED;
  }
}

.storage {
  color: #CFCB90;

  &.modifier {
    color: #96CBFE;
  }
}

.constant {
  color: #99CC99;

  &.numeric {
    color: #FF73FD;
  }
}

.variable {
  color: #C6C5FE;
}

.invalid.deprecated {
  text-decoration: underline;
  color: #FD5FF1;
}

.invalid.illegal {
  color: #FD5FF1;
  background-color: rgba(86, 45, 86, 0.75);
}

// String interpolation in Ruby, CoffeeScript, and others
.string {
  .source,
  .meta.embedded.line {
    color: #EDEDED;
  }

  .punctuation.section.embedded {
    color: #00A0A0;

    .source {
      color: #00A0A0;  // Required for the end of embedded strings in Ruby #716
    }
  }
}

.string {
  color: #A8FF60;

  .constant {
    color: #00A0A0;
  }

  &.regexp {
    color: #E9C062;

    .constant.character.escape,
    .source.ruby.embedded,
    .string.regexp.arbitrary-repetition {
      color: #FF8000;
    }

    &.group {
      color: #C6A24F;
      background-color: rgba(255, 255, 255, 0.06);
    }

    &.character-class {
      color: #B18A3D;
    }
  }

  .variable {
    color: #8A9A95;
  }
}

.support {
  color: #FFFFB6;

  &.function {
    color: #DAD085;
  }

  &.constant {
    color: #FFD2A7;
  }

  &.type.property-name.css {
    color: #EDEDED;
  }
}

.source .entity.name.tag,
.source .punctuation.tag {
  color: #96CBFE;
}
.source .entity.other.attribute-name {
  color: #C6C5FE;
}

.entity {
  &.other.attribute-name {
    color: #C6C5FE;
  }

  &.name.tag.namespace,
  &.other.attribute-name.namespace {
    color: #E18964;
  }
}

.meta {
  &.preprocessor.c {
    color: #8996A8;
  }

  &.preprocessor.c .keyword {
    color: #AFC4DB;
  }

  &.cast {
    color: #676767;
  }

  &.sgml.html .meta.doctype,
  &.sgml.html .meta.doctype .entity,
  &.sgml.html .meta.doctype .string,
  &.xml-processing,
  &.xml-processing .entity,
  &.xml-processing .string {
    color: #494949;
  }

  &.tag .entity,
  &.tag > .punctuation,
  &.tag.inline .entity {
    color: #C6C5FE;
  }
  &.tag .name,
  &.tag.inline .name,
  &.tag > .punctuation {
    color: #96CBFE;
  }

  &.selector.css .entity.name.tag {
    text-decoration: underline;
    color: #96CBFE;
  }

  &.selector.css .entity.other.attribute-name.tag.pseudo-class {
    color: #8F9D6A;
  }

  &.selector.css .entity.other.attribute-name.id {
    color: #8B98AB;
  }

  &.selector.css .entity.other.attribute-name.class {
    color: #62B1FE;
  }

  &.property-group .support.constant.property-value.css,
  &.property-value .support.constant.property-value.css {
    color: #F9EE98;
  }

  &.preprocessor.at-rule .keyword.control.at-rule {
    color: #8693A5;
  }

  &.property-value .support.constant.named-color.css,
  &.property-value .constant {
    color: #87C38A;
  }

  &.constructor.argument.css {
    color: #8F9D6A;
  }

  &.diff,
  &.diff.header {
    color: #F8F8F8;
    background-color: #0E2231;
  }

  &.separator {
    color: #60A633;
    background-color: #242424;
  }

  &.line.entry.logfile,
  &.line.exit.logfile {
    background-color: rgba(238, 238, 238, 0.16);
  }

  &.line.error.logfile {
    background-color: #751012;
  }
}
