/* ==========================================================================
   Unity Nexus — Custom Doxygen Theme
   Built on Bootstrap 5 — compatible with Doxygen 1.16.x navtree layout
   ========================================================================== */

/* --------------------------------------------------------------------------
   Design tokens
   -------------------------------------------------------------------------- */
:root {
  --nx-bg:           #0d0f14;
  --nx-bg-surface:   #13161e;
  --nx-bg-elevated:  #1a1e28;
  --nx-border:       #262b38;
  --nx-accent:       #4f8ef7;
  --nx-accent-hover: #3a7be0;
  --nx-accent-glow:  rgba(79, 142, 247, 0.15);
  --nx-text:         #e2e6f0;
  --nx-text-muted:   #7b8299;
  --nx-text-heading: #ffffff;
  --nx-code-bg:      #0a0c10;
  --nx-font:         'Inter', system-ui, sans-serif;
  --nx-mono:         'JetBrains Mono', 'Fira Code', monospace;
  --nx-radius:       8px;
  --nx-radius-sm:    4px;
  --nx-navbar-h:     60px;
}

/* --------------------------------------------------------------------------
   Base reset — override Doxygen defaults
   -------------------------------------------------------------------------- */
html, body {
  background: var(--nx-bg) !important;
  color: var(--nx-text) !important;
  font-family: var(--nx-font) !important;
  font-size: 15px !important;
  line-height: 1.7 !important;
  margin: 0;
  padding: 0;
}

a {
  color: var(--nx-accent) !important;
  text-decoration: none !important;
  transition: color 0.15s;
}
a:hover {
  color: var(--nx-accent-hover) !important;
  text-decoration: underline !important;
}

/* --------------------------------------------------------------------------
   Navbar
   -------------------------------------------------------------------------- */
.nx-navbar {
  background: var(--nx-bg-surface) !important;
  border-bottom: 1px solid var(--nx-border) !important;
  height: var(--nx-navbar-h);
  z-index: 1000;
}

.nx-logo-mark {
  width: 32px;
  height: 32px;
  background: var(--nx-accent);
  border-radius: var(--nx-radius-sm);
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: 16px;
  color: #fff !important;
  letter-spacing: -0.5px;
  flex-shrink: 0;
  text-decoration: none !important;
}
.nx-logo-mark--sm { width: 24px; height: 24px; font-size: 12px; border-radius: 3px; }

.nx-logo-text { font-size: 16px; color: var(--nx-text) !important; font-weight: 400; }
.nx-logo-text strong { color: var(--nx-text-heading) !important; font-weight: 700; }

.nx-navbar .nav-link {
  color: var(--nx-text-muted) !important;
  font-size: 14px;
  font-weight: 500;
  padding: 0.4rem 0.75rem !important;
  border-radius: var(--nx-radius-sm);
  transition: color 0.15s, background 0.15s;
}
.nx-navbar .nav-link:hover {
  color: var(--nx-text) !important;
  background: var(--nx-bg-elevated);
  text-decoration: none !important;
}
.nx-navbar .navbar-toggler { border-color: var(--nx-border); }
.nx-navbar .navbar-toggler-icon { filter: invert(1); }

.nx-version-badge {
  background: var(--nx-accent-glow);
  color: var(--nx-accent) !important;
  border: 1px solid var(--nx-accent);
  font-size: 11px;
  font-weight: 600;
  padding: 3px 8px;
  border-radius: 20px;
}

.nx-btn-github {
  background: var(--nx-bg-elevated) !important;
  border: 1px solid var(--nx-border) !important;
  color: var(--nx-text) !important;
  font-size: 13px;
  font-weight: 500;
  padding: 5px 14px;
  border-radius: var(--nx-radius-sm) !important;
  transition: border-color 0.15s, background 0.15s;
  text-decoration: none !important;
}
.nx-btn-github:hover {
  background: var(--nx-border) !important;
  border-color: var(--nx-accent) !important;
  color: var(--nx-text) !important;
  text-decoration: none !important;
}

/* --------------------------------------------------------------------------
   Doxygen uses JS-driven absolute/grid layout for sidebar + content.
   Work WITH it — restyle only, don't fight the positioning.
   -------------------------------------------------------------------------- */
#container { background: var(--nx-bg) !important; }

/* --------------------------------------------------------------------------
   Sidebar
   -------------------------------------------------------------------------- */
#side-nav,
#nav-tree {
  background: var(--nx-bg-surface) !important;
  border-right: 1px solid var(--nx-border) !important;
}
#nav-tree { scrollbar-width: thin; scrollbar-color: var(--nx-border) var(--nx-bg-surface); }

#nav-tree .label,
#nav-tree .label a {
  font-family: var(--nx-font) !important;
  font-size: 13px !important;
  color: var(--nx-text-muted) !important;
  line-height: 24px !important;
}
#nav-tree .label a:hover { color: var(--nx-text) !important; text-decoration: none !important; }

#nav-tree .selected {
  background-color: var(--nx-accent-glow) !important;
  border-right: 2px solid var(--nx-accent);
  border-radius: 0 !important;
}
#nav-tree .selected a,
#nav-tree .selected .label a { color: var(--nx-accent) !important; }

#splitbar, .ui-resizable-e {
  background: var(--nx-border) !important;
  opacity: 1 !important;
  width: 4px !important;
}
.ui-resizable-e:hover { background: var(--nx-accent) !important; }

/* --------------------------------------------------------------------------
   Main content
   -------------------------------------------------------------------------- */
#doc-content {
  background: var(--nx-bg) !important;
  color: var(--nx-text) !important;
  padding: 0 !important;
}

.contents, div.contents {
  padding: 2rem 2.5rem !important;
  max-width: 960px;
  color: var(--nx-text) !important;
}

/* --------------------------------------------------------------------------
   Headings
   -------------------------------------------------------------------------- */
h1, h2, h3, h4, h5, h6, .title, .groupheader {
  color: var(--nx-text-heading) !important;
  font-family: var(--nx-font) !important;
  font-weight: 700 !important;
}
h1, .title { font-size: 1.85rem !important; }
h2, .groupheader {
  font-size: 1.35rem !important;
  border-bottom: 1px solid var(--nx-border) !important;
  padding-bottom: 0.35rem;
}
h3 { font-size: 1.1rem !important; }

/* --------------------------------------------------------------------------
   Member items
   -------------------------------------------------------------------------- */
.memitem {
  background: var(--nx-bg-surface) !important;
  border: 1px solid var(--nx-border) !important;
  border-radius: var(--nx-radius) !important;
  margin-bottom: 1.25rem !important;
  box-shadow: none !important;
  overflow: hidden;
}
.memproto {
  background: var(--nx-bg-elevated) !important;
  border-bottom: 1px solid var(--nx-border) !important;
  padding: 10px 16px !important;
  font-family: var(--nx-mono) !important;
  font-size: 13px !important;
  color: var(--nx-text-heading) !important;
}
.memdoc {
  background: var(--nx-bg-surface) !important;
  padding: 12px 16px !important;
  font-size: 14px !important;
  color: var(--nx-text) !important;
}
.memSeparator { border: none !important; border-top: 1px solid var(--nx-border) !important; }

.memItemLeft, .memItemRight, .mdescLeft, .mdescRight {
  background: transparent !important;
  color: var(--nx-text) !important;
  border: none !important;
  font-family: var(--nx-font) !important;
}
.memItemLeft, .memItemRight { font-family: var(--nx-mono) !important; font-size: 13px !important; }
tr.memlist:hover td { background: var(--nx-bg-elevated) !important; }

/* --------------------------------------------------------------------------
   Tables
   -------------------------------------------------------------------------- */
table.fieldtable {
  background: var(--nx-bg-surface) !important;
  border: 1px solid var(--nx-border) !important;
  border-radius: var(--nx-radius) !important;
  border-collapse: separate !important;
  border-spacing: 0 !important;
  overflow: hidden;
  width: 100%;
}
table.fieldtable th {
  background: var(--nx-bg-elevated) !important;
  color: var(--nx-text-heading) !important;
  font-weight: 600 !important;
  padding: 8px 12px !important;
  border-bottom: 1px solid var(--nx-border) !important;
  font-family: var(--nx-font) !important;
  font-size: 13px !important;
}
table.fieldtable td {
  padding: 8px 12px !important;
  border-bottom: 1px solid var(--nx-border) !important;
  color: var(--nx-text) !important;
  font-size: 13px !important;
}

/* --------------------------------------------------------------------------
   Code blocks
   -------------------------------------------------------------------------- */
pre, code, .fragment, tt { font-family: var(--nx-mono) !important; font-size: 13px !important; }

pre, .fragment {
  background: var(--nx-code-bg) !important;
  border: 1px solid var(--nx-border) !important;
  border-radius: var(--nx-radius) !important;
  padding: 1rem 1.25rem !important;
  overflow-x: auto;
  line-height: 1.6 !important;
  margin: 0.85rem 0 !important;
  color: var(--nx-text) !important;
}
code {
  background: var(--nx-bg-elevated) !important;
  border: 1px solid var(--nx-border) !important;
  border-radius: 3px !important;
  padding: 2px 6px !important;
  color: var(--nx-accent) !important;
}

span.keyword     { color: #c792ea !important; }
span.keywordtype { color: #82aaff !important; }
span.keywordflow { color: #f78c6c !important; }
span.comment     { color: #546e7a !important; font-style: italic !important; }
span.preprocessor{ color: #89ddf7 !important; }
span.stringliteral{ color: #c3e88d !important; }
span.charliteral { color: #f07178 !important; }

div.line {
  color: var(--nx-text) !important;
  font-family: var(--nx-mono) !important;
  font-size: 13px !important;
  line-height: 1.6 !important;
}
span.lineno, span.lineno a {
  color: var(--nx-text-muted) !important;
  background: var(--nx-bg-elevated) !important;
  border-right: 1px solid var(--nx-border) !important;
  padding-right: 8px !important;
  margin-right: 8px !important;
}

/* --------------------------------------------------------------------------
   Callout boxes
   -------------------------------------------------------------------------- */
dl.note, dl.warning, dl.attention, dl.pre, dl.post,
dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.remark {
  border-left: 3px solid var(--nx-accent);
  border-radius: 0 var(--nx-radius) var(--nx-radius) 0;
  padding: 10px 14px !important;
  margin: 1rem 0 !important;
  background: var(--nx-bg-elevated) !important;
  color: var(--nx-text) !important;
}
dl.warning, dl.attention { border-left-color: #f78c6c !important; }
dl.deprecated             { border-left-color: var(--nx-text-muted) !important; }
dl.todo                   { border-left-color: #ffcb6b !important; }
dl.bug                    { border-left-color: #f07178 !important; }
dl.remark                 { border-left-color: #c3e88d !important; }
dt { font-weight: 700 !important; color: var(--nx-text-heading) !important; }

/* --------------------------------------------------------------------------
   Breadcrumbs
   -------------------------------------------------------------------------- */
#nav-path { background: var(--nx-bg-surface) !important; border-top: 1px solid var(--nx-border) !important; border-bottom: 1px solid var(--nx-border) !important; }
#nav-path ul { border: none !important; margin: 0 !important; padding: 4px 1rem !important; list-style: none; display: flex; flex-wrap: wrap; gap: 2px; }
#nav-path li.navelem { font-size: 12px !important; color: var(--nx-text-muted) !important; }
#nav-path li.navelem a { color: var(--nx-text-muted) !important; font-size: 12px !important; }
#nav-path li.navelem a:hover { color: var(--nx-accent) !important; }
#nav-path li.footer { display: none; }

/* --------------------------------------------------------------------------
   Search
   -------------------------------------------------------------------------- */
#MSearchResultsWindow {
  background: var(--nx-bg-surface) !important;
  border: 1px solid var(--nx-border) !important;
  border-radius: var(--nx-radius) !important;
  box-shadow: 0 8px 32px rgba(0,0,0,0.5) !important;
  color: var(--nx-text) !important;
}
.SRResult { border-bottom: 1px solid var(--nx-border) !important; }
.SREntry a { color: var(--nx-accent) !important; }
.SRPage .SRStatus { color: var(--nx-text-muted) !important; }

.nx-search-box #MSearchField {
  background: var(--nx-bg-elevated) !important;
  border: 1px solid var(--nx-border) !important;
  border-radius: var(--nx-radius-sm) !important;
  color: var(--nx-text) !important;
  font-size: 13px !important;
  padding: 5px 10px !important;
  outline: none !important;
  font-family: var(--nx-font) !important;
}
.nx-search-box #MSearchField:focus {
  border-color: var(--nx-accent) !important;
  box-shadow: 0 0 0 3px var(--nx-accent-glow) !important;
}

/* --------------------------------------------------------------------------
   Footer
   -------------------------------------------------------------------------- */
.nx-footer { background: var(--nx-bg-surface) !important; border-top: 1px solid var(--nx-border) !important; }
.nx-footer-brand { font-size: 14px; color: var(--nx-text-muted) !important; }
.nx-footer-brand strong { color: var(--nx-text) !important; }
.nx-footer-links a { font-size: 13px; color: var(--nx-text-muted) !important; transition: color 0.15s; }
.nx-footer-links a:hover { color: var(--nx-accent) !important; text-decoration: none !important; }
.nx-footer-meta { color: var(--nx-text-muted) !important; font-size: 12px; }
.nx-footer-meta a { color: var(--nx-text-muted) !important; }
.nx-footer-meta a:hover { color: var(--nx-accent) !important; }
address.footer { display: none !important; }

/* --------------------------------------------------------------------------
   Scrollbar
   -------------------------------------------------------------------------- */
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: var(--nx-bg); }
::-webkit-scrollbar-thumb { background: var(--nx-border); border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: var(--nx-text-muted); }

/* --------------------------------------------------------------------------
   Responsive
   -------------------------------------------------------------------------- */
@media (max-width: 768px) {
  .contents, div.contents { padding: 1.25rem !important; }
}
