/* CyberTrench Haskell Syntax Highlighting Theme */
/* Designed to match the green/cyan cyberpunk aesthetic */

/* Code block container - default styling */
pre.sourceCode, 
div.sourceCode {
  background: linear-gradient(145deg, #0a0a0a, #1a1a1a);
  border-radius: 10px;
  padding: 1.5rem;
  overflow-x: auto;
  margin: 2rem 0;
}

/* Standalone code blocks get border - apply to pre elements */
pre.sourceCode:not(.code-section pre):not(div[style*="border"] pre) {
  border: 2px solid #00ff88;
  box-shadow: 0 8px 32px rgba(0, 255, 136, 0.2);
}

/* If div.sourceCode is standalone (not inside pre or .code-section), give it border */
div.sourceCode:not(.code-section div):not(div[style*="border"] div):not(pre div):not(pre > div) {
  border: 2px solid #00ff88;
  box-shadow: 0 8px 32px rgba(0, 255, 136, 0.2);
}

/* Remove borders from nested elements - divs inside pre should never have borders */
pre.sourceCode div.sourceCode,
pre div.sourceCode,
pre.sourceCode > div,
pre > div {
  border: none !important;
  box-shadow: none !important;
  background: transparent !important;
}

/* Remove borders from code elements inside pre/div */
pre.sourceCode code,
div.sourceCode code,
pre code,
div code {
  border: none !important;
  box-shadow: none !important;
}

/* Code blocks inside .code-section - remove border, parent has it */
.code-section pre.sourceCode,
.code-section div.sourceCode,
.code-section pre {
  border: none !important;
  box-shadow: none !important;
  margin: 0 !important;
  background: #0a0a0a !important;
}

/* Code blocks inside divs with inline border styles - remove border */
div[style*="border"] pre.sourceCode,
div[style*="border"] div.sourceCode,
div[style*="border"] pre {
  border: none !important;
  box-shadow: none !important;
  background: transparent !important;
  margin: 0 !important;
}

code.sourceCode {
  background: transparent !important;
  color: #e0e0e0;
  font-family: 'Courier New', 'Consolas', 'Monaco', monospace;
  font-size: 0.95em;
  line-height: 1.6;
}

/* Base text color */
code.sourceCode > span {
  color: #e0e0e0;
}

/* Keywords (let, where, do, if, then, else, case, of, etc.) */
code span.kw {
  color: #00ff88 !important;
  font-weight: bold;
}

/* Functions */
code span.fu {
  color: #00c5ff !important;
  font-weight: 600;
}

/* Data types and constructors */
code span.dt {
  color: #8E44AD !important;
  font-weight: 600;
}

/* Operators (->, =>, ::, etc.) */
code span.op {
  color: #ff5e14 !important;
  font-weight: bold;
}

/* Strings */
code span.st {
  color: #f44f4f !important;
}

/* Character literals */
code span.ch {
  color: #f44f4f !important;
}

/* Numbers */
code span.dv,
code span.bn,
code span.fl {
  color: #f67400 !important;
  font-weight: 600;
}

/* Comments */
code span.co {
  color: #7a7c7d !important;
  font-style: italic;
}

/* Language extensions and pragmas */
code span.pp {
  color: #00ff88 !important;
  font-weight: bold;
}

/* Module names */
code span.im {
  color: #00c5ff !important;
}

/* Type variables */
code span.va {
  color: #A8D8B9 !important;
}

/* Constants */
code span.cn {
  color: #27aeae !important;
}

/* Control flow (if, then, else, case, etc.) */
code span.cf {
  color: #00ff88 !important;
  font-weight: bold;
}

/* Attributes/Annotations */
code span.at {
  color: #8E44AD !important;
}

/* Special characters */
code span.sc {
  color: #00c5ff !important;
}

/* Error highlighting */
code span.er {
  color: #da4453 !important;
  background-color: rgba(218, 68, 83, 0.2);
  text-decoration: underline;
}

/* Inline code (not in pre blocks) */
:not(pre) > code {
  background: rgba(0, 255, 136, 0.1) !important;
  color: #00ff88 !important;
  padding: 0.2em 0.4em;
  border-radius: 4px;
  border: 1px solid rgba(0, 255, 136, 0.3);
  font-size: 0.9em;
}

/* Responsive adjustments */
@media screen and (max-width: 768px) {
  pre.sourceCode,
  div.sourceCode {
    padding: 1rem;
    font-size: 0.85em;
  }
}

/* Scrollbar styling for code blocks */
pre.sourceCode::-webkit-scrollbar,
div.sourceCode::-webkit-scrollbar {
  height: 8px;
}

pre.sourceCode::-webkit-scrollbar-track,
div.sourceCode::-webkit-scrollbar-track {
  background: #1a1a1a;
  border-radius: 4px;
}

pre.sourceCode::-webkit-scrollbar-thumb,
div.sourceCode::-webkit-scrollbar-thumb {
  background: #00ff88;
  border-radius: 4px;
}

pre.sourceCode::-webkit-scrollbar-thumb:hover,
div.sourceCode::-webkit-scrollbar-thumb:hover {
  background: #00c5ff;
}

/* ========================================
   YAML/CABAL FILE SYNTAX HIGHLIGHTING
   ======================================== */

/* YAML keys (field names like "name:", "version:", "build-depends:") */
pre.sourceCode.language-yaml code.sourceCode span.kw,
div.sourceCode.language-yaml code.sourceCode span.kw {
  color: #00ff88 !important;
  font-weight: bold;
}

/* YAML string values */
pre.sourceCode.language-yaml code.sourceCode span.st,
div.sourceCode.language-yaml code.sourceCode span.st {
  color: #f44f4f !important;
}

/* YAML comments */
pre.sourceCode.language-yaml code.sourceCode span.co,
div.sourceCode.language-yaml code.sourceCode span.co {
  color: #7a7c7d !important;
  font-style: italic;
}

/* YAML operators (>=, <, &&, etc.) */
pre.sourceCode.language-yaml code.sourceCode span.op,
div.sourceCode.language-yaml code.sourceCode span.op {
  color: #ff5e14 !important;
  font-weight: bold;
}

/* YAML numbers/versions */
pre.sourceCode.language-yaml code.sourceCode span.dv,
pre.sourceCode.language-yaml code.sourceCode span.bn,
div.sourceCode.language-yaml code.sourceCode span.dv,
div.sourceCode.language-yaml code.sourceCode span.bn {
  color: #f67400 !important;
}

/* YAML attribute names (like "cabal-version", "name", etc.) */
pre.sourceCode.language-yaml code.sourceCode span.at,
div.sourceCode.language-yaml code.sourceCode span.at {
  color: #00c5ff !important;
}

/* YAML base text color */
pre.sourceCode.language-yaml code.sourceCode,
div.sourceCode.language-yaml code.sourceCode {
  color: #e0e0e0;
}

/* ========================================
   DIRECTORY TREE SYNTAX HIGHLIGHTING
   (For file structures, directory trees, etc.)
   ======================================== */

/* Directory tree container */
pre.directory-tree {
  background: linear-gradient(145deg, #0a0a0a, #1a1a1a);
  border-radius: 10px;
  padding: 1.5rem;
  overflow-x: auto;
  margin: 2rem 0;
  color: #e0e0e0;
  font-family: 'Courier New', 'Consolas', 'Monaco', monospace;
  font-size: 0.95em;
  line-height: 1.6;
}

/* Directory tree inside .code-section - no border, parent has it */
.code-section pre.directory-tree {
  border: none !important;
  box-shadow: none !important;
  margin: 0 !important;
  background: #0a0a0a !important;
}

/* Standalone directory tree gets border */
pre.directory-tree:not(.code-section pre) {
  border: 2px solid #00ff88;
  box-shadow: 0 8px 32px rgba(0, 255, 136, 0.2);
}

pre.directory-tree code {
  background: transparent;
  color: inherit;
  padding: 0;
  border: none;
}

/* Directory tree characters (├──, └──, │) - styled via inline spans */
pre.directory-tree .tree-char {
  color: #00ff88 !important;
  font-weight: bold;
}

/* File and directory names */
pre.directory-tree .file-name {
  color: #00c5ff !important;
}

pre.directory-tree .dir-name {
  color: #8E44AD !important;
  font-weight: 600;
}

/* Comments in directory trees */
pre.directory-tree .comment,
pre.directory-tree span.comment {
  color: #7a7c7d !important;
  font-style: italic;
}

/* File extensions */
pre.directory-tree .file-ext {
  color: #f67400 !important;
}

