/* Code blocks: a calm dark theme (palette inspired by Tokyo Night, MIT),
   a header with the language / file name and a copy button (code-blocks.js),
   plus refreshed inline code. Loaded after prism.css, so it wins. */
:root {
  --cb-bg: #161823;
  --cb-bar: #1d2030;
  --cb-border: #2a2e42;
  --cb-text: #dde1f3;
  --cb-muted: #7c83a0;
  --cb-comment: #7a819c;
  --cb-keyword: #c79bf2;
  --cb-string: #a6d189;
  --cb-number: #ffa066;
  --cb-function: #82aaff;
  --cb-class: #f2cc81;
  --cb-builtin: #6fd3e8;
  --cb-operator: #89ddff;
  --cb-punct: #a4abc8;
  --cb-decorator: #f7768e;
  --cb-font: "JetBrains Mono", "Fira Code", ui-monospace, SFMono-Regular, Consolas, Menlo, monospace;
}

/* ---------- the block ---------- */
.cb-block {
  position: relative;
  margin: 1.4em 0 1.6em;
  border-radius: 14px;
  background: var(--cb-bg);
  border: 1px solid var(--cb-border);
  box-shadow: 0 1px 2px rgba(16, 18, 30, .08), 0 12px 32px -12px rgba(16, 18, 30, .35);
  overflow: hidden;
}
.cb-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 10px 8px 16px;
  background: var(--cb-bar);
  border-bottom: 1px solid var(--cb-border);
  font: 500 12.5px/1 Inter, system-ui, sans-serif;
  color: var(--cb-muted);
  letter-spacing: .02em;
}
.cb-lang { display: inline-flex; align-items: center; gap: 8px; }
.cb-lang::before {
  content: ""; width: 8px; height: 8px; border-radius: 50%;
  background: var(--cb-dot, #82aaff); box-shadow: 0 0 0 3px color-mix(in srgb, var(--cb-dot, #82aaff) 22%, transparent);
}
.cb-block[data-lang="python"], .cb-block[data-lang="pycon"] { --cb-dot: #ffd343; }
.cb-block[data-lang="bash"], .cb-block[data-lang="shell"] { --cb-dot: #a6d189; }
.cb-block[data-lang="sql"] { --cb-dot: #6fd3e8; }
.cb-block[data-lang="markup"], .cb-block[data-lang="html"] { --cb-dot: #f7768e; }
.cb-file { color: var(--cb-text); font-family: var(--cb-font); font-size: 12.5px; letter-spacing: 0; }
.cb-copy {
  margin-left: auto;
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 10px;
  border: 1px solid transparent; border-radius: 8px;
  background: transparent;
  color: var(--cb-muted);
  font: 500 12.5px/1 Inter, system-ui, sans-serif;
  cursor: pointer;
  transition: color .15s, background .15s, border-color .15s;
}
.cb-copy:hover, .cb-copy:focus-visible { color: var(--cb-text); background: rgba(255, 255, 255, .06); border-color: var(--cb-border); outline: none; }
.cb-copy.cb-done { color: #a6d189; }

/* ---------- the code ---------- */
.cb-block pre[class*="language-"],
pre[class*="language-"].cb-plain {
  margin: 0 !important;
  padding: 16px 18px 18px !important;
  background: transparent !important;
  border: 0;
  border-radius: 0;
  overflow: auto;
  max-height: 72vh;
  scrollbar-width: thin;
  scrollbar-color: #3a3f58 transparent;
}
.cb-block pre::-webkit-scrollbar { height: 10px; width: 10px; }
.cb-block pre::-webkit-scrollbar-thumb { background: #3a3f58; border-radius: 10px; border: 3px solid var(--cb-bg); }
.cb-block pre::-webkit-scrollbar-track { background: transparent; }

.cb-block pre[class*="language-"] > code,
.cb-block code[class*="language-"],
.cb-block pre[class*="language-"] {
  color: var(--cb-text) !important;
  text-shadow: none !important;
  font-family: var(--cb-font) !important;
  font-size: 14px !important;
  line-height: 1.7 !important;
  tab-size: 4;
  font-variant-ligatures: none;
}
.cb-block pre span, .cb-block code span { font-family: var(--cb-font) !important; }
.cb-block pre[class*="language-"] ::selection { background: rgba(130, 170, 255, .28); text-shadow: none; }

/* Prism's own toolbar is replaced by our header */
.cb-block div.code-toolbar > .toolbar { display: none !important; }
.cb-block div.code-toolbar { position: static; }

/* ---------- tokens ---------- */
.cb-block .token.comment, .cb-block .token.prolog, .cb-block .token.doctype, .cb-block .token.cdata { color: var(--cb-comment); font-style: italic; }
.cb-block .token.punctuation { color: var(--cb-punct); }
.cb-block .token.keyword, .cb-block .token.atrule, .cb-block .token.important { color: var(--cb-keyword); }
.cb-block .token.string, .cb-block .token.char, .cb-block .token.attr-value, .cb-block .token.triple-quoted-string,
.cb-block .token.string-interpolation, .cb-block .token.inserted { color: var(--cb-string); }
.cb-block .token.interpolation .token.punctuation, .cb-block .token.format-spec { color: var(--cb-operator); }
.cb-block .token.number, .cb-block .token.boolean, .cb-block .token.constant, .cb-block .token.symbol { color: var(--cb-number); }
.cb-block .token.function, .cb-block .token.function-name { color: var(--cb-function); }
.cb-block .token.class-name { color: var(--cb-class); }
.cb-block .token.builtin, .cb-block .token.property, .cb-block .token.tag { color: var(--cb-builtin); }
.cb-block .token.operator, .cb-block .token.entity, .cb-block .token.url { color: var(--cb-operator); background: none; }
.cb-block .token.decorator, .cb-block .token.annotation, .cb-block .token.variable, .cb-block .token.deleted { color: var(--cb-decorator); }
.cb-block .token.attr-name, .cb-block .token.selector { color: var(--cb-class); }
.cb-block .token.regex { color: var(--cb-number); }
.cb-block .token.bold, .cb-block .token.important { font-weight: 600; }

/* ---------- inline code ---------- */
:not(pre) > code:not([class*="language-"]),
p code, li code, td code {
  font-family: var(--cb-font) !important;
  font-size: .86em;
  padding: .16em .42em;
  border-radius: 6px;
  background: #f1f2f8;
  border: 1px solid #e3e5ef;
  color: #b4235c;
  word-break: break-word;
}
a code { color: inherit; }

@media (max-width: 576px) {
  .cb-block { border-radius: 10px; margin-left: -4px; margin-right: -4px; }
  .cb-block pre[class*="language-"] > code, .cb-block pre[class*="language-"] { font-size: 13px !important; }
}
@media print {
  .cb-block { box-shadow: none; }
  .cb-bar { display: none; }
}
