body {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    overflow-y: scroll;
}

.container-fluid{
    max-width: 1380px;
    width: 100%;
    flex: auto;
}

nav.navbar {
    width:100%;
    margin-bottom: 0;
}

nav.mainnavbar > div.container-fluid {
    display: flex;
    flex-wrap: wrap;
}

nav div.layoutOptions {
    display: flex;
    flex-wrap: wrap;
    align-items: end;
    margin-left: auto;
    padding-top:11px;
}

nav.navbar .navbar-header {
    float: none;
    width: 100%;
    position: relative;
}

.page-header {
    margin-top: 22px;
    top: 0;
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: baseline;
    background-color: #fff;
    margin-bottom: 3px;
    border-bottom: 0;
    box-shadow: 0 0 8px 8px #fff;
    z-index: 99;
}

.navbar-brand {
    padding: 0;
    margin: 0;
    height: auto;
}

.navbar-brand a, .navbar-brand span {
    color:#777777;
    padding: 15px;
    display: inline-block;
}

.navbar-brand *:first-child {
    padding-right: 0;
}

.navbar-brand *:last-child {
    padding-left: 0;
    padding-right: 0;
}

.navbar-brand a:hover {
    color: #444444;
    text-decoration: none;
}

a.projecthome:hover {
    color: #23527c;
}

.navlinks  {
    margin: 0;
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
}

.navlinks > a {
    padding: 10px 0 10px 15px;
}


.navlinks > a:hover {
    background-color: transparent;
    text-decoration: none;
}

.page-header h1 {
    margin: 0;
}

.categoryHeader {
    font-size: 24px;
    color: #777;
    margin-bottom: 1.8em;
}

/* Footer */

footer.navbar {
    margin: auto 0 0 0;
    padding-top: 15px;
    padding-bottom: 15px;
    background-color: #fff;
    border-width: 1px 0 0 0;
    border-radius: 0;
    text-align: center;
}

a[name] {
    position: relative;
    bottom: 10px;
    font-size: 0;
}

ul {
    margin-top: 10px;
    margin-left: 10px;
    padding-left: 10px;
}

li {
    padding-top: 5px;
    padding-bottom: 5px;
}

#summaryTree .compact-modules {
    list-style: none;
    line-height: 1.8em;
}

li a {
    text-decoration: none;
}

ul ul {
    border-left-color: #e1f5fe;
    border-left-width: 1px;
    border-left-style: solid;
}

ul ul ul {
    border-left-color: #b3e5fc;
}

ul ul ul ul {
    border-left-color: #81d4fa;
}

ul ul ul ul ul {
    border-left-color: #4fc3f7;
}

ul ul ul ul ul ul {
    border-left-color: #29b6f6;
}

ul ul ul ul ul ul ul {
    border-left-color: #03a9f4;
}

ul ul ul ul ul ul ul {
    border-left-color: #039be5;
}

.pre {
    white-space: pre;
}

.undocumented {
    font-style: italic;
    color: #9e9e9e;
}

.functionBody p {
    margin: 0;
    padding: 8px 0 6px;
}

#splitTables > p {
    margin-bottom: 5px;
}

#splitTables > table {
    margin-bottom: 20px;
    width: 100%;
    border: 0;
}

#splitTables > table tr {
    border-bottom-color: #eee;
    border-bottom-width: 1px;
    border-bottom-style: solid;
    width: 100%;
}

#splitTables > table tr td {
    padding: 5px;
    border-left-color: #eee;
    border-left-width: 1px;
    border-left-style: solid;
}

.fieldTable {
    width: 100%;
    border: 0;
}

/* Arg name */
.fieldArg {
    margin-right: 7px;
}

.fieldArg:before {
    margin-right: 6px;
    content: "\2022";
    font-size: 14px;
}

.fieldTable tr:not(.fieldStart) td:first-child,
.valueTable tr:not(.fieldStart) td:first-child{
    padding: 3px 4px 3px 10px;
}

.fieldTable tr td {
    padding: 2px;
}


/* Argument name + type column table  */
.fieldTable tr td.fieldArgContainer {
    width: 325px;
    word-break: break-word;
}

/* parameters names in parameters table */
.fieldTable tr td.fieldArgContainer > .fieldArg {
    display: inline;
}

/* parameters types (in parameters table) */
.fieldTable tr td.fieldArgContainer > code {
    /* we don't want word break for the types because we already add <wbr> tags inside the type HTML, and that should suffice. */
    word-break: normal;
    display: inline-flex;
    flex-wrap: wrap;
}

/* Argument description column or return value desc, etc */
.fieldTable tr td::nth-child(2) {
    padding-left: 10px;
}

/* Kind column table  */
#splitTables > table tr td:first-child {
    /* border-left: none; */
    width: 150px;
}

/* Attr name column table  */
#splitTables > table tr td:nth-child(2) {
    width: 240px;
    word-break: break-word;
}

/* Fix proportion size of summary table columns */
#splitTables > table {
    table-layout: fixed;
}

/* For smaller displays, i.e. half screen */
@media only screen and (max-width: 1100px) {

    /* Attr name column table  */
    #splitTables > table tr td:nth-child(2) {
        width: 200px;
    }

    /* Summary column table */
    #splitTables > table tr td:nth-child(3) {
        width: auto;
    }

}

@media only screen and (max-width: 820px) {
    
    /* Kind column table  */
    #splitTables > table tr td:first-child {
        border-left: none;
        width: 20%;
    }
    
    /* Attr name column table  */
    #splitTables > table tr td:nth-child(2) {
        width: 160px;
    }
    /* Argument name + type column table  */
    .fieldTable tr td.fieldArgContainer {
        width: 170px;
    } 
    .fieldTable {
        table-layout: fixed;
    }
}

@media only screen and (max-width: 450px) {
    /* Attr name column table  */
    #splitTables > table tr td:nth-child(2) {
        width: 100px;
    }
    /* Argument name + type column table  */
    .fieldTable tr td.fieldArgContainer {
        width: 125px;
    }
}

table .package {
    background-color: #fff3e0;
}

table .module {
    background-color: #fff8e1;
}

table .class, table .classvariable, table .baseclassvariable, table .exception {
    background-color: #fffde7;
}

table .instancevariable, table .baseinstancevariable, table .variable, table .attribute, table .property {
    background-color: #f3e5f5;
}

table .interface {
    background-color: #fbe9e7;
}

table .method, table .function, table .basemethod, table .baseclassmethod, table .classmethod {
    background-color: #f1f8e9;
}

table .private {
    background-color: #f1f1f1;
}

.fieldName {
    font-weight: bold;
}


#childList > div {
    margin: 10px;
    padding: 10px;
    padding-bottom: 5px;
    display: block;
    border-left-color: #03a9f4;
    border-left-width: 1px;
    border-left-style: solid;
    background: #fafafa;
}

.functionBody {
    margin-left: 5px;
}

.functionBody > #part {
    font-style: italic;
}

.functionBody > #part > a {
    text-decoration: none;
}

.functionBody .interfaceinfo {
    font-style: italic;
    margin-bottom: 3px;
    margin-top: 3px;
}

.functionBody > .undocumented {

    margin-top: 6px;
    margin-bottom: 6px;
}

/* Use a slightly more compact presentation for signatures */
.function-signature {
    word-spacing: -5px;
}

.function-signature code {
    padding: 2px 1px;
}

/*
- Links to class/function/etc names are nested like this:
    <code><a>label</a></code>
  
- 'functionHeader' is used for lines like `def func():` and `var =`
*/
code, .literal, .pre, #childList > div .functionHeader,
#splitTables > table tr td:nth-child(2), .fieldArg {
    font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
}
code, #childList > div .functionHeader, .fieldArg {
    color: #222222;
}

/* Intersphinx links are not red, but simply blue */
a.intersphinx-link {
    color: #03458a;
    background-color: #f0ebe694;
}

/* Links to objects within the system use this special css.
This applies to inline docstring content marked up as code,
  for example L{foo} in epytext or `bar` in restructuredtext,
  but also to links that are present in summary tables.
*/
a.internal-link {
    color:#c7254e;
    background-color:#f9f2f4;
}

/* top navagation bar */
.page-header > h1 {
    margin-top: 0;
}
.page-header > h1 > code {
    color: #971c3a;
}

/* Bootstart 3.x sets font-size to 17.5px which just
   looks ridiculously large, so we unset it here.
*/
blockquote {
    font-size: unset;
}

/*
This defines the code style, it's black on light gray.
It also overwrite the default values inherited from bootstrap min
*/
code, .literal {
    padding:2px 4px;
    background-color: #f4f4f4;
    border-radius:4px
}


a.sourceLink {
    color: #337ab7!important;
    font-weight: normal;
    background-color: transparent!important;
}




.moduleDocstring {
    margin: 20px;
}

#partOf {
    margin-top: -13px;
    margin-bottom: 19px;
}

.fromInitPy {
    font-style: italic;
}

pre {
    padding-left: 0;
}

/* Private stuff */

body.private-hidden #splitTables .private,
body.private-hidden #childList .private,
body.private-hidden #summaryTree .private,
body.private-hidden nav.sidebar .private,
body.private-hidden #search-results .private,
body.private-hidden .container > .private {
    display: none!important;
}

/* Show private and other options */ 

#showPrivate:hover {
    text-decoration: none;
}

#showPrivate button {
    padding: 5px;
    padding-bottom: 15px;
}

#showPrivate button:hover {
    text-decoration: none;
}

#current-docs-container {
    font-style: italic;
    padding-top: 11px;
}

/* Deprecation stuff */

.deprecationNotice {
    margin: 10px;
}

/* Syntax highlighting for source code */

.py-string {
    color: #337ab7;
}
.py-comment {
    color: #309078;
    font-style: italic;
}
.py-keyword {
    font-weight: bold;
}
.py-defname {
    color: #a947b8;
    font-weight: bold;
}
.py-builtin {
    color: #fc7844;
    font-weight: bold;
}

/* Doctest */

pre.py-doctest {
    padding: .5em;
}
.py-prompt, .py-more {
    color: #a8a8a8;
}
.py-output {
    color: #c7254e;
}

/* Admonitions */

div.rst-admonition p.rst-admonition-title:after {
    content: ":";
}

div.rst-admonition p.rst-admonition-title {
    margin: 0;
    padding: 0.1em 0 0.35em 0em;
    font-weight: bold;
}

div.rst-admonition p.rst-admonition-title {
    color: #333333;
}

div.rst-admonition {
    padding: 8px;
    margin-bottom: 20px;
    background-color: #EEE;
    border: 1px solid #CCC;
    border-radius: 4px;
}

div.warning, div.attention, div.danger, div.error, div.caution {
    background-color: #ffcf9cb0;
    border: 1px solid #ffbbaa;
}

div.danger p.rst-admonition-title, div.error p.rst-admonition-title, div.caution p.rst-admonition-title {
    color: #b94a48;
}

div.tip p.rst-admonition-title, div.hint p.rst-admonition-title, div.important p.rst-admonition-title{
    color: #3a87ad;
}

div.tip, div.hint, div.important {
    background-color: #d9edf7;
    border-color: #bce8f1;
}

.sidebarcontainer {
    width: 297px; /* Set the width of the sidebar: 290px + 2px for the border + 5px for the padding */
    max-height: 100vh; /* Full-height: remove this if you want "auto" height */
    float: left;
    padding: 10px 0px 10px 5px;
    margin:24px 20px 20px 0;
    border: 1px solid;
    border-radius: 4px;
    display: flex;
    position: sticky;
    top: 0;
    overflow-wrap: break-word;
    overflow-x: none;
    overflow-y: scroll;
    background-color: #fbfbfb;
    border-color: #e7e7e7;
    scrollbar-width: thin;
    scrollbar-color: rgb(194,194,194) rgb(249,249,249);
}

.sidebarcontainer::-webkit-scrollbar {
    width: 10px; /* Scrollbar width on Chromium-based browsers */
    border: solid 1px rgb(229,229,229);
    background-color: rgb(249,249,249);
}

.sidebarcontainer::-webkit-scrollbar:horizontal {
   display: none;
}

.sidebarcontainer::-webkit-scrollbar-track {
    box-shadow: inset 0 0 5px 5px transparent;
    border: solid 1px transparent;
}

.sidebarcontainer::-webkit-scrollbar-thumb {
    box-shadow: inset 0 0 5px 5px rgb(194,194,194);
    border: solid 2px transparent;
    border-radius: 5px;
} 


/* The sidebar menu */

.sidebar {
    /*! padding-bottom: 10px; */
    width: 100%;
}

.sidebar > div {
    width: 100%;
    padding-top: 7px;
}

.sidebar > div:first-child {
    padding-top: 0;
    margin-top: -4px;
}

.sidebar > div:last-child {
    padding-bottom: 15px;
}

.sidebar > div:nth-child(2) {
    background-color: RGBA(0,10,10, 0.03);
    box-shadow: -5px 5px 0px 10px RGBA(0,10,10, 0.03);
    margin-top: 20px;
}

.sidebar ul {
    display: block;
    margin: 0 0 5px 0;
    padding: 0 0 0 10px;
    width: 100%;
}

.sidebar li {
    width: 100%;
    padding: 0;
    display: flex;
    overflow: hidden;
    flex-wrap: wrap;
    word-break: break-word;
}

.sidebar li p {
    margin: 0;
    width: 100%;
}

.sidebar li ul {
    margin: 0 0 2px 0;
    padding: 0 0 0 7px;
    border: 0;
}

/* Generated TOC */ 
.sidebar ul.rst-simple, .sidebar ul.rst-simple ul {
    margin: 0 0 5px 0;
    padding: 0 0 0 15px;
    margin: 0;
    border-left: 1px solid #e7e7e7;
}

.sidebar li a {
    display: inline-block;
    width: 100%;
    padding-top: 3px;
    padding-bottom: 3px;
    color: #414141;
}

.sidebar li a:hover {
    color: #C7354E;
}

.sidebar > div ul > li > .itemName > code, .sidebar > div ul > li > .itemName > code > a { 
    background-color: transparent;
}

.sidebar ul > li > .itemName {
    width: 100%;
}

.sidebar > div ul > li > .itemName > code {
    padding: 0;
    width: 100%;
}

.sidebar .thingTitle {
    margin-bottom: 7px;
    margin-top: 7px;
    overflow: hidden;
    color: #555;
    font-size: 18px;
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    word-break: break-word;
    padding: 0 15px 3px 1px;
    box-shadow: -10px 12px 0px -11px #888;
}

.sidebar .thingTitle > span {
    margin-right: 7px;
}

.sidebar .thingTitle > code {
    font-size: 16px;
    color: #555;
    background-color: transparent;
    padding-left: 0;
    padding-right: 0;
    display: flex;
}

.sidebar .thingTitle > code a {
    background-color: transparent;
}

.sidebar .childrenKindTitle {
    color: #414141;
    margin-left: 4px;
    margin-bottom: 3px;
    font-size: 15px;
    /*! border-bottom: solid 1px #9d9d9d; */
    box-shadow: -11px 11px 0px -10px #aeaeaec4;
    font-style: italic;
}

  
/* Style page content */
#main {
    
     /* Same as the width of the sidebar + 20px*/
    display: flex;
    flex-direction: column;
}

/* Special case for the --nosidebar option */   
.nosidebar {
    margin-left: 10px!important;
}

/* For bigger displays, i.e. full screen */
@media only screen and (min-width: 1330px) {
    .sidebarcontainer {
        width: 317px; /* Set the width of the sidebar: 310px + 2px for the border + 5px for the scrollbar */
    }
}

/* For smaller displays, i.e. half screen */
@media only screen and (max-width: 1100px) {
    .sidebarcontainer {
        width: 257px; /* Set the width of the sidebar: 250px + 2px for the border + 5px for the scrollbar */
    }
}

/* For smaller displays mobile phone */
@media only screen and (max-width: 900px) {
    .sidebarcontainer {
        width: 207px; /* Set the width of the sidebar: 200px + 2px for the border + 5px for the scrollbar */
    }
}


nav.foot {
    margin-top: 20px;
    background-color: #fff;
    text-align: center;
    border-width: 1px 0 0 0;
    border-radius: 0;
}

nav.foot address {
    padding-top: 15px;
    text-align: center;
}

#collapseSideBar {
    border-radius: 4px; 
    color: rgb(68, 68, 68); 
    font-size: 1.2em; 
    display: block; 
    float: left;
    width: 0;
    padding: 0;
    margin: 0;
    position: sticky;
    top: 0;
    right: 0;
}

#collapseSideBar > a:hover{
    background-color: #e1e1e1;
    text-decoration: none;
}

#collapseSideBar > a {
    height: 42px;
    width: 15px;
    font-size: 1.2em;
    color: #333;
    padding: 1px;
    background-color: #e7e7e7;
    border-radius: 0 4px 0 4px;
    margin: -11px 0 0 -15px;
    text-align: center;
    display: flex;
    align-items: center;
    justify-content: center;
    border: solid 1px #e7e7e7;
}

/* collapsed */

body.sidebar-collapsed .sidebar {
    display: none;
}

body.sidebar-collapsed .sidebarcontainer {
    border: none;
    padding: 0;
    width: 5px;
    overflow: visible;
    background-color: transparent;
}

body.sidebar-collapsed #main {
    margin: 0 0 0 25px!important;
}

body.sidebar-collapsed #collapseSideBar {
    left: 1px;
}

body.sidebar-collapsed #collapseSideBar > a {
    margin-top: -1px;
    margin-left: 0;
    border-radius: 4px;
    background-color: #f8f8f8;
}

body.sidebar-collapsed #collapseSideBar > a:hover {
    background-color: #e7e7e7;
}

/* On smaller screens, where width is less than 650px, simply hide sidebar */
@media screen and (max-width: 650px) {
    .sidebar {
        display: none;
    }
    #main {
        margin: 0;
    }
    .sidebarcontainer {
        display: none!important;
    }
    #collapseSideBar {
        display: none;
    }
}

/* Style for expandable content */

input.tocChildrenToggle {
    display: none;
  }

.lbl-toggle {
    display: block;
    width: 18px;
    font-weight: bold;
    font-family: monospace;
    font-size: 12px;
    text-transform: uppercase;
    text-align: center;
    color: #333;
    /* background: #0069ff; */
    cursor: pointer;
    border-radius: 7px;
    transition: all 0.1s ease-out;
    margin: 0 0 0 0;
    padding: 5px 2px 0 2px;
    color: rgb(163, 163, 163);
    position: absolute;
}

.lbl-toggle::before {
    content: " ";
    display: inline-block;
    border-top: 5px solid transparent;
    border-bottom: 5px solid transparent;
    border-left: 5px solid currentColor;
    vertical-align: middle;
    margin-right: 0.7rem;
    transform: translateY(-2px);
  }

.lbl-toggle:hover {
    color: #333;
  }

.tocChildrenToggle:checked + .lbl-toggle::before {
    transform: rotate(90deg) translateX(-3px);
  }

.expandableContent {
    height: 0px;
    overflow: hidden;
    flex-basis: 100%;
    padding: 0 0 0 8px;
    margin-left: 5px;
    border-left: 1px solid #e7e7e7;
}

.expandableContent > div {
    margin-top: 5px;
}

.tocChildrenToggle:checked ~ .expandableContent {
    height: auto;
}

.tocChildrenToggle:not(:checked) ~ .expandableContent .lbl-toggle {
    position: relative;
}

.tocChildrenToggle:checked + .lbl-toggle {
    border-bottom-right-radius: 0;
    border-bottom-left-radius: 0;
    color: #333;
  }

.expandableContent .childrenKindTitle {
    font-size: 14px;
    /* margin-left: 5px; */
}

.expandableItem {
    display: flex;
    flex-wrap: wrap;
}

.expandableItem > code {
    width: calc(100% - 20px)!important;
    margin-left: 18px;
}

/* Special cases to display the current object name in the sidebar */ 
.thisobject a {
    font-weight: bold;
}
.expandableItem label.notExpandable {
    cursor: not-allowed;
}
/* Version modified style */
.rst-versionmodified {
    display: block;
    font-weight: bold;
}

/* Search */

/* clears the ‘X’ from search input for Chrome */
input[type="search"]::-webkit-search-decoration,
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-results-button,
input[type="search"]::-webkit-search-results-decoration { display: none; }

.navlinks > #search-box-container {
    padding: 0 0 8px 15px;
    align-self: flex-end;
    margin-left: auto;
    display: none;
}

#search-results {
    margin-top: 5px;
}

#search-results tr{
    display:block;
    border-bottom: 0.5px solid #CCC;
}

#search-results tr {
    border-bottom: 1px #ddd solid;
    padding-bottom: 1px;
}

#search-results tr td {
    border-left: 1px #ddd solid;
    padding: 2px;
}

#search-results tr td:first-child {
    width: 120px;
}

#search-results tr:last-child{
    border-bottom: none;
}

#search-results tr article, #search-results tr article *{
    display:inline;
}

#search-results section {
    padding: 5px 0 0 8px;
}

.search-help-hidden #search-help-box{
    display: none!important;
}

#search-help-button{
    background-color: #e6e6e6;
}

.search-help-hidden #search-help-button{
    background-color: rgb(255, 255, 255);
}

.search-help-hidden #search-help-button:hover {
    background-color: #e6e6e6;
}

#search-results-container {
    padding: 10px;
    width: 100%;
    max-width: 850px;
    max-height: calc(100vh - 70px);
    right: 0;
    position: absolute;
    overflow-x: hidden;
    overflow-y: scroll;
    background-color: #fbfbfb;
    border: 1px solid #CCC;
    border-radius: 4px;
    z-index: 500;
    margin-top: -9px;
    word-break: break-word;
}

#search-status{
    padding-bottom:2px;
}

#search-buttons{
    float: right;
}

#search-buttons > span {
    padding: 0.3em 0.4em 0.4em;
}

#toggle-search-in-docstrings-checkbox{
    margin-top: -2.5px;
    cursor: pointer;
}

/* Constant values repr */
pre.constant-value              { padding: .5em; }
.rst-variable-linewrap          { color: #604000; font-weight: bold; }
.rst-variable-ellipsis          { color: #604000; font-weight: bold; }
.rst-variable-quote             { color: #604000; font-weight: bold; }

/* Those two are currently not used */
.rst-variable-group             { color: #000000; }
.rst-variable-op                { color: #000000; }

.rst-variable-string            { color: #337ab7; }
.rst-variable-unknown           { color: #a00000; font-weight: bold; }
.rst-re                         { color: #000000; }
.rst-re-char                    { color: #337ab7; }
.rst-re-op                      { color: #fc7844; }
.rst-re-group                   { color: #309078; }
.rst-re-ref                     { color: #890000; }

/* highlight the targeted item with "#" */
#childList a:target ~ .functionHeader, #childList a:target ~ .functionBody{
    background-color: rgb(253, 255, 223);
}
#childList a:target ~ .functionHeader{
    box-shadow: 0px 0px 0px 10px rgb(253, 255, 223);
}
#childList a:target ~ .functionBody{
    box-shadow: -2px -8px 0px 13px rgb(253 255 223);
}
/* in class hierarchy */
#summaryTree a:target ~ div {
    background-color: rgb(253, 255, 223);
    box-shadow: 0px 0px 0px 7px rgb(253, 255, 223);
}

/* deprecations uses a orange text */
.rst-deprecated > .rst-versionmodified{
    color:#aa6708;
}

/* CSS for anchor links */
.headerLink{
    display:none;
    color:black;
    float:right;
    margin-left:5px;
    padding-left:5px;
    padding-right:5px;
}
@media (hover) {
    /* See https://css-tricks.com/annoying-mobile-double-tap-link-issue/ */
    .headerLink:hover{
        text-decoration:none;
        background-color: #ccc;
    }
    #childList > div:hover .headerLink{
        display:inline-block;
    }
}
#childList a:target ~ .functionHeader .headerLink{
    display: inline-block
}
