/* ===================================
   Code Syntax Highlighting (Prism.js Theme)
   Extracted from attack-class.html
   Last updated: February 2, 2026
   Premium Cyberpunk/Cybersecurity Aesthetic
   =================================== */

/* Line numbers styling */
.line-numbers .line-numbers-rows {
    border-right: 1px solid rgba(6, 182, 212, 0.15);
    background: linear-gradient(to right, rgba(0, 0, 0, 0.3), transparent);
}

.line-numbers-rows > span:before {
    color: rgba(6, 182, 212, 0.4);
    font-family: var(--attack-font-mono);
    font-size: 0.8em;
}

/* Prism syntax highlighting colors - Premium cyberpunk palette */
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
    color: #6272a4;
    font-style: italic;
}

.token.punctuation {
    color: #f8f8f2;
    opacity: 0.8;
}

.token.namespace {
    opacity: 0.7;
}

.token.property,
.token.tag,
.token.constant,
.token.symbol,
.token.deleted {
    color: #ff79c6;
}

.token.boolean,
.token.number {
    color: #bd93f9;
    font-weight: 600;
}

.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
    color: #50fa7b;
}

.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string,
.token.variable {
    color: #f8f8f2;
}

.token.atrule,
.token.attr-value,
.token.function,
.token.class-name {
    color: #22d3ee;
    font-weight: 600;
    text-shadow: 0 0 8px rgba(34, 211, 238, 0.3);
}

.token.keyword {
    color: #8b5cf6;
    font-weight: 700;
    text-shadow: 0 0 8px rgba(139, 92, 246, 0.25);
}

.token.regex,
.token.important {
    color: #ffb86c;
    font-weight: 600;
}

.token.important,
.token.bold {
    font-weight: bold;
}

.token.italic {
    font-style: italic;
}

.token.entity {
    cursor: help;
}

/* Enhanced code block with line numbers */
pre.line-numbers {
    position: relative !important;
    padding-left: 1.2em !important;
    counter-reset: linenumber !important;
}

pre.line-numbers > code {
    position: relative;
    white-space: inherit;
    padding-left: 0 !important;
}

.line-numbers .line-numbers-rows {
    position: absolute;
    pointer-events: none;
    top: 3rem;
    font-size: 100%;
    left: -3.2em;
    width: 2.6em;
    letter-spacing: -1px;
    user-select: none;
}

.line-numbers-rows > span {
    display: block;
    counter-increment: linenumber;
}

.line-numbers-rows > span:before {
    content: counter(linenumber);
    display: block;
    padding-right: 0.8em;
    text-align: right;
}

/* Highlight specific lines effect */
.line-highlight {
    background: rgba(6, 182, 212, 0.08);
    background: linear-gradient(to right,
        rgba(6, 182, 212, 0.12) 70%,
        rgba(6, 182, 212, 0) 100%);
    position: absolute;
    left: 0;
    right: 0;
    margin-top: 3rem;
    pointer-events: none;
    white-space: pre;
    line-height: inherit;
}

/* Solidity-specific token enhancements */
.language-solidity .token.keyword.module,
.language-solidity .token.keyword.control {
    color: #ff79c6;
}

.language-solidity .token.type-definition {
    color: #50fa7b;
    font-weight: 600;
}

.language-solidity .token.address,
.language-solidity .token.payable {
    color: #ffb86c;
    font-weight: 600;
}

/* Add glow effect to special tokens */
.token.function,
.token.class-name,
.token.keyword {
    transition: text-shadow 0.3s ease;
}

/* Subtle animation on hover */
.attack-content pre:hover .token.function,
.attack-content pre:hover .token.class-name {
    text-shadow: 0 0 12px rgba(34, 211, 238, 0.5);
}

.attack-content pre:hover .token.keyword {
    text-shadow: 0 0 12px rgba(139, 92, 246, 0.4);
}
