/*
 * documentation.css — the in-app / online product documentation reader.
 *
 * Hand-maintained. (It used to be compiled from stylus/documentation.styl;
 * that source has been retired.)
 *
 * Structure it styles (all ids/classes are emitted by the documentation
 * generator in lib/documentation.php, not hand-written):
 *     nav#sidebar           the table of contents; --sidebar-width wide, and the
 *                           page content is inset by that much when it is open
 *     div.search-overlay    the search results panel, below the toolbar
 *     .search-field         the search input inside the toolbar
 *     input#ctr_sidebar     hidden checkbox toggling the sidebar
 *     input#ctr_search      hidden checkbox toggling the search overlay
 *
 * Like the site's other controls, the sidebar and search panel are driven by
 * hidden checkboxes and their labels rather than by JavaScript, so they work
 * before od-manual.js loads.
 *
 * Theme values live in the custom properties on :root below. Custom properties
 * cannot be used inside media queries, so the two breakpoints are literal:
 *     768px   tablet: the root font size shrinks from 62.5% to 50%
 *     940px   = --max-content-width: below it the sidebar is hidden and
 *             toggled by its toolbar button; from 940px up it is always
 *             visible. The narrow-screen queries use max-width: 939.98px so
 *             that exactly one of the two layouts applies at 940px.
 *
 * Units: the root font size is 62.5%, so 1rem = 10px (8px below 768px).
 * Font sizes and the page layout (toolbar, sidebar, content column, gaps
 * between blocks, list and table indentation) use rem. Spacing that belongs
 * to a piece of text and should scale with it (heading padding, keys, inline
 * images, search highlight, controls in the toolbar) uses em, i.e. it is
 * relative to the element's own font size.
 *
 * Translucent variants of the theme colors are written as
 * color-mix(in srgb, <color> N%, transparent), which equals the color at N%
 * opacity. Lighter variants mix with white instead.
 */

:root {
  --background-color: #fff;
  --text-color: #181818;
  --accent-color: #ff6e00;
  --secondary-accent-color: #ffba00;
  --link-color: #0080ec;
  --warning-color: #eb4a00;
  --toolbar-color: #4a5468;
  /* highlights carry a subtle tint of the toolbar color */
  --sidebar-highlight-color: color-mix(in srgb, var(--toolbar-color) 13%, white);
  --sidebar-hover-color: color-mix(in srgb, var(--toolbar-color) 7%, white);
  --search-highlight-color: #ffe03a;

  --paragraph-font: "Open Sans", "Lucida Grande", sans-serif;
  --heading-font: "Source Sans Pro", Helvetica, sans-serif;
  --code-font: ui-monospace, "SF Mono", Menlo, monospace;

  --animation-time: 255ms;
  --fast-animation-time: calc(var(--animation-time) / 2);
  --loading-animation-delay: 500ms;

  --toolbar-height: 5.2rem;
  --sidebar-width: 360px;
  --max-content-width: 940px;
  --line-height: 2.8rem;
  --paragraph-spacing: 1.8rem;
  --list-item-spacing: 0.6rem;
  --list-padding-left: 3.2rem;
}


/* ==========================================================================
   Fonts
   Some formats are missing for a few cuts (e.g. Crimson Pro 300 has no
   .woff2); the browser then falls back to the next source.
   ========================================================================== */

@font-face {
  font-family: 'Open Sans';
  font-style: normal;
  font-weight: 300;
  src: url("../../fonts/open-sans-v15-latin-300.woff2") format("woff2"), url("../../fonts/open-sans-v15-latin-300.woff") format("woff");
}
@font-face {
  font-family: 'Open Sans';
  font-style: normal;
  font-weight: 400;
  src: url("../../fonts/open-sans-v15-latin-regular.woff2") format("woff2"), url("../../fonts/open-sans-v15-latin-regular.woff") format("woff");
}
@font-face {
  font-family: 'Open Sans';
  font-style: normal;
  font-weight: 600;
  src: url("../../fonts/open-sans-v15-latin-600.woff2") format("woff2"), url("../../fonts/open-sans-v15-latin-600.woff") format("woff");
}
@font-face {
  font-family: 'Open Sans';
  font-style: normal;
  font-weight: 700;
  src: url("../../fonts/open-sans-v15-latin-700.woff2") format("woff2"), url("../../fonts/open-sans-v15-latin-700.woff") format("woff");
}
@font-face {
  font-family: 'Open Sans';
  font-style: normal;
  font-weight: 800;
  src: url("../../fonts/open-sans-v15-latin-800.woff2") format("woff2"), url("../../fonts/open-sans-v15-latin-800.woff") format("woff");
}
@font-face {
  font-family: 'Open Sans';
  font-style: italic;
  font-weight: 300;
  src: url("../../fonts/open-sans-v15-latin-300italic.woff2") format("woff2"), url("../../fonts/open-sans-v15-latin-300italic.woff") format("woff");
}
@font-face {
  font-family: 'Open Sans';
  font-style: italic;
  font-weight: 400;
  src: url("../../fonts/open-sans-v15-latin-italic.woff2") format("woff2"), url("../../fonts/open-sans-v15-latin-italic.woff") format("woff");
}
@font-face {
  font-family: 'Open Sans';
  font-style: italic;
  font-weight: 600;
  src: url("../../fonts/open-sans-v15-latin-600italic.woff2") format("woff2"), url("../../fonts/open-sans-v15-latin-600italic.woff") format("woff");
}
@font-face {
  font-family: 'Open Sans';
  font-style: italic;
  font-weight: 700;
  src: url("../../fonts/open-sans-v15-latin-700italic.woff2") format("woff2"), url("../../fonts/open-sans-v15-latin-700italic.woff") format("woff");
}
@font-face {
  font-family: 'Open Sans';
  font-style: italic;
  font-weight: 800;
  src: url("../../fonts/open-sans-v15-latin-800italic.woff2") format("woff2"), url("../../fonts/open-sans-v15-latin-800italic.woff") format("woff");
}
@font-face {
  font-family: 'Crimson Pro';
  font-style: normal;
  font-weight: 200;
  src: url("../../fonts/crimson-pro-v24-latin-200.woff2") format("woff2"), url("../../fonts/crimson-pro-v24-latin-200.woff") format("woff");
}
@font-face {
  font-family: 'Crimson Pro';
  font-style: normal;
  font-weight: 300;
  src: url("../../fonts/crimson-pro-v24-latin-300.woff2") format("woff2"), url("../../fonts/crimson-pro-v24-latin-300.woff") format("woff");
}
@font-face {
  font-family: 'Crimson Pro';
  font-style: normal;
  font-weight: 400;
  src: url("../../fonts/crimson-pro-v24-latin-regular.woff2") format("woff2"), url("../../fonts/crimson-pro-v24-latin-regular.woff") format("woff");
}
@font-face {
  font-family: 'Crimson Pro';
  font-style: normal;
  font-weight: 600;
  src: url("../../fonts/crimson-pro-v24-latin-600.woff2") format("woff2"), url("../../fonts/crimson-pro-v24-latin-600.woff") format("woff");
}
@font-face {
  font-family: 'Crimson Pro';
  font-style: normal;
  font-weight: 700;
  src: url("../../fonts/crimson-pro-v24-latin-700.woff2") format("woff2"), url("../../fonts/crimson-pro-v24-latin-700.woff") format("woff");
}
@font-face {
  font-family: 'Crimson Pro';
  font-style: normal;
  font-weight: 800;
  src: url("../../fonts/crimson-pro-v24-latin-800.woff2") format("woff2"), url("../../fonts/crimson-pro-v24-latin-800.woff") format("woff");
}
@font-face {
  font-family: 'Crimson Pro';
  font-style: italic;
  font-weight: 200;
  src: url("../../fonts/crimson-pro-v24-latin-200italic.woff2") format("woff2"), url("../../fonts/crimson-pro-v24-latin-200italic.woff") format("woff");
}
@font-face {
  font-family: 'Crimson Pro';
  font-style: italic;
  font-weight: 300;
  src: url("../../fonts/crimson-pro-v24-latin-300italic.woff2") format("woff2"), url("../../fonts/crimson-pro-v24-latin-300italic.woff") format("woff");
}
@font-face {
  font-family: 'Crimson Pro';
  font-style: italic;
  font-weight: 400;
  src: url("../../fonts/crimson-pro-v24-latin-italic.woff2") format("woff2"), url("../../fonts/crimson-pro-v24-latin-italic.woff") format("woff");
}
@font-face {
  font-family: 'Crimson Pro';
  font-style: italic;
  font-weight: 600;
  src: url("../../fonts/crimson-pro-v24-latin-600italic.woff2") format("woff2"), url("../../fonts/crimson-pro-v24-latin-600italic.woff") format("woff");
}
@font-face {
  font-family: 'Crimson Pro';
  font-style: italic;
  font-weight: 700;
  src: url("../../fonts/crimson-pro-v24-latin-700italic.woff2") format("woff2"), url("../../fonts/crimson-pro-v24-latin-700italic.woff") format("woff");
}
@font-face {
  font-family: 'Crimson Pro';
  font-style: italic;
  font-weight: 800;
  src: url("../../fonts/crimson-pro-v24-latin-800italic.woff2") format("woff2"), url("../../fonts/crimson-pro-v24-latin-800italic.woff") format("woff");
}
@font-face {
  font-family: 'Source Sans Pro';
  font-style: normal;
  font-weight: 200;
  src: url("../../fonts/source-sans-pro-v11-latin-200.woff2") format("woff2"), url("../../fonts/source-sans-pro-v11-latin-200.woff") format("woff");
}
@font-face {
  font-family: 'Source Sans Pro';
  font-style: normal;
  font-weight: 300;
  src: url("../../fonts/source-sans-pro-v11-latin-300.woff2") format("woff2"), url("../../fonts/source-sans-pro-v11-latin-300.woff") format("woff");
}
@font-face {
  font-family: 'Source Sans Pro';
  font-style: normal;
  font-weight: 400;
  src: url("../../fonts/source-sans-pro-v11-latin-regular.woff2") format("woff2"), url("../../fonts/source-sans-pro-v11-latin-regular.woff") format("woff");
}
@font-face {
  font-family: 'Source Sans Pro';
  font-style: normal;
  font-weight: 600;
  src: url("../../fonts/source-sans-pro-v11-latin-600.woff2") format("woff2"), url("../../fonts/source-sans-pro-v11-latin-600.woff") format("woff");
}
@font-face {
  font-family: 'Source Sans Pro';
  font-style: normal;
  font-weight: 700;
  src: url("../../fonts/source-sans-pro-v11-latin-700.woff2") format("woff2"), url("../../fonts/source-sans-pro-v11-latin-700.woff") format("woff");
}
@font-face {
  font-family: 'Source Sans Pro';
  font-style: normal;
  font-weight: 900;
  src: url("../../fonts/source-sans-pro-v11-latin-900.woff2") format("woff2"), url("../../fonts/source-sans-pro-v11-latin-900.woff") format("woff");
}
@font-face {
  font-family: 'Source Sans Pro';
  font-style: italic;
  font-weight: 200;
  src: url("../../fonts/source-sans-pro-v11-latin-200italic.woff2") format("woff2"), url("../../fonts/source-sans-pro-v11-latin-200italic.woff") format("woff");
}
@font-face {
  font-family: 'Source Sans Pro';
  font-style: italic;
  font-weight: 300;
  src: url("../../fonts/source-sans-pro-v11-latin-300italic.woff2") format("woff2"), url("../../fonts/source-sans-pro-v11-latin-300italic.woff") format("woff");
}
@font-face {
  font-family: 'Source Sans Pro';
  font-style: italic;
  font-weight: 400;
  src: url("../../fonts/source-sans-pro-v11-latin-italic.woff2") format("woff2"), url("../../fonts/source-sans-pro-v11-latin-italic.woff") format("woff");
}
@font-face {
  font-family: 'Source Sans Pro';
  font-style: italic;
  font-weight: 600;
  src: url("../../fonts/source-sans-pro-v11-latin-600italic.woff2") format("woff2"), url("../../fonts/source-sans-pro-v11-latin-600italic.woff") format("woff");
}
@font-face {
  font-family: 'Source Sans Pro';
  font-style: italic;
  font-weight: 700;
  src: url("../../fonts/source-sans-pro-v11-latin-700italic.woff2") format("woff2"), url("../../fonts/source-sans-pro-v11-latin-700italic.woff") format("woff");
}
@font-face {
  font-family: 'Source Sans Pro';
  font-style: italic;
  font-weight: 900;
  src: url("../../fonts/source-sans-pro-v11-latin-900italic.woff2") format("woff2"), url("../../fonts/source-sans-pro-v11-latin-900italic.woff") format("woff");
}
@font-face {
  font-family: 'Source Code Pro';
  font-style: normal;
  font-weight: 300;
  src: url("../../fonts/source-code-pro-v23-latin-300.woff2") format("woff2"), url("../../fonts/source-code-pro-v23-latin-300.woff") format("woff");
}
@font-face {
  font-family: 'Source Code Pro';
  font-style: normal;
  font-weight: 400;
  src: url("../../fonts/source-code-pro-v23-latin-regular.woff2") format("woff2"), url("../../fonts/source-code-pro-v23-latin-regular.woff") format("woff");
}
@font-face {
  font-family: 'Source Code Pro';
  font-style: normal;
  font-weight: 600;
  src: url("../../fonts/source-code-pro-v23-latin-600.woff2") format("woff2"), url("../../fonts/source-code-pro-v23-latin-600.woff") format("woff");
}
@font-face {
  font-family: 'Source Code Pro';
  font-style: normal;
  font-weight: 700;
  src: url("../../fonts/source-code-pro-v23-latin-700.woff2") format("woff2"), url("../../fonts/source-code-pro-v23-latin-700.woff") format("woff");
}
@font-face {
  font-family: 'Source Code Pro';
  font-style: normal;
  font-weight: 800;
  src: url("../../fonts/source-code-pro-v23-latin-800.woff2") format("woff2"), url("../../fonts/source-code-pro-v23-latin-800.woff") format("woff");
}


/* ==========================================================================
   Animations
   ========================================================================== */

@keyframes rotation {
  from {
    transform: translateY(-50%) rotate(0deg);
  }
  to {
    transform: translateY(-50%) rotate(360deg);
  }
}

@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}


/* ==========================================================================
   Utility classes (shared with the main site's styles)
   ========================================================================== */

.bold {
  font-weight: bold;
}
.semibold,
.semi {
  font-weight: 600;
}
.center {
  text-align: center;
}
.underline {
  text-decoration: underline;
}
.orange {
  color: #ff7a29;
}
.flex-horizontal-start-center {
  display: flex;
  justify-content: center;
  align-items: flex-start;
}
.flex-horizontal-end-center {
  display: flex;
  justify-content: center;
  align-items: flex-end;
}
.flex-horizontal-end-end {
  display: flex;
  justify-content: flex-end;
  align-items: flex-end;
}
.flex-horizontal-start-end {
  display: flex;
  justify-content: flex-end;
  align-items: flex-start;
}
.flex-horizontal-center {
  display: flex;
  justify-content: center;
  align-items: center;
}
.flex-horizontal-left {
  display: flex;
  justify-content: flex-start;
  align-items: flex-start;
}
.flex-vertical-center-end {
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  align-items: center;
}
.flex-vertical-center {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}
.flex-vertical-left {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
}
.flex-vertical-right {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
}
*[class^="flex-"] > p {
  margin-left: inherit;
  margin-right: inherit;
}
@media only screen and (max-width: 520px) {
  .m-hidden {
    display: none !important;
  }
  .m-flex-vertical-center {
    display: flex;
    flex-direction: column;
    align-items: center;
  }
}
.wrap {
  flex-wrap: wrap;
}
.justify-space {
  justify-content: space-between !important;
}
.relative {
  position: relative;
}
@media only screen and (min-width: 521px) {
  .max-w20 {
    max-width: 20%;
  }
  .max-w30 {
    max-width: 30%;
  }
  .max-w40 {
    max-width: 40%;
  }
  .max-w50 {
    max-width: 50%;
  }
  .max-w60 {
    max-width: 60%;
  }
  .max-w70 {
    max-width: 70%;
  }
  .max-w80 {
    max-width: 80%;
  }
  .w35 {
    width: 35%;
  }
  .w40 {
    width: 40%;
  }
  .w50 {
    width: 50%;
  }
  .w70 {
    width: 70%;
  }
}


/* ==========================================================================
   Base typography
   ========================================================================== */

html {
  background-color: var(--background-color);
  font: 62.5% var(--paragraph-font);
  font-weight: normal;
}
@media only screen and (max-width: 768px) {
  html {
    font: 50% var(--paragraph-font);
  }
}
html[noCSSTransitions] * {
  transition: none !important;
}
html .hidden {
  display: none;
}

html h1 {
  font-size: 3.6rem;
  font-weight: bold;
  font-family: var(--heading-font);
}
html h2 {
  font-size: 2.8rem;
  font-weight: bold;
  font-family: var(--heading-font);
}
html h3 {
  font-size: 2.2rem;
  font-weight: 600;
  font-family: var(--heading-font);
}
html h4 {
  font-size: 1.9rem;
  font-weight: 600;
  font-family: var(--heading-font);
}
html li > *:first-child {
  margin-top: 0;
}
html p {
  font-size: 1.8rem;
  font-weight: 400;
  font-family: var(--paragraph-font);
  line-height: var(--line-height);
}
html a {
  color: var(--link-color);
  position: relative;
}
html a,
html a:hover,
html a:active,
html a:visited,
html a:focus {
  text-decoration: none;
}
html body {
  padding: 0;
}
html body.no-scroll {
  overflow: hidden;
}


/* ==========================================================================
   Expandable sections
   Hidden checkboxes (id="ctr_…") control the sidebar, the search overlay,
   the version switcher, and collapsible content blocks (.expandable).
   ========================================================================== */

html body input[id^='ctr_'] {
  display: none;
}
html body input[id^='ctr_'] + .expandable > label {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  border-radius: 0.8em;
  padding: 0.8rem 0;
}
html body input[id^='ctr_'] + .expandable > label > * {
  margin: 0;
  position: relative;
  padding-left: 3.6rem;
}
/* disclosure chevron */
html body input[id^='ctr_'] + .expandable > label > *:before {
  display: block;
  position: absolute;
  left: 1.2rem;
  top: 50%;
  transform: translateX(-25%) translateY(-50%) rotate(-45deg);
  width: 1.2rem;
  height: 1.2rem;
  box-sizing: border-box;
  content: '';
  border-right: 3px solid var(--text-color);
  border-bottom: 3px solid var(--text-color);
  transition: all calc(var(--animation-time) / 3) ease-in-out;
}
html body input[id^='ctr_'] + .expandable > label:hover {
  background-color: color-mix(in srgb, var(--accent-color) 7%, transparent);
}
html body input[id^='ctr_'] + .expandable > label:active {
  background-color: color-mix(in srgb, var(--accent-color) 15%, transparent);
}
html body input[id^='ctr_'] + .expandable > .content {
  padding-left: 3.6rem;
  padding-bottom: 3.2rem;
}
html body input[id^='ctr_'] + .expandable > .content > *:first-child {
  padding-top: 0;
  margin-top: 0;
}
html body input[id^='ctr_']:checked + .expandable > label > *:before {
  transform: translateX(-25%) translateY(-75%) rotate(45deg);
}
html body input[id^='ctr_']:checked + .expandable > .content {
  display: block;
}
html body input[id^='ctr_']:not(:checked) + .expandable > .content {
  display: none;
}
html body input[id^='ctr_'][id=ctr_versionSwitcher]:checked ~ header .version-switcher {
  display: flex;
}

html body span.url {
  font-family: var(--code-font);
  color: color-mix(in srgb, var(--text-color) 50%, transparent);
}
/* search term highlight */
html body span.match {
  position: relative;
  z-index: 0; /* lets the highlight below sit behind the text */
}
html body span.match:before {
  display: block;
  content: "";
  position: absolute;
  border-radius: 0.5em;
  width: calc(100% + 0.444em);
  height: calc(100% + 0.222em);
  left: -0.222em;
  top: -0.111em;
  z-index: -1;
  background-color: var(--search-highlight-color);
}
html body:not(.print) {
  padding-top: var(--toolbar-height);
}


/* ==========================================================================
   Toolbar (header)
   ========================================================================== */

html body header {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  padding: 0 1.6rem;
  z-index: 200;
  color: #f4f4f4;
  background-color: var(--toolbar-color);
  background-image: linear-gradient(180deg,
    color-mix(in srgb, var(--toolbar-color), white 9%) 0%,
    color-mix(in srgb, var(--toolbar-color), black 18%) 100%);
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  height: var(--toolbar-height);
}
html body header #close {
  display: none;
  margin: 0.25rem;
}
html body header div.default {
  display: flex;
  justify-content: space-between;
  align-items: center;
  transition: all var(--fast-animation-time) ease-in-out;
  width: 100%;
}
html body header div.default div.title > label,
html body header div.default h1 {
  font-size: 2.4rem;
  font-weight: normal;
  line-height: 1;
  color: inherit;
}
/* the toolbar icons are dark artwork; make them light on the dark toolbar */
html body header div.default > label img {
  filter: invert(1);
}
/* pure white on the lighter hover background, to keep the contrast */
html body header div.default > label:hover img,
html body header div.default > label:active img {
  filter: brightness(0) invert(1);
}

/* Version switcher: a full-window overlay with a menu of product versions */
html body header div.default div.version-switcher {
  box-sizing: border-box;
  display: none;
  position: fixed;
  justify-content: center;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  transition: all var(--fast-animation-time) ease-in-out;
  background-color: rgb(255 255 255 / 80%);
  -webkit-backdrop-filter: grayscale(100%);
          backdrop-filter: grayscale(100%);
  padding: 1.6rem;
}
@starting-style {
  html body header div.default div.version-switcher {
    -webkit-backdrop-filter: grayscale(0%);
            backdrop-filter: grayscale(0%);
    background-color: rgb(255 255 255 / 0%);
  }
}
html body header div.default div.version-switcher div.entries {
  display: flex;
  flex-direction: column;
  gap: 0.2rem; /* keeps adjacent highlights from touching */
  padding: 0.8rem;
  background: rgb(250 250 250 / 94%);
  border-radius: 2rem;
  outline: 2px solid #fff;
  filter: drop-shadow(0px 8px 32px rgb(0 0 0 / 30%));
  transition: all var(--fast-animation-time) ease-in-out;
  box-sizing: border-box;
  height: fit-content;
  max-height: 75%;
}
@starting-style {
  html body header div.default div.version-switcher div.entries {
    transform: scale(0.75);
    opacity: 0;
  }
}
html body header div.default div.version-switcher div.entries a,
html body header div.default div.version-switcher div.entries label {
  display: flex;
  align-items: center;
  gap: 0.421em;
  position: relative;
  box-sizing: border-box;
  font-size: 1.9rem;
  font-weight: normal;
  padding: 0.368em 0.632em;
  border-radius: 0.526em;
  cursor: pointer;
  color: var(--text-color);
  width: 100%;
  text-align: center;
  -webkit-user-select: none;
          user-select: none;
}
html body header div.default div.version-switcher div.entries a img,
html body header div.default div.version-switcher div.entries label img {
  height: 1.474em;
  width: auto;
}
html body header div.default div.version-switcher div.entries a:hover {
  background-color: color-mix(in srgb, var(--toolbar-color) 9%, transparent);
}
html body header div.default div.version-switcher div.entries a:active,
html body header div.default div.version-switcher div.entries label:active {
  background-color: color-mix(in srgb, var(--toolbar-color) 22%, transparent);
}
/* shown instead of the product image when there is none */
html body header div.default div.version-switcher div.entries a span.icon-placeholder,
html body header div.default div.version-switcher div.entries label span.icon-placeholder {
  position: relative;
  padding-left: calc(1.474em + 0.421em); /* icon width + gap */
}
html body header div.default div.version-switcher div.entries a span.icon-placeholder::before,
html body header div.default div.version-switcher div.entries label span.icon-placeholder::before {
  position: absolute;
  display: block;
  line-height: 2.333em; /* same size as the product image */
  box-sizing: border-box;
  background-color: color-mix(in srgb, var(--text-color) 30%, transparent);
  border-radius: 0.667em;
  min-width: 2.333em;
  content: attr(data-abbreviation);
  color: var(--background-color);
  font-size: 1.2rem;
  font-weight: bold;
  padding: 0 0.333em;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
}
html body header div.default div.version-switcher div.entries label {
  font-weight: 600;
  background-color: color-mix(in srgb, var(--toolbar-color) 15%, transparent);
}
html body header div.default div.title > label {
  padding: 0.333em 0.667em;
  border-radius: 8px;
  cursor: pointer;
}
html body header div.default div.title > label:hover {
  background-color: rgb(255 255 255 / 10%);
}
html body header div.default div.title > label:active {
  background-color: rgb(255 255 255 / 18%);
}

/* Search field: slides in from above when #ctr_search is checked */
html body header div.search-field {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 75%;
  transition: all var(--fast-animation-time) ease-in-out;
  position: absolute;
  top: 50%;
  opacity: 0;
  pointer-events: none;
}
@media only screen and (max-width: 939.98px) {
  html body header div.search-field {
    width: calc(100% - 3.2rem - 5.6rem);
    left: 1.6rem;
    transform: translateY(-200%);
  }
}
@media only screen and (min-width: 940px) {
  html body header div.search-field {
    min-width: calc(320px - 1.6rem);
    left: 50%;
    transform: translateX(-50%) translateY(-200%);
  }
}
html body header div.search-field.loading input {
  padding-right: 4.2rem;
}
html body header div.search-field.loading img#loupe {
  opacity: 0;
}
html body header div.search-field.loading img#loading-indicator {
  opacity: 1;
  animation: rotation 1.33s linear 0s infinite normal none;
}
html body header div.search-field label[for=ctr_search] {
  margin-left: 0.8rem;
}
html body header div.search-field form {
  display: flex;
  justify-content: center;
  align-items: center;
  position: relative;
  background-color: rgb(255 255 255 / 92%);
  padding: 0.4rem 0.8rem 0.4rem 1.6rem;
  border-radius: 8px;
  box-sizing: border-box;
  width: 100%;
  transition: all var(--fast-animation-time) ease-in-out;
}
html body header div.search-field form:hover {
  background-color: rgb(255 255 255 / 100%);
}
html body header div.search-field form input {
  appearance: none;
  border: none;
  outline: none;
  box-shadow: none !important;
}
html body header div.search-field form input[type=text] {
  padding: 0 0.571em;
  text-overflow: ellipsis;
  color: var(--accent-color);
  -webkit-text-fill-color: var(--text-color);
  caret-color: var(--toolbar-color);
  outline: none;
  border: none;
  background-color: transparent !important;
  font-size: 2.1rem;
  font-weight: 400;
  font-family: var(--paragraph-font);
  height: 1.524em;
  line-height: 1.524;
  margin: 0;
  width: 100%;
  transition: all var(--fast-animation-time) ease-in-out;
}
html body header div.search-field form input[type=text]::placeholder {
  -webkit-text-fill-color: color-mix(in srgb, var(--text-color) 50%, transparent);
  color: color-mix(in srgb, var(--text-color) 50%, transparent);
}
html body header div.search-field form input[type=text]:not(:placeholder-shown) {
  padding: 0 3.905em 0 0.571em;
}
html body header div.search-field form input[type=text]:not(:placeholder-shown) ~ input[id=reset] {
  display: block;
  animation: fadeIn var(--animation-time) ease-in;
}
html body header div.search-field form input[type=submit] {
  appearance: none;
  background-color: var(--accent-color);
  color: #fff;
  position: absolute;
  right: 0;
  top: 0;
  bottom: 0;
  font-size: 1.5rem;
  font-weight: 400;
  font-family: var(--paragraph-font);
  padding-left: 1.067em;
  padding-right: 1.067em;
  border-top-right-radius: 5px;
  border-bottom-right-radius: 5px;
}
html body header div.search-field form input[type=submit]:hover {
  background-color: color-mix(in srgb, var(--accent-color), white 15%);
}
html body header div.search-field form input[type=submit]:active {
  background-color: color-mix(in srgb, var(--accent-color), white 30%);
}
html body header div.search-field form > img {
  transition: all var(--fast-animation-time) ease-in-out;
}
html body header div.search-field form > img[id=loading-indicator] {
  position: absolute;
  top: calc(50% + 1px);
  left: 1.6rem;
  transform: translateY(-50%);
  opacity: 0;
  transition: all var(--fast-animation-time) ease-in-out var(--loading-animation-delay);
}
html body header div.search-field form > img[id=loupe] {
  opacity: 0.5;
  transition: all var(--fast-animation-time) ease-in-out var(--loading-animation-delay);
}


/* ==========================================================================
   Page content (section.topic)
   ========================================================================== */

html body section.topic {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  padding: 0;
  z-index: 50;
  transition: all var(--animation-time) ease-in-out;
  background-color: #fff;
}
html body section.topic h1:hover > .anchor,
html body section.topic h2:hover > .anchor,
html body section.topic h3:hover > .anchor,
html body section.topic h4:hover > .anchor,
html body section.topic h5:hover > .anchor,
html body section.topic h6:hover > .anchor {
  display: inline-block !important;
}
/* "inline" images are displayed inline, so they don't break the text layout */
html body section.topic img.inline {
  display: inline;
  max-height: 1.556em; /* the line height of body text */
  width: auto;
  vertical-align: top;
}
/*
 * Symbols from :symbol:name: placeholders (see lib/documentation.php): one line of
 * text high, as wide as the symbol's aspect ratio requires, in the text color.
 */
html body section.topic svg.symbol {
  height: 1.2em;
  width: auto;
  vertical-align: -0.25em;
  fill: currentColor;
  overflow: visible;
}
/* container for the symbol definitions; not display: none, so that <use> can reference them */
html body section.topic svg.symbol-definitions {
  position: absolute;
  width: 0;
  height: 0;
  overflow: hidden;
}
html body section.topic span.checkmark {
  position: relative;
  color: transparent;
}
html body section.topic span.checkmark:after {
  display: block;
  position: absolute;
  height: 1em;
  width: 0.444em;
  content: '';
  left: 50%;
  top: 50%;
  border-right: 4px solid var(--accent-color);
  border-bottom: 4px solid var(--accent-color);
  transform: translateX(-50%) translateY(calc(-50% - 0.111em)) rotate(45deg);
}
html body section.topic span.xmark {
  position: relative;
  color: transparent;
}
html body section.topic .anchor {
  display: none;
  width: 18px;
  height: 18px;
  margin-left: 1.6rem;
  opacity: 0.5;
}
html body section.topic .anchor:hover {
  opacity: 1;
}
/* inset the content by the width of the always-visible sidebar */
@media only screen and (min-width: 940px) {
  html body section.topic:not(.print) {
    padding-left: var(--sidebar-width);
  }
}
html body section.topic a:not(.anchor) {
  position: relative;
  background-color: transparent;
  border-radius: 0.8rem;
  box-shadow: 0px 0px 0px 3px transparent;
  box-sizing: border-box;
}
html body section.topic a:not(.anchor):hover,
html body section.topic a:not(.anchor):focus {
  background-color: color-mix(in srgb, var(--link-color) 10%, transparent);
  box-shadow: 0px 0px 0px 3px color-mix(in srgb, var(--link-color) 10%, transparent);
}
html body section.topic a:not(.anchor):active {
  background-color: color-mix(in srgb, var(--link-color) 20%, transparent);
  box-shadow: 0px 0px 0px 3px color-mix(in srgb, var(--link-color) 20%, transparent);
}
html body section.topic.print > div {
  margin: 0 auto;
}
html body section.topic > div {
  padding: 3.2rem;
  border-radius: 3px;
  max-width: var(--max-content-width);
  box-sizing: border-box;
  width: 100%;
}
@media only screen and (max-width: 939.98px) {
  html body section.topic > div {
    max-width: 100%;
  }
}

/*
 * Vertical spacing of the text: paragraphs, lists and tables only have a
 * bottom margin. Headings have a large top margin and a small bottom margin,
 * so they sit closer to the text they introduce. Adjacent margins collapse,
 * i.e. the gap between two blocks is the larger of the two margins, not their
 * sum. Heading margins are in em, so they scale with the heading level.
 */
html body section.topic p,
html body section.topic pre,
html body section.topic table {
  margin: 0 0 var(--paragraph-spacing);
}
html body section.topic h1 {
  margin: 1.2em 0 0.45em;
}
html body section.topic h2 {
  margin: 1.4em 0 0.45em;
}
html body section.topic h3 {
  margin: 1.45em 0 0.45em;
}
html body section.topic h4 {
  margin: 1.5em 0 0.45em;
}
html body section.topic > div > :first-child,
html body section.topic li > :first-child,
html body section.topic div.box > :first-child {
  margin-top: 0;
}
html body section.topic > div > :last-child,
html body section.topic li > :last-child,
html body section.topic div.box > :last-child {
  margin-bottom: 0;
}
/*
 * When an anchor like lsm-overview#traffic-view is opened, the browser scrolls
 * the target to the top of the window, where the fixed toolbar would cover it.
 * scroll-margin-top makes it stop below the toolbar instead.
 */
html body section.topic [id] {
  scroll-margin-top: calc(var(--toolbar-height) + 1.6rem);
}
html body section.topic > div > p > img {
  display: inherit;
  margin-left: auto;
  margin-right: auto;
  max-width: calc(100% - 3.2rem);
}

/* keyboard keys */
html body section.topic .key {
  display: inline-flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  box-sizing: border-box; /* min-width includes the padding */
  padding: 0 0.444em;
  margin: 0 0.111em;
  line-height: 1.6;
  border: 1px solid color-mix(in srgb, var(--text-color) 30%, transparent);
  background-image: linear-gradient(-180deg, #fff 0%, #fafafa 99%);
  min-width: 1.778em;
  border-radius: 0.389em;
  box-shadow: 0px 1px 2px color-mix(in srgb, var(--text-color) 15%, transparent);
}

/* Callout boxes: <div class="box" type="note|example|tip|warning" caption="…"> */
html body section.topic div.box {
  padding: 1.4rem 2.1rem 1.6rem;
  border-radius: 12px;
  position: relative;
  overflow: hidden;
  margin: 3.2rem 0;
}
/* caption */
html body section.topic div.box:before {
  display: block;
  content: attr(caption);
  text-transform: capitalize;
  margin-bottom: 0.6rem;
  font-size: 2.2rem;
  font-weight: 600;
  font-family: var(--heading-font);
  line-height: 1.2;
}
/*
 * Each box type defines a color pair for the border and the background
 * gradient, and a separate caption color.
 */
html body section.topic div.box[type=note] {
  --box-color: #29d6fd;
  --box-color-2: #12adf9;
  --box-caption-color: #0087d2;
}
html body section.topic div.box[type=example] {
  --box-color: color-mix(in srgb, var(--text-color), white 30%);
  --box-color-2: color-mix(in srgb, var(--text-color), white 15%);
  --box-caption-color: var(--box-color);
}
html body section.topic div.box[type=tip] {
  --box-color: #ffb600;
  --box-color-2: #ff6e00;
  --box-caption-color: #ff8700;
}
html body section.topic div.box[type=note],
html body section.topic div.box[type=example],
html body section.topic div.box[type=tip] {
  border: 1px solid color-mix(in srgb, var(--box-color) 50%, transparent);
  background-image: linear-gradient(45deg,
    color-mix(in srgb, var(--box-color) 6%, transparent) 0%,
    color-mix(in srgb, var(--box-color-2) 6%, transparent) 100%);
}
html body section.topic div.box[type=note]:before,
html body section.topic div.box[type=example]:before,
html body section.topic div.box[type=tip]:before {
  color: var(--box-caption-color);
}
/* warnings have no caption */
html body section.topic div.box[type=warning] {
  color: var(--warning-color);
  border: 1px solid color-mix(in srgb, var(--warning-color) 50%, transparent);
  background-color: color-mix(in srgb, var(--warning-color) 6%, transparent);
}
html body section.topic div.box[type=warning]:before {
  display: none;
}

/* "Related" links at the end of a topic */
html body section.topic div.related {
  margin-top: 5.6rem;
}
html body section.topic div.related:before {
  margin-bottom: 0.8rem;
  display: block;
  content: attr(caption);
  font-size: 2.2rem;
  font-weight: 400;
  font-family: var(--heading-font);
}
html body section.topic div.related ul li:before {
  background-color: transparent;
  border-right: 2px solid var(--link-color);
  border-bottom: 2px solid var(--link-color);
  border-radius: 0;
  transform: rotate(-45deg);
}
html body section.topic div.footnotes {
  margin-top: 5em;
  zoom: 80%;
}
html body section.topic div.footnotes hr {
  opacity: 0.3;
}

/* Tables */
html body section.topic table {
  max-width: 82rem;
  width: 100%;
}
html body section.topic table thead {
  color: color-mix(in srgb, var(--text-color) 50%, transparent);
  border-bottom: 1px solid color-mix(in srgb, var(--text-color) 30%, transparent);
}
html body section.topic table thead th {
  text-align: left;
  padding-bottom: 0.4em;
}
html body section.topic table tr {
  vertical-align: middle;
}
html body section.topic table td {
  padding-top: 0.333em;
  padding-bottom: 0.333em;
  font-size: 1.8rem;
  font-weight: 400;
  font-family: var(--paragraph-font);
  line-height: var(--line-height);
}
html body section.topic table tbody tr:not(:last-of-type) {
  border-bottom: 1px solid color-mix(in srgb, var(--text-color) 5%, transparent);
}
html body section.topic table th:not(:last-child),
html body section.topic table td:not(:last-child) {
  padding-right: 3.2rem;
}
html body section.topic div.comparison table thead th:not(:first-child) {
  text-align: center;
}
html body section.topic div.comparison tr td:not(:first-child) {
  text-align: center;
}
/* numbered legend for a screenshot: the first column shows circled numbers */
html body section.topic div.description-screenshot {
  padding: 0 1.6rem;
}
html body section.topic div.description-screenshot table thead {
  display: none;
}
html body section.topic div.description-screenshot table thead th:first-child {
  text-align: center;
}
/* align each number with the first line of its description, not the middle */
html body section.topic div.description-screenshot tr {
  vertical-align: baseline;
}
html body section.topic div.description-screenshot tr td:first-child {
  text-align: center;
  position: relative;
  z-index: 1;
  font-weight: 600;
  color: #fff;
}
html body section.topic div.description-screenshot tr td:first-child:before {
  display: block;
  content: '';
  width: 1.778em;
  height: 1.778em;
  border-radius: 50%;
  position: absolute;
  left: calc(50% - 0.889em);
  /* centered on the first line: below the cell's top padding */
  top: calc(0.333em + var(--line-height) / 2);
  transform: translateX(-50%) translateY(-50%);
  background-color: #ff7a29;
  z-index: -1;
}
/* inline code, with a subtle rounded background */
html body section.topic code {
  font-family: var(--code-font);
  font-size: 0.9em;
  padding: 0.1em 0.3em;
  border-radius: 4px;
  background-color: color-mix(in srgb, var(--text-color) 6%, transparent);
  -webkit-box-decoration-break: clone;
          box-decoration-break: clone;
}
/* code blocks (fenced code in Markdown): <pre><code>…</code></pre> */
html body section.topic pre {
  font-size: 1.5rem;
  line-height: 1.5;
  padding: 0.8em 1.1em;
  border: 1px solid color-mix(in srgb, var(--text-color) 20%, transparent);
  border-radius: 8px;
  background-color: color-mix(in srgb, var(--text-color) 3%, transparent);
  overflow-x: auto;
}
html body section.topic pre code {
  font-size: inherit;
  padding: 0;
  border-radius: 0;
  background: none;
}

/* Lists */
html body section.topic ol,
html body section.topic ul {
  padding: 0;
  margin: 0 0 var(--paragraph-spacing);
  list-style: none;
}
/*
 * nested lists: same spacing above the first item as between items. A nested
 * list following the item's text is its first child (text nodes don't count),
 * so this has to override the "li > :first-child" rule.
 */
html body section.topic li > ol:first-child,
html body section.topic li > ul:first-child {
  margin-top: var(--list-item-spacing);
}
html body section.topic ol li,
html body section.topic ul li {
  font-size: 1.8rem;
  font-weight: 400;
  font-family: var(--paragraph-font);
  line-height: var(--line-height);
  margin: 0 0 var(--list-item-spacing);
  padding-left: var(--list-padding-left);
  position: relative;
}
html body section.topic ol {
  counter-reset: my-counter;
}
html body section.topic ol > li {
  counter-increment: my-counter;
}
/* number in a filled circle, left-aligned with the text above and centered on the first line */
html body section.topic ol > li:before {
  --ordinal-size: 2.2rem;
  display: flex;
  justify-content: center;
  align-items: center;
  content: counter(my-counter);
  color: #fff;
  background-color: var(--accent-color);
  border-radius: 50%;
  font-size: 1.3rem;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  line-height: 1;
  position: absolute;
  top: calc(var(--line-height) / 2);
  left: 0;
  width: var(--ordinal-size);
  height: var(--ordinal-size);
  transform: translateY(-50%);
}
/* nested ordered lists: plain number followed by a period */
html body section.topic li ol > li:before {
  display: block;
  content: counter(my-counter) ".";
  color: inherit;
  background: none;
  border-radius: 0;
  font-size: inherit;
  font-weight: inherit;
  line-height: inherit;
  top: 0;
  width: auto;
  height: auto;
  transform: none;
}
/* bullet, centered in the left padding and on the first line */
html body section.topic ul li:before {
  --bullet-size: 0.5rem;
  display: block;
  content: ' ';
  background-color: var(--accent-color);
  position: absolute;
  width: var(--bullet-size);
  height: var(--bullet-size);
  border-radius: 2px;
  top: calc((var(--line-height) - var(--bullet-size)) / 2);
  left: calc((var(--list-padding-left) - var(--bullet-size)) / 2);
}


/* ==========================================================================
   Search overlay
   ========================================================================== */

html body div.search-overlay {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: center;
  position: fixed;
  top: var(--toolbar-height);
  left: 0;
  right: 0;
  bottom: 0;
  overflow: scroll;
  padding: 0;
  z-index: 150;
  opacity: 0;
  pointer-events: none;
  background-color: rgb(255 255 255 / 98%);
  transition: all var(--animation-time) ease-in-out;
}
@supports ((-webkit-backdrop-filter: blur(16px)) or (backdrop-filter: blur(16px))) {
  html body div.search-overlay {
    -webkit-backdrop-filter: blur(6px);
            backdrop-filter: blur(6px);
    background-color: rgb(255 255 255 / 92%);
  }
}
html body div.search-overlay > * {
  width: 75%;
  min-width: calc(320px - 3.2rem);
}
html body div.search-overlay > *:first-child {
  margin-top: 3.2rem;
}
@media only screen and (max-width: 939.98px) {
  html body div.search-overlay > * {
    width: calc(100% - 3.2rem);
  }
}
html body div.search-overlay h1 {
  margin-bottom: 1.6rem;
}
html body div.search-overlay ul {
  font-size: 1.8rem;
  font-weight: 400;
  font-family: var(--paragraph-font);
  padding: 0;
  margin: 0;
  margin-bottom: 3.2rem;
  list-style: none;
}
html body div.search-overlay ul li {
  margin: 0;
  padding: 0;
  position: relative;
  box-sizing: border-box;
}
html body div.search-overlay ul li.header {
  font-size: 2.1rem;
  font-weight: bold;
  font-family: var(--paragraph-font);
}
html body div.search-overlay ul li:hover {
  background-color: color-mix(in srgb, var(--accent-color) 5%, transparent);
  border-radius: 0.6rem;
}
html body div.search-overlay ul li:hover a {
  color: var(--accent-color);
}
html body div.search-overlay ul li:hover a span.group {
  color: var(--text-color);
}
html body div.search-overlay ul li a {
  color: var(--text-color);
  padding: 0.444em 0;
  display: block;
  width: 100%;
  box-sizing: border-box;
  position: relative;
  padding-left: 3.2rem;
  outline: 0;
  border-radius: 0.6rem;
}
html body div.search-overlay ul li a span.group {
  font-size: 1.5rem;
  color: color-mix(in srgb, var(--text-color) 50%, transparent);
}
html body div.search-overlay ul li a:focus {
  background-color: color-mix(in srgb, var(--text-color) 7%, transparent);
}
/* bullet dot, centered in the 3.2rem left padding; replaced by a spinner while loading */
html body div.search-overlay ul li a:after {
  display: block;
  position: absolute;
  top: calc(50% - 0.8rem / 2);
  left: calc((3.2rem - 0.8rem) / 2);
  content: '';
  background-color: var(--accent-color);
  border-radius: 0.4rem;
  width: 0.8rem;
  height: 0.8rem;
  opacity: 1;
  transition: all var(--animation-time) ease-in-out var(--loading-animation-delay);
}
html body div.search-overlay ul li a:before {
  content: url("../images/loading-indicator.svg");
  width: 2rem;
  height: 2rem;
  position: absolute;
  top: 50%;
  opacity: 0;
  left: calc((3.2rem - 2rem) / 2);
  background-color: transparent;
  transform: translateY(-50%);
  transition: all var(--animation-time) ease-in-out var(--loading-animation-delay);
}
html body div.search-overlay ul li a.loading:before {
  opacity: 1;
  animation: rotation 1.33s linear var(--loading-animation-delay) infinite normal none;
}
html body div.search-overlay ul li a.loading {
  color: var(--accent-color);
}
html body div.search-overlay ul li a.loading:after {
  opacity: 0;
}


/* ==========================================================================
   Sidebar (table of contents)
   ========================================================================== */

html body nav#sidebar {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: flex-start;
  position: fixed;
  left: 0;
  bottom: 0;
  top: var(--toolbar-height);
  width: var(--sidebar-width);
  max-width: 100%;
  box-sizing: border-box;
  z-index: 100;
  padding: 3.2rem 0 5.6rem 0;
  overflow: scroll;
  transform: translateX(-100%);
  transition: all var(--animation-time) ease-in-out;
  opacity: 0.998;
  background: #fff;
  background-image: linear-gradient(-180deg, rgb(255 255 255 / 1%) 0%, rgb(0 0 0 / 1%) 100%);
  border-right: 1px solid color-mix(in srgb, var(--text-color) 15%, transparent);
}
@media only screen and (min-width: 940px) {
  html body nav#sidebar {
    transform: translateX(0%);
  }
}
html body nav#sidebar * {
  padding: 0;
  margin: 0;
}
html body nav#sidebar > h2 {
  padding: 0 3.2rem;
  color: color-mix(in srgb, var(--text-color) 30%, transparent);
  margin: 0;
  margin-bottom: 3.2rem;
}
/* each chapter is a hidden checkbox + label (h4) + collapsible list of topics */
html body nav#sidebar input[type=checkbox] {
  display: none;
}
html body nav#sidebar input[type=checkbox]:checked + label h4:before {
  transform: translateY(-75%) rotate(45deg);
}
html body nav#sidebar input[type=checkbox]:checked + label + ul {
  max-height: 800px;
  overflow: visible;
  margin-bottom: 1.6rem;
}
html body nav#sidebar label {
  display: block;
  width: 100%;
}
/* chapter names, slightly larger than the topic links below them; the
   margin insets the hover highlight from the sidebar edges, and the arrow
   and text are inset within it so the arrow stays clear of the corners */
html body nav#sidebar label h4 {
  font-size: 2.2rem;
  margin: 0 0.8rem;
  padding: 0.4rem 2.4rem 0.4rem 3.2rem;
  border-radius: 1rem;
  position: relative;
}
html body nav#sidebar label h4:hover {
  background-color: var(--sidebar-hover-color);
}
/* disclosure chevron */
html body nav#sidebar label h4:before {
  display: block;
  position: absolute;
  left: 1.4rem;
  top: 50%;
  transform: translateX(-25%) translateY(-50%) rotate(-45deg);
  width: 0.8rem;
  height: 0.8rem;
  box-sizing: border-box;
  content: '';
  border-right: 2px solid var(--text-color);
  border-bottom: 2px solid var(--text-color);
  transition: all calc(var(--animation-time) / 3) ease-in-out;
}
html body nav#sidebar ul {
  max-height: 0px;
  overflow: hidden;
  list-style: none;
  margin: 0 0 1rem 0;
  width: 100%;
}
html body nav#sidebar ul li {
  cursor: pointer;
  width: 100%;
  font-size: 1.7rem;
}
/* inset like the chapter names above */
html body nav#sidebar ul li a {
  display: block;
  margin: 0 0.8rem;
  padding: 0.4rem 2.4rem 0.4rem 3.2rem;
  border-radius: 1rem;
  position: relative;
  color: color-mix(in srgb, var(--text-color) 80%, transparent);
  transition: color calc(var(--animation-time) / 3) ease-in-out;
}
/* loading spinner, at the right end of the entry */
html body nav#sidebar ul li a:before {
  content: url("../images/loading-indicator.svg");
  width: 2rem;
  height: 2rem;
  position: absolute;
  top: 50%;
  opacity: 0;
  left: calc(100% - 2.8rem);
  background-color: transparent;
  transform: translateY(-50%);
  transition: all var(--animation-time) ease-in-out var(--loading-animation-delay);
}
html body nav#sidebar ul li a.loading:before {
  opacity: 1;
  animation: rotation 1.33s linear var(--loading-animation-delay) infinite normal none;
}
html body nav#sidebar ul li a.loading {
  background-color: var(--sidebar-highlight-color);
}
html body nav#sidebar ul li a:hover {
  background-color: var(--sidebar-hover-color);
  color: var(--text-color);
}
/* the current page keeps the stronger highlight, also while hovered */
html body nav#sidebar ul li a.active {
  background-color: var(--sidebar-highlight-color);
  color: var(--text-color);
  font-weight: 600;
}


/* ==========================================================================
   Toggle buttons and checkbox states
   ========================================================================== */

/* the labels for the ctr_ checkboxes can be placed anywhere on the page */
html body label[for^=ctr_] {
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  border-radius: 0.8rem;
  padding: 0.8rem;
  box-sizing: border-box;
}
/* the sidebar is always visible on wide screens, so its toggle is not needed */
@media only screen and (min-width: 940px) {
  html body label[for^=ctr_][for=ctr_sidebar] {
    visibility: hidden;
  }
}
html body label[for^=ctr_]:hover {
  background-color: rgb(255 255 255 / 40%);
}
html body label[for^=ctr_]:active {
  background-color: rgb(255 255 255 / 60%);
}
/* subtler on the dark toolbar, so the white icons keep their contrast */
html body header label[for^=ctr_]:hover {
  background-color: rgb(255 255 255 / 25%);
}
html body header label[for^=ctr_]:active {
  background-color: rgb(255 255 255 / 35%);
}

/* search open: show the search field and overlay, hide the title and sidebar toggle */
html body input#ctr_search:checked ~ header .search-field {
  opacity: 1;
  pointer-events: all;
}
@media only screen and (max-width: 939.98px) {
  html body input#ctr_search:checked ~ header .search-field {
    transform: translateY(-50%);
  }
}
@media only screen and (min-width: 940px) {
  html body input#ctr_search:checked ~ header .search-field {
    transform: translateX(-50%) translateY(-50%);
  }
}
html body input#ctr_search:checked ~ header .search-field form {
  box-shadow: 0px 1px 2px color-mix(in srgb, var(--text-color) 15%, transparent);
}
html body input#ctr_search:checked ~ header .default div.title,
html body input#ctr_search:checked ~ header .default label[for=ctr_sidebar] {
  opacity: 0;
  pointer-events: none;
}
html body input#ctr_search:checked ~ header .default label[for=ctr_search] #open {
  display: none;
}
html body input#ctr_search:checked ~ header .default label[for=ctr_search] #close {
  display: block;
}
html body input#ctr_search:checked ~ div.search-overlay {
  opacity: 1;
  pointer-events: all;
}

/* sidebar open (narrow screens): slide it in and dim the content */
html body input#ctr_sidebar:checked ~ section {
  opacity: 0.07;
}
html body input#ctr_sidebar:checked ~ section a {
  pointer-events: none;
}
html body input#ctr_sidebar:checked ~ header label[for=ctr_sidebar] {
  background-color: rgb(255 255 255 / 15%);
}
html body input#ctr_sidebar:checked ~ header label[for=ctr_sidebar]:active {
  background-color: rgb(255 255 255 / 25%);
}
html body input#ctr_sidebar:checked ~ nav#sidebar {
  transform: translateX(0%);
}
