/**
 * Custom CSS for Sistema Nemesis documentation
 * Inspired by Godot Engine's documentation styling
 * Includes dark/light mode support and enhanced navigation
 */

/* Default (light) theme colors */
:root {
    --body-color: #404040;
    --content-wrap-background-color: #efefef;
    --content-background-color: #fcfcfc;
    --logo-opacity: 1.0;
    --navbar-background-color: #333f67;
    --navbar-background-color-hover: #29355c;
    --navbar-background-color-active: #212d51;
    --navbar-current-background-color: #212d51;
    --navbar-current-background-color-hover: #182343;
    --navbar-current-background-color-active: #131e3b;
    --navbar-level-1-color: #c3e3ff;
    --navbar-level-2-color: #b8d6f0;
    --navbar-level-3-color: #a3c4e1;
    --navbar-heading-color: #ff7381;
    --navbar-scrollbar-color: #d45a66;
    --navbar-scrollbar-hover-color: #b14550;
    --navbar-scrollbar-active-color: #72383e;
    --navbar-scrollbar-background: #131e2b;

    --link-color: #2980b9;
    --link-color-hover: #3091d1;
    --link-color-active: #105078;
    --link-color-visited: #9b59b6;

    --hr-color: #e1e4e5;
    --table-row-odd-background-color: #f3f6f6;
    --code-background-color: #fff;
    --code-border-color: #e1e4e5;
    --code-literal-color: #d04c60;
    --input-background-color: #fcfcfc;
    --input-focus-border-color: #5f8cff;

    /* Search results colors */
    --search-result-text-color: #404040;
    --search-result-snippet-color: #666666;
    --search-card-background: #ffffff;
    --search-card-border: #e1e4e5;
    --search-card-hover-background: #f8f9fa;

    --admonition-note-background-color: #e7f2fa;
    --admonition-note-color: #404040;
    --admonition-note-title-background-color: #6ab0de;
    --admonition-note-title-color: #fff;
    --admonition-attention-background-color: #ffedcc;
    --admonition-attention-color: #404040;
    --admonition-attention-title-background-color: #f0b37e;
    --admonition-attention-title-color: #fff;
    --admonition-danger-background-color: #fcf3f2;
    --admonition-danger-color: #404040;
    --admonition-danger-title-background-color: #e9a499;
    --admonition-danger-title-color: #fff;
    --admonition-tip-background-color: #dbfaf4;
    --admonition-tip-color: #404040;
    --admonition-tip-title-background-color: #1abc9c;
    --admonition-tip-title-color: #fff;

    --kbd-background-color: #fafbfc;
    --kbd-outline-color: #d1d5da;
    --kbd-shadow-color: #b0b7bf;
    --kbd-text-color: #444d56;

    --btn-neutral-background-color: #f3f6f6;
    --btn-neutral-hover-background-color: #e5ebeb;
    --footer-color: #808080;
}

/* Dark theme colors */
@media (prefers-color-scheme: dark) {
    :root {
        --body-color: rgba(255, 255, 255, 0.85);
        --content-wrap-background-color: #202326;
        --content-background-color: #2e3236;
        --logo-opacity: 0.85;
        --navbar-background-color: #25282b;
        --navbar-background-color-hover: #333639;
        --navbar-background-color-active: #111417;
        --navbar-current-background-color: #333639;
        --navbar-current-background-color-hover: #44474a;
        --navbar-current-background-color-active: #222528;
        --navbar-level-1-color: #ddd;
        --navbar-level-2-color: #ccc;
        --navbar-level-3-color: #bbb;
        --navbar-heading-color: #ee7381;
        --navbar-scrollbar-color: #be5460;
        --navbar-scrollbar-hover-color: #963e48;
        --navbar-scrollbar-active-color: #5f3034;
        --navbar-scrollbar-background: #1c1e21;

        --link-color: #8cf;
        --link-color-hover: #9df;
        --link-color-active: #6ad;
        --link-color-visited: #cb99f6;

        --hr-color: #555;
        --table-row-odd-background-color: #3b3e41;
        --code-background-color: #1f2937;
        --code-border-color: #374151;
        --code-literal-color: #faa;
        --input-background-color: #333537;
        --input-focus-border-color: #5f8cff;

        /* Search results colors for dark mode */
        --search-result-text-color: rgba(255, 255, 255, 0.9);
        --search-result-snippet-color: rgba(255, 255, 255, 0.75);
        --search-card-background: #3a3d41;
        --search-card-border: #505356;
        --search-card-hover-background: #44474a;

        --admonition-note-background-color: #303d4f;
        --admonition-note-color: #bfeeff;
        --admonition-note-title-background-color: #305070;
        --admonition-note-title-color: #bfefff;
        --admonition-attention-background-color: #444033;
        --admonition-attention-color: #ffeeaf;
        --admonition-attention-title-background-color: #665022;
        --admonition-attention-title-color: #ffeeaf;
        --admonition-danger-background-color: #433;
        --admonition-danger-color: #fcc;
        --admonition-danger-title-background-color: #633;
        --admonition-danger-title-color: #fcc;
        --admonition-tip-background-color: #28382d;
        --admonition-tip-color: #dfd;
        --admonition-tip-title-background-color: #336648;
        --admonition-tip-title-color: #dfd;

        --kbd-background-color: #595b5d;
        --kbd-outline-color: #3d4144;
        --kbd-shadow-color: #1e2023;
        --kbd-text-color: #e2f2ff;

        --btn-neutral-background-color: #404040;
        --btn-neutral-hover-background-color: #505050;
        --footer-color: #aaa;
    }
}

/* Font improvements */
body,
h1, h2, h3, h4, h5, h6,
input[type="text"], input[type="button"], input[type="reset"], input[type="submit"],
textarea, legend, .btn,
.rst-content .toctree-wrapper p.caption,
.rst-versions {
    font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
}

h1, h2, h3, h4, h5, h6, legend,
.rst-content .toctree-wrapper p.caption {
    font-weight: 500;
}

/* Main content styling */
body,
.rst-content table.docutils thead {
    color: var(--body-color);
}

/* Link styling */
a {
    color: var(--link-color);
}

a:hover {
    color: var(--link-color-hover);
    text-decoration: underline;
}

a:active {
    color: var(--link-color-active);
}

a:visited {
    color: var(--link-color-visited);
}

/* Search Results Card-Style Styling */
#search-results .search li {
    background-color: var(--search-card-background) !important;
    border: 1px solid var(--search-card-border) !important;
    border-radius: 8px !important;
    margin: 12px 0 !important;
    padding: 16px !important;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1) !important;
    transition: all 0.2s ease !important;
    color: var(--search-result-text-color) !important;
}

#search-results .search li:hover {
    background-color: var(--search-card-hover-background) !important;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15) !important;
    transform: translateY(-1px) !important;
}

#search-results .search li a {
    color: var(--link-color) !important;
    text-decoration: none !important;
    font-weight: 600 !important;
    font-size: 16px !important;
    display: block !important;
    margin-bottom: 8px !important;
}

#search-results .search li a:hover {
    color: var(--link-color-hover) !important;
    text-decoration: underline !important;
}

#search-results .search li p {
    color: var(--search-result-snippet-color) !important;
    margin: 0 !important;
    line-height: 1.5 !important;
    font-size: 14px !important;
}

/* Search result context and snippets */
#search-results .context {
    color: var(--search-result-text-color) !important;
}

.search .context,
.search .snippet {
    color: var(--search-result-text-color) !important;
}

/* Remove default search styling */
#search-results .search li {
    border-bottom: none !important;
    list-style: none !important;
}

/* Search results container */
#search-results .search {
    padding: 0 !important;
}

/* Godot-style Layout: Center the entire documentation unit */
@media only screen and (min-width: 769px) {
    .wy-body-for-nav {
        max-width: 1200px; /* Total width for sidebar + content */
        margin: 0 auto;
        background-color: var(--content-wrap-background-color);
    }
    
    /* Content area with exact 900px width */
    .wy-nav-content {
        max-width: 900px !important;
        width: 900px;
        background-color: var(--content-background-color);
    }
    
    /* Ensure sidebar stays in place */
    .wy-nav-side {
        left: inherit;
    }
    
    /* Version selector positioning */
    .rst-versions {
        left: inherit;
    }
}

/* Navigation styling */
.wy-nav-content-wrap {
    background-color: var(--content-wrap-background-color);
}

.wy-nav-content {
    background-color: var(--content-background-color);
}

.wy-body-for-nav {
    background-color: var(--content-wrap-background-color);
}

/* Sidebar navigation */
.wy-side-nav-search {
    background-color: var(--navbar-background-color);
}

.wy-nav-side {
    background-color: var(--navbar-background-color);
}

.wy-menu-vertical header,
.wy-menu-vertical p.caption {
    color: var(--navbar-heading-color);
    letter-spacing: 0.75px;
}

/* Navigation links with increased font size */
.wy-menu-vertical a {
    color: var(--navbar-level-1-color);
    font-size: 15px !important;
}

.wy-menu-vertical a:hover {
    background-color: var(--navbar-background-color-hover);
    color: var(--navbar-level-1-color);
}

.wy-menu-vertical a:active {
    background-color: var(--navbar-background-color-active);
}

/* Current navigation items */
.wy-menu-vertical li.current a,
.wy-menu-vertical li.toctree-l2.current > a,
.wy-menu-vertical li.toctree-l2.current li.toctree-l3 > a {
    background-color: var(--navbar-current-background-color);
    color: var(--navbar-level-2-color);
    border-color: var(--navbar-current-background-color);
    font-size: 15px !important;
}

.wy-menu-vertical li.current a:hover,
.wy-menu-vertical li.toctree-l2.current > a:hover,
.wy-menu-vertical li.toctree-l2.current li.toctree-l3 > a:hover {
    background-color: var(--navbar-current-background-color-hover);
}

/* Sidebar captions and headers */
.wy-menu-vertical header,
.wy-menu-vertical p.caption {
    font-size: 15px !important;
}

/* Table styling */
.rst-content table.docutils,
.wy-table-bordered-all td,
.rst-content table.docutils td,
.wy-table thead th,
.rst-content table.docutils thead th,
.rst-content table.field-list thead th {
    border-color: var(--code-border-color);
}

.wy-table-odd td,
.wy-table-striped tr:nth-child(2n-1) td,
.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td {
    background-color: var(--table-row-odd-background-color);
}

/* Code styling */
code, .rst-content tt, .rst-content code {
    font-size: 14px;
    background-color: var(--code-background-color);
    border: 1px solid var(--code-border-color);
}

.rst-content tt.literal,
.rst-content code.literal {
    color: var(--code-literal-color);
}

.rst-content div[class^="highlight"] {
    border-color: var(--code-border-color);
}

.rst-content pre.literal-block,
.rst-content div[class^="highlight"] pre,
.rst-content .linenodiv pre {
    font-size: 14px;
    line-height: 1.5;
}

/* Admonition styling */
.rst-content .admonition.note,
.rst-content .admonition.seealso {
    background-color: var(--admonition-note-background-color);
    color: var(--admonition-note-color);
}

.rst-content .admonition.note .admonition-title,
.rst-content .admonition.seealso .admonition-title {
    background-color: var(--admonition-note-title-background-color);
    color: var(--admonition-note-title-color);
}

.rst-content .admonition.attention,
.rst-content .admonition.caution,
.rst-content .admonition.warning {
    background-color: var(--admonition-attention-background-color);
    color: var(--admonition-attention-color);
}

.rst-content .admonition.attention .admonition-title,
.rst-content .admonition.caution .admonition-title,
.rst-content .admonition.warning .admonition-title {
    background-color: var(--admonition-attention-title-background-color);
    color: var(--admonition-attention-title-color);
}

.rst-content .admonition.danger {
    background-color: var(--admonition-danger-background-color);
    color: var(--admonition-danger-color);
}

.rst-content .admonition.danger .admonition-title {
    background-color: var(--admonition-danger-title-background-color);
    color: var(--admonition-danger-title-color);
}

.rst-content .admonition.tip,
.rst-content .admonition.important {
    background-color: var(--admonition-tip-background-color);
    color: var(--admonition-tip-color);
}

.rst-content .admonition.tip .admonition-title,
.rst-content .admonition.important .admonition-title {
    background-color: var(--admonition-tip-title-background-color);
    color: var(--admonition-tip-title-color);
}

/* Search input styling */
.wy-side-nav-search input[type="text"] {
    background-color: var(--input-background-color);
    color: var(--body-color);
    border: 2px solid transparent;
    box-shadow: none;
    transition: none;
    font-size: 14px;
}

.wy-side-nav-search input[type="text"]:focus {
    border: 2px solid var(--input-focus-border-color);
}

.wy-side-nav-search input[type="text"]::placeholder {
    color: var(--body-color);
    opacity: 0.55;
}

/* Button styling */
.btn-neutral {
    background-color: var(--btn-neutral-background-color) !important;
    color: var(--body-color) !important;
}

.btn-neutral:hover {
    background-color: var(--btn-neutral-hover-background-color) !important;
}

.btn-neutral:visited {
    color: var(--body-color) !important;
}

/* Footer styling */
footer {
    color: var(--footer-color);
}

/* Image styling */
.rst-content div.figure img {
    border: 1px solid var(--body-color);
    max-width: 100%;
    height: auto;
}

/* Improve readability */
p, article ul, article ol, .wy-plain-list-disc, .wy-plain-list-decimal,
.rst-content ol.arabic, .rst-content .section ul, .rst-content .toctree-wrapper ul,
.rst-content .section ol {
    line-height: 25px;
}

/* Scrollbar styling for navigation */
.wy-menu.wy-menu-vertical {
    overflow-y: auto;
    overflow-x: hidden;
    max-height: calc(100% - 348px);
    scrollbar-color: var(--navbar-scrollbar-color) var(--navbar-scrollbar-background);
}

.wy-menu.wy-menu-vertical::-webkit-scrollbar {
    width: 0.75rem;
}

.wy-menu.wy-menu-vertical::-webkit-scrollbar-track {
    background-color: var(--navbar-scrollbar-background);
}

.wy-menu.wy-menu-vertical::-webkit-scrollbar-thumb {
    background-color: var(--navbar-scrollbar-color);
}

.wy-menu.wy-menu-vertical::-webkit-scrollbar-thumb:hover {
    background-color: var(--navbar-scrollbar-hover-color);
}

.wy-menu.wy-menu-vertical::-webkit-scrollbar-thumb:active {
    background-color: var(--navbar-scrollbar-active-color);
}

/* Mobile responsiveness */
@media screen and (max-width: 768px) {
    .wy-nav-side {
        padding-bottom: 44px;
    }
    .wy-menu.wy-menu-vertical {
        overflow-y: initial;
        max-height: initial;
    }
}

/* Version selector styling */
.rst-versions {
    background-color: var(--navbar-current-background-color);
}

.rst-versions a,
.rst-versions .rst-current-version,
.rst-versions .rst-current-version .fa {
    color: var(--navbar-level-1-color);
}

.rst-versions .rst-other-versions small {
    color: var(--navbar-level-3-color);
}

/* Hide automatic highlighting in search results */
.rst-content .highlighted {
    background-color: transparent;
    font-weight: inherit;
    padding: 0;
}

/* Syntax highlighting for code blocks */
.rst-content div[class^="highlight"] {
    background-color: var(--code-background-color);
    border: 1px solid var(--code-border-color);
    border-radius: 4px;
    margin: 16px 0;
}

.rst-content div[class^="highlight"] pre {
    background-color: var(--code-background-color);
    color: var(--body-color);
    margin: 0;
    padding: 12px;
    overflow-x: auto;
}

/* Syntax highlighting tokens for light theme */
:root {
    --syntax-string: #d73e48;
    --syntax-number: #0969da;
    --syntax-boolean: #a626a4;
    --syntax-null: #a626a4;
    --syntax-key: #0969da;
    --syntax-comment: #6a737d;
    --syntax-bracket: #24292f;
}

/* Syntax highlighting tokens for dark theme */
@media (prefers-color-scheme: dark) {
    :root {
        --syntax-string: #7dd3fc;    /* Light blue for string values */
        --syntax-number: #fbbf24;    /* Yellow/orange for numbers */
        --syntax-boolean: #fb7185;   /* Pink/red for booleans */
        --syntax-null: #fb7185;      /* Pink/red for null */
        --syntax-key: #7dd3fc;       /* Light blue for object keys */
        --syntax-comment: #6b7280;   /* Gray for comments */
        --syntax-bracket: #e5e7eb;   /* Light gray for brackets */
    }
}

/* Apply syntax highlighting colors */
.rst-content div[class^="highlight"] .s,    /* strings */
.rst-content div[class^="highlight"] .s1,
.rst-content div[class^="highlight"] .s2 {
    color: var(--syntax-string);
}

.rst-content div[class^="highlight"] .m,    /* numbers */
.rst-content div[class^="highlight"] .mi,
.rst-content div[class^="highlight"] .mf,
.rst-content div[class^="highlight"] .mh,
.rst-content div[class^="highlight"] .mo {
    color: var(--syntax-number);
}

.rst-content div[class^="highlight"] .kc,   /* constants like true, false, null */
.rst-content div[class^="highlight"] .kd {
    color: var(--syntax-boolean);
}

.rst-content div[class^="highlight"] .na,   /* attribute names / object keys */
.rst-content div[class^="highlight"] .nd,
.rst-content div[class^="highlight"] .nl {
    color: var(--syntax-key);
}

.rst-content div[class^="highlight"] .c,    /* comments */
.rst-content div[class^="highlight"] .c1,
.rst-content div[class^="highlight"] .cm,
.rst-content div[class^="highlight"] .cp,
.rst-content div[class^="highlight"] .cs {
    color: var(--syntax-comment);
    font-style: italic;
}

.rst-content div[class^="highlight"] .p,    /* punctuation/brackets */
.rst-content div[class^="highlight"] .o {
    color: var(--syntax-bracket);
} 