@charset "UTF-8";
/*
 * Soteria Custom odoc Theme
 * Aligned with https://soteria-tools.com design system
 *
 * Copyright (c) 2024-2026 Soteria Tools Ltd. All rights reserved.
 * Based on odoc default theme, ISC license.
 */

/* ============================================================================
   FONTS
   ============================================================================ */

/* Google Fonts: Inter (body) and Fira Code (monospace) */
@import url("https://fonts.googleapis.com/css2?family=Fira+Code:wght@300..700&family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap");

/* ============================================================================
   CSS VARIABLES / DESIGN TOKENS
   Matching Soteria website design system
   ============================================================================ */

:root {
	/* Primary brand colors */
	--color-theme: #02066f;
	--color-theme-rgb: 2, 6, 111;
	--color-secondary: #e2cb2a;
	--color-secondary-rgb: 226, 203, 42;
	--color-secondary-light: #efe255;

	/* Backgrounds */
	--color-background: #ffffff;
	--color-background-primary: #eaeaf9;
	--color-background-secondary: #f3eaab;

	/* Text colors */
	--color-text: #000000;
	--color-text-muted: #666666;
	--color-text-light: #888888;

	/* Code block colors (GitHub Dark theme) */
	--code-bg: #0d1117;
	--code-header-bg: #333333;
	--code-color: #e6edf3;

	/* Shadows */
	--box-shadow-light: 0 0 4px 4px hsla(0, 0%, 0%, 0.04);
	--box-shadow:
		0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 0 4px 4px hsla(0, 0%, 0%, 0.04);
	--box-shadow-hover:
		0 0 0 1px hsla(0, 0%, 0%, 0.05), 0 0 4px 4px hsla(0, 0%, 0%, 0.04),
		0 4px 8px 8px hsla(0, 0%, 0%, 0.02);

	/* Odoc-specific mappings */
	--main-background: var(--color-background);
	--color: var(--color-text);
	--link-color: var(--color-theme);
	--anchor-color: #cccccc;
	--anchor-hover: var(--color-theme);
	--target-background: rgba(2, 6, 111, 0.08);
	--target-border: var(--color-theme);

	/* Header */
	--header-height: 56px;
	--header-bg: var(--color-theme);

	/* TOC / Sidebar */
	--toc-background: var(--color-background-primary);
	--toc-color: var(--color-text);
	--toc-before-color: var(--color-text-muted);
	--toc-list-border: #cccccc;

	/* Spec blocks */
	--spec-summary-background: #f8f9fa;
	--spec-summary-border-color: var(--color-theme);
	--spec-summary-hover-background: #f0f1f3;
	--spec-details-after-background: var(--color-secondary);
	--spec-details-after-border: #e0e0e0;
	--spec-label-color: var(--color-theme);

	/* Search */
	--search-bar-height: 36px;
	--search-padding-top: 1rem;
	--search-highlight-color: var(--color-theme);
	--search-snake-color: var(--color-secondary);
	--search-results-border: #e0e0e0;
	--search-results-shadow: rgba(0, 0, 0, 0.1);

	/* Source code syntax highlighting */
	--source-code-comment: #8b949e;
	--source-code-docstring: #a5d6ff;
	--source-code-lident: #e6edf3;
	--source-code-uident: #79c0ff;
	--source-code-literal: #a5d6ff;
	--source-code-keyword: #ff7b72;
	--source-code-underscore: #8b949e;
	--source-code-operator: #d2a8ff;
	--source-code-parens: #ffa657;
	--source-code-separator: #ffa657;

	/* Code inline */
	--li-code-background: var(--color-theme);
	--li-code-color: #ffffff;

	/* Pre/code borders */
	--pre-border-color: transparent;

	/* Source line numbers */
	--source-line-column: #8b949e;
	--source-line-column-bg: #161b22;
}

/* ============================================================================
   CSS RESET
   ============================================================================ */

html,
body,
div,
span,
applet,
object,
iframe,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
a,
abbr,
acronym,
address,
big,
cite,
code,
del,
dfn,
em,
img,
ins,
kbd,
q,
s,
samp,
small,
strike,
strong,
sub,
sup,
tt,
var,
b,
u,
i,
center,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td,
article,
aside,
canvas,
details,
embed,
figure,
figcaption,
footer,
header,
hgroup,
menu,
nav,
output,
ruby,
section,
summary,
time,
mark,
audio,
video {
	padding: 0;
	border: 0;
	font: inherit;
	vertical-align: baseline;
}

table {
	border-collapse: collapse;
	border-spacing: 0;
}

*,
*:before,
*:after {
	box-sizing: border-box;
}

/* ============================================================================
   BASE STYLES
   ============================================================================ */

html {
	font-size: 18px;
	scroll-behavior: smooth;
	scroll-padding-top: calc(
		var(--header-height) + var(--search-bar-height) +
			var(--search-padding-top) + 1em
	);
}

@media (max-width: 600px) {
	html {
		font-size: 16px;
		scroll-padding-top: 30px;
	}
}

body {
	text-align: left;
	color: var(--color);
	background-color: var(--main-background);
	font-family:
		"Inter",
		system-ui,
		-apple-system,
		BlinkMacSystemFont,
		"Segoe UI",
		Roboto,
		Oxygen,
		Ubuntu,
		Cantarell,
		"Open Sans",
		"Helvetica Neue",
		sans-serif;
	text-wrap: pretty;
	line-height: 1.5;
	margin: 0;
}

/* Root */

.content .by-name {
	margin: 12px 24px;
}

/* ============================================================================
   BRANDED HEADER BAR
   Using CSS pseudo-element for branding without HTML injection
   ============================================================================ */

body.odoc::before {
	content: "";
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	height: var(--header-height);
	background: var(--header-bg);
	z-index: 1000;
	/* Noise texture effect via SVG filter */
	background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 400 400' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E");
	background-blend-mode: soft-light;
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
}

/* Add Soteria logo text via ::after pseudo-element */
body.odoc::after {
	content: "";
	position: fixed;
	top: 0;
	left: 24px;
	width: 10em;
	height: var(--header-height);
	background-image: url("data:image/png;base64,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");
	background-repeat: no-repeat;
	background-size: auto 60%;
	background-position: left center;

	color: #ffffff;

	z-index: 1001;
	pointer-events: none;
}

/* Push body content down to account for fixed header */
body.odoc {
	padding-top: calc(var(--header-height) + 16px);
}

/* ============================================================================
   LAYOUT GRID
   ============================================================================ */

body.odoc {
	margin-left: auto;
	margin-right: auto;
	padding-left: 12px;
	padding-right: 12px;
	max-width: 800px;
	display: grid;
	grid-template-columns: 1fr;
	grid-template-areas:
		"search-bar"
		"nav"
		"preamble"
		"toc-local"
		"content"
		"toc-global";
	gap: 0;
}

@media (min-width: 800px) {
	body.odoc {
		max-width: 1100px;
		padding-left: 24px;
		padding-right: 24px;
		grid-template-columns: 1fr 280px;
		grid-template-areas:
			"search-bar search-bar"
			"nav        nav"
			"preamble   toc-local"
			"content    toc-local"
			"toc-global toc-global";
		column-gap: 32px;
	}
}

@media (min-width: 1200px) {
	body.odoc {
		max-width: 1400px;
		grid-template-columns: 260px 1fr 260px;
		grid-template-areas:
			"search-bar search-bar search-bar"
			"nav        nav        nav"
			"toc-global preamble   toc-local"
			"toc-global content    toc-local";
	}
}

@media (min-width: 1800px) {
	body.odoc {
		max-width: 1600px;
	}
}

.odoc-content {
	grid-area: content;
}

.odoc-content > *:first-child {
	margin-top: 0;
}

header.odoc-preamble {
	grid-area: preamble;
}

.odoc-preamble > *:first-child {
	padding-top: 0;
	margin-top: 0;
}

header.odoc-preamble:has(> :nth-child(2)) {
	margin-bottom: 30px;
}

/* ============================================================================
   NAVIGATION
   ============================================================================ */

nav.odoc-nav {
	grid-area: nav;
	padding-top: 16px;
	padding-bottom: 16px;
	font-family: "Inter", sans-serif;
	font-size: 0.9rem;
	color: var(--color-text-muted);
}

nav.odoc-nav a {
	color: var(--link-color);
	text-decoration: none;
	transition: opacity 0.2s ease;
}

nav.odoc-nav a:hover {
	opacity: 0.5;
	box-shadow: none;
}

/* ============================================================================
   TYPOGRAPHY
   ============================================================================ */

b,
strong {
	font-weight: 600;
}

i,
em {
	font-style: italic;
}

em.odd,
i em {
	font-style: normal;
}

sup {
	vertical-align: super;
}

sub {
	vertical-align: sub;
}

sup,
sub {
	font-size: 0.75em;
	line-height: 0;
	margin-left: 0.2ex;
}

p {
	line-height: 1.5;
	text-wrap: pretty;
}

ul,
ol {
	list-style-position: outside;
	padding-inline-start: 20px;
}

ul > li {
	margin-left: 0;
}

ol > li {
	margin-left: 5px;
}

li > *:first-child {
	margin-top: 0;
}

/* ============================================================================
   HEADINGS
   ============================================================================ */

h1,
h2,
h3,
h4,
h5,
h6,
.h7,
.h8,
.h9,
.h10 {
	font-family: "Inter", sans-serif;
	font-weight: 600;
	padding-top: 0.1em;
	line-height: 1.2;
	overflow-wrap: break-word;
	color: var(--color-theme);
}

.odoc-preamble h1 {
	margin-top: 10px;
}

h1 {
	font-weight: 700;
	font-size: 2em;
	margin-bottom: 0.5em;
	padding-bottom: 0.3em;
	border-bottom: 3px solid var(--color-background-primary);
}

h2 {
	font-size: 1.5em;
	margin-top: 1.5em;
	margin-bottom: 0.5em;
}

h3 {
	font-size: 1.25em;
	margin-top: 1.2em;
	margin-bottom: 0.4em;
}

h4 {
	font-size: 1.1em;
	margin-top: 1em;
	margin-bottom: 0.3em;
}

h1 code,
h2 code,
h3 code,
h4 code {
	font-size: inherit;
	font-weight: inherit;
}

small,
.font_small {
	font-size: 0.8em;
}

/* ============================================================================
   LINKS AND ANCHORS
   ============================================================================ */

a {
	text-decoration: none;
	color: var(--link-color);
	transition: opacity 0.2s ease;
}

a:hover:not(.img-link) {
	opacity: 0.5;
	box-shadow: none;
}

a:visited {
	color: var(--link-color);
}

/* Source code links don't override syntax colors */
.odoc-src pre a {
	color: inherit;
}

/* Anchor links */
*:hover > a.anchor {
	visibility: visible;
}

a.anchor:before {
	content: "#";
}

a.anchor:hover {
	box-shadow: none;
	text-decoration: none;
	color: var(--anchor-hover);
	opacity: 1;
}

a.anchor {
	opacity: 0;
	position: absolute;
	margin-left: -1.3em;
	font-weight: normal;
	font-style: normal;
	padding-right: 1em;
	padding-left: 0.4em;
	color: var(--anchor-color);
	transition:
		color 0.2s ease,
		opacity 0.2s ease;
}

.spec > a.anchor {
	margin-left: -2.3em;
	padding-right: 0.9em;
}

/* Target highlighting */
:not(.spec):target,
.current_unit {
	position: relative;
}

:not(.spec):target::before,
.current_unit::before {
	content: "";
	display: block;
	position: absolute;
	inset: -8px;
	z-index: -1;
	background-color: var(--target-background) !important;
	border-radius: 4px;
	border: 1px solid var(--target-border) !important;
}

.spec:target {
	background-color: var(--target-background);
	box-shadow: var(--box-shadow);
}

/* Unresolved references */
.xref-unresolved {
	color: #cf222e;
}

.xref-unresolved:hover {
	box-shadow: 0 1px 0 0 #cf222e;
}

/* Source links */
a.source_link {
	float: right;
	color: var(--color-text-light);
	font-family: "Inter", sans-serif;
	font-size: 0.85rem;
	opacity: 0.7;
}

a.source_link:hover {
	opacity: 1;
}

/* ============================================================================
   CODE AND PREFORMATTED TEXT
   ============================================================================ */

tt,
code,
pre {
	font-family: "Fira Code", monospace;
	font-weight: 400;
}

.odoc code {
	white-space: pre-wrap;
	font-size: 0.85em;
}

/* Inline code in paragraphs and lists */
.odoc p code,
.odoc li code {
	background-color: var(--li-code-background);
	color: var(--li-code-color);
	border-radius: 4px;
	padding: 0.1em 0.4em;
	white-space: nowrap;
}

.odoc .spec code,
.odoc .spec code {
	background: none;
	color: inherit;
	padding: 0;
}

p a > code,
li a > code {
	color: var(--li-code-color);
}

/* Code blocks */
.odoc pre {
	padding: 1em;
	border: none;
	border-radius: 6px;
	overflow-x: auto;
	text-indent: initial;
	background-color: var(--code-bg);
	color: var(--code-color);
	box-shadow: var(--box-shadow);
}

.odoc pre code {
	font-size: 0.85rem;
	background: transparent;
	color: inherit;
	padding: 0;
}

/* Keyword styling */
.keyword {
	font-weight: 500;
}

.arrow {
	white-space: nowrap;
}

/* Comment delimiters - hidden but accessible */
.comment-delim {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* ============================================================================
   MODULE SPECS AND TYPE DEFINITIONS
   ============================================================================ */

.spec {
	background-color: var(--spec-summary-background);
	border-radius: 8px;
	border: none;
	border-left: 4px solid var(--spec-summary-border-color);
	padding: 10px 12px;
	transition:
		background-color 0.2s ease,
		box-shadow 0.2s ease;
}

.spec .label,
.spec .optlabel {
	color: var(--spec-label-color);
}

li:not(:last-child) > .def-doc {
	margin-bottom: 15px;
}

/* Spacing between items */
div.odoc-spec,
.odoc-include {
	margin-bottom: 2em;
}

.spec.type .variant p,
.spec.type .record p {
	margin: 5px;
}

.spec.type .variant,
.spec.type .record {
	margin-left: 2ch;
}

.spec.type li.variant,
.spec.type li.record {
	list-style: none;
}

.spec.type .record > code,
.spec.type .variant > code {
	min-width: 40%;
}

.spec.type > ol {
	margin-top: 0;
	margin-bottom: 0;
}

.spec.type .record > .def-doc,
.spec.type .variant > .def-doc {
	min-width: 50%;
	margin: 4px 0;
	padding: 4px 8px;
	margin-left: 10%;
	border-radius: 4px;
	background: var(--main-background);
}

div.def {
	margin-top: 0;
	text-indent: -2ex;
	padding-left: 2ex;
}

div.def-doc > *:first-child {
	margin-top: 0;
}

/* ============================================================================
   COLLAPSIBLE INCLUDES AND MODULES
   ============================================================================ */

.odoc-include details {
	position: relative;
	padding-right: 1em;
}

.odoc-include.shadowed-include {
	display: none;
}

.odoc-include details:after {
	z-index: -100;
	display: block;
	content: " ";
	position: absolute;
	border-radius: 0 4px 4px 0;
	right: 0px;
	top: 1px;
	bottom: 1px;
	width: 4px;
	background: var(--spec-details-after-background);
}
.odoc-include summary {
	position: relative;

	cursor: pointer;
	outline: none;

	list-style: none;

	&::-webkit-details-marker {
		display: none;
	}
	&::after {
		content: "+";
		float: right;
		font-size: 1em;
		font-weight: normal;
		color: var(--color-theme);
	}
}
.odoc-include details[open] > summary {
	margin-bottom: 1em;
}

.odoc details[open] > summary::after {
	content: "-";
}

.odoc-include summary:hover {
	background-color: var(--spec-summary-hover-background);
}

/* ============================================================================
   TABLES
   ============================================================================ */

div.def table {
	text-indent: 0em;
	padding: 0;
	margin-left: -2ex;
}

td.def {
	padding-left: 2ex;
}

td.def-doc *:first-child {
	margin-top: 0em;
}

.odoc-table {
	margin: 1em 0;
	border-radius: 6px;
	overflow: hidden;
	box-shadow: var(--box-shadow);
}

.odoc-table td,
.odoc-table th {
	padding: 0.5em 0.75em;
	border: 1px solid #e0e0e0;
}

.odoc-table th {
	font-weight: 600;
	background-color: var(--color-background-primary);
	color: var(--color-theme);
}

/* ============================================================================
   LISTS: @tags, modules, packages
   ============================================================================ */

.at-tags {
	list-style-type: none;
	margin-left: -3ex;
}

.at-tags li {
	padding-left: 3ex;
	text-indent: -3ex;
}

.at-tags .at-tag {
	text-transform: capitalize;
	color: var(--color-theme);
	font-weight: 500;
}

/* Alert and deprecated styling */
.alert::before,
.deprecated::before {
	content: "" / "";
}

.since::before {
	content: "" / "";
}

/* Module lists */
.modules {
	list-style-type: none;
	margin-left: 0;
	padding-left: 0;
}

.modules li {
	padding: 0.5em 0;
	text-indent: 0;
	margin-top: 0;
	border-bottom: 1px solid #f0f0f0;
}

.modules li:last-child {
	border-bottom: none;
}

.modules .synopsis {
	padding-left: 1ch;
	color: var(--color-text-muted);
}

/* Package lists */
.packages {
	list-style-type: none;
	margin-left: -3ex;
}

.packages li {
	padding-left: 3ex;
	text-indent: -3ex;
}

.packages li a.anchor {
	padding-right: 0.5ch;
	padding-left: 3ch;
}

.packages .version {
	font-size: 0.75rem;
	color: var(--color-text-light);
}

.packages .synopsis {
	padding-left: 1ch;
}

.by-name nav a {
	text-transform: uppercase;
	font-size: 1rem;
	margin-right: 1ex;
	color: var(--link-color);
	display: inline-block;
}

.by-tag nav a {
	margin-right: 1ex;
	color: var(--link-color);
	display: inline-block;
}

.by-tag ol {
	list-style-type: none;
}

.by-tag ol.tags li {
	margin-left: 1ch;
	display: inline-block;
}

.by-tag td:first-child {
	text-transform: uppercase;
}

/* Package page */
.package nav,
h1 nav {
	display: inline;
	font-size: 0.85rem;
	font-weight: normal;
}

.package .version,
h1 .version {
	font-size: 0.85rem;
}

.package.info {
	margin: 0;
}

.package.info td:first-child {
	font-style: italic;
	padding-right: 2ex;
}

.package.info ul {
	list-style-type: none;
	display: inline;
	margin: 0;
}

.package.info li {
	display: inline-block;
	margin: 0;
	margin-right: 1ex;
}

#info-authors li,
#info-maintainers li {
	display: block;
}

/* ============================================================================
   TOC / SIDEBAR
   ============================================================================ */

.odoc-tocs {
	display: contents;
}

.odoc-local-toc {
	grid-area: toc-local;
}

.odoc-global-toc {
	grid-area: toc-global;
}

.odoc-toc {
	--toc-top: calc(var(--header-height) + 20px);
	background: var(--toc-background);
	overflow: auto;
	color: var(--toc-color);
	padding: 1em 1.5em;
	height: fit-content;
	border-radius: 8px;
	box-shadow: var(--box-shadow);
	position: sticky;
	max-height: calc(100vh - var(--toc-top) - 20px);
	top: var(--toc-top);
	margin-bottom: 2em;
}

.odoc-toc:before {
	display: block;
	content: "Contents";
	text-transform: uppercase;
	font-size: 0.75rem;
	font-weight: 700;
	letter-spacing: 0em;
	margin: 0 0 0.75em;
	color: var(--color-theme);
	line-height: 1.2;
}

.odoc-toc.odoc-local-toc:has(~ .odoc-global-toc):before {
	content: "On this page";
}

.odoc-toc.odoc-global-toc:has(~ .odoc-local-toc):before {
	content: "Navigation";
}

body.odoc:has(.odoc-search) .odoc-toc {
	--toc-top: calc(
		var(--header-height) + var(--search-bar-height) + 2 *
			var(--search-padding-top) + 10px
	);
	max-height: calc(100vh - 2 * var(--toc-top));
}

.odoc-toc ul {
	list-style-type: none;
	margin: 0;
	padding: 0;
}

.odoc-toc ul li {
	padding: 0.2em 0;
	margin: 0;
}

.odoc-toc ul li a {
	font-family: "Inter", sans-serif;
	font-size: 0.9em;
	color: var(--color);
	font-weight: 400;
	line-height: 1.3em;
	display: block;
}

.odoc-toc ul li a:hover {
	color: var(--color-theme);
}

.odoc-toc > ul > li > a {
	font-weight: 500;
}

.odoc-toc ul li ul {
	margin: 0;
	padding-top: 0.2em;
}

.odoc-toc > ul > li {
	margin-left: 0;
	margin-bottom: 0.3em;
}

.odoc-toc ul li li {
	border-left: 2px solid var(--toc-list-border);
	margin-left: 0;
	padding-left: 12px;
}

.odoc-toc.odoc-global-toc > ul > li {
	margin-left: 0;
}

.odoc-toc.odoc-global-toc > ul > li > ul > li {
	margin-left: 0;
	padding-left: 0;
	border: 0;
	margin-top: 8px;
	margin-bottom: 8px;
}

.odoc-toc.odoc-global-toc > ul > li > ul > li {
	font-weight: 500;
}

.odoc-toc.odoc-global-toc > ul > li > ul > li > a {
	font-weight: inherit;
	font-size: inherit;
}

.odoc-toc.odoc-global-toc > ul > li > a {
	font-size: 1.1em;
}

/* ============================================================================
   SEARCH
   ============================================================================ */

.odoc-search {
	position: sticky;
	top: var(--header-height);
	background: var(--main-background);
	height: calc(var(--search-bar-height) + 2 * var(--search-padding-top));
	width: 100%;
	padding-top: var(--search-padding-top);
	padding-bottom: var(--search-padding-top);
	z-index: 100;
	grid-area: search-bar;
}

.odoc-search .search-inner {
	width: 100%;
	position: relative;
	left: 0;
	display: grid;
	grid-template-columns: 1fr 0fr;
	grid-row-gap: 1rem;
	grid-template-rows: min-content 0px;
	background: transparent;
}

.odoc-search .search-bar {
	position: relative;
	z-index: 2;
	font-size: 1em;
	font-family: "Inter", sans-serif;
	transition: all 0.2s ease;
	box-shadow: var(--box-shadow);
	height: var(--search-bar-height);
	border: 2px solid transparent;
	width: 100%;
	color: var(--color);
	background: var(--color-background);
	border-radius: 6px;
	outline: none;
	padding: 0 12px;
}

.odoc-search:focus-within {
	width: 100%;
}

.odoc-search:focus-within .search-bar {
	border-color: var(--color-theme);
}

.search-bar:focus-visible {
	outline: none;
	border-color: var(--color-theme);
}

.search-bar::placeholder {
	color: var(--color-text-light);
}

.odoc-search:not(:focus-within) .search-result {
	display: none;
}

.odoc-search .search-result:empty {
	display: none;
}

.odoc-search .search-result {
	grid-row: 2;
	background: var(--main-background);
	position: absolute;
	left: 0;
	right: 0;
	border: 1px solid var(--search-results-border);
	border-radius: 8px;
	box-shadow: 0 4px 16px var(--search-results-shadow);
	max-height: calc(min(40rem, 50vh));
	overflow-y: auto;
}

.odoc-search .search-no-result {
	color: var(--color);
	border-bottom: 1px solid var(--search-results-border);
	background-color: inherit;
	outline: 0;
	padding: 12px;
}

.search-snake {
	grid-row: 1;
	grid-column: 2;
	display: flex;
	align-items: center;
	width: 0;
	z-index: 2;
	position: relative;
	left: 0;
	margin-top: 4px;
	margin-bottom: 4px;
	transition: opacity 0.2s;
	opacity: 0;
}

.search-snake.search-busy {
	opacity: 1;
}

.search-snake:before {
	content: " ";
	display: block;
	aspect-ratio: 1 / 1;
	height: 100%;
	margin-right: 4px;
	border-radius: 50%;
	border: 3px solid var(--search-snake-color);
	border-color: var(--search-snake-color) transparent
		var(--search-snake-color) transparent;
	animation: search-snake 1.2s linear infinite;
	position: absolute;
	right: 0;
}

@keyframes search-snake {
	0% {
		transform: rotate(0deg);
	}

	100% {
		transform: rotate(360deg);
	}
}

/* Search entries */
.odoc-search .search-entry {
	color: var(--color);
	display: grid;
	grid-template-columns: calc(0.8 * 5ch) 1fr;
	column-gap: 0.5rem;
	border-bottom: 1px solid var(--search-results-border);
	background-color: inherit;
	outline: 0;
	padding: 0.6rem 0.8rem;
	transition: background-color 0.15s ease;
}

.odoc-search .search-entry p {
	margin: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.odoc-search .search-result .search-entry:focus-visible {
	box-shadow: none;
	background-color: var(--target-background);
}

.odoc-search .search-entry:hover {
	box-shadow: none;
	background-color: var(--color-background-primary);
}

.odoc-search .search-entry .entry-kind {
	grid-row: 1/2;
	grid-column: 1/2;
	line-height: 1.4rem;
	font-size: 0.8em;
	font-weight: 600;
	text-align: right;
	color: var(--color-theme);
}

.odoc-search .search-entry pre {
	border: none;
	margin: 0;
	background: transparent;
	box-shadow: none;
}

.odoc-search .search-entry pre code {
	font-size: 0.9em;
	background-color: transparent;
	color: var(--color);
}

.odoc-search .search-entry .entry-title {
	width: 100%;
	display: block;
	grid-column: 2/2;
	grid-row: 1/2;
	align-self: end;
	line-height: 1.4rem;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.odoc-search .entry-name {
	font-weight: 600;
}

.odoc-search .prefix-name {
	font-weight: 600;
}

.odoc-search .search-entry .prefix-name {
	opacity: 0.7;
}

.odoc-search .entry-rhs {
	white-space: nowrap;
}

.odoc-search .search-entry .entry-content {
	flex-grow: 1;
	flex-shrink: 1;
	min-width: 0;
}

.odoc-search .search-entry .entry-comment {
	max-height: 1.5em;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	font-size: 0.9em;
	grid-row: 2/2;
	grid-column: 2/2;
	color: var(--color-text-muted);
}

.odoc-search .search-entry .entry-comment ul,
.odoc-search .search-entry .entry-comment li,
.odoc-search .search-entry .entry-comment div,
.odoc-search .search-entry .entry-comment p,
.odoc-search .search-entry .entry-comment code {
	display: inline;
	white-space: nowrap;
}

.odoc-search .search-entry .entry-comment ul > li::before {
	content: "";
}

/* ============================================================================
   SOURCE CODE VIEW
   ============================================================================ */

body.odoc-src {
	display: grid;
	grid-template-columns: min-content 1fr;
	grid-template-areas:
		"search-bar nav"
		"toc-global preamble"
		"toc-global content";
	column-gap: 32px;
	grid-template-rows: auto auto 1fr;
}

.source_container {
	display: flex;
	grid-area: content;
	margin-top: 0;
}

.source_line_column {
	padding-right: 0.75em;
	text-align: right;
	color: var(--source-line-column);
	background: var(--source-line-column-bg);
	user-select: none;
}

.source_line {
	padding: 0 1em;
}

.source_code {
	flex-grow: 1;
	background: var(--code-bg);
	padding: 0.5em;
	color: var(--code-color);
	border-radius: 6px;
}

/* Source directories */
.odoc-directory::before {
	content: "";
	margin: 0.3em;
	font-size: 1.3em;
}

.odoc-file::before {
	content: "";
	margin: 0.3em;
	font-size: 1.3em;
}

.odoc-folder-list {
	list-style: none;
}

/* ============================================================================
   SYNTAX HIGHLIGHTING (GitHub Dark theme)
   ============================================================================ */

.hljs {
	display: block;
	background: var(--code-bg);
	padding: 0.5em;
	color: var(--code-color);
	overflow-x: auto;
}

.hljs-comment,
.hljs-meta {
	color: var(--source-code-comment);
}

.hljs-string,
.hljs-variable,
.hljs-template-variable,
.hljs-strong,
.hljs-emphasis,
.hljs-quote,
.hljs-literal {
	color: var(--source-code-literal);
}

.hljs-keyword,
.hljs-selector-tag {
	color: var(--source-code-keyword);
}

.hljs-type,
.hljs-class .hljs-title {
	color: var(--source-code-uident);
	font-weight: 500;
}

.hljs-symbol,
.hljs-bullet,
.hljs-attribute {
	color: var(--source-code-literal);
}

.hljs-section,
.hljs-name {
	color: #7ee787;
}

.hljs-tag {
	color: #8b949e;
}

.hljs-attr,
.hljs-selector-id,
.hljs-selector-class,
.hljs-selector-attr,
.hljs-selector-pseudo {
	color: var(--source-code-operator);
}

.hljs-addition {
	color: #aff5b4;
	background-color: rgba(46, 160, 67, 0.15);
}

.hljs-deletion {
	color: #ffdcd7;
	background-color: rgba(248, 81, 73, 0.15);
}

/* .hljs-link {
  text-decoration: underline;
} */

/* OCaml-specific token styling */
.AND,
.ANDOP,
.AS,
.ASSERT,
.BAR,
.BEGIN,
.CLASS,
.CONSTRAINT,
.DO,
.DONE,
.DOWNTO,
.ELSE,
.END,
.EXCEPTION,
.EXTERNAL,
.FOR,
.FUN,
.FUNCTION,
.FUNCTOR,
.IF,
.IN,
.INCLUDE,
.INHERIT,
.INITIALIZER,
.LAZY,
.LESSMINUS,
.LET,
.LETOP,
.MATCH,
.METHOD,
.MINUSGREATER,
.MODULE,
.MUTABLE,
.NEW,
.NONREC,
.OBJECT,
.OF,
.OPEN,
.PERCENT,
.PRIVATE,
.REC,
.SEMISEMI,
.SIG,
.STRUCT,
.THEN,
.TO,
.TRY,
.TYPE,
.VAL,
.VIRTUAL,
.WHEN,
.WITH,
.WHILE {
	color: var(--source-code-keyword);
}

.COMMA,
.COLON,
.COLONGREATER,
.SEMI {
	color: var(--source-code-separator);
}

.BARRBRACKET,
.LBRACE,
.LBRACELESS,
.LBRACKET,
.LBRACKETAT,
.LBRACKETATAT,
.LBRACKETATATAT,
.LBRACKETBAR,
.LBRACKETGREATER,
.LBRACKETLESS,
.LBRACKETPERCENT,
.LBRACKETPERCENTPERCENT,
.LPAREN,
.RBRACE,
.RBRACKET,
.RPAREN {
	color: var(--source-code-parens);
}

.ASSERT,
.BANG,
.PREFIXOP,
.INFIXOP0,
.INFIXOP1,
.INFIXOP2,
.INFIXOP3,
.INFIXOP4,
.BARBAR,
.PLUS,
.STAR,
.AMPERAMPER,
.AMPERAND,
.COLONEQUAL,
.GREATER,
.LESS,
.MINUS,
.MINUSDOT,
.MINUSGREATER,
.OR,
.PLUSDOT,
.PLUSEQ,
.EQUAL {
	color: var(--source-code-operator);
}

.UIDENT,
.COLONCOLON,
.TRUE,
.FALSE {
	color: var(--source-code-uident);
}

.LIDENT,
.QUESTION,
.QUOTE,
.TILDE {
	color: var(--source-code-lident);
}

.STRING,
.CHAR,
.INT,
.FLOAT,
.QUOTED_STRING_EXPR,
.QUOTED_STRING_ITEM {
	color: var(--source-code-literal);
}

.UNDERSCORE {
	color: var(--source-code-underscore);
}

.DOCSTRING {
	color: var(--source-code-docstring);
}

.COMMENT {
	color: var(--source-code-comment);
}

/* ============================================================================
   RESPONSIVE DESIGN
   ============================================================================ */

@media only screen and (max-width: 800px) {
	body.odoc {
		grid-template-columns: 1fr;
		grid-template-areas:
			"search-bar"
			"nav"
			"preamble"
			"toc-local"
			"content"
			"toc-global";
	}

	body.odoc .odoc-tocs {
		display: contents;
	}

	body.odoc .odoc-tocs .odoc-toc {
		position: static;
		max-height: none;
		width: 100%;
		margin-bottom: 1.5em;
	}

	body.odoc .odoc-search {
		position: relative;
		height: calc(var(--search-bar-height) + 2 * var(--search-padding-top));
	}

	body.odoc nav.odoc-nav {
		padding-top: 0;
		padding-bottom: var(--search-padding-top);
	}
}

@media only screen and (max-width: 600px) {
	body.odoc::before {
		height: 48px;
	}

	body.odoc::after {
		height: 48px;
		font-size: 1.2rem;
		padding-left: 16px;
	}

	body.odoc {
		padding-top: calc(48px + 12px);
		padding-left: 12px;
		padding-right: 12px;
	}

	.odoc-toc {
		padding: 0.75em 1em;
	}
}

/* ============================================================================
   PRINT STYLES
   ============================================================================ */

@media print {
	body {
		color: black;
		background: white;
	}

	body.odoc::before,
	body.odoc::after {
		display: none;
	}

	body nav:first-child {
		visibility: hidden;
	}

	.odoc-toc {
		display: none;
	}

	.odoc-search {
		display: none;
	}
}
