/* ==========================================
   Syntax Highlighting - Monokai Pro Theme
   Optimized for technical blog content
   ========================================== */

/* Base highlight container */
.highlight {
    background: var(--bg-code);
    color: var(--text-secondary);
}

.highlight pre {
    background: var(--bg-code);
    margin: 0;
}

/* Code block wrapper styling is in main styles.css */

/* ==========================================
   Token Colors - Monokai Pro Inspired
   ========================================== */

/* Comments */
.highlight .c,    /* Comment */
.highlight .cm,   /* Comment.Multiline */
.highlight .cp,   /* Comment.Preproc */
.highlight .c1,   /* Comment.Single */
.highlight .cs {  /* Comment.Special */
    color: #727072;
    font-style: italic;
}

/* Keywords & Control Flow */
.highlight .k,    /* Keyword */
.highlight .kc,   /* Keyword.Constant */
.highlight .kd,   /* Keyword.Declaration */
.highlight .kn,   /* Keyword.Namespace */
.highlight .kp,   /* Keyword.Pseudo */
.highlight .kr,   /* Keyword.Reserved */
.highlight .kt {  /* Keyword.Type */
    color: #ff6188;
    font-weight: 500;
}

/* Operators */
.highlight .o,    /* Operator */
.highlight .ow {  /* Operator.Word */
    color: #ff6188;
}

/* Strings */
.highlight .s,    /* String */
.highlight .sb,   /* String.Backtick */
.highlight .sc,   /* String.Char */
.highlight .sd,   /* String.Doc */
.highlight .s2,   /* String.Double */
.highlight .se,   /* String.Escape */
.highlight .sh,   /* String.Heredoc */
.highlight .si,   /* String.Interpol */
.highlight .sx,   /* String.Other */
.highlight .sr,   /* String.Regex */
.highlight .s1,   /* String.Single */
.highlight .ss {  /* String.Symbol */
    color: #ffd866;
}

/* Numbers */
.highlight .m,    /* Number */
.highlight .mf,   /* Number.Float */
.highlight .mh,   /* Number.Hex */
.highlight .mi,   /* Number.Integer */
.highlight .mo,   /* Number.Oct */
.highlight .il {  /* Number.Integer.Long */
    color: #ab9df2;
}

/* Functions & Methods */
.highlight .n,    /* Name */
.highlight .na,   /* Name.Attribute */
.highlight .nb,   /* Name.Builtin */
.highlight .bp,   /* Name.Builtin.Pseudo */
.highlight .nf,   /* Name.Function */
.highlight .fm {  /* Name.Function.Magic */
    color: #a9dc76;
}

/* Classes & Types */
.highlight .nc,   /* Name.Class */
.highlight .nd,   /* Name.Decorator */
.highlight .ni,   /* Name.Entity */
.highlight .ne,   /* Name.Exception */
.highlight .nl,   /* Name.Label */
.highlight .nn {  /* Name.Namespace */
    color: #78dce8;
}

/* Variables */
.highlight .nv,   /* Name.Variable */
.highlight .vc,   /* Name.Variable.Class */
.highlight .vg,   /* Name.Variable.Global */
.highlight .vi,   /* Name.Variable.Instance */
.highlight .vm {  /* Name.Variable.Magic */
    color: #fcfcfa;
}

/* Constants */
.highlight .no {  /* Name.Constant */
    color: #ab9df2;
}

/* Properties */
.highlight .py,   /* Name.Property */
.highlight .nt {  /* Name.Tag */
    color: #ff6188;
}

/* Generic & Misc */
.highlight .ge {  /* Generic.Emph */
    font-style: italic;
}

.highlight .gs {  /* Generic.Strong */
    font-weight: bold;
}

.highlight .gh {  /* Generic.Heading */
    color: #78dce8;
    font-weight: bold;
}

.highlight .gp {  /* Generic.Prompt */
    color: #727072;
    font-weight: bold;
}

.highlight .gu {  /* Generic.Subheading */
    color: #78dce8;
    font-weight: bold;
}

.highlight .gi {  /* Generic.Inserted */
    color: #a9dc76;
    background-color: rgba(169, 220, 118, 0.1);
}

.highlight .gd {  /* Generic.Deleted */
    color: #ff6188;
    background-color: rgba(255, 97, 136, 0.1);
}

/* Language-Specific Optimizations */

/* Rust */
.highlight .kt {  /* Types like String, Vec, Result */
    color: #78dce8;
}

/* JavaScript/TypeScript */
.highlight .kd {  /* let, const, var */
    color: #ff6188;
}

.highlight .nx {  /* Identifiers */
    color: #fcfcfa;
}

/* Ruby */
.highlight .ss {  /* Symbols */
    color: #ab9df2;
}

.highlight .si {  /* String interpolation */
    color: #ff6188;
}

/* Shell/Bash */
.highlight .nv {  /* Variables */
    color: #78dce8;
}

/* SQL */
.highlight .k {   /* Keywords */
    color: #ff6188;
    text-transform: uppercase;
}

/* Error Highlighting */
.highlight .err {
    color: #ff6188;
    background-color: rgba(255, 97, 136, 0.1);
}

/* Punctuation */
.highlight .p {   /* Punctuation */
    color: #c1c0b8;
}

/* Whitespace (if shown) */
.highlight .w {   /* Whitespace */
    color: transparent;
}

/* ==========================================
   Inline Code (handled in main CSS)
   ========================================== */
/* Inline code styling is in styles.css */

/* ==========================================
   Special Cases
   ========================================== */

/* Make important keywords stand out more */
.highlight .k.kn {  /* import, from, use */
    color: #ff6188;
    font-weight: 500;
}

/* Function calls */
.highlight .nf {
    color: #a9dc76;
    font-weight: 500;
}

/* Boolean values */
.highlight .kc {  /* true, false, null, nil */
    color: #ab9df2;
    font-weight: 500;
}

/* Self, this, super */
.highlight .bp {
    color: #ab9df2;
    font-style: italic;
}

/* Macros (Rust) */
.highlight .n + .o {  /* macro! */
    color: #78dce8;
}

/* Attributes/Decorators */
.highlight .nd,   /* @decorator */
.highlight .na {  /* #[attribute] */
    color: #78dce8;
    font-style: italic;
}

/* ==========================================
   Performance Note
   ========================================== */
/*
   This stylesheet uses Rouge (server-side) for syntax highlighting.
   No JavaScript required - all highlighting happens at build time.

   Supported languages (others will fall back to plain text):
   - JavaScript/TypeScript
   - Rust
   - Ruby
   - Python
   - Go
   - Shell/Bash
   - SQL
   - JSON
   - YAML
   - And 100+ more

   Rouge automatically detects and only generates classes for
   tokens present in your code, keeping HTML minimal.
*/
