@charset "UTF-8";

@font-face {
	font-family: 'Roboto';
	font-style: normal;
	font-weight: 100 900;
	font-stretch: 100%;
	font-display: swap;
	src: url("../webfonts/Roboto-Regular.woff") format('woff'), url("../webfonts/Roboto-Regular.ttf") format('truetype');
}

@font-face {
	font-family: 'Noto Sans';
	font-style: normal;
	font-weight: 100 900;
	font-stretch: 100%;
	src: url("../webfonts/NotoSans-Regular.woff2") format('woff'), url("../webfonts/NotoSans-Regular.ttf") format('truetype');
}

@font-face {
	font-family: 'Roboto Mono';
	font-style: normal;
	font-weight: 100 700;
	src: url("../webfonts/RobotoMono-Regular.woff2") format('woff'), url("../webfonts/RobotoMono-Regular.ttf") format('truetype');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
  }

[data-bs-theme=catppuccin] {
	color-scheme: dark;
	--cat-mocha-rosewater: #f5e0dc;
	--cat-mocha-rosewater-rgb: 245, 224, 220;
	--cat-mocha-flamingo: #f2cdcd;
	--cat-mocha-flamingo-rgb: 242, 205, 205;
	--cat-mocha-pink: #f5c2e7;
	--cat-mocha-pink-rgb: 245, 194, 231;
	--cat-mocha-mauve: #cba6f7;
	--cat-mocha-mauve-rgb: 203, 166, 247;
	--cat-mocha-red: #f38ba8;
	--cat-mocha-red-rgb: 243, 139, 168;
	--cat-mocha-maroon: #eba0ac;
	--cat-mocha-maroon-rgb: 235, 160, 172;
	--cat-mocha-peach: #fab387;
	--cat-mocha-peach-rgb: 250, 179, 135;
	--cat-mocha-yellow: #f9e2af;
	--cat-mocha-yellow-rgb: 249, 226, 175;
	--cat-mocha-green: #a6e3a1;
	--cat-mocha-green-rgb: 166, 227, 161;
	--cat-mocha-teal: #94e2d5;
	--cat-mocha-teal-rgb: 148, 226, 213;
	--cat-mocha-sky: #89dceb;
	--cat-mocha-sky-rgb: 137, 220, 235;
	--cat-mocha-sapphire: #74c7ec;
	--cat-mocha-sapphire-rgb: 116, 199, 236;
	--cat-mocha-blue: #89b4fa;
	--cat-mocha-blue-rgb: 137, 180, 250;
	--cat-mocha-lavender: #b4befe;
	--cat-mocha-lavender-rgb: 180, 190, 254;
	--cat-mocha-text: #cdd6f4;
	--cat-mocha-text-rgb: 205, 214, 244;
	--cat-mocha-subtext1: #bac2de;
	--cat-mocha-subtext1-rgb: 186, 194, 222;
	--cat-mocha-subtext0: #a6adc8;
	--cat-mocha-subtext0-rgb: 166, 173, 200;
	--cat-mocha-overlay2: #9399b2;
	--cat-mocha-overlay2-rgb: 147, 153, 178;
	--cat-mocha-overlay1: #7f849c;
	--cat-mocha-overlay1-rgb: 127, 132, 156;
	--cat-mocha-overlay0: #6c7086;
	--cat-mocha-overlay0-rgb: 108, 112, 134;
	--cat-mocha-surface2: #585b70;
	--cat-mocha-surface2-rgb: 88, 91, 112;
	--cat-mocha-surface1: #45475a;
	--cat-mocha-surface1-rgb: 69, 71, 90;
	--cat-mocha-surface0: #313244;
	--cat-mocha-surface0-rgb: 49, 50, 68;
	--cat-mocha-base: #1e1e2e;
	--cat-mocha-base-rgb: 30, 30, 46;
	--cat-mocha-mantle: #181825;
	--cat-mocha-mantle-rgb: 24, 24, 37;
	--cat-mocha-crust: #11111b;
	--cat-mocha-crust-rgb: 17, 17, 27;

	/* Background Colours */
	--background-background-pane: var(--cat-mocha-base);
	--background-secondary-pane: var(--cat-mocha-crust);
	--background-surface0: var(--cat-mocha-surface0);
	--background-surface1: var(--cat-mocha-surface1);
	--background-surface2: var(--cat-mocha-surface2);
	--background-overlay0: var(--cat-mocha-overlay0);
	--background-overlay1: var(--cat-mocha-overlay1);
	--background-overlay2: var(--cat-mocha-overlay2);

	/* Typography Colours */
	--typography-body-copy: var(--cat-mocha-text);
	--typography-main-headline: var(--cat-mocha-text);
	--typography-sub-headline: var(--cat-mocha-subtext0);
	--typography-labels: var(--cat-mocha-subtext1);
	--typography-subtle: var(--cat-mocha-overlay1);
	--typography-links: var(--cat-mocha-blue);
	--typography-success: var(--cat-mocha-green);
	--typography-warning: var(--cat-mocha-yellow);
	--typography-error: var(--cat-mocha-red);
	--typography-tags: var(--cat-mocha-blue);
	--typography-pills: var(--cat-mocha-blue);
	--typography-cursor: var(--cat-mocha-rosewater);

	/* Syntax Colours */
	--syntax-keywords: var(--cat-mocha-mauve);
	--syntax-strings: var(--cat-mocha-green);
	--syntax-symbols: var(--cat-mocha-red);
	--syntax-atoms: var(--cat-mocha-red);
	--syntax-escape-sequences: var(--cat-mocha-pink);
	--syntax-regular-expressions: var(--cat-mocha-pink);
	--syntax-comments: var(--cat-mocha-overlay2);
	--syntax-constants: var(--cat-mocha-peach);
	--syntax-numbers: var(--cat-mocha-peach);
	--syntax-operators: var(--cat-mocha-sky);
	--syntax-braces: var(--cat-mocha-overlay2);
	--syntax-delimiters: var(--cat-mocha-overlay2);
	--syntax-methods: var(--cat-mocha-blue);
	--syntax-functions: var(--cat-mocha-blue);
	--syntax-parameters: var(--cat-mocha-maroon);
	--syntax-builtins: var(--cat-mocha-red);
	--syntax-classes: var(--cat-mocha-yellow);
	--syntax-interfaces: var(--cat-mocha-yellow);
	--syntax-annotations: var(--cat-mocha-yellow);
	--syntax-metadata: var(--cat-mocha-yellow);
	--syntax-enums: var(--cat-mocha-yellow);
	--syntax-types: var(--cat-mocha-yellow);
	--syntax-enum-variants: var(--cat-mocha-teal);
	--syntax-properties: var(--cat-mocha-blue);
	--syntax-attributes: var(--cat-mocha-yellow);
	--syntax-cursor: var(--cat-mocha-rosewater);
	--syntax-cursor-line: rgba(var(--cat-mocha-text-rgb), 0.1);
	--syntax-line-numbers: var(--cat-mocha-overlay1);
	--syntax-active-line-number: var(--cat-mocha-lavender);
	--syntax-normal-links: var(--cat-mocha-blue);
	--syntax-followed-links: var(--cat-mocha-lavender);
	--syntax-hover-links: var(--cat-mocha-sky);
	--syntax-search-fg: var(--cat-mocha-text);
	--syntax-search-bg: var(--cat-mocha-teal);
	--syntax-active-search-fg: var(--cat-mocha-text);
	--syntax-active-search-bg: var(--cat-mocha-red);
	--syntax-errors: var(--cat-mocha-red);
	--syntax-warnings: var(--cat-mocha-yellow);
	--syntax-information: var(--cat-mocha-teal);
}

body {
	background-color: var(--background-background-pane);
	color: var(--typography-body-copy);
	-webkit-tap-highlight-color: var(--syntax-hover-links);

	font-family: "Noto Sans", "Roboto", sans-serif;
	font-weight: 100;
}

h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 {
	color: var(--typography-main-headline);
}

mark, .mark {
	color: var(--syntax-active-search-fg);
}

a {
	color: var(--syntax-normal-links);
}

a:hover {
	color: var(--syntax-hover-links);
}

pre, code, kbd, samp {
	font-family: "Roboto Mono", monospace;
}

code {
	color: var(--syntax-keywords);
}

kbd {
	background-color: var(--background-surface2);
}

caption {
	color: var(--typography-main-headline);
}

[data-bs-theme=catppuccin] .bg-body-tertiary {
	background-color : var(--background-surface1) !important;
}

[data-bs-theme=catppuccin] .bg-body-secondary {
	background-color : var(--background-surface0) !important;
}

[data-bs-theme=catppuccin] .border-bottom {
	border-color: var(--background-secondary-pane) !important;
}

[data-bs-theme=catppuccin] .text-light {
	color: var(--typography-main-headline) !important;
}

[data-bs-theme=catppuccin] .nav-pills .nav-link {
	color: var(--syntax-normal-links);
}

[data-bs-theme=catppuccin] .nav-pills .nav-link:hover {
	color: var(--syntax-hover-links);
}

[data-bs-theme=catppuccin] .nav-pills .nav-link.active {
	background-color: var(--syntax-normal-links);
	color: var(--background-secondary-pane);
}

[data-bs-theme=catppuccin] .nav-pills .nav-link.active:hover {
	background-color: var(--syntax-hover-links);
	color: var(--background-secondary-pane);
}

nav.side-nav ul li.nav-item a.nav-link {
	padding: 0.2rem 0.3em;
	border-bottom-width: 2px;
}

nav.side-nav ul li.nav-item a.nav-link.activepage {
	background-color: var(--syntax-normal-links);
	color: var(--background-secondary-pane);
	border-bottom: 2px solid var(--background-surface0);
}

nav.side-nav ul li.nav-item a.nav-link.activepage:hover {
	background-color: var(--syntax-hover-links);
	color: var(--background-secondary-pane);
}

nav.side-nav > ul.side-nav > li.nav-item ul {
	margin-left: 1.5rem;
}

nav.side-nav.side-nav-top {
	background-color: var(--background-surface0);
	border-radius: var(--bs-border-radius);
	border: 1px solid var(--background-secondary-pane);

	counter-reset: counter-nav1 counter-nav2 counter-nav3 counter-nav4 counter-nav5 counter-nav6;
}

.side-nav a.nav-link {
	color: var(--syntax-normal-links);
	font-size: 1rem;
}

.side-nav a.nav-link::before {
	padding-right: 1rem;
}

.side-nav a.nav-link:hover {
	color: var(--syntax-hover-links);
}

.side-nav a.side-link-depth-1 {
	counter-increment: counter-nav1;
	counter-reset: counter-nav2;
}

.side-nav a.side-link-depth-2 {
	counter-increment: counter-nav2;
	counter-reset: counter-nav3;
}

.side-nav a.side-link-depth-3 {
	counter-increment: counter-nav3;
	counter-reset: counter-nav4;
}

.side-nav a.side-link-depth-4 {
	counter-increment: counter-nav4;
	counter-reset: counter-nav5;
}

.side-nav a.side-link-depth-5 {
	counter-increment: counter-nav5;
	counter-reset: counter-nav6;
}

.side-nav a.side-link-depth-6 {
	counter-increment: counter-nav6;
}

.side-nav a.nav-link.side-link-depth-1::before {
	content: counter(counter-nav1);
	white-space: nowrap;
}

.side-nav a.nav-link.side-link-depth-2::before {
	content: counter(counter-nav1) "." counter(counter-nav2);
	white-space: nowrap;
}

.side-nav a.nav-link.side-link-depth-3::before {
	content: counter(counter-nav1) "." counter(counter-nav2) "." counter(counter-nav3);
	white-space: nowrap;
}

.side-nav a.nav-link.side-link-depth-4::before {
	content: counter(counter-nav1) "." counter(counter-nav2) "." counter(counter-nav3) "." counter(counter-nav4);
	white-space: nowrap;
}

.side-nav a.nav-link.side-link-depth-5::before {
	content: counter(counter-nav1) "." counter(counter-nav2) "." counter(counter-nav3) "." counter(counter-nav4) "." counter(counter-nav5);
	white-space: nowrap;
}

.side-nav a.nav-link.side-link-depth-6::before {
	content: counter(counter-nav1) "." counter(counter-nav2) "." counter(counter-nav3) "." counter(counter-nav4) "." counter(counter-nav5) "." counter(counter-nav6);
	white-space: nowrap;
}

nav.side-nav ul.side-nav > li.nav-item:has(> ul.toc.toc-top) {
	border-left: 2px solid var(--syntax-normal-links);
	border-bottom: 2px solid var(--syntax-normal-links);
	border-right: 2px solid var(--syntax-normal-links);
}


ul.toc.toc-top {
	counter-reset: counter-toc1 counter-toc2 counter-toc3 counter-toc4 counter-toc5 counter-toc6;
}

nav.side-nav > ul.side-nav > li.nav-item ul.toc {
	margin-left: 0rem;
}

nav.side-nav > ul.side-nav > li.nav-item ul.toc.toc-top {
	margin-left: 1.5rem;
}

ul.toc.toc-top a.toc-link-depth-1 {
	counter-increment: counter-toc1;
	counter-reset: counter-toc2;
}

ul.toc.toc-top a.toc-link-depth-2 {
	counter-increment: counter-toc2;
	counter-reset: counter-toc3;
}

ul.toc.toc-top a.toc-link-depth-3 {
	counter-increment: counter-toc3;
	counter-reset: counter-toc4;
}

ul.toc.toc-top a.toc-link-depth-4 {
	counter-increment: counter-toc4;
	counter-reset: counter-toc5;
}

ul.toc.toc-top a.toc-link-depth-5 {
	counter-increment: counter-toc5;
	counter-reset: counter-toc6;
}

ul.toc.toc-top a.toc-link-depth-6 {
	counter-increment: counter-toc6;
}

ul.toc.toc-top a.toc-link-depth-1::before {
	content: "# " counter(counter-toc1);
	white-space: nowrap;
}

ul.toc.toc-top a.toc-link-depth-2::before {
	content: "# " counter(counter-toc1) "." counter(counter-toc2);
	white-space: nowrap;
}

ul.toc.toc-top a.toc-link-depth-3::before {
	content: "# " counter(counter-toc1) "." counter(counter-toc2) "." counter(counter-toc3);
	white-space: nowrap;
}

ul.toc.toc-top a.toc-link-depth-4::before {
	content: "# " counter(counter-toc1) "." counter(counter-toc2) "." counter(counter-toc3) "." counter(counter-toc4);
	white-space: nowrap;
}

ul.toc.toc-top a.toc-link-depth-5::before {
	content: "# " counter(counter-toc1) "." counter(counter-toc2) "." counter(counter-toc3) "." counter(counter-toc4) "." counter(counter-toc5);
	white-space: nowrap;
}

ul.toc.toc-top a.toc-link-depth-6::before {
	content: "# " counter(counter-toc1) "." counter(counter-toc2) "." counter(counter-toc3) "." counter(counter-toc4) "." counter(counter-toc5) "." counter(counter-toc6);
	white-space: nowrap;
}

.headerlink {
	padding-left: 1rem;
	text-decoration: none;
}

[data-bs-theme=catppuccin] pre:has(> code), [data-bs-theme=catppuccin] pre > code {
	background-color: var(--cat-mocha-surface0);
	font-family: "Roboto Mono", monospace;
}

[data-bs-theme=catppuccin] pre:has(> code) {
	overflow-x: scroll;
	max-width: 100%;
	border: 1rem solid var(--cat-mocha-surface0);
	border-top: 0;
	border-bottom: 0;
}

[data-bs-theme=catppuccin] pre > code {
	display: inline-block;
	padding-top: 1rem;
	padding-bottom: 1rem;
}

[data-bs-theme=catppuccin] .breadcrumb-item::before {
	color: var(--typography-body-copy);
}


#page-content {
	counter-reset: page-toc1 page-toc2 page-toc3 page-toc4 page-toc5 page-toc6;
}

/** page with only one h1 heading **/
#page-content:has(h1:only-of-type) h2 {
	counter-increment: page-toc1;
	counter-reset: page-toc2;
}

#page-content:has(h1:only-of-type) h2::before {
	content: counter(page-toc1) " ";
	white-space: nowrap;
}

#page-content:has(h1:only-of-type) h3 {
	counter-increment: page-toc2;
	counter-reset: page-toc3;
}

#page-content:has(h1:only-of-type) h3::before {
	content: counter(page-toc1) "." counter(page-toc2) " ";
	white-space: nowrap;
}

#page-content:has(h1:only-of-type) h4 {
	counter-increment: page-toc3;
	counter-reset: page-toc4;
}

#page-content:has(h1:only-of-type) h4::before {
	content: counter(page-toc1) "." counter(page-toc2) "." counter(page-toc3) " ";
	white-space: nowrap;
}

#page-content:has(h1:only-of-type) h5 {
	counter-increment: page-toc4;
	counter-reset: page-toc5;
}

#page-content:has(h1:only-of-type) h5::before {
	content: counter(page-toc1) "." counter(page-toc2) "." counter(page-toc3) "." counter(page-toc4) " ";
	white-space: nowrap;
}

#page-content:has(h1:only-of-type) h6 {
	counter-increment: page-toc5;
}

#page-content:has(h1:only-of-type) h6::before {
	content: counter(page-toc1) "." counter(page-toc2) "." counter(page-toc3) "." counter(page-toc4) "." counter(page-toc5) " ";
	white-space: nowrap;
}

/** page with multiple h1 headings **/
#page-content:not(:has(h1:only-of-type)) h1 {
	counter-increment: page-toc1;
	counter-reset: page-toc2;
}

#page-content:not(:has(h1:only-of-type)) h1::before {
	content: counter(page-toc1) " ";
	white-space: nowrap;
}

#page-content:not(:has(h1:only-of-type)) h2 {
	counter-increment: page-toc2;
	counter-reset: page-toc3;
}

#page-content:not(:has(h1:only-of-type)) h2::before {
	content: counter(page-toc1) "." counter(page-toc2) " ";
	white-space: nowrap;
}

#page-content:not(:has(h1:only-of-type)) h3 {
	counter-increment: page-toc3;
	counter-reset: page-toc4;
}

#page-content:not(:has(h1:only-of-type)) h3::before {
	content: counter(page-toc1) "." counter(page-toc2) "." counter(page-toc3) " ";
	white-space: nowrap;
}

#page-content:not(:has(h1:only-of-type)) h4 {
	counter-increment: page-toc4;
	counter-reset: page-toc5;
}

#page-content:not(:has(h1:only-of-type)) h4::before {
	content: counter(page-toc1) "." counter(page-toc2) "." counter(page-toc3) "." counter(page-toc4) " ";
	white-space: nowrap;
}

#page-content:not(:has(h1:only-of-type)) h5 {
	counter-increment: page-toc5;
	counter-reset: page-toc6;
}

#page-content:not(:has(h1:only-of-type)) h5::before {
	content: counter(page-toc1) "." counter(page-toc2) "." counter(page-toc3) "." counter(page-toc4) "." counter(page-toc5) " ";
	white-space: nowrap;
}

#page-content:not(:has(h1:only-of-type)) h6 {
	counter-increment: page-toc6;
}

#page-content:not(:has(h1:only-of-type)) h6::before {
	content: counter(page-toc1) "." counter(page-toc2) "." counter(page-toc3) "." counter(page-toc4) "." counter(page-toc5) "." counter(page-toc6) " ";
	white-space: nowrap;
}

#page-content h1:not(:first-child), #page-content h2, #page-content h3, #page-content h4, #page-content h5, #page-content h6 {
	margin-top: 3rem;
}

/* admonition support */

.admonition {
	border-left: 2px solid var(--cat-mocha-blue);
	padding-left: 1rem;
}

.admonition .admonition-title {
	color : var(--cat-mocha-blue);
}

.admonition.tip {
	border-color : var(--cat-mocha-green);
}

.admonition.tip .admonition-title {
	color : var(--cat-mocha-green);
}

.admonition.important {
	border-color : var(--cat-mocha-yellow);
}

.admonition.important .admonition-title {
	color : var(--cat-mocha-yellow);
}

.admonition.warning {
	border-color : var(--cat-mocha-peach);
}

.admonition.warning .admonition-title {
	color : var(--cat-mocha-peach);
}

.admonition.caution {
	border-color : var(--cat-mocha-red);
}

.admonition.caution .admonition-title {
	color : var(--cat-mocha-red);
}

.admonition.example {
	border-color : var(--cat-mocha-sky);
}

.admonition.example .admonition-title {
	color : var(--cat-mocha-sky);
}
