/*
  code.css for Zero to Data (Nikola)
  - Dark slate background, brand-aligned colors
  - Improved tone separation for blue and teal families
*/

/* === Base === */
pre.code,
.code .codetable,
.highlight pre {
  background: #1E293B; /* slate-800 */
  color: #E2E8F0;      /* slate-200 */
  font-family: 'JetBrains Mono', Menlo, Monaco, Consolas, 'Liberation Mono', monospace;
  border-left: 4px solid #14B8A6; /* teal-500 */
  border-radius: 8px;
  overflow-x: auto;
  font-size: 0.95em;
  line-height: 1.5;
  padding: 1em;
}

pre.code .hll,
.code .codetable .hll,
.highlight pre .hll {
  background-color: #334155; /* highlight line */
}

/* === Comments === */
pre.code .c,
pre.code .ch,
pre.code .cm,
pre.code .cp,
pre.code .cpf,
pre.code .c1,
pre.code .cs,
.highlight pre .c,
.highlight pre .ch,
.highlight pre .cm,
.highlight pre .cp,
.highlight pre .cpf,
.highlight pre .c1,
.highlight pre .cs {
  color: #9CA3AF; /* gray */
  font-style: italic;
}

/* === Errors === */
pre.code .err,
.highlight pre .err {
  color: #EF4444; /* red-500 */
  background: transparent;
}

/* === Keywords === */
/* Control/logic keywords (if, else, return, is, etc.) */
pre.code .k,
pre.code .kp,
pre.code .kr,
pre.code .kt,
.highlight pre .k,
.highlight pre .kp,
.highlight pre .kr,
.highlight pre .kt {
  color: #60A5FA; /* lighter brand blue */
  font-weight: 600;
}

/* Structural keywords (def, class, import, from) */
pre.code .kn,
pre.code .k,
.highlight pre .kn,
.highlight pre .k {
  color: #7C3AED; /* purple */
  font-weight: 700;
}

/* // import, from */
pre.code .kn, .highlight pre .kn { color: #7C3AED; } 

/* Constants (True, False, None) */
pre.code .kc,
.highlight pre .kc {
  color: #38BDF8; /* cyan for clarity */
  font-weight: 600;
}

/* Operator words (and, or, not, is) */
pre.code .ow,
.highlight pre .ow {
  color: #2563EB; /* lighter blue */
  font-weight: 600;
}

/* === Literals: numbers === */
pre.code .l,
pre.code .m,
pre.code .mb,
pre.code .mf,
pre.code .mh,
pre.code .mi,
pre.code .mo,
pre.code .il,
.highlight pre .l,
.highlight pre .m,
.highlight pre .mb,
.highlight pre .mf,
.highlight pre .mh,
.highlight pre .mi,
.highlight pre .mo,
.highlight pre .il {
  color: #EAB308; /* gold */
}

/* === Literals: strings === */
pre.code .s,
pre.code .sa,
pre.code .sb,
pre.code .sc,
pre.code .dl,
pre.code .sd,
pre.code .s2,
pre.code .se,
pre.code .sh,
pre.code .si,
pre.code .sx,
pre.code .sr,
pre.code .s1,
pre.code .ss,
.highlight pre .s,
.highlight pre .sa,
.highlight pre .sb,
.highlight pre .sc,
.highlight pre .dl,
.highlight pre .sd,
.highlight pre .s2,
.highlight pre .se,
.highlight pre .sh,
.highlight pre .si,
.highlight pre .sx,
.highlight pre .sr,
.highlight pre .s1,
.highlight pre .ss {
  color: #F97316; /* orange */
}

/* === Names (identifiers, functions, classes) === */
pre.code .n,
.highlight pre .n {
  color: #E2E8F0; /* default text */
}

pre.code .na,
.highlight pre .na {
  color: #2DD4BF; /* attributes – aqua */
}

pre.code .nb,
.highlight pre .nb {
  color: #31e9d3; /* builtins – mid teal */
}

pre.code .nc,
pre.code .nd,
pre.code .ne,
.highlight pre .nc,
.highlight pre .nd,
.highlight pre .ne {
  color: #22C55E; /* green for classes/decorators/exceptions */
}

pre.code .nf,
.highlight pre .nf {
  color: #0D9488; /* functions – dark teal */
  font-weight: 600;
}

/* === Operators & Punctuation === */
pre.code .o,
.highlight pre .o {
  color: #94A3B8; /* symbol operators – muted gray */
  font-weight: 600;
}

pre.code .p,
.highlight pre .p {
  color: #E2E8F0; /* punctuation – normal light */
}

/* === Diff / version control hints === */
pre.code .gd,
.highlight pre .gd {
  color: #EF4444; /* red */
}

pre.code .gi,
.highlight pre .gi {
  color: #22C55E; /* green */
}

pre.code .go,
.highlight pre .go {
  color: #94A3B8; /* gray */
}

pre.code .gp,
.highlight pre .gp {
  color: #60A5FA; /* lighter blue */
  font-weight: 600;
}
td.linenos,
.codetable td.linenos {
  text-align: right;
  width: 3.5em;
  padding-right: 0.5em;
  background: rgba(148, 163, 184, 0.12); /* subtle slate-gray */
  color: #94A3B8; /* slate-400 for numbers */
}

/* Prevent code wrapping, enable horizontal scroll */
pre.code,
.code .codetable,
.highlight pre {
  white-space: pre;        /* preserve spacing, no wrapping */
  overflow-x: auto;        /* allow horizontal scroll */
  overflow-y: hidden;      /* hide vertical scrollbars */
  -webkit-overflow-scrolling: touch; /* smooth scrolling on iOS */
}