/*
 * Copyright 2025 The Pigweed Authors
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 *
 *     https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

/* The standard CSS for doxygen 1.9.6*/

html {
  /* Pigweed styles */
  --pw-font-body: 'Noto Sans', sans-serif;
  --pw-font-code: 'Roboto Mono', monospace;
  --pw-font-headings: 'Lato', sans-serif;
  /* Light-mode-specific Pigweed styles */
  --pw-color-background-primary: #ffffff;
  --pw-color-background-secondary: #f8f9fb;
  --pw-color-background-code: #f8f8f8;
  --pw-color-brand-primary: #b529aa;
  --pw-color-brand-secondary: #016074;
  --pw-color-foreground-primary: #222832;
  --pw-color-link: #2a5adf;
  --pw-color-nav-active: var(--pw-color-brand-primary);
  --pw-color-nav-inactive: #48566b;
  --pw-color-search-background: var(--pw-color-row-odd);

  /* page base colors */
  --page-background-color: var(--pw-color-background-primary);
  --page-foreground-color: var(--pw-color-foreground-primary);
  --page-link-color: var(--pw-color-link);
  --page-visited-link-color: var(--pw-color-link);

  /* index */
  --index-odd-item-bg-color: var(--pw-color-background-primary);
  --index-even-item-bg-color: var(--pw-color-background-primary);
  --index-header-color: black;
  --index-separator-color: #a0a0a0;

  /* header */
  --header-background-color: var(--pw-color-background-primary);
  --header-separator-color: var(--separator-color);
  --group-header-separator-color: var(--separator-color);
  --group-header-color: var(--pw-color-foreground-primary);
  --inherit-header-color: gray;

  --footer-foreground-color: #2a3d61;
  --footer-logo-width: 104px;
  --citation-label-color: #334975;
  --glow-color: cyan;

  --title-background-color: var(--pw-color-background-secondary);
  --title-separator-color: var(--separator-color);
  --directory-separator-color: var(--separator-color);
  --separator-color: #d1d5da;

  --blockquote-background-color: #f7f8fb;
  --blockquote-border-color: #9cafd4;

  --scrollbar-thumb-color: #9cafd4;
  --scrollbar-background-color: #f9fafc;

  --icon-background-color: #728dc1;
  --icon-foreground-color: white;
  --icon-doc-image: url('doc.png');

  /* brief member declaration list */
  --memdecl-background-color: var(--pw-color-background-primary);
  --memdecl-separator-color: var(--separator-color);
  --memdecl-foreground-color: var(--pw-color-foreground-primary);
  --memdecl-template-color: var(--pw-color-foreground-primary);

  /* detailed member list */
  --memdef-border-color: var(--separator-color);
  --memdef-title-background-color: var(--pw-color-background-secondary);
  --memdef-proto-background-color: var(--pw-color-background-secondary);
  --memdef-proto-text-color: var(--pw-color-foreground-primary);
  --memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
  --memdef-doc-background-color: var(--pw-color-background-primary);
  --memdef-param-name-color: var(--pw-color-foreground-primary);
  --memdef-template-color: var(--pw-color-foreground-primary);

  /* tables */
  --table-cell-border-color: #2d4068;
  --table-header-background-color: #374f7f;
  --table-header-foreground-color: #ffffff;

  /* labels */
  --label-background-color: #728dc1;
  --label-left-top-border-color: #5373b4;
  --label-right-bottom-border-color: #c4cfe5;
  --label-foreground-color: white;

  /** navigation bar/tree/menu */
  --nav-background-color: var(--pw-color-background-primary);
  --nav-foreground-color: var(--pw-color-foreground-primary);
  --nav-breadcrumb-border-color: var(--separator-color);
  --nav-font-size-level1: 1em;
  --nav-font-size-level2: 1em;
  --nav-font-size-level3: 1em;
  --nav-text-normal-color: var(--pw-color-nav-inactive);
  --nav-text-hover-color: var(--pw-color-brand-secondary);
  --nav-text-active-color: var(--pw-color-nav-active);
  --nav-menu-button-color: #364d7c;
  --nav-menu-background-color: white;
  --nav-menu-foreground-color: #555555;
  --nav-menu-toggle-color: rgba(255, 255, 255, 0.5);
  --nav-arrow-color: #9cafd4;
  --nav-arrow-selected-color: #9cafd4;

  /* table of contents */
  --toc-background-color: #f4f6fa;
  --toc-border-color: #d8dfee;
  --toc-header-color: #4665a2;

  /** search field */
  --search-background-color: var(--pw-color-search-background);
  --search-foreground-color: var(--pw-color-nav-inactive);
  --search-magnification-image: url('mag.svg');
  --search-magnification-select-image: url('mag_sel.svg');
  --search-active-color: black;
  --search-filter-background-color: #f9fafc;
  --search-filter-foreground-color: black;
  --search-filter-border-color: #90a5ce;
  --search-filter-highlight-text-color: white;
  --search-filter-highlight-bg-color: #3d578c;
  --search-results-foreground-color: #425e97;
  --search-results-background-color: #eef1f7;
  --search-results-border-color: black;
  --search-box-shadow: inset 0.5px 0.5px 3px 0px #555;

  /** code fragments */
  --code-keyword-color: #008000;
  --code-type-keyword-color: #604020;
  --code-flow-keyword-color: #e08000;
  --code-comment-color: #800000;
  --code-preprocessor-color: #806020;
  --code-string-literal-color: #002080;
  --code-char-literal-color: #008080;
  --code-vhdl-digit-color: #ff00ff;
  --code-vhdl-char-color: #000000;
  --code-vhdl-keyword-color: #700070;
  --code-vhdl-logic-color: #ff0000;
  --code-link-color: #4665a2;
  --code-external-link-color: #4665a2;
  --fragment-foreground-color: var(--pw-color-foreground-primary);
  --fragment-background-color: var(--pw-color-background-code);
  --fragment-border-color: #c4cfe5;
  --fragment-lineno-border-color: #00ff00;
  --fragment-lineno-background-color: #e8e8e8;
  --fragment-lineno-foreground-color: black;
  --fragment-lineno-link-fg-color: #4665a2;
  --fragment-lineno-link-bg-color: #d8d8d8;
  --fragment-lineno-link-hover-fg-color: #4665a2;
  --fragment-lineno-link-hover-bg-color: #c8c8c8;
  --tooltip-foreground-color: black;
  --tooltip-background-color: white;
  --tooltip-border-color: gray;
  --tooltip-doc-color: grey;
  --tooltip-declaration-color: #006318;
  --tooltip-link-color: #4665a2;
  --tooltip-shadow: 1px 1px 7px gray;

  /** font-family */
  --font-family-normal: var(--pw-font-body);
  --font-family-monospace: var(--pw-font-code);
  --font-family-nav: var(--pw-font-body);
  --font-family-title: var(--pw-font-headings);
  --font-family-toc: var(--pw-font-body);
  --font-family-search: var(--pw-font-code);
  --font-family-icon: var(--pw-font-body);
  --font-family-tooltip: var(--pw-font-code);
}

@media (prefers-color-scheme: dark) {
  html:not(.dark-mode) {
    color-scheme: dark;

    /* Dark-mode-specific Pigweed styles */
    --pw-color-background-primary: #1c2128;
    --pw-color-background-secondary: #22272e;
    --pw-color-background-code: #2d333b;
    --pw-color-brand-primary: #fb71fe;
    --pw-color-brand-secondary: #8be9fd;
    --pw-color-foreground-primary: #ffffffcc;
    --pw-color-link: #2b8cee;
    --pw-color-nav-inactive: #9ca4af;
    --pw-color-row-even: #29313d;
    --pw-color-row-odd: #222832;
    --pw-color-search-background: var(--pw-color-row-even);

    /* index */
    --index-header-color: #c4cfe5;
    --index-separator-color: #334975;

    /* header */
    --inherit-header-color: #a0a0a0;

    --footer-foreground-color: #5b7ab7;
    --footer-logo-width: 60px;
    --citation-label-color: #90a5ce;
    --glow-color: cyan;

    --separator-color: #48566b;

    --blockquote-background-color: #101826;
    --blockquote-border-color: #283a5d;

    --scrollbar-thumb-color: #283a5d;
    --scrollbar-background-color: #070b11;

    --icon-background-color: #334975;
    --icon-foreground-color: #c4cfe5;
    --icon-doc-image: url('docd.png');

    /* detailed member list */
    --memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9);

    /* tables */
    --table-cell-border-color: #283a5d;
    --table-header-background-color: #283a5d;
    --table-header-foreground-color: #c4cfe5;

    /* labels */
    --label-background-color: #354c7b;
    --label-left-top-border-color: #4665a2;
    --label-right-bottom-border-color: #283a5d;
    --label-foreground-color: #cccccc;

    /** navigation bar/tree/menu */
    --nav-menu-button-color: #b6c4df;
    --nav-menu-background-color: #05070c;
    --nav-menu-foreground-color: #bbbbbb;
    --nav-menu-toggle-color: rgba(255, 255, 255, 0.2);
    --nav-arrow-color: #334975;
    --nav-arrow-selected-color: #90a5ce;

    /* table of contents */
    --toc-background-color: #151e30;
    --toc-border-color: #202e4a;
    --toc-header-color: #a3b4d7;

    /** search field */
    --search-magnification-image: url('mag_d.svg');
    --search-magnification-select-image: url('mag_seld.svg');
    --search-active-color: #c5c5c5;
    --search-filter-background-color: #101826;
    --search-filter-foreground-color: #90a5ce;
    --search-filter-border-color: #7c95c6;
    --search-filter-highlight-text-color: #bcc9e2;
    --search-filter-highlight-bg-color: #283a5d;
    --search-results-background-color: #101826;
    --search-results-foreground-color: #90a5ce;
    --search-results-border-color: #7c95c6;
    --search-box-shadow: inset 0.5px 0.5px 3px 0px #2f436c;

    /** code fragments */
    --code-keyword-color: #cc99cd;
    --code-type-keyword-color: #ab99cd;
    --code-flow-keyword-color: #e08000;
    --code-comment-color: #717790;
    --code-preprocessor-color: #65cabe;
    --code-string-literal-color: #7ec699;
    --code-char-literal-color: #00e0f0;
    --code-vhdl-digit-color: #ff00ff;
    --code-vhdl-char-color: #000000;
    --code-vhdl-keyword-color: #700070;
    --code-vhdl-logic-color: #ff0000;
    --code-link-color: #79c0ff;
    --code-external-link-color: #79c0ff;
    --fragment-border-color: #30363d;
    --fragment-lineno-border-color: #30363d;
    --fragment-lineno-background-color: black;
    --fragment-lineno-foreground-color: #6e7681;
    --fragment-lineno-link-fg-color: #6e7681;
    --fragment-lineno-link-bg-color: #303030;
    --fragment-lineno-link-hover-fg-color: #8e96a1;
    --fragment-lineno-link-hover-bg-color: #505050;
    --tooltip-foreground-color: #c9d1d9;
    --tooltip-background-color: #202020;
    --tooltip-border-color: #c9d1d9;
    --tooltip-doc-color: #d9e1e9;
    --tooltip-declaration-color: #20c348;
    --tooltip-link-color: #79c0ff;
    --tooltip-shadow: none;
  }
}

body {
  background-color: var(--page-background-color);
  color: var(--page-foreground-color);
}

body,
table,
div,
p,
dl {
  font-weight: 400;
  font-size: 14px;
  font-family: var(--font-family-normal);
  line-height: 22px;
}

/* @group Heading Levels */

.title {
  font-weight: 400;
  font-size: 14px;
  font-family: var(--font-family-title);
  line-height: 28px;
  font-size: 150%;
  font-weight: bold;
  margin: 10px 2px;
}

h1.groupheader {
  font-size: 150%;
  font-family: var(--font-family-title);
}

h2.groupheader {
  color: var(--group-header-color);
  font-size: 140%;
  font-weight: normal;
  margin-top: 0;
  padding-top: 0;
  padding-bottom: 0.5em;
  width: 100%;
  font-family: var(--font-family-title);
}

h3.groupheader {
  font-size: 100%;
  font-family: var(--font-family-title);
}

h1,
h2,
h3,
h4,
h5,
h6 {
  -webkit-transition: text-shadow 0.5s linear;
  -moz-transition: text-shadow 0.5s linear;
  -ms-transition: text-shadow 0.5s linear;
  -o-transition: text-shadow 0.5s linear;
  transition: text-shadow 0.5s linear;
  margin-right: 15px;
  font-family: var(--font-family-title);
}

h1.glow,
h2.glow,
h3.glow,
h4.glow,
h5.glow,
h6.glow {
  text-shadow: 0 0 15px var(--glow-color);
}

dt {
  font-weight: bold;
}

p.startli,
p.startdd {
  margin-top: 2px;
}

th p.starttd,
th p.intertd,
th p.endtd {
  font-size: 100%;
  font-weight: 700;
}

p.starttd {
  margin-top: 0px;
}

p.endli {
  margin-bottom: 0px;
}

p.enddd {
  margin-bottom: 4px;
}

p.endtd {
  margin-bottom: 2px;
}

p.interli {
}

p.interdd {
}

p.intertd {
}

/* @end */

caption {
  font-weight: bold;
}

span.legend {
  font-size: 70%;
  text-align: center;
}

h3.version {
  font-size: 90%;
  text-align: center;
}

div.navtab {
  padding-right: 15px;
  text-align: right;
  line-height: 110%;
}

div.navtab table {
  border-spacing: 0;
}

td.navtab {
  padding-right: 6px;
  padding-left: 6px;
}

td.navtabHL {
  padding-right: 6px;
  padding-left: 6px;
}

td.navtabHL a,
td.navtabHL a:visited {
  color: var(--nav-text-hover-color);
}

a.navtab {
  font-weight: bold;
}

div.qindex {
  text-align: center;
  width: 100%;
  line-height: 140%;
  font-size: 130%;
  color: var(--index-separator-color);
}

dt.alphachar {
  font-size: 180%;
  font-weight: bold;
}

.alphachar a {
  color: var(--index-header-color);
}

.alphachar a:hover,
.alphachar a:visited {
  text-decoration: none;
}

.classindex dl {
  padding: 25px;
  column-count: 1;
}

.classindex dd {
  display: inline-block;
  margin-left: 50px;
  width: 90%;
  line-height: 1.15em;
}

.classindex dl.even {
  background-color: var(--index-even-item-bg-color);
}

.classindex dl.odd {
  background-color: var(--index-odd-item-bg-color);
}

@media (min-width: 1120px) {
  .classindex dl {
    column-count: 2;
  }
}

@media (min-width: 1320px) {
  .classindex dl {
    column-count: 3;
  }
}

/* @group Link Styling */

a {
  color: var(--page-link-color);
  font-weight: normal;
  text-decoration: none;
}

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

/* Hide the "More..." link that appears in the "Brief description" section. */
.contents a[href='#details'] {
  display: none;
}

a:hover {
  text-decoration: underline;
}

a.el {
  font-weight: bold;
}

a.elRef {
}

a.code,
a.code:visited,
a.line,
a.line:visited {
  color: var(--code-link-color);
}

a.codeRef,
a.codeRef:visited,
a.lineRef,
a.lineRef:visited {
  color: var(--code-external-link-color);
}

a.code.hl_class {
  /* style for links to class names in code snippets */
}
a.code.hl_struct {
  /* style for links to struct names in code snippets */
}
a.code.hl_union {
  /* style for links to union names in code snippets */
}
a.code.hl_interface {
  /* style for links to interface names in code snippets */
}
a.code.hl_protocol {
  /* style for links to protocol names in code snippets */
}
a.code.hl_category {
  /* style for links to category names in code snippets */
}
a.code.hl_exception {
  /* style for links to exception names in code snippets */
}
a.code.hl_service {
  /* style for links to service names in code snippets */
}
a.code.hl_singleton {
  /* style for links to singleton names in code snippets */
}
a.code.hl_concept {
  /* style for links to concept names in code snippets */
}
a.code.hl_namespace {
  /* style for links to namespace names in code snippets */
}
a.code.hl_package {
  /* style for links to package names in code snippets */
}
a.code.hl_define {
  /* style for links to macro names in code snippets */
}
a.code.hl_function {
  /* style for links to function names in code snippets */
}
a.code.hl_variable {
  /* style for links to variable names in code snippets */
}
a.code.hl_typedef {
  /* style for links to typedef names in code snippets */
}
a.code.hl_enumvalue {
  /* style for links to enum value names in code snippets */
}
a.code.hl_enumeration {
  /* style for links to enumeration names in code snippets */
}
a.code.hl_signal {
  /* style for links to Qt signal names in code snippets */
}
a.code.hl_slot {
  /* style for links to Qt slot names in code snippets */
}
a.code.hl_friend {
  /* style for links to friend names in code snippets */
}
a.code.hl_dcop {
  /* style for links to KDE3 DCOP names in code snippets */
}
a.code.hl_property {
  /* style for links to property names in code snippets */
}
a.code.hl_event {
  /* style for links to event names in code snippets */
}
a.code.hl_sequence {
  /* style for links to sequence names in code snippets */
}
a.code.hl_dictionary {
  /* style for links to dictionary names in code snippets */
}

/* @end */

dl.el {
  margin-left: -1cm;
}

ul {
  overflow: visible;
}

ul.multicol {
  -moz-column-gap: 1em;
  -webkit-column-gap: 1em;
  column-gap: 1em;
  -moz-column-count: 3;
  -webkit-column-count: 3;
  column-count: 3;
  list-style-type: none;
}

#side-nav ul {
  overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */
}

#main-nav ul {
  overflow: visible; /* reset ul rule for the navigation bar drop down lists */
}

.fragment {
  text-align: left;
  direction: ltr;
  overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/
  overflow-y: hidden;
  padding: 0.5em;
}

pre.fragment {
  border: 1px solid var(--fragment-border-color);
  background-color: var(--fragment-background-color);
  color: var(--fragment-foreground-color);
  padding: 4px 6px;
  margin: 4px 8px 4px 2px;
  overflow: auto;
  word-wrap: break-word;
  font-size: 9pt;
  line-height: 125%;
  font-family: var(--font-family-monospace);
  font-size: 105%;
}

div.fragment {
  padding: 1em;
  margin: 4px 8px 4px 2px;
  color: var(--fragment-foreground-color);
  background-color: var(--fragment-background-color);
  border: 1px solid var(--fragment-border-color);
}

div.line {
  font-family: var(--font-family-monospace);
  font-size: 13px;
  min-height: 13px;
  line-height: 1;
  text-wrap: unrestricted;
  white-space: -moz-pre-wrap; /* Moz */
  white-space: -pre-wrap; /* Opera 4-6 */
  white-space: -o-pre-wrap; /* Opera 7 */
  white-space: pre-wrap; /* CSS3  */
  word-wrap: break-word; /* IE 5.5+ */
  text-indent: -53px;
  padding-left: 53px;
  padding-bottom: 0px;
  margin: 0px;
  -webkit-transition-property: background-color, box-shadow;
  -webkit-transition-duration: 0.5s;
  -moz-transition-property: background-color, box-shadow;
  -moz-transition-duration: 0.5s;
  -ms-transition-property: background-color, box-shadow;
  -ms-transition-duration: 0.5s;
  -o-transition-property: background-color, box-shadow;
  -o-transition-duration: 0.5s;
  transition-property: background-color, box-shadow;
  transition-duration: 0.5s;
}

div.line:after {
  content: '\000A';
  white-space: pre;
}

div.line.glow {
  background-color: var(--glow-color);
  box-shadow: 0 0 10px var(--glow-color);
}

span.lineno {
  padding-right: 4px;
  margin-right: 9px;
  text-align: right;
  border-right: 2px solid var(--fragment-lineno-border-color);
  color: var(--fragment-lineno-foreground-color);
  background-color: var(--fragment-lineno-background-color);
  white-space: pre;
}

span.lineno a,
span.lineno a:visited {
  color: var(--fragment-lineno-link-fg-color);
  background-color: var(--fragment-lineno-link-bg-color);
}

span.lineno a:hover {
  color: var(--fragment-lineno-link-hover-fg-color);
  background-color: var(--fragment-lineno-link-hover-bg-color);
}

.lineno {
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

div.classindex ul {
  list-style: none;
  padding-left: 0;
}

div.classindex span.ai {
  display: inline-block;
}

div.groupHeader {
  margin-left: 16px;
  margin-top: 12px;
  font-weight: bold;
}

div.groupText {
  margin-left: 16px;
  font-style: italic;
}

body {
  color: var(--page-foreground-color);
  margin: 0;
}

div.contents {
  margin-top: 10px;
  margin-left: 12px;
  margin-right: 8px;
}

p.formulaDsp {
  text-align: center;
}

img.dark-mode-visible {
  display: none;
}

img.light-mode-visible {
  display: none;
}

img.formulaDsp {
}

img.formulaInl,
img.inline {
  vertical-align: middle;
}

div.center {
  text-align: center;
  margin-top: 0px;
  margin-bottom: 0px;
  padding: 0px;
}

div.center img {
  border: 0px;
}

address.footer {
  text-align: right;
  padding-right: 12px;
}

img.footer {
  border: 0px;
  vertical-align: middle;
  width: var(--footer-logo-width);
}

.compoundTemplParams {
  color: var(--memdecl-template-color);
  font-size: 80%;
  line-height: 120%;
}

/* @group Code Colorization */

span.keyword {
  color: var(--code-keyword-color);
}

span.keywordtype {
  color: var(--code-type-keyword-color);
}

span.keywordflow {
  color: var(--code-flow-keyword-color);
}

span.comment {
  color: var(--code-comment-color);
}

span.preprocessor {
  color: var(--code-preprocessor-color);
}

span.stringliteral {
  color: var(--code-string-literal-color);
}

span.charliteral {
  color: var(--code-char-literal-color);
}

span.vhdldigit {
  color: var(--code-vhdl-digit-color);
}

span.vhdlchar {
  color: var(--code-vhdl-char-color);
}

span.vhdlkeyword {
  color: var(--code-vhdl-keyword-color);
}

span.vhdllogic {
  color: var(--code-vhdl-logic-color);
}

blockquote {
  background-color: var(--blockquote-background-color);
  border-left: 2px solid var(--blockquote-border-color);
  margin: 0 24px 0 4px;
  padding: 0 12px 0 16px;
}

/* @end */

td.tiny {
  font-size: 75%;
}

.dirtab {
  padding: 4px;
  border-collapse: collapse;
  border: 1px solid var(--table-cell-border-color);
}

th.dirtab {
  background-color: var(--table-header-background-color);
  color: var(--table-header-foreground-color);
  font-weight: bold;
}

hr {
  height: 0px;
  border: none;
}

hr.footer {
  height: 1px;
}

/* @group Member Descriptions */

table.memberdecls {
  border-spacing: 0px;
  padding: 0px;
}

.memberdecls td,
.fieldtable tr {
  -webkit-transition-property: background-color, box-shadow;
  -webkit-transition-duration: 0.5s;
  -moz-transition-property: background-color, box-shadow;
  -moz-transition-duration: 0.5s;
  -ms-transition-property: background-color, box-shadow;
  -ms-transition-duration: 0.5s;
  -o-transition-property: background-color, box-shadow;
  -o-transition-duration: 0.5s;
  transition-property: background-color, box-shadow;
  transition-duration: 0.5s;
}

.memberdecls td.glow,
.fieldtable tr.glow {
  background-color: var(--glow-color);
  box-shadow: 0 0 15px var(--glow-color);
}

.mdescLeft,
.mdescRight,
.memItemLeft,
.memItemRight,
.memTemplItemLeft,
.memTemplItemRight,
.memTemplParams {
  background-color: var(--memdecl-background-color);
  border: none;
  margin: 4px;
  padding: 1px 0 0 8px;
  font-family: var(--font-family-monospace);
}

.mdescLeft,
.mdescRight {
  padding: 0px 8px 4px 8px;
  color: var(--memdecl-foreground-color);
  font-family: var(--font-family-monospace);
}

.memSeparator {
  border-bottom: 1px solid var(--memdecl-separator-color);
  line-height: 1px;
  margin: 0px;
  padding: 0px;
}

.memItemLeft,
.memTemplItemLeft {
  white-space: nowrap;
}

.memItemRight,
.memTemplItemRight {
  width: 100%;
}

.memTemplParams {
  color: var(--memdecl-template-color);
  white-space: nowrap;
  font-size: 80%;
}

/* @end */

/* @group Member Details */

/* Styles for detailed member documentation */

.memtitle {
  padding: 8px;
  border-top: 1px solid var(--memdef-border-color);
  border-left: 1px solid var(--memdef-border-color);
  border-right: 1px solid var(--memdef-border-color);
  border-top-right-radius: 4px;
  border-top-left-radius: 4px;
  margin-bottom: -1px;
  background-color: var(--memdef-title-background-color);
  line-height: 1.25;
  font-weight: 300;
  float: left;
  font-family: var(--font-family-monospace);
}

.permalink {
  font-size: 65%;
  display: inline-block;
  vertical-align: middle;
}

.memtemplate {
  font-size: 80%;
  color: var(--memdef-template-color);
  font-weight: normal;
  margin-left: 9px;
}

.mempage {
  width: 100%;
}

.memitem {
  padding: 0;
  margin-bottom: 10px;
  margin-right: 5px;
  -webkit-transition: box-shadow 0.5s linear;
  -moz-transition: box-shadow 0.5s linear;
  -ms-transition: box-shadow 0.5s linear;
  -o-transition: box-shadow 0.5s linear;
  transition: box-shadow 0.5s linear;
  display: table !important;
  width: 100%;
}

.memitem.glow {
  box-shadow: 0 0 15px var(--glow-color);
}

.memname {
  font-weight: 400;
  margin-left: 6px;
}

.memname td {
  vertical-align: bottom;
}

.memproto,
dl.reflist dt {
  border-top: 1px solid var(--memdef-border-color);
  border-left: 1px solid var(--memdef-border-color);
  border-right: 1px solid var(--memdef-border-color);
  padding: 6px 0px 6px 0px;
  color: var(--memdef-proto-text-color);
  font-weight: bold;
  text-shadow: var(--memdef-proto-text-shadow);
  background-color: var(--memdef-proto-background-color);
  box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
  border-top-right-radius: 4px;
}

.overload {
  font-family: var(--font-family-monospace);
  font-size: 65%;
}

.memdoc,
dl.reflist dd {
  border-bottom: 1px solid var(--memdef-border-color);
  border-left: 1px solid var(--memdef-border-color);
  border-right: 1px solid var(--memdef-border-color);
  padding: 6px 10px 2px 10px;
  border-top-width: 0;
  background-color: var(--memdef-doc-background-color);
  /* opera specific markup */
  border-bottom-left-radius: 4px;
  border-bottom-right-radius: 4px;
  box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
  /* firefox specific markup */
  -moz-border-radius-bottomleft: 4px;
  -moz-border-radius-bottomright: 4px;
  -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
  /* webkit specific markup */
  -webkit-border-bottom-left-radius: 4px;
  -webkit-border-bottom-right-radius: 4px;
  -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
}

dl.reflist dt {
  padding: 5px;
}

dl.reflist dd {
  margin: 0px 0px 10px 0px;
  padding: 5px;
}

.paramkey {
  text-align: right;
}

.paramtype {
  white-space: nowrap;
}

.paramname {
  color: var(--memdef-param-name-color);
  white-space: nowrap;
}
.paramname em {
  font-style: normal;
}
.paramname code {
  line-height: 14px;
}

.params,
.retval,
.exception,
.tparams {
  margin-left: 0px;
  padding-left: 0px;
}

.params .paramname,
.retval .paramname,
.tparams .paramname,
.exception .paramname {
  font-weight: bold;
  vertical-align: top;
}

.params .paramtype,
.tparams .paramtype {
  font-style: italic;
  vertical-align: top;
}

.params .paramdir,
.tparams .paramdir {
  font-family: var(--font-family-monospace);
  vertical-align: top;
}

table.mlabels {
  border-spacing: 0px;
}

td.mlabels-left {
  width: 100%;
  padding: 0px;
}

td.mlabels-right {
  vertical-align: bottom;
  padding: 0px;
  white-space: nowrap;
}

span.mlabels {
  margin-left: 8px;
}

span.mlabel {
  background-color: var(--label-background-color);
  border-top: 1px solid var(--label-left-top-border-color);
  border-left: 1px solid var(--label-left-top-border-color);
  border-right: 1px solid var(--label-right-bottom-border-color);
  border-bottom: 1px solid var(--label-right-bottom-border-color);
  text-shadow: none;
  color: var(--label-foreground-color);
  margin-right: 4px;
  padding: 2px 3px;
  border-radius: 3px;
  font-size: 7pt;
  white-space: nowrap;
  vertical-align: middle;
}

/* @end */

/* these are for tree view inside a (index) page */

div.directory {
  margin: 10px 0px;
  border-top: 1px solid var(--directory-separator-color);
  border-bottom: 1px solid var(--directory-separator-color);
  width: 100%;
}

.directory table {
  border-collapse: collapse;
}

.directory td {
  margin: 0px;
  padding: 0px;
  vertical-align: top;
}

.directory td.entry {
  white-space: nowrap;
  padding-right: 6px;
  padding-top: 3px;
}

.directory td.entry a {
  outline: none;
}

.directory td.entry a img {
  border: none;
}

.directory td.desc {
  width: 100%;
  padding-left: 6px;
  padding-right: 6px;
  padding-top: 3px;
  border-left: 1px solid rgba(0, 0, 0, 0.05);
}

.directory tr.odd {
  padding-left: 6px;
  background-color: var(--index-odd-item-bg-color);
  border-bottom: 1px solid var(--separator-color);
}

.directory tr.even {
  padding-left: 6px;
  background-color: var(--index-even-item-bg-color);
  border-bottom: 1px solid var(--separator-color);
}

.directory img {
  vertical-align: -30%;
}

.directory .levels {
  white-space: nowrap;
  width: 100%;
  text-align: right;
  font-size: 9pt;
}

.directory .levels span {
  cursor: pointer;
  padding-left: 2px;
  padding-right: 2px;
  color: var(--page-link-color);
}

.arrow {
  color: var(--nav-arrow-color);
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  cursor: pointer;
  font-size: 80%;
  display: inline-block;
  width: 16px;
  height: 22px;
}

.icon {
  font-family: var(--font-family-icon);
  line-height: normal;
  font-weight: bold;
  font-size: 12px;
  height: 14px;
  width: 16px;
  display: inline-block;
  background-color: var(--icon-background-color);
  color: var(--icon-foreground-color);
  text-align: center;
  border-radius: 4px;
  margin-left: 2px;
  margin-right: 2px;
}

.icona {
  width: 24px;
  height: 22px;
  display: inline-block;
}

.iconfopen {
  width: 24px;
  height: 18px;
  margin-bottom: 4px;
  background-image: url('folderopen.png');
  background-position: 0px -4px;
  background-repeat: repeat-y;
  vertical-align: top;
  display: inline-block;
}

.iconfclosed {
  width: 24px;
  height: 18px;
  margin-bottom: 4px;
  background-image: url('folderclosed.png');
  background-position: 0px -4px;
  background-repeat: repeat-y;
  vertical-align: top;
  display: inline-block;
}

.icondoc {
  width: 24px;
  height: 18px;
  margin-bottom: 4px;
  background-image: var(--icon-doc-image);
  background-position: 0px -4px;
  background-repeat: repeat-y;
  vertical-align: top;
  display: inline-block;
}

/* @end */

div.dynheader {
  margin-top: 8px;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

address {
  font-style: normal;
  color: var(--footer-foreground-color);
}

table.doxtable caption {
  caption-side: top;
}

table.doxtable {
  border-collapse: collapse;
  margin-top: 4px;
  margin-bottom: 4px;
}

table.doxtable td,
table.doxtable th {
  border: 1px solid var(--table-cell-border-color);
  padding: 3px 7px 2px;
}

table.doxtable th {
  background-color: var(--table-header-background-color);
  color: var(--table-header-foreground-color);
  font-size: 110%;
  padding-bottom: 4px;
  padding-top: 5px;
}

table.fieldtable {
  margin-bottom: 10px;
  border: 1px solid var(--memdef-border-color);
  border-spacing: 0px;
  border-radius: 4px;
  box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
}

.fieldtable td,
.fieldtable th {
  padding: 3px 7px 2px;
}

.fieldtable td.fieldtype,
.fieldtable td.fieldname {
  white-space: nowrap;
  border-right: 1px solid var(--memdef-border-color);
  border-bottom: 1px solid var(--memdef-border-color);
  vertical-align: top;
}

.fieldtable td.fieldname {
  padding-top: 3px;
}

.fieldtable td.fielddoc {
  border-bottom: 1px solid var(--memdef-border-color);
}

.fieldtable td.fielddoc p:first-child {
  margin-top: 0px;
}

.fieldtable td.fielddoc p:last-child {
  margin-bottom: 2px;
}

.fieldtable tr:last-child td {
  border-bottom: none;
}

.fieldtable th {
  background-color: var(--memdef-title-background-color);
  font-size: 90%;
  color: var(--memdef-proto-text-color);
  padding-bottom: 4px;
  padding-top: 5px;
  text-align: left;
  font-weight: 400;
  border-top-left-radius: 4px;
  border-top-right-radius: 4px;
  border-bottom: 1px solid var(--memdef-border-color);
}

.tabsearch {
  top: 0px;
  left: 10px;
  height: 36px;
  z-index: 101;
  overflow: hidden;
  font-size: 13px;
}

.navpath ul {
  font-size: 1em;
  height: 30px;
  line-height: 30px;
  color: var(--nav-text-normal-color);
  border-top: solid 1px var(--nav-breadcrumb-border-color);
  overflow: hidden;
  margin: 0 0 0 1em;
  padding: 0px;
}

.navpath li {
  list-style-type: none;
  float: left;
  color: var(--nav-foreground-color);
}

.navpath li.navelem a {
  height: 32px;
  display: inline;
  text-decoration: none;
  outline: none;
  color: var(--page-link-color);
  font-family: var(--font-family-nav);
  text-decoration: none;
}

.navpath li.navelem a:hover {
  color: var(--nav-text-hover-color);
}

.navelem:not(:first-child)::before {
  content: '::';
  color: var(--nav-text-normal-color);
}

.navpath li.footer {
  list-style-type: none;
  float: right;
  padding-left: 10px;
  padding-right: 15px;
  background-image: none;
  background-repeat: no-repeat;
  background-position: right;
  color: var(--footer-foreground-color);
  font-size: 8pt;
}

div.summary {
  float: right;
  font-size: 8pt;
  padding-right: 5px;
  width: 50%;
  text-align: right;
}

div.summary a {
  white-space: nowrap;
}

table.classindex {
  margin: 10px;
  white-space: nowrap;
  margin-left: 3%;
  margin-right: 3%;
  width: 94%;
  border: 0;
  border-spacing: 0;
  padding: 0;
}

div.ingroups {
  text-align: left;
}

div.ingroups a {
  white-space: nowrap;
}

div.ingroups p {
  margin: 0;
}

div.header {
  background-color: var(--header-background-color);
  margin: 0px;
}

div.headertitle {
  padding: 5px 5px 5px 10px;
}

.PageDocRTL-title div.headertitle {
  text-align: right;
  direction: rtl;
}

dl {
  padding: 0 0 0 0;
}

/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */
dl.section {
  margin-left: 0px;
  padding-left: 0px;
}

dl.note {
  margin-left: -7px;
  padding-left: 3px;
  border-left: 4px solid;
  border-color: #d0c000;
}

dl.warning,
dl.attention {
  margin-left: -7px;
  padding-left: 3px;
  border-left: 4px solid;
  border-color: #ff0000;
}

dl.pre,
dl.post,
dl.invariant {
  margin-left: -7px;
  padding-left: 3px;
  border: none;
}

dl.deprecated {
  margin-left: -7px;
  padding-left: 3px;
  border-left: 4px solid;
  border-color: #505050;
}

dl.todo {
  margin-left: -7px;
  padding-left: 3px;
  border-left: 4px solid;
  border-color: #00c0e0;
}

dl.test {
  margin-left: -7px;
  padding-left: 3px;
  border-left: 4px solid;
  border-color: #3030e0;
}

dl.bug {
  margin-left: -7px;
  padding-left: 3px;
  border-left: 4px solid;
  border-color: #c08050;
}

dl.section dd {
  margin-bottom: 6px;
}

#projectrow {
  height: 56px;
}

#projectlogo {
  text-align: center;
  vertical-align: bottom;
  border-collapse: separate;
  padding: 0.5em;
}

#projectlogo img {
  border: 0px none;
  height: 4em;
}

#projectalign {
  vertical-align: middle;
  padding: 0;
}

#projectname a {
  font-size: 200%;
  font-family: var(--font-family-title);
  margin: 0px;
  padding: 2px 0px;
  font-weight: bold;
  font-style: italic;
  color: var(--pw-color-brand-primary);
}

#projectbrief {
  font-size: 90%;
  font-family: var(--font-family-normal);
  margin: 0px;
  padding: 0px;
}

#projectnumber {
  font-size: 50%;
  font-family: 50% var(--font-family-title);
  margin: 0px;
  padding: 0px;
}

#titlearea {
  padding: 0px;
  margin: 0px;
  width: 100%;
  border-bottom: 1px solid var(--title-separator-color);
  background-color: var(--title-background-color);
}

.image {
  text-align: center;
}

.dotgraph {
  text-align: center;
}

.mscgraph {
  text-align: center;
}

.plantumlgraph {
  text-align: center;
}

.diagraph {
  text-align: center;
}

.caption {
  font-weight: bold;
}

dl.citelist {
  margin-bottom: 50px;
}

dl.citelist dt {
  color: var(--citation-label-color);
  float: left;
  font-weight: bold;
  margin-right: 10px;
  padding: 5px;
  text-align: right;
  width: 52px;
}

dl.citelist dd {
  margin: 2px 0 2px 72px;
  padding: 5px 0;
}

div.toc {
  padding: 14px 25px;
  background-color: var(--toc-background-color);
  border: 1px solid var(--toc-border-color);
  border-radius: 7px 7px 7px 7px;
  float: right;
  height: auto;
  margin: 0 8px 10px 10px;
  width: 200px;
}

div.toc li {
  background: url('bdwn.png') no-repeat scroll 0 5px transparent;
  font: 10px/1.2 var(--font-family-toc);
  margin-top: 5px;
  padding-left: 10px;
  padding-top: 2px;
}

div.toc h3 {
  font: bold 12px/1.2 var(--font-family-toc);
  color: var(--toc-header-color);
  border-bottom: 0 none;
  margin: 0;
}

div.toc ul {
  list-style: none outside none;
  border: medium none;
  padding: 0px;
}

div.toc li.level1 {
  margin-left: 0px;
}

div.toc li.level2 {
  margin-left: 15px;
}

div.toc li.level3 {
  margin-left: 30px;
}

div.toc li.level4 {
  margin-left: 45px;
}

span.emoji {
  /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html
    * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort;
    */
}

span.obfuscator {
  display: none;
}

.inherit_header {
  font-weight: bold;
  color: var(--inherit-header-color);
  cursor: pointer;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

.inherit_header td {
  padding: 6px 0px 2px 5px;
}

.inherit {
  display: none;
}

tr.heading h2 {
  margin-top: 12px;
  margin-bottom: 4px;
}

/* tooltip related style info */

.ttc {
  position: absolute;
  display: none;
}

#powerTip {
  cursor: default;
  /*white-space: nowrap;*/
  color: var(--tooltip-foreground-color);
  background-color: var(--tooltip-background-color);
  border: 1px solid var(--tooltip-border-color);
  border-radius: 4px 4px 4px 4px;
  box-shadow: var(--tooltip-shadow);
  display: none;
  font-size: smaller;
  max-width: 80%;
  opacity: 0.9;
  padding: 1ex 1em 1em;
  position: absolute;
  z-index: 2147483647;
}

#powerTip div.ttdoc {
  color: var(--tooltip-doc-color);
  font-style: italic;
}

#powerTip div.ttname a {
  font-weight: bold;
}

#powerTip a {
  color: var(--tooltip-link-color);
}

#powerTip div.ttname {
  font-weight: bold;
}

#powerTip div.ttdeci {
  color: var(--tooltip-declaration-color);
}

#powerTip div {
  margin: 0px;
  padding: 0px;
  font-size: 12px;
  font-family: var(--font-family-tooltip);
  line-height: 16px;
}

#powerTip:before,
#powerTip:after {
  content: '';
  position: absolute;
  margin: 0px;
}

#powerTip.n:after,
#powerTip.n:before,
#powerTip.s:after,
#powerTip.s:before,
#powerTip.w:after,
#powerTip.w:before,
#powerTip.e:after,
#powerTip.e:before,
#powerTip.ne:after,
#powerTip.ne:before,
#powerTip.se:after,
#powerTip.se:before,
#powerTip.nw:after,
#powerTip.nw:before,
#powerTip.sw:after,
#powerTip.sw:before {
  border: solid transparent;
  content: ' ';
  height: 0;
  width: 0;
  position: absolute;
}

#powerTip.n:after,
#powerTip.s:after,
#powerTip.w:after,
#powerTip.e:after,
#powerTip.nw:after,
#powerTip.ne:after,
#powerTip.sw:after,
#powerTip.se:after {
  border-color: rgba(255, 255, 255, 0);
}

#powerTip.n:before,
#powerTip.s:before,
#powerTip.w:before,
#powerTip.e:before,
#powerTip.nw:before,
#powerTip.ne:before,
#powerTip.sw:before,
#powerTip.se:before {
  border-color: rgba(128, 128, 128, 0);
}

#powerTip.n:after,
#powerTip.n:before,
#powerTip.ne:after,
#powerTip.ne:before,
#powerTip.nw:after,
#powerTip.nw:before {
  top: 100%;
}

#powerTip.n:after,
#powerTip.ne:after,
#powerTip.nw:after {
  border-top-color: var(--tooltip-background-color);
  border-width: 10px;
  margin: 0px -10px;
}
#powerTip.n:before,
#powerTip.ne:before,
#powerTip.nw:before {
  border-top-color: var(--tooltip-border-color);
  border-width: 11px;
  margin: 0px -11px;
}
#powerTip.n:after,
#powerTip.n:before {
  left: 50%;
}

#powerTip.nw:after,
#powerTip.nw:before {
  right: 14px;
}

#powerTip.ne:after,
#powerTip.ne:before {
  left: 14px;
}

#powerTip.s:after,
#powerTip.s:before,
#powerTip.se:after,
#powerTip.se:before,
#powerTip.sw:after,
#powerTip.sw:before {
  bottom: 100%;
}

#powerTip.s:after,
#powerTip.se:after,
#powerTip.sw:after {
  border-bottom-color: var(--tooltip-background-color);
  border-width: 10px;
  margin: 0px -10px;
}

#powerTip.s:before,
#powerTip.se:before,
#powerTip.sw:before {
  border-bottom-color: var(--tooltip-border-color);
  border-width: 11px;
  margin: 0px -11px;
}

#powerTip.s:after,
#powerTip.s:before {
  left: 50%;
}

#powerTip.sw:after,
#powerTip.sw:before {
  right: 14px;
}

#powerTip.se:after,
#powerTip.se:before {
  left: 14px;
}

#powerTip.e:after,
#powerTip.e:before {
  left: 100%;
}

#powerTip.e:after {
  border-left-color: var(--tooltip-border-color);
  border-width: 10px;
  top: 50%;
  margin-top: -10px;
}

#powerTip.e:before {
  border-left-color: var(--tooltip-border-color);
  border-width: 11px;
  top: 50%;
  margin-top: -11px;
}

#powerTip.w:after,
#powerTip.w:before {
  right: 100%;
}

#powerTip.w:after {
  border-right-color: var(--tooltip-border-color);
  border-width: 10px;
  top: 50%;
  margin-top: -10px;
}

#powerTip.w:before {
  border-right-color: var(--tooltip-border-color);
  border-width: 11px;
  top: 50%;
  margin-top: -11px;
}

@media print {
  #top {
    display: none;
  }
  #side-nav {
    display: none;
  }
  #nav-path {
    display: none;
  }
  body {
    overflow: visible;
  }
  h1,
  h2,
  h3,
  h4,
  h5,
  h6 {
    page-break-after: avoid;
  }
  .summary {
    display: none;
  }
  .memitem {
    page-break-inside: avoid;
  }
  #doc-content {
    margin-left: 0 !important;
    height: auto !important;
    width: auto !important;
    overflow: inherit;
    display: inline;
  }
}

/* @group Markdown */

table.markdownTable {
  border-collapse: collapse;
  margin-top: 4px;
  margin-bottom: 4px;
}

table.markdownTable td,
table.markdownTable th {
  border: 1px solid var(--table-cell-border-color);
  padding: 3px 7px 2px;
}

table.markdownTable tr {
}

th.markdownTableHeadLeft,
th.markdownTableHeadRight,
th.markdownTableHeadCenter,
th.markdownTableHeadNone {
  background-color: var(--table-header-background-color);
  color: var(--table-header-foreground-color);
  font-size: 110%;
  padding-bottom: 4px;
  padding-top: 5px;
}

th.markdownTableHeadLeft,
td.markdownTableBodyLeft {
  text-align: left;
}

th.markdownTableHeadRight,
td.markdownTableBodyRight {
  text-align: right;
}

th.markdownTableHeadCenter,
td.markdownTableBodyCenter {
  text-align: center;
}

tt,
code,
kbd,
samp {
  display: inline-block;
}
/* @end */

u {
  text-decoration: underline;
}

details > summary {
  list-style-type: none;
}

details > summary::-webkit-details-marker {
  display: none;
}

details > summary::before {
  content: '\25ba';
  padding-right: 4px;
  font-size: 80%;
}

details[open] > summary::before {
  content: '\25bc';
  padding-right: 4px;
  font-size: 80%;
}

body {
  scrollbar-color: var(--scrollbar-thumb-color)
    var(--scrollbar-background-color);
}

code {
  font-family: var(--font-family-monospace);
}

::-webkit-scrollbar {
  background-color: var(--scrollbar-background-color);
  height: 12px;
  width: 12px;
}
::-webkit-scrollbar-thumb {
  border-radius: 6px;
  box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color);
  border: solid 2px transparent;
}

::-webkit-scrollbar-corner {
  background-color: var(--scrollbar-background-color);
}

/* tabs
 *
 * In the default Doxygen setup, Doxygen provides tab styles in a
 * `tabs.css` file. To make the styles easier to inspect and customize,
 * we have inlined the tab styles here. */

.tabs,
.tabs2,
.tabs3 {
  width: 100%;
  z-index: 101;
  font-size: var(--nav-font-size-level1);
  font-family: var(--font-family-nav);
  display: table;
}

.tabs2 {
  font-size: var(--nav-font-size-level2);
}

.tabs3 {
  font-size: var(--nav-font-size-level3);
}

.tablist {
  margin: 0;
  padding: 0;
  display: block;
}

.tablist li {
  float: left;
  display: table-cell;
  line-height: 36px;
  list-style: none;
}

.tablist a {
  display: block;
  padding: 0 20px;
  font-weight: bold;
  color: var(--nav-text-normal-color);
  text-decoration: none;
  outline: none;
}

.tabs3 .tablist a {
  padding: 0 10px;
}

.tablist a:hover {
  color: var(--nav-text-hover-color);
  text-decoration: none;
}

.tablist li.current a {
  color: var(--nav-text-active-color);
}

.tablist li.current a span {
  border-bottom: 3px solid;
  padding-bottom: 3px;
}

/* navtree
 *
 * In the default Doxygen setup, Doxygen provides navtree styles in a
 * `navtree.css` file. To make the styles easier to inspect and customize,
 * we have inlined the navtree styles here. */

#nav-tree .children_ul {
  margin: 0;
  padding: 4px;
}

#nav-tree ul {
  list-style: none outside none;
  margin: 0px;
  padding: 0px;
}

#nav-tree li {
  white-space: nowrap;
  margin: 0px;
  padding: 0px;
}

#nav-tree .plus {
  margin: 0px;
}

#nav-tree .selected {
  color: var(--nav-text-active-color);
}

#nav-tree .selected .arrow {
  color: var(--nav-arrow-selected-color);
  text-shadow: none;
}

#nav-tree img {
  margin: 0px;
  padding: 0px;
  border: 0px;
  vertical-align: middle;
}

#nav-tree a {
  text-decoration: none;
  padding: 0px;
  margin: 0px;
  outline: none;
}

#nav-tree .label {
  margin: 0px;
  padding: 0px;
  font: 12px var(--font-family-nav);
}

#nav-tree .label a {
  padding: 2px;
}

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

#nav-tree .children_ul {
  margin: 0px;
  padding: 0px;
}

#nav-tree .item {
  margin: 0px;
  padding: 0px;
}

#nav-tree {
  padding: 0px 0px;
  font-size: 14px;
  overflow: auto;
}

#nav-tree a:hover {
  text-decoration: underline;
  color: var(--nav-text-hover-color);
}

#doc-content {
  overflow: auto;
  display: block;
  padding: 0px;
  margin: 0px;
  -webkit-overflow-scrolling: touch; /* iOS 5+ */
}

#side-nav {
  padding: 0 6px 0 0;
  margin: 0px;
  display: block;
  position: absolute;
  left: 0px;
  overflow: hidden;
}

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

.ui-resizable-e {
  cursor: ew-resize;
  height: 100%;
  right: 0;
  top: 0;
  width: 6px;
}

.ui-resizable-handle {
  display: none;
  font-size: 0.1px;
  position: absolute;
  z-index: 1;
}

#nav-tree-contents {
  margin: 6px 0px 0px 0px;
}

#nav-tree {
  background-color: var(--nav-background-color);
  -webkit-overflow-scrolling: touch; /* iOS 5+ */
}

#nav-sync {
  display: none;
}

@media print {
  #nav-tree {
    display: none;
  }
  div.ui-resizable-handle {
    display: none;
    position: relative;
  }
}
