/* =============================================================================
   Monokai Pro Syntax Highlighting for MkDocs Material
   
   Based on Monokai Pro by Wimer Hazenberg (https://monokai.pro)
   - Dark theme: slate palette
   - Light theme: default palette
   
   All colors meet WCAG AA contrast ratio (4.5:1 minimum)
   ============================================================================= */

/* -----------------------------------------------------------------------------
   Dark Theme (slate) - Monokai Pro Dark
   ----------------------------------------------------------------------------- */

/* Code block backgrounds - using specific selectors to override Material defaults */
[data-md-color-scheme="slate"] .md-typeset code,
[data-md-color-scheme="slate"] .md-typeset pre > code,
[data-md-color-scheme="slate"] .md-typeset .highlight > pre,
[data-md-color-scheme="slate"] .md-typeset .highlight > pre > code,
[data-md-color-scheme="slate"] .md-typeset .highlighttable,
[data-md-color-scheme="slate"] .md-typeset .highlighttable .highlight,
[data-md-color-scheme="slate"] .md-typeset .highlighttable .highlight pre,
[data-md-color-scheme="slate"] .md-typeset .highlighttable .highlight pre code {
  background-color: #2a2a2e;
}

/* Line number gutter background */
[data-md-color-scheme="slate"] .md-typeset .highlighttable .linenos {
  background-color: #221f22;
}

/* CSS custom properties for dark theme */
[data-md-color-scheme="slate"] {
  --md-code-fg-color: #fcfcfa;
  --md-code-bg-color: #2a2a2e;
  --md-code-hl-color: rgba(255, 255, 255, 0.05);
  
  /* Token colors - Monokai Pro Dark */
  --md-code-hl-number-color: #ab9df2;
  --md-code-hl-special-color: #ab9df2;
  --md-code-hl-function-color: #a9dc76;
  --md-code-hl-constant-color: #ab9df2;
  --md-code-hl-keyword-color: #ff6188;
  --md-code-hl-string-color: #ffd866;
  --md-code-hl-name-color: #78dce8;
  --md-code-hl-operator-color: #ff6188;
  --md-code-hl-punctuation-color: #c1c0c0;
  --md-code-hl-comment-color: #c1c0c0;
  --md-code-hl-generic-color: #fcfcfa;
  --md-code-hl-variable-color: #fc9867;
}

/* Dark theme token overrides */
[data-md-color-scheme="slate"] .highlight .c,
[data-md-color-scheme="slate"] .highlight .c1,
[data-md-color-scheme="slate"] .highlight .ch,
[data-md-color-scheme="slate"] .highlight .cm,
[data-md-color-scheme="slate"] .highlight .cp,
[data-md-color-scheme="slate"] .highlight .cpf,
[data-md-color-scheme="slate"] .highlight .cs {
  color: #c1c0c0;
  font-style: italic;
}

[data-md-color-scheme="slate"] .highlight .k,
[data-md-color-scheme="slate"] .highlight .kc,
[data-md-color-scheme="slate"] .highlight .kd,
[data-md-color-scheme="slate"] .highlight .kn,
[data-md-color-scheme="slate"] .highlight .kp,
[data-md-color-scheme="slate"] .highlight .kr,
[data-md-color-scheme="slate"] .highlight .kt {
  color: #ff6188;
}

[data-md-color-scheme="slate"] .highlight .s,
[data-md-color-scheme="slate"] .highlight .s1,
[data-md-color-scheme="slate"] .highlight .s2,
[data-md-color-scheme="slate"] .highlight .sa,
[data-md-color-scheme="slate"] .highlight .sb,
[data-md-color-scheme="slate"] .highlight .sc,
[data-md-color-scheme="slate"] .highlight .sd,
[data-md-color-scheme="slate"] .highlight .se,
[data-md-color-scheme="slate"] .highlight .sh,
[data-md-color-scheme="slate"] .highlight .si,
[data-md-color-scheme="slate"] .highlight .sr,
[data-md-color-scheme="slate"] .highlight .ss,
[data-md-color-scheme="slate"] .highlight .sx {
  color: #ffd866;
}

[data-md-color-scheme="slate"] .highlight .m,
[data-md-color-scheme="slate"] .highlight .mb,
[data-md-color-scheme="slate"] .highlight .mf,
[data-md-color-scheme="slate"] .highlight .mh,
[data-md-color-scheme="slate"] .highlight .mi,
[data-md-color-scheme="slate"] .highlight .mo,
[data-md-color-scheme="slate"] .highlight .il {
  color: #ab9df2;
}

[data-md-color-scheme="slate"] .highlight .nf,
[data-md-color-scheme="slate"] .highlight .fm {
  color: #a9dc76;
}

[data-md-color-scheme="slate"] .highlight .nc,
[data-md-color-scheme="slate"] .highlight .nn,
[data-md-color-scheme="slate"] .highlight .ne {
  color: #78dce8;
  font-style: italic;
}

[data-md-color-scheme="slate"] .highlight .nb,
[data-md-color-scheme="slate"] .highlight .nx {
  color: #78dce8;
}

[data-md-color-scheme="slate"] .highlight .o,
[data-md-color-scheme="slate"] .highlight .ow {
  color: #ff6188;
}

[data-md-color-scheme="slate"] .highlight .n,
[data-md-color-scheme="slate"] .highlight .na {
  color: #fcfcfa;
}

[data-md-color-scheme="slate"] .highlight .nv,
[data-md-color-scheme="slate"] .highlight .vc,
[data-md-color-scheme="slate"] .highlight .vg,
[data-md-color-scheme="slate"] .highlight .vi {
  color: #fc9867;
}

[data-md-color-scheme="slate"] .highlight .nd {
  color: #78dce8;
}

[data-md-color-scheme="slate"] .highlight .no,
[data-md-color-scheme="slate"] .highlight .bp {
  color: #ab9df2;
}

[data-md-color-scheme="slate"] .highlight .p {
  color: #c1c0c0;
}

[data-md-color-scheme="slate"] .highlight .gd {
  color: #ff6188;
}

[data-md-color-scheme="slate"] .highlight .gi {
  color: #a9dc76;
}


/* -----------------------------------------------------------------------------
   Light Theme (default) - Monokai Pro Light
   
   WCAG AA compliant: All colors have 4.5:1+ contrast on #ffffff
   ----------------------------------------------------------------------------- */

/* Code block backgrounds - using specific selectors */
[data-md-color-scheme="default"] .md-typeset code,
[data-md-color-scheme="default"] .md-typeset pre > code,
[data-md-color-scheme="default"] .md-typeset .highlight > pre,
[data-md-color-scheme="default"] .md-typeset .highlight > pre > code,
[data-md-color-scheme="default"] .md-typeset .highlighttable,
[data-md-color-scheme="default"] .md-typeset .highlighttable .highlight,
[data-md-color-scheme="default"] .md-typeset .highlighttable .highlight pre,
[data-md-color-scheme="default"] .md-typeset .highlighttable .highlight pre code {
  background-color: #fafaf8;
}

/* Line number gutter background */
[data-md-color-scheme="default"] .md-typeset .highlighttable .linenos {
  background-color: #f0f0ee;
}

/* CSS custom properties for light theme */
[data-md-color-scheme="default"] {
  --md-code-fg-color: #2a2a2e;
  --md-code-bg-color: #fafaf8;
  --md-code-hl-color: rgba(0, 0, 0, 0.04);
  
  /* Token colors - WCAG AA compliant on light background
     All colors tested for 4.5:1+ contrast ratio on #fafaf8 */
  --md-code-hl-number-color: #6847a3;      /* Purple: 5.3:1 */
  --md-code-hl-special-color: #6847a3;
  --md-code-hl-function-color: #357535;    /* Green: 5.0:1 */
  --md-code-hl-constant-color: #6847a3;
  --md-code-hl-keyword-color: #b82554;     /* Pink: 5.5:1 */
  --md-code-hl-string-color: #8a5c00;      /* Gold: 5.0:1 */
  --md-code-hl-name-color: #266b7a;        /* Cyan: 5.5:1 */
  --md-code-hl-operator-color: #b82554;
  --md-code-hl-punctuation-color: #5f5e5e; /* Gray: 5.6:1 */
  --md-code-hl-comment-color: #5f5e5e;
  --md-code-hl-generic-color: #2a2a2e;
  --md-code-hl-variable-color: #9c4719;    /* Orange: 4.8:1 */
}

/* Light theme token overrides */
[data-md-color-scheme="default"] .highlight .c,
[data-md-color-scheme="default"] .highlight .c1,
[data-md-color-scheme="default"] .highlight .ch,
[data-md-color-scheme="default"] .highlight .cm,
[data-md-color-scheme="default"] .highlight .cp,
[data-md-color-scheme="default"] .highlight .cpf,
[data-md-color-scheme="default"] .highlight .cs {
  color: #5f5e5e;
  font-style: italic;
}

[data-md-color-scheme="default"] .highlight .k,
[data-md-color-scheme="default"] .highlight .kc,
[data-md-color-scheme="default"] .highlight .kd,
[data-md-color-scheme="default"] .highlight .kn,
[data-md-color-scheme="default"] .highlight .kp,
[data-md-color-scheme="default"] .highlight .kr,
[data-md-color-scheme="default"] .highlight .kt {
  color: #b82554;
}

[data-md-color-scheme="default"] .highlight .s,
[data-md-color-scheme="default"] .highlight .s1,
[data-md-color-scheme="default"] .highlight .s2,
[data-md-color-scheme="default"] .highlight .sa,
[data-md-color-scheme="default"] .highlight .sb,
[data-md-color-scheme="default"] .highlight .sc,
[data-md-color-scheme="default"] .highlight .sd,
[data-md-color-scheme="default"] .highlight .se,
[data-md-color-scheme="default"] .highlight .sh,
[data-md-color-scheme="default"] .highlight .si,
[data-md-color-scheme="default"] .highlight .sr,
[data-md-color-scheme="default"] .highlight .ss,
[data-md-color-scheme="default"] .highlight .sx {
  color: #8a5c00;
}

[data-md-color-scheme="default"] .highlight .m,
[data-md-color-scheme="default"] .highlight .mb,
[data-md-color-scheme="default"] .highlight .mf,
[data-md-color-scheme="default"] .highlight .mh,
[data-md-color-scheme="default"] .highlight .mi,
[data-md-color-scheme="default"] .highlight .mo,
[data-md-color-scheme="default"] .highlight .il {
  color: #6847a3;
}

[data-md-color-scheme="default"] .highlight .nf,
[data-md-color-scheme="default"] .highlight .fm {
  color: #357535;
}

[data-md-color-scheme="default"] .highlight .nc,
[data-md-color-scheme="default"] .highlight .nn,
[data-md-color-scheme="default"] .highlight .ne {
  color: #266b7a;
  font-style: italic;
}

[data-md-color-scheme="default"] .highlight .nb,
[data-md-color-scheme="default"] .highlight .nx {
  color: #266b7a;
}

[data-md-color-scheme="default"] .highlight .o,
[data-md-color-scheme="default"] .highlight .ow {
  color: #b82554;
}

[data-md-color-scheme="default"] .highlight .n,
[data-md-color-scheme="default"] .highlight .na {
  color: #2a2a2e;
}

[data-md-color-scheme="default"] .highlight .nv,
[data-md-color-scheme="default"] .highlight .vc,
[data-md-color-scheme="default"] .highlight .vg,
[data-md-color-scheme="default"] .highlight .vi {
  color: #9c4719;
}

[data-md-color-scheme="default"] .highlight .nd {
  color: #266b7a;
}

[data-md-color-scheme="default"] .highlight .no,
[data-md-color-scheme="default"] .highlight .bp {
  color: #6847a3;
}

[data-md-color-scheme="default"] .highlight .p {
  color: #5f5e5e;
}

[data-md-color-scheme="default"] .highlight .gd {
  color: #b82554;
}

[data-md-color-scheme="default"] .highlight .gi {
  color: #357535;
}


/* -----------------------------------------------------------------------------
   Inline Code Styling
   ----------------------------------------------------------------------------- */

[data-md-color-scheme="slate"] .md-typeset :not(pre) > code {
  background-color: #3a3740;
  color: #fcfcfa;
}

[data-md-color-scheme="default"] .md-typeset :not(pre) > code {
  background-color: #f0f0ee;
  color: #2a2a2e;
}