/* 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.woff2") format("woff2"),
		url("FiraSans-Regular.woff") format('woff');
	font-display: swap;
}
@font-face {
	font-family: 'Fira Sans';
	font-style: normal;
	font-weight: 500;
	src: local('Fira Sans Medium'),
		url("FiraSans-Medium.woff2") format("woff2"),
		url("FiraSans-Medium.woff") format('woff');
	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.ttf.woff2") format("woff2"),
		url("SourceSerif4-Regular.ttf.woff") format("woff");
	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.ttf.woff2") format("woff2"),
		url("SourceSerif4-It.ttf.woff") format("woff");
	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.ttf.woff2") format("woff2"),
		url("SourceSerif4-Bold.ttf.woff") format("woff");
	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.ttf.woff2") format("woff2"),
		url("SourceCodePro-Regular.ttf.woff") format("woff");
	font-display: swap;
}
@font-face {
	font-family: 'Source Code Pro';
	font-style: italic;
	font-weight: 400;
	src: url("SourceCodePro-It.ttf.woff2") format("woff2"),
		url("SourceCodePro-It.ttf.woff") format("woff");
	font-display: swap;
}
@font-face {
	font-family: 'Source Code Pro';
	font-style: normal;
	font-weight: 600;
	src: url("SourceCodePro-Semibold.ttf.woff2") format("woff2"),
		url("SourceCodePro-Semibold.ttf.woff") format("woff");
	font-display: swap;
}

/* Avoid using legacy CJK serif fonts in Windows like Batang */
@font-face {
	font-family: 'Noto Sans KR';
	src: url("noto-sans-kr-v13-korean-regular.woff") format("woff");
	font-display: swap;
	unicode-range: U+A960-A97F, U+AC00-D7AF, U+D7B0-D7FF;
}

* {
	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	box-sizing: border-box;
}

/* This part handles the "default" theme being used depending on the system one. */
html {
	content: "";
}
@media (prefers-color-scheme: light) {
	html {
		content: "light";
	}
}
@media (prefers-color-scheme: dark) {
	html {
		content: "dark";
	}
}

/* General structure and fonts */

body {
	font: 16px/1.4 "Source Serif 4", "Noto Sans KR", serif;
	margin: 0;
	position: relative;
	padding: 10px 15px 20px 15px;

	-webkit-font-feature-settings: "kern", "liga";
	-moz-font-feature-settings: "kern", "liga";
	font-feature-settings: "kern", "liga";
}

h1 {
	font-size: 1.5em;
}
h2 {
	font-size: 1.4em;
}
h3 {
	font-size: 1.3em;
}
h1, h2, h3, h4 {
	font-weight: 500;
	margin: 20px 0 15px 0;
	padding-bottom: 6px;
}
h1.fqn {
	display: flex;
	border-bottom: 1px dashed;
	margin-top: 0;

	/* workaround to keep flex from breaking below 700 px width due to the float: right on the nav
	   above the h1 */
	padding-left: 1px;
}
h1.fqn > .in-band > a:hover {
	text-decoration: underline;
}
h2, h3, h4 {
	border-bottom: 1px solid;
}
h3.code-header, h4.code-header {
	font-size: 1em;
	font-weight: 600;
	border: none;
	padding: 0;
	margin: 0;
}
.impl,
.impl-items .method,
.methods .method,
.impl-items .type,
.methods .type,
.impl-items .associatedconstant,
.methods .associatedconstant,
.impl-items .associatedtype,
.methods .associatedtype {
	flex-basis: 100%;
	font-weight: 600;
	margin-top: 16px;
	margin-bottom: 10px;
	position: relative;
}
.impl, .method.trait-impl,
.type.trait-impl,
.associatedconstant.trait-impl,
.associatedtype.trait-impl {
	padding-left: 15px;
}

div.impl-items > div {
	padding-left: 0;
}

h1, h2, h3, h4,
.sidebar, a.source, .search-input, .search-results .result-name,
.content table td:first-child > a,
.item-left > a,
div.item-list .out-of-band, span.since,
#source-sidebar, #sidebar-toggle,
details.rustdoc-toggle > summary::before,
details.undocumented > summary::before,
div.impl-items > div:not(.docblock):not(.item-info),
.content ul.crate a.crate, a.srclink,
/* This selector is for the items listed in the "all items" page. */
#main > ul.docblock > li > a {
	font-family: "Fira Sans", Arial, sans-serif;
}

.content ul.crate a.crate {
	font-size: 16px/1.6;
}

ol, ul {
	padding-left: 25px;
}
ul ul, ol ul, ul ol, ol ol {
	margin-bottom: .6em;
}

p {
	margin: 0 0 .6em 0;
}

summary {
	outline: none;
}

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

td,
th {
	padding: 0;
}

table {
	border-collapse: collapse;
}

button,
input,
optgroup,
select,
textarea {
	color: inherit;
	font: inherit;
	margin: 0;
}

/* end tweaks for normalize.css 8 */

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

code, pre, a.test-arrow, .code-header {
	font-family: "Source Code Pro", monospace;
}
.docblock code, .docblock-short code {
	border-radius: 3px;
	padding: 0 0.1em;
}
.docblock pre code, .docblock-short pre code {
	padding: 0;
	padding-right: 1ex;
}
pre {
	padding: 14px;
}
.type-decl pre {
	overflow-x: auto;
}

.source .content pre {
	padding: 20px;
}

img {
	max-width: 100%;
}

li {
	position: relative;
}

.source .content {
	margin-top: 50px;
	max-width: none;
	overflow: visible;
	margin-left: 0px;
}

nav.sub {
	font-size: 16px;
	text-transform: uppercase;
}

.sidebar {
	width: 200px;
	position: fixed;
	left: 0;
	top: 0;
	bottom: 0;
	overflow: auto;
}

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

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

.sidebar .block > ul > li {
	margin-right: -10px;
}

.content, nav {
	max-width: 960px;
}

/* Everything else */

.hidden {
	display: none !important;
}

.logo-container {
	height: 100px;
	width: 100px;
	position: relative;
	margin: 20px auto;
	display: block;
	margin-top: 10px;
}

.logo-container > img {
	max-width: 100px;
	max-height: 100px;
	height: 100%;
	position: absolute;
	left: 50%;
	top: 50%;
	transform: translate(-50%, -50%);
	display: block;
}

.sidebar .location {
	border: 1px solid;
	font-size: 17px;
	margin: 30px 10px 20px 10px;
	text-align: center;
	word-wrap: break-word;
	font-weight: inherit;
	padding: 0;
}

.sidebar .version {
	font-size: 15px;
	text-align: center;
	border-bottom: 1px solid;
	overflow-wrap: break-word;
	word-wrap: break-word; /* deprecated */
	word-break: break-word; /* Chrome, non-standard */
}

.location:empty {
	border: none;
}

.location a:first-of-type {
	font-weight: 500;
}
.location a:hover {
	text-decoration: underline;
}

.block {
	padding: 0;
	margin-bottom: 14px;
}
.block h2, .block h3 {
	text-align: center;
}
.block ul, .block li {
	margin: 0 10px;
	padding: 0;
	list-style: none;
}

.block a {
	display: block;
	text-overflow: ellipsis;
	overflow: hidden;
	line-height: 15px;
	padding: 7px 5px;
	font-size: 14px;
	font-weight: 300;
	transition: border 500ms ease-out;
}

.sidebar-title {
	border-top: 1px solid;
	border-bottom: 1px solid;
	text-align: center;
	font-size: 17px;
	margin-bottom: 5px;
	font-weight: inherit;
	padding: 0;
}

.sidebar-links {
	margin-bottom: 15px;
}

.sidebar-links > a {
	padding-left: 10px;
	width: 100%;
}

.sidebar-menu {
	display: none;
}

.content {
	padding: 15px 0;
}

.source .content pre.rust {
	white-space: pre;
	overflow: auto;
	padding-left: 0;
}

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

.example-wrap {
	position: relative;
	width: 100%;
}

.example-wrap > pre.line-number {
	overflow: initial;
	border: 1px solid;
	padding: 13px 8px;
	text-align: right;
	border-top-left-radius: 5px;
	border-bottom-left-radius: 5px;
}

.rustdoc:not(.source) .example-wrap > pre:not(.line-number) {
	width: 100%;
	overflow-x: auto;
}

.rustdoc .example-wrap > pre {
	margin: 0;
}

#search {
	margin-left: 230px;
	position: relative;
}

#results > table {
	width: 100%;
	table-layout: fixed;
}

.content > .example-wrap pre.line-numbers {
	position: relative;
	-webkit-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
	user-select: none;
}
.line-numbers span {
	cursor: pointer;
}

.docblock-short {
	overflow-wrap: anywhere;
}
.docblock-short p {
	display: inline;
}

.docblock-short p {
	overflow: hidden;
	text-overflow: ellipsis;
	margin: 0;
}
/* Wrap non-pre code blocks (`text`) but not (```text```). */
.docblock > :not(pre) > code,
.docblock-short > :not(pre) > code {
	white-space: pre-wrap;
}

.docblock h1, .docblock h2, .docblock h3, .docblock h4, .docblock h5 {
	border-bottom: 1px solid;
}

.top-doc .docblock h1 { font-size: 1.3em; }
.top-doc .docblock h2 { font-size: 1.15em; }
.top-doc .docblock h3,
.top-doc .docblock h4,
.top-doc .docblock h5 {
	font-size: 1em;
}

.docblock h1 { font-size: 1em; }
.docblock h2 { font-size: 0.95em; }
.docblock h3, .docblock h4, .docblock h5 { font-size: 0.9em; }

.docblock {
	margin-left: 24px;
	position: relative;
}

.content .out-of-band {
	flex-grow: 0;
	text-align: right;
	font-size: 23px;
	margin: 0px;
	padding: 0 0 0 12px;
	font-weight: normal;
}

.method > .code-header, .trait-impl > .code-header, .invisible > .code-header {
	max-width: calc(100% - 41px);
	display: block;
}

.invisible {
	width: 100%;
	display: inline-block;
}

.content .in-band {
	flex-grow: 1;
	margin: 0px;
	padding: 0px;
}

.in-band > code, .in-band > .code-header {
	display: inline-block;
}

#main {
	position: relative;
}
#main > .since {
	top: inherit;
	font-family: "Fira Sans", Arial, sans-serif;
}

.content table:not(.table-display) {
	border-spacing: 0 5px;
}
.content td { vertical-align: top; }
.content td:first-child { padding-right: 20px; }
.content td p:first-child { margin-top: 0; }
.content td h1, .content td h2 { margin-left: 0; font-size: 1.1em; }
.content tr:first-child td { border-top: 0; }

.docblock table {
	margin: .5em 0;
	width: calc(100% - 2px);
	overflow-x: auto;
	display: block;
}

.docblock table td {
	padding: .5em;
	border: 1px dashed;
}

.docblock table th {
	padding: .5em;
	text-align: left;
	border: 1px solid;
}

.fields + table {
	margin-bottom: 1em;
}

.content .item-list {
	list-style-type: none;
	padding: 0;
}

.content .multi-column {
	-moz-column-count: 5;
	-moz-column-gap: 2.5em;
	-webkit-column-count: 5;
	-webkit-column-gap: 2.5em;
	column-count: 5;
	column-gap: 2.5em;
}
.content .multi-column li { width: 100%; display: inline-block; }

.content > .methods > .method {
	font-size: 1em;
	position: relative;
}
/* Shift "where ..." part of method or fn definition down a line */
.content .method .where,
.content .fn .where,
.content .where.fmt-newline {
	display: block;
	font-size: 0.8em;
}

.content .methods > div:not(.notable-traits):not(.method) {
	margin-left: 40px;
	margin-bottom: 15px;
}

.content .docblock > .impl-items {
	margin-left: 20px;
	margin-top: -34px;
}
.content .docblock >.impl-items .table-display {
	margin: 0;
}
.content .docblock >.impl-items table td {
	padding: 0;
}
.content .docblock > .impl-items .table-display, .impl-items table td {
	border: none;
}

.content .item-info code {
	font-size: 90%;
}

.content .item-info {
	position: relative;
	margin-left: 33px;
}

.sub-variant > div > .item-info {
	margin-top: initial;
}

.content .item-info::before {
	content: '⬑';
	font-size: 25px;
	position: absolute;
	top: -6px;
	left: -19px;
}

.content .impl-items .method, .content .impl-items > .type, .impl-items > .associatedconstant,
.impl-items > .associatedtype, .content .impl-items details > summary > .type,
.impl-items details > summary > .associatedconstant,
.impl-items details > summary > .associatedtype {
	margin-left: 20px;
}

.content .impl-items .docblock, .content .impl-items .item-info {
	margin-bottom: .6em;
}

.content .impl-items > .item-info {
	margin-left: 40px;
}

.methods > .item-info, .content .impl-items > .item-info {
	margin-top: -8px;
}

.impl-items {
	flex-basis: 100%;
}

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

nav:not(.sidebar) {
	border-bottom: 1px solid;
	padding-bottom: 10px;
	margin-bottom: 10px;
}
nav.main {
	padding: 20px 0;
	text-align: center;
}
nav.main .current {
	border-top: 1px solid;
	border-bottom: 1px solid;
}
nav.main .separator {
	border: 1px solid;
	display: inline-block;
	height: 23px;
	margin: 0 20px;
}
nav.sum { text-align: right; }
nav.sub form { display: inline; }

nav.sub, .content {
	margin-left: 230px;
}

a {
	text-decoration: none;
	background: transparent;
}

.small-section-header {
	display: flex;
	justify-content: space-between;
	position: relative;
}

.small-section-header:hover > .anchor {
	display: initial;
}

.in-band:hover > .anchor, .impl:hover > .anchor, .method.trait-impl:hover > .anchor,
.type.trait-impl:hover > .anchor, .associatedconstant.trait-impl:hover > .anchor,
.associatedtype.trait-impl:hover > .anchor {
	display: inline-block;
	position: absolute;
}
.anchor {
	display: none;
	position: absolute;
	left: -7px;
}
.anchor.field {
	left: -5px;
}
.small-section-header > .anchor {
	left: -28px;
	padding-right: 10px; /* avoid gap that causes hover to disappear */
}
.anchor:before {
	content: '\2002\00a7\2002';
}

.docblock a:not(.srclink):not(.test-arrow):hover,
.docblock-short a:not(.srclink):not(.test-arrow):hover, .item-info a {
	text-decoration: underline;
}

.invisible > .srclink,
.method > .code-header + .srclink {
	position: absolute;
	top: 0;
	right: 0;
	font-size: 17px;
	font-weight: normal;
}

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

.item-table {
	display: grid;
	column-gap: 1.2rem;
	row-gap: 0.0rem;
	grid-template-columns: auto 1fr;
	/* align content left */
	justify-items: start;
}

.item-left, .item-right {
	display: block;
}
.item-left {
	grid-column: 1;
}
.item-right {
	grid-column: 2;
}

.search-container {
	position: relative;
}
.search-container > div {
	display: inline-flex;
	width: calc(100% - 63px);
}
#crate-search {
	min-width: 115px;
	margin-top: 5px;
	padding: 6px;
	padding-right: 19px;
	flex: none;
	border: 0;
	border-right: 0;
	border-radius: 4px 0 0 4px;
	outline: none;
	cursor: pointer;
	border-right: 1px solid;
	-moz-appearance: none;
	-webkit-appearance: none;
	/* Removes default arrow from firefox */
	text-indent: 0.01px;
	text-overflow: "";
	background-repeat: no-repeat;
	background-color: transparent;
	background-size: 20px;
	background-position: calc(100% - 1px) 56%;
}
.search-container > .top-button {
	position: absolute;
	right: 0;
	top: 10px;
}
.search-input {
	/* Override Normalize.css: we have margins and do
	 not want to overflow - the `moz` attribute is necessary
	 until Firefox 29, too early to drop at this point */
	-moz-box-sizing: border-box !important;
	box-sizing: border-box !important;
	outline: none;
	border: none;
	border-radius: 1px;
	margin-top: 5px;
	padding: 10px 16px;
	font-size: 17px;
	transition: border-color 300ms ease;
	transition: border-radius 300ms ease-in-out;
	transition: box-shadow 300ms ease-in-out;
	width: 100%;
}

#crate-search + .search-input {
	border-radius: 0 1px 1px 0;
	width: calc(100% - 32px);
}

.search-input:focus {
	border-radius: 2px;
	border: 0;
	outline: 0;
}

.search-results {
	display: none;
	padding-bottom: 2em;
}

.search-results.active {
	display: block;
	/* prevent overhanging tabs from moving the first result */
	clear: both;
}

.search-results .desc > span {
	white-space: nowrap;
	text-overflow: ellipsis;
	overflow: hidden;
	display: block;
}

.search-results > a {
	display: block;
	width: 100%;
	/* 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 #aaa3;
}

.search-results > a > div {
	display: flex;
	flex-flow: row wrap;
}

.search-results .result-name, .search-results div.desc, .search-results .result-description {
	width: 50%;
}
.search-results .result-name {
	padding-right: 1em;
}

.search-results .result-name > span {
	display: inline-block;
	margin: 0;
	font-weight: normal;
}

body.blur > :not(#help) {
	filter: blur(8px);
	-webkit-filter: blur(8px);
	opacity: .7;
}

#help {
	width: 100%;
	height: 100vh;
	position: fixed;
	top: 0;
	left: 0;
	display: flex;
	justify-content: center;
	align-items: center;
}
#help > div {
	flex: 0 0 auto;
	box-shadow: 0 0 6px rgba(0,0,0,.2);
	width: 550px;
	height: auto;
	border: 1px solid;
}
#help dt {
	float: left;
	clear: left;
	display: block;
	margin-right: 0.5rem;
}
#help > div > span {
	text-align: center;
	display: block;
	margin: 10px 0;
	font-size: 18px;
	border-bottom: 1px solid #ccc;
	padding-bottom: 4px;
	margin-bottom: 6px;
}
#help dd { margin: 5px 35px; }
#help .infos { padding-left: 0; }
#help h1, #help h2 { margin-top: 0; }
#help > div div {
	width: 50%;
	float: left;
	padding: 0 20px 20px 17px;;
}

.item-info .stab {
	display: table;
}
.stab {
	border-width: 1px;
	border-style: solid;
	padding: 3px;
	margin-bottom: 5px;
	font-size: 90%;
	font-weight: normal;
}
.stab p {
	display: inline;
}

.stab .emoji {
	font-size: 1.5em;
}

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

.module-item .stab,
.import-item .stab {
	border-radius: 3px;
	display: inline-block;
	font-size: 80%;
	line-height: 1.2;
	margin-bottom: 0;
	margin-left: .3em;
	padding: 2px;
	vertical-align: text-bottom;
}

.module-item.unstable,
.import-item.unstable {
	opacity: 0.65;
}

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

.impl-items .since, .impl .since, .methods .since {
	padding-left: 12px;
	padding-right: 2px;
	position: initial;
}

.impl-items .srclink, .impl .srclink, .methods .srclink {
	/* Override header settings otherwise it's too bold */
	font-size: 17px;
	font-weight: normal;
}

.rightside {
	float: right;
}

.has-srclink {
	font-size: 16px;
	margin-bottom: 12px;
	/* Push the src link out to the right edge consistently */
	justify-content: space-between;
}

.variants_table {
	width: 100%;
}

.variants_table tbody tr td:first-child {
	width: 1%; /* make the variant name as small as possible */
}

td.summary-column {
	width: 100%;
}

.summary {
	padding-right: 0px;
}

pre.rust .question-mark {
	font-weight: bold;
}

a.test-arrow {
	display: inline-block;
	position: absolute;
	padding: 5px 10px 5px 10px;
	border-radius: 5px;
	font-size: 130%;
	top: 5px;
	right: 5px;
	z-index: 1;
}
a.test-arrow:hover{
	text-decoration: none;
}

.section-header:hover a:before {
	position: absolute;
	left: -25px;
	padding-right: 10px; /* avoid gap that causes hover to disappear */
	content: '\2002\00a7\2002';
}

.section-header:hover a {
	text-decoration: none;
}

.section-header a {
	color: inherit;
}

.code-attribute {
	font-weight: 300;
}

.since + .srclink {
	padding-left: 10px;
}

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

.out-of-band > span.since {
	position: initial;
	font-size: 20px;
	margin-right: 5px;
}

.sub-variant, .sub-variant > h3 {
	margin-top: 0px !important;
	padding-top: 1px;
}

#main .sub-variant > h3 {
	font-size: 15px;
	margin-left: 25px;
	margin-bottom: 5px;
}

.sub-variant > div {
	margin-left: 20px;
	margin-bottom: 10px;
}

.sub-variant > div > span {
	display: block;
	position: relative;
}

.toggle-label {
	display: inline-block;
	margin-left: 4px;
	margin-top: 3px;
}

.docblock > .section-header:first-child {
	margin-left: 15px;
	margin-top: 0;
}

.docblock > .section-header:first-child:hover > a:before {
	left: -10px;
}

:target > code, :target > .code-header {
	opacity: 1;
}

:target {
	padding-right: 3px;
}

.information {
	position: absolute;
	left: -25px;
	margin-top: 7px;
	z-index: 1;
}

.tooltip {
	position: relative;
	display: inline-block;
	cursor: pointer;
}

.tooltip::after {
	display: none;
	text-align: center;
	padding: 5px 3px 3px 3px;
	border-radius: 6px;
	margin-left: 5px;
	font-size: 16px;
}

.tooltip.ignore::after {
	content: "This example is not tested";
}
.tooltip.compile_fail::after {
	content: "This example deliberately fails to compile";
}
.tooltip.should_panic::after {
	content: "This example panics";
}
.tooltip.edition::after {
	content: "This code runs with edition " attr(data-edition);
}

.tooltip::before {
	content: " ";
	position: absolute;
	top: 50%;
	left: 16px;
	margin-top: -5px;
	border-width: 5px;
	border-style: solid;
	display: none;
}

.tooltip:hover::before, .tooltip:hover::after {
	display: inline;
}

.tooltip.compile_fail, .tooltip.should_panic, .tooltip.ignore {
	font-weight: bold;
	font-size: 20px;
}

.notable-traits-tooltip {
	display: inline-block;
	cursor: pointer;
}

.notable-traits:hover .notable-traits-tooltiptext,
.notable-traits .notable-traits-tooltiptext.force-tooltip {
	display: inline-block;
}

.notable-traits .notable-traits-tooltiptext {
	display: none;
	padding: 5px 3px 3px 3px;
	border-radius: 6px;
	margin-left: 5px;
	z-index: 10;
	font-size: 16px;
	cursor: default;
	position: absolute;
	border: 1px solid;
}

.notable-traits-tooltip::after {
	/* The margin on the tooltip does not capture hover events,
	   this extends the area of hover enough so that mouse hover is not
	   lost when moving the mouse to the tooltip */
	content: "\00a0\00a0\00a0";
}

.notable-traits .notable, .notable-traits .docblock {
	margin: 0;
}

.notable-traits .notable {
	margin: 0;
	margin-bottom: 13px;
	font-size: 19px;
	font-weight: 600;
}

.notable-traits .docblock code.content{
	margin: 0;
	padding: 0;
	font-size: 20px;
}

/* Example code has the "Run" button that needs to be positioned relative to the pre */
pre.rust.rust-example-rendered {
	position: relative;
}

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

.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;
}

#titles {
	height: 35px;
}

#titles > button {
	float: left;
	width: 33.3%;
	text-align: center;
	font-size: 18px;
	cursor: pointer;
	border: 0;
	border-top: 2px solid;
}

#titles > button:not(:last-child) {
	margin-right: 1px;
	width: calc(33.3% - 1px);
}

#titles > button > div.count {
	display: inline-block;
	font-size: 16px;
}

.notable-traits {
	cursor: pointer;
	z-index: 2;
	margin-left: 5px;
}

#all-types {
	text-align: center;
	border: 1px solid;
	margin: 0 10px;
	margin-bottom: 10px;
	display: block;
	border-radius: 7px;
}
#all-types > p {
	margin: 5px 0;
}

#sidebar-toggle {
	position: fixed;
	top: 30px;
	left: 300px;
	z-index: 10;
	padding: 3px;
	border-top-right-radius: 3px;
	border-bottom-right-radius: 3px;
	cursor: pointer;
	font-weight: bold;
	transition: left .5s;
	font-size: 1.2em;
	border: 1px solid;
	border-left: 0;
}
#source-sidebar {
	position: fixed;
	top: 0;
	bottom: 0;
	left: 0;
	width: 300px;
	z-index: 1;
	overflow: auto;
	transition: left .5s;
	border-right: 1px solid;
}
#source-sidebar > .title {
	font-size: 1.5em;
	text-align: center;
	border-bottom: 1px solid;
	margin-bottom: 6px;
}

.theme-picker {
	position: absolute;
	left: 211px;
	top: 19px;
}

.theme-picker button {
	outline: none;
}

#settings-menu, #help-button {
	position: absolute;
	top: 10px;
}

#settings-menu {
	right: 0;
	outline: none;
}

#theme-picker, #settings-menu, #help-button, #copy-path {
	padding: 4px;
	width: 27px;
	height: 29px;
	border: 1px solid;
	border-radius: 3px;
	cursor: pointer;
}

#help-button {
	right: 30px;
	font-family: "Fira Sans", Arial, sans-serif;
	text-align: center;
	font-size: 17px;
	padding-top: 2px;
}

#copy-path {
	background: initial;
	margin-left: 10px;
	padding: 0;
	padding-left: 2px;
	border: 0;
}

#theme-choices {
	display: none;
	position: absolute;
	left: 0;
	top: 28px;
	border: 1px solid;
	border-radius: 3px;
	z-index: 1;
	cursor: pointer;
}

#theme-choices > button {
	border: none;
	width: 100%;
	padding: 4px 8px;
	text-align: center;
	background: rgba(0,0,0,0);
}

#theme-choices > button:not(:first-child) {
	border-top: 1px solid;
}

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

.hidden-by-impl-hider,
.hidden-by-usual-hider {
	/* important because of conflicting rule for small screens */
	display: none !important;
}

#implementations-list > h3 > span.in-band {
	width: 100%;
}

.table-display {
	width: 100%;
	border: 0;
	border-collapse: collapse;
	border-spacing: 0;
	font-size: 16px;
}

.table-display tr td:first-child {
	padding-right: 0;
}

.table-display tr td:last-child {
	float: right;
}
.table-display .out-of-band {
	position: relative;
	font-size: 19px;
	display: block;
}
#implementors-list > .impl-items .table-display .out-of-band {
	font-size: 17px;
}

.table-display td:hover .anchor {
	display: block;
	top: 2px;
	left: -5px;
}

#main > ul {
	padding-left: 10px;
}
#main > ul > li {
	list-style: none;
}

.non-exhaustive {
	margin-bottom: 1em;
}

div.children {
	padding-left: 27px;
	display: none;
}
div.name {
	cursor: pointer;
	position: relative;
	margin-left: 16px;
}
div.files > a {
	display: block;
	padding: 0 3px;
}
div.files > a:hover, div.name:hover {
	background-color: #a14b4b;
}
div.name.expand + .children {
	display: block;
}
div.name::before {
	content: "\25B6";
	padding-left: 4px;
	font-size: 0.7em;
	position: absolute;
	left: -16px;
	top: 4px;
}
div.name.expand::before {
	transform: rotate(90deg);
	left: -15px;
	top: 2px;
}

/* 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.rustdoc-toggle > summary.hideme {
	cursor: pointer;
}

details.rustdoc-toggle > summary, details.undocumented > summary {
	list-style: none;
}
details.rustdoc-toggle > summary::-webkit-details-marker,
details.rustdoc-toggle > summary::marker,
details.undocumented > summary::-webkit-details-marker,
details.undocumented > summary::marker {
	display: none;
}

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

details.rustdoc-toggle > summary::before {
	content: "[+]";
	font-weight: 300;
	font-size: 0.8em;
	letter-spacing: 1px;
	cursor: pointer;
}

details.rustdoc-toggle.top-doc > summary,
details.rustdoc-toggle.top-doc > summary::before,
details.rustdoc-toggle.non-exhaustive > summary,
details.rustdoc-toggle.non-exhaustive > summary::before {
	font-family: 'Fira Sans';
	font-size: 16px;
}

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

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

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

.impl-items > details.rustdoc-toggle > summary:not(.hideme)::before,
.undocumented > details.rustdoc-toggle > summary:not(.hideme)::before {
	position: absolute;
	left: -2px;
}

/* 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.rustdoc-toggle[open] > summary.hideme {
	position: absolute;
}

details.rustdoc-toggle, details.undocumented {
	position: relative;
}

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

details.rustdoc-toggle[open] > summary::before {
	content: "[−]";
	display: inline;
}

details.undocumented > summary::before {
	content: "[+] Show hidden undocumented items";
	cursor: pointer;
	font-size: 16px;
	font-weight: 300;
}

details.undocumented[open] > summary::before {
	content: "[−] Hide undocumented items";
}

/* Media Queries */

@media (min-width: 701px) {
	/* 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 > .information:first-child > .tooltip {
		margin-top: 16px;
	}
}

@media (max-width: 700px) {
	body {
		padding-top: 0px;
	}

	.rustdoc > .sidebar {
		height: 45px;
		min-height: 40px;
		margin: 0;
		margin-left: -15px;
		padding: 0 15px;
		position: static;
		z-index: 11;
	}

	.sidebar > .location {
		float: right;
		margin: 0px;
		margin-top: 2px;
		padding: 3px 10px 1px 10px;
		min-height: 39px;
		background: inherit;
		text-align: left;
		font-size: 24px;
	}

	.sidebar .location:empty {
		padding: 0;
	}

	.sidebar .logo-container {
		width: 35px;
		height: 35px;
		margin-top: 5px;
		margin-bottom: 5px;
		float: left;
		margin-left: 50px;
	}

	.sidebar .logo-container > img {
		max-width: 35px;
		max-height: 35px;
	}

	.sidebar-menu {
		position: fixed;
		z-index: 10;
		font-size: 2rem;
		cursor: pointer;
		width: 45px;
		left: 0;
		text-align: center;
		display: block;
		border-bottom: 1px solid;
		border-right: 1px solid;
		height: 45px;
	}

	.rustdoc.source > .sidebar > .sidebar-menu {
		display: none;
	}

	/* We do NOT hide this element so that alternative device readers still have this information
	   available. */
	.sidebar-elems {
		position: fixed;
		z-index: 1;
		top: 45px;
		bottom: 0;
		width: 246px;
		/* We move the sidebar to the left by its own width so it doesn't appear. */
		left: -246px;
		overflow-y: auto;
		border-right: 1px solid;
	}

	.sidebar > .block.version {
		overflow: hidden;
		border-bottom: none;
		margin-bottom: 0;
		height: 100%;
		padding-left: 12px;
	}
	.sidebar > .block.version > div.narrow-helper {
		float: left;
		width: 1px;
		height: 100%;
	}
	.sidebar > .block.version > p {
		/* hide Version text if too narrow */
		margin: 0;
		min-width: 55px;
		/* vertically center */
		display: flex;
		align-items: center;
		height: 100%;
	}

	nav.sub {
		width: calc(100% - 32px);
		float: right;
	}

	.content {
		margin-left: 0px;
	}

	#main, #search {
		margin-top: 45px;
		padding: 0;
	}

	#search {
		margin-left: 0;
	}

	.anchor {
		display: none !important;
	}

	.theme-picker {
		left: 10px;
		top: 54px;
		z-index: 1;
	}

	.notable-traits {
		position: absolute;
		left: -22px;
		top: 24px;
	}

	#titles > button > div.count {
		float: left;
		width: 100%;
	}

	#titles {
		height: 50px;
	}

	.sidebar.mobile {
		position: fixed;
		width: 100%;
		margin-left: 0;
		background-color: rgba(0,0,0,0);
		height: 100%;
	}
	/*
	This allows to prevent the version text to overflow the sidebar title on mobile mode when the
	sidebar is displayed (after clicking on the "hamburger" button).
	*/
	.sidebar.mobile > div.version {
		overflow: hidden;
		max-height: 33px;
	}
	.sidebar {
		width: calc(100% + 30px);
	}

	.show-it, .sidebar-elems:focus-within {
		z-index:  2;
		left: 0;
	}

	.show-it > .block.items {
		margin: 8px 0;
	}

	.show-it > .block.items > ul {
		margin: 0;
	}

	.show-it > .block.items > ul > li {
		text-align: center;
		margin: 2px 0;
	}

	.show-it > .block.items > ul > li > a {
		font-size: 21px;
	}

	/* Because of ios, we need to actually have a full height sidebar title so the
	 * actual sidebar can show up. But then we need to make it transparent so we don't
	 * hide content. The filler just allows to create the background for the sidebar
	 * title. But because of the absolute position, I had to lower the z-index.
	 */
	#sidebar-filler {
		position: fixed;
		left: 45px;
		width: calc(100% - 45px);
		top: 0;
		height: 45px;
		z-index: -1;
		border-bottom: 1px solid;
	}

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

	#all-types {
		margin: 10px;
	}

	#sidebar-toggle {
		top: 100px;
		width: 30px;
		font-size: 1.5rem;
		text-align: center;
		padding: 0;
	}

	#source-sidebar {
		z-index: 11;
	}

	#main > .line-numbers {
		margin-top: 0;
	}

	.notable-traits .notable-traits-tooltiptext {
		left: 0;
		top: 100%;
	}

	/* We don't display the help button on mobile devices. */
	#help-button {
		display: none;
	}

	/* Display an alternating layout on tablets and phones */
	.item-table {
		display: flex;
		flex-flow: column wrap;
	}
	.item-left, .item-right {
		width: 100%;
	}

	.search-container > div {
		width: calc(100% - 32px);
	}

	/* Display an alternating layout on tablets and phones */
	.search-results > a {
		border-bottom: 1px solid #aaa9;
		padding: 5px 0px;
	}
	.search-results .result-name, .search-results div.desc, .search-results .result-description {
		width: 100%;
	}
	.search-results div.desc, .search-results .result-description, .item-right {
		padding-left: 2em;
	}
}

@media print {
	nav.sub, .content .out-of-band {
		display: none;
	}
}

@media (max-width: 464px) {
	#titles, #titles > button {
		height: 73px;
	}

	/* This is to prevent the search bar from being underneath the <section>
	 * element following it.
	 */
	#main, #search {
		margin-top: 100px;
	}

	#main > table:not(.table-display) td {
		word-break: break-word;
		width: 50%;
	}

	.search-container > div {
		display: block;
		width: calc(100% - 37px);
	}

	#crate-search {
		width: 100%;
		border-radius: 4px;
		border: 0;
	}

	#crate-search + .search-input {
		width: calc(100% + 71px);
		margin-left: -36px;
	}

	#theme-picker, #settings-menu {
		padding: 5px;
		width: 31px;
		height: 31px;
	}

	#theme-picker {
		margin-top: -2px;
	}

	#settings-menu {
		top: 7px;
	}

	.docblock {
		margin-left: 12px;
	}
}
