@charset "UTF-8";
:root {
	--gray-100: #f8f9fa;
	--gray-200: #e9ecef;
	--gray-500: #adb5bd;
	--color-link: #0055bb;
	--color-visited-link: #8440f1;
	--body-background: white;
	--body-font-color: black;
	--icon-filter: none;
	--hint-color-info: #6bf;
	--hint-color-warning: #fd6;
	--hint-color-danger: #f66;
} /*!normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css*/
html {
	line-height: 1.15;
	-webkit-text-size-adjust: 100%;
}
body {
	margin: 0;
}
main {
	display: block;
}
h1 {
	font-size: 2em;
	margin: 0.67em 0;
}
hr {
	box-sizing: content-box;
	height: 0;
	overflow: visible;
}
pre {
	font-family: monospace, monospace;
	font-size: 1em;
}
a {
	background-color: transparent;
}
abbr[title] {
	border-bottom: none;
	text-decoration: underline;
	text-decoration: underline dotted;
}
b,
strong {
	font-weight: bolder;
}
code,
kbd,
samp {
	font-family: monospace, monospace;
	font-size: 1em;
}
small {
	font-size: 80%;
}
sub,
sup {
	font-size: 75%;
	line-height: 0;
	position: relative;
	vertical-align: baseline;
}
sub {
	bottom: -0.25em;
}
sup {
	top: -0.5em;
}
img {
	border-style: none;
}
button,
input,
optgroup,
select,
textarea {
	font-family: inherit;
	font-size: 100%;
	line-height: 1.15;
	margin: 0;
}
button,
input {
	overflow: visible;
}
button,
select {
	text-transform: none;
}
button,
[type="button"],
[type="reset"],
[type="submit"] {
	-webkit-appearance: button;
}
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
	border-style: none;
	padding: 0;
}
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
	outline: 1px dotted ButtonText;
}
fieldset {
	padding: 0.35em 0.75em 0.625em;
}
legend {
	box-sizing: border-box;
	color: inherit;
	display: table;
	max-width: 100%;
	padding: 0;
	white-space: normal;
}
progress {
	vertical-align: baseline;
}
textarea {
	overflow: auto;
}
[type="checkbox"],
[type="radio"] {
	box-sizing: border-box;
	padding: 0;
}
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
	height: auto;
}
[type="search"] {
	-webkit-appearance: textfield;
	outline-offset: -2px;
}
[type="search"]::-webkit-search-decoration {
	-webkit-appearance: none;
}
::-webkit-file-upload-button {
	-webkit-appearance: button;
	font: inherit;
}
details {
	display: block;
}
summary {
	display: list-item;
}
template {
	display: none;
}
[hidden] {
	display: none;
}
.flex {
	display: flex;
}
.flex-auto {
	flex: auto;
}
.flex-even {
	flex: 1 1;
}
.flex-wrap {
	flex-wrap: wrap;
}
.justify-start {
	justify-content: flex-start;
}
.justify-end {
	justify-content: flex-end;
}
.justify-center {
	justify-content: center;
}
.justify-between {
	justify-content: space-between;
}
.align-center {
	align-items: center;
}
.mx-auto {
	margin: 0 auto;
}
.text-center {
	text-align: center;
}
.text-left {
	text-align: left;
}
.text-right {
	text-align: right;
}
.hidden {
	display: none;
}
input.toggle {
	height: 0;
	width: 0;
	overflow: hidden;
	opacity: 0;
	position: absolute;
}
.clearfix::after {
	content: "";
	display: table;
	clear: both;
}
html {
	font-size: 16px;
	scroll-behavior: smooth;
	touch-action: manipulation;
}
body {
	min-width: 20rem;
	color: var(--body-font-color);
	background: var(--body-background);
	letter-spacing: 0.33px;
	font-weight: 400;
	text-rendering: optimizeLegibility;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	box-sizing: border-box;
}
body * {
	box-sizing: inherit;
}
h1,
h2,
h3,
h4,
h5 {
	font-weight: 400;
}
a {
	text-decoration: none;
	color: var(--color-link);
}
img {
	vertical-align: baseline;
}
:focus {
	outline-style: auto;
	outline-color: currentColor;
	outline-color: -webkit-focus-ring-color;
}
aside nav ul {
	padding: 0;
	margin: 0;
	list-style: none;
}
aside nav ul li {
	margin: 1em 0;
	position: relative;
}
aside nav ul a {
	display: block;
}
aside nav ul a:hover {
	opacity: 0.5;
}
aside nav ul ul {
	padding-inline-start: 1rem;
}
ul.pagination {
	display: flex;
	justify-content: center;
	list-style-type: none;
	padding-inline-start: 0;
}
ul.pagination .page-item a {
	padding: 1rem;
}
.container {
	max-width: 80rem;
	margin: 0 auto;
}
.book-icon {
	filter: var(--icon-filter);
}
.book-brand {
	margin-top: 0;
	margin-bottom: 1rem;
}
.book-brand img {
	height: 1.5em;
	width: 1.5em;
	margin-inline-end: 0.5rem;
}
.book-menu {
	flex: 0 0 16rem;
	font-size: 0.875rem;
}
.book-menu .book-menu-content {
	width: 16rem;
	padding: 1rem;
	background: var(--body-background);
	position: fixed;
	top: 0;
	bottom: 0;
	overflow-x: hidden;
	overflow-y: auto;
}
.book-menu a,
.book-menu label {
	color: inherit;
	cursor: pointer;
	word-wrap: break-word;
}
.book-menu a.active {
	color: var(--color-link);
}
.book-menu input.toggle + label + ul {
	display: none;
}
.book-menu input.toggle:checked + label + ul {
	display: block;
}
.book-menu input.toggle + label::after {
	content: "▸";
}
.book-menu input.toggle:checked + label::after {
	content: "▾";
}
body[dir="rtl"] .book-menu input.toggle + label::after {
	content: "◂";
}
body[dir="rtl"] .book-menu input.toggle:checked + label::after {
	content: "▾";
}
.book-section-flat {
	margin: 2rem 0;
}
.book-section-flat > a,
.book-section-flat > span,
.book-section-flat > label {
	font-weight: bolder;
}
.book-section-flat > ul {
	padding-inline-start: 0;
}
.book-page {
	min-width: 20rem;
	flex-grow: 1;
	padding: 1rem;
}
.book-post {
	margin-bottom: 3rem;
}
.book-header {
	display: none;
	margin-bottom: 1rem;
}
.book-header label {
	line-height: 0;
}
.book-header img.book-icon {
	height: 1.5em;
	width: 1.5em;
}
.book-search {
	position: relative;
	margin: 1rem 0;
	border-bottom: 1px solid transparent;
}
.book-search input {
	width: 100%;
	padding: 0.5rem;
	border: 0;
	border-radius: 0.25rem;
	background: var(--gray-100);
	color: var(--body-font-color);
}
.book-search input:required + .book-search-spinner {
	display: block;
}
.book-search .book-search-spinner {
	position: absolute;
	top: 0;
	margin: 0.5rem;
	margin-inline-start: calc(100% - 1.5rem);
	width: 1rem;
	height: 1rem;
	border: 1px solid transparent;
	border-top-color: var(--body-font-color);
	border-radius: 50%;
	animation: spin 1s ease infinite;
}
@keyframes spin {
	100% {
		transform: rotate(360deg);
	}
}
.book-search small {
	opacity: 0.5;
}
.book-toc {
	flex: 0 0 16rem;
	font-size: 0.75rem;
}
.book-toc .book-toc-content {
	width: 16rem;
	padding: 1rem;
	position: fixed;
	top: 0;
	bottom: 0;
	overflow-x: hidden;
	overflow-y: auto;
}
.book-toc img {
	height: 1em;
	width: 1em;
}
.book-toc nav > ul > li:first-child {
	margin-top: 0;
}
.book-footer {
	padding-top: 1rem;
	font-size: 0.875rem;
}
.book-footer img {
	height: 1em;
	width: 1em;
	margin-inline-end: 0.5rem;
}
.book-comments {
	margin-top: 1rem;
}
.book-languages {
	margin-block-end: 2rem;
}
.book-languages .book-icon {
	height: 1em;
	width: 1em;
	margin-inline-end: 0.5em;
}
.book-languages ul {
	padding-inline-start: 1.5em;
}
.book-menu-content,
.book-toc-content,
.book-page,
.book-header aside,
.markdown {
	transition: 0.2s ease-in-out;
	transition-property: transform, margin, opacity, visibility;
	will-change: transform, margin, opacity;
}
@media screen and (max-width: 56rem) {
	#menu-control,
	#toc-control {
		display: inline;
	}
	.book-menu {
		visibility: hidden;
		margin-inline-start: -16rem;
		font-size: 16px;
		z-index: 1;
	}
	.book-toc {
		display: none;
	}
	.book-header {
		display: block;
	}
	#menu-control:focus ~ main label[for="menu-control"] {
		outline-style: auto;
		outline-color: currentColor;
		outline-color: -webkit-focus-ring-color;
	}
	#menu-control:checked ~ main .book-menu {
		visibility: initial;
	}
	#menu-control:checked ~ main .book-menu .book-menu-content {
		transform: translateX(16rem);
		box-shadow: 0 0 0.5rem rgba(0, 0, 0, 0.1);
	}
	#menu-control:checked ~ main .book-page {
		opacity: 0.25;
	}
	#menu-control:checked ~ main .book-menu-overlay {
		display: block;
		position: absolute;
		top: 0;
		bottom: 0;
		left: 0;
		right: 0;
	}
	#toc-control:focus ~ main label[for="toc-control"] {
		outline-style: auto;
		outline-color: currentColor;
		outline-color: -webkit-focus-ring-color;
	}
	#toc-control:checked ~ main .book-header aside {
		display: block;
	}
	body[dir="rtl"] #menu-control:checked ~ main .book-menu .book-menu-content {
		transform: translateX(-16rem);
	}
}
@media screen and (min-width: 80rem) {
	.book-page,
	.book-menu .book-menu-content,
	.book-toc .book-toc-content {
		padding: 2rem 1rem;
	}
}
@font-face {
	font-family: roboto;
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: local(""), url(fonts/roboto-v27-latin-regular.woff2) format("woff2"),
		url(fonts/roboto-v27-latin-regular.woff) format("woff");
}
@font-face {
	font-family: roboto;
	font-style: normal;
	font-weight: 700;
	font-display: swap;
	src: local(""), url(fonts/roboto-v27-latin-700.woff2) format("woff2"),
		url(fonts/roboto-v27-latin-700.woff) format("woff");
}
@font-face {
	font-family: roboto mono;
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: local(""),
		url(fonts/roboto-mono-v13-latin-regular.woff2) format("woff2"),
		url(fonts/roboto-mono-v13-latin-regular.woff) format("woff");
}
body {
	font-family: roboto, sans-serif;
}
code {
	font-family: roboto mono, monospace;
}
@media print {
	.book-menu,
	.book-footer,
	.book-toc {
		display: none;
	}
	.book-header,
	.book-header aside {
		display: block;
	}
	main {
		display: block !important;
	}
}
.markdown {
	line-height: 1.6;
}
.markdown > :first-child {
	margin-top: 0;
}
.markdown h1,
.markdown h2,
.markdown h3,
.markdown h4,
.markdown h5,
.markdown h6 {
	font-weight: 400;
	line-height: 1;
	margin-top: 1.5em;
	margin-bottom: 1rem;
}
.markdown h1 a.anchor,
.markdown h2 a.anchor,
.markdown h3 a.anchor,
.markdown h4 a.anchor,
.markdown h5 a.anchor,
.markdown h6 a.anchor {
	opacity: 0;
	font-size: 0.75em;
	vertical-align: middle;
	text-decoration: none;
}
.markdown h1:hover a.anchor,
.markdown h1 a.anchor:focus,
.markdown h2:hover a.anchor,
.markdown h2 a.anchor:focus,
.markdown h3:hover a.anchor,
.markdown h3 a.anchor:focus,
.markdown h4:hover a.anchor,
.markdown h4 a.anchor:focus,
.markdown h5:hover a.anchor,
.markdown h5 a.anchor:focus,
.markdown h6:hover a.anchor,
.markdown h6 a.anchor:focus {
	opacity: initial;
}
.markdown h4,
.markdown h5,
.markdown h6 {
	font-weight: bolder;
}
.markdown h5 {
	font-size: 0.875em;
}
.markdown h6 {
	font-size: 0.75em;
}
.markdown b,
.markdown optgroup,
.markdown strong {
	font-weight: bolder;
}
.markdown a {
	text-decoration: none;
}
.markdown a:hover {
	text-decoration: underline;
}
.markdown a:visited {
	color: var(--color-visited-link);
}
.markdown img {
	max-width: 100%;
	height: auto;
}
.markdown code {
	padding: 0 0.25rem;
	background: var(--gray-200);
	border-radius: 0.25rem;
	font-size: 0.875em;
}
.markdown pre {
	padding: 1rem;
	background: var(--gray-100);
	border-radius: 0.25rem;
	overflow-x: auto;
}
.markdown pre code {
	padding: 0;
	background: 0 0;
}
.markdown p {
	word-wrap: break-word;
}
.markdown blockquote {
	margin: 1rem 0;
	padding: 0.5rem 1rem 0.5rem 0.75rem;
	border-inline-start: 0.25rem solid var(--gray-200);
	border-radius: 0.25rem;
}
.markdown blockquote :first-child {
	margin-top: 0;
}
.markdown blockquote :last-child {
	margin-bottom: 0;
}
.markdown table {
	overflow: auto;
	display: block;
	border-spacing: 0;
	border-collapse: collapse;
	margin-top: 1rem;
	margin-bottom: 1rem;
}
.markdown table tr th,
.markdown table tr td {
	padding: 0.5rem 1rem;
	border: 1px solid var(--gray-200);
}
.markdown table tr:nth-child(2n) {
	background: var(--gray-100);
}
.markdown hr {
	height: 1px;
	border: none;
	background: var(--gray-200);
}
.markdown ul,
.markdown ol {
	padding-inline-start: 2rem;
}
.markdown dl dt {
	font-weight: bolder;
	margin-top: 1rem;
}
.markdown dl dd {
	margin-inline-start: 0;
	margin-bottom: 1rem;
}
.markdown .highlight table tr td:nth-child(1) pre {
	margin: 0;
	padding-inline-end: 0;
}
.markdown .highlight table tr td:nth-child(2) pre {
	margin: 0;
	padding-inline-start: 0;
}
.markdown details {
	padding: 1rem;
	border: 1px solid var(--gray-200);
	border-radius: 0.25rem;
}
.markdown details summary {
	line-height: 1;
	padding: 1rem;
	margin: -1rem;
	cursor: pointer;
}
.markdown details[open] summary {
	margin-bottom: 0;
}
.markdown figure {
	margin: 1rem 0;
}
.markdown figure figcaption p {
	margin-top: 0;
}
.markdown-inner > :first-child {
	margin-top: 0;
}
.markdown-inner > :last-child {
	margin-bottom: 0;
}
.markdown .book-expand {
	margin-top: 1rem;
	margin-bottom: 1rem;
	border: 1px solid var(--gray-200);
	border-radius: 0.25rem;
	overflow: hidden;
}
.markdown .book-expand .book-expand-head {
	background: var(--gray-100);
	padding: 0.5rem 1rem;
	cursor: pointer;
}
.markdown .book-expand .book-expand-content {
	display: none;
	padding: 1rem;
}
.markdown .book-expand input[type="checkbox"]:checked + .book-expand-content {
	display: block;
}
.markdown .book-tabs {
	margin-top: 1rem;
	margin-bottom: 1rem;
	border: 1px solid var(--gray-200);
	border-radius: 0.25rem;
	overflow: hidden;
	display: flex;
	flex-wrap: wrap;
}
.markdown .book-tabs label {
	display: inline-block;
	padding: 0.5rem 1rem;
	border-bottom: 1px transparent;
	cursor: pointer;
}
.markdown .book-tabs .book-tabs-content {
	order: 999;
	width: 100%;
	border-top: 1px solid var(--gray-100);
	padding: 1rem;
	display: none;
}
.markdown .book-tabs input[type="radio"]:checked + label {
	border-bottom: 1px solid var(--color-link);
}
.markdown .book-tabs input[type="radio"]:checked + label + .book-tabs-content {
	display: block;
}
.markdown .book-tabs input[type="radio"]:focus + label {
	outline-style: auto;
	outline-color: currentColor;
	outline-color: -webkit-focus-ring-color;
}
.markdown .book-columns {
	margin-left: -1rem;
	margin-right: -1rem;
}
.markdown .book-columns > div {
	margin: 1rem 0;
	min-width: 10rem;
	padding: 0 1rem;
}
.markdown a.book-btn {
	display: inline-block;
	font-size: 0.875rem;
	color: var(--color-link);
	line-height: 2rem;
	padding: 0 1rem;
	border: 1px solid var(--color-link);
	border-radius: 0.25rem;
	cursor: pointer;
}
.markdown a.book-btn:hover {
	text-decoration: none;
}
.markdown .book-hint.info {
	border-color: #6bf;
	background-color: rgba(102, 187, 255, 0.1);
}
.markdown .book-hint.warning {
	border-color: #fd6;
	background-color: rgba(255, 221, 102, 0.1);
}
.markdown .book-hint.danger {
	border-color: #f66;
	background-color: rgba(255, 102, 102, 0.1);
}


@media (prefers-color-scheme: dark) {
  :root {
    --gray-100: #1c1e22;
    --gray-200: #2d3035;
    --gray-500: #70757a;
    --color-link: #3792cb;
    --color-visited-link: #b450f5;
    --body-background: #1c1e22;
    --body-font-color: #f2f2f2;
    --icon-filter: invert(1);
    --hint-color-info: #67d8ff;
    --hint-color-warning: #ffcf67;
    --hint-color-danger: #ff6767;
  }
}
