@font-face {
  font-family: Roboto;
  font-style: normal;
  font-weight: 400;
  src: url(../font/roboto-latin-400-normal.woff2) format("woff2"), url(../font/roboto-latin-400-normal.woff) format("woff");
  unicode-range: U+00??, U+0131, U+0152-0153, U+02bb-02bc, U+02c6, U+02da, U+02dc, U+2000-206f, U+2074, U+20ac, U+2122, U+2191, U+2193, U+2212, U+2215, U+feff, U+fffd
}

@font-face {
  font-family: Roboto;
  font-style: normal;
  font-weight: 400;
  src: url(../font/roboto-cyrillic-400-normal.woff2) format("woff2");
  unicode-range: U+0301, U+0400-045f, U+0490-0491, U+04b0-04b1, U+2116
}

@font-face {
  font-family: Roboto;
  font-style: italic;
  font-weight: 400;
  src: url(../font/roboto-latin-400-italic.woff2) format("woff2"), url(../font/roboto-latin-400-italic.woff) format("woff");
  unicode-range: U+00??, U+0131, U+0152-0153, U+02bb-02bc, U+02c6, U+02da, U+02dc, U+2000-206f, U+2074, U+20ac, U+2122, U+2191, U+2193, U+2212, U+2215, U+feff, U+fffd
}

@font-face {
  font-family: Roboto;
  font-style: italic;
  font-weight: 400;
  src: url(../font/roboto-cyrillic-400-italic.woff2) format("woff2");
  unicode-range: U+0301, U+0400-045f, U+0490-0491, U+04b0-04b1, U+2116
}

@font-face {
  font-family: Roboto;
  font-style: normal;
  font-weight: 600;
  src: url(../font/roboto-latin-500-normal.woff2) format("woff2"), url(../font/roboto-latin-500-normal.woff) format("woff");
  unicode-range: U+00??, U+0131, U+0152-0153, U+02bb-02bc, U+02c6, U+02da, U+02dc, U+2000-206f, U+2074, U+20ac, U+2122, U+2191, U+2193, U+2212, U+2215, U+feff, U+fffd
}

@font-face {
  font-family: Roboto;
  font-style: normal;
  font-weight: 600;
  src: url(../font/roboto-cyrillic-500-normal.woff2) format("woff2");
  unicode-range: U+0301, U+0400-045f, U+0490-0491, U+04b0-04b1, U+2116
}

@font-face {
  font-family: Roboto;
  font-style: italic;
  font-weight: 600;
  src: url(../font/roboto-latin-500-italic.woff2) format("woff2"), url(../font/roboto-latin-500-italic.woff) format("woff");
  unicode-range: U+00??, U+0131, U+0152-0153, U+02bb-02bc, U+02c6, U+02da, U+02dc, U+2000-206f, U+2074, U+20ac, U+2122, U+2191, U+2193, U+2212, U+2215, U+feff, U+fffd
}

@font-face {
  font-family: Roboto;
  font-style: italic;
  font-weight: 600;
  src: url(../font/roboto-cyrillic-500-italic.woff2) format("woff2");
  unicode-range: U+0301, U+0400-045f, U+0490-0491, U+04b0-04b1, U+2116
}

@font-face {
  font-family: Roboto Mono;
  font-style: normal;
  font-weight: 400;
  src: url(../font/roboto-mono-latin-400-normal.woff2) format("woff2"), url(../font/roboto-mono-latin-400-normal.woff) format("woff");
  unicode-range: U+00??, U+0131, U+0152-0153, U+02bb-02bc, U+02c6, U+02da, U+02dc, U+2000-206f, U+2074, U+20ac, U+2122, U+2191, U+2193, U+2212, U+2215, U+feff, U+fffd
}

@font-face {
  font-family: Roboto Mono;
  font-style: normal;
  font-weight: 600;
  src: url(../font/roboto-mono-latin-500-normal.woff2) format("woff2"), url(../font/roboto-mono-latin-500-normal.woff) format("woff");
  unicode-range: U+00??, U+0131, U+0152-0153, U+02bb-02bc, U+02c6, U+02da, U+02dc, U+2000-206f, U+2074, U+20ac, U+2122, U+2191, U+2193, U+2212, U+2215, U+feff, U+fffd
}

*,
::after,
::before {
  -webkit-box-sizing: inherit;
  box-sizing: inherit
}

html {
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
  font-size: 1.0625em;
  height: 100%;
  scroll-behavior: smooth
}

@media screen and (min-width:1024px) {
  html {
    font-size: 1.125em
  }
}

body {
  background: #fff;
  color: #222;
  font-family: Roboto, sans-serif;
  line-height: 1.15;
  margin: 0;
  -moz-tab-size: 4;
  -o-tab-size: 4;
  tab-size: 4;
  word-wrap: anywhere
}

a {
  text-decoration: none
}

a:hover {
  text-decoration: underline
}

a:active {
  background-color: none
}

code,
kbd,
pre {
  font-family: Roboto Mono, monospace
}

b,
dt,
strong,
th {
  font-weight: 600
}

sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline
}

sup {
  top: -.5em
}

sub {
  bottom: -.25em
}

button {
  cursor: pointer;
  font-family: inherit;
  font-size: 1em;
  line-height: 1.15;
  margin: 0
}

button::-moz-focus-inner {
  border: none;
  padding: 0
}

summary {
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  outline: none
}

table {
  border-collapse: collapse;
  word-wrap: normal
}

::-moz-placeholder {
  opacity: .5
}

:-ms-input-placeholder {
  opacity: .5
}

::-ms-input-placeholder {
  opacity: .5
}

::placeholder {
  opacity: .5
}

@media (pointer:fine) {
  @supports (scrollbar-width:thin) {
    html {
      scrollbar-color: #c1c1c1 #fafafa
    }

    body * {
      scrollbar-width: thin;
      scrollbar-color: #c1c1c1 transparent
    }
  }

}

@media screen and (min-width:1024px) {
  .body {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex
  }
}

@media screen and (max-width:1023.5px) {
  html.is-clipped--nav {
    overflow-y: hidden
  }
}

.nav-container {
  position: fixed;
  top: 3.5rem;
  left: 0;
  width: 100%;
  font-size: .94444rem;
  z-index: 1;
  visibility: hidden
}

@media screen and (min-width:769px) {
  .nav-container {
    width: 15rem
  }
}

@media screen and (min-width:1024px) {
  .nav-container {
    font-size: .86111rem;
    -webkit-box-flex: 0;
    -ms-flex: none;
    flex: none;
    position: static;
    top: 0;
    visibility: visible
  }
}

.nav-container.is-active {
  visibility: visible
}

.nav {
  background: #fafafa;
  position: relative;
  top: 2.5rem;
  height: calc(100vh - 6rem)
}

@media screen and (min-width:769px) {
  .nav {
    -webkit-box-shadow: .5px 0 3px #c1c1c1;
    box-shadow: .5px 0 3px #c1c1c1
  }
}

@media screen and (min-width:1024px) {
  .nav {
    top: 3.5rem;
    -webkit-box-shadow: none;
    box-shadow: none;
    position: sticky;
    height: calc(100vh - 3.5rem)
  }
}

.nav a {
  color: inherit
}

.nav .panels {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-direction: column;
  flex-direction: column;
  height: inherit
}

.nav-panel-menu {
  overflow-y: scroll;
  -ms-scroll-chaining: none;
  overscroll-behavior: none;
  height: calc(100% - 2.5rem)
}

.nav-panel-menu:only-child {
  height: 100%
}

.nav-panel-menu:not(.is-active) .nav-menu {
  opacity: .75
}

.nav-panel-menu:not(.is-active)::after {
  content: "";
  background: rgba(0, 0, 0, .5);
  display: block;
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0
}

.nav-menu {
  min-height: 100%;
  padding: .5rem .75rem;
  line-height: 1.35;
  position: relative
}

.nav-menu-toggle {
  background: transparent url(../img/octicons-16.svg#view-unfold) no-repeat 50%/100% 100%;
  border: none;
  float: right;
  height: 1em;
  margin-right: -.5rem;
  opacity: .75;
  outline: none;
  padding: 0;
  position: sticky;
  top: .85rem;
  visibility: hidden;
  width: 1em
}

.nav-menu-toggle.is-active {
  background-image: url(../img/octicons-16.svg#view-fold)
}

.nav-panel-menu.is-active:hover .nav-menu-toggle {
  visibility: visible
}

.nav-menu h3.title {
  color: #424242;
  font-size: inherit;
  font-weight: 600;
  margin: 0;
  padding: .25em 0 .125em
}

.nav-list {
  list-style: none;
  margin: 0 0 0 .75rem;
  padding: 0
}

.nav-item {
  margin-top: .5em
}

.nav-item-toggle~.nav-list {
  padding-bottom: .125rem
}

.nav-item[data-depth="0"]>.nav-list:first-child {
  display: block;
  margin: 0
}

.nav-item:not(.is-active)>.nav-list {
  display: none
}

.nav-item-toggle {
  background: transparent url(../img/caret.svg) no-repeat 50%/50%;
  border: none;
  outline: none;
  line-height: inherit;
  padding: 0;
  position: absolute;
  height: 1.35em;
  width: 1.35em;
  margin-top: -.05em;
  margin-left: -1.35em
}

.nav-item.is-active>.nav-item-toggle {
  -webkit-transform: rotate(90deg);
  transform: rotate(90deg)
}

.is-current-page>.nav-link,
.is-current-page>.nav-text {
  font-weight: 600
}

.nav-panel-explore {
  background: #fafafa;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-direction: column;
  flex-direction: column;
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0
}

.nav-panel-explore:not(:first-child) {
  top: auto;
  max-height: calc(50% + 2.5rem)
}

.nav-panel-explore .context {
  font-size: .83333rem;
  -ms-flex-negative: 0;
  flex-shrink: 0;
  color: #5d5d5d;
  -webkit-box-shadow: 0 -1px 0 #e1e1e1;
  box-shadow: 0 -1px 0 #e1e1e1;
  padding: 0 .5rem;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  -webkit-box-pack: justify;
  -ms-flex-pack: justify;
  justify-content: space-between;
  line-height: 1;
  height: 2.5rem
}

.nav-panel-explore:not(:first-child) .context {
  cursor: pointer
}

.nav-panel-explore .context .version {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: inherit;
  -ms-flex-align: inherit;
  align-items: inherit
}

.nav-panel-explore .context .version::after {
  content: "";
  background: url(../img/chevron.svg) no-repeat 100%/auto 100%;
  width: 1.25em;
  height: .75em
}

.nav-panel-explore .components {
  line-height: 1.35;
  -webkit-box-flex: 1;
  -ms-flex-positive: 1;
  flex-grow: 1;
  -webkit-box-shadow: inset 0 1px 5px #e1e1e1;
  box-shadow: inset 0 1px 5px #e1e1e1;
  background: #f0f0f0;
  padding: .75rem .75rem 0;
  margin: 0;
  overflow-y: scroll;
  -ms-scroll-chaining: none;
  overscroll-behavior: none;
  max-height: 100%;
  display: block
}

.nav-panel-explore:not(.is-active) .components {
  display: none
}

.nav-panel-explore .component {
  display: block
}

.nav-panel-explore .component:last-child {
  margin-bottom: .75rem
}

.nav-panel-explore .component .title {
  font-weight: 600;
  text-indent: .375rem hanging
}

.nav-panel-explore .versions {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
  padding-left: 0;
  margin: -.125rem -.375rem 0 .375rem;
  line-height: 1;
  list-style: none
}

.nav-panel-explore .component .version {
  margin: .375rem .375rem 0 0
}

.nav-panel-explore .component .version a {
  background: #c1c1c1;
  border-radius: .25rem;
  white-space: nowrap;
  padding: .25em .5em;
  display: inherit;
  opacity: .75
}

.nav-panel-explore .component .is-current a {
  background: #424242;
  color: #f0f0f0;
  font-weight: 600;
  opacity: 1
}

body.-toc aside.toc.sidebar {
  display: none
}

@media screen and (max-width:1023.5px) {
  aside.toc.sidebar {
    display: none
  }

  main>.content {
    overflow-x: auto
  }
}

@media screen and (min-width:1024px) {
  main {
    -webkit-box-flex: 1;
    -ms-flex: auto;
    flex: auto;
    min-width: 0
  }

  main>.content {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex
  }

  aside.toc.embedded {
    display: none
  }

  aside.toc.sidebar {
    -webkit-box-flex: 0;
    -ms-flex: 0 0 9rem;
    flex: 0 0 9rem;
    -webkit-box-ordinal-group: 2;
    -ms-flex-order: 1;
    order: 1
  }
}

@media screen and (min-width:1216px) {
  aside.toc.sidebar {
    -ms-flex-preferred-size: 12rem;
    flex-basis: 12rem
  }
}

.toolbar {
  color: #5d5d5d;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  background-color: #fafafa;
  -webkit-box-shadow: 0 1px 0 #e1e1e1;
  box-shadow: 0 1px 0 #e1e1e1;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  font-size: .83333rem;
  height: 2.5rem;
  -webkit-box-pack: start;
  -ms-flex-pack: start;
  justify-content: flex-start;
  position: sticky;
  top: 3.5rem;
  z-index: 2
}

.toolbar a {
  color: inherit
}

.nav-toggle {
  background: url(../img/menu.svg) no-repeat 50% 47.5%;
  background-size: 49%;
  border: none;
  outline: none;
  line-height: inherit;
  padding: 0;
  height: 2.5rem;
  width: 2.5rem;
  margin-right: -.25rem
}

@media screen and (min-width:1024px) {
  .nav-toggle {
    display: none
  }
}

.nav-toggle.is-active {
  background-image: url(../img/back.svg);
  background-size: 41.5%
}

.home-link {
  display: block;
  background: url(../img/home-o.svg) no-repeat 50%;
  height: 1.25rem;
  width: 1.25rem;
  margin: .625rem
}

.home-link.is-current,
.home-link:hover {
  background-image: url(../img/home.svg)
}

.edit-this-page {
  display: none;
  padding-right: .5rem
}

@media screen and (min-width:1024px) {
  .edit-this-page {
    display: block
  }
}

.toolbar .edit-this-page a {
  color: #8e8e8e
}

.breadcrumbs {
  display: none;
  -webkit-box-flex: 1;
  -ms-flex: 1 1;
  flex: 1 1;
  padding: 0 .5rem 0 .75rem;
  line-height: 1.35
}

@media screen and (min-width:1024px) {
  .breadcrumbs {
    display: block
  }
}

a+.breadcrumbs {
  padding-left: .05rem
}

.breadcrumbs ul {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
  margin: 0;
  padding: 0;
  list-style: none
}

.breadcrumbs li {
  display: inline;
  margin: 0
}

.breadcrumbs li::after {
  content: "/";
  padding: 0 .5rem
}

.breadcrumbs li:last-of-type::after {
  content: none
}

.page-versions {
  margin: 0 .2rem 0 auto;
  position: relative;
  line-height: 1
}

@media screen and (min-width:1024px) {
  .page-versions {
    margin-right: .7rem
  }
}

.page-versions .version-menu-toggle {
  color: inherit;
  background: url(../img/chevron.svg) no-repeat;
  background-position: right .5rem top 50%;
  background-size: auto .75em;
  border: none;
  outline: none;
  line-height: inherit;
  padding: .5rem 1.5rem .5rem .5rem;
  position: relative;
  z-index: 3
}

.page-versions .version {
  display: block;
  padding-top: .5rem
}

.toc-menu {
  color: #5d5d5d
}

.toc.sidebar .toc-menu {
  margin-right: .75rem;
  position: sticky;
  top: 6rem
}

.toc .toc-menu h3 {
  color: #333;
  font-size: .88889rem;
  font-weight: 600;
  line-height: 1.3;
  margin: 0 -.5px;
  padding-bottom: .25rem
}

.toc.sidebar .toc-menu h3 {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-direction: column;
  flex-direction: column;
  height: 2.5rem;
  -webkit-box-pack: end;
  -ms-flex-pack: end;
  justify-content: flex-end
}

.toc .toc-menu ul {
  font-size: .83333rem;
  line-height: 1.2;
  list-style: none;
  margin: 0;
  padding: 0
}

.toc.sidebar .toc-menu ul {
  max-height: calc(100vh - 8.5rem);
  overflow-y: auto;
  -ms-scroll-chaining: none;
  overscroll-behavior: none
}

@supports (scrollbar-width:none) {
  .toc.sidebar .toc-menu ul {
    scrollbar-width: none
  }
}

.toc .toc-menu ul::-webkit-scrollbar {
  width: 0;
  height: 0
}

@media screen and (min-width:1024px) {
  .toc .toc-menu h3 {
    font-size: .83333rem
  }

  .toc .toc-menu ul {
    font-size: .75rem
  }
}

.toc .toc-menu li {
  margin: 0
}

.toc .toc-menu li[data-level="2"] a {
  padding-left: 1.25rem
}

.toc .toc-menu li[data-level="3"] a {
  padding-left: 2rem
}

.toc .toc-menu a {
  color: inherit;
  border-left: 2px solid #e1e1e1;
  display: inline-block;
  padding: .25rem 0 .25rem .5rem;
  text-decoration: none
}

.sidebar.toc .toc-menu a {
  display: block;
  outline: none
}

.toc .toc-menu a:hover {
  color: #1565c0
}

.toc .toc-menu a.is-active {
  border-left-color: #1565c0;
  color: #333
}

.sidebar.toc .toc-menu a:focus {
  background: #fafafa
}

.doc {
  color: #333;
  font-size: inherit;
  -ms-hyphens: auto;
  hyphens: auto;
  line-height: 1.6;
  margin: 0 auto;
  max-width: 40rem;
  padding: 0 1rem 4rem
}

@media screen and (min-width:1024px) {
  .doc {
    -webkit-box-flex: 1;
    -ms-flex: auto;
    flex: auto;
    font-size: .94444rem;
    margin: 0 2rem;
    max-width: 46rem;
    min-width: 0
  }
}

.doc h1,
.doc h2,
.doc h3,
.doc h4,
.doc h5,
.doc h6 {
  color: #191919;
  font-weight: 400;
  -ms-hyphens: none;
  hyphens: none;
  line-height: 1.3;
  margin: 1rem 0 0
}

.doc>h1.page:first-child {
  font-size: 2rem;
  margin: 1.5rem 0
}

@media screen and (min-width:769px) {
  .doc>h1.page:first-child {
    margin-top: 2.5rem
  }
}

.doc>h1.page:first-child+aside.toc.embedded {
  margin-top: -.5rem
}

.doc>h2#name+.sectionbody {
  margin-top: 1rem
}

#preamble+.sect1,
.doc .sect1+.sect1 {
  margin-top: 2rem
}

.doc h1.sect0 {
  background: #f0f0f0;
  font-size: 1.8em;
  margin: 1.5rem -1rem 0;
  padding: .5rem 1rem
}

.doc h2:not(.discrete) {
  border-bottom: 1px solid #e1e1e1;
  margin-left: -1rem;
  margin-right: -1rem;
  padding: .4rem 1rem .1rem
}

.doc h3:not(.discrete),
.doc h4:not(.discrete) {
  font-weight: 600
}

.doc h1 .anchor,
.doc h2 .anchor,
.doc h3 .anchor,
.doc h4 .anchor,
.doc h5 .anchor,
.doc h6 .anchor {
  position: absolute;
  text-decoration: none;
  width: 1.75ex;
  margin-left: -1.5ex;
  visibility: hidden;
  font-size: .8em;
  font-weight: 400;
  padding-top: .05em
}

.doc h1:hover .anchor,
.doc h2:hover .anchor,
.doc h3:hover .anchor,
.doc h4:hover .anchor,
.doc h5:hover .anchor,
.doc h6:hover .anchor {
  visibility: visible
}

.doc dl,
.doc p {
  margin: 0
}

.doc a {
  color: #1565c0
}

.doc a:hover {
  color: #104d92
}

.doc i.fa {
  -ms-hyphens: none;
  hyphens: none;
  font-style: normal
}

.doc .colist>table code,
.doc p code,
.doc thead code {
  color: #222;
  background: #fafafa;
  border-radius: .25em;
  font-size: .95em;
  padding: .125em .25em
}

.doc code,
.doc pre {
  -ms-hyphens: none;
  hyphens: none
}

.doc pre {
  font-size: .88889rem;
  line-height: 1.5;
  margin: 0
}

.doc blockquote {
  margin: 0
}

.doc .right {
  float: right
}

.doc .left {
  float: left
}

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

.doc .stretch {
  width: 100%
}

.doc .big {
  font-size: larger
}

.doc .dlist,
.doc .exampleblock,
.doc .hdlist,
.doc .imageblock,
.doc .listingblock,
.doc .literalblock,
.doc .olist,
.doc .paragraph,
.doc .partintro,
.doc .quoteblock,
.doc .sidebarblock,
.doc .tabs,
.doc .ulist,
.doc .verseblock,
.doc .videoblock,
.doc details,
.doc hr {
  margin: 1rem 0 0
}

.doc .tablecontainer,
.doc .tablecontainer+*,
.doc :not(.tablecontainer)>table.tableblock,
.doc :not(.tablecontainer)>table.tableblock+*,
.doc>table.tableblock,
.doc>table.tableblock+* {
  margin-top: 1.5rem
}

.doc table.tableblock {
  font-size: .83333rem
}

.doc td.tableblock>.content {
  word-wrap: anywhere
}

.doc td.tableblock>.content>:first-child {
  margin-top: 0
}

.doc table.tableblock td,
.doc table.tableblock th {
  padding: .5rem
}

.doc table.tableblock,
.doc table.tableblock>*>tr>* {
  border: 0 solid #e1e1e1
}

.doc table.grid-all>*>tr>* {
  border-width: 1px
}

.doc table.grid-all>thead th,
.doc table.grid-rows>thead th {
  border-bottom-width: 2.5px
}

.doc table.frame-all {
  border-width: 1px
}

.doc table.frame-none>colgroup+*>:first-child>*,
.doc table.frame-sides>colgroup+*>:first-child>* {
  border-top-width: 0
}

.doc table.frame-sides>:last-child>:last-child>* {
  border-bottom-width: 0
}

.doc table.frame-ends>*>tr>:first-child,
.doc table.frame-none>*>tr>:first-child {
  border-left-width: 0
}

.doc table.frame-ends>*>tr>:last-child,
.doc table.frame-none>*>tr>:last-child {
  border-right-width: 0
}

.doc .halign-left {
  text-align: left
}

.doc .valign-top {
  vertical-align: top
}

.doc .admonitionblock {
  margin: 1.4rem 0 0
}

.doc .admonitionblock p,
.doc .admonitionblock td.content {
  font-size: .88889rem
}

.doc .admonitionblock td.content>.title+*,
.doc .admonitionblock td.content>:not(.title):first-child {
  margin-top: 0
}

.doc .admonitionblock td.content pre {
  font-size: .83333rem
}

.doc .admonitionblock>table {
  table-layout: fixed;
  position: relative;
  width: 100%
}

.doc .admonitionblock td.content {
  padding: 1rem 1rem .75rem;
  background: #fafafa;
  width: 100%;
  word-wrap: anywhere
}

.doc .admonitionblock td.icon {
  font-size: .83333rem;
  left: 0;
  line-height: 1;
  padding: 0;
  position: absolute;
  top: 0;
  -webkit-transform: translate(-.5rem, -50%);
  transform: translate(-.5rem, -50%)
}

.doc .admonitionblock td.icon i {
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  border-radius: .45rem;
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-filter: initial;
  filter: none;
  height: 1.25rem;
  padding: 0 .5rem;
  vertical-align: initial;
  width: -webkit-fit-content;
  width: -moz-fit-content;
  width: fit-content
}

.doc .admonitionblock td.icon i::after {
  content: attr(title);
  font-weight: 600;
  font-style: normal;
  text-transform: uppercase
}

.doc .admonitionblock td.icon i.icon-caution {
  background-color: #a0439c;
  color: #fff
}

.doc .admonitionblock td.icon i.icon-important {
  background-color: #d32f2f;
  color: #fff
}

.doc .admonitionblock td.icon i.icon-note {
  background-color: #217ee7;
  color: #fff
}

.doc .admonitionblock td.icon i.icon-tip {
  background-color: #41af46;
  color: #fff
}

.doc .admonitionblock td.icon i.icon-warning {
  background-color: #e18114;
  color: #fff
}

.doc .imageblock,
.doc .videoblock {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-direction: column;
  flex-direction: column;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center
}

.doc .imageblock .content {
  -ms-flex-item-align: stretch;
  align-self: stretch;
  text-align: center
}

.doc .image>img,
.doc .image>object,
.doc .image>svg,
.doc .imageblock img,
.doc .imageblock object,
.doc .imageblock svg {
  display: inline-block;
  height: auto;
  max-width: 100%;
  vertical-align: middle
}

.doc .image:not(.left):not(.right)>img {
  margin-top: -.2em
}

.doc .videoblock iframe,
.doc .videoblock video {
  max-width: 100%;
  vertical-align: middle
}

.doc .quoteblock,
.doc .verseblock {
  background: #fafafa;
  border-left: 5px solid #5d5d5d;
  color: #5d5d5d
}

.doc .quoteblock {
  padding: .25rem 2rem 1.25rem
}

.doc .quoteblock blockquote {
  margin-top: 1rem
}

.doc ol,
.doc ul {
  margin: 0;
  padding: 0 0 0 2rem
}

.doc ol.none,
.doc ol.unnumbered,
.doc ol.unstyled,
.doc ul.checklist,
.doc ul.no-bullet,
.doc ul.none,
.doc ul.unstyled {
  list-style-type: none
}

.doc ul.square {
  list-style-type: square
}

.doc ul.circle ul:not([class]),
.doc ul.disc ul:not([class]),
.doc ul.square ul:not([class]) {
  list-style: inherit
}

.doc ol.arabic {
  list-style-type: decimal
}

.doc ol.decimal {
  list-style-type: decimal-leading-zero
}

.doc ul.checklist p>i.fa-check-square-o:first-child,
.doc ul.checklist p>i.fa-square-o:first-child {
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  width: 1.25rem;
  margin-left: -1.25rem
}

.doc ul.checklist i.fa-check-square-o::before {
  content: "\2713"
}

.doc ul.checklist i.fa-square-o::before {
  content: "\274f"
}

.doc .dlist .dlist,
.doc .dlist .olist,
.doc .dlist .ulist,
.doc .olist .dlist,
.doc .olist .olist,
.doc .olist .ulist,
.doc .olist li+li,
.doc .ulist .dlist,
.doc .ulist .olist,
.doc .ulist .ulist,
.doc .ulist li+li {
  margin-top: .5rem
}

.doc .admonitionblock .listingblock,
.doc .olist .listingblock,
.doc .ulist .listingblock {
  padding: 0
}

.doc .admonitionblock .title,
.doc .exampleblock .title,
.doc .imageblock .title,
.doc .listingblock .title,
.doc .literalblock .title,
.doc .openblock .title,
.doc .videoblock .title,
.doc table.tableblock caption {
  color: #5d5d5d;
  font-size: .88889rem;
  font-style: italic;
  font-weight: 600;
  -ms-hyphens: none;
  hyphens: none;
  letter-spacing: .01em;
  padding-bottom: .075rem
}

.doc details {
  margin-left: 1rem
}

.doc details>summary {
  display: block;
  position: relative;
  line-height: 1.6;
  margin-bottom: .5rem
}

.doc details>summary::-webkit-details-marker {
  display: none
}

.doc details>summary::before {
  content: "";
  border: solid transparent;
  border-left: solid;
  border-width: .3em 0 .3em .5em;
  position: absolute;
  top: .5em;
  left: -1rem;
  -webkit-transform: translateX(15%);
  transform: translateX(15%)
}

.doc details[open]>summary::before {
  border-color: currentColor transparent transparent;
  border-width: .5rem .3rem 0;
  -webkit-transform: translateY(15%);
  transform: translateY(15%)
}

.doc details>summary::after {
  content: "";
  width: 1rem;
  height: 1em;
  position: absolute;
  top: .3em;
  left: -1rem
}

.doc details.result {
  margin-top: .25rem
}

.doc details.result>summary {
  color: #5d5d5d;
  font-style: italic;
  margin-bottom: 0
}

.doc details.result>.content {
  margin-left: -1rem
}

.doc .exampleblock>.content,
.doc details.result>.content {
  background: #fff;
  border: .25rem solid #5d5d5d;
  border-radius: .5rem;
  padding: .75rem
}

.doc .exampleblock>.content::after,
.doc details.result>.content::after {
  content: "";
  display: table;
  clear: both
}

.doc .exampleblock>.content>:first-child,
.doc details>.content>:first-child {
  margin-top: 0
}

.doc .sidebarblock>.content>.title+*,
.doc .sidebarblock>.content>:not(.title):first-child {
  margin-top: 0
}

.doc .listingblock.wrap pre,
.doc table.tableblock pre {
  white-space: pre-wrap
}

.doc .listingblock pre:not(.highlight),
.doc .literalblock pre,
.doc pre.highlight>code {
  background: #fafafa;
  -webkit-box-shadow: inset 0 0 1.75px #e1e1e1;
  box-shadow: inset 0 0 1.75px #e1e1e1;
  display: block;
  overflow-x: auto;
  padding: .875em
}

.doc .listingblock>.content {
  position: relative
}

.doc .source-toolbox {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  visibility: hidden;
  position: absolute;
  top: .25rem;
  right: .5rem;
  color: grey;
  font-family: Roboto, sans-serif;
  font-size: .72222rem;
  line-height: 1;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  white-space: nowrap;
  z-index: 1
}

.doc .listingblock:hover .source-toolbox {
  visibility: visible
}

.doc .source-toolbox .source-lang {
  text-transform: uppercase;
  letter-spacing: .075em
}

.doc .source-toolbox>:not(:last-child)::after {
  content: "|";
  letter-spacing: 0;
  padding: 0 1ch
}

.doc .source-toolbox .copy-button {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-direction: column;
  flex-direction: column;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  background: none;
  border: none;
  color: inherit;
  outline: none;
  padding: 0;
  font-size: inherit;
  line-height: inherit;
  width: 1em;
  height: 1em
}

.doc .source-toolbox .copy-icon {
  -webkit-box-flex: 0;
  -ms-flex: none;
  flex: none;
  width: inherit;
  height: inherit
}

.doc .source-toolbox img.copy-icon {
  -webkit-filter: invert(50.2%);
  filter: invert(50.2%)
}

.doc .source-toolbox svg.copy-icon {
  fill: currentColor
}

.doc .source-toolbox .copy-toast {
  -webkit-box-flex: 0;
  -ms-flex: none;
  flex: none;
  position: relative;
  display: -webkit-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  margin-top: 1em;
  background-color: #333;
  border-radius: .25em;
  padding: .5em;
  color: #fff;
  cursor: auto;
  opacity: 0;
  -webkit-transition: opacity .5s ease .5s;
  transition: opacity .5s ease .5s
}

.doc .source-toolbox .copy-toast::after {
  content: "";
  position: absolute;
  top: 0;
  width: 1em;
  height: 1em;
  border: .55em solid transparent;
  border-left-color: #333;
  -webkit-transform: rotate(-90deg) translateX(50%) translateY(50%);
  transform: rotate(-90deg) translateX(50%) translateY(50%);
  -webkit-transform-origin: left;
  transform-origin: left
}

.doc .source-toolbox .copy-button.clicked .copy-toast {
  opacity: 1;
  -webkit-transition: none;
  transition: none
}

.doc .language-console .hljs-meta {
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none
}

.doc .dlist dt {
  font-style: italic
}

.doc .dlist dd {
  margin: 0 0 0 1.5rem
}

.doc .dlist dd+dt,
.doc .dlist dd>p:first-child {
  margin-top: .5rem
}

.doc .colist>table>tbody>tr>:first-child,
.doc .colist>table>tr>:first-child {
  padding: .25em .5rem 0;
  vertical-align: top
}

.doc .colist>table>tbody>tr>:last-child,
.doc .colist>table>tr>:last-child {
  padding: .25rem 0
}

.doc hr {
  border: solid #e1e1e1;
  border-width: 2px 0 0;
  height: 0
}

.doc b.button {
  white-space: nowrap
}

.doc b.button::before {
  content: "[";
  padding-right: .25em
}

.doc b.button::after {
  content: "]";
  padding-left: .25em
}

.doc kbd {
  display: inline-block;
  font-size: .66667rem;
  background: #fafafa;
  border: 1px solid #c1c1c1;
  border-radius: .25em;
  -webkit-box-shadow: 0 1px 0 #c1c1c1, 0 0 0 .1em #fff inset;
  box-shadow: 0 1px 0 #c1c1c1, inset 0 0 0 .1em #fff;
  padding: .25em .5em;
  vertical-align: text-bottom;
  white-space: nowrap
}

.doc .keyseq,
.doc kbd {
  line-height: 1
}

.doc .menuseq,
.doc .path {
  -ms-hyphens: none;
  hyphens: none
}

#footnotes {
  font-size: .85em;
  line-height: 1.5;
  margin: 2rem -.5rem 0
}

.doc td.tableblock>.content #footnotes {
  margin: 2rem 0 0
}

#footnotes hr {
  border-top-width: 1px;
  margin-top: 0;
  width: 20%
}

#footnotes .footnote {
  margin: .5em 0 0 1em
}

#footnotes .footnote+.footnote {
  margin-top: .25em
}

#footnotes .footnote>a:first-of-type {
  display: inline-block;
  margin-left: -2em;
  text-align: right;
  width: 1.5em
}

@media screen and (max-width:1023.5px) {
  html.is-clipped--navbar {
    overflow-y: hidden
  }
}

body {
  padding-top: 3.5rem
}

#search-input:disabled::-moz-placeholder {
  color: #4c4c4c
}

#search-input:disabled::-ms-input-placeholder {
  color: #4c4c4c
}

.navbar-burger {
  background: none;
  border: none;
  outline: none;
  line-height: 1;
  position: relative;
  width: 3rem;
  padding: 0;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-direction: column;
  flex-direction: column;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
  margin-left: auto;
  min-width: 0
}

.navbar-burger span {
  background-color: #fff;
  height: 1.5px;
  width: 1rem
}

.navbar-burger:not(.is-active) span {
  -webkit-transition: opacity 0s .25s, margin-top .25s ease-out .25s, -webkit-transform .25s ease-out;
  transition: opacity 0s .25s, margin-top .25s ease-out .25s, -webkit-transform .25s ease-out;
  transition: transform .25s ease-out, opacity 0s .25s, margin-top .25s ease-out .25s;
  transition: transform .25s ease-out, opacity 0s .25s, margin-top .25s ease-out .25s, -webkit-transform .25s ease-out
}

.navbar-burger span+span {
  margin-top: .25rem
}

.navbar-burger.is-active span+span {
  margin-top: -1.5px
}

.navbar-burger.is-active span:first-child {
  -webkit-transform: rotate(45deg);
  transform: rotate(45deg)
}

.navbar-burger.is-active span:nth-child(2) {
  opacity: 0
}

.navbar-burger.is-active span:nth-child(3) {
  -webkit-transform: rotate(-45deg);
  transform: rotate(-45deg)
}

@media screen and (max-width:768.5px) {
}

@media screen and (min-width:769px) {
}

@media screen and (max-width:1023.5px) {
}

@media screen and (min-width:1024px) {
  .navbar-burger {
    display: none
  }

}

/*! Adapted from the GitHub style by Vasily Polovnyov <vast@whiteants.net> */
.hljs-comment,
.hljs-quote {
  color: #998;
  font-style: italic
}

.hljs-keyword,
.hljs-selector-tag,
.hljs-subst {
  color: #333;
  font-weight: 600
}

.hljs-literal,
.hljs-number,
.hljs-tag .hljs-attr,
.hljs-template-variable,
.hljs-variable {
  color: teal
}

.hljs-doctag,
.hljs-string {
  color: #d14
}

.hljs-section,
.hljs-selector-id,
.hljs-title {
  color: #900;
  font-weight: 600
}

.hljs-subst {
  font-weight: 400
}

.hljs-class .hljs-title,
.hljs-type {
  color: #458;
  font-weight: 600
}

.hljs-attribute,
.hljs-name,
.hljs-tag {
  color: navy;
  font-weight: 400
}

.hljs-link,
.hljs-regexp {
  color: #009926
}

.hljs-bullet,
.hljs-symbol {
  color: #990073
}

.hljs-built_in,
.hljs-builtin-name {
  color: #0086b3
}

.hljs-meta {
  color: #999;
  font-weight: 600
}

.hljs-deletion {
  background: #fdd
}

.hljs-addition {
  background: #dfd
}

.hljs-emphasis {
  font-style: italic
}

.hljs-strong {
  font-weight: 600
}

@page {
  margin: .5in
}

@media print {
  .hide-for-print {
    display: none !important
  }

  html {
    font-size: .9375em
  }

  a {
    color: inherit !important;
    text-decoration: underline
  }

  a.bare,
  a[href^="#"],
  a[href^="mailto:"] {
    text-decoration: none
  }

  img,
  object,
  svg,
  tr {
    page-break-inside: avoid
  }

  thead {
    display: table-header-group
  }

  pre {
    -ms-hyphens: none;
    hyphens: none;
    white-space: pre-wrap
  }

  body {
    padding-top: 2rem
  }

  .navbar {
    background: none;
    color: inherit;
    position: absolute
  }

  .navbar * {
    color: inherit !important
  }

  .nav-container,
  .navbar>:not(.navbar-brand),
  .toolbar,
  aside.toc,
  nav.pagination {
    display: none
  }

  .doc {
    color: inherit;
    margin: auto;
    max-width: none;
    padding-bottom: 2rem
  }

  .doc .admonitionblock td.icon {
    -webkit-print-color-adjust: exact;
    color-adjust: exact
  }

  .doc .listingblock code[data-lang]::before {
    display: block
  }

  footer.footer {
    background: none;
    border-top: 1px solid #e1e1e1;
    color: #8e8e8e;
    padding: .25rem .5rem 0
  }

  .footer * {
    color: inherit
  }
}

/* ============================================================
 * Ninbot project overrides (merged from custom.css)
 * ============================================================ */
:root {
  --red: #E00000;
  --darkred: #700000;
  --black: #181818;
  --notsoblack: #262626;
  --topbar-height: 56px;
  --topbar-border: 5px;
}

/* ── Global body ────────────────────────────────────────────── */

body {
  margin: 0;
  background-color: white;
  padding-bottom: 36px;
  color: var(--black);
}

/* ── Global site header ─────────────────────────────────────── */

#topbar {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  height: var(--topbar-height);
  padding: 0.5rem 0;
  border-bottom: var(--topbar-border) solid var(--red);
  background-color: var(--black);
  color: white;
  z-index: 1000;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  overflow: visible;
}

#topbar-logo-wrapper {
  width: 15rem;
  flex-shrink: 0;
  display: flex;
  justify-content: center;
  align-items: center;
}

#topbar-logo-wrapper a {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  margin: 0;
}

#topbar-logo {
  height: 34px;
  width: auto;
  display: block;
  transition: transform 0.2s;
}

#topbar-logo:hover {
  transform: scale(1.05);
}

#topbar-nav {
  display: flex;
  margin-left: auto;
  align-items: stretch;
  margin-right: 1rem;
  align-self: stretch;
  margin-top: calc(-0.5rem);
  margin-bottom: calc(-0.5rem - var(--topbar-border));
}

#topbar-nav a {
  color: white;
  text-decoration: none;
  font-size: 0.95rem;
  transition: color 0.2s;
  padding: 0 1.2rem;
  padding-bottom: var(--topbar-border);
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
}

#topbar-nav>a:not(:last-child)::after,
#topbar-docs-dropdown::after {
  content: "";
  position: absolute;
  right: 0;
  top: 50%;
  transform: translateY(calc(-50% - var(--topbar-border) / 2));
  width: 1px;
  height: 1.2rem;
  background-color: var(--red);
}

#topbar-nav a:hover,
#topbar-docs-dropdown:hover>a {
  color: var(--red);
}

/* Documentation dropdown */
#topbar-docs-dropdown {
  position: relative;
  display: flex;
  align-items: stretch;
}

#topbar-docs-dropdown>a {
  padding-bottom: var(--topbar-border);
}

#topbar-docs-dropdown>a::after {
  content: none;
}

#topbar-docs-menu {
  display: none;
  position: fixed;
  top: var(--topbar-height);
  background-color: var(--black);
  min-width: 10rem;
  flex-direction: column;
  z-index: 200;
  border-bottom: var(--topbar-border) solid var(--red);
}

#topbar-docs-dropdown:hover #topbar-docs-menu {
  display: flex;
}

#topbar-docs-menu a {
  padding: 0.6rem 1.2rem;
  justify-content: flex-start;
  white-space: nowrap;
}

#topbar-docs-menu a:not(:last-child) {
  position: relative;
}

#topbar-docs-menu a:not(:last-child)::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 5%;
  width: 90%;
  height: 1px;
  background-color: var(--red);
}

#topbar-docs-menu a:last-child::after {
  display: none;
}

/* Hamburger menu button — hidden on desktop */
#topbar-menu-toggle {
  display: none;
  background: none;
  border: none;
  color: white;
  font-size: 1.5rem;
  cursor: pointer;
  margin-left: auto;
  margin-right: 1rem;
  padding: 0 0.5rem;
}

#topbar-menu-toggle:hover {
  color: var(--red);
}

@media screen and (max-width: 1350px) {
  #topbar .breadcrumbs {
    display: none !important;
  }
}

@media screen and (max-width: 850px) {
  #topbar-menu-toggle {
    display: block;
  }

  #topbar-nav {
    display: none;
    position: absolute;
    top: calc(var(--topbar-height) + var(--topbar-border));
    left: 0;
    right: 0;
    flex-direction: column;
    background-color: var(--black);
    border-bottom: var(--topbar-border) solid var(--red);
    padding: 0.5rem 0;
  }

  #topbar-nav.open {
    display: flex;
  }

  #topbar-nav a {
    padding: 0.75rem 2rem;
    justify-content: flex-start;
  }

  #topbar-nav a:not(:last-child)::after {
    display: none;
  }

  #topbar-docs-menu {
    position: static;
    border-top: none;
    border-left: 2px solid var(--red);
    margin-left: 2rem;
  }

  #topbar-docs-dropdown:hover #topbar-docs-menu {
    display: flex;
  }
}

#topbar .breadcrumbs {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  left: 15rem;
  font-size: 0.85rem;
  color: #aaa;
  display: flex;
  align-items: center;
  gap: 0.25rem;
}

#topbar .breadcrumbs::before {
  content: "›";
  margin-right: 0.5rem;
  color: #aaa;
  font-size: 1.8em;
  position: relative;
  top: -0.08em;
  display: inline-block;
}

#topbar .breadcrumbs ul {
  display: flex;
  list-style: none;
  margin: 0;
  padding: 0;
  gap: 0.5rem;
}

#topbar .breadcrumbs li {
  display: inline;
}

#topbar .breadcrumbs li:not(:last-child)::after {
  content: "›";
  margin: 0 0.3rem 0 0.05rem;
  color: #aaa;
  font-size: 1.2em;
  position: relative;
  top: -0.01em;
  display: inline-block;
  line-height: 1;
}

#topbar .breadcrumbs a {
  color: #aaa;
  text-decoration: none;
}

#topbar .breadcrumbs a:hover {
  color: var(--red);
}

/* ── Global site footer ─────────────────────────────────────── */

#sitefooter {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  height: 36px;
  padding: 0 2rem;
  border-top: 0.2em solid var(--red);
  background-color: var(--black);
  color: white;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 0.85rem;
  z-index: 1000;
}

/* ── Navigation panel ──────────────────────────────────────── */

.nav {
  height: calc(100vh - var(--topbar-height) - var(--topbar-border) - 36px);
}

.nav-panel-menu {
  height: 100%;
}

/* Separator line between nav and body */
.nav-container::after {
  content: "";
  position: fixed;
  top: calc(var(--topbar-height) + var(--topbar-border));
  left: 15rem;
  width: 1px;
  height: calc(100vh - var(--topbar-height) - var(--topbar-border) - 36px);
  background: linear-gradient(to bottom,
      var(--notsoblack) 0px,
      var(--notsoblack) 75%,
      white 85%);
  pointer-events: none;
  z-index: 100;
}

/* ── Hide unwanted Antora UI elements ───────────────────────── */

/* Replaced by #topbar */
/* Not useful for a single-version site */
.nav-panel-explore {
  display: none;
}

/* Visitors cannot edit pages */
.edit-this-page {
  display: none;
}

/* Breadcrumb and toolbar moved into header */
.toolbar {
  display: none;
}

/* ── Typography ─────────────────────────────────────────────── */

h1,
h2,
h3,
h4,
h5,
h6 {
  color: var(--black);
}

h1 {
  text-align: center;
  margin-top: 5rem !important;
  margin-bottom: 6rem !important;
}

h1,
h2 {
  text-decoration: underline var(--red) 0.1em;
  border: none !important;
  box-shadow: none;
}

h2 {
  margin-top: 3rem !important;
}

h3 {
  font-size: 1.3em;
}

.doc h3 {
  margin-top: 3rem;
  margin-bottom: 1.5rem;
  text-decoration: underline var(--red) 1px;
}

.doc h3 code {
  font-size: 0.9em;
}

code,
pre {
  font-size: 0.9rem;
}

.doc code {
  background: none;
  padding: 0;
}

.doc a code {
  color: inherit;
}

/* ── Ninbot-style code listings (dark theme) ───────────────────── */

.doc .listingblock.ninbot pre.highlightjs {
  background-color: var(--notsoblack);
  border: 2px solid var(--red);
  box-shadow: none;
  padding: 0.5em 1.2em 1.2em 0;
  overflow-wrap: normal;
  white-space: pre;
  overflow-x: auto;
}

.doc .listingblock.ninbot pre.highlightjs code.hljs {
  background-color: transparent;
  color: #f0f0f0;
  box-shadow: none;
  padding: 0;
  display: block;
}

.doc .listingblock.ninbot table.hljs-ln {
  border-collapse: collapse;
  border-spacing: 0;
  width: 100%;
}

.doc .listingblock.ninbot table.hljs-ln tr {
  border: none;
}

.doc .listingblock.ninbot td.hljs-ln-n {
  white-space: nowrap;
  padding: 0 0.8em 0 0;
  text-align: right;
  vertical-align: top;
  min-width: 2.5em;
  color: #555;
  border-right: 1px solid #333;
  border-bottom: none;
  user-select: none;
  -webkit-user-select: none;
}

.doc .listingblock.ninbot td.hljs-ln-n::before {
  content: attr(data-line-number);
}

.doc .listingblock.ninbot td.hljs-ln-code {
  padding: 0 0 0 0.8em;
  white-space: pre;
  border-bottom: none;
  vertical-align: top;
}

.doc .listingblock.ninbot .hljs-keyword,
.doc .listingblock.ninbot .hljs-built_in,
.doc .listingblock.ninbot .hljs-selector-tag {
  color: var(--red);
  font-weight: bold;
}

.doc .listingblock.ninbot .source-toolbox {
  background-color: var(--notsoblack);
}

.doc .listingblock.ninbot .hljs-comment,
.doc .listingblock.ninbot .hljs-quote {
  color: #888;
  font-style: italic;
}

.doc .listingblock.ninbot .hljs-string,
.doc .listingblock.ninbot .hljs-regexp {
  color: #a8d080;
}

.doc .listingblock.ninbot .hljs-number,
.doc .listingblock.ninbot .hljs-literal {
  color: #8dd;
}

.doc .listingblock.ninbot .hljs-meta,
.doc .listingblock.ninbot .hljs-meta .hljs-keyword {
  color: #c8a060;
}

.doc .listingblock.ninbot .hljs-type,
.doc .listingblock.ninbot .hljs-title,
.doc .listingblock.ninbot .hljs-title.class_,
.doc .listingblock.ninbot .hljs-title.function_,
.doc .listingblock.ninbot .hljs-class .hljs-title {
  color: #f0f0f0;
  font-weight: bold;
}


.doc .listingblock.ninbot .source-lang,
.doc .listingblock.ninbot .copy-button {
  color: #666;
}

/* ── Example-style code listings (light green background) ───── */
/* AsciiDoc role: [source.example,…] — short snippets in classmember/ref pages.
 * Also covers AsciiDoc-native [example] blocks (.exampleblock).
 */

.doc .exampleblock>.content,
.doc .listingblock.example>.content {
  background-color: transparent;
  border: none;
  box-shadow: none;
  border-radius: 0;
  padding: 0;
}

.doc .exampleblock pre,
.doc .listingblock.example>.content pre {
  background-color: #e4f5e4;
  border: none;
  box-shadow: none;
  padding: 0.5em 0.8em;
}

.doc .exampleblock pre>code,
.doc .listingblock.example>.content pre>code {
  background-color: transparent;
  border: none;
  box-shadow: none;
}

/* ── CMake-style code listings (hook only — visual TBD) ───────── */
/* AsciiDoc role: [source.cmake,cmake] — CMakeLists.txt listings.
 * Renders as a plain listing block today; add rules here when defining the
 * cmake-style look (line-numbered, themed for build-system code).
 */
.doc .listingblock.cmake {}

/* ── Output-style code listings (hook only — visual TBD) ──────── */
/* AsciiDoc role: [.output] — expected program output following a ninbot
 * listing. Renders as a plain listing block today; add rules here when
 * defining the output-style look (e.g. terminal-style monospace block).
 */
.doc .listingblock.output {}

/* ── Shell-style code listings (hook only — visual TBD) ───────── */
/* AsciiDoc role: [source.shell,sh] — shell commands the user types.
 * Renders as a plain listing block today; add rules here when defining
 * the shell-style look.
 */
.doc .listingblock.shell {}

/* ── Plain (unstyled) code listings ───────────────────────────── */
/* AsciiDoc syntax: [source,c++] with no role. Shrinks to fit content width. */
.doc .listingblock:not(.ninbot):not(.example):not(.cmake):not(.output):not(.shell) pre {
  display: inline-block;
  min-width: 0;
}

/* ── Inline code (hook section — current visual: plain monospace) ── */
/* AsciiDoc syntax: `text` in prose. Renders as <code> outside <pre>.
 * Current visual identity is inherited from upstream font-family rules at the
 * top of this file plus the .doc code override below. Add hook rules here when
 * defining a distinct inline-code-style look.
 */
.doc :not(pre) > code {}

/* Chain-link icon for section anchors */
.doc h1 .anchor::before,
.doc h2 .anchor::before,
.doc h3 .anchor::before,
.doc h4 .anchor::before,
.doc h5 .anchor::before,
.doc h6 .anchor::before {
  content: "";
  display: inline-block;
  width: 0.85em;
  height: 0.85em;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71'/%3E%3Cpath d='M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-size: contain;
  vertical-align: middle;
}

/* Wider content area */
.doc {
  max-width: 55rem;
  width: 100%;
  box-sizing: border-box;
}

/* TOC panel fixed to right edge */
aside.toc.sidebar {
  position: fixed;
  right: 0;
  top: calc(var(--topbar-height) + var(--topbar-border));
  height: calc(100vh - var(--topbar-height) - var(--topbar-border) - 36px);
  display: block;
  flex: none;
  width: 12rem;
  z-index: 100;
}

/* Never show the embedded (inline) TOC */
aside.toc.embedded {
  display: none;
}

/* Reserve space for fixed TOC; center content in the remaining space */
.body {
  margin-right: 12rem;
}

main.article {
  min-width: 0;
}

main>.content {
  overflow-x: visible;
  min-width: 0;
  width: 100%;
  justify-content: center;
}

/* Hide TOC when it would squeeze the body content */
@media screen and (max-width: 90rem) {
  aside.toc.sidebar {
    display: none;
  }

  .body {
    margin-right: 0;
  }
}

/* Link styles */
.content a,
main a,
.doc a {
  color: var(--darkred);
  font-weight: normal;
  text-decoration: none;
}

.content a:hover,
main a:hover,
.doc a:hover {
  color: var(--darkred);
  text-decoration: underline;
  text-decoration-color: var(--black);
}

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

/* Notsoblack color for navigation item toggle icons (wedges) */
.nav-item-toggle {
  filter: brightness(0) saturate(100%) invert(15%);
}

/* Change TOC sidebar border color to match text */
.toc .toc-menu a {
  border-left-color: var(--black);
  border-left-width: 1px;
  margin-left: 1px;
}

.toc .toc-menu a.is-active {
  border-left-color: var(--red);
  border-left-width: 3px;
  margin-left: 0;
}

/* ── Lists ──────────────────────────────────────────────────── */

.ulist ul,
.olist ol {
  margin-bottom: 0;
  gap: 0;
}

.ulist ul li,
.olist ol li {
  margin: 0 !important;
  padding: 0;
}

.ulist li p,
.olist li p {
  margin: 0;
  padding: 0;
}

.dlist dt {
  margin: 0;
}

.dlist dd {
  margin: 0;
  margin-bottom: 0.2rem;
}

/* ── Tables ─────────────────────────────────────────────────── */

th,
td {
  border-bottom: 1px solid #ddd;
  padding: 0;
}

p.tableblock {
  margin: 4px;
}

/* ── Inline LaTeX equations (eq:[…] macro, rendered via pandoc) ─ */

.doc span.math {
  font-family: "Latin Modern Roman", "Cambria Math", "STIX Two Math",
    "Times New Roman", Georgia, serif;
  font-size: 1.2em;
  margin: 0 0.4em;
}

.doc span.math em {
  font-style: italic;
}

/* ── Reference documentation: classmember <details> blocks ─── */

.doc details.classmember {
  margin-left: 2em;
  margin-top: 0;
  padding-bottom: 0;
}

.doc details.classmember:first-child {
  margin-top: 2em;
}

.doc details.classmember>summary {
  list-style: none;
  cursor: pointer;
  margin-bottom: 0;
  position: static;
  line-height: normal;
}

.doc details.classmember>summary::before,
.doc details.classmember>summary::after {
  display: none;
}

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

details.classmember summary table {
  display: inline-table;
  background-color: white;
  border-top: 0.05em solid var(--black);
  margin: 0;
  width: 100%;
}

details.classmember:last-of-type summary table {
  border-bottom: 0.05em solid var(--black);
}

details.classmember[open] summary table {
  background-color: var(--notsoblack);
  border-bottom: 0.2em solid var(--red);
  padding-bottom: 0.1em;
  color: white;
}

details.classmember[open] summary table code {
  color: inherit;
  background: none;
}

details.classmember summary td:first-of-type {
  font-weight: bold;
}

details.classmember[open] summary td:first-of-type {
  font-weight: normal;
}

details.classmember summary tr:first-of-type td {
  padding: 0.2em 1em;
  border-bottom: 0;
  vertical-align: middle;
}

details.classmember summary table td p {
  margin: 0;
}

details.classmember summary .paragraph {
  margin: 0;
}

details.classmember>.content {
  margin: 1em;
  margin-top: -1em;
  border: 0.1em solid var(--black);
  border-radius: 0.7em;
  border-top: 0;
  padding: 1em 1em 1.2em;
  background-color: #FBFCFE;
}

details.classmember th,
details.classmember td {
  border-bottom: 1px solid #ddd;
  padding: 0;
}

details.classmember>.content>.tablecontainer:first-child,
details.classmember>.content>table.tableblock:first-child {
  margin-top: 1em;
}

details.classmember p.tableblock {
  margin: 4px;
}

/* ── Expand / contract all toggle ──────────────────────────── */

.classmember-toggle {
  text-align: right;
  margin-left: 2em;
  margin-bottom: 0;
  font-size: 0.85em;
}

.classmember-toggle a {
  cursor: pointer;
  color: var(--black);
  text-decoration: none;
}

.classmember-toggle a:hover {
  color: var(--red);
}

/* ── Landing page ───────────────────────────────────────────── */
/* Override Antora's flex layout entirely for the landing page  */

.landing article.doc>h1.page:first-child {
  display: none;
}

.landing aside.nav,
.landing aside.toc,
.landing .nav-container,
.landing .toolbar,
.landing .breadcrumbs {
  display: none !important;
}

.landing .body {
  display: block;
  width: 1200px;
  max-width: 100%;
  margin: 0 auto;
  padding: 0 1rem;
  box-sizing: border-box;
}

.landing main {
  display: block;
  flex: none;
  min-width: 0;
}

.landing main>.content {
  display: block;
  overflow: visible;
  max-width: 100%;
  margin: 0;
}

.landing article.doc {
  max-width: 100% !important;
  margin: 0;
  padding: 2rem 0 15rem 0;
}

@media (max-width: 768px) {
  .landing article.doc {
    padding: 1rem 0;
  }
}

@media (max-width: 480px) {
  .landing article.doc {
    padding: 0.5rem 0;
  }
}

.landing hr {
  border-color: var(--notsoblack);
  margin: 3rem 0;
  padding: 0;
}

.doc #footnotes {
  border-top: 1px solid var(--notsoblack);
  margin-top: 3rem;
  padding-top: 1rem;
}

.landing .sect1 {
  width: 80%;
  margin: 0 auto;
}

.landing .sectionbody>.paragraph:last-of-type {
  margin-bottom: 0;
}

.landing .sectionbody>.paragraph:last-of-type p {
  margin-bottom: 0;
}

.landing .text-center {
  margin-top: 3rem;
  margin-bottom: 6rem;
}

.landing .text-center p {
  margin-top: 0;
}

.landing .sect1:has(table.tableblock) {
  width: 100%;
}

.landing table.tableblock {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 2rem;
  margin: 0 auto;
  margin-bottom: 3rem;
  border: none;
}

.landing table.tableblock colgroup {
  display: none;
}

.landing table.tableblock tbody,
.landing table.tableblock tr {
  display: contents;
}

.landing table.tableblock td {
  text-align: center;
  border: none;
  padding: 0;
  width: 300px;
  min-width: 300px;
  max-width: 300px;
  height: 300px;
  flex: 0 0 300px;
  position: relative;
  overflow: hidden;
}

.landing table.tableblock td::after {
  content: '';
  position: absolute;
  inset: 0;
  background-image: url('../img/card-borders.svg');
  background-size: 100% 100%;
  pointer-events: none;
  z-index: 10;
}

.landing table.tableblock td .content {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  align-items: center;
  height: 100%;
  width: 100%;
  padding: 1rem;
  position: relative;
  z-index: 1;
}

.landing table.tableblock td .imageblock {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  z-index: -1;
  display: flex;
  align-items: center;
  justify-content: center;
}

.landing table.tableblock td .imageblock .content,
.landing table.tableblock td .imageblock a {
  display: block;
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
}

.landing table.tableblock td .imageblock img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
  display: block;
  transform: scale(1);
  transition: transform 0.3s ease;
}

.landing table.tableblock td:hover .imageblock img {
  transform: scale(1.07);
}

.landing table.tableblock td .paragraph {
  margin: 0;
  width: 100%;
}

.landing table.tableblock td .paragraph:first-child {
  order: -1;
}

.landing table.tableblock td strong a {
  color: var(--black);
  text-decoration: underline var(--red) 0.1em;
  text-underline-offset: 0.2em;
  font-size: 1.5em;
  position: relative;
  z-index: 6;
}

.landing table.tableblock td strong a::after {
  content: '';
  position: absolute;
  inset: -1000px;
  z-index: -1;
}

.landing table.tableblock td strong a:hover {
  color: var(--red);
}

.landing .text-center p {
  display: flex;
  justify-content: center;
}

.landing a.button {
  display: inline-block;
  color: white;
  background-color: var(--notsoblack);
  border: 3px solid var(--red);
  outline: none;
  box-shadow: 0 0 0 2px white;
  text-decoration: none;
  padding: calc(0.7em - 3px) calc(5em - 3px);
  font-size: 0.95rem;
  transition: color 0.2s, box-shadow 0.2s;
}

.landing a.button:hover {
  color: var(--red);
  box-shadow: 0 0 0 2px var(--red);
}

.landing-logo {
  display: flex;
  justify-content: center;
  align-items: center;
  margin-bottom: 4rem;
  position: relative;
}

.landing-logo-stripe {
  position: absolute;
  left: 0;
  right: 0;
  height: 10px;
  background-color: var(--red);
  z-index: 0;
  pointer-events: none;
}

.landing-logo img {
  height: 109px;
  width: auto;
  background-color: white;
  position: relative;
  z-index: 1;
  padding: 0.5rem 2rem;
  transition: transform 0.2s;
}

.landing-logo img:hover {
  transform: scale(1.1);
}

.cover-wrapper {
  display: block;
  width: 100%;
  margin: 0 0 4rem 0;
  overflow: hidden;
}

.cover-wrapper img {
  display: block;
  width: 100%;
  height: auto;
}
