/**
 * CodeMirror OData Highlighting Theme (Light & Dark)
 * Tailored for Microsoft Dataverse & Dynamics 365 Web API Queries
 */

.CodeMirror {
    font-family: 'JetBrains Mono', 'Fira Code', Consolas, Menlo, monospace !important;
    font-size: 0.92rem !important;
    line-height: 1.6 !important;
    height: 100% !important;
    background: var(--bg-surface) !important;
    color: var(--text-main) !important;
    border-radius: 0;
}

.CodeMirror-scroll {
    padding: 0.75rem 0;
}

.CodeMirror-gutters {
    background-color: var(--editor-gutter-bg) !important;
    border-right: 1px solid var(--editor-gutter-border) !important;
    white-space: nowrap;
    padding: 0 4px;
}

.CodeMirror-linenumber {
    color: var(--editor-gutter-color) !important;
    font-size: 0.8rem;
    padding: 0 8px 0 4px;
}

.CodeMirror-cursor {
    border-left: 2px solid var(--primary) !important;
}

.CodeMirror-selected {
    background: rgba(155, 77, 202, 0.18) !important;
}

.CodeMirror-focused .CodeMirror-selected {
    background: rgba(155, 77, 202, 0.28) !important;
}

.CodeMirror-matchingbracket {
    color: var(--primary) !important;
    font-weight: 700 !important;
    border-bottom: 2px solid var(--primary);
    background: rgba(99, 102, 241, 0.12);
}

.CodeMirror-activeline-background {
    background: rgba(155, 77, 202, 0.04) !important;
}

/* Light Theme Syntax Tokens */
.cm-s-odata span.cm-keyword {
    color: #9b4dca;
    font-weight: 700;
}

.cm-s-odata span.cm-operator {
    color: #0284c7;
    font-weight: 700;
}

.cm-s-odata span.cm-builtin {
    color: #0d9488;
    font-weight: 600;
}

.cm-s-odata span.cm-string {
    color: #16a34a;
}

.cm-s-odata span.cm-number {
    color: #ea580c;
    font-weight: 600;
}

.cm-s-odata span.cm-atom {
    color: #d97706;
    font-weight: 600;
}

.cm-s-odata span.cm-def {
    color: #6366f1;
    font-weight: 700;
}

.cm-s-odata span.cm-punctuation {
    color: #64748b;
    font-weight: 600;
}

.cm-s-odata span.cm-qualifier {
    color: #4338ca;
    font-weight: 600;
}

.cm-s-odata span.cm-variable {
    color: #1e293b;
}

.cm-s-odata span.cm-comment {
    color: #94a3b8;
    font-style: italic;
}

/* Dark Theme Syntax Tokens */
[data-theme="dark"] .CodeMirror {
    background: #0b111e !important;
    color: #f1f5f9 !important;
}

[data-theme="dark"] .CodeMirror-selected {
    background: rgba(192, 132, 252, 0.22) !important;
}

[data-theme="dark"] .CodeMirror-focused .CodeMirror-selected {
    background: rgba(192, 132, 252, 0.35) !important;
}

[data-theme="dark"] .CodeMirror-activeline-background {
    background: rgba(192, 132, 252, 0.07) !important;
}

[data-theme="dark"] .cm-s-odata span.cm-keyword {
    color: #c084fc;
    font-weight: 700;
}

[data-theme="dark"] .cm-s-odata span.cm-operator {
    color: #38bdf8;
    font-weight: 700;
}

[data-theme="dark"] .cm-s-odata span.cm-builtin {
    color: #2dd4bf;
    font-weight: 600;
}

[data-theme="dark"] .cm-s-odata span.cm-string {
    color: #4ade80;
}

[data-theme="dark"] .cm-s-odata span.cm-number {
    color: #fb923c;
    font-weight: 600;
}

[data-theme="dark"] .cm-s-odata span.cm-atom {
    color: #fcd34d;
    font-weight: 600;
}

[data-theme="dark"] .cm-s-odata span.cm-def {
    color: #818cf8;
    font-weight: 700;
}

[data-theme="dark"] .cm-s-odata span.cm-punctuation {
    color: #94a3b8;
    font-weight: 600;
}

[data-theme="dark"] .cm-s-odata span.cm-qualifier {
    color: #a5b4fc;
    font-weight: 600;
}

[data-theme="dark"] .cm-s-odata span.cm-variable {
    color: #f8fafc;
}

[data-theme="dark"] .cm-s-odata span.cm-comment {
    color: #64748b;
    font-style: italic;
}
