code {

font-family: $code-font-family;
* { font-family: $code-font-family; }
@include with-theme {
    color: color-for(primary);
}

}

pre {

overflow-x: auto;
margin: $spacing-3 0pt;
padding: $spacing-3;
@include with-theme {
    background-color: color-for(hl-area);
}
border-radius: $spacing-2;
> code {
    background: none;
    border-radius: 0pt;
    padding: 0pt;
    @include with-theme {
        color: color-for(text);
    }
}

}

/**

* Syntax highlighting styles
*/
.highlight {
   // Highlight takes care of syntax highlighting stuff
   margin: $spacing-3 0pt;
   padding: $spacing-3;
   border-radius: $spacing-2;
   > pre { 
       margin: 0pt;
       padding: 0pt;
       border-radius: 0pt;
       background: none;
   }

   @include with-theme {
       background-color: color-for(hl-area);

       // Syntax scopes

       // Comment
       .c, .cm, .cp, .c1, .cs  { color: color-for(hl); font-style: italic } // Comment
       // .cm    { color: darken($color: $white-color, $amount: 30%); font-style: italic } // Comment.Multiline
       // .cp    { color: darken($color: $white-color, $amount: 30%); font-weight: bold } // Comment.Preproc
       // .c1    { color: darken($color: $white-color, $amount: 30%); font-style: italic } // Comment.Single
       // .cs    { color: darken($color: $white-color, $amount: 30%); font-weight: bold; font-style: italic } // Comment.Special

       // Keywords
       .k, .kd { color: color-for(primary); font-weight: bold; } // Keyword
       // .kd  { color: darken($color: $white-color, $amount: 10%); font-weight: bold } // Keyword.Declaration
       .kt  { color: lighten(color-for(primary), 20%); } // Keyword.Type
       // .kc  { color: darken($color: $white-color, $amount: 10%); font-weight: bold } // Keyword.Constant
       // .kp  { color: darken($color: $white-color, $amount: 10%); font-weight: bold } // Keyword.Pseudo
       // .kr  { color: darken($color: $white-color, $amount: 10%); font-weight: bold } // Keyword.Reserved

       // Operators
       // .o     { color: darken($color: $white-color, $amount: 10%); font-weight: bold } // Operator
       .ow    { color: color-for(quaternary); font-weight: bold } // Operator.Word

       // Generic
       // .go    { color: darken($color: $white-color, $amount: 30%); } // Generic.Output
       // .gh    { color: #999 } // Generic.Heading
       // .ge    { font-style: italic } // Generic.Emph
       // .gd    { color: #000; background-color: #fdd } // Generic.Deleted
       // .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific
       // .gi    { color: #000; background-color: #dfd } // Generic.Inserted
       // .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific
       // .gp    { color: #555 } // Generic.Prompt
       // .gs    { font-weight: bold } // Generic.Strong
       // .gt    { color: #f00 } // Generic.Traceback
       // .gu    { color: #aaa } // Generic.Subheading

       // Names
       .na  { color: color-for(quaternary) } // Name.Attribute
       .nb  { color: lighten($color: color-for(primary), $amount: 30%); } // Name.Builtin
       .nc  { color: color-for(quaternary); } // Name.Class
       // .no  { color: lighten($color: $back-color, $amount: 40%) } // Name.Constant
       // .ni  { color: darken($color: $white-color, $amount: 20%) } // Name.Entity
       // .ne  { color: #900; font-weight: bold } // Name.Exception
       // .nf  { color: lighten(color-for(primary), 30%); font-weight: bold } // Name.Function
       // .nn  { color: darken($color: $white-color, $amount: 20%) } // Name.Namespace
       .nt     { color: color-for(primary); font-weight: bold; } // Name.Tag
       // .nv  { color: darken($color: $white-color, $amount: 20%) } // Name.Variable
       // .bp  { color: darken($color: $white-color, $amount: 20%) } // Name.Builtin.Pseudo
       // .vc  { color: darken($color: $white-color, $amount: 20%) } // Name.Variable.Class
       // .vg  { color: darken($color: $white-color, $amount: 20%) } // Name.Variable.Global
       // .vi  { color: darken($color: $white-color, $amount: 20%) } // Name.Variable.Instance

       // Literal.Number
       .m, .mf, .mh, .mi, .mo, .il { color: darken(color-for(tertiary), 20%); }
       // .mf    { color: #880 } // Literal.Number.Float
       // .mh    { color: #880 } // Literal.Number.Hex
       // .mi    { color: #880 } // Literal.Number.Integer
       // .mo    { color: #880 } // Literal.Number.Oct
       // .il    { color: #099 } // Literal.Number.Integer.Long

       // Literal.String
       .dl, .s, .sb, .sc, .sd, .s2, .se, .si, .sx, .sr, .s1, .ss { color: color-for(secondary); }
       // .sb    { color: #d14 } // Literal.String.Backtick
       // .sc    { color: #d14 } // Literal.String.Char
       // .sd    { color: #d14 } // Literal.String.Doc
       // .s2    { color: #d14 } // Literal.String.Double
       // .se    { color: #d14 } // Literal.String.Escape
       // .sh    { color: #d14 } // Literal.String.Heredoc
       // .si    { color: #d14 } // Literal.String.Interpol
       // .sx    { color: #d14 } // Literal.String.Other
       // .sr    { color: #009926 } // Literal.String.Regex
       // .s1    { color: #d14 } // Literal.String.Single
       // .ss    { color: #990073 } // Literal.String.Symbol

       // .w     { color: #bbb } // Text.Whitespace
       // .gr    { color: #f00 } // Generic.Error
       // .err   { color: #f00 } // Error
   }

}