/*
 * Additional styling for sphinc doc pages
 */
.hll {
  background-color: #ffffcc;
  margin: 0 -12px;
  padding: 0 12px;
  display: block; }

.c {
  color: #999988;
  font-style: italic; }

.err {
  color: #a61717;
  background-color: #e3d2d2; }

.k {
  font-weight: bold; }

.o {
  font-weight: bold; }

.cm {
  color: #999988;
  font-style: italic; }

.cp {
  color: #999999;
  font-weight: bold; }

.c1 {
  color: #999988;
  font-style: italic; }

.cs {
  color: #999999;
  font-weight: bold;
  font-style: italic; }

.gd {
  color: #000000;
  background-color: #ffdddd; }

.gd .x {
  color: #000000;
  background-color: #ffaaaa; }

.ge {
  font-style: italic; }

.gr {
  color: #aa0000; }

.gh {
  color: #999999; }

.gi {
  color: #000000;
  background-color: #ddffdd; }

.gi .x {
  color: #000000;
  background-color: #aaffaa; }

.go {
  color: #888888; }

.gp {
  color: #555555; }

.gs {
  font-weight: bold; }

.gu {
  color: #800080;
  font-weight: bold; }

.gt {
  color: #aa0000; }

.kc {
  font-weight: bold; }

.kd {
  font-weight: bold; }

.kn {
  font-weight: bold; }

.kp {
  font-weight: bold; }

.kr {
  font-weight: bold; }

.kt {
  color: #445588;
  font-weight: bold; }

.m {
  color: #009999; }

.s {
  color: #dd1144; }

.n {
  color: #333333; }

.na {
  color: teal; }

.nb {
  color: #0086b3; }

.nc {
  color: #445588;
  font-weight: bold; }

.no {
  color: teal; }

.ni {
  color: purple; }

.ne {
  color: #990000;
  font-weight: bold; }

.nf {
  color: #990000;
  font-weight: bold; }

.nn {
  color: #555555; }

.nt {
  color: navy; }

.nv {
  color: teal; }

.ow {
  font-weight: bold; }

.w {
  color: #bbbbbb; }

.mf {
  color: #009999; }

.mh {
  color: #009999; }

.mi {
  color: #009999; }

.mo {
  color: #009999; }

.sb {
  color: #dd1144; }

.sc {
  color: #dd1144; }

.sd {
  color: #dd1144; }

.s2 {
  color: #dd1144; }

.se {
  color: #dd1144; }

.sh {
  color: #dd1144; }

.si {
  color: #dd1144; }

.sx {
  color: #dd1144; }

.sr {
  color: #009926; }

.s1 {
  color: #dd1144; }

.ss {
  color: #990073; }

.bp {
  color: #999999; }

.vc {
  color: teal; }

.vg {
  color: teal; }

.vi {
  color: teal; }

.il {
  color: #009999; }

.gc {
  color: #999;
  background-color: #EAF2F5; }

/*
 * basic.css
 * ~~~~~~~~~
 *
 * Sphinx stylesheet -- basic theme.
 *
 * :copyright: Copyright 2007-2016 by the Sphinx team, see AUTHORS.
 * :license: BSD, see LICENSE for details.
 *
 */
/* -- main layout ----------------------------------------------------------- */
div.clearer {
  clear: both; }

/* -- relbar ---------------------------------------------------------------- */
div.related {
  width: 100%;
  font-size: 90%; }

div.related h3 {
  display: none; }

div.related ul {
  margin: 0;
  padding: 0 0 0 10px;
  list-style: none; }

div.related li {
  display: inline; }

div.related li.right {
  float: right;
  margin-right: 5px; }

/* -- sidebar --------------------------------------------------------------- */
div.sphinxsidebarwrapper {
  padding: 10px 5px 0 10px; }

div.sphinxsidebar {
  float: left;
  width: 230px;
  margin-left: -100%;
  font-size: 90%;
  word-wrap: break-word;
  overflow-wrap: break-word; }

div.sphinxsidebar ul {
  list-style: none; }

div.sphinxsidebar ul ul,
div.sphinxsidebar ul.want-points {
  margin-left: 20px;
  list-style: square; }

div.sphinxsidebar ul ul {
  margin-top: 0;
  margin-bottom: 0; }

div.sphinxsidebar form {
  margin-top: 10px; }

div.sphinxsidebar input {
  border: 1px solid #98dbcc;
  font-family: sans-serif;
  font-size: 1em; }

div.sphinxsidebar #searchbox input[type="text"] {
  width: 170px; }

img {
  border: 0;
  max-width: 100%; }

/* -- search page ----------------------------------------------------------- */
ul.search {
  margin: 10px 0 0 20px;
  padding: 0; }

ul.search li {
  padding: 5px 0 5px 20px;
  background-image: url(file.png);
  background-repeat: no-repeat;
  background-position: 0 7px; }

ul.search li a {
  font-weight: bold; }

ul.search li div.context {
  color: #888;
  margin: 2px 0 0 30px;
  text-align: left; }

ul.keywordmatches li.goodmatch a {
  font-weight: bold; }

/* -- index page ------------------------------------------------------------ */
table.contentstable {
  width: 90%; }

table.contentstable p.biglink {
  line-height: 150%; }

a.biglink {
  font-size: 1.3em; }

span.linkdescr {
  font-style: italic;
  padding-top: 5px;
  font-size: 90%; }

/* -- general index --------------------------------------------------------- */
table.indextable {
  width: 100%; }

table.indextable td {
  text-align: left;
  vertical-align: top; }

table.indextable dl, table.indextable dd {
  margin-top: 0;
  margin-bottom: 0; }

table.indextable tr.pcap {
  height: 10px; }

table.indextable tr.cap {
  margin-top: 10px;
  background-color: #f2f2f2; }

img.toggler {
  margin-right: 3px;
  margin-top: 3px;
  cursor: pointer; }

div.modindex-jumpbox {
  border-top: 1px solid #ddd;
  border-bottom: 1px solid #ddd;
  margin: 1em 0 1em 0;
  padding: 0.4em; }

div.genindex-jumpbox {
  border-top: 1px solid #ddd;
  border-bottom: 1px solid #ddd;
  margin: 1em 0 1em 0;
  padding: 0.4em; }

/* -- general body styles --------------------------------------------------- */
div.body p, div.body dd, div.body li, div.body blockquote {
  -moz-hyphens: auto;
  -ms-hyphens: auto;
  -webkit-hyphens: auto;
  hyphens: auto; }

a.headerlink {
  visibility: hidden; }

h1:hover > a.headerlink,
h2:hover > a.headerlink,
h3:hover > a.headerlink,
h4:hover > a.headerlink,
h5:hover > a.headerlink,
h6:hover > a.headerlink,
dt:hover > a.headerlink,
caption:hover > a.headerlink,
p.caption:hover > a.headerlink,
div.code-block-caption:hover > a.headerlink {
  visibility: visible; }

div.body p.caption {
  text-align: inherit; }

div.body td {
  text-align: left; }

.field-list ul {
  padding-left: 1em; }

.first {
  margin-top: 0 !important; }

p.rubric {
  margin-top: 30px;
  font-weight: bold; }

img.align-left, .figure.align-left, object.align-left {
  clear: left;
  float: left;
  margin-right: 1em; }

img.align-right, .figure.align-right, object.align-right {
  clear: right;
  float: right;
  margin-left: 1em; }

img.align-center, .figure.align-center, object.align-center {
  display: block;
  margin-left: auto;
  margin-right: auto; }

.align-left {
  text-align: left; }

.align-center {
  text-align: center; }

.align-right {
  text-align: right; }

/* -- sidebars -------------------------------------------------------------- */
div.sidebar {
  margin: 0 0 0.5em 1em;
  border: 1px solid #ddb;
  padding: 7px 7px 0 7px;
  background-color: #ffe;
  width: 40%;
  float: right; }

p.sidebar-title {
  font-weight: bold; }

/* -- topics ---------------------------------------------------------------- */
div.topic {
  border: 1px solid #ccc;
  padding: 7px 7px 0 7px;
  margin: 10px 0 10px 0; }

p.topic-title {
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 10px; }

/* -- admonitions ----------------------------------------------------------- */
div.admonition {
  margin-top: 10px;
  margin-bottom: 10px;
  padding: 7px; }

div.admonition dt {
  font-weight: bold; }

div.admonition dl {
  margin-bottom: 0; }

p.admonition-title {
  margin: 0px 10px 5px 0px;
  font-weight: bold; }

div.body p.centered {
  text-align: center;
  margin-top: 25px; }

/* -- tables ---------------------------------------------------------------- */
table.docutils {
  border: 0;
  border-collapse: collapse; }

table caption span.caption-number {
  font-style: italic; }

table.docutils td, table.docutils th {
  padding: 1px 8px 1px 5px;
  border-top: 0;
  border-left: 0;
  border-right: 0;
  border-bottom: 1px solid #aaa; }

table.field-list td, table.field-list th {
  border: 0 !important; }

table.footnote td, table.footnote th {
  border: 0 !important; }

th {
  text-align: left;
  padding-right: 5px; }

table.citation {
  border-left: solid 1px gray;
  margin-left: 1px; }

table.citation td {
  border-bottom: none; }

/* -- figures --------------------------------------------------------------- */
div.figure {
  margin: 0.5em;
  padding: 0.5em; }

div.figure p.caption {
  padding: 0.3em; }

div.figure p.caption span.caption-number {
  font-style: italic; }

/* -- other body styles ----------------------------------------------------- */
ol.arabic {
  list-style: decimal; }

ol.loweralpha {
  list-style: lower-alpha; }

ol.upperalpha {
  list-style: upper-alpha; }

ol.lowerroman {
  list-style: lower-roman; }

ol.upperroman {
  list-style: upper-roman; }

dl {
  margin-bottom: 15px; }

dd p {
  margin-top: 0px; }

dd ul, dd table {
  margin-bottom: 10px; }

dd {
  margin-top: 3px;
  margin-bottom: 10px;
  margin-left: 30px; }

dt:target, .highlighted {
  background-color: #fbe54e; }

dl.glossary dt {
  font-weight: bold;
  font-size: 1.1em; }

.field-list ul {
  margin: 0;
  padding-left: 1em; }

.field-list p {
  margin: 0; }

.optional {
  font-size: 1.3em; }

.sig-paren {
  font-size: larger; }

.versionmodified {
  font-style: italic; }

.system-message {
  background-color: #fda;
  padding: 5px;
  border: 3px solid red; }

.footnote:target {
  background-color: #ffa; }

.line-block {
  display: block;
  margin-top: 1em;
  margin-bottom: 1em; }

.line-block .line-block {
  margin-top: 0;
  margin-bottom: 0;
  margin-left: 1.5em; }

.guilabel, .menuselection {
  font-family: sans-serif; }

.accelerator {
  text-decoration: underline; }

.classifier {
  font-style: oblique; }

abbr, acronym {
  border-bottom: dotted 1px;
  cursor: help; }

/* -- code displays --------------------------------------------------------- */
pre {
  overflow: auto;
  overflow-y: hidden;
  /* fixes display issues on Chrome browsers */ }

td.linenos pre {
  padding: 5px 0px;
  border: 0;
  background-color: transparent;
  color: #aaa; }

table.highlighttable {
  margin-left: 0.5em; }

table.highlighttable td {
  padding: 0 0.5em 0 0.5em; }

div.code-block-caption {
  padding: 2px 5px;
  font-size: small; }

div.code-block-caption code {
  background-color: transparent; }

div.code-block-caption + div > div.highlight > pre {
  margin-top: 0; }

div.code-block-caption span.caption-number {
  padding: 0.1em 0.3em;
  font-style: italic; }

div.literal-block-wrapper {
  padding: 1em 1em 0; }

div.literal-block-wrapper div.highlight {
  margin: 0; }

code.descname {
  background-color: transparent;
  font-weight: bold;
  font-size: 1.2em; }

code.descclassname {
  background-color: transparent; }

code.xref, a code {
  background-color: transparent;
  font-weight: bold; }

h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
  background-color: transparent; }

.viewcode-link {
  float: right; }

.viewcode-back {
  float: right;
  font-family: sans-serif; }

div.viewcode-block:target {
  margin: -1px -10px;
  padding: 0 10px; }

/* -- math display ---------------------------------------------------------- */
img.math {
  vertical-align: middle; }

div.body div.math p {
  text-align: center; }

span.eqno {
  float: right; }

/* -- printout stylesheet --------------------------------------------------- */
@media print {
  div.document,
  div.documentwrapper,
  div.bodywrapper {
    margin: 0 !important;
    width: 100%; }

  div.sphinxsidebar,
  div.related,
  div.footer,
  #top-link {
    display: none; } }
/* Documentation menu navigation */
.doc-navigation button.navbar-toggle {
  border-color: #000; }
.doc-navigation .icon-bar {
  background-color: #000; }

.doc-navigation.fixed-navigation {
  margin-top: 10px; }

@media (max-width: 991px) {
  .doc-navigation .collapse {
    display: none !important; }
  .doc-navigation .navbar-toggle {
    display: block; }
  .doc-navigation .navbar-header {
    float: none; }
  .doc-navigation .collapsing {
    overflow: hidden !important; }
  .doc-navigation .navbar-collapse.collapse.in {
    display: block !important; } }
@media (min-width: 991px) {
  .doc-navigation {
    margin-top: 40px;
    background-color: #90bd50;
    max-width: 300px;
    z-index: 200;
    overflow-x: hidden;
    overflow-y: hidden;
    padding-top: 10px;
    padding-bottom: 10px;
    border-radius: 8px; }
    .doc-navigation .nav {
      padding-top: 10px;
      padding-bottom: 10px; }
    .doc-navigation .navbar-collapse {
      padding: 0;
      max-height: none; }
    .doc-navigation #doc-search-form {
      text-align: center;
      margin-bottom: 20px; }
      .doc-navigation #doc-search-form input {
        border-radius: 30px;
        width: 100%; }
    .doc-navigation ul {
      padding-left: 0;
      float: none; }
    .doc-navigation ul:not {
      display: block; }
    .doc-navigation li {
      list-style-type: none; }
    .doc-navigation li.toctree-l1 {
      padding-top: 2px;
      padding-bottom: 2px; }
      .doc-navigation li.toctree-l1 a {
        color: #f5f5f5;
        padding-top: 2px;
        padding-bottom: 2px;
        margin: 0;
        display: block;
        padding-left: 10px;
        padding-right: 10px; }
        .doc-navigation li.toctree-l1 a:hover {
          color: #f5d35f;
          text-decoration: none; }
    .doc-navigation li.toctree-l1.current {
      background-color: #e2e2e2;
      border-top: 1px solid #80ac40;
      border-bottom: 1px solid #80ac40; }
      .doc-navigation li.toctree-l1.current > a {
        color: #404141; }
        .doc-navigation li.toctree-l1.current > a:hover {
          color: #557826;
          text-decoration: none; }
    .doc-navigation li.toctree-l2 a {
      color: #404141;
      margin-left: 10px;
      font-size: 96%; }
      .doc-navigation li.toctree-l2 a:hover {
        color: #557826; }
    .doc-navigation li.toctree-l3 {
      margin: 0; }
      .doc-navigation li.toctree-l3 a {
        padding-left: 30px;
        color: #404141;
        font-size: 95%; } }
ul.search li {
  background-image: none; }

.doc-prev-next-links {
  margin-top: 40px; }

/* -- admonitions ----------------------------------------------------------- */
div.admonition {
  border: 1px solid transparent;
  border-radius: 4px;
  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
  margin: 20px 10px;
  padding: 0; }
  div.admonition dt {
    font-weight: bold; }
  div.admonition dl {
    margin-bottom: 0; }
  div.admonition p {
    padding: 15px; }
  div.admonition p.admonition-title {
    padding: 10px 15px;
    font-weight: bold;
    border-bottom: 1px solid transparent; }

.admonition.admonition-todo {
  border-color: #337ab7; }
  .admonition.admonition-todo .admonition-title {
    color: #fff;
    border-color: #337ab7;
    background-color: #337ab7; }

.admonition.warning {
  border-color: #ebccd1; }
  .admonition.warning .admonition-title {
    color: #a94442;
    border-color: #ebccd1;
    background-color: #f2d2d2; }

.admonition.note, .admonition.hint {
  border-color: #d6e9c6; }
  .admonition.note .admonition-title, .admonition.hint .admonition-title {
    color: #3c763d;
    border-color: #d6e9c6;
    background-color: #dff0d8; }

/* -- tables ---------------------------------------------------------------- */
table.docutils {
  margin: 20px 0px 30px 20px; }
  table.docutils td, table.docutils th {
    border: 0; }
  table.docutils thead {
    background-color: #ddd;
    border-top: 1px solid #aaa;
    border-bottom: 1px solid #aaa; }
  table.docutils tbody {
    border-bottom: 1px solid #aaa; }
