summaryrefslogtreecommitdiff
path: root/api-docs/cppdocs/binaryninja-docs.css
diff options
context:
space:
mode:
Diffstat (limited to 'api-docs/cppdocs/binaryninja-docs.css')
-rw-r--r--api-docs/cppdocs/binaryninja-docs.css1232
1 files changed, 1232 insertions, 0 deletions
diff --git a/api-docs/cppdocs/binaryninja-docs.css b/api-docs/cppdocs/binaryninja-docs.css
new file mode 100644
index 00000000..5079b072
--- /dev/null
+++ b/api-docs/cppdocs/binaryninja-docs.css
@@ -0,0 +1,1232 @@
+/* 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;
+
+ /* 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: #e4f3ff;
+ --note-border: #1879C4;
+ --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: 335px;
+ --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;
+
+ /* 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: #163750;
+ --note-border: #1982D2;
+ --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;
+
+ --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: #163750;
+ --note-border: #1982D2;
+ --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;
+}
+
+#nav-tree .item:hover .arrow {
+ opacity: 1;
+}
+
+#nav-tree .selected {
+ background-color: var(--bn-red);
+ color: #ffffff;
+}
+
+#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 {
+ height: var(--tree-item-height);
+ line-height: var(--tree-item-height);
+}
+
+#nav-tree .item:hover {
+ background-color: rgba(0,0,0,.05);
+}
+
+html.dark-mode #nav-tree .item:hover {
+ background-color: rgba(0,0,0,.4);
+}
+
+/* Undecorated root node */
+.children_ul a.index\.html {
+ display: initial;
+}
+
+a.index\.html {
+ display: none;
+}
+
+#nav-tree-contents > ul > li > .item {
+ height: 0px;
+}
+
+/* ============================================================================
+ * 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 {
+ 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
+ * ============================================================================ */
+table {
+ 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);
+}
+
+/* Detail level labels (default, inline, virtual, etc.) */
+table.mlabels {
+ border-spacing: 0;
+}
+
+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 {
+ font-family: var(--font-family-monospace);
+ color: var(--code-text);
+ border-collapse: collapse;
+ border-spacing: 0;
+ width: auto;
+ table-layout: auto;
+}
+
+table.memname td {
+ vertical-align: top;
+ font-family: var(--font-family-monospace);
+ padding: 0 10px 0 0;
+}
+
+/* Keep function name on first column from wrapping */
+table.memname td.memname {
+ white-space: nowrap;
+ width: 1%;
+}
+
+/* Constrain parameter type column width */
+table.memname td.paramtype {
+ white-space: nowrap;
+ width: 1%;
+}
+
+/* Parameter names should not wrap and stay compact */
+table.memname td.paramname {
+ white-space: nowrap;
+}
+
+/* Empty cells (paramkey) should not take space */
+table.memname td.paramkey {
+ width: 1%;
+}
+
+/* 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);
+}
+
+table tbody tr:nth-child(odd) {
+ background-color: var(--table-row-odd);
+}
+
+table tbody tr:nth-child(even) {
+ background-color: var(--table-row-even);
+}
+
+/* ============================================================================
+ * 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 {
+ 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: 10px;
+ background-color: #d0d6e2;
+ font-weight: normal;
+ padding: 2px 10px;
+ border-radius: 4px;
+}
+
+html.dark-mode dl.threadsafe {
+ background-color: #434956;
+}
+
+.threadsafe dt {
+ padding-right: 35px;
+}
+
+.threadsafe.Main.Thread.Only dt {
+ padding-right: 145px;
+}
+
+.threadsafe.Yes dd {
+ display: inline;
+ margin-inline-start: 0;
+ position: absolute;
+ top: 1px;
+ right: 1px;
+ padding: 1px 6px 1px 5px;
+ background-color: #9af78c;
+ border-bottom-right-radius: 3px;
+ border-top-right-radius: 3px;
+ width: 25px;
+ text-align: center;
+}
+
+html.dark-mode .threadsafe.Yes dd {
+ background-color: #4e8646;
+}
+
+.threadsafe.No dd {
+ display: inline;
+ margin-inline-start: 0;
+ position: absolute;
+ top: 1px;
+ right: 1px;
+ padding: 1px 6px 1px 5px;
+ background-color: #fb877d;
+ border-bottom-right-radius: 3px;
+ border-top-right-radius: 3px;
+ width: 25px;
+ text-align: center;
+}
+
+html.dark-mode .threadsafe.No dd {
+ background-color: #d0584d;
+}
+
+.threadsafe.Main.Thread.Only dd {
+ display: inline;
+ margin-inline-start: 0;
+ position: absolute;
+ top: 1px;
+ right: 1px;
+ padding: 1px 6px 1px 5px;
+ background-color: #fb877d;
+ border-bottom-right-radius: 3px;
+ border-top-right-radius: 3px;
+ width: 135px;
+ text-align: center;
+}
+
+html.dark-mode .threadsafe.Main.Thread.Only dd {
+ background-color: #d0584d;
+}
+
+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();
+}