@font-face {
	font-family: 'Aldrich';
	font-style: normal;
	font-weight: 400;
	font-display: block;
	src: url(https://fonts.gstatic.com/s/aldrich/v21/MCoTzAn-1s3IGyJMVacY3w.woff2) format('woff2');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Colors */
:root {
	--userbook-color: #F4A900;
	--userbook-color--dark: #272111;
	--userbook-color--light: #f7cc67;
	--userbook-color--transparent: #F4A90020;
	--devbook-color: #20B5AC;
	--devbook-color--dark: #202b32;
	--devbook-color--light: #77c4be;
	--devbook-color--transparent: #20B5AC20;
	--textbook-color: #7000DF;
	--textbook-color--dark: #28193b;
	--textbook-color--light: #9756d5;
	--textbook-color--transparent: #7000DF20;
	--example-admonition-color: #4CAF50;
	--example-admonition-color--transparent: #4CAF5020;
}

[data-md-color-scheme=slate][data-md-color-primary=indigo] {
	--md-typeset-a-color: var(--md-primary-fg-color--light);
	--md-accent-fg-color: var(--md-primary-fg-color);
	--md-default-bg-color--light: #333;
	--md-footer-bg-color--dark: var(--md-primary-fg-color--dark);
	--md-footer-fg-color: var(--md-primary-fg-color);
	--md-blanket-color: #000C;
	--md-code-bg-color: var(--md-primary-fg-color--dark);
	--md-typeset-mark-color: inherit;
	--md-code-hl-string-color: #d59781;
	--md-code-hl-comment-color: green;
	--md-typeset-table-color: var(--md-primary-fg-color);
	--md-typeset-table-color--light: var(--md-accent-fg-color--transparent);
}

[data-md-color-scheme=default][data-md-color-primary=indigo] {
	--md-typeset-a-color: var(--md-primary-fg-color--light);
	--md-accent-fg-color: var(--md-primary-fg-color);
	--md-default-bg-color--light: #DDD;
	--md-footer-bg-color--dark: var(--md-primary-fg-color--dark);
	--md-footer-fg-color: var(--md-primary-fg-color);
	--md-blanket-color: #CCCE;
	--md-code-bg-color: var(--md-accent-fg-color--transparent);
	--md-code-hl-string-color: #d59781;
	--md-code-hl-comment-color: green;
	--md-typeset-table-color: var(--md-primary-fg-color);
	--md-typeset-table-color--light: var(--md-accent-fg-color--transparent);
}

/* Home page cards */
.userbook div {
	min-width: 300px;
	min-height: 300px;
	background: url("../images/userbook.png") no-repeat center / contain;
}

.devbook div {
	min-width: 300px;
	min-height: 300px;
	background: url("../images/devbook.png") no-repeat center / contain;
}

.textbook div {
	min-width: 300px;
	min-height: 300px;
	background: url("../images/textbook.png") no-repeat center / contain;
}

.userbook:hover div {
	background: url("../images/userbook-open.svg") no-repeat center / contain;
}

.devbook:hover div {
	background: url("../images/devbook-open.svg") no-repeat center / contain;
}

.textbook:hover div {
	background: url("../images/textbook-open.svg") no-repeat center / contain;
}

.md-typeset .grid .card {
	text-align: center;
	padding: 0;
	border: 0;
	transition: box-shadow 0s;
}

.md-typeset .grid .card:hover {
	position: relative;
	box-shadow: 0 0 0 9999px var(--md-blanket-color);
	background: var(--md-blanket-color);
}

.md-typeset .grid .card a {
	display: block;
	padding: 10px;
	height: 100%;
}

.md-typeset .grid .card h2 {
	margin: 10px 0 0 0;
	font-size: 1.5rem;
	font-family: Aldrich, sans-serif;
	color: var(--md-default-fg-color);
}

.md-typeset .grid .card p {
	margin: 0;
	font-size: 1rem;
	color: var(--md-default-fg-color--light);
}

/* Top navigation tab style: centered, with icons and custom font*/
.md-tabs .md-tabs__item:first-child {
	display: none;
}

.md-tabs .md-tabs__item a {
	padding-left: 2rem;
	font-size: 2em;
	font-family: Aldrich, sans-serif;
	line-height: 2.4em;
	margin-top: 0;
}

.md-tabs .md-tabs__item:nth-child(2) {
	background: url("../images/userbook-small.png") no-repeat;
	background-size: 1.4rem;
	background-position: left center;
	filter: opacity(25%);
}

.md-tabs .md-tabs__item:nth-child(3) {
	background: url("../images/devbook-small.png") no-repeat;
	background-size: 1.4rem;
	background-position: left center;
	filter: opacity(25%);
}

.md-tabs .md-tabs__item:nth-child(4) {
	background: url("../images/textbook-small.png") no-repeat;
	background-size: 1.4rem;
	background-position: left center;
	filter: opacity(25%);
}

.md-tabs .md-tabs__item:nth-child(2):hover,
.md-tabs .md-tabs__item:nth-child(3):hover,
.md-tabs .md-tabs__item:nth-child(4):hover {
	filter: opacity(75%);
}

.md-tabs .md-tabs__item--active:nth-child(2) {
	background: url("../images/userbook-open-small.png") no-repeat;
	background-size: 2.4rem;
	background-position: left center;
	filter: none;
}

.md-tabs .md-tabs__item--active:nth-child(3) {
	background: url("../images/devbook-open-small.png") no-repeat;
	background-size: 2.4rem;
	background-position: left center;
	filter: none;
}

.md-tabs .md-tabs__item--active:nth-child(4) {
	background: url("../images/textbook-open-small.png") no-repeat;
	background-size: 2.4rem;
	background-position: left center;
	filter: none;
}

.md-tabs[hidden] .md-tabs__item {
	background: none;
}

.md-tabs__list {
	justify-content: center;
	gap: 30px;
	margin-bottom: 10px;
}

/* Bigger logo */
[dir=ltr] .md-header__title {
	margin-left: 0;
}

.md-header__button.md-logo {
	margin: 0;
	padding: .4rem;
}

.md-header__button.md-logo img {
	height: 2rem;
}

/* Header */
.md-tabs,
.md-header {
	background-color: var(--md-primary-fg-color--dark);
}

.md-tabs {
	border-bottom: 2px solid var(--md-primary-fg-color);
}

.md-header--shadow {
	box-shadow: none;
	border-bottom: 2px solid var(--md-primary-fg-color);
}

.md-header__source {
	display: none;
}

.md-header__button:hover {
	color: var(--md-primary-fg-color);
	opacity: 1;
}

/* Language logo in the header for sections that have it */
.md-header__topic svg {
	height: 1.5rem;
	vertical-align: middle;
	fill: var(--md-primary-bg-color);
	margin-right: 0.5rem;
}

/* Separator for source file facts at page bottom */
aside.md-source-file {
	border-top: 1px solid var(--md-primary-fg-color);
	padding-top: 0.5rem;
	margin-top: 2rem;
}

/* Footer */
.md-copyright {
	display: flex;
	flex-wrap: wrap;
	gap: 16px;
	margin-right: 36px;
}

/* Links to other sections use the color of that section */
.md-content a[href*="userbook"][href^='..'],
.gslide-desc a[href*="userbook"][href^='..'] {
	color: var(--userbook-color--light);
}

.md-content a[href*="userbook"][href^='..']:hover,
.gslide-desc a[href*="userbook"][href^='..']:hover {
	color: var(--userbook-color);
}

.md-content a[href*="devbook"][href^='..'],
.gslide-desc a[href*="devbook"][href^='..'] {
	color: var(--devbook-color--light);
}

.md-content a[href*="devbook"][href^='..']:hover,
.gslide-desc a[href*="devbook"][href^='..']:hover {
	color: var(--devbook-color);
}

.md-content a[href*="textbook"][href^='..'],
.gslide-desc a[href*="textbook"][href^='..'] {
	color: var(--textbook-color--light);
}

.md-content a[href*="textbook"][href^='..']:hover,
.gslide-desc a[href*="textbook"][href^='..']:hover {
	color: var(--textbook-color);
}

/* Anchors (links without href target) have no color */
.md-content a:not([href]) {
	color: var(--md-default-fg-color);
}

/* Add icon indicating external links */
.md-content .md-typeset a:not(.md-icon) {
	&[href^="//"]::after,
	&[href^="http://"]::after,
	&[href^="https://"]::after {
		content: "↗";
		font-size: smaller;
		margin-left: .2em;
		vertical-align: top;
	}
}

/* Tooltips */
.md-tooltip__inner,
[role=tooltip]>.md-tooltip2__inner {
	font-size: 0.75rem;
	font-weight: normal;
	background-color: var(--md-default-bg-color--light);
	border-radius: 4px;
}

/* Search box */
.md-search__form {
	background-color: rgba(0, 0, 0, 0.5);
	border: 2px solid var(--md-primary-fg-color);
	border-radius: 0.4rem;
}

.md-search__icon svg {
	fill: var(--md-primary-fg-color);
}

.md-search__input::placeholder {
	color: var(--md-primary-fg-color);
	opacity: 1;
}

/* Hide definition list terms generated automatically for the reference guide */
.automatic-reference-term dt {
	display: none;
}

/* Glossaries */
.md-content dl:not(.automatic-reference-term) {
	border: 1px solid var(--md-primary-fg-color);
	border-radius: 4px;
	overflow: hidden;
}

.md-content dt {
	background-color: var(--md-accent-fg-color--transparent);
	padding: 8px;
}

.md-content dd {
	margin-right: 1.875em;
}

.md-content dt:has(a:target) {
	background-color: var(--md-primary-fg-color--light);
	display: block;
}

.md-content dt a:target {
	color: var(--md-default-bg-color);
	font-weight: bold;
}

/* Dynamic links */
.md-typeset .dylink input {
	height: 0;
	width: 0;
	margin: 0;
}

.md-typeset .dylink label {
	display: none;
}

.md-typeset .dylink input[type=radio]:checked+.dylink-option {
	display: inline;
}

/* TypeScript reference guide */

#extended-by+ul, #extends+ul {
	display: inline;
	list-style: none;
	margin: 0;
}

#extended-by+ul li, #extends+ul li {
	display: inline;
	margin: 0;
}

/* MkDocStrings extensions for Java */
code.doc-symbol-interface,
a code.doc-symbol-interface {
	color: var(--doc-symbol-module-fg-color);
	background-color: var(--doc-symbol-module-bg-color);
}

code.doc-symbol-interface::after {
	content: "interface";
}

/* Reset admonition text size to normal */
.md-typeset .admonition,
.md-typeset details {
	font-size: inherit;
}

/* Different color for the Example admonition, because the default is too close
	to the textbook's purple. */
.md-typeset .admonition.example,
.md-typeset details.example {
	border-color: var(--example-admonition-color);
}

.md-typeset .example>.admonition-title,
.md-typeset .example>summary {
	background-color: var(--example-admonition-color--transparent);
}

.md-typeset .example>.admonition-title::before,
.md-typeset .example>summary::before {
	background-color: var(--example-admonition-color);
}

/* Custom borderless admonition, just to help position images. Use with: */
/* !!! image inline end "" */
.md-typeset .admonition.image,
.md-typeset details.image {
	border: 0;
	box-shadow: none;
	background-color: transparent;
}

/* Invert black images so they are visible in dark mode. */
[data-md-color-scheme=slate] img.invertible {
	filter: invert(1) brightness(0.8);
}

/* GLightBox images and descriptions */
.md-typeset a.glightbox img {
	transition: box-shadow 0.25s;
	box-shadow: none;
	border-radius: 0.4rem;
}

.md-typeset a.glightbox img:hover {
	transition: box-shadow 0.25s;
	box-shadow: 0 0 0 2px var(--md-accent-fg-color);
}

.glightbox-clean .gcontainer .gslide-description {
	background: var(--md-default-bg-color);
}

.glightbox-clean .gcontainer .gslide-desc {
	font-family: "Exo 2";
	font-size: inherit;
}

.glightbox-container .goverlay {
	background: var(--md-blanket-color);
}

.glightbox-container .twemoji svg {
	fill: currentcolor;
	width: 1.125em;
	vertical-align: text-bottom;
}

/* Tutorial steps */
.big-number {
	font-size: x-large;
	color: var(--md-primary-fg-color);
}

.md-typeset table.tutorial {
	border: 0;
	font-size: inherit;
}

.md-typeset table.tutorial tr:hover {
	background-color: var(--md-typeset-table-color--light);
}

.md-typeset .tutorial img {
	float: right;
	width: 50%;
	margin-left: 1em;
}

.md-typeset .tutorial td {
	padding: 1em;
	border-top: 1px solid var(--md-default-bg-color--light);
	border-bottom: 1px solid var(--md-default-bg-color--light);
}

/* Links around code blocks */
.md-typeset p:has(.source-link) {
	margin-top: 0;
	font-size: small;
	float: right;
}

/* Decorators for links to REST API */
.md-typeset code.rest-method {
	color: white;
	border-radius: 0.25rem;
	font-size: .5rem;
	font-family: sans-serif;
	font-weight: bold;
	padding: 2px 6px;
	line-height: 1;
	vertical-align: middle;
}

[data-md-color-scheme=slate] .md-typeset a code.rest-method-get {
	background-color: #2a69a7;
}

[data-md-color-scheme=slate] .md-typeset a code.rest-method-put {
	background-color: #d59d58
}

[data-md-color-scheme=slate] .md-typeset a code.rest-method-post {
	background-color: #48cb90
}

[data-md-color-scheme=default] .md-typeset a code.rest-method-get {
	background-color: #61affe;
}

[data-md-color-scheme=default] .md-typeset a code.rest-method-put {
	background-color: #fca130
}

[data-md-color-scheme=default] .md-typeset a code.rest-method-post {
	background-color: #49cc90
}

/* Graphviz diagrams */
.graphviz {
	display: block;
	margin: auto;
}

.graphviz text {
	fill: var(--md-default-fg-color);
	font-family: "Exo 2";
}

.graphviz .edge text {
	fill: var(--md-default-fg-color--light);
}

.graphviz .edge path {
	stroke: var(--md-primary-fg-color--light);
}

.graphviz .edge polygon {
	stroke: var(--md-primary-fg-color--light);
	fill: var(--md-primary-fg-color--light);
}

.graphviz .node path:not([fill="transparent"]),
.graphviz .node polygon:not([fill="transparent"]),
.graphviz .node ellipse:not([fill="transparent"]) {
	stroke: var(--md-primary-fg-color--light);
	fill: var(--md-accent-fg-color--transparent);
	transition: fill 0.25s;
}

.graphviz .node:hover a path,
.graphviz .node:hover a polygon,
.graphviz .node:hover a ellipse,
.graphviz .edge:hover a text {
	fill: var(--md-primary-fg-color--light);
	transition: fill 0.25s;
}

.graphviz .cluster polygon {
	stroke: var(--md-primary-fg-color--light);
}

/* General tables customization */
.md-typeset table:not([class]) th {
	color: var(--md-primary-fg-color--light);
	background: var(--md-accent-fg-color--transparent);
}

.centered .md-typeset__table {
	display: table;
	margin: 0 auto;
}

/* Tables with subsections */
.md-typeset .subsections table td:not(:has(strong)):first-child {
	padding-left: 2rem;
	border-style: hidden;
	white-space: nowrap;
}

.md-typeset .subsections table td:not(:has(strong)):first-child+td {
	border-style: hidden;
}

/* Font for book title in nav bar */
.md-nav--lifted>.md-nav__list>.md-nav__item>[for] {
	font-size: 1rem;
	font-family: Aldrich, sans-serif;
	font-weight: normal;
}

/* Lists representing operations */
.operation-item {
	list-style-type: "⟹";
	padding-left: 0.5rem;
}

/* Lists that use big icons instead of bullets */
.md-typeset .icon-list>ul {
	list-style: none;
	margin-left: 0;
}

.md-typeset .icon-list>ul>li {
	padding-left: 3em;
	margin-bottom: 1rem;
	position: relative;
}

.md-typeset .icon-list>ul>li>p:first-child>.twemoji {
	position: absolute;
	left: 0px;
	height: 2em;
}

.md-typeset .icon-list>ul>li>p:first-child>.twemoji>svg {
	width: 2em;
}
