/* Binary Ninja C++ API Documentation Styles
 * Clean CSS implementation replacing Doxygen defaults
 * No !important declarations needed
 */

/* ============================================================================
 * CSS VARIABLES - LIGHT MODE (Base)
 * ============================================================================ */
:root {
    /* Binary Ninja Brand Colors */
    --bn-red: #c74433;
    --bn-red-dark: #d0584d;
    --bn-red-light: #a2382a;

    /* Complementary Colors (Teal - complementary to red) */
    --bn-teal: #33b6c7;
    --bn-teal-bright: #16b9ce;
    --bn-teal-light: #eaf8f9;
    --bn-teal-dark: #163f44;
    --bn-teal-accent: #36cee2;

    /* Page Structure */
    --page-bg: #ffffff;
    --page-text: #2f4153;
    --page-text-secondary: #6f7e8e;
    --border-color: #dedede;

    /* Sidebar */
    --sidebar-bg: #fbfbfb;
    --sidebar-text: #2f4153;

    /* Code/Fragments */
    --code-bg: #f5f5f5;
    --code-text: #2f4153;
    --fragment-bg: #F8F9FA;
    --fragment-text: #37474F;
    --fragment-border: #e3e5e7;

    /* Syntax Highlighting (Light) */
    --syntax-keyword: #bb6bb2;
    --syntax-type: #8258b3;
    --syntax-flow: #d67c3b;
    --syntax-string: #438a59;
    --syntax-comment: #969696;
    --syntax-preprocessor: #46aaa5;
    --syntax-link: #5383d6;

    /* Tables */
    --table-header-bg: #f1f1f1;
    --table-row-odd: #ffffff;
    --table-row-even: #f7f7f7;

    /* Content Boxes */
    --warning-bg: #faf3d8;
    --warning-border: #f3a600;
    --note-bg: var(--bn-teal-light);
    --note-border: var(--bn-teal-bright);
    --deprecated-bg: #ecf0f3;
    --deprecated-border: #5b6269;
    --bug-bg: #f8d1cc;
    --bug-border: #b61825;
    --todo-bg: #e4dafd;
    --todo-border: #5b2bdd;

    /* Typography */
    --font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
    --font-family-monospace: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;
    --font-size-base: 15.6px;
    --font-size-code: 14px;
    --font-size-nav: 14.4px;
    --font-size-title: 22px;
    --line-height-content: 27px;

    /* Layout */
    --sidebar-width: 450px;
    --top-height: 120px;
    --content-maxwidth: 1050px;
    --spacing-small: 5px;
    --spacing-medium: 10px;
    --spacing-large: 16px;
    --spacing-xlarge: 20px;
    --border-radius-small: 5px;
    --border-radius-medium: 8px;
    --border-radius-large: 10px;
    --searchbar-height: 33px;
    --searchbar-border-radius: 33px;
    --tree-item-height: 30px;
}

/* ============================================================================
 * CSS VARIABLES - DARK MODE
 * ============================================================================ */
html.dark-mode {
    color-scheme: dark;

    /* Brand Colors (same) */
    --bn-red: #c74433;
    --bn-red-dark: #d0584d;
    --bn-red-light: #a2382a;

    /* Complementary Colors (Teal - same base) */
    --bn-teal: #33b6c7;
    --bn-teal-bright: #16b9ce;
    --bn-teal-light: #eaf8f9;
    --bn-teal-dark: #163f44;
    --bn-teal-accent: #36cee2;

    /* Page Structure */
    --page-bg: #1C1D1F;
    --page-text: #d2dbde;
    --page-text-secondary: #859399;
    --border-color: #38393b;

    /* Sidebar */
    --sidebar-bg: #252628;
    --sidebar-text: #d2dbde;

    /* Code/Fragments */
    --code-bg: #2a2c2f;
    --code-text: #d2dbde;
    --fragment-bg: #282c34;
    --fragment-text: #dbe4eb;
    --fragment-border: #1f1f1f;

    /* Syntax Highlighting (Dark) */
    --syntax-keyword: #cc99cd;
    --syntax-type: #ab99cd;
    --syntax-flow: #e08000;
    --syntax-string: #7ec699;
    --syntax-comment: #999999;
    --syntax-preprocessor: #65cabe;
    --syntax-link: #98c0e3;

    /* Tables */
    --table-header-bg: #2a2c2f;
    --table-row-odd: #1C1D1F;
    --table-row-even: #252628;

    /* Content Boxes */
    --warning-bg: #3b2e04;
    --warning-border: #f1b602;
    --note-bg: var(--bn-teal-dark);
    --note-border: var(--bn-teal-accent);
    --deprecated-bg: #2e323b;
    --deprecated-border: #738396;
    --bug-bg: #2e1917;
    --bug-border: #ad2617;
    --todo-bg: #2a2536;
    --todo-border: #7661b3;
}

/* Respect system color preference */
@media (prefers-color-scheme: dark) {
    html:not(.light-mode) {
        color-scheme: dark;

        --bn-red: #c74433;
        --bn-red-dark: #d0584d;
        --bn-red-light: #a2382a;

        --bn-teal: #33b6c7;
        --bn-teal-bright: #16b9ce;
        --bn-teal-light: #eaf8f9;
        --bn-teal-dark: #163f44;
        --bn-teal-accent: #36cee2;

        --page-bg: #1C1D1F;
        --page-text: #d2dbde;
        --page-text-secondary: #859399;
        --border-color: #38393b;

        --sidebar-bg: #252628;
        --sidebar-text: #d2dbde;

        --code-bg: #2a2c2f;
        --code-text: #d2dbde;
        --fragment-bg: #282c34;
        --fragment-text: #dbe4eb;
        --fragment-border: #1f1f1f;

        --syntax-keyword: #cc99cd;
        --syntax-type: #ab99cd;
        --syntax-flow: #e08000;
        --syntax-string: #7ec699;
        --syntax-comment: #999999;
        --syntax-preprocessor: #65cabe;
        --syntax-link: #98c0e3;

        --table-header-bg: #2a2c2f;
        --table-row-odd: #1C1D1F;
        --table-row-even: #252628;

        --warning-bg: #3b2e04;
        --warning-border: #f1b602;
        --note-bg: var(--bn-teal-dark);
        --note-border: var(--bn-teal-accent);
        --deprecated-bg: #2e323b;
        --deprecated-border: #738396;
        --bug-bg: #2e1917;
        --bug-border: #ad2617;
        --todo-bg: #2a2536;
        --todo-border: #7661b3;
    }
}

/* ============================================================================
 * BASE STYLES
 * ============================================================================ */
* {
    box-sizing: border-box;
}

html {
    font-size: var(--font-size-base);
}

body {
    margin: 0;
    padding: 0;
    font-family: var(--font-family);
    font-size: var(--font-size-base);
    line-height: 1.6;
    color: var(--page-text);
    background-color: var(--page-bg);
}

/* ============================================================================
 * TYPOGRAPHY
 * ============================================================================ */
h1, h2, h3, h4, h5, h6 {
    margin: 1em 0 0.5em 0;
    font-weight: 600;
    line-height: 1.3;
    color: var(--page-text);
}

h1 { font-size: 2em; }
h2 { font-size: 1.5em; }
h3 { font-size: 1.25em; }
h4 { font-size: 1.1em; }
h5, h6 { font-size: 1em; }

p, div, table, dl {
    font-size: var(--font-size-base);
    line-height: var(--line-height-content);
}

a {
    color: var(--bn-red);
    text-decoration: none;
    font-weight: 500;
}

a:hover {
    text-decoration: underline;
}

code, tt {
    font-family: var(--font-family-monospace);
    font-size: var(--font-size-code);
    background-color: var(--code-bg);
    color: var(--code-text);
    padding: 2px 6px;
    border-radius: var(--border-radius-small);
    word-wrap: break-word;
    overflow-wrap: break-word;
}

/* ============================================================================
 * HEADER AND TOP NAVIGATION
 * ============================================================================ */
#top {
    background: var(--sidebar-bg);
    border-bottom: 1px solid var(--border-color);
    position: relative;
    z-index: 99;
    height: var(--top-height);
    max-width: var(--sidebar-width);
    overflow: hidden;
}

#titlearea {
    width: auto;
    padding: var(--spacing-medium) var(--spacing-large);
    background: var(--sidebar-bg);
    color: var(--page-text);
    border-bottom: none;
    position: relative;
}

#titlearea table {
    background: transparent;
}

#titlearea table tbody tr {
    height: auto;
    background: transparent;
}

#titlearea table tbody tr td {
    background: transparent;
}

#projectalign {
    padding-left: var(--spacing-medium);
}

#projectname {
    font-size: var(--font-size-title);
    font-weight: 600;
    white-space: nowrap;
}

#projectname a {
    color: var(--page-text);
}

#projectnumber {
    font-family: inherit;
    font-size: 60%;
    color: var(--page-text-secondary);
}

#projectlogo img {
    max-height: calc(var(--font-size-title) * 2);
}

tr#projectrow {
    margin-top: 7px;
    display: block;
}

/* ============================================================================
 * SIDEBAR LAYOUT (Desktop)
 * ============================================================================ */
#side-nav {
    min-width: var(--sidebar-width);
    max-width: var(--sidebar-width);
    top: var(--top-height);
    position: fixed;
    left: 0;
    bottom: 0;
    overflow: visible;
    background: var(--sidebar-bg);
}

#nav-tree, #side-nav {
    height: calc(100vh - var(--top-height));
}

#top {
    position: fixed;
    left: 0;
    top: 0;
    width: var(--sidebar-width);
    border-bottom: none;
    margin-bottom: calc(0px - var(--top-height));
    background: var(--sidebar-bg);
}

#main-nav {
    float: left;
    padding-right: 0;
}

.ui-resizable-handle {
    display: none;
}

.ui-resizable-e {
    width: 0;
}

#nav-path {
    position: fixed;
    right: 0;
    left: calc(var(--sidebar-width) + 1px);
    bottom: 0;
    width: auto;
    background: var(--page-bg);
    border-top: 1px solid var(--border-color);
}

#container {
    min-height: 100vh;
    background-color: var(--page-bg);
}

#doc-content {
    min-height: calc(100vh - 31px);
    padding-bottom: calc(3 * var(--spacing-large));
    padding-top: calc(var(--top-height) - 80px);
    padding-left: var(--spacing-large);
    padding-right: var(--spacing-large);
    box-sizing: border-box;
    background-color: var(--page-bg);
}

#MSearchBox {
    width: calc(var(--sidebar-width) - calc(2 * var(--spacing-medium)) - 1px);
}

#MSearchField {
    width: calc(var(--sidebar-width) - calc(2 * var(--spacing-medium)) - 66px);
    padding-left: 10px;
    top: -1px;
}

#MSearchResultsWindow {
    left: var(--spacing-medium);
    right: auto;
}

#nav-sync {
    display: none;
}

#splitbar {
    display: none;
}

/* ============================================================================
 * RESPONSIVE (Tablet and Mobile)
 * ============================================================================ */

/* Tablet: Hide sidebar, adjust margins */
@media screen and (max-width: 1024px) {
    #side-nav {
        display: none;
    }

    #top {
        position: relative;
        width: 100%;
        max-width: none;
        border-right: none;
    }

    #container {
        margin-left: 0;
        min-height: 100vh;
    }

    #doc-content {
        margin-left: 0;
        padding-top: var(--spacing-large);
        min-height: calc(100vh - var(--spacing-large));
    }

    #nav-path {
        position: relative;
        left: 0;
        right: 0;
        width: 100%;
    }
}

/* Mobile: Compact layout */
@media screen and (max-width: 767px) {
    #top {
        height: 125px;
    }

    #doc-content {
        padding-top: 125px;
        padding-left: var(--spacing-medium);
        padding-right: var(--spacing-medium);
    }

    div.contents {
        padding: 0 var(--spacing-small);
    }

    #MSearchBox {
        top: -16px;
    }
}

/* Small mobile: Even more compact */
@media screen and (max-width: 480px) {
    #titlearea {
        padding: var(--spacing-small);
    }

    div.contents {
        padding: 0;
    }

    #doc-content {
        padding-left: var(--spacing-small);
        padding-right: var(--spacing-small);
    }
}

/* ============================================================================
 * SEARCH BAR
 * ============================================================================ */
#titlearea #projectalign + td {
    position: absolute;
    left: 20px;
    top: 80px;
}

#MSearchBox {
    height: var(--searchbar-height);
    background: var(--sidebar-bg);
    border-radius: var(--searchbar-border-radius);
    border: 1px solid var(--border-color);
    overflow: hidden;
    position: relative;
    box-shadow: none;
    display: block;
    margin-top: 0;
}

#MSearchBox.MSearchBoxActive {
    border-color: var(--bn-red);
    box-shadow: inset 0 0 0 1px var(--bn-red);
}

#MSearchBox span.left {
    left: 5px;
    top: 1px;
    background: none;
    background-image: none;
}

#MSearchBox span.right {
    padding-top: calc(calc(var(--searchbar-height) / 2) - 12px);
    position: absolute;
    right: var(--spacing-small);
    background: none;
    background-image: none;
}

#MSearchField {
    font-size: var(--font-size-nav);
    font-family: var(--font-family);
    height: calc(var(--searchbar-height) - 2px);
    background: transparent;
    border: none;
    color: var(--page-text);
}

.MSearchBoxActive #MSearchField {
    color: var(--page-text);
}

#MSearchSelect {
    top: calc(calc(var(--searchbar-height) / 2) - 11px);
    background-repeat: no-repeat;
}

#MSearchSelectWindow, #MSearchResultsWindow {
    z-index: 9999;
    background-color: var(--page-bg);
    border: 1px solid var(--border-color);
}

/* ============================================================================
 * NAVIGATION TREE
 * ============================================================================ */
#side-nav {
    background-color: var(--sidebar-bg);
}

#nav-tree {
    background-color: var(--sidebar-bg);
    overflow-x: auto;
    overflow-y: auto;
}

#nav-tree .label {
    font-size: var(--font-size-nav);
    color: var(--sidebar-text);
}

#nav-tree a {
    color: var(--sidebar-text);
    text-decoration: none;
}

#nav-tree a:hover {
    text-decoration: underline;
}

#nav-tree .arrow {
    opacity: 0.6;
    transition: opacity 0.2s;
    display: inline-block;
    min-width: 32px;
    text-align: center;
    box-sizing: border-box;
}

#nav-tree .item:hover .arrow {
    opacity: 1;
}

#nav-tree .selected {
    background-color: var(--bn-red);
    color: #ffffff;
    display: inline-block;
    line-height: 1.4;
    padding: 0 4px;
    margin: 0 -4px;
}

#nav-tree .selected a {
    color: #ffffff;
}

html.dark-mode #nav-tree .selected {
    background-color: var(--bn-red);
    color: #ffffff;
}

html.dark-mode #nav-tree .selected a {
    color: #ffffff;
}

#nav-tree .item {
    min-height: var(--tree-item-height);
    line-height: 1.4;
    padding-top: 6px;
    padding-bottom: 6px;
    box-sizing: border-box;
    display: flex;
    align-items: center;
}

/* Undecorated root node */
.children_ul a.index\.html {
    display: initial;
}

a.index\.html {
    display: none;
}

/* Doxygen 1.15 creates a wrapper node - hide it but show its children */
#nav-tree-contents > ul > li:first-child > .item {
    display: none !important;
}

/* Make the wrapper's children appear at the top level by removing their indentation */
#nav-tree-contents > ul > li:first-child > ul {
    padding-left: 0 !important;
    margin-left: 0 !important;
}

/* No compensation needed - arrows are now consistent */
#nav-tree-contents > ul > li:first-child > ul > li > .item {
    margin-left: 0;
}

/* Add spacing between top-level items */
#nav-tree-contents > ul > li:first-child > ul > li {
    margin-top: 2px;
}

#nav-tree-contents > ul > li:first-child > ul > li:first-child {
    margin-top: 0;
}

/* ============================================================================
 * COLLAPSIBLE SECTIONS (dynsections.js)
 * ============================================================================ */
.arrowhead {
    display: inline-block;
    margin-right: 5px;
    opacity: 0;
    transition: opacity 0.2s;
    font-size: 11px;
    line-height: 1;
    color: var(--text-color);
}

.arrow:hover .arrowhead,
tr:hover .arrowhead,
.arrowhead.opened {
    opacity: 1;
}

/* Right-pointing triangle when closed */
.arrowhead.closed::before {
    content: '▶';
}

/* Down-pointing triangle when opened */
.arrowhead.opened::before {
    content: '▼';
}

/* ============================================================================
 * CONTENT AREA
 * ============================================================================ */
div.contents, div.header .title, div.header .summary {
    max-width: 100%;
}

div.contents, div.header .title {
    line-height: initial;
    margin: calc(var(--spacing-medium) + .2em) 0 var(--spacing-medium) 0;
}

div.header .summary {
    margin: var(--spacing-medium) 0 0 0;
}

div.headertitle {
    padding: 0;
    border-bottom: 0;
    background-color: var(--page-bg);
}

div.headertitle .title {
    font-size: 2em;
    font-weight: 600;
    margin: var(--spacing-large) 0;
}

div.contents {
    padding: 0 var(--spacing-xlarge);
}

div.contents p, div.contents li {
    line-height: var(--line-height-content);
}

div.contents div.dyncontent {
    margin: var(--spacing-medium) 0;
}

@media screen and (max-width: 767px) {
    div.contents {
        padding: 0 var(--spacing-large);
    }

    div.header .title {
        padding: var(--spacing-medium) var(--spacing-large);
    }
}

.contents img, .contents .center, .contents center, .contents div.image object {
    max-width: 100%;
    overflow: auto;
}

.contents hr {
    border: none;
    border-top: 1px solid var(--border-color);
    margin: var(--spacing-large) 0;
}

/* ============================================================================
 * TABLES
 * ============================================================================ */
/* Only apply to content tables, not Doxygen structural tables */
div.contents > table:not(.memberdecls):not(.mlabels):not(.memname):not(.params),
div.contents p + table,
div.textblock table:not(.memname):not(.params) {
    border-collapse: collapse;
    border-spacing: 0;
    width: 100%;
    word-wrap: break-word;
}

/* Content tables (HTML tables in documentation) */
div.contents > table,
div.contents p + table,
div.textblock table {
    margin: var(--spacing-medium) 0;
    border: 1px solid var(--border-color);
}

div.contents > table th,
div.contents p + table th,
div.textblock table th {
    background-color: var(--table-header-bg);
    color: var(--page-text);
    padding: var(--spacing-small) var(--spacing-medium);
    text-align: left;
    border: 1px solid var(--border-color);
    font-weight: 600;
}

div.contents > table td,
div.contents p + table td,
div.textblock table td {
    padding: var(--spacing-small) var(--spacing-medium);
    border: 1px solid var(--border-color);
    vertical-align: top;
}

div.contents > table tr:nth-child(odd),
div.contents p + table tr:nth-child(odd),
div.textblock table tr:nth-child(odd) {
    background-color: var(--page-bg);
}

div.contents > table tr:nth-child(even),
div.contents p + table tr:nth-child(even),
div.textblock table tr:nth-child(even) {
    background-color: var(--table-row-even);
}

table.memberdecls {
    width: 100%;
}

table.memberdecls .memItemLeft {
    white-space: normal;
    word-wrap: break-word;
    overflow-wrap: break-word;
    padding: var(--spacing-small) var(--spacing-medium);
    border-bottom: 1px solid var(--border-color);
    width: 40%;
}

table.memberdecls .memItemRight {
    padding: var(--spacing-small) var(--spacing-medium);
    border-bottom: 1px solid var(--border-color);
    word-wrap: break-word;
    overflow-wrap: break-word;
    width: 60%;
}

table.memberdecls td {
    vertical-align: top;
}

/* Markdown tables */
table.markdownTable {
    border-collapse: collapse;
    width: 100%;
    margin: var(--spacing-medium) 0;
    border: 1px solid var(--border-color);
}

table.markdownTable th {
    background-color: var(--sidebar-bg);
    color: var(--sidebar-text);
    padding: var(--spacing-small) var(--spacing-medium);
    text-align: left;
    border: 1px solid var(--border-color);
    font-weight: 600;
}

table.markdownTable td {
    padding: var(--spacing-small) var(--spacing-medium);
    border: 1px solid var(--border-color);
    vertical-align: top;
}

table.markdownTable tr.markdownTableRowOdd {
    background-color: var(--fragment-bg);
}

table.markdownTable tr.markdownTableRowEven {
    background-color: var(--page-bg);
}

/* Directory table (class list) */
.directory {
    margin: var(--spacing-medium) 0;
}

.directory .levels {
    font-size: 0.75em;
    text-align: right;
    margin-bottom: var(--spacing-small);
    color: var(--page-text-secondary);
}

.directory .levels span {
    cursor: pointer;
    margin-left: var(--spacing-small);
}

.directory .levels span:hover {
    color: var(--page-text);
}

/* Make the numbers much dimmer */
.directory .levels span[onclick] {
    opacity: 0.4;
}

.directory .levels span[onclick]:hover {
    opacity: 0.7;
}

table.directory {
    width: 100%;
    border-collapse: collapse;
}

table.directory tr.even {
    background-color: var(--table-row-even);
}

table.directory tr.odd {
    background-color: var(--table-row-odd);
}

table.directory td {
    padding: var(--spacing-small) var(--spacing-medium);
    border-bottom: 1px solid var(--border-color);
}

table.directory td.entry {
    vertical-align: middle;
}

table.directory td.desc {
    vertical-align: middle;
    color: var(--page-text-secondary);
}

/* Detail level labels (default, inline, virtual, etc.) */
table.mlabels {
    border-spacing: 0;
    width: 100%;
}

table.mlabels td.mlabels-left {
    width: 100%;
}

table.mlabels td.mlabels-right {
    vertical-align: bottom;
}

span.mlabel {
    background: var(--bn-red);
    color: #ffffff;
    margin-left: 2px;
    padding: 2px 5px;
    border-radius: 6px;
    font-size: 9pt;
    white-space: nowrap;
    font-weight: 600;
}

/* Function signature tables */
table.memname {
    border-collapse: collapse;
}

div.memproto table.memname {
    font-family: var(--font-family-monospace);
    color: var(--code-text);
}

.memname td {
    vertical-align: bottom;
}


/* Type/Namespace icons (C, N, S, etc.) */
.icon {
    display: inline-block;
    background-color: var(--bn-red);
    color: #ffffff;
    font-family: var(--font-family-monospace);
    font-size: 11px;
    font-weight: 700;
    padding: 3px 5px 2px 5px;
    margin-right: 6px;
    border-radius: 3px;
    text-align: center;
    min-width: 16px;
    line-height: 1.2;
    vertical-align: middle;
}

table thead th {
    background-color: var(--table-header-bg);
    color: var(--page-text);
    font-weight: 600;
    padding: var(--spacing-small) var(--spacing-medium);
    border-bottom: 1px solid var(--border-color);
}

/* ============================================================================
 * CODE BLOCKS AND FRAGMENTS
 * ============================================================================ */
pre.fragment, div.fragment {
    font-family: var(--font-family-monospace);
    font-size: var(--font-size-code);
    background-color: var(--fragment-bg);
    color: var(--fragment-text);
    border-radius: var(--border-radius-small);
    padding: var(--spacing-medium);
    overflow-x: auto;
    overflow-y: auto;
    border: 1px solid var(--fragment-border);
    max-width: 100%;
}

.line {
    line-height: 20px;
    font-family: var(--font-family-monospace);
}

.lineno {
    color: #797979;
    background-color: #f4f4f5;
    border-right: 1px solid var(--fragment-border);
    padding-right: 8px;
    padding-left: 8px;
    margin-right: 8px;
}

html.dark-mode .lineno {
    color: #cccccc;
    background-color: #35393c;
}

/* Syntax highlighting */
span.keyword { color: var(--syntax-keyword); }
span.keywordtype { color: var(--syntax-type); }
span.keywordflow { color: var(--syntax-flow); }
span.stringliteral { color: var(--syntax-string); }
span.comment { color: var(--syntax-comment); }
span.preprocessor { color: var(--syntax-preprocessor); }
span.lineno a { color: var(--syntax-comment); }

/* ============================================================================
 * CONTENT BOXES (@note, @warning, etc.)
 * ============================================================================ */
dl.warning, dl.attention {
    background-color: var(--warning-bg);
    border-left: 4px solid var(--warning-border);
    padding: var(--spacing-medium);
    border-radius: var(--border-radius-small);
    margin: var(--spacing-medium) 0;
}

dl.note {
    background-color: var(--note-bg);
    border-left: 4px solid var(--note-border);
    padding: var(--spacing-medium);
    border-radius: var(--border-radius-small);
    margin: var(--spacing-medium) 0;
}

dl.todo {
    background-color: var(--todo-bg);
    border-left: 4px solid var(--todo-border);
    padding: var(--spacing-medium);
    border-radius: var(--border-radius-small);
    margin: var(--spacing-medium) 0;
}

dl.deprecated {
    background-color: var(--deprecated-bg);
    border-left: 4px solid var(--deprecated-border);
    padding: var(--spacing-medium);
    border-radius: var(--border-radius-small);
    margin: var(--spacing-medium) 0;
}

dl.bug {
    background-color: var(--bug-bg);
    border-left: 4px solid var(--bug-border);
    padding: var(--spacing-medium);
    border-radius: var(--border-radius-small);
    margin: var(--spacing-medium) 0;
}

/* ============================================================================
 * MEMBER DOCUMENTATION
 * ============================================================================ */
.memitem {
    margin-bottom: var(--spacing-large);
    position: relative;
}

.memtitle {
    background-color: var(--code-bg);
    border: 1px solid var(--border-color);
    border-radius: var(--border-radius-small) var(--border-radius-small) 0 0;
    padding: var(--spacing-small) var(--spacing-medium);
    font-size: 18px;
    font-weight: 600;
    font-family: var(--font-family-monospace);
}

.memname {
    font-family: var(--font-family-monospace);
}

.memdoc {
    border: 1px solid var(--border-color);
    border-top: none;
    border-radius: 0 0 var(--border-radius-small) var(--border-radius-small);
    padding: var(--spacing-medium);
    background-color: var(--page-bg);
}

.memproto {
    background-color: var(--fragment-bg);
    border: 1px solid var(--border-color);
    padding: var(--spacing-small) var(--spacing-medium);
    border-radius: var(--border-radius-small);
}

.paramname em,
.paramname span.paramname {
    color: var(--bn-red-light);
    font-style: italic;
}

.paramtype .el {
    color: var(--bn-red-dark);
}

/* ============================================================================
 * THREAD SAFETY BADGES (Binary Ninja specific)
 * ============================================================================ */
dl.threadsafe {
    position: absolute;
    top: 0px;
    right: 8px;
    margin-top: 5px;
    background-color: var(--code-bg);
    font-weight: normal;
    padding: 2px 4px 2px 10px;
    border-radius: 4px;
    border: 1px solid var(--border-color);
}

html.dark-mode dl.threadsafe {
    background-color: var(--code-bg);
}

.threadsafe dt {
    padding-right: 40px;
    color: var(--page-text);
}

.threadsafe.Main.Thread.Only dt {
    padding-right: 155px;
}

.threadsafe.Yes dd {
    display: inline;
    margin-inline-start: 0;
    position: absolute;
    top: 0px;
    right: 0px;
    padding: 3px 8px;
    background-color: #6b9d63;
    color: #ffffff;
    border-bottom-right-radius: 3px;
    border-top-right-radius: 3px;
    min-width: 28px;
    text-align: center;
    font-weight: 600;
}

html.dark-mode .threadsafe.Yes dd {
    background-color: #5a7a54;
    color: #e8f5e6;
}

.threadsafe.No dd {
    display: inline;
    margin-inline-start: 0;
    position: absolute;
    top: 0px;
    right: 0px;
    padding: 3px 8px;
    background-color: #c76058;
    color: #ffffff;
    border-bottom-right-radius: 3px;
    border-top-right-radius: 3px;
    min-width: 28px;
    text-align: center;
    font-weight: 600;
}

html.dark-mode .threadsafe.No dd {
    background-color: #9d5048;
    color: #fce8e6;
}

.threadsafe.Main.Thread.Only dd {
    display: inline;
    margin-inline-start: 0;
    position: absolute;
    top: 0px;
    right: 0px;
    padding: 3px 8px;
    background-color: #c76058;
    color: #ffffff;
    border-bottom-right-radius: 3px;
    border-top-right-radius: 3px;
    min-width: 145px;
    text-align: center;
    font-weight: 600;
}

html.dark-mode .threadsafe.Main.Thread.Only dd {
    background-color: #9d5048;
    color: #fce8e6;
}

img.thread {
    max-width: 15px;
    position: relative;
    top: 2px;
    padding-right: 3px;
}

html.dark-mode img.thread {
    filter: invert(0.7);
}

/* ============================================================================
 * BINARY NINJA CUSTOMIZATIONS
 * ============================================================================ */

/* External link icon */
div.contents a[href^="http"]:after {
    content: " " url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAVklEQVR4Xn3PgQkAMQhDUXfqTu7kTtkpd5RA8AInfArtQ2iRXFWT2QedAfttj2FsPIOE1eCOlEuoWWjgzYaB/IkeGOrxXhqB+uA9Bfcm0lAZuh+YIeAD+cAqSz4kCMUAAAAASUVORK5CYII=);
}

/* GitHub logo */
.githublogo {
    content: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NDkxMSwgMjAxMy8xMC8yOS0xMTo0NzoxNiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RERCMUIwOUY4NkNFMTFFM0FBNTJFRTMzNTJEMUJDNDYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RERCMUIwOUU4NkNFMTFFM0FBNTJFRTMzNTJEMUJDNDYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkU1MTc4QTJBOTlBMDExRTI5QTE1QkMxMDQ2QTg5MDREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkU1MTc4QTJCOTlBMDExRTI5QTE1QkMxMDQ2QTg5MDREIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+jUqS1wAAApVJREFUeNq0l89rE1EQx3e3gVJoSPzZeNEWPKgHoa0HBak0iHiy/4C3WvDmoZ56qJ7txVsPQu8qlqqHIhRKJZceesmhioQEfxTEtsoSpdJg1u/ABJ7Pmc1m8zLwgWTmzcw3L+/te+tHUeQltONgCkyCi2AEDHLsJ6iBMlgHL8FeoqokoA2j4CloRMmtwTmj7erHBXPgCWhG6a3JNXKdCiDl1sidVbXZkJoXQRi5t5BrxwoY71FzU8S4JuAIqFkJ2+BFSlEh525b/hr3+k/AklDkNsf6wTT4yv46KIMNpsy+iMdMc47HNWxbsgVcUn7FmLAzzoFAWDsBx+wVP6bUpp5ewI+DOeUx0Wd9D8F70BTGNjkWtqnhmT1JQAHcUgZd8Lo3rQb1LAT8eJVUfgGvHQigGp+V2Z0iAUUl8QH47kAA1XioxIo+bRN8OG8F/oBjwv+Z1nJgX5jpdzQDw0LCjsPmrcW7I/iHScCAEDj03FtD8A0EyuChHgg4KTlJQF3wZ7WELppnBX+dBFSVpJsOBWi1qiRgSwnOgoyD5hmuJdkWCVhTgnTvW3AgYIFrSbZGh0UW/Io5Vp+DQoK7o80pztWMemZbgxeNwCNwDbw1fIfgGZjhU6xPaJgBV8BdsMw5cbZoHsenwYFxkZzl83xTSKTiviCAfCsJLysH3POfC8m8NegyGAGfLP/VmGmfSChgXroR0RSWjEFv2J/nG84cuKFMf4sTCZqXuJd4KaXFVjEG3+tw4eXbNK/YC9oXXs3O8NY8y99L4BXY5cvLY/Bb2VZ58EOJVcB18DHJq9lRsKr8inyKGVjlmh29mtHs3AHfuhCwy1vXT/Nu2GKQt+UHsGdctyX6eQyNvc+5sfX9Dl7Pe2J/BRgAl2CpwmrsHR0AAAAASUVORK5CYII=);
}

/* Group headers */
td h2.groupheader, h2.groupheader {
    border-bottom: 0px;
    color: var(--page-text);
    background: var(--page-bg);
    font-weight: 600;
    margin-top: var(--spacing-large);
}

/* Table of Contents - Disabled */
div.contents .toc {
    display: none;
}

div.toc {
    display: none;
}

/* ============================================================================
 * SCROLLBAR STYLING
 * ============================================================================ */
::-webkit-scrollbar {
    width: 7px;
    height: 7px;
}

::-webkit-scrollbar-track {
    background: transparent;
}

::-webkit-scrollbar-thumb {
    background-color: var(--border-color);
    border-radius: var(--border-radius-small);
}

::-webkit-scrollbar-thumb:hover {
    background-color: var(--page-text-secondary);
}

#nav-tree::-webkit-scrollbar-thumb,
div.fragment::-webkit-scrollbar-thumb,
pre.fragment::-webkit-scrollbar-thumb {
    background-color: transparent;
    border: 4px solid transparent;
    border-radius: 12px;
    background-clip: padding-box;
}

#nav-tree:hover::-webkit-scrollbar-thumb,
div.fragment:hover::-webkit-scrollbar-thumb,
pre.fragment:hover::-webkit-scrollbar-thumb {
    background-color: var(--border-color);
}

#nav-tree::-webkit-scrollbar-corner {
    background-color: var(--sidebar-bg);
}

/* Firefox scrollbar */
#nav-tree,
div.fragment,
pre.fragment {
    scrollbar-width: thin;
    scrollbar-color: var(--border-color) transparent;
}

/* ============================================================================
 * DARK MODE TOGGLE (Hidden - CSS-only system preference)
 * ============================================================================ */
#bn-darkmode-toggle {
    display: none;
}

/* ============================================================================
 * IMAGE HANDLING IN DARK MODE
 * ============================================================================ */
html.dark-mode div.contents div.dyncontent img,
html.dark-mode div.contents center img,
html.dark-mode div.contents > table img {
    filter: brightness(89%) hue-rotate(180deg) invert();
}

html.dark-mode .darkmode_inverted_image img,
html.dark-mode .darkmode_inverted_image object[type="image/svg+xml"] {
    filter: brightness(89%) hue-rotate(180deg) invert();
}

/* ============================================================================
 * SIDEBAR COLLAPSE
 * ============================================================================ */

.sidebar-toggle {
    position: absolute;
    top: 10px;
    right: 10px;
    z-index: 1000;
    width: 30px;
    height: 30px;
    border: 1px solid var(--border-color);
    background-color: var(--page-bg);
    color: var(--page-text);
    cursor: pointer;
    font-size: 18px;
    font-weight: bold;
    border-radius: 3px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.2s ease;
}

.sidebar-toggle:hover {
    background-color: var(--table-header-bg);
    border-color: var(--link-color);
}

/* Collapsed sidebar state */
#side-nav.collapsed {
    width: 0 !important;
    min-width: 0 !important;
    max-width: 0 !important;
    overflow: visible;
}

#side-nav.collapsed .sidebar-toggle {
    left: 10px;
    right: auto;
}

/* Hide header/top when collapsed */
#top.collapsed,
#titlearea.collapsed {
    display: none !important;
}

#doc-content.sidebar-collapsed,
#container.sidebar-collapsed {
    margin-left: 0 !important;
}

#doc-content.sidebar-collapsed {
    width: 100% !important;
}

.ui-resizable-handle {
    transition: left 0.3s ease;
}

#side-nav.collapsed ~ #splitbar {
    left: 0 !important;
    display: none;
}
