/* PrismJS Enhanced Theme - Matches Tutorial Design */
/* Optimized for .NET/C# code highlighting */

/**
 * Base Code Block Styles
 */
code[class*="language-"],
pre[class*="language-"] {
  color: #2e3440;
  background: none;
  font-family: 'JetBrains Mono', 'Cascadia Code', 'Consolas', 'Monaco', 'Courier New', monospace;
  font-size: 0.9375rem;
  text-align: left;
  white-space: pre;
  word-spacing: normal;
  word-break: normal;
  word-wrap: normal;
  line-height: 1.7;
  tab-size: 2;
  hyphens: none;
  font-variant-ligatures: contextual;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* Code blocks */
pre[class*="language-"] {
  padding: 1.5rem;
  margin: 0;
  overflow: auto;
  background: linear-gradient(135deg, #f8f9fc 0%, #f1f3f8 100%);
  border-radius: 0 1rem 1rem 1rem;
  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.04);
  position: relative;
}

pre[class*="language-"]::-webkit-scrollbar {
  height: 10px;
  width: 10px;
}

pre[class*="language-"]::-webkit-scrollbar-track {
  background: rgba(0, 0, 0, 0.05);
  border-radius: 5px;
}

pre[class*="language-"]::-webkit-scrollbar-thumb {
  background: linear-gradient(135deg, #5a3ae6 0%, #06b6d4 100%);
  border-radius: 5px;
}

pre[class*="language-"]::-webkit-scrollbar-thumb:hover {
  background: linear-gradient(135deg, #4c2fc7 0%, #0891b2 100%);
}

/* Inline code */
:not(pre) > code[class*="language-"] {
  padding: 0.2em 0.4em;
  border-radius: 0.375rem;
  background: linear-gradient(135deg, rgba(90, 58, 230, 0.1) 0%, rgba(6, 182, 212, 0.1) 100%);
  white-space: normal;
  font-size: 0.875em;
  color: #5a3ae6;
  font-weight: 500;
  border: 1px solid rgba(90, 58, 230, 0.2);
}

/* Selection */
pre[class*="language-"]::-moz-selection,
pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection,
code[class*="language-"] ::-moz-selection {
  text-shadow: none;
  background: rgba(90, 58, 230, 0.2);
}

pre[class*="language-"]::selection,
pre[class*="language-"] ::selection,
code[class*="language-"]::selection,
code[class*="language-"] ::selection {
  text-shadow: none;
  background: rgba(90, 58, 230, 0.2);
}

/* Syntax Highlighting Colors */
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
  color: #6c7a89;
  font-style: italic;
}

.token.punctuation {
  color: #4a5568;
}

.token.namespace {
  color: #b294bb;
  opacity: 0.9;
}

.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
  color: #e74c3c;
  font-weight: 500;
}

.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
  color: #16a085;
}

.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
  color: #06b6d4;
  background: none;
}

.token.atrule,
.token.attr-value,
.token.keyword {
  color: #5a3ae6;
  font-weight: 500;
}

.token.function,
.token.class-name {
  color: #3498db;
  font-weight: 500;
}

.token.regex,
.token.important,
.token.variable {
  color: #e67e22;
}

.token.important,
.token.bold {
  font-weight: 700;
}

.token.italic {
  font-style: italic;
}

.token.entity {
  cursor: help;
}

/* Language-specific improvements */
.language-csharp .token.keyword {
  color: #5a3ae6;
}

.language-csharp .token.class-name {
  color: #06b6d4;
}

.language-csharp .token.function {
  color: #3498db;
}

.language-xml .token.tag .token.punctuation,
.language-xml .token.tag .token.namespace {
  color: #4a5568;
}

.language-json .token.property {
  color: #5a3ae6;
}

.language-bash .token.function {
  color: #16a085;
}

/* Line Numbers Plugin */
pre[class*="language-"].line-numbers {
  position: relative;
  padding-left: 3.8em;
  counter-reset: linenumber;
}

pre[class*="language-"].line-numbers > code {
  position: relative;
  white-space: inherit;
}

.line-numbers .line-numbers-rows {
  position: absolute;
  pointer-events: none;
  top: 1.5rem;
  left: 0;
  width: 3em;
  letter-spacing: -1px;
  border-right: 2px solid rgba(90, 58, 230, 0.1);
  user-select: none;
}

.line-numbers-rows > span {
  display: block;
  counter-increment: linenumber;
}

.line-numbers-rows > span:before {
  content: counter(linenumber);
  color: #94a3b8;
  display: block;
  padding-right: 0.8em;
  text-align: right;
  font-size: 0.875em;
}

/* Line Highlighting */
pre[data-line] {
  position: relative;
}

.line-highlight {
  position: absolute;
  left: 0;
  right: 0;
  margin-top: 1.5rem;
  background: linear-gradient(90deg, rgba(90, 58, 230, 0.1) 0%, rgba(6, 182, 212, 0.05) 100%);
  border-left: 3px solid #5a3ae6;
  pointer-events: none;
  line-height: inherit;
  white-space: pre;
}

/* Copy Button Enhancement */
.code-toolbar {
  position: relative;
}

.code-toolbar > .toolbar {
  position: absolute;
  top: 0.75rem;
  right: 0.75rem;
  opacity: 0;
  transition: opacity 0.3s ease, transform 0.3s ease;
  transform: translateY(-2px);
}

.code-toolbar:hover > .toolbar {
  opacity: 1;
  transform: translateY(0);
}

.code-toolbar > .toolbar > .toolbar-item > button {
  background: linear-gradient(135deg, #5a3ae6 0%, #06b6d4 100%);
  color: white;
  border: none;
  border-radius: 0.5rem;
  padding: 0.5rem 1rem;
  font-size: 0.75rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.3s ease;
  box-shadow: 0 2px 8px rgba(90, 58, 230, 0.3);
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.code-toolbar > .toolbar > .toolbar-item > button:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(90, 58, 230, 0.4);
}

.code-toolbar > .toolbar > .toolbar-item > button:active {
  transform: translateY(0);
}

/* Dark Theme Support */
[data-theme="dark"] code[class*="language-"],
[data-theme="dark"] pre[class*="language-"] {
  color: #d8dee9;
}

[data-theme="dark"] pre[class*="language-"] {
  background: linear-gradient(135deg, #1e2433 0%, #252b3b 100%);
  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.2);
}

[data-theme="dark"] :not(pre) > code[class*="language-"] {
  background: linear-gradient(135deg, rgba(90, 58, 230, 0.2) 0%, rgba(6, 182, 212, 0.2) 100%);
  color: #06b6d4;
  border-color: rgba(6, 182, 212, 0.3);
}

[data-theme="dark"] .token.comment {
  color: #616e88;
}

[data-theme="dark"] .token.punctuation {
  color: #94a3b8;
}

[data-theme="dark"] .token.property,
[data-theme="dark"] .token.tag,
[data-theme="dark"] .token.boolean,
[data-theme="dark"] .token.number {
  color: #f87171;
}

[data-theme="dark"] .token.selector,
[data-theme="dark"] .token.attr-name,
[data-theme="dark"] .token.string {
  color: #34d399;
}

[data-theme="dark"] .token.operator,
[data-theme="dark"] .token.entity,
[data-theme="dark"] .token.url {
  color: #38bdf8;
}

[data-theme="dark"] .token.atrule,
[data-theme="dark"] .token.attr-value,
[data-theme="dark"] .token.keyword {
  color: #a78bfa;
}

[data-theme="dark"] .token.function,
[data-theme="dark"] .token.class-name {
  color: #60a5fa;
}

[data-theme="dark"] .token.regex,
[data-theme="dark"] .token.important,
[data-theme="dark"] .token.variable {
  color: #fbbf24;
}

[data-theme="dark"] .line-numbers-rows > span:before {
  color: #475569;
}

[data-theme="dark"] .line-numbers .line-numbers-rows {
  border-right-color: rgba(148, 163, 184, 0.1);
}

/* Animation for code blocks */
@keyframes codeBlockFadeIn {
  from {
    opacity: 0;
    transform: translateY(10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

pre[class*="language-"] {
  animation: codeBlockFadeIn 0.5s ease;
}

/* Diff highlighting */
.token.deleted {
  background-color: rgba(239, 68, 68, 0.1);
  color: #ef4444;
}

.token.inserted {
  background-color: rgba(34, 197, 94, 0.1);
  color: #22c55e;
}

/* Terminal/Console specific styling */
.language-bash,
.language-shell,
.language-terminal {
  position: relative;
}

.language-bash::before,
.language-shell::before,
.language-terminal::before {
  content: '$ ';
  color: #10b981;
  font-weight: 700;
  user-select: none;
}

/* Responsive adjustments */
@media (max-width: 640px) {
  code[class*="language-"],
  pre[class*="language-"] {
    font-size: 0.875rem;
    line-height: 1.6;
  }
  
  pre[class*="language-"] {
    padding: 1rem;
    border-radius: 0 0.75rem 0.75rem 0.75rem;
  }
  
  .code-toolbar > .toolbar > .toolbar-item > button {
    padding: 0.375rem 0.75rem;
    font-size: 0.7rem;
  }
}

/* Print styles */
@media print {
  code[class*="language-"],
  pre[class*="language-"] {
    text-shadow: none;
  }
  
  pre[class*="language-"] {
    background: #f5f5f5;
    border: 1px solid #ddd;
  }
}

/* Smooth scrolling for code blocks */
pre[class*="language-"] {
  scroll-behavior: smooth;
  scrollbar-width: thin;
  scrollbar-color: #5a3ae6 rgba(0, 0, 0, 0.05);
}

/* Focus styles for accessibility */
pre[class*="language-"]:focus {
  outline: 3px solid rgba(90, 58, 230, 0.5);
  outline-offset: 2px;
}