/* Pygments Syntax Highlighting Styles */

/* Light mode syntax highlighting (GitHub style) */
:root:not(.dark) .codehilite {
  background: #f6f8fa;
  color: #24292e;
}

:root:not(.dark) .codehilite .c {
  color: #6a737d;
  font-style: italic
}

/* Comment */
:root:not(.dark) .codehilite .k {
  color: #d73a49;
  font-weight: bold
}

/* Keyword */
:root:not(.dark) .codehilite .o {
  color: #d73a49
}

/* Operator */
:root:not(.dark) .codehilite .cm {
  color: #6a737d;
  font-style: italic
}

/* Comment.Multiline */
:root:not(.dark) .codehilite .cp {
  color: #d73a49;
  font-weight: bold
}

/* Comment.Preproc */
:root:not(.dark) .codehilite .c1 {
  color: #6a737d;
  font-style: italic
}

/* Comment.Single */
:root:not(.dark) .codehilite .cs {
  color: #6a737d;
  font-weight: bold;
  font-style: italic
}

/* Comment.Special */
:root:not(.dark) .codehilite .gd {
  color: #b31d28;
}

/* Generic.Deleted */
:root:not(.dark) .codehilite .ge {
  font-style: italic
}

/* Generic.Emph */
:root:not(.dark) .codehilite .gr {
  color: #b31d28
}

/* Generic.Error */
:root:not(.dark) .codehilite .gh {
  color: #005cc5;
  font-weight: bold
}

/* Generic.Heading */
:root:not(.dark) .codehilite .gi {
  color: #22863a;
}

/* Generic.Inserted */
:root:not(.dark) .codehilite .go {
  color: #6a737d
}

/* Generic.Output */
:root:not(.dark) .codehilite .gp {
  color: #005cc5
}

/* Generic.Prompt */
:root:not(.dark) .codehilite .gs {
  font-weight: bold
}

/* Generic.Strong */
:root:not(.dark) .codehilite .gu {
  color: #6f42c1;
  font-weight: bold
}

/* Generic.Subheading */
:root:not(.dark) .codehilite .gt {
  color: #0044DD
}

/* Generic.Traceback */
:root:not(.dark) .codehilite .kc {
  color: #005cc5
}

/* Keyword.Constant */
:root:not(.dark) .codehilite .kd {
  color: #d73a49
}

/* Keyword.Declaration */
:root:not(.dark) .codehilite .kn {
  color: #d73a49
}

/* Keyword.Namespace */
:root:not(.dark) .codehilite .kp {
  color: #d73a49
}

/* Keyword.Pseudo */
:root:not(.dark) .codehilite .kr {
  color: #d73a49
}

/* Keyword.Reserved */
:root:not(.dark) .codehilite .kt {
  color: #d73a49
}

/* Keyword.Type */
:root:not(.dark) .codehilite .m {
  color: #005cc5
}

/* Literal.Number */
:root:not(.dark) .codehilite .s {
  color: #032f62
}

/* Literal.String */
:root:not(.dark) .codehilite .na {
  color: #005cc5
}

/* Name.Attribute */
:root:not(.dark) .codehilite .nb {
  color: #005cc5
}

/* Name.Builtin */
:root:not(.dark) .codehilite .nc {
  color: #6f42c1
}

/* Name.Class */
:root:not(.dark) .codehilite .no {
  color: #005cc5
}

/* Name.Constant */
:root:not(.dark) .codehilite .nd {
  color: #6f42c1
}

/* Name.Decorator */
:root:not(.dark) .codehilite .ni {
  color: #005cc5
}

/* Name.Entity */
:root:not(.dark) .codehilite .ne {
  color: #005cc5
}

/* Name.Exception */
:root:not(.dark) .codehilite .nf {
  color: #6f42c1
}

/* Name.Function */
:root:not(.dark) .codehilite .nl {
  color: #005cc5
}

/* Name.Label */
:root:not(.dark) .codehilite .nn {
  color: #6f42c1
}

/* Name.Namespace */
:root:not(.dark) .codehilite .nt {
  color: #22863a
}

/* Name.Tag */
:root:not(.dark) .codehilite .nv {
  color: #e36209
}

/* Name.Variable */
:root:not(.dark) .codehilite .ow {
  color: #d73a49;
  font-weight: bold
}

/* Operator.Word */
:root:not(.dark) .codehilite .w {
  color: #24292e
}

/* Text.Whitespace */
:root:not(.dark) .codehilite .mb {
  color: #005cc5
}

/* Literal.Number.Bin */
:root:not(.dark) .codehilite .mf {
  color: #005cc5
}

/* Literal.Number.Float */
:root:not(.dark) .codehilite .mh {
  color: #005cc5
}

/* Literal.Number.Hex */
:root:not(.dark) .codehilite .mi {
  color: #005cc5
}

/* Literal.Number.Integer */
:root:not(.dark) .codehilite .mo {
  color: #005cc5
}

/* Literal.Number.Oct */
:root:not(.dark) .codehilite .sa {
  color: #d73a49
}

/* Literal.String.Affix */
:root:not(.dark) .codehilite .sb {
  color: #032f62
}

/* Literal.String.Backtick */
:root:not(.dark) .codehilite .sc {
  color: #032f62
}

/* Literal.String.Char */
:root:not(.dark) .codehilite .dl {
  color: #d73a49
}

/* Literal.String.Delimiter */
:root:not(.dark) .codehilite .sd {
  color: #032f62
}

/* Literal.String.Doc */
:root:not(.dark) .codehilite .s2 {
  color: #032f62
}

/* Literal.String.Double */
:root:not(.dark) .codehilite .se {
  color: #032f62
}

/* Literal.String.Escape */
:root:not(.dark) .codehilite .sh {
  color: #032f62
}

/* Literal.String.Heredoc */
:root:not(.dark) .codehilite .si {
  color: #005cc5
}

/* Literal.String.Interpol */
:root:not(.dark) .codehilite .sx {
  color: #032f62
}

/* Literal.String.Other */
:root:not(.dark) .codehilite .sr {
  color: #032f62
}

/* Literal.String.Regex */
:root:not(.dark) .codehilite .s1 {
  color: #032f62
}

/* Literal.String.Single */
:root:not(.dark) .codehilite .ss {
  color: #005cc5
}

/* Literal.String.Symbol */
:root:not(.dark) .codehilite .bp {
  color: #005cc5
}

/* Name.Builtin.Pseudo */
:root:not(.dark) .codehilite .fm {
  color: #6f42c1
}

/* Name.Function.Magic */
:root:not(.dark) .codehilite .vc {
  color: #e36209
}

/* Name.Variable.Class */
:root:not(.dark) .codehilite .vg {
  color: #e36209
}

/* Name.Variable.Global */
:root:not(.dark) .codehilite .vi {
  color: #e36209
}

/* Name.Variable.Instance */
:root:not(.dark) .codehilite .vm {
  color: #e36209
}

/* Name.Variable.Magic */
:root:not(.dark) .codehilite .il {
  color: #005cc5
}

/* Literal.Number.Integer.Long */

/* Dark mode syntax highlighting (GitHub Dark style) */
.dark .codehilite {
  background: #ff0000 !important;
  color: #c9d1d9;
}

.dark .codehilite .c {
  color: #8b949e
}

/* Comment */
.dark .codehilite .k {
  color: #ff7b72;
  font-weight: bold
}

/* Keyword */
.dark .codehilite .o {
  color: #ff7b72
}

/* Operator */
.dark .codehilite .cm {
  color: #8b949e
}

/* Comment.Multiline */
.dark .codehilite .cp {
  color: #ff7b72;
  font-weight: bold
}

/* Comment.Preproc */
.dark .codehilite .c1 {
  color: #8b949e
}

/* Comment.Single */
.dark .codehilite .cs {
  color: #8b949e;
  font-weight: bold
}

/* Comment.Special */
.dark .codehilite .gd {
  color: #ffa198;
}

/* Generic.Deleted */
.dark .codehilite .ge {
  font-style: italic
}

/* Generic.Emph */
.dark .codehilite .gr {
  color: #ffa198
}

/* Generic.Error */
.dark .codehilite .gh {
  color: #79c0ff;
  font-weight: bold
}

/* Generic.Heading */
.dark .codehilite .gi {
  color: #56d364;
}

/* Generic.Inserted */
.dark .codehilite .go {
  color: #8b949e
}

/* Generic.Output */
.dark .codehilite .gp {
  color: #79c0ff
}

/* Generic.Prompt */
.dark .codehilite .gs {
  font-weight: bold
}

/* Generic.Strong */
.dark .codehilite .gu {
  color: #d2a8ff;
  font-weight: bold
}

/* Generic.Subheading */
.dark .codehilite .gt {
  color: #58A6FF
}

/* Generic.Traceback */
.dark .codehilite .kc {
  color: #79c0ff
}

/* Keyword.Constant */
.dark .codehilite .kd {
  color: #ff7b72
}

/* Keyword.Declaration */
.dark .codehilite .kn {
  color: #ff7b72
}

/* Keyword.Namespace */
.dark .codehilite .kp {
  color: #ff7b72
}

/* Keyword.Pseudo */
.dark .codehilite .kr {
  color: #ff7b72
}

/* Keyword.Reserved */
.dark .codehilite .kt {
  color: #ff7b72
}

/* Keyword.Type */
.dark .codehilite .m {
  color: #79c0ff
}

/* Literal.Number */
.dark .codehilite .s {
  color: #a5d6ff
}

/* Literal.String */
.dark .codehilite .na {
  color: #79c0ff
}

/* Name.Attribute */
.dark .codehilite .nb {
  color: #79c0ff
}

/* Name.Builtin */
.dark .codehilite .nc {
  color: #d2a8ff
}

/* Name.Class */
.dark .codehilite .no {
  color: #79c0ff
}

/* Name.Constant */
.dark .codehilite .nd {
  color: #d2a8ff
}

/* Name.Decorator */
.dark .codehilite .ni {
  color: #79c0ff
}

/* Name.Entity */
.dark .codehilite .ne {
  color: #79c0ff
}

/* Name.Exception */
.dark .codehilite .nf {
  color: #d2a8ff
}

/* Name.Function */
.dark .codehilite .nl {
  color: #79c0ff
}

/* Name.Label */
.dark .codehilite .nn {
  color: #d2a8ff
}

/* Name.Namespace */
.dark .codehilite .nt {
  color: #7ee787
}

/* Name.Tag */
.dark .codehilite .nv {
  color: #ffa657
}

/* Name.Variable */
.dark .codehilite .ow {
  color: #ff7b72;
  font-weight: bold
}

/* Operator.Word */
.dark .codehilite .w {
  color: #c9d1d9
}

/* Text.Whitespace */
.dark .codehilite .mb {
  color: #79c0ff
}

/* Literal.Number.Bin */
.dark .codehilite .mf {
  color: #79c0ff
}

/* Literal.Number.Float */
.dark .codehilite .mh {
  color: #79c0ff
}

/* Literal.Number.Hex */
.dark .codehilite .mi {
  color: #79c0ff
}

/* Literal.Number.Integer */
.dark .codehilite .mo {
  color: #79c0ff
}

/* Literal.Number.Oct */
.dark .codehilite .sa {
  color: #ff7b72
}

/* Literal.String.Affix */
.dark .codehilite .sb {
  color: #a5d6ff
}

/* Literal.String.Backtick */
.dark .codehilite .sc {
  color: #a5d6ff
}

/* Literal.String.Char */
.dark .codehilite .dl {
  color: #ff7b72
}

/* Literal.String.Delimiter */
.dark .codehilite .sd {
  color: #a5d6ff
}

/* Literal.String.Doc */
.dark .codehilite .s2 {
  color: #a5d6ff
}

/* Literal.String.Double */
.dark .codehilite .se {
  color: #a5d6ff
}

/* Literal.String.Escape */
.dark .codehilite .sh {
  color: #a5d6ff
}

/* Literal.String.Heredoc */
.dark .codehilite .si {
  color: #79c0ff
}

/* Literal.String.Interpol */
.dark .codehilite .sx {
  color: #a5d6ff
}

/* Literal.String.Other */
.dark .codehilite .sr {
  color: #a5d6ff
}

/* Literal.String.Regex */
.dark .codehilite .s1 {
  color: #a5d6ff
}

/* Literal.String.Single */
.dark .codehilite .ss {
  color: #79c0ff
}

/* Literal.String.Symbol */
.dark .codehilite .bp {
  color: #79c0ff
}

/* Name.Builtin.Pseudo */
.dark .codehilite .fm {
  color: #d2a8ff
}

/* Name.Function.Magic */
.dark .codehilite .vc {
  color: #ffa657
}

/* Name.Variable.Class */
.dark .codehilite .vg {
  color: #ffa657
}

/* Name.Variable.Global */
.dark .codehilite .vi {
  color: #ffa657
}

/* Name.Variable.Instance */
.dark .codehilite .vm {
  color: #ffa657
}

/* Name.Variable.Magic */
.dark .codehilite .il {
  color: #79c0ff
}

/* Literal.Number.Integer.Long */

/* Code block container styling (for simple code blocks without tables) */
.codehilite {
  border-radius: 0.5rem;
  overflow: auto;
  margin: 1.5rem 0 !important;
  font-family: 'Fira Code', 'JetBrains Mono', 'Source Code Pro', 'Consolas', 'Monaco', monospace;
  position: relative;
  background: #f6f8fa;
}

.dark .codehilite {
  background: #1e293b;
}

/* Pre element inside simple codehilite */
.codehilite>pre {
  margin: 0 !important;
  padding: 1rem !important;
  padding-top: 2.5rem !important;
  overflow-x: visible !important;
  white-space: pre !important;
  word-wrap: normal !important;
}

/* When codehilite wraps a table - give it code area background so button appears inside */
.codehilite:has(> .codehilitetable) {
  background: #ffffff !important;
  /* Match code content background */
  padding: 0 !important;
  margin: 1.5rem 0 !important;
  border-radius: 0.5rem;
}

.dark .codehilite:has(> .codehilitetable) {
  background: rgba(42, 61, 85, 0.87) !important;
  /* Match dark mode code content */
}


/* Table layout for code with line numbers */
.codehilitetable {
  position: relative;
  width: 100%;
  border-collapse: collapse;
  border-spacing: 0;
  margin: 0 !important;
  border-radius: 0.5rem;
  display: table;
  font-family: 'Fira Code', 'JetBrains Mono', 'Source Code Pro', 'Consolas', 'Monaco', monospace;
  background: #f6f8fa;
}

.dark .codehilitetable {
  background: #1e293b;
}

.codehilitetable tbody {
  display: table-row-group;
}

.codehilitetable tr {
  display: table-row;
}

.codehilitetable td {
  margin: 0;
  padding: 0;
  border: none;
  display: table-cell;
}

/* Line numbers column */
.codehilitetable .linenos {
  background: rgba(0, 0, 0, 0.03) !important;
  padding: 1rem 0.75rem;
  padding-top: 2.5rem;
  text-align: right;
  user-select: none;
  vertical-align: top;
  width: 1%;
  white-space: nowrap;
  font-family: 'Fira Code', 'JetBrains Mono', 'Source Code Pro', 'Consolas', 'Monaco', monospace;
  border-top-left-radius: 0.5rem;
  border-bottom-left-radius: 0.5rem;
}

.dark .codehilitetable .linenos {
  background: rgba(255, 255, 255, 0.05) !important;
}

.codehilitetable .linenos .linenodiv {
  padding: 0;
  margin: 0;
}

.codehilitetable .linenos .linenodiv pre {
  margin: 0;
  padding: 0;
  color: #6a737d;
  line-height: 1.5;
  font-size: 0.875rem;
  font-family: inherit;
}

.dark .codehilitetable .linenos .linenodiv pre {
  color: #8b949e;
}

/* Code content column */
.codehilitetable .code {
  background: #ffffff !important;
  padding: 1rem;
  padding-top: 2.5rem;
  padding-right: 3.5rem;
  width: 1px;
  max-width: 100%;
  vertical-align: top;
  font-family: 'Fira Code', 'JetBrains Mono', 'Source Code Pro', 'Consolas', 'Monaco', monospace;
  border-top-right-radius: 0.5rem;
  border-bottom-right-radius: 0.5rem;
}

.dark .codehilitetable .code {
  background: rgba(42, 61, 85, 0.87) !important;
}

.codehilitetable .code div {
  margin: 0 !important;
  padding: 0 !important;
  overflow-x: auto !important;
  overflow-y: hidden !important;
  max-width: 100% !important;
  display: block !important;
  -webkit-overflow-scrolling: touch;
}

.codehilitetable .code pre {
  margin: 0 !important;
  padding: 0 !important;
  line-height: 1.5;
  font-size: 0.875rem;
  white-space: pre !important;
  word-wrap: normal !important;
  overflow-wrap: normal !important;
  font-family: inherit;
}

/* Override prose styles for inner elements but preserve container backgrounds */
.prose .codehilite pre,
.prose .codehilite code,
.prose .codehilitetable pre,
.prose .codehilitetable code,
.dark .prose .codehilite pre,
.dark .prose .codehilite code,
.dark .prose .codehilitetable pre,
.dark .prose .codehilitetable code {
  background-color: transparent !important;
  color: inherit !important;
  padding: 0 !important;
  margin: 0 !important;
  border-radius: 0 !important;
  font-weight: inherit !important;
  font-family: 'Fira Code', 'JetBrains Mono', 'Source Code Pro', 'Consolas', 'Monaco', monospace !important;
}

/* Ensure containers maintain their backgrounds and spacing */
.prose .codehilite {
  position: relative !important;
  background-color: #f6f8fa !important;
  padding: 0 !important;
  margin: 1.5rem 0 !important;
}

.dark .prose .codehilite {
  position: relative !important;
  background-color: #1e293b !important;
  margin: 1.5rem 0 !important;
}

/* When codehilite contains table, remove wrapper background */
.prose .codehilite:has(> .codehilitetable) {
  background-color: transparent !important;
}

.dark .prose .codehilite:has(> .codehilitetable) {
  background-color: transparent !important;
}

/* Table maintains its own background */
.prose .codehilitetable {
  position: relative !important;
  background-color: #ffffff !important;
  margin: 0 !important;
}

.dark .prose .codehilitetable {
  position: relative !important;
  background-color: #151b23 !important;
  margin: 0 !important;
}

/* Ensure prose doesn't add backgrounds or colors to inline code elements inside code blocks */
.codehilite code,
.codehilite pre code,
.dark .codehilite code,
.dark .codehilite pre code {
  background-color: transparent !important;
  color: inherit !important;
  padding: 0 !important;
  border: none !important;
  font-size: inherit !important;
  font-weight: inherit !important;
  font-family: inherit !important;
}

/* Copy button wrapper - positioned at top-right of code block container */
.copy-button-wrapper {
  position: absolute;
  top: 1.2rem;
  right: 1rem;
  width: auto;
  height: auto;
  pointer-events: none;
  z-index: 20;
}

/* Copy button styling */
.copy-code-button,
.codehilite .copy-code-button,
.codehilitetable .copy-code-button,
pre .copy-code-button {
  position: relative !important;
  padding: 0.375rem 0.5rem !important;
  height: 1.75rem !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 0.25rem !important;
  background-color: rgba(55, 65, 81, 0.95) !important;
  color: #d1d5db !important;
  border-radius: 0.375rem !important;
  opacity: 1 !important;
  z-index: 20 !important;
  font-size: 0.75rem !important;
  font-weight: 500 !important;
  font-family: 'Inter', sans-serif !important;
  transition: background-color 0.2s ease !important;
  cursor: pointer !important;
  border: none !important;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2) !important;
  pointer-events: auto !important;
}

.copy-code-button:hover,
.codehilitetable .code .copy-code-button:hover,
pre .copy-code-button:hover {
  background-color: rgba(75, 85, 99, 0.95) !important;
}

.dark .copy-code-button,
.dark .codehilitetable .code .copy-code-button,
.dark pre .copy-code-button {
  background-color: rgba(75, 85, 99, 0.9) !important;
}

.dark .copy-code-button:hover,
.dark .codehilitetable .code .copy-code-button:hover,
.dark pre .copy-code-button:hover {
  background-color: rgba(107, 114, 128, 0.95) !important;
}

.copy-code-button svg,
.codehilitetable .code .copy-code-button svg,
pre .copy-code-button svg {
  width: 0.875rem !important;
  height: 0.875rem !important;
  flex-shrink: 0 !important;
}

/* Remove highlighted line background (was causing random colors) */
.codehilite .hll,
.codehilite pre .hll,
.codehilite code .hll,
:root:not(.dark) .codehilite .hll,
.dark .codehilite .hll {
  background-color: transparent !important;
}

/* Ensure no background colors on any span elements inside code blocks */
.codehilite span,
.codehilite pre span,
.codehilite code span {
  background-color: transparent !important;
}