@import url('https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap');
			@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@200..800&display=swap');
			@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&family=Ubuntu+Mono:ital,wght@0,400;0,700;1,400;1,700&display=swap');
			@import url('https://fonts.googleapis.com/css2?family=Comic+Neue:ital,wght@0,300;0,400;0,700;1,300;1,400;1,700&family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&family=PT+Serif+Caption:ital@0;1&family=Roboto:ital,wght@0,100..900;1,100..900&display=swap');
			@import url('https://fonts.googleapis.com/css2?family=Merriweather:ital,opsz,wght@0,18..144,300..900;1,18..144,300..900&display=swap');
			@import url('https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@200..800&display=swap');
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&family=Ubuntu+Mono:ital,wght@0,400;0,700;1,400;1,700&display=swap');

/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */

/* Document
   ========================================================================== */

/**
 * 1. Correct the line height in all browsers.
 * 2. Prevent adjustments of font size after orientation changes in iOS.
 */

html {
  line-height: 1.15; /* 1 */
  -webkit-text-size-adjust: 100%; /* 2 */
}

/* Sections
   ========================================================================== */

/**
 * Remove the margin in all browsers.
 */

body {
  margin: 0;
}

/**
 * Render the `main` element consistently in IE.
 */

main {
  display: block;
}

/**
 * Correct the font size and margin on `h1` elements within `section` and
 * `article` contexts in Chrome, Firefox, and Safari.
 */

h1 {
  font-size: 2em;
  margin: 0.67em 0;
}

/* Grouping content
   ========================================================================== */

/**
 * 1. Add the correct box sizing in Firefox.
 * 2. Show the overflow in Edge and IE.
 */

hr {
  box-sizing: content-box; /* 1 */
  height: 0; /* 1 */
  overflow: visible; /* 2 */
}

/**
 * 1. Correct the inheritance and scaling of font size in all browsers.
 * 2. Correct the odd `em` font sizing in all browsers.
 */

pre {
  font-family: monospace, monospace; /* 1 */
  font-size: 1em; /* 2 */
}

/* Text-level semantics
   ========================================================================== */

/**
 * Remove the gray background on active links in IE 10.
 */

a {
  background-color: transparent;
}

/**
 * 1. Remove the bottom border in Chrome 57-
 * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
 */

abbr[title] {
  border-bottom: none; /* 1 */
  text-decoration: underline; /* 2 */
  text-decoration: underline dotted; /* 2 */
}

/**
 * Add the correct font weight in Chrome, Edge, and Safari.
 */

b,
strong {
  font-weight: bolder;
}

/**
 * 1. Correct the inheritance and scaling of font size in all browsers.
 * 2. Correct the odd `em` font sizing in all browsers.
 */

code,
kbd,
samp {
  font-family: monospace, monospace; /* 1 */
  font-size: 1em; /* 2 */
}

/**
 * Add the correct font size in all browsers.
 */

small {
  font-size: 80%;
}

/**
 * Prevent `sub` and `sup` elements from affecting the line height in
 * all browsers.
 */

sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sub {
  bottom: -0.25em;
}

sup {
  top: -0.5em;
}

/* Embedded content
   ========================================================================== */

/**
 * Remove the border on images inside links in IE 10.
 */

img {
  border-style: none;
}

/* Forms
   ========================================================================== */

/**
 * 1. Change the font styles in all browsers.
 * 2. Remove the margin in Firefox and Safari.
 */

button,
input,
optgroup,
select,
textarea {
  font-family: inherit; /* 1 */
  font-size: 100%; /* 1 */
  line-height: 1.15; /* 1 */
  margin: 0; /* 2 */
}

/**
 * Show the overflow in IE.
 * 1. Show the overflow in Edge.
 */

button,
input { /* 1 */
  overflow: visible;
}

/**
 * Remove the inheritance of text transform in Edge, Firefox, and IE.
 * 1. Remove the inheritance of text transform in Firefox.
 */

button,
select { /* 1 */
  text-transform: none;
}

/**
 * Correct the inability to style clickable types in iOS and Safari.
 */

button,
[type="button"],
[type="reset"],
[type="submit"] {
  -webkit-appearance: button;
}

/**
 * Remove the inner border and padding in Firefox.
 */

button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
  border-style: none;
  padding: 0;
}

/**
 * Restore the focus styles unset by the previous rule.
 */

button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
  outline: 1px dotted ButtonText;
}

/**
 * Correct the padding in Firefox.
 */

fieldset {
  padding: 0.35em 0.75em 0.625em;
}

/**
 * 1. Correct the text wrapping in Edge and IE.
 * 2. Correct the color inheritance from `fieldset` elements in IE.
 * 3. Remove the padding so developers are not caught out when they zero out
 *    `fieldset` elements in all browsers.
 */

legend {
  box-sizing: border-box; /* 1 */
  color: inherit; /* 2 */
  display: table; /* 1 */
  max-width: 100%; /* 1 */
  padding: 0; /* 3 */
  white-space: normal; /* 1 */
}

/**
 * Add the correct vertical alignment in Chrome, Firefox, and Opera.
 */

progress {
  vertical-align: baseline;
}

/**
 * Remove the default vertical scrollbar in IE 10+.
 */

textarea {
  overflow: auto;
}

/**
 * 1. Add the correct box sizing in IE 10.
 * 2. Remove the padding in IE 10.
 */

[type="checkbox"],
[type="radio"] {
  box-sizing: border-box; /* 1 */
  padding: 0; /* 2 */
}

/**
 * Correct the cursor style of increment and decrement buttons in Chrome.
 */

[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
  height: auto;
}

/**
 * 1. Correct the odd appearance in Chrome and Safari.
 * 2. Correct the outline style in Safari.
 */

[type="search"] {
  -webkit-appearance: textfield; /* 1 */
  outline-offset: -2px; /* 2 */
}

/**
 * Remove the inner padding in Chrome and Safari on macOS.
 */

[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}

/**
 * 1. Correct the inability to style clickable types in iOS and Safari.
 * 2. Change font properties to `inherit` in Safari.
 */

::-webkit-file-upload-button {
  -webkit-appearance: button; /* 1 */
  font: inherit; /* 2 */
}

/* Interactive
   ========================================================================== */

/*
 * Add the correct display in Edge, IE 10+, and Firefox.
 */

details {
  display: block;
}

/*
 * Add the correct display in all browsers.
 */

summary {
  display: list-item;
}

/* Misc
   ========================================================================== */

/**
 * Add the correct display in IE 10+.
 */

template {
  display: none;
}

/**
 * Add the correct display in IE 10.
 */

[hidden] {
  display: none;
}

			@font-face {
	font-family: 'Manrope';
	font-style: normal;
	font-weight: 200 800;
	font-display: swap;
	src: url(https://fonts.gstatic.com/s/manrope/v15/xn7gYHE41ni1AdIRggexSg.woff2) format('woff2');
	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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root{
	/* global settings */
	--font-normal: 'Manrope, Poppins, "Open Sans" sans-serif';
	--font-mono: "monospace";
	--font-weight: 400;

	--color-background: linear-gradient(233deg, rgba(1,2,8,1) 0%, rgba(4,14,24,1) 11%, rgba(5,17,19,1) 33%, rgba(6,16,24,1) 48%, rgba(6,12,20,1) 67%, rgba(6,9,22,1) 87%, rgba(3,9,22,1) 100%);
	--color-background-code: rgba(1,2,8,1);
	--color-background-accent: rgb(142, 231, 241);
	--color-text: rgb(240, 240, 240);
	--color-text-accent: rgb(100, 123, 200);
	--color-image-monochrome-accent: rgba(200, 0, 250, 0.5);

	--code-color-background: rgba(0,0,0,0);
	--code-color-background-inline: rgba(0,0,0,0);
	--code-color-text-normal: var(--color-text);
	--code-color-text-keyword: var(--color-text-accent);
	--code-color-text-symbol: var(--highlight-background);
	--code-color-text-comment: var(--highlight-background-secondary);
	--code-border: 1px solid var(--color-text-accent);
	--code-radius: 0;

	transition: all 0.3s ease;

	/* website structure */

	/* wall */
		/* panel */
			/* header */
			/* content */
			/* footer */

	/* The "panel" refers to the space where all content of the page sits in.  */
	/* The outside of the panel is the "wall" (panel sits on wall).            */

	/* When creating styles, the panel and the wall are effectively the same   */
	/* unless the panel has a maximum width, allowing the wall and panel to be */
	/* viewed separately.                                                      */

	/* The panel can be as simple as defining a maximum width for the site, or */
	/* as complex as having a "floating window" effect overtop a static        */
	/* background (glassmorphism).                                             */

	/* NOTE: the wall will never have any content within it (that isn't in the */
	/* panel. The only relevant CSS property it has is background (panel is    */
	/* expected to handle margins and padding).                                */

	/* pages */

	/* Pages that are blog posts and pages that aren't will have different     */
	/* headers and footers, with blog posts having minimal info to keep people */
	/* focused on the post, and the other pages having normal stuff.           */

	/* This is a key part of the website that cannot be changed.               */

	/* text highlighting colors */
	--highlight-color:rgb(10, 9, 9);
	--highlight-background: rgb(122, 255, 252);
	--highlight-color-secondary: var(--highlight-color);
	--highlight-color-background: var(--highlight-color-background);

	--selection-color: #000000;
	--selection-background: rgb(122, 255, 252);

	--panel-padding: 16px;

	font-size: 100%;

	font-synthesis: none;
	text-rendering: optimizeLegibility;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;

	font-optical-sizing: auto;
	font-style: normal;
	font-variation-settings: "wdth" 100;
	line-height: 1.5;

	zoom: 100%;
}


html {
	background: var(--color-background);

	/* https://www.frontend.fyi/tutorials/finally-a-fix-for-100vh-on-mobile */
	min-height: 100dvh;
}

* {
	color: var(--color-text);
	font-family: var(--font-normal);
	font-weight: var(--font-weight);
}

h1, h2, h3, h4, h5, h6, p, li, a, input, textarea, div, select, article, main {

}

// change later; idk what a good default universal button style is
button {
	color: var(--highlight-color);
	background: var(--highlight-background);
	border: none;
	margin: 8px auto;
	border-radius: 8px;
	padding: 8px;
}

pre {
	border: 1px solid var(--color-text-accent);
	padding: 4px 8px;
	font-family: var(--font-mono);
	overflow-x: auto;
}

code,
code * {
	tab-size: 2;
	font-family: var(--font-mono);
	font-size: 1rem;
}

a:hover {
	color: var(--color-text-accent);
}

::selection {
	color: var(--selection-color);
	background: var(--selection-background);
}

img {
	max-width: 100%;
}

hr {
	display: block;
	height: 1px;
	border: 0;
	border-top: 1px solid var(--color-text-accent);
	margin: 1em 0;
	margin-top: 1.25rem;
	padding: 0;
}

li > p {
	margin: 0;
}

/* cutting edge css baby */
/* https://caniuse.com/?search=scroll-margin-top */

:target {
	/* turns out since my website is SPA this only works if JS is disabled WHOOPS */
	/* w/e it's nice to have */
	scroll-margin-top: 16px;
}

			.background {
	position: fixed;
	display: block;
	width: 100vw;
	height: 100vh;
	top: 0;
	left: 0;
	z-index: -10;
}

.posts {
	list-style-type: none;
	list-style-position: outside;
	margin: 0;
	padding: 0;

	--posts-outline-width: 2px;
	--column-gap: 2px;

	display: flex;
	flex-direction: column;
	align-items: stretch;
	width: 100%;
	gap: var(--posts-outline-width);
}
	.posts__li {
		display: flex;
		justify-content: space-between;
		gap: calc(var(--posts-outline-width) * 2 + var(--column-gap));
	}
	.posts__a {
		text-decoration: none;
		display: block;
		color: var(--color-text);
		flex-grow: 1;
	}
	.posts__a:hover,
	.posts__a:focus {
		color: var(--highlight-color);
		background: var(--highlight-background);
		outline: var(--posts-outline-width) solid var(--highlight-background);
	}
	.posts__a:hover + .posts__timestamp,
	.posts__a:focus + .posts__timestamp {
		text-decoration: none;
		color: var(--highlight-color-secondary);
		background: var(--highlight-background-secondary);
		outline: var(--posts-outline-width) solid var(--highlight-background-secondary);
	}
	.posts__timestamp {
		flex: none;
		color: var(--color-text-accent);
	}

/* evil code when you don't want to use !important */
.categories.categories {
	list-style-type: none;
	list-style-position: outside;
	margin: 0;
	padding: 0;

	display: flex;
	flex-direction: row;
	gap: 2rem;
	justify-content: space-between;
	flex-wrap: wrap;
}

@media only screen and (max-width: 70ch) {
	.categories.categories {
		list-style-type: circle;
		list-style-position: outside;
		margin-left: 1rem;

		flex-direction: column;
		gap: 0rem;
	}
}


.themes {
	display: flex;
	gap: 3rem;
	flex-wrap: wrap;
	/* justify-content: space-between; */
	/* max-width: 40ch; */
	/* margin: auto; */
	margin-top: 1rem;
	/* align-items: space-around; */
}
.themeGroup {}

	.themeGroup__title {
		margin: 0;
		text-decoration: underline;
		text-decoration-color: var(--highlight-background);
		text-decoration-thickness: 3px;
	}

	.themeGroup__list {
		padding: 0;
		margin: 0;
	}

	.themeGroup__button {
		background: none;
		border: none;
		padding: 0;
		margin: 0;
		margin-right: 0.25rem;
	}

	.themeGroup__li {
		list-style-type: none;
	}

	.themeGroup__button:hover,
	.themeGroup__button:focus {
		color: var(--highlight-color);
		background: var(--highlight-background);
		cursor: pointer;
		outline: 0.25rem solid var(--highlight-background);
		/* margin-right: 0.25rem; */
	}

	.themeGroup__bonus {
		display: inline;
	}

.postHeader {
	margin: 0;
	padding: 0;
	border-radius: var(--panel-radius) var(--panel-radius) 0 0;
}
	.postHeader::after {
		content: "///////";
		display: block;
		margin: auto;
		text-align: center;
	}
	.postHeader__title {
		margin: 0;
		margin-bottom: 0;
	}

	.postHeader__description {
		color: var(--color-text-accent);
	}

	.postHeader__tags {
		margin: 0;
		padding: 0;
		list-style: none;
		display: flex;
		flex-direction: row;
		gap: 0.25rem;
	}

	.postHeader__options {
		margin: 0;
		padding: 0;
		list-style: none;
		margin-top: 1rem;
		display: flex;
		flex-direction: column;
		text-decoration: none;
	}

	.postHeader__option {
		text-decoration: none;
	}

	.postHeader__option:hover::before,
	.postHeader__option:focus::before {
		content: "> ";
	}



.content, .postContent {
	text-wrap: wrap;
}

	.postContent h2 a,
	.postContent h3 a,
	.postContent p {
	}

	.postContent h2 a,
	.content h2 a {
		text-decoration: none;
		color: var(--highlight-color);
		background: var(--highlight-background);
		padding: 0 0.25rem;
		width: 100%;
		display: block;
		box-sizing: border-box;
	}

	.postContent h2 a:hover,
	.postContent h2 a:focus,
	.content h2 a:hover,
	.content h2 a:focus {
		text-decoration: underline;
	}

	.postContent h2 a:hover::after,
	.postContent h2 a:focus::after,
	.content h2 a:hover::after,
	.content h2 a:focus::after {
		content: " #";
	}

	.postContent h3 a,
	.content h3 a {
		text-decoration: underline;
		text-decoration-color: var(--highlight-background);
		text-decoration-thickness: 3px;
	}

	.postContent h3 a:hover::after,
	.postContent h3 a:focus::after,
	.content h3 a:hover::after,
	.content h3 a:focus::after {
		content: " #";
	}

	.postContent h4 a,
	.content h4 a {
		text-decoration: underline;
		font-style: oblique;
		text-decoration-color: var(--highlight-background);
		text-decoration-thickness: 2px;
	}

	.postContent h4 a:hover::after,
	.postContent h4 a:focus::after,
	.content h4 a:hover::after,
	.content h4 a:focus::after {
		content: " #";
	}

	.postContent img,
	.content img {
		margin: auto;
		display: block;
	}

	.postContent > ul,
	.content > ul {
		list-style-position: outside;
		padding-left: 16px;
	}

	/* treat non-paragraph links as blocks */
	.postContent > a,
	.content > a {
		display: block;
		margin: 1rem 0;
	}

	/* force long links to wrap */
	.postContent a,
	.content a {
		text-wrap: wrap;
		word-wrap: break-word;
	}

	.footnotes-list {
		display: flex;
		flex-direction: column;
		gap: 1rem;
	}

	.postContent > *:last-child,
	.content > *:last-child {
		margin-bottom: 0;
	}

	.footnotes-list {
		padding-left: 1.25rem;
	}

	.postFooter::before {
		content: "///////";
		display: block;
		margin: auto;
		text-align: center;
		margin-bottom: var(--panel-padding);
	}

	.postFooter__centerLink {
		text-decoration: none;
		display: block;
		width: fit-content;
		margin: auto;
		background: rgba(0,0,0,0);
		border: none;
		cursor: pointer;
	}

	.postFooter__centerLink:hover,
	.postFooter__centerLink:focus {
		color: var(--color-text-accent);
	}

	.postFooter__pageSwapper {
		margin: 0;
		padding: 0;
		list-style: none;
		padding: var(--panel-padding) 0;
		display: flex;
		flex-direction: row;
		/* align-items: space-between; */
		justify-content: space-between;
	}

	.postFooter__previous {
		text-align: left;
	}

	.postFooter__next {
		text-align: right;
	}

	.content h1 {
		text-align: center;
		font-size: 1.75rem;
	}

.tableOfContents {
	display: none;
	text-decoration: none;
}

	.tableOfContents__title {
		font-weight: 700;
		margin-top: 0;
	}

	.tableOfContents__link:hover::before,
	.tableOfContents__link:focus::before {
		content: "> ";
	}

				code[class*="language-"],
pre[class*="language-"] {
	background: none;
	font-family: var(--font-mono);
	font-size: 1rem;
	text-align: left;
	/* text-shadow: 0 -.1rem .2em black; */
	white-space: pre;
	word-spacing: normal;
	word-break: normal;
	word-wrap: normal;
	line-height: 1.5;

	-moz-tab-size: 2;
	-o-tab-size: 2;
	tab-size: 2;

	-webkit-hyphens: none;
	-moz-hyphens: none;
	-ms-hyphens: none;
	hyphens: none;
}

pre[class*="language-"],
:not(pre) > code[class*="language-"] {
	background: var(--code-color-background);
	font-family: var(--font-mono);
	font-size: 1rem;
}

/* Code blocks */
pre[class*="language-"] {
	border-radius: var(--code-radius);
	border: var(--code-border);
	color: var(--code-color-text-normal);
	/* box-shadow: 1px 1px .5em black inset; */
	margin: .5em 0;
	overflow: auto;
	padding: 1rem;
	font-family: var(--font-mono);
	font-size: 1rem;
	tab-size: 4;
}

/* Inline code */
:not(pre) > code[class*="language-"] {
	// border-radius: .3em;
	white-space: normal;
	font-family: var(--font-mono);
	font-size: 1rem;
	background: var(--code-color-background-inline);
}

/* how does this not just run on every other code block. like HOW */
:not(pre) > code {
	background: var(--code-color-background-inline);
	outline: 0.15rem solid var(--code-color-background-inline);
	margin: var(--code-inline-margins);
	padding: 0;
	display: inline-block;
}

.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
	color: var(--code-color-text-comment);
	font-family: var(--font-mono);
}

.token.tag,
.token.boolean,
.token.number,
.token.deleted {
	/* color: hsl(14, 58%, 55%); #CF6A4C */
	font-size: 1rem;
}

.token.keyword,
.token.property,
.token.selector,
.token.constant,
.token.symbol,
.token.builtin {
	color: var(--code-color-text-keyword);
	font-family: var(--font-mono);
	font-size: 1rem;
}

.token.attr-name,
.token.attr-value,
.token.string,
.token.char,
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string,
.token.variable,
.token.inserted {
	color: var(--code-color-text-symbol);
	font-family: var(--font-mono);
	font-size: 1rem;
}

.token.atrule {
	/* color: hsl(218, 22%, 55%); #7587A6 */
}

.token.regex,
.token.important {
	color: var(--code-color-text-keyword);
	font-family: var(--font-mono);
	font-size: 1rem;
}

.token.entity {
	cursor: help;
	font-family: var(--font-mono);
	font-size: 1rem;
}

/* Markup */
.language-markup .token.tag,
.language-markup .token.attr-name,
.language-markup .token.punctuation {
	color: var(--code-color-text-keyword);
	font-family: var(--font-mono);
	font-size: 1rem;
}

/* Make the tokens sit above the line highlight so the colours don't look faded. */
.token {
	position: relative;
	z-index: 1;
	font-family: var(--font-mono);
	font-size: 1rem;
}

.line-highlight.line-highlight {
	background: hsla(0, 0%, 33%, 0.25); /* #545454 */
	background: linear-gradient(to right, hsla(0, 0%, 33%, .1) 70%, hsla(0, 0%, 33%, 0)); /* #545454 */
	border-bottom: 1px dashed hsl(0, 0%, 33%); /* #545454 */
	border-top: 1px dashed hsl(0, 0%, 33%); /* #545454 */
	margin-top: 0.75em; /* Same as .prism’s padding-top */
	z-index: 0;
	font-family: var(--font-mono);
	font-size: 1rem;
}

.line-highlight.line-highlight:before,
.line-highlight.line-highlight[data-end]:after {
	/*background-color: hsl(215, 15%, 59%); /* #8794A6 */
	/*color: hsl(24, 20%, 95%); /* #F5F2F0 */
}