/* ignore-tidy-filelength */
/*
	When static files are updated, their suffixes need to be updated.
	1. In the top directory run:
		./x.py doc --stage 1 library/core
	2. Find the directory containing files named with updated suffixes:
		find build -path '*'/stage1-std/'*'/static.files
	3. Copy the filenames with updated suffixes from the directory.
*/

/* ignore-tidy-filelength */

:root {
	--nav-sub-mobile-padding: 8px;
	--search-typename-width: 6.75rem;
	/* DEFAULT_SIDEBAR_WIDTH
	   see main.js for information on these values
	   and on the RUSTDOC_MOBILE_BREAKPOINT */
	--desktop-sidebar-width: 200px;
	--src-sidebar-width: 300px;
	--desktop-sidebar-z-index: 100;
	--sidebar-elems-left-padding: 24px;
	--popover-top-margin: 7px;
	/* clipboard <https://github.com/rust-lang/crates.io/commits/main/public/assets/copy.svg> */
	--clipboard-image: url('data:image/svg+xml,<svg width="19" height="18" viewBox="0 0 24 25" \
xmlns="http://www.w3.org/2000/svg" aria-label="Copy to clipboard">\
<path d="M18 20h2v3c0 1-1 2-2 2H2c-.998 0-2-1-2-2V5c0-.911.755-1.667 1.667-1.667h5A3.323 3.323 0 \
0110 0a3.323 3.323 0 013.333 3.333h5C19.245 3.333 20 4.09 20 5v8.333h-2V9H2v14h16v-3zM3 \
7h14c0-.911-.793-1.667-1.75-1.667H13.5c-.957 0-1.75-.755-1.75-1.666C11.75 2.755 10.957 2 10 \
2s-1.75.755-1.75 1.667c0 .911-.793 1.666-1.75 1.666H4.75C3.793 5.333 3 6.09 3 7z"/>\
<path d="M4 19h6v2H4zM12 11H4v2h8zM4 17h4v-2H4zM15 15v-3l-4.5 4.5L15 21v-3l8.027-.032L23 15z"/>\
</svg>');
	--copy-path-height: 34px;
	--copy-path-width: 33px;
	/* Checkmark <https://www.svgrepo.com/svg/335033/checkmark> */
	--checkmark-image: url('data:image/svg+xml,<svg viewBox="-1 -1 23 23" \
xmlns="http://www.w3.org/2000/svg" fill="black" height="18px">\
<g><path d="M9 19.414l-6.707-6.707 1.414-1.414L9 16.586 20.293 5.293l1.414 1.414"></path>\
</g></svg>');
	--button-left-margin: 4px;
	--button-border-radius: 2px;
	--toolbar-button-border-radius: 6px;
	--code-block-border-radius: 6px;
	--impl-items-indent: 0.3em;
	--docblock-indent: 24px;
	--font-family: "Source Serif 4", NanumBarunGothic, serif;
	--font-family-code: "Source Code Pro", monospace;
	--line-number-padding: 4px;
	--line-number-right-margin: 20px;
	/* scraped examples icons (34x33px) */
	--prev-arrow-image: url('data:image/svg+xml,<svg width="16" height="16" viewBox="0 0 16 16" \
	enable-background="new 0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path fill="none" \
	d="M8,3l-4,5l4,5m-4,-5h10" stroke="black" stroke-width="2"/></svg>');
	--next-arrow-image: url('data:image/svg+xml,<svg width="16" height="16" viewBox="0 0 16 16" \
	enable-background="new 0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path fill="none" \
	d="M8,3l4,5l-4,5m4,-5h-10" stroke="black" stroke-width="2"/></svg>');
	--expand-arrow-image: url('data:image/svg+xml,<svg width="16" height="16" viewBox="0 0 16 16" \
	enable-background="new 0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path fill="none" \
	d="M3,10l4,4l4,-4m-4,4M3,7l4,-4l4,4" stroke="black" stroke-width="2"/></svg>');
	--collapse-arrow-image: url('data:image/svg+xml,<svg width="16" height="16" viewBox="0 0 16 16" \
	enable-background="new 0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path fill="none" \
	d="M3,8l4,4l4,-4m-4,4M3,4l4,4l4,-4" stroke="black" stroke-width="2"/></svg>');
	--hamburger-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" \
		viewBox="0 0 22 22" fill="none" stroke="black">\
		<path d="M3,5h16M3,11h16M3,17h16" stroke-width="2.75"/></svg>');
}

:root.sans-serif-fonts {
	--font-family: "Fira Sans", sans-serif;
	--font-family-code: "Fira Mono", monospace;
}

/* See FiraSans-LICENSE.txt for the Fira Sans license. */
@font-face {
	font-family: 'Fira Sans';
	font-style: normal;
	font-weight: 400;
	src: local('Fira Sans'),
		url("FiraSans-Regular-0fe48ade.woff2") format("woff2");
	font-display: swap;
}
@font-face {
	font-family: 'Fira Sans';
	font-style: italic;
	font-weight: 400;
	src: local('Fira Sans Italic'),
		url("FiraSans-Italic-81dc35de.woff2") format("woff2");
	font-display: swap;
}
@font-face {
	font-family: 'Fira Sans';
	font-style: normal;
	font-weight: 500;
	src: local('Fira Sans Medium'),
		url("FiraSans-Medium-e1aa3f0a.woff2") format("woff2");
	font-display: swap;
}
@font-face {
	font-family: 'Fira Sans';
	font-style: italic;
	font-weight: 500;
	src: local('Fira Sans Medium Italic'),
		url("FiraSans-MediumItalic-ccf7e434.woff2") format("woff2");
	font-display: swap;
}
@font-face {
	font-family: 'Fira Mono';
	font-style: normal;
	font-weight: 400;
	src: local('Fira Mono'),
		url("FiraMono-Regular-87c26294.woff2") format("woff2");
	font-display: swap;
}
@font-face {
	font-family: 'Fira Mono';
	font-style: normal;
	font-weight: 500;
	src: local('Fira Mono Medium'),
		url("FiraMono-Medium-86f75c8c.woff2") format("woff2");
	font-display: swap;
}

/* See SourceSerif4-LICENSE.md for the Source Serif 4 license. */
@font-face {
	font-family: 'Source Serif 4';
	font-style: normal;
	font-weight: 400;
	src: local('Source Serif 4'),
		url("SourceSerif4-Regular-6b053e98.ttf.woff2") format("woff2");
	font-display: swap;
}
@font-face {
	font-family: 'Source Serif 4';
	font-style: italic;
	font-weight: 400;
	src: local('Source Serif 4 Italic'),
		url("SourceSerif4-It-ca3b17ed.ttf.woff2") format("woff2");
	font-display: swap;
}
@font-face {
	font-family: 'Source Serif 4';
	font-style: normal;
	font-weight: 500;
	src: local('Source Serif 4 Semibold'),
		url("SourceSerif4-Semibold-457a13ac.ttf.woff2") format("woff2");
	font-display: swap;
}
@font-face {
	font-family: 'Source Serif 4';
	font-style: normal;
	font-weight: 700;
	src: local('Source Serif 4 Bold'),
		url("SourceSerif4-Bold-6d4fd4c0.ttf.woff2") format("woff2");
	font-display: swap;
}

/* See SourceCodePro-LICENSE.txt for the Source Code Pro license. */
@font-face {
	font-family: 'Source Code Pro';
	font-style: normal;
	font-weight: 400;
	/* Avoid using locally installed font because bad versions are in circulation:
	 * see https://github.com/rust-lang/rust/issues/24355 */
	src: url("SourceCodePro-Regular-8badfe75.ttf.woff2") format("woff2");
	font-display: swap;
}
@font-face {
	font-family: 'Source Code Pro';
	font-style: italic;
	font-weight: 400;
	src: url("SourceCodePro-It-fc8b9304.ttf.woff2") format("woff2");
	font-display: swap;
}
@font-face {
	font-family: 'Source Code Pro';
	font-style: normal;
	font-weight: 600;
	src: url("SourceCodePro-Semibold-aa29a496.ttf.woff2") format("woff2");
	font-display: swap;
}

/* Avoid using legacy CJK serif fonts in Windows like Batang. */
@font-face {
	font-family: 'NanumBarunGothic';
	src: url("NanumBarunGothic-13b3dcba.ttf.woff2") format("woff2");
	font-display: swap;
	unicode-range: U+AC00-D7AF, U+1100-11FF, U+3130-318F, U+A960-A97F, U+D7B0-D7FF;
}

* {
	box-sizing: border-box;
}

/* General structure and fonts */

body {
	/* Line spacing at least 1.5 per Web Content Accessibility Guidelines
	   https://www.w3.org/WAI/WCAG21/Understanding/visual-presentation.html */
	font: 1rem/1.5 var(--font-family);
	margin: 0;
	position: relative;
	/* We use overflow-wrap: break-word for Safari, which doesn't recognize
	   `anywhere`: https://developer.mozilla.org/en-US/docs/Web/CSS/overflow-wrap */
	overflow-wrap: break-word;
	/* Then override it with `anywhere`, which is required to make non-Safari browsers break
	   more aggressively when we want them to. */
	overflow-wrap: anywhere;
	font-feature-settings: "kern", "liga";
	background-color: var(--main-background-color);
	color: var(--main-color);
}

/* Skip navigation link for keyboard users (WCAG 2.4.1) */
.skip-main-content {
	position: absolute;
	left: 0;
	top: -100%;
	z-index: 1000;
	padding: 0.5rem 1rem;
	background-color: var(--main-background-color);
	color: var(--main-color);
	text-decoration: none;
	font-weight: 500;
	border-bottom-right-radius: 4px;
	outline: 2px solid var(--search-input-focused-border-color);
}
.skip-main-content:focus {
	top: 0;
}

h1 {
	font-size: 1.5rem; /* 24px */
}
h2 {
	font-size: 1.375rem; /* 22px */
}
h3 {
	font-size: 1.25rem; /* 20px */
}
h1, h2, h3, h4, h5, h6 {
	font-weight: 500;
}
h1, h2, h3, h4 {
	margin: 25px 0 15px 0;
	padding-bottom: 6px;
}
.docblock h3, .docblock h4, h5, h6 {
	margin: 15px 0 5px 0;
}
.docblock > h2:first-child,
.docblock > h3:first-child,
.docblock > h4:first-child,
.docblock > h5:first-child,
.docblock > h6:first-child {
	margin-top: 0;
}
.main-heading h1 {
	margin: 0;
	padding: 0;
	grid-area: main-heading-h1;
	/* We use overflow-wrap: break-word for Safari, which doesn't recognize
	   `anywhere`: https://developer.mozilla.org/en-US/docs/Web/CSS/overflow-wrap */
	overflow-wrap: break-word;
	/* Then override it with `anywhere`, which is required to make non-Safari browsers break
	   more aggressively when we want them to. */
	overflow-wrap: anywhere;
}
.main-heading {
	position: relative;
	display: grid;
	grid-template-areas:
		"main-heading-breadcrumbs main-heading-breadcrumbs"
		"main-heading-h1 main-heading-toolbar"
		"main-heading-sub-heading main-heading-toolbar";
	grid-template-columns: minmax(105px, 1fr) minmax(0, max-content);
	grid-template-rows: minmax(25px, min-content) min-content min-content;
	padding-bottom: 6px;
	margin-bottom: 15px;
}
.search-results-main-heading {
	grid-template-areas:
		"main-heading-breadcrumbs main-heading-placeholder"
		"main-heading-breadcrumbs main-heading-toolbar    "
		"main-heading-h1          main-heading-toolbar    ";
}
.search-results-main-heading nav.sub {
	grid-area: main-heading-h1;
	align-items: end;
	margin: 4px 0 8px 0;
}
.rustdoc-breadcrumbs {
	grid-area: main-heading-breadcrumbs;
	line-height: 1.25;
	padding-top: 5px;
	position: relative;
	z-index: 1;
}
.search-switcher {
	grid-area: main-heading-breadcrumbs;
	line-height: 1.5;
	display: flex;
	color: var(--main-color);
	align-items: baseline;
	white-space: nowrap;
	padding-top: 8px;
	min-height: 34px;
}
.rustdoc-breadcrumbs a {
	padding: 5px 0 7px;
}
/* The only headings that get underlines are:
	 Markdown-generated headings within the top-doc
	 Rustdoc-generated h2 section headings (e.g. "Implementations", "Required Methods", etc)
	Underlines elsewhere in the documentation break up visual flow and tend to invert
	section hierarchies. */
.content h2,
.top-doc .docblock > h3,
.top-doc .docblock > h4 {
	border-bottom: 1px solid var(--headings-border-bottom-color);
}
/* while line-height 1.5 is required for any "block of text",
	which WCAG defines as more than one sentence, it looks weird for
	very large main headers */
h1, h2 {
	line-height: 1.25;
	padding-top: 3px;
	padding-bottom: 9px;
}
h3.code-header {
	font-size: 1.125rem; /* 18px */
}
h4.code-header {
	font-size: 1rem;
}
.code-header {
	font-weight: 600;
	margin: 0;
	padding: 0;
	white-space: pre-wrap;
}
.structfield, .sub-variant-field {
	margin: 0.6em 0;
}

#crate-search,
h1, h2, h3, h4, h5, h6,
.sidebar,
rustdoc-topbar,
.search-input,
.search-results .result-name,
.item-table dt > a,
.out-of-band,
.sub-heading,
span.since,
a.src,
rustdoc-toolbar,
summary.hideme,
.scraped-example-list,
.rustdoc-breadcrumbs,
.search-switcher,
/* This selector is for the items listed in the "all items" page. */
ul.all-items,
.deprecated-count {
	font-family: "Fira Sans", Arial, NanumBarunGothic, sans-serif;
}

#toggle-all-docs,
a.anchor,
.section-header a,
#src-sidebar a,
.rust a,
.sidebar h2 a,
.sidebar h3 a,
rustdoc-topbar h2 a,
h1 a,
.search-results a,
.search-results li,
.stab,
.result-name i {
	color: var(--main-color);
}

span.enum, a.enum,
span.struct, a.struct,
span.union, a.union,
span.primitive, a.primitive,
span.type, a.type,
span.foreigntype, a.foreigntype {
	color: var(--type-link-color);
}

span.trait, a.trait,
span.traitalias, a.traitalias {
	color: var(--trait-link-color);
}

span.associatedtype, a.associatedtype,
span.constant, a.constant,
span.static, a.static {
	color: var(--assoc-item-link-color);
}

span.fn, a.fn,
span.method, a.method,
span.tymethod, a.tymethod {
	color: var(--function-link-color);
}

span.attr, a.attr,
span.derive, a.derive,
span.macro, a.macro {
	color: var(--macro-link-color);
}

span.mod, a.mod {
	color: var(--mod-link-color);
}

span.keyword, a.keyword {
	color: var(--keyword-link-color);
}

span.attribute, a.attribute {
	color: var(--attribute-link-color);
}

a {
	color: var(--link-color);
	text-decoration: none;
}

ol, ul {
	padding-left: 24px;
}
ul ul, ol ul, ul ol, ol ol {
	margin-bottom: .625em;
}

p, .docblock > .warning {
	/* Paragraph spacing at least 1.5 times line spacing per Web Content Accessibility Guidelines.
	   Line-height is 1.5rem, so line spacing is .5rem; .75em is 1.5 times that.
	   https://www.w3.org/WAI/WCAG21/Understanding/visual-presentation.html */
	margin: 0 0 .75em 0;
}
/* For the last child of a div, the margin will be taken care of
	by the margin-top of the next item. */
p:last-child, .docblock > .warning:last-child {
	margin: 0;
}

/* Fix some style changes due to normalize.css 8 */

button {
	/* Buttons on Safari have different default padding than other platforms. Make them the same. */
	padding: 1px 6px;
	/* Opinionated tweak: use pointer cursor as clickability signifier. */
	cursor: pointer;
}

/* end tweaks for normalize.css 8 */

button#toggle-all-docs {
	padding: 0;
	background: none;
	border: none;
	/* iOS button gradient: https://stackoverflow.com/q/5438567 */
	-webkit-appearance: none;
	opacity: 1;
}

.rustdoc {
	display: flex;
	flex-direction: row;
	flex-wrap: nowrap;
}

main {
	position: relative;
	flex-grow: 1;
	padding: 10px 15px 40px 45px;
	min-width: 0; /* avoid growing beyond the size limit */
}

.src main {
	padding: 15px;
}

.width-limiter {
	max-width: 960px;
	margin-right: auto;
}

details:not(.toggle) summary {
	margin-bottom: .6em;
}

code, pre, .code-header, .type-signature {
	font-family: var(--font-family-code);
}
.docblock code, .item-table dd code {
	border-radius: 3px;
	padding: 0 0.125em;
}
.docblock pre code, .item-table dd pre code {
	padding: 0;
}
pre {
	padding: 14px;
	line-height: 1.5; /* https://github.com/rust-lang/rust/issues/105906 */
}
pre.item-decl {
	overflow-x: auto;
}
/* This rule allows to have scrolling on the X axis. */
.item-decl .type-contents-toggle {
	contain: initial;
}

.src .content pre {
	padding: 20px;
	padding-left: 16px;
}

img {
	max-width: 100%;
}

.logo-container {
	/* zero text boxes so that computed line height = image height exactly */
	line-height: 0;
	display: block;
}

.rust-logo {
	filter: var(--rust-logo-filter);
}

.sidebar {
	font-size: 0.875rem;
	flex: 0 0 var(--desktop-sidebar-width);
	width: var(--desktop-sidebar-width);
	overflow-y: scroll;
	overscroll-behavior: contain;
	position: sticky;
	height: 100vh;
	top: 0;
	left: 0;
	z-index: var(--desktop-sidebar-z-index);
	/* resize indicator: hide this when on touch or mobile */
	border-right: solid 1px var(--sidebar-border-color);
}

.rustdoc.src .sidebar {
	flex-basis: 50px;
	width: 50px;
	overflow-x: hidden;
	/* The sidebar is by default hidden  */
	overflow-y: hidden;
}

.hide-sidebar .sidebar,
.hide-sidebar .sidebar-resizer {
	display: none;
}

.sidebar-resizer {
	touch-action: none;
	width: 9px;
	cursor: ew-resize;
	z-index: calc(var(--desktop-sidebar-z-index) + 1);
	position: fixed;
	height: 100%;
	left: var(--desktop-sidebar-width);
	display: flex;
	align-items: center;
	justify-content: flex-start;
	color: var(--right-side-color);
}
.sidebar-resizer::before {
	content: "";
	border-right: dotted 2px currentColor;
	width: 2px;
	height: 12px;
}
.sidebar-resizer::after {
	content: "";
	border-right: dotted 2px currentColor;
	width: 2px;
	height: 16px;
}

.rustdoc.src .sidebar-resizer {
	/* when closed, place resizer glow on top of the normal src sidebar border (no need to
	worry about sidebar) */
	left: 49px;
}

.src-sidebar-expanded .src .sidebar-resizer {
	/* for src sidebar, gap is already provided by 1px border on sidebar itself, so place resizer
	   to right of it */
	left: var(--src-sidebar-width);
}

.sidebar-resizing {
	-moz-user-select: none;
	-webkit-user-select: none;
	-ms-user-select: none;
	user-select: none;
}

.sidebar-resizing * {
	cursor: ew-resize !important;
}

.sidebar-resizing .sidebar {
	position: fixed;
	border-right: solid 2px var(--sidebar-resizer-active);
}
.sidebar-resizing > body {
	padding-left: var(--resizing-sidebar-width);
}

.sidebar-resizer:hover,
.sidebar-resizer:active,
.sidebar-resizer:focus,
.sidebar-resizer.active {
	width: 10px;
	margin: 0;
	/* when active or hovered, place resizer glow on top of the sidebar (right next to, or even
	   on top of, the scrollbar) */
	left: calc(var(--desktop-sidebar-width) - 1px);
	border-left: solid 1px var(--sidebar-resizer-hover);
	color: var(--sidebar-resizer-hover);
}

.src-sidebar-expanded .rustdoc.src .sidebar-resizer:hover,
.src-sidebar-expanded .rustdoc.src .sidebar-resizer:active,
.src-sidebar-expanded .rustdoc.src .sidebar-resizer:focus,
.src-sidebar-expanded .rustdoc.src .sidebar-resizer.active {
	/* when active or hovered, place resizer glow on top of the normal src sidebar border */
	left: calc(var(--src-sidebar-width) - 1px);
}

@media (pointer: coarse) {
	.sidebar-resizer {
		/* too easy to hit the resizer while trying to hit the [-] toggle */
		display: none !important;
	}
	.sidebar {
		/* resize indicator: hide this when on touch or mobile */
		border-right: none;
	}
}

.sidebar-resizer.active {
	/* make the resize tool bigger when actually resizing, to avoid :hover styles on other stuff
		while resizing */
	padding: 0 140px;
	width: calc(140px + 140px + 9px + 2px);
	margin-left: -140px;
	border-left: none;
	color: var(--sidebar-resizer-active);
}

.sidebar, rustdoc-topbar, .sidebar-menu-toggle,
#src-sidebar {
	background-color: var(--sidebar-background-color);
}

.src .sidebar > * {
	visibility: hidden;
}

.src-sidebar-expanded .src .sidebar {
	overflow-y: auto;
	flex-basis: var(--src-sidebar-width);
	width: var(--src-sidebar-width);
}

.src-sidebar-expanded .src .sidebar > * {
	visibility: visible;
}

#all-types {
	margin-top: 1em;
}

/* Improve the scrollbar display on firefox */
* {
	scrollbar-width: initial;
	scrollbar-color: var(--scrollbar-color);
}
.sidebar {
	scrollbar-width: thin;
	scrollbar-color: var(--scrollbar-color);
}

/* Improve the scrollbar display on webkit-based browsers */
::-webkit-scrollbar {
	width: 12px;
}
.sidebar::-webkit-scrollbar {
	width: 8px;
}
::-webkit-scrollbar-track {
	-webkit-box-shadow: inset 0;
	background-color: var(--scrollbar-track-background-color);
}
.sidebar::-webkit-scrollbar-track {
	background-color: var(--scrollbar-track-background-color);
}
::-webkit-scrollbar-thumb, .sidebar::-webkit-scrollbar-thumb {
	background-color: var(--scrollbar-thumb-background-color);
}

/* Everything else */

.hidden {
	display: none !important;
}

.logo-container > img {
	height: 48px;
	width: 48px;
}

ul.block, .block li, .block ul {
	padding: 0;
	margin: 0;
	list-style: none;
}

.block ul a {
	padding-left: 1rem;
}

.sidebar-elems a,
.sidebar > h2 a {
	display: block;
	padding: 0.25rem; /* 4px */
	margin-right: 0.25rem;
	/* extend click target to far edge of screen (mile wide bar) */
	border-left: solid var(--sidebar-elems-left-padding) transparent;
	margin-left: calc(-0.25rem - var(--sidebar-elems-left-padding));
	background-clip: border-box;
}

.hide-toc #rustdoc-toc, .hide-toc .in-crate {
	display: none;
}

.hide-modnav #rustdoc-modnav {
	display: none;
}

.sidebar h2 {
	text-wrap: balance;
	overflow-wrap: anywhere;
	padding: 0;
	margin: 0.7rem 0;
}

.sidebar h3 {
	text-wrap: balance;
	overflow-wrap: anywhere;
	font-size: 1.125rem; /* 18px */
	padding: 0;
	margin: 0;
}

.sidebar-elems,
.sidebar > .version,
.sidebar > h2 {
	padding-left: var(--sidebar-elems-left-padding);
}

.sidebar a {
	color: var(--sidebar-link-color);
}
.sidebar .current,
.sidebar .current a,
.sidebar-crate a.logo-container:hover + h2 a,
.sidebar a:hover:not(.logo-container) {
	background-color: var(--sidebar-current-link-background-color);
}

.sidebar-elems .block {
	margin-bottom: 2em;
}

.sidebar-elems .block li a {
	white-space: nowrap;
	text-overflow: ellipsis;
	overflow: hidden;
}

.sidebar-crate {
	display: flex;
	align-items: center;
	justify-content: center;
	/* there's a 10px padding at the top of <main>, and a 4px margin at the
		top of the search form. To line them up, add them. */
	margin: 14px 32px 1rem;
	row-gap: 10px;
	column-gap: 32px;
	flex-wrap: wrap;
}

.sidebar-crate h2 {
	flex-grow: 1;
	/* This setup with the margins and row-gap is designed to make flex-wrap
		work the way we want. If they're in the side-by-side lockup, there
		should be a 16px margin to the left of the logo (visually the same as
		the 24px one on everything else, which are not giant circles) and 8px
		between it and the crate's name and version. When they're line wrapped,
		the logo needs to have the same margin on both sides of itself (to
		center properly) and the crate name and version need 24px on their
		left margin. */
	margin: 0 -8px;
	/* To align this with the search bar, it should not be centered, even when
		the logo is. */
	align-self: start;
}

.sidebar-crate .logo-container {
	/* The logo is expected to have 8px "slop" along its edges, so we can optically
		center it. */
	margin: 0 calc(-16px - var(--sidebar-elems-left-padding));
	padding: 0 var(--sidebar-elems-left-padding);
	text-align: center;
}

.sidebar-crate .logo-container img {
	/* When in a horizontal logo lockup, the highlight color of the crate name menu item
		extends underneath the actual logo (in a vertical lockup, that background highlight
		extends to the left edge of the screen).

		To prevent a weird-looking colored band from appearing under the logo, cover it up
		with the sidebar's background. Additionally, the crate name extends slightly above
		the logo, so that its highlight has a bit of space to let the ascenders breath while
		also having those ascenders meet exactly with the top of the logo.

		In ANSI art, make it look like this:
		|        ┌─────┐
		|    (R) │ std │
		|        └─────┘

		Not like this (which would happen without the z-index):
		|     ┌────────┐
		|    (│    std │
		|     └────────┘

		Not like this (which would happen without the background):
		|     ┌────────┐
		|    (R)   std │
		|     └────────┘

		Nor like this (which would happen without the negative margin):
		|     ─────────┐
		|    (R) │ std │
		|        └─────┘
		*/
	margin-top: -16px;
	border-top: solid 16px transparent;
	box-sizing: content-box;
	position: relative;
	background-clip: border-box;
	z-index: 1;
}

.sidebar-crate h2 a {
	display: block;
	/* extend click target to far edge of screen (mile wide bar) */
	border-left: solid var(--sidebar-elems-left-padding) transparent;
	background-clip: border-box;
	margin: 0 calc(-24px + 0.25rem) 0 calc(-0.2rem - var(--sidebar-elems-left-padding));
	/* Align the sidebar crate link with the search bar, which have different
		font sizes.

		|        | font-size | line-height | total line-height | padding-y |     total    |
		|:-------|----------:|------------:|------------------:|----------:|-------------:|
		| crate  |  1.375rem |        1.25 |           1.72rem |         x |   2x+1.72rem |
		| search |      1rem |        1.15 |           1.15rem |       8px | 1.15rem+16px |

		2x + 1.72rem = 1.15rem + 16px
		2x = 1.15rem + 16px - 1.72rem
		2x = 16px - 0.57rem
		x = ( 16px - 0.57rem ) / 2
	*/
	padding: calc( ( 16px - 0.57rem ) / 2 ) 0.25rem;
	padding-left: 0.2rem;
}

.sidebar-crate h2 .version {
	display: block;
	font-weight: normal;
	font-size: 1rem;
	overflow-wrap: break-word;
}

.sidebar-crate + .version {
	margin-top: -1rem;
	margin-bottom: 1rem;
}

rustdoc-topbar {
	display: none;
}

.rustdoc .example-wrap {
	display: flex;
	position: relative;
	margin-bottom: 10px;
}

.rustdoc .example-wrap > pre,
.rustdoc .scraped-example .src-line-numbers,
.rustdoc .scraped-example .src-line-numbers > pre {
	border-radius: 6px;
}

.rustdoc .scraped-example {
	position: relative;
}

/* For the last child of a div, the margin will be taken care of
	by the margin-top of the next item. */
.rustdoc .example-wrap:last-child {
	margin-bottom: 0px;
}

.rustdoc .example-wrap pre {
	margin: 0;
	flex-grow: 1;
}

.scraped-example:not(.expanded) .example-wrap {
	/* scrape-examples.js has a constant DEFAULT_MAX_LINES (call it N) for the number
	 * of lines shown in the un-expanded example code viewer. This pre needs to have
	 * a max-height equal to line-height * N. The line-height is currently 1.5em,
	 * and we include additional 10px for padding. */
	max-height: calc(1.5em * 5 + 10px);
}
.more-scraped-examples .scraped-example:not(.expanded) .example-wrap {
	max-height: calc(1.5em * 10 + 10px);
}

.rustdoc:not(.src) .scraped-example:not(.expanded) .src-line-numbers,
.rustdoc:not(.src) .scraped-example:not(.expanded) .src-line-numbers > pre,
.rustdoc:not(.src) .scraped-example:not(.expanded) pre.rust {
	padding-bottom: 0;
	/* See above comment, should be the same max-height. */
	overflow: auto hidden;
}
.rustdoc:not(.src) .scraped-example .src-line-numbers {
	padding-top: 0;
}
.rustdoc:not(.src) .scraped-example.expanded .src-line-numbers {
	padding-bottom: 0;
}

.rustdoc:not(.src) .example-wrap pre {
	overflow: auto;
}

.example-wrap code {
	position: relative;
}
.example-wrap pre code span {
	display: inline;
}

.example-wrap.digits-1 { --example-wrap-digits-count: 1ch; }
.example-wrap.digits-2 { --example-wrap-digits-count: 2ch; }
.example-wrap.digits-3 { --example-wrap-digits-count: 3ch; }
.example-wrap.digits-4 { --example-wrap-digits-count: 4ch; }
.example-wrap.digits-5 { --example-wrap-digits-count: 5ch; }
.example-wrap.digits-6 { --example-wrap-digits-count: 6ch; }
.example-wrap.digits-7 { --example-wrap-digits-count: 7ch; }
.example-wrap.digits-8 { --example-wrap-digits-count: 8ch; }
.example-wrap.digits-9 { --example-wrap-digits-count: 9ch; }

.example-wrap .expansion {
	position: relative;
	display: inline;
}
.example-wrap .expansion > input {
	display: block;
	position: absolute;
	appearance: none;
	content: '↕';
	left: -20px;
	top: 0;
	border: 1px solid var(--border-color);
	border-radius: 4px;
	cursor: pointer;
	color: var(--main-color);
	padding: 0 2px;
	line-height: 20px;
}
.example-wrap .expansion > input::after {
	content: "↕";
}
.example-wrap .expansion .expanded {
	display: none;
	color: var(--main-color);
}
.example-wrap .expansion > input:checked ~ .expanded,
.example-wrap .expansion > input:checked ~ * .expanded {
	display: inherit;
}
.example-wrap .expansion > input:checked ~ .original,
.example-wrap .expansion > input:checked ~ * .original {
	display: none;
}

.example-wrap [data-nosnippet] {
	width: calc(var(--example-wrap-digits-count) + var(--line-number-padding) * 2);
}
.example-wrap:not(.hide-lines) pre > code {
	padding-left: calc(
		var(--example-wrap-digits-count) + var(--line-number-padding) * 2
		+ var(--line-number-right-margin));
}
.src .example-wrap .expansion [data-nosnippet] {
	/* FIXME: Once <https://bugzilla.mozilla.org/show_bug.cgi?id=1949948> is solved, uncomment
	   next line and remove the two other rules. */
	/*left: calc((
		var(--example-wrap-digits-count) + var(--line-number-padding) * 2
		+ var(--line-number-right-margin)) * -1);*/
	position: initial;
	margin-left: calc((
		var(--example-wrap-digits-count) + var(--line-number-padding) * 2
		+ var(--line-number-right-margin)) * -1);
}

.example-wrap [data-nosnippet] {
	color: var(--src-line-numbers-span-color);
	text-align: right;
	display: inline-block;
	margin-right: var(--line-number-right-margin);
	-moz-user-select: none;
	-webkit-user-select: none;
	-ms-user-select: none;
	user-select: none;
	padding: 0 var(--line-number-padding);
	position: absolute;
	left: 0;
}
.example-wrap pre > code {
	position: relative;
	display: block;
}
:root.word-wrap-source-code .example-wrap pre > code {
	word-break: break-all;
	white-space: pre-wrap;
}
:root.word-wrap-source-code .example-wrap pre > code * {
	word-break: break-all;
}
.example-wrap [data-nosnippet]:target {
	border-right: none;
}
.example-wrap .line-highlighted[data-nosnippet] {
	background-color: var(--src-line-number-highlighted-background-color);
}
.example-wrap.hide-lines [data-nosnippet] {
	display: none;
}

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

.item-table dd {
	overflow-wrap: break-word;
	overflow-wrap: anywhere;
}
/* Wrap non-pre code blocks (`text`) but not (```text```). */
.docblock :not(pre) > code,
.item-table dd code {
	white-space: pre-wrap;
}

.top-doc .docblock h2 { font-size: 1.375rem; }
.top-doc .docblock h3 { font-size: 1.25rem; }
.top-doc .docblock h4,
.top-doc .docblock h5 {
	font-size: 1.125rem;
}
.top-doc .docblock h6 {
	font-size: 1rem;
}

.docblock h5 { font-size: 1rem; }
.docblock h6 { font-size: 0.875rem; }

.docblock {
	margin-left: var(--docblock-indent);
	position: relative;
}

.docblock > :not(.more-examples-toggle):not(.example-wrap) {
	max-width: 100%;
	overflow-x: auto;
}

.sub-heading {
	font-size: 1rem;
	flex-grow: 0;
	grid-area: main-heading-sub-heading;
	line-height: 1.25;
	padding-bottom: 4px;
}

.main-heading rustdoc-toolbar, .main-heading .out-of-band {
	grid-area: main-heading-toolbar;
}
rustdoc-toolbar {
	display: flex;
	flex-direction: row;
	flex-wrap: nowrap;
	min-height: 60px;
}

.docblock code, .item-table dd code,
pre, .rustdoc.src .example-wrap, .example-wrap .src-line-numbers {
	background-color: var(--code-block-background-color);
	border-radius: var(--code-block-border-radius);
	/* code blocks within links (such as in most intra-doc links) should be underlined */
	text-decoration: inherit;
}

#main-content {
	position: relative;
	outline: none;
}

.docblock table {
	margin: .5em 0;
	border-collapse: collapse;
}

.docblock table td, .docblock table th {
	padding: .5em;
	border: 1px solid var(--border-color);
}

.docblock table tbody tr:nth-child(2n) {
	background: var(--table-alt-row-background-color);
}

.docblock .stab, .item-table dd .stab, .docblock p code {
	display: inline-block;
}

.docblock li {
	margin-bottom: .4em;
}
.docblock li p:not(:last-child) {
	/* This margin is voluntarily smaller than `.docblock li` to keep the visual
	   list element items separated while also having a visual separation (although
	   smaller) for paragraphs. */
	margin-bottom: .3em;
}

/* "where ..." clauses with block display are also smaller */
div.where {
	white-space: pre-wrap;
	font-size: 0.875rem;
}

.item-info {
	display: block;
	margin-left: var(--docblock-indent);
}
.impl-items > .item-info {
	/* Margin of docblocks + margin of impl block items. */
	margin-left: calc(var(--docblock-indent) + var(--impl-items-indent));
}

#synthetic-implementors-list:not(.loaded), #implementors-list:not(.loaded) {
	/* To prevent layout shift when loading the page with extra implementors being loaded
	   from JS, we hide the list until it's complete. */
	display: none;
}

.item-info code {
	font-size: 0.875rem;
}

#main-content > .item-info {
	margin-left: 0;
}

nav.sub {
	flex-grow: 1;
	flex-flow: row nowrap;
	display: flex;
	align-items: start;
	margin-top: 4px;
}
.search-form {
	position: relative;
	display: flex;
	height: 34px;
	flex-grow: 1;
}
.src nav.sub {
	margin: 0 0 -10px 0;
}

.section-header {
	/* fields use <span> tags, but should get their own lines */
	display: block;
	position: relative;
}

.section-header:hover > .anchor, .impl:hover > .anchor,
.trait-impl:hover > .anchor, .variant:hover > .anchor {
	display: initial;
}
.anchor {
	--anchor-link-shift: 0.5em;
	display: none;
	position: absolute;
	left: calc(var(--anchor-link-shift) * -1);
	padding-right: var(--anchor-link-shift);
	background: none !important;
}
.anchor.field {
	left: -5px;
}
.section-header > .anchor {
	left: -15px;
	padding-right: 8px;
}
h2.section-header > .anchor {
	padding-right: 6px;
}
a.doc-anchor {
	color: var(--main-color);
	display: none;
	position: absolute;
	left: -17px;
	/* We add this padding so that when the cursor moves from the heading's text to the anchor,
	   the anchor doesn't disappear. */
	padding-right: 10px;
	/* And this padding is used to make the anchor larger and easier to click on. */
	padding-left: 3px;
}
*:hover > .doc-anchor {
	display: block;
}
/* If the first element of the top doc block is a heading, we don't want to ever display its anchor
because of the `[-]` element which would overlap with it. */
.top-doc > .docblock > *:first-child > .doc-anchor {
	display: none !important;
}

.main-heading a:hover,
.example-wrap .rust a:hover:not([data-nosnippet]),
.all-items a:hover,
.docblock a:not(.scrape-help):not(.tooltip):hover:not(.doc-anchor),
.item-table dd a:not(.scrape-help):not(.tooltip):hover,
.item-info a {
	text-decoration: underline;
}

.crate.block li.current a { font-weight: 500; }

/*  In most contexts we use `overflow-wrap: anywhere` to ensure that we can wrap
	as much as needed on mobile (see
	tests/rustdoc-gui/type-declaration-overflow.goml for an example of why
	this matters). The `anywhere` value means:

	"Soft wrap opportunities introduced by the word break are considered when
	 calculating min-content intrinsic sizes."

	https://developer.mozilla.org/en-US/docs/Web/CSS/overflow-wrap#values

	For table layouts, that becomes a problem: the browser tries to make each
	column as narrow as possible, and `overflow-wrap: anywhere` means it can do
	so by breaking words - even if some other column could be shrunk without
	breaking words! This shows up, for instance, in the `Structs` / `Modules` /
	`Functions` (etcetera) sections of a module page, and when a docblock
	contains a table.

	So, for table layouts, override the default with break-word, which does
	_not_ affect min-content intrinsic sizes.
*/
table,
.item-table {
	overflow-wrap: break-word;
}

.item-table {
	padding: 0;
	margin: 0;
	width: 100%;
}
.item-table > dt {
	padding-right: 1.25rem;
}
.item-table > dd {
	margin-inline-start: 0;
	margin-left: 0;
}

#crate-search-div {
	/* ensures that 100% in properties of #crate-search-div:after
	are relative to the size of this div */
	position: relative;
	/* allows this div (and with it the <select>-element "#crate-search") to be shrunk */
	min-width: 0;
	/* keep label text for switcher from moving down when this appears */
	margin-top: -1px;
}
#crate-search {
	padding: 0 23px 0 4px;
	/* prevents the <select> from overflowing the containing div in case it's shrunk */
	max-width: 100%;
	/* contents can overflow because of max-width limit, then show ellipsis */
	text-overflow: ellipsis;
	border: 1px solid var(--border-color);
	border-radius: 4px;
	outline: none;
	cursor: pointer;
	-moz-appearance: none;
	-webkit-appearance: none;
	/* Removes default arrow from firefox */
	text-indent: 0.01px;
	background-color: var(--main-background-color);
	color: inherit;
	line-height: 1.5;
	font-weight: 500;
}
#crate-search:hover, #crate-search:focus {
	border-color: var(--crate-search-hover-border);
}
/* pseudo-element for holding the dropdown-arrow image; needs to be a separate thing
so that we can apply CSS-filters to change the arrow color in themes */
#crate-search-div::after {
	/* lets clicks through! */
	pointer-events: none;
	/* completely covers the underlying div */
	width: 100%;
	height: 100%;
	position: absolute;
	top: 0;
	left: 0;
	content: "";
	background-repeat: no-repeat;
	background-size: 20px;
	background-position: calc(100% - 2px) 56%;
	/* down arrow (image is black color) */
	background-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" \
	width="128" height="128" viewBox="-30 -20 176 176"><path d="M111,40.5L64,87.499L17,40.5" \
	fill="none" stroke="black" strike-linecap="square" stroke-miterlimit="10" stroke-width="12"/> \
	</svg>');
	/* changes the arrow image color */
	filter: var(--crate-search-div-filter);
}
#crate-search-div:hover::after, #crate-search-div:focus-within::after {
	filter: var(--crate-search-div-hover-filter);
}
#crate-search > option {
	font-size: 1rem;
}
.search-input {
	/* Override Normalize.css: it has a rule that sets
	   -webkit-appearance: textfield for search inputs. That
	   causes rounded corners and no border on iOS Safari. */
	-webkit-appearance: none;
	outline: none;
	border: 1px solid var(--border-color);
	border-radius: 2px;
	padding: 8px;
	font-size: 1rem;
	flex-grow: 1;
	background-color: var(--button-background-color);
	color: var(--search-color);
	max-width: 100%;
}
.search-input:focus {
	border-color: var(--search-input-focused-border-color);
}

.search-results {
	display: none;
}

.search-results.active {
	display: block;
	margin: 0;
	padding: 0;
}

.search-results > a {
	display: grid;
	grid-template-areas:
		"search-result-name search-result-desc"
		"search-result-type-signature search-result-type-signature";
	grid-template-columns: .6fr .4fr;
	/* A little margin ensures the browser's outlining of focused links has room to display. */
	margin-left: 2px;
	margin-right: 2px;
	border-bottom: 1px solid var(--search-result-border-color);
	column-gap: 1em;
}

.search-results > a > div.desc {
	white-space: nowrap;
	text-overflow: ellipsis;
	overflow: hidden;
	grid-area: search-result-desc;
}

.search-results a:hover,
.search-results a:focus {
	background-color: var(--search-result-link-focus-background-color);
}

.search-results .result-name {
	display: flex;
	align-items: center;
	justify-content: start;
	grid-area: search-result-name;
}
.search-results .result-name .alias {
	color: var(--search-results-alias-color);
}
.search-results .result-name .grey {
	color: var(--search-results-grey-color);
}
.search-results .result-name .typename {
	color: var(--search-results-grey-color);
	font-size: 0.875rem;
	width: var(--search-typename-width);
}
.search-results .result-name .path {
	word-break: break-all;
	max-width: calc(100% - var(--search-typename-width));
	display: inline-block;
}
.search-results .result-name .path > * {
	display: inline;
}
.search-results .type-signature {
	grid-area: search-result-type-signature;
	white-space: pre-wrap;
}

.popover {
	position: absolute;
	top: 100%;
	right: 0;
	z-index: calc(var(--desktop-sidebar-z-index) + 1);
	margin-top: var(--popover-top-margin);
	border-radius: 3px;
	border: 1px solid var(--border-color);
	background-color: var(--main-background-color);
	color: var(--main-color);
	--popover-arrow-offset: 11px;
}

/* This rule is to draw the little arrow connecting the settings menu to the gear icon. */
.popover::before {
	content: '';
	position: absolute;
	right: var(--popover-arrow-offset);
	border: solid var(--border-color);
	border-width: 1px 1px 0 0;
	background-color: var(--main-background-color);
	padding: 4px;
	transform: rotate(-45deg);
	top: -5px;
}

.setting-line {
	margin: 1.2em 0.6em;
}

.setting-radio input, .setting-check input {
	margin-right: 0.3em;
	height: 1.2rem;
	width: 1.2rem;
	border: 2px solid var(--settings-input-border-color);
	outline: none;
	-webkit-appearance: none;
	cursor: pointer;
}
.setting-radio input {
	border-radius: 50%;
}

.setting-radio span, .setting-check span {
	padding-bottom: 1px;
}

.setting-radio {
	margin-top: 0.1em;
	margin-bottom: 0.1em;
	min-width: 3.8em;
	padding: 0.3em;
	display: inline-flex;
	align-items: center;
	cursor: pointer;
}
.setting-radio + .setting-radio {
	margin-left: 0.5em;
}

.setting-check {
	margin-right: 20px;
	display: flex;
	align-items: center;
	cursor: pointer;
}
.setting-check input {
	flex-shrink: 0;
}

.setting-radio input:checked {
	box-shadow: inset 0 0 0 3px var(--main-background-color);
	background-color: var(--settings-input-color);
}
.setting-check input:checked {
	background-color: var(--settings-input-color);
	border-width: 1px;
	/* cross-mark image in the settings checkboxes */
	content: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40">\
		<path d="M7,25L17,32L33,12" fill="none" stroke="black" stroke-width="5"/>\
		<path d="M7,23L17,30L33,10" fill="none" stroke="white" stroke-width="5"/></svg>');
}
.setting-radio input:focus, .setting-check input:focus {
	box-shadow: 0 0 1px 1px var(--settings-input-color);
}
/* In here we combine both `:focus` and `:checked` properties. */
.setting-radio input:checked:focus {
	box-shadow: inset 0 0 0 3px var(--main-background-color),
		0 0 2px 2px var(--settings-input-color);
}
.setting-radio input:hover, .setting-check input:hover {
	border-color: var(--settings-input-color) !important;
}

#settings.popover {
	--popover-arrow-offset: 196px;
	top: calc(100% - 16px);
}

/* use larger max-width for help popover, but not for help.html */
#help.popover {
	max-width: 600px;
	--popover-arrow-offset: 115px;
	top: calc(100% - 16px);
}

#help dt {
	float: left;
	clear: left;
	margin-right: 0.5rem;
}
#help dd {
	margin-bottom: 0.5rem;
}
#help span.top, #help span.bottom {
	text-align: center;
	display: block;
	font-size: 1.125rem;
	padding: 0 0.5rem;
	text-wrap-style: balance;
}
#help span.top {
	margin: 10px 0;
	border-bottom: 1px solid var(--border-color);
	padding-bottom: 4px;
	margin-bottom: 6px;
}
#help span.bottom {
	clear: both;
	border-top: 1px solid var(--border-color);
}
.side-by-side {
	display: flex;
	margin-bottom: 20px;
}
.side-by-side > div {
	width: 50%;
	padding: 0 20px 0 17px;
}

.item-info .stab {
	display: block;
	padding: 3px;
	margin-bottom: 5px;
}
.item-table dt .stab {
	margin-left: 0.3125em;
}
.stab {
	padding: 0 2px;
	font-size: 0.875rem;
	font-weight: normal;
	color: var(--main-color);
	background-color: var(--stab-background-color);
	width: fit-content;
	white-space: pre-wrap;
	border-radius: 3px;
	display: inline;
	vertical-align: baseline;
}

.stab.portability > code {
	background: none;
	color: var(--stab-code-color);
}

.stab .emoji, .item-info .stab::before {
	font-size: 1.25rem;
}
.stab .emoji {
	margin-right: 0.3rem;
}
.item-info .stab::before {
	/* ensure badges with emoji and without it have same height */
	content: "\0";
	width: 0;
	display: inline-block;
	color: transparent;
}

/* Black one-pixel outline around emoji shapes */
.emoji {
	text-shadow:
		1px 0 0 black,
		-1px 0 0 black,
		0 1px 0 black,
		0 -1px 0 black;
}

.since {
	font-weight: normal;
	font-size: initial;
}

.rightside {
	padding-left: 12px;
	float: right;
}

.rightside:not(a),
.out-of-band,
.sub-heading,
rustdoc-toolbar {
	color: var(--right-side-color);
}

pre.rust {
	tab-size: 4;
	-moz-tab-size: 4;
}

/* Code highlighting */
pre.rust .kw {
	color: var(--code-highlight-kw-color);
}
pre.rust .kw-2 {
	color: var(--code-highlight-kw-2-color);
}
pre.rust .lifetime {
	color: var(--code-highlight-lifetime-color);
}
pre.rust .prelude-ty {
	color: var(--code-highlight-prelude-color);
}
pre.rust .prelude-val {
	color: var(--code-highlight-prelude-val-color);
}
pre.rust .string {
	color: var(--code-highlight-string-color);
}
pre.rust .number {
	color: var(--code-highlight-number-color);
}
pre.rust .bool-val {
	color: var(--code-highlight-literal-color);
}
pre.rust .self {
	color: var(--code-highlight-self-color);
}
pre.rust .attr {
	color: var(--code-highlight-attribute-color);
}
pre.rust .macro,
pre.rust .macro-nonterminal {
	color: var(--code-highlight-macro-color);
}
pre.rust .question-mark {
	font-weight: bold;
	color: var(--code-highlight-question-mark-color);
}
pre.rust .comment {
	color: var(--code-highlight-comment-color);
}
pre.rust .doccomment {
	color: var(--code-highlight-doc-comment-color);
}

.rustdoc.src .example-wrap pre.rust a:not([data-nosnippet]) {
	background: var(--codeblock-link-background);
}

.example-wrap.compile_fail,
.example-wrap.should_panic {
	border-left: 2px solid var(--codeblock-error-color);
}

.ignore.example-wrap {
	border-left: 2px solid var(--codeblock-ignore-color);
}

.example-wrap.compile_fail:hover,
.example-wrap.should_panic:hover {
	border-left: 2px solid var(--codeblock-error-hover-color);
}

.example-wrap.ignore:hover {
	border-left: 2px solid var(--codeblock-ignore-hover-color);
}

.example-wrap.compile_fail .tooltip,
.example-wrap.should_panic .tooltip {
	color: var(--codeblock-error-color);
}

.example-wrap.ignore .tooltip {
	color: var(--codeblock-ignore-color);
}

.example-wrap.compile_fail:hover .tooltip,
.example-wrap.should_panic:hover .tooltip {
	color: var(--codeblock-error-hover-color);
}

.example-wrap.ignore:hover .tooltip {
	color: var(--codeblock-ignore-hover-color);
}

.example-wrap .tooltip {
	position: absolute;
	display: block;
	left: -25px;
	top: 5px;
	margin: 0;
	line-height: 1;
}

.example-wrap.compile_fail .tooltip,
.example-wrap.should_panic .tooltip,
.example-wrap.ignore .tooltip {
	font-weight: bold;
	font-size: 1.25rem;
}

/* This class only exists for users who want to draw attention to a particular element in their
documentation. */
.content .docblock .warning {
	border-left: 2px solid var(--warning-border-color);
	padding: 14px;
	position: relative;
	/* The "!important" part is required because the rule is otherwise overruled in this CSS
	selector: ".docblock > :not(.more-examples-toggle):not(.example-wrap)" */
	overflow-x: visible !important;
}
.content .docblock .warning::before {
	color: var(--warning-border-color);
	content: "ⓘ";
	position: absolute;
	left: -25px;
	top: 5px;
	font-weight: bold;
	font-size: 1.25rem;
}
.top-doc > .docblock >.warning:first-child::before {
	top: 20px;
}

.example-wrap > a.test-arrow, .example-wrap .button-holder {
	visibility: hidden;
	position: absolute;
	top: 4px;
	right: 4px;
	z-index: 1;
}
a.test-arrow {
	height: var(--copy-path-height);
	padding: 6px 4px 0 11px;
}
a.test-arrow::before {
	content: url('data:image/svg+xml,<svg viewBox="0 0 20 20" width="18" height="20" \
		xmlns="http://www.w3.org/2000/svg"><path d="M0 0l18 10-18 10z"/></svg>');
}
.example-wrap .button-holder {
	display: flex;
}

/*
On iPad, the ":hover" state sticks around, making things work not greatly. Do work around
it, we move it into this media query. More information can be found at:
https://css-tricks.com/solving-sticky-hover-states-with-media-hover-hover/

However, using `@media (hover: hover)` makes this rule never to be applied in GUI tests, so
instead, we check that it's not a "finger" cursor.
*/
@media not (pointer: coarse) {
	.example-wrap:hover > a.test-arrow, .example-wrap:hover > .button-holder {
		visibility: visible;
	}
}
.example-wrap .button-holder.keep-visible {
	visibility: visible;
}
.example-wrap .button-holder > * {
	background: var(--main-background-color);
	cursor: pointer;
	border-radius: var(--button-border-radius);
	height: var(--copy-path-height);
	width: var(--copy-path-width);
	border: 0;
	color: var(--code-example-button-color);
}
.example-wrap .button-holder > *:hover {
	color: var(--code-example-button-hover-color);
}
.example-wrap .button-holder > *:not(:first-child) {
	margin-left: var(--button-left-margin);
}
.example-wrap .button-holder .copy-button {
	padding: 2px 0 0 4px;
}
.example-wrap .button-holder .copy-button::before,
.example-wrap .test-arrow::before,
.example-wrap .button-holder .prev::before,
.example-wrap .button-holder .next::before,
.example-wrap .button-holder .expand::before {
	filter: var(--copy-path-img-filter);
}
.example-wrap .button-holder .copy-button::before {
	content: var(--clipboard-image);
}
.example-wrap .button-holder .copy-button:hover::before,
.example-wrap .test-arrow:hover::before {
	filter: var(--copy-path-img-hover-filter);
}
.example-wrap .button-holder .copy-button.clicked::before {
	content: var(--checkmark-image);
	padding-right: 5px;
}

.example-wrap .button-holder .prev,
.example-wrap .button-holder .next,
.example-wrap .button-holder .expand {
	line-height: 0px;
}
.example-wrap .button-holder .prev::before {
	content: var(--prev-arrow-image);
}
.example-wrap .button-holder .next::before {
	content: var(--next-arrow-image);
}
.example-wrap .button-holder .expand::before {
	content: var(--expand-arrow-image);
}
.example-wrap .button-holder .expand.collapse::before {
	content: var(--collapse-arrow-image);
}

.code-attribute {
	font-weight: 300;
	color: var(--code-attribute-color);
}

.item-spacer {
	width: 100%;
	height: 12px;
	display: block;
}

.main-heading span.since::before {
	content: "Since ";
}

.sub-variant h4 {
	font-size: 1rem;
	font-weight: 400;
	margin-top: 0;
	margin-bottom: 0;
}

.sub-variant {
	margin-left: 24px;
	margin-bottom: 40px;
}

.sub-variant > .sub-variant-field {
	margin-left: 24px;
}

@keyframes targetfadein {
	from {
		background-color: var(--main-background-color);
	}
	10% {
		background-color: var(--target-border-color);
	}
	to {
		background-color: var(--target-background-color);
	}
}

:target:not([data-nosnippet]) {
	background-color: var(--target-background-color);
	border-right: 3px solid var(--target-border-color);
}

a.tooltip {
	font-family: var(--font-family);
}

.code-header a.tooltip {
	color: inherit;
	margin-right: 15px;
	position: relative;
}

.code-header a.tooltip:hover {
	color: var(--link-color);
}

/* placeholder thunk so that the mouse can easily travel from "(i)" to popover
	the resulting "hover tunnel" is a stepped triangle, approximating
	https://bjk5.com/post/44698559168/breaking-down-amazons-mega-dropdown */
a.tooltip:hover::after {
	position: absolute;
	top: calc(100% - 10px);
	left: -15px;
	right: -15px;
	height: 20px;
	content: "\00a0";
}

@media not (prefers-reduced-motion) {
	:target {
		animation: 0.65s cubic-bezier(0, 0, 0.1, 1.0) 0.1s targetfadein;
	}

	/* This animation is layered onto the mistake-proofing delay for dismissing
		a hovered tooltip, to ensure it feels responsive even with the delay.
		*/
	.fade-out {
		opacity: 0;
		transition: opacity 0.45s cubic-bezier(0, 0, 0.1, 1.0);
	}
}

.popover.tooltip .content {
	margin: 0.25em 0.5em;
}

.popover.tooltip .content pre, .popover.tooltip .content code {
	background: transparent;
	margin: 0;
	padding: 0;
	font-size: 1.25rem;
	white-space: pre-wrap;
}

.popover.tooltip .content > h3:first-child {
	margin: 0 0 5px 0;
}

.search-failed {
	text-align: center;
	margin-top: 20px;
	display: none;
}

.search-failed.active {
	display: block;
}

.search-failed > ul {
	text-align: left;
	max-width: 570px;
	margin-left: auto;
	margin-right: auto;
}

#search-tabs {
	margin-top: 0.25rem;
	display: flex;
	flex-direction: row;
	gap: 1px;
	margin-bottom: 4px;
}

#search-tabs button {
	text-align: center;
	font-size: 1.125rem;
	border: 0;
	border-top: 2px solid;
	flex: 1;
	line-height: 1.5;
	color: inherit;
}
#search-tabs button:not(.selected) {
	background-color: var(--search-tab-button-not-selected-background);
	border-top-color: var(--search-tab-button-not-selected-border-top-color);
}
#search-tabs button:hover, #search-tabs button.selected {
	background-color: var(--search-tab-button-selected-background);
	border-top-color: var(--search-tab-button-selected-border-top-color);
}

#search-tabs .count {
	font-size: 1rem;
	font-variant-numeric: tabular-nums;
	color: var(--search-tab-title-count-color);
	position: relative;
}

#search-tabs .count.loading {
	color: transparent;
}

.search-form.loading::after
{
	width: 18px;
	height: 18px;
	border-radius: 18px;
	/* hourglass */
	content: url('data:image/svg+xml,\
	<svg width="16" height="16" viewBox="0 0 8 8" xmlns="http://www.w3.org/2000/svg">\
		<g fill="none">\
			<path d="m3.019 1.496v1.496l0.5878 1.018-0.5751 0.996v1.494" stroke="%233f3f3f"/>\
			<path d="m5.003 1.496v1.496l-0.5878 1.018 0.5751 0.996v1.494" stroke="%233f3f3f"/>\
			<path d="m2.006 1.5h3.978" stroke="%23000"/>\
			<path d="m2.006 6.49h3.993" stroke="%23000"/>\
		</g>\
		<path d="m4.005 5.301-0.3987 0.6905h0.7977z" fill="%237f7f7f"/>\
		<path d="m4.011 3.712-0.3987-0.6905h0.7977z" fill="%237f7f7f"/>\
	</svg>');
	position: absolute;
	right: 8px;
	top: 8px;
	filter: var(--settings-menu-filter);
}

#search .error code {
	border-radius: 3px;
	background-color: var(--search-error-code-background-color);
}

.search-corrections {
	font-weight: normal;
}

#src-sidebar {
	width: 100%;
	overflow: auto;
}
#src-sidebar div.files > a:hover, details.dir-entry summary:hover,
#src-sidebar div.files > a:focus, details.dir-entry summary:focus {
	background-color: var(--src-sidebar-background-hover);
}
#src-sidebar div.files > a.selected {
	background-color: var(--src-sidebar-background-selected);
}

.src-sidebar-title {
	position: sticky;
	top: 0;
	display: flex;
	padding: 8px 8px 0 48px;
	margin-bottom: 7px;
	background: var(--sidebar-background-color);
	border-bottom: 1px solid var(--border-color);
}

#search-button, .settings-menu, .help-menu, button#toggle-all-docs {
	margin-left: var(--button-left-margin);
	display: flex;
	line-height: 1.25;
	min-width: 14px;
}
#sidebar-button {
	display: none;
	line-height: 0;
}
.hide-sidebar #sidebar-button,
.src #sidebar-button {
	display: flex;
	margin-right: 4px;
	position: fixed;
	margin-top: 25px;
	left: 6px;
	height: 34px;
	width: 34px;
	z-index: calc(var(--desktop-sidebar-z-index) + 1);
}
.hide-sidebar #sidebar-button {
	left: 6px;
	background-color: var(--main-background-color);
}
.src #sidebar-button {
	margin-top: 0;
	top: 8px;
	left: 8px;
	border-color: var(--border-color);
}
.hide-sidebar .src #sidebar-button {
	position: static;
}
#search-button > a,
.settings-menu > a,
.help-menu > a,
#sidebar-button > a,
button#toggle-all-docs {
	display: flex;
	align-items: center;
	justify-content: center;
	flex-direction: column;
}
#search-button > a,
.settings-menu > a,
.help-menu > a,
button#toggle-all-docs {
	border: 1px solid transparent;
	border-radius: var(--button-border-radius);
	color: var(--main-color);
}
#search-button > a, .settings-menu > a, .help-menu > a, button#toggle-all-docs {
	width: 80px;
	border-radius: var(--toolbar-button-border-radius);
}
#search-button > a, .settings-menu > a, .help-menu > a {
	min-width: 0;
}
#sidebar-button > a {
	border: solid 1px transparent;
	border-radius: var(--button-border-radius);
	background-color: var(--button-background-color);
	width: 33px;
}
.src #sidebar-button > a {
	background-color: var(--sidebar-background-color);
	border-color: var(--border-color);
}

#search-button > a:hover, #search-button > a:focus-visible,
.settings-menu > a:hover, .settings-menu > a:focus-visible,
.help-menu > a:hover, #help-menu > a:focus-visible,
#sidebar-button > a:hover, #sidebar-button > a:focus-visible,
#copy-path:hover, #copy-path:focus-visible,
button#toggle-all-docs:hover, button#toggle-all-docs:focus-visible {
	border-color: var(--settings-button-border-focus);
	text-decoration: none;
}

#search-button > a::before {
	/* Magnifying glass */
	content: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" \
		width="18" height="18" viewBox="0 0 16 16">\
	    <circle r="5" cy="7" cx="7" style="fill:none;stroke:black;stroke-width:3"/><path \
	    d="M14.5,14.5 12,12" style="fill:none;stroke:black;stroke-width:3;stroke-linecap:round">\
	    </path><desc>Search</desc>\
	    </svg>');
	width: 18px;
	height: 18px;
	filter: var(--settings-menu-filter);
}

.settings-menu > a::before {
	/* Wheel <https://www.svgrepo.com/svg/384069/settings-cog-gear> */
	content: url('data:image/svg+xml,<svg width="18" height="18" viewBox="0 0 12 12" \
	enable-background="new 0 0 12 12" xmlns="http://www.w3.org/2000/svg">\
	<path d="m4.75 0s-0.32117 1.286-0.53906 2.1576c-0.2276 0.1062-0.44625 \
	0.2266-0.64974 0.36979l-2.1328-0.60938-1.25 2.1641s0.9644 0.93231 1.6081 1.5547c-0.010437 \
	0.12158-0.036458 0.23895-0.036458 0.36328s0.026021 0.2417 0.036458 0.36328l-1.6081 \
	1.5547 1.25 2.1641 2.1328-0.60937c0.20349 0.14325 0.42214 0.26359 0.64974 0.36979l0.53906 \
	2.1576h2.5l0.53906-2.1576c0.2276-0.1062 0.44625-0.22654 0.64974-0.36979l2.1328 0.60937 \
	1.25-2.1641-1.6081-1.5547c0.010437-0.12158 0.036458-0.23895 \
	0.036458-0.36328s-0.02602-0.2417-0.03646-0.36328l1.6081-1.5547-1.25-2.1641s-1.2679 \
	0.36194-2.1328 0.60938c-0.20349-0.14319-0.42214-0.26359-0.64974-0.36979l-0.53906-2.1576\
	zm1.25 2.5495c1.9058-2.877e-4 3.4508 1.5447 3.4505 3.4505 2.877e-4 1.9058-1.5447 3.4508-3.4505 \
	3.4505-1.9058 2.877e-4 -3.4508-1.5447-3.4505-3.4505-2.877e-4 -1.9058 1.5447-3.4508 \
	3.4505-3.4505z" fill="black"/>\
	<circle cx="6" cy="6" r="1.75" fill="none" stroke="black" stroke-width="1"/></svg>');
	width: 18px;
	height: 18px;
	filter: var(--settings-menu-filter);
}

button#toggle-all-docs::before {
	/* Custom arrow icon */
	content: url('data:image/svg+xml,<svg width="18" height="18" viewBox="0 0 12 12" \
	enable-background="new 0 0 12 12" xmlns="http://www.w3.org/2000/svg">\
	<path d="M2,2l4,4l4,-4M2,6l4,4l4,-4" stroke="black" fill="none" stroke-width="2px"/></svg>');
	width: 18px;
	height: 18px;
	filter: var(--settings-menu-filter);
}

.help-menu > a::before {
	/* Question mark with "circle" */
	content: url('data:image/svg+xml,\
		<svg width="18" height="18" enable-background="new 0 0 12 12" fill="none" \
		version="1.1" viewBox="0 0 12 12" xmlns="http://www.w3.org/2000/svg"> \
		<path d="m6.007 0.6931c2.515 0 5.074 1.908 5.074 5.335 0 3.55-2.567 5.278-5.088 \
		5.278-2.477 0-5.001-1.742-5.001-5.3 0-3.38 2.527-5.314 5.014-5.314z" stroke="black" \
		stroke-width="1.5"/>\
		<path d="m5.999 7.932c0.3111 0 0.7062 0.2915 0.7062 0.7257 0 0.5458-0.3951 \
		0.8099-0.7081 0.8099-0.2973 0-0.7023-0.266-0.7023-0.7668 0-0.4695 0.3834-0.7688 \
		0.7042-0.7688z" fill="black"/>\
		<path d="m4.281 3.946c0.0312-0.03057 0.06298-0.06029 0.09528-0.08916 0.4833-0.432 1.084-0.6722 \
		1.634-0.6722 1.141 0 1.508 1.043 1.221 1.621-0.2753 0.5542-1.061 0.5065-1.273 \
		1.595-0.05728 0.2939 0.0134 0.9812 0.0134 1.205" fill="none" stroke="black" \
		stroke-width="1.25"/>\
		</svg>');
	width: 18px;
	height: 18px;
	filter: var(--settings-menu-filter);
}

/* design hack to cope with "Help" being far shorter than "Settings" etc */
.help-menu > a {
	width: 74px;
}
.help-menu > a > .label {
	padding-right: 1px;
}
#toggle-all-docs:not(.will-expand) > .label {
	padding-left: 1px;
}

#search-button > a::before,
button#toggle-all-docs::before,
.help-menu > a::before,
.settings-menu > a::before {
	filter: var(--settings-menu-filter);
	margin: 8px;
}

@media not (pointer: coarse) {
	#search-button > a:hover::before,
	button#toggle-all-docs:hover::before,
	.help-menu > a:hover::before,
	.settings-menu > a:hover::before {
		filter: var(--settings-menu-hover-filter);
	}
}

button[disabled]#toggle-all-docs {
	opacity: 0.25;
	border: solid 1px var(--main-background-color);
	background-size: cover;
}

button[disabled]#toggle-all-docs:hover {
	border: solid 1px var(--main-background-color);
	cursor: not-allowed;
}

rustdoc-toolbar span.label {
	font-size: 1rem;
	flex-grow: 1;
	padding-bottom: 4px;
}

#sidebar-button > a::before {
	/* sidebar resizer image */
	content: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22" \
		fill="none" stroke="black">\
		<rect x="1" y="2" width="20" height="18" ry="1.5" stroke-width="1.5" stroke="%23777"/>\
		<circle cx="4.375" cy="5.375" r="1" stroke-width=".75"/>\
		<path d="m7.6121 4v14 M5.375 8.625h-2 m2 3h-2 m2 3h-2" stroke-width="1.25"/></svg>');
	width: 22px;
	height: 22px;
}

#copy-path {
	color: var(--copy-path-button-color);
	background: var(--main-background-color);
	height: var(--copy-path-height);
	width: var(--copy-path-width);
	margin-left: 10px;
	padding: 0;
	padding-left: 2px;
	border: solid 1px transparent;
	border-radius: var(--button-border-radius);
	font-size: 0;
}
#copy-path::before {
	filter: var(--copy-path-img-filter);
	content: var(--clipboard-image);
}
#copy-path:hover::before {
	filter: var(--copy-path-img-hover-filter);
}
#copy-path.clicked::before {
	content: var(--checkmark-image);
}

@keyframes rotating {
	from {
		transform: rotate(0deg);
	}
	to {
		transform: rotate(360deg);
	}
}
.settings-menu.rotate > a img {
	animation: rotating 2s linear infinite;
}

kbd {
	display: inline-block;
	padding: 3px 5px;
	font: 15px monospace;
	line-height: 10px;
	vertical-align: middle;
	border: solid 1px var(--border-color);
	border-radius: 3px;
	color: var(--kbd-color);
	background-color: var(--kbd-background);
	box-shadow: inset 0 -1px 0 var(--kbd-box-shadow-color);
}

ul.all-items > li {
	list-style: none;
}

details.dir-entry {
	padding-left: 4px;
}

details.dir-entry > summary {
	margin: 0 0 0 -4px;
	padding: 0 0 0 4px;
	cursor: pointer;
}

details.dir-entry div.folders, details.dir-entry div.files {
	padding-left: 23px;
}

details.dir-entry a {
	display: block;
}

/* We use CSS containment on the details elements because most sizeable elements
	of the page are contained in one of these. This also makes re-rendering
	faster on document changes (like closing and opening toggles).
	Unfortunately we can't yet specify contain: content or contain: strict
	because the [-]/[+] toggles extend past the boundaries of the <details>
	https://developer.mozilla.org/en-US/docs/Web/CSS/contain */
details.toggle {
	contain: layout;
	position: relative;
}

details.big-toggle {
	/* This makes [-] on the same line as <summary>. */
	contain: inline-size;
}

/* The hideme class is used on summary tags that contain a span with
	placeholder text shown only when the toggle is closed. For instance,
	"Expand description" or "Show methods". */
details.toggle > summary.hideme {
	cursor: pointer;
	font-size: 1rem;
}

details.toggle > summary {
	list-style: none;
	/* focus outline is shown on `::before` instead of this */
	outline: none;
}
details.toggle > summary::-webkit-details-marker,
details.toggle > summary::marker {
	display: none;
}

details.toggle > summary.hideme > span {
	margin-left: 9px;
}

details.toggle > summary::before {
	/* arrow pointing left */
	background: url('data:image/svg+xml,<svg width="16" height="16" viewBox="0 0 12 12" \
	enable-background="new 0 0 12 12" xmlns="http://www.w3.org/2000/svg">\
	<path d="M4,2l4,4l-4,4" stroke="black" fill="none" stroke-width="1px"/></svg>');
	content: "";
	cursor: pointer;
	width: 16px;
	height: 16px;
	display: inline-block;
	vertical-align: middle;
	opacity: .5;
	filter: var(--toggle-filter);
}

details.toggle > summary.hideme > span,
.more-examples-toggle summary, .more-examples-toggle .hide-more {
	color: var(--toggles-color);
}

/* Screen readers see the text version at the end the line.
	Visual readers see the icon at the start of the line, but small and transparent. */
details.toggle > summary::after {
	content: "Expand";
	overflow: hidden;
	width: 0;
	height: 0;
	position: absolute;
}

details.toggle > summary.hideme::after {
	/* "hideme" toggles already have a description when they're contracted */
	content: "";
}

details.toggle > summary:focus::before,
details.toggle > summary:hover::before {
	opacity: 1;
}

details.toggle > summary:focus-visible::before {
	/* The SVG is black, and gets turned white using a filter in the dark themes.
	   Do the same with the outline.
	   The dotted 1px style is copied from Firefox's focus ring style.
	*/
	outline: 1px dotted #000;
	outline-offset: 1px;
}

details.non-exhaustive {
	margin-bottom: 8px;
}

details.toggle > summary.hideme::before {
	position: relative;
}

details.toggle > summary:not(.hideme)::before {
	position: absolute;
	left: -24px;
	top: 4px;
}

.impl-items > details.toggle > summary:not(.hideme)::before,
#main-content > .methods > details.toggle > summary:not(.hideme)::before {
	position: absolute;
	left: -24px;
}

/* We indent items of an impl block to have a visual marker that these items are part
	of this impl block. */
.impl-items > *:not(.item-info),
/* We also indent the first top doc comment the same to still keep an indent on the
	doc block while aligning it with the impl block items. */
.implementors-toggle > .docblock,
/* We indent trait items as well. */
#main-content > .methods > :not(.item-info),
.impl > .item-info,
.impl > .docblock,
.impl + .docblock {
	margin-left: var(--impl-items-indent);
}

details.big-toggle > summary:not(.hideme)::before {
	left: -34px;
	top: 9px;
}

/* When a "hideme" summary is open and the "Expand description" or "Show
	methods" text is hidden, we want the [-] toggle that remains to not
	affect the layout of the items to its right. To do that, we use
	absolute positioning. Note that we also set position: relative
	on the parent <details> to make this work properly. */
details.toggle[open] > summary.hideme {
	position: absolute;
}

details.toggle[open] > summary.hideme > span {
	display: none;
}

details.toggle[open] > summary::before {
	/* arrow pointing down */
	background: url('data:image/svg+xml,<svg width="16" height="16" viewBox="0 0 12 12" \
	enable-background="new 0 0 12 12" xmlns="http://www.w3.org/2000/svg">\
	<path d="M2,4l4,4l4,-4" stroke="black" fill="none" stroke-width="1px"/></svg>');
}

details.toggle[open] > summary::after {
	content: "Collapse";
}

details.toggle:not([open]) > summary .docblock {
	max-height: calc(1.5em + 0.75em);
	overflow-y: hidden;
}
details.toggle:not([open]) > summary .docblock > :first-child {
	max-width: 100%;
	overflow: hidden;
	width: fit-content;
	white-space: nowrap;
	position: relative;
	padding-right: 1em;
}
details.toggle:not([open]) > summary .docblock > :first-child::after {
	content: "…";
	position: absolute;
	right: 0;
	top: 0;
	bottom: 0;
	z-index: 1;
	background-color: var(--main-background-color);
	font: 1rem/1.5 "Source Serif 4", NanumBarunGothic, serif;
	/* To make it look a bit better and not have it stuck to the preceding element. */
	padding-left: 0.2em;
}
details.toggle:not([open]) > summary .docblock > div:first-child::after {
	/* This is to make the "..." always appear at the bottom. */
	padding-top: calc(1.5em + 0.75em - 1.2rem);
}

details.toggle > summary .docblock {
	margin-top: 0.75em;
}

/* This is needed in docblocks to have the "▶" element to be on the same line. */
.docblock summary > * {
	display: inline-block;
}

/* In case there is no documentation before a code block, we need to add some margin at the top
to prevent an overlay between the "collapse toggle" and the information tooltip.
However, it's not needed with smaller screen width because the doc/code block is always put
"one line" below. */
.docblock > .example-wrap:first-child .tooltip {
	margin-top: 16px;
}

/* sidebar button opens modal
	use hamburger button */
.src #sidebar-button > a::before, .sidebar-menu-toggle::before {
	/* hamburger button image */
	content: var(--hamburger-image);
	opacity: 0.75;
	filter: var(--mobile-sidebar-menu-filter);
}
.src #sidebar-button > a:hover {
	background: var(--main-background-color);
}
.sidebar-menu-toggle:hover::before,
.sidebar-menu-toggle:active::before,
.sidebar-menu-toggle:focus::before {
	opacity: 1;
}

/* Media Queries */

@media (max-width: 850px) {
	/* Make sure all the buttons line wrap at the same time */
	#search-tabs .count {
		display: block;
	}
	.side-by-side {
		flex-direction: column-reverse;
	}
	.side-by-side > div {
		width: auto;
	}

	/* Text label takes up too much space at this size. */
	.main-heading {
		grid-template-areas:
			"main-heading-breadcrumbs main-heading-toolbar"
			"main-heading-h1 main-heading-toolbar"
			"main-heading-sub-heading main-heading-toolbar";
	}
	.search-results-main-heading {
		display: grid;
		grid-template-areas:
			"main-heading-breadcrumbs main-heading-toolbar"
			"main-heading-breadcrumbs main-heading-toolbar"
			"main-heading-h1 main-heading-toolbar";
	}
	rustdoc-toolbar {
		margin-top: -10px;
		display: grid;
		grid-template-areas:
			"x settings help"
			"search summary summary";
		grid-template-rows: 35px 1fr;
	}
	.search-results-main-heading rustdoc-toolbar {
		display: grid;
		grid-template-areas:
			"settings help"
			"search search";
	}
	.search-results-main-heading #toggle-all-docs {
		display: none;
	}
	rustdoc-toolbar .settings-menu span.label,
	rustdoc-toolbar .help-menu span.label
	{
		display: none;
	}
	rustdoc-toolbar .settings-menu {
		grid-area: settings;
	}
	rustdoc-toolbar .help-menu {
		grid-area: help;
	}
	rustdoc-toolbar .settings-menu {
		grid-area: settings;
	}
	rustdoc-toolbar #search-button {
		grid-area: search;
	}
	rustdoc-toolbar #toggle-all-docs {
		grid-area: summary;
	}
	rustdoc-toolbar .settings-menu,
	rustdoc-toolbar .help-menu {
		height: 35px;
	}
	rustdoc-toolbar .settings-menu > a,
	rustdoc-toolbar .help-menu > a {
		border-radius: 2px;
		text-align: center;
		width: 34px;
		padding: 5px 0;
	}
	rustdoc-toolbar .settings-menu > a:before,
	rustdoc-toolbar .help-menu > a:before {
		margin: 0 4px;
	}
	#settings.popover {
		top: 16px;
		--popover-arrow-offset: 58px;
	}
	#help.popover {
		top: 16px;
		--popover-arrow-offset: 16px;
	}
}

/* Items on module pages */
.hide-deprecated-items dt.deprecated,
.hide-deprecated-items dt.deprecated + dd,
/* Items on item pages */
.hide-deprecated-items .deprecated,
.hide-deprecated-items .deprecated + .item-info {
	display: none;
}

.deprecated-count {
	display: none;
}
/*
The `:not(:empty)` is a little trick to not have to add conditions in JS to hide/show the marker.
It's entirely based on whether it has content and if the setting is enabled.
*/
.hide-deprecated-items .deprecated-count:not(:empty) {
	display: block;
	margin: 10px 0;
}

/*
WARNING: RUSTDOC_MOBILE_BREAKPOINT MEDIA QUERY
If you update this line, then you also need to update the line with the same warning
in src-script.js and main.js
*/
@media (max-width: 700px) {
	:root {
		--impl-items-indent: 0.7em;
		--topbar-height: 45px;
	}

	/* When linking to an item with an `id` (for instance, by clicking a link in the sidebar,
	   or visiting a URL with a fragment like `#method.new`, we don't want the item to be obscured
	   by the topbar. Anything with an `id` gets scroll-margin-top equal to rustdoc-topbar's size.
	*/
	*[id] {
		scroll-margin-top: var(--topbar-height);
	}

	/* We don't display this button on mobile devices. */
	#copy-path {
		/* display: none; avoided as a layout hack.
			When there's one line, we get an effective line-height of 34px,
			because that's how big the image is, but if the header wraps,
			they're packed more tightly than that. */
		width: 0;
		visibility: hidden;
	}


	/* Pull settings and help up into the top bar. */
	rustdoc-topbar span.label,
	html:not(.hide-sidebar) .rustdoc:not(.src) rustdoc-toolbar .settings-menu > a,
	html:not(.hide-sidebar) .rustdoc:not(.src) rustdoc-toolbar .help-menu > a
	{
		display: none;
	}
	rustdoc-topbar .settings-menu > a,
	rustdoc-topbar .help-menu > a {
		width: 33px;
		line-height: 0;
	}
	rustdoc-topbar .settings-menu > a:hover,
	rustdoc-topbar .help-menu > a:hover {
		border: none;
		background: var(--main-background-color);
		border-radius: 0;
	}
	#settings.popover, #help.popover {
		top: 32px;
		/* The `+ 1px` part is for the bottom border to be visible. */
		height: calc(100vh - var(--topbar-height) + var(--popover-top-margin) - 1px);
	}
	#settings.popover {
		--popover-arrow-offset: 48px;
	}
	#help.popover {
		--popover-arrow-offset: 12px;
	}
	/* The `overflow-y` property is used on an internal content instead of the top one otherwise the
	   little arrow at the top can't be displayed. */
	#settings.popover .settings, #help.popover .content {
		overflow-y: scroll;
		height: 100%;
	}

	.rustdoc {
		/* Sidebar should overlay main content, rather than pushing main content to the right.
		   Turn off `display: flex` on the body element. */
		display: block;
	}

	html:not(.hide-sidebar) main {
		padding-left: 15px;
		padding-top: 0px;
	}

	/* Hide the logo and item name from the sidebar. Those are displayed
	   in the rustdoc-topbar instead. */
	.sidebar .logo-container,
	.sidebar .location,
	.sidebar-resizer {
		display: none;
	}

	.sidebar {
		position: fixed;
		top: var(--topbar-height);
		/* Hide the sidebar offscreen while not in use. Doing this instead of display: none means
		   the sidebar stays visible for screen readers, which is useful for navigation. */
		left: -1000px;
		z-index: 11;
		/* Reduce height slightly to account for mobile topbar. */
		height: calc(100vh - var(--topbar-height));
		/* resize indicator: hide this when on touch or mobile */
		border-right: none;
		width: 100%;
	}
	.sidebar-elems .block li a {
		white-space: wrap;
	}

	/* The source view uses a different design for the sidebar toggle, and doesn't have a topbar,
	   so don't bump down the main content or the sidebar. */
	.src main,
	.rustdoc.src .sidebar {
		top: 0;
		padding: 0;
		height: 100vh;
		border: 0;
	}
	html .src main {
		padding: 18px 0;
	}
	.src .search-form {
		margin-left: 40px;
	}
	.src .main-heading {
		margin-left: 8px;
	}
	.hide-sidebar .search-form {
		margin-left: 32px;
	}
	.hide-sidebar .src .search-form {
		margin-left: 0;
	}

	.sidebar.shown,
	.src-sidebar-expanded .src .sidebar,
	.rustdoc:not(.src) .sidebar:focus-within {
		left: 0;
	}

	rustdoc-topbar > h2 {
		padding-bottom: 0;
		margin: auto;
		overflow: hidden;
		/* Rare exception to specifying font sizes in rem. Since the topbar
		   height is specified in pixels, this also has to be specified in
		   pixels to avoid overflowing the topbar when the user sets a bigger
		   font size. */
		font-size: 24px;
		white-space: nowrap;
		text-overflow: ellipsis;
		text-align: center;
	}

	rustdoc-topbar .logo-container > img {
		max-width: 35px;
		max-height: 35px;
		margin: 5px 0 5px 20px;
	}

	rustdoc-topbar {
		display: flex;
		flex-direction: row;
		position: sticky;
		z-index: 10;
		height: var(--topbar-height);
		width: 100%;
		left: 0;
		top: 0;
	}

	.hide-sidebar rustdoc-topbar {
		display: none;
	}

	.sidebar-menu-toggle {
		/* prevent flexbox shrinking */
		width: 41px;
		min-width: 41px;
		border: none;
		line-height: 0;
	}

	.hide-sidebar .sidebar-menu-toggle {
		display: none;
	}

	.sidebar-elems {
		margin-top: 1em;
	}

	.anchor {
		display: none !important;
	}

	#main-content > details.toggle > summary::before,
	#main-content > div > details.toggle > summary::before {
		left: -11px;
	}

	/* sidebar button becomes topbar button */
	#sidebar-button > a::before {
		content: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" \
			viewBox="0 0 22 22" fill="none" stroke="black">\
			<rect x="1" y="2" width="20" height="18" ry="1.5" stroke-width="1.5" stroke="%23777"/>\
			<g fill="black" stroke="none">\
			<circle cx="4.375" cy="5.375" r="1" stroke-width=".75"/>\
			<circle cx="17.375" cy="5.375" r="1" stroke-width=".75"/>\
			<circle cx="14.375" cy="5.375" r="1" stroke-width=".75"/>\
			</g>\
			<path d="m3 8.375h16" stroke-width="1.25"/></svg>');
		width: 22px;
		height: 22px;
	}
	.sidebar-menu-toggle:hover {
		background: var(--main-background-color);
	}

	/* Display an alternating layout on tablets and phones */
	.search-results > a, .search-results > a > div {
		display: block;
	}

	/* Display an alternating layout on tablets and phones */
	.search-results > a {
		padding: 5px 0px;
	}
	.search-results > a > div.desc, .item-table dd {
		padding-left: 2em;
	}
	.search-results .result-name {
		display: block;
	}
	.search-results .result-name .typename {
		width: initial;
		margin-right: 0;
	}
	.search-results .result-name .typename, .search-results .result-name .path {
		display: inline;
	}

	.src-sidebar-expanded .src .sidebar {
		position: fixed;
		max-width: 100vw;
		width: 100vw;
	}
	.src .src-sidebar-title {
		padding-top: 0;
	}

	details.implementors-toggle:not(.top-doc) > summary  {
		margin-left: 10px;
	}

	.impl-items > details.toggle > summary:not(.hideme)::before,
	#main-content > .methods > details.toggle > summary:not(.hideme)::before {
		left: -20px;
	}

	/* Align summary-nested and unnested item-info gizmos. */
	summary > .item-info {
		margin-left: 10px;
	}
	.impl-items > .item-info {
		margin-left: calc(var(--impl-items-indent) + 10px);
	}

	.src nav.sub {
		margin: 0 0 -25px 0;
		padding: var(--nav-sub-mobile-padding);
	}

	html:not(.src-sidebar-expanded) .src #sidebar-button > a {
		background-color: var(--main-background-color);
	}
	html:not(.src-sidebar-expanded) .src #sidebar-button > a:hover,
	html:not(.src-sidebar-expanded) .src #sidebar-button > a:focus-visible {
		background-color: var(--sidebar-background-color);
	}
}


/* Should have min-width: (N + 1)px where N is the mobile breakpoint above. */
@media (min-width: 701px) {
	/* Places file-link for a scraped example on top of the example to save space.
	   We only do this on large screens so the file-link doesn't overlap too much
		 with the example's content. */
	.scraped-example-title {
		position: absolute;
		z-index: 10;
		background: var(--main-background-color);
		bottom: 8px;
		right: 5px;
		padding: 2px 4px;
		box-shadow: 0 0 4px var(--main-background-color);
	}

	/* Since the screen is wide enough, we show items on their description on the same line. */
	.item-table:not(.reexports) {
		display: grid;
		grid-template-columns: 33% 67%;
	}
	.item-table > dt, .item-table > dd {
		overflow-wrap: anywhere;
	}
	.item-table > dt {
		grid-column-start: 1;
	}
	.item-table > dd {
		grid-column-start: 2;
	}
}

@media print {
	:root {
		--docblock-indent: 0;
	}

	nav.sidebar, nav.sub, .out-of-band, a.src, #copy-path,
	details.toggle[open] > summary::before, details.toggle > summary::before,
	details.toggle.top-doc > summary {
		display: none;
	}

	main {
		padding: 10px;
	}
}

@media (max-width: 464px) {
	:root {
		--docblock-indent: 12px;
	}

	.docblock code {
		overflow-wrap: break-word;
		overflow-wrap: anywhere;
	}

	nav.sub {
		flex-direction: column;
	}

	.search-form {
		align-self: stretch;
	}
}

.variant,
.implementors-toggle > summary,
.impl,
#implementors-list > .docblock,
.impl-items > section,
.impl-items > .toggle > summary,
.methods > section,
.methods > .toggle > summary
{
	margin-bottom: 0.75em;
}
.negative-marker {
	display: none;
}

.variants > .docblock,
.implementors-toggle > .docblock,
.impl-items > .toggle[open]:not(:last-child),
.methods > .toggle[open]:not(:last-child),
.implementors-toggle[open]:not(:last-child) {
	margin-bottom: 2em;
}

#trait-implementations-list .impl-items > .toggle:not(:last-child),
#synthetic-implementations-list .impl-items > .toggle:not(:last-child),
#blanket-implementations-list .impl-items > .toggle:not(:last-child) {
	margin-bottom: 1em;
}

/* Begin: styles for --scrape-examples feature */

.scraped-example-list .scrape-help {
	margin-left: 10px;
	padding: 0 4px;
	font-weight: normal;
	font-size: 12px;
	position: relative;
	bottom: 1px;
	border: 1px solid var(--scrape-example-help-border-color);
	border-radius: 50px;
	color: var(--scrape-example-help-color);
}
.scraped-example-list .scrape-help:hover {
	border-color: var(--scrape-example-help-hover-border-color);
	color: var(--scrape-example-help-hover-color);
}

.scraped-example:not(.expanded) .example-wrap::before,
.scraped-example:not(.expanded) .example-wrap::after {
	content: " ";
	width: 100%;
	height: 5px;
	position: absolute;
	z-index: 1;
}
.scraped-example:not(.expanded) .example-wrap::before {
	top: 0;
	background: linear-gradient(to bottom,
		var(--scrape-example-code-wrapper-background-start),
		var(--scrape-example-code-wrapper-background-end));
}
.scraped-example:not(.expanded) .example-wrap::after {
	bottom: 0;
	background: linear-gradient(to top,
		var(--scrape-example-code-wrapper-background-start),
		var(--scrape-example-code-wrapper-background-end));
}

.scraped-example:not(.expanded) {
	width: 100%;
	overflow-y: hidden;
	margin-bottom: 0;
}

.scraped-example:not(.expanded) {
	overflow-x: hidden;
}

.scraped-example .rust span.highlight {
	background: var(--scrape-example-code-line-highlight);
}
.scraped-example .rust span.highlight.focus {
	background: var(--scrape-example-code-line-highlight-focus);
}

.more-examples-toggle {
	max-width: calc(100% + 25px);
	margin-top: 10px;
	margin-left: -25px;
}

.more-examples-toggle .hide-more {
	margin-left: 25px;
	cursor: pointer;
}

.more-scraped-examples {
	margin-left: 25px;
	position: relative;
}

.toggle-line {
	position: absolute;
	top: 5px;
	bottom: 0;
	right: calc(100% + 10px);
	padding: 0 4px;
	cursor: pointer;
}

.toggle-line-inner {
	min-width: 2px;
	height: 100%;
	background: var(--scrape-example-toggle-line-background);
}

.toggle-line:hover .toggle-line-inner {
	background: var(--scrape-example-toggle-line-hover-background);
}

.more-scraped-examples .scraped-example, .example-links {
	margin-top: 20px;
}

.more-scraped-examples .scraped-example:first-child {
	margin-top: 5px;
}

.example-links ul {
	margin-bottom: 0;
}

/* End: styles for --scrape-examples feature */

/* Begin: styles for themes

	Keep the default light and dark themes synchronized with the ones
	in noscript.css

	The special "Begin theme" and "End theme" below are used by a lot of
	tooling to ensure different themes all define all the variables. Do not
	alter their formatting. */

/*
About `:root:not([data-theme])`: if for any reason the JS is enabled but cannot be loaded,
`noscript` won't be enabled and the doc will have no color applied. To do around this, we
add a selector check that if `data-theme` is not defined, then we apply the light theme
by default.
*/
/* Begin theme: light */
:root[data-theme="light"], :root:not([data-theme]) {
	--main-background-color: white;
	--main-color: black;
	--settings-input-color: #2196f3;
	--settings-input-border-color: #717171;
	--settings-button-color: #000;
	--settings-button-border-focus: #717171;
	--sidebar-background-color: #f5f5f5;
	--sidebar-background-color-hover: #e0e0e0;
	--sidebar-border-color: #ddd;
	--code-block-background-color: #f5f5f5;
	--scrollbar-track-background-color: #dcdcdc;
	--scrollbar-thumb-background-color: rgba(36, 37, 39, 0.6);
	--scrollbar-color: rgba(36, 37, 39, 0.6) #d9d9d9;
	--headings-border-bottom-color: #ddd;
	--border-color: #e0e0e0;
	--button-background-color: #fff;
	--right-side-color: grey;
	--code-attribute-color: #999;
	--toggles-color: #999;
	--toggle-filter: none;
	--mobile-sidebar-menu-filter: none;
	--search-input-focused-border-color: #66afe9;
	--copy-path-button-color: #999;
	--copy-path-img-filter: invert(50%);
	--copy-path-img-hover-filter: invert(35%);
	--code-example-button-color: #7f7f7f;
	--code-example-button-hover-color: #595959;
	--settings-menu-filter: invert(50%);
	--settings-menu-hover-filter: invert(35%);
	--codeblock-error-hover-color: rgb(255, 0, 0);
	--codeblock-error-color: rgba(255, 0, 0, .5);
	--codeblock-ignore-hover-color: rgb(255, 142, 0);
	--codeblock-ignore-color: rgba(255, 142, 0, .6);
	--warning-border-color: #ff8e00;
	--type-link-color: #ad378a;
	--trait-link-color: #6e4fc9;
	--assoc-item-link-color: #3873ad;
	--function-link-color: #ad7c37;
	--macro-link-color: #068000;
	--keyword-link-color: #3873ad;
	--attribute-link-color: #3873ad;
	--mod-link-color: #3873ad;
	--link-color: #3873ad;
	--sidebar-link-color: #356da4;
	--sidebar-current-link-background-color: #fff;
	--search-result-link-focus-background-color: #ccc;
	--search-result-border-color: #aaa3;
	--search-color: #000;
	--search-error-code-background-color: #d0cccc;
	--search-results-alias-color: #000;
	--search-results-grey-color: #999;
	--search-tab-title-count-color: #888;
	--search-tab-button-not-selected-border-top-color: #e6e6e6;
	--search-tab-button-not-selected-background: #e6e6e6;
	--search-tab-button-selected-border-top-color: #0089ff;
	--search-tab-button-selected-background: #fff;
	--stab-background-color: #fff5d6;
	--stab-code-color: #000;
	--code-highlight-kw-color: #8959a8;
	--code-highlight-kw-2-color: #4271ae;
	--code-highlight-lifetime-color: #b76514;
	--code-highlight-prelude-color: #4271ae;
	--code-highlight-prelude-val-color: #c82829;
	--code-highlight-number-color: #718c00;
	--code-highlight-string-color: #718c00;
	--code-highlight-literal-color: #c82829;
	--code-highlight-attribute-color: #c82829;
	--code-highlight-self-color: #c82829;
	--code-highlight-macro-color: #3e999f;
	--code-highlight-question-mark-color: #ff9011;
	--code-highlight-comment-color: #8e908c;
	--code-highlight-doc-comment-color: #4d4d4c;
	--src-line-numbers-span-color: #c67e2d;
	--src-line-number-highlighted-background-color: #fdffd3;
	--target-background-color: #fdffd3;
	--target-border-color: #ad7c37;
	--kbd-color: #000;
	--kbd-background: #fafbfc;
	--kbd-box-shadow-color: #c6cbd1;
	--rust-logo-filter: initial;
	/* match border-color; uses https://codepen.io/sosuke/pen/Pjoqqp */
	--crate-search-div-filter: invert(100%) sepia(0%) saturate(4223%) hue-rotate(289deg)
		brightness(114%) contrast(76%);
	--crate-search-div-hover-filter: invert(44%) sepia(18%) saturate(23%) hue-rotate(317deg)
		brightness(96%) contrast(93%);
	--crate-search-hover-border: #717171;
	--src-sidebar-background-selected: #fff;
	--src-sidebar-background-hover: #e0e0e0;
	--table-alt-row-background-color: #f5f5f5;
	--codeblock-link-background: #eee;
	--scrape-example-toggle-line-background: #ccc;
	--scrape-example-toggle-line-hover-background: #999;
	--scrape-example-code-line-highlight: #fcffd6;
	--scrape-example-code-line-highlight-focus: #f6fdb0;
	--scrape-example-help-border-color: #555;
	--scrape-example-help-color: #333;
	--scrape-example-help-hover-border-color: #000;
	--scrape-example-help-hover-color: #000;
	--scrape-example-code-wrapper-background-start: rgba(255, 255, 255, 1);
	--scrape-example-code-wrapper-background-end: rgba(255, 255, 255, 0);
	--sidebar-resizer-hover: hsl(207, 90%, 66%);
	--sidebar-resizer-active: hsl(207, 90%, 54%);
}
/* End theme: light */

/* Begin theme: dark */
:root[data-theme="dark"] {
	--main-background-color: #353535;
	--main-color: #ddd;
	--settings-input-color: #2196f3;
	--settings-input-border-color: #999;
	--settings-button-color: #000;
	--settings-button-border-focus: #ffb900;
	--sidebar-background-color: #505050;
	--sidebar-background-color-hover: #676767;
	--sidebar-border-color: #999;
	--code-block-background-color: #2A2A2A;
	--scrollbar-track-background-color: #717171;
	--scrollbar-thumb-background-color: rgba(32, 34, 37, .6);
	--scrollbar-color: rgba(32,34,37,.6) #5a5a5a;
	--headings-border-bottom-color: #d2d2d2;
	--border-color: #e0e0e0;
	--button-background-color: #f0f0f0;
	--right-side-color: #d0d0d0;
	--code-attribute-color: #999;
	--toggles-color: #999;
	--toggle-filter: invert(100%);
	--mobile-sidebar-menu-filter: invert(100%);
	--search-input-focused-border-color: #008dfd;
	--copy-path-button-color: #999;
	--copy-path-img-filter: invert(50%);
	--copy-path-img-hover-filter: invert(65%);
	--code-example-button-color: #7f7f7f;
	--code-example-button-hover-color: #a5a5a5;
	--codeblock-error-hover-color: rgb(255, 0, 0);
	--codeblock-error-color: rgba(255, 0, 0, .5);
	--codeblock-ignore-hover-color: rgb(255, 142, 0);
	--codeblock-ignore-color: rgba(255, 142, 0, .6);
	--warning-border-color: #ff8e00;
	--type-link-color: #2dbfb8;
	--trait-link-color: #b78cf2;
	--assoc-item-link-color: #d2991d;
	--function-link-color: #2bab63;
	--macro-link-color: #09bd00;
	--keyword-link-color: #d2991d;
	--attribute-link-color: #d2991d;
	--mod-link-color:  #d2991d;
	--link-color: #d2991d;
	--sidebar-link-color: #fdbf35;
	--sidebar-current-link-background-color: #444;
	--search-result-link-focus-background-color: #616161;
	--search-result-border-color: #aaa3;
	--search-color: #111;
	--search-error-code-background-color: #484848;
	--search-results-alias-color: #fff;
	--search-results-grey-color: #ccc;
	--search-tab-title-count-color: #888;
	--search-tab-button-not-selected-border-top-color: #252525;
	--search-tab-button-not-selected-background: #252525;
	--search-tab-button-selected-border-top-color: #0089ff;
	--search-tab-button-selected-background: #353535;
	--settings-menu-filter: invert(50%);
	--settings-menu-hover-filter: invert(65%);
	--stab-background-color: #314559;
	--stab-code-color: #e6e1cf;
	--code-highlight-kw-color: #ab8ac1;
	--code-highlight-kw-2-color: #769acb;
	--code-highlight-lifetime-color: #d97f26;
	--code-highlight-prelude-color: #769acb;
	--code-highlight-prelude-val-color: #ee6868;
	--code-highlight-number-color: #83a300;
	--code-highlight-string-color: #83a300;
	--code-highlight-literal-color: #ee6868;
	--code-highlight-attribute-color: #ee6868;
	--code-highlight-self-color: #ee6868;
	--code-highlight-macro-color: #3e999f;
	--code-highlight-question-mark-color: #ff9011;
	--code-highlight-comment-color: #8d8d8b;
	--code-highlight-doc-comment-color: #8ca375;
	--src-line-numbers-span-color: #3b91e2;
	--src-line-number-highlighted-background-color: #0a042f;
	--target-background-color: #494a3d;
	--target-border-color: #bb7410;
	--kbd-color: #000;
	--kbd-background: #fafbfc;
	--kbd-box-shadow-color: #c6cbd1;
	--rust-logo-filter: drop-shadow(1px 0 0px #fff)
		drop-shadow(0 1px 0 #fff)
		drop-shadow(-1px 0 0 #fff)
		drop-shadow(0 -1px 0 #fff);
	/* match border-color; uses https://codepen.io/sosuke/pen/Pjoqqp */
	--crate-search-div-filter: invert(94%) sepia(0%) saturate(721%) hue-rotate(255deg)
		brightness(90%) contrast(90%);
	--crate-search-div-hover-filter: invert(69%) sepia(60%) saturate(6613%) hue-rotate(184deg)
		brightness(100%) contrast(91%);
	--crate-search-hover-border: #2196f3;
	--src-sidebar-background-selected: #333;
	--src-sidebar-background-hover: #444;
	--table-alt-row-background-color: #2a2a2a;
	--codeblock-link-background: #333;
	--scrape-example-toggle-line-background: #999;
	--scrape-example-toggle-line-hover-background: #c5c5c5;
	--scrape-example-code-line-highlight: #5b3b01;
	--scrape-example-code-line-highlight-focus: #7c4b0f;
	--scrape-example-help-border-color: #aaa;
	--scrape-example-help-color: #eee;
	--scrape-example-help-hover-border-color: #fff;
	--scrape-example-help-hover-color: #fff;
	--scrape-example-code-wrapper-background-start: rgba(53, 53, 53, 1);
	--scrape-example-code-wrapper-background-end: rgba(53, 53, 53, 0);
	--sidebar-resizer-hover: hsl(207, 30%, 54%);
	--sidebar-resizer-active: hsl(207, 90%, 54%);
}
/* End theme: dark */

/* Begin theme: ayu */
/*
Based off of the Ayu theme
Original by Dempfi (https://github.com/dempfi/ayu)
*/
:root[data-theme="ayu"] {
	--main-background-color: #0f1419;
	--main-color: #c5c5c5;
	--settings-input-color: #ffb454;
	--settings-input-border-color: #999;
	--settings-button-color: #fff;
	--settings-button-border-focus: #e0e0e0;
	--sidebar-background-color: #14191f;
	--sidebar-background-color-hover: rgba(70, 70, 70, 0.33);
	--sidebar-border-color: #5c6773;
	--code-block-background-color: #191f26;
	--scrollbar-track-background-color: transparent;
	--scrollbar-thumb-background-color: #5c6773;
	--scrollbar-color: #5c6773 #24292f;
	--headings-border-bottom-color: #5c6773;
	--border-color: #5c6773;
	--button-background-color: #141920;
	--right-side-color: grey;
	--code-attribute-color: #999;
	--toggles-color: #999;
	--toggle-filter: invert(100%);
	--mobile-sidebar-menu-filter: invert(100%);
	--search-input-focused-border-color: #5c6773; /* Same as `--border-color`. */
	--copy-path-button-color: #fff;
	--copy-path-img-filter: invert(70%);
	--copy-path-img-hover-filter: invert(100%);
	--code-example-button-color: #b2b2b2;
	--code-example-button-hover-color: #fff;
	--codeblock-error-hover-color: rgb(255, 0, 0);
	--codeblock-error-color: rgba(255, 0, 0, .5);
	--codeblock-ignore-hover-color: rgb(255, 142, 0);
	--codeblock-ignore-color: rgba(255, 142, 0, .6);
	--warning-border-color: #ff8e00;
	--type-link-color: #ffa0a5;
	--trait-link-color: #39afd7;
	--assoc-item-link-color: #39afd7;
	--function-link-color: #fdd687;
	--macro-link-color: #a37acc;
	--keyword-link-color: #39afd7;
	--attribute-link-color: #39afd7;
	--mod-link-color: #39afd7;
	--link-color: #39afd7;
	--sidebar-link-color: #53b1db;
	--sidebar-current-link-background-color: transparent;
	--search-result-link-focus-background-color: #3c3c3c;
	--search-result-border-color: #aaa3;
	--search-color: #fff;
	--search-error-code-background-color: #4f4c4c;
	--search-results-alias-color: #c5c5c5;
	--search-results-grey-color: #999;
	--search-tab-title-count-color: #888;
	--search-tab-button-not-selected-border-top-color: none;
	--search-tab-button-not-selected-background: transparent !important;
	--search-tab-button-selected-border-top-color: none;
	--search-tab-button-selected-background: #141920 !important;
	--settings-menu-filter: invert(70%);
	--settings-menu-hover-filter: invert(100%);
	--stab-background-color: #314559;
	--stab-code-color: #e6e1cf;
	--code-highlight-kw-color: #ff7733;
	--code-highlight-kw-2-color: #ff7733;
	--code-highlight-lifetime-color: #ff7733;
	--code-highlight-prelude-color: #69f2df;
	--code-highlight-prelude-val-color: #ff7733;
	--code-highlight-number-color: #b8cc52;
	--code-highlight-string-color: #b8cc52;
	--code-highlight-literal-color: #ff7733;
	--code-highlight-attribute-color: #e6e1cf;
	--code-highlight-self-color: #36a3d9;
	--code-highlight-macro-color: #a37acc;
	--code-highlight-question-mark-color: #ff9011;
	--code-highlight-comment-color: #788797;
	--code-highlight-doc-comment-color: #a1ac88;
	--src-line-numbers-span-color: #5c6773;
	--src-line-number-highlighted-background-color: rgba(255, 236, 164, 0.06);
	--target-background-color: rgba(255, 236, 164, 0.06);
	--target-border-color: rgba(255, 180, 76, 0.85);
	--kbd-color: #c5c5c5;
	--kbd-background: #314559;
	--kbd-box-shadow-color: #5c6773;
	--rust-logo-filter: drop-shadow(1px 0 0px #fff)
		drop-shadow(0 1px 0 #fff)
		drop-shadow(-1px 0 0 #fff)
		drop-shadow(0 -1px 0 #fff);
	/* match border-color; uses https://codepen.io/sosuke/pen/Pjoqqp */
	--crate-search-div-filter: invert(41%) sepia(12%) saturate(487%) hue-rotate(171deg)
		brightness(94%) contrast(94%);
	--crate-search-div-hover-filter: invert(98%) sepia(12%) saturate(81%) hue-rotate(343deg)
		brightness(113%) contrast(76%);
	--crate-search-hover-border: #e0e0e0;
	--src-sidebar-background-selected: #14191f;
	--src-sidebar-background-hover: #14191f;
	--table-alt-row-background-color: #191f26;
	--codeblock-link-background: #333;
	--scrape-example-toggle-line-background: #999;
	--scrape-example-toggle-line-hover-background: #c5c5c5;
	--scrape-example-code-line-highlight: #5b3b01;
	--scrape-example-code-line-highlight-focus: #7c4b0f;
	--scrape-example-help-border-color: #aaa;
	--scrape-example-help-color: #eee;
	--scrape-example-help-hover-border-color: #fff;
	--scrape-example-help-hover-color: #fff;
	--scrape-example-code-wrapper-background-start: rgba(15, 20, 25, 1);
	--scrape-example-code-wrapper-background-end: rgba(15, 20, 25, 0);
	--sidebar-resizer-hover: hsl(34, 50%, 33%);
	--sidebar-resizer-active: hsl(34, 100%, 66%);
}

:root[data-theme="ayu"] h1,
:root[data-theme="ayu"] h2,
:root[data-theme="ayu"] h3,
:root[data-theme="ayu"] h4,
:where(:root[data-theme="ayu"]) h1 a,
:root[data-theme="ayu"] .sidebar h2 a,
:root[data-theme="ayu"] .sidebar h3 a {
	color: #fff;
}

:root[data-theme="ayu"] .docblock code {
	color: #ffb454;
}

:root[data-theme="ayu"] .docblock a > code {
	color: #39AFD7 !important;
}

:root[data-theme="ayu"] .code-header,
:root[data-theme="ayu"] .docblock pre > code,
:root[data-theme="ayu"] pre,
:root[data-theme="ayu"] pre > code,
:root[data-theme="ayu"] .item-info code,
:root[data-theme="ayu"] .rustdoc.source .example-wrap {
	color: #e6e1cf;
}

:root[data-theme="ayu"] .sidebar .current,
:root[data-theme="ayu"] .sidebar .current a,
:root[data-theme="ayu"] .sidebar a:hover,
:root[data-theme="ayu"] #src-sidebar div.files > a:hover,
:root[data-theme="ayu"] details.dir-entry summary:hover,
:root[data-theme="ayu"] #src-sidebar div.files > a:focus,
:root[data-theme="ayu"] details.dir-entry summary:focus,
:root[data-theme="ayu"] #src-sidebar div.files > a.selected {
	color: #ffb44c;
}

:root[data-theme="ayu"] .sidebar-elems .location {
	color: #ff7733;
}

:root[data-theme="ayu"] a[data-nosnippet].line-highlighted {
	color: #708090;
	padding-right: 7px;
	border-right: 1px solid #ffb44c;
}

:root[data-theme="ayu"] .search-results a:hover,
:root[data-theme="ayu"] .search-results a:focus {
	color: #fff !important;
	background-color: #3c3c3c;
}

:root[data-theme="ayu"] .search-results a {
	color: #0096cf;
}

:root[data-theme="ayu"] .search-results a div.desc {
	color: #c5c5c5;
}

:root[data-theme="ayu"] .result-name .primitive > i,
:root[data-theme="ayu"] .result-name .keyword > i {
	color: #788797;
}

:root[data-theme="ayu"] #search-tabs > button.selected {
	border-bottom: 1px solid #ffb44c !important;
	border-top: none;
}
:root[data-theme="ayu"] #search-tabs > button:not(.selected) {
	border: none;
	background-color: transparent !important;
}
:root[data-theme="ayu"] #search-tabs > button:hover {
	border-bottom: 1px solid rgba(242, 151, 24, 0.3);
}

:root[data-theme="ayu"] .settings-menu > a img,
:root[data-theme="ayu"] #sidebar-button > a::before {
	filter: invert(100);
}
/* End theme: ayu */

/* End: styles for themes */
