/* 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 {
	/* extend click target to far edge of screen (mile wide bar) */
	padding-left: calc(1rem + var(--sidebar-elems-left-padding));
}

.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) */
	padding-left: calc(0.25rem + var(--sidebar-elems-left-padding));
	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;
	padding-top: 16px;
	box-sizing: content-box;
	position: relative;
	background-clip: border-box;
	z-index: 1;
}

.sidebar-crate h2 a {
	display: block;
	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;
	/* extend click target to far edge of screen (mile wide bar) */
	padding-left: calc(0.2rem + var(--sidebar-elems-left-padding));
}

.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;
	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 */
