/*! normalize.css v1.1.1 | MIT License | git.io/normalize */

/* ==========================================================================
   HTML5 display definitions
   ========================================================================== */

/**
 * Correct `block` display not defined in IE 6/7/8/9 and Firefox 3.
 */

article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
nav,
section,
summary {
    display: block;
}

/**
 * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.
 */

audio,
canvas,
video {
    display: inline-block;
    *display: inline;
    *zoom: 1;
}

/**
 * Prevent modern browsers from displaying `audio` without controls.
 * Remove excess height in iOS 5 devices.
 */

audio:not([controls]) {
    display: none;
    height: 0;
}

/**
 * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4.
 * Known issue: no IE 6 support.
 */

[hidden] {
    display: none;
}

/* ==========================================================================
   Base
   ========================================================================== */

/**
 * 1. Prevent system color scheme's background color being used in Firefox, IE,
 *    and Opera.
 * 2. Prevent system color scheme's text color being used in Firefox, IE, and
 *    Opera.
 * 3. Correct text resizing oddly in IE 6/7 when body `font-size` is set using
 *    `em` units.
 * 4. Prevent iOS text size adjust after orientation change, without disabling
 *    user zoom.
 */

html {
    background: #fff; /* 1 */
    color: #000; /* 2 */
    font-size: 100%; /* 3 */
    -webkit-text-size-adjust: 100%; /* 4 */
    -ms-text-size-adjust: 100%; /* 4 */
}

/**
 * Address `font-family` inconsistency between `textarea` and other form
 * elements.
 */

html,
button,
input,
select,
textarea {
    font-family: sans-serif;
}

/**
 * Address margins handled incorrectly in IE 6/7.
 */

body {
    margin: 0;
}

/* ==========================================================================
   Links
   ========================================================================== */

/**
 * Address `outline` inconsistency between Chrome and other browsers.
 */

a:focus {
    outline: thin dotted;
}

/**
 * Improve readability when focused and also mouse hovered in all browsers.
 */

a:active,
a:hover {
    outline: 0;
}

/* ==========================================================================
   Typography
   ========================================================================== */

/**
 * Address font sizes and margins set differently in IE 6/7.
 * Address font sizes within `section` and `article` in Firefox 4+, Safari 5,
 * and Chrome.
 */

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

h2 {
    font-size: 1.5em;
    margin: 0.83em 0;
}

h3 {
    font-size: 1.17em;
    margin: 1em 0;
}

h4 {
    font-size: 1em;
    margin: 1.33em 0;
}

h5 {
    font-size: 0.83em;
    margin: 1.67em 0;
}

h6 {
    font-size: 0.67em;
    margin: 2.33em 0;
}

/**
 * Address styling not present in IE 7/8/9, Safari 5, and Chrome.
 */

abbr[title] {
    border-bottom: 1px dotted;
}

/**
 * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome.
 */

b,
strong {
    font-weight: bold;
}

blockquote {
    margin: 1em 40px;
}

/**
 * Address styling not present in Safari 5 and Chrome.
 */

dfn {
    font-style: italic;
}

/**
 * Address differences between Firefox and other browsers.
 * Known issue: no IE 6/7 normalization.
 */

hr {
    -moz-box-sizing: content-box;
    box-sizing: content-box;
    height: 0;
}

/**
 * Address styling not present in IE 6/7/8/9.
 */

mark {
    background: #ff0;
    color: #000;
}

/**
 * Address margins set differently in IE 6/7.
 */

p,
pre {
    margin: 1em 0;
}

/**
 * Correct font family set oddly in IE 6, Safari 4/5, and Chrome.
 */

code,
kbd,
pre,
samp {
    font-family: monospace, serif;
    _font-family: 'courier new', monospace;
    font-size: 1em;
}

/**
 * Improve readability of pre-formatted text in all browsers.
 */

pre {
    white-space: pre;
    white-space: pre-wrap;
    word-wrap: break-word;
}

/**
 * Address CSS quotes not supported in IE 6/7.
 */

q {
    quotes: none;
}

/**
 * Address `quotes` property not supported in Safari 4.
 */

q:before,
q:after {
    content: '';
    content: none;
}

/**
 * Address inconsistent and variable font size in all browsers.
 */

small {
    font-size: 80%;
}

/**
 * Prevent `sub` and `sup` affecting `line-height` in all browsers.
 */

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

sup {
    top: -0.5em;
}

sub {
    bottom: -0.25em;
}

/* ==========================================================================
   Lists
   ========================================================================== */

/**
 * Address margins set differently in IE 6/7.
 */

dl,
menu,
ol,
ul {
    margin: 1em 0;
}

dd {
    margin: 0 0 0 40px;
}

/**
 * Address paddings set differently in IE 6/7.
 */

menu,
ol,
ul {
    padding: 0 0 0 40px;
}

/**
 * Correct list images handled incorrectly in IE 7.
 */

nav ul,
nav ol {
    list-style: none;
    list-style-image: none;
}

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

/**
 * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3.
 * 2. Improve image quality when scaled in IE 7.
 */

img {
    border: 0; /* 1 */
    -ms-interpolation-mode: bicubic; /* 2 */
}

/**
 * Correct overflow displayed oddly in IE 9.
 */

svg:not(:root) {
    overflow: hidden;
}

/* ==========================================================================
   Figures
   ========================================================================== */

/**
 * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11.
 */

figure {
    margin: 0;
}

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

/**
 * Correct margin displayed oddly in IE 6/7.
 */

form {
    margin: 0;
}

/**
 * Define consistent border, margin, and padding.
 */

fieldset {
    border: 1px solid #c0c0c0;
    margin: 0 2px;
    padding: 0.35em 0.625em 0.75em;
}

/**
 * 1. Correct color not being inherited in IE 6/7/8/9.
 * 2. Correct text not wrapping in Firefox 3.
 * 3. Correct alignment displayed oddly in IE 6/7.
 */

legend {
    border: 0; /* 1 */
    padding: 0;
    white-space: normal; /* 2 */
    *margin-left: -7px; /* 3 */
}

/**
 * 1. Correct font size not being inherited in all browsers.
 * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5,
 *    and Chrome.
 * 3. Improve appearance and consistency in all browsers.
 */

button,
input,
select,
textarea {
    font-size: 100%; /* 1 */
    margin: 0; /* 2 */
    vertical-align: baseline; /* 3 */
    *vertical-align: middle; /* 3 */
}

/**
 * Address Firefox 3+ setting `line-height` on `input` using `!important` in
 * the UA stylesheet.
 */

button,
input {
    line-height: normal;
}

/**
 * Address inconsistent `text-transform` inheritance for `button` and `select`.
 * All other form control elements do not inherit `text-transform` values.
 * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+.
 * Correct `select` style inheritance in Firefox 4+ and Opera.
 */

button,
select {
    text-transform: none;
}

/**
 * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
 *    and `video` controls.
 * 2. Correct inability to style clickable `input` types in iOS.
 * 3. Improve usability and consistency of cursor style between image-type
 *    `input` and others.
 * 4. Remove inner spacing in IE 7 without affecting normal text inputs.
 *    Known issue: inner spacing remains in IE 6.
 */

button,
html input[type="button"], /* 1 */
input[type="reset"],
input[type="submit"] {
    -webkit-appearance: button; /* 2 */
    cursor: pointer; /* 3 */
    *overflow: visible;  /* 4 */
}

/**
 * Re-set default cursor for disabled elements.
 */

button[disabled],
html input[disabled] {
    cursor: default;
}

/**
 * 1. Address box sizing set to content-box in IE 8/9.
 * 2. Remove excess padding in IE 8/9.
 * 3. Remove excess padding in IE 7.
 *    Known issue: excess padding remains in IE 6.
 */

input[type="checkbox"],
input[type="radio"] {
    box-sizing: border-box; /* 1 */
    padding: 0; /* 2 */
    *height: 13px; /* 3 */
    *width: 13px; /* 3 */
}

/**
 * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
 * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
 *    (include `-moz` to future-proof).
 */

input[type="search"] {
    -webkit-appearance: textfield; /* 1 */
    -moz-box-sizing: content-box;
    -webkit-box-sizing: content-box; /* 2 */
    box-sizing: content-box;
}

/**
 * Remove inner padding and search cancel button in Safari 5 and Chrome
 * on OS X.
 */

input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
    -webkit-appearance: none;
}

/**
 * Remove inner padding and border in Firefox 3+.
 */

button::-moz-focus-inner,
input::-moz-focus-inner {
    border: 0;
    padding: 0;
}

/**
 * 1. Remove default vertical scrollbar in IE 6/7/8/9.
 * 2. Improve readability and alignment in all browsers.
 */

textarea {
    overflow: auto; /* 1 */
    vertical-align: top; /* 2 */
}

/* ==========================================================================
   Tables
   ========================================================================== */

/**
 * Remove most spacing between table cells.
 */

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

/* Base - Mobiles and above, light mode by default */
:root {
	/* COLOURS */
	--col-accent: #16b1c3;
	--col-accent-dimmed: #0d7581;
	--col-light: #FFF;
	--col-light-transparent: #FFFFFF00;
	--col-light-subtle: #FBFBFB;
	--col-light-subtle-transparent: #FBFBFB00;
	--col-light-dimmed: #999;
	--col-dark: #222;
	--col-dark-transparent: #22222200;
	--col-dark-subtle: #333;
	--col-dark-subtle-transparent: #33333300;
	--col-dark-dimmed: #666;

	--col-bg: var(--col-light);
	--col-bg-transparent: var(--col-light-transparent);
	--col-bg-dimmed: var(--col-light-dimmed);
	--col-bg-subtle: var(--col-light-subtle);
	--col-fg: var(--col-dark);
	--col-fg-dimmed: var(--col-dark-dimmed);
	--col-fg-subtle: var(--col-dark-subtle);
	--col-fg-subtle-transparent: var(--col-dark-subtle-transparent);

	/* FONTS */
	--fnt-base-size: 16px;
	--fnt-header-size: 3.2em;
	--fnt-nav-size: 1.5em;
	--fnt-family-title: Merriweather, Kefa, Georgia, Serif;
	--fnt-family-body: Merriweather, Georgia, "Bookman Old Style", Times, Serif;
	--fnt-family-mono: Melno, Monaco, Consolas, Monospace;

	/* Margins for headings */
	--mgn-header-top: 100px;
	--mgn-heroheader-top: var(--mgn-header-top);
}

/* Apply a dark color scheme */
@media (prefers-color-scheme: dark) {
	:root {
		--col-bg: var(--col-dark);
		--col-bg-transparent: var(--col-dark-transparent);
		--col-bg-dimmed: var(--col-dark-dimmed);
		--col-bg-subtle: var(--col-dark-subtle);
		--col-fg: var(--col-light);
		--col-fg-dimmed: var(--col-light-dimmed);
		--col-fg-subtle: var(--col-light-subtle);
		--col-fg-subtle-transparent: var(--col-light-subtle-transparent);
	}
}

html[data-color-mode="dark"] {
	--col-bg: var(--col-dark);
	--col-bg-transparent: var(--col-dark-transparent);
	--col-bg-dimmed: var(--col-dark-dimmed);
	--col-bg-subtle: var(--col-dark-subtle);
	--col-fg: var(--col-light);
	--col-fg-dimmed: var(--col-light-dimmed);
	--col-fg-subtle: var(--col-light-subtle);
	--col-fg-subtle-transparent: var(--col-light-subtle-transparent);
}

html[data-color-mode="light"] {
	--col-bg: var(--col-light);
	--col-bg-transparent: var(--col-light-transparent);
	--col-bg-dimmed: var(--col-light-dimmed);
	--col-bg-subtle: var(--col-light-subtle);
	--col-fg: var(--col-dark);
	--col-fg-dimmed: var(--col-dark-dimmed);
	--col-fg-subtle: var(--col-dark-subtle);
	--col-fg-subtle-transparent: var(--col-dark-subtle-transparent);
}

/* Tablets */
@media screen and (min-width: 500px) {
	:root {
		--fnt-base-size: 18px;
		--fnt-header-size: 4.3em;
		--fnt-nav-size: 1.7em;
		--mgn-heroheader-top: 350px;
	}
}

/* Tablets */
@media screen and (min-width: 980px) {
	:root {
		--fnt-base-size: 22px;
	}
}

h1,
h2,
h3,
h4,
h5,
h6 {
	font-family: var(--fnt-family-title);
	font-weight: bold;
	margin: 0.5em 0 0.3em;
}

h1 {
	font-size: 2.5em;
}

h2 {
	font-size: 2.1em;
}

h3 {
	font-size: 2.0em;
}

h4 {
	font-size: 1.8em;
}

h5 {
	font-size: 1.7em;
}

h6 {
	font-size: 1.6em;
}

header.page-header section.title,
header.post-header section.title,
header.mainpage-header section.title {

	display: block;
	overflow: hidden;
	max-width: 900px;
	margin: 0 auto;
}

.mainpage header.mainpage-header {
	background: var(--col-dark-subtle) center no-repeat url('/img/home_background_003.jpg');
	background-size: cover;
	margin-bottom: 2.2em;
}

header h1 {
	font-weight: bold;
	font-size: var(--fnt-header-size);
	text-align: center;
	margin: var(--mgn-header-top) auto 10px;
	color: var(--col-fg);
}

header a {
	text-decoration: none;
}

.mainpage header.mainpage-header h1 {
	color: var(--col-light);
	margin: var(--mgn-heroheader-top) auto 40px;
	text-shadow: var(--col-dark-subtle) 0 2px;
}

body, html {
	accent-color: var(--col-accent);
	font: var(--fnt-base-size) var(--fnt-family-body);
	background: var(--col-bg) none;
	color: var(--col-fg-subtle);
}

main {
	display: block;
	max-width: 800px;
	margin: 0 auto;
	padding: 0 15px;
	background: var(--col-bg) none;
}

nav {
	padding: 10px 0 30px;
	text-align: center;
}

nav a {
	display: inline;
	font-weight: bold;
	font: var(--fnt-nav-size) var(--fnt-family-title);
	padding: 2px;
	margin: 5px;
	color: var(--col-fg-subtle);
	border-bottom: 2px solid var(--col-fg-subtle-transparent);
	text-decoration: none;
	-webkit-transition: border-color 0.5s;
	transition: border-color 0.5s;
}

header.mainpage-header nav a {
	color: var(--col-light);
	border-bottom-color: var(--col-light-transparent);
}

nav a.current,
nav a:hover {
	border-bottom-color: var(--col-fg-subtle);
	text-decoration: none;
}

header.mainpage-header nav a.current,
header.mainpage-header nav a:hover {
	border-bottom-color: var(--col-light);
}

.content p,
.content ul,
.content ol {
	line-height: 1.6em;
}

.content ul.article_list {
	line-height: inherit;
}

.content li::marker {
	color: var(--col-accent-dimmed);
}

.content a,
footer a.social-icon {
	text-decoration: none;
	color: var(--col-accent);
}

.content a:visited,
footer a.social-icon:visited {
	color: var(--col-accent-dimmed);
}

.content a:hover,
footer a.social-icon:hover {
	text-decoration: underline;
}

.content blockquote:before {
	position: absolute;
	top: 5px;
	left: 5px;
	content: "“";
	font-size: 2em;
}

.content blockquote:after {
	position: absolute;
	bottom: 0px;
	right: 10px;
	content: "”";
	font-size: 2em;
}

.content blockquote {
	position: relative;
	padding: 15px 30px 15px 40px;
	font-style: italic;
	font-weight: bold;
	margin: 1em 0 1em 1.5em;
}

.content blockquote p {
	margin-top: 0;
	margin-bottom: 0;
}

.content img,
.content pre,
.content p code {
	border-radius: 3px;
	border-bottom: 2px solid var(--col-bg-dimmed);
}

.content img {
	display: block;
	padding: 5px;
	background: var(--col-bg-subtle) none;
	margin: 0 auto;
	max-width: 95%;
	height: auto;
}

.content table table,
.content table th,
.content table td {
	border-collapse: collapse;
}

.content table {
	margin: 0 auto;
	width: 90%;
}

.content table td,
.content table th {
	padding: 10px;
}

.content table thead {
	border-bottom: 1px solid var(--col-bg-dimmed);
}

.content table tfoot {
	border-top: 1px solid var(--col-bg-dimmed);
}

.content img.avatar {
	float: right;
	width: 160px;
	height: auto;
	margin-top: 15px;
	margin-left: 15px;
	border-radius: 90px;
	shape-outside: circle();
}

.content .caption {
	display: block;
	text-align: center;
	font-style: italic;
	color: var(--col-fg-dimmed);
	margin-top: 0.2em;
	font-size: 0.8em;
}

.content pre,
.content p code {
	background: var(--col-bg-subtle) none;
	font-family: var(--fnt-family-mono);
	color: var(--col-fg-subtle);
}

.content p>code {
	display: inline;
	padding: 1px 5px;
}

.content pre {
	display: block;
	padding: 15px;
}

.article_list {
	list-style-type: none;
	padding: 0;
	position: relative;
	display: block;
}

.postheader {
	display: flex;
	flex-direction: column;
}

.postheader h1 {
	flex-grow: 1;
}

.postheader .info {
	color: var(--col-bg-dimmed);
	flex-shrink: 0;
	margin: 0;
	padding: 0;
	background: transparent none;
}

@media screen and (min-width: 500px) {
	.postheader {
		flex-direction: row;
		align-items: last baseline;
	}

	.postheader .info {
		padding-left: 5px;
		text-align: right;
	}
	
	.postheader h1 {
		margin-bottom: 0;
	}
}

.postheader h1 a,
.postheader h1 a:visited {
	text-decoration: none;
	color: var(--col-fg-subtle);
	display: block;
}

.postheader h1 a:hover {
	text-decoration: none;
	color: var(--col-accent);
}

.postheader h1 a:hover:before {
	content: "§";
	color: var(--col-accent);
	position: absolute;
	left: -50px;
}

.article_list a.readmore {
	text-align: right;
	display: block;
	width: 100%;
	font-size: 0.8em;
}

footer {
	display: block;
	overflow: hidden;
	width: 100%;
	text-align: center;
	color: var(--col-bg-dimmed);
	font-size: 0.9em;
	margin: 0 auto;
	padding: 2em 0;
}

footer a.social-icon {
	background-position: 0 60%;
	padding: 0 20px 0 28px;
	background-repeat: no-repeat;
	text-decoration: none;
}

footer a.twitter {
	background-image: url(/img/Twitter_Logo_Blue.svg);
	background-size: 30px;
}

footer a.twitch {
	background-image: url(/img/TwitchGlitchPurple.svg);
}

#dark-mode-placeholder {
	position: fixed;
	top: 10px;
	right: 10px;
	background-color: var(--col-bg);
	border: 1px solid var(--col-fg-dimmed);
	border-radius: 5px;
}

#dark-mode-placeholder a {
	display: flex;
	width: 20px;
	height: 20px;
	flex-direction: row;
	align-items: center;
	justify-content: center;
	padding: 5px;
}

#dark-mode-placeholder a,
#dark-mode-placeholder svg {
	color: var(--col-fg-dimmed);
	fill: var(--col-fg-dimmed);
}

#dark-mode-placeholder:hover {
	border-color: var(--col-fg);
}

#dark-mode-placeholder:hover a,
#dark-mode-placeholder:hover svg {
	color: var(--col-fg);
	fill: var(--col-fg);
}
:root {
    --col-hl-bleached-bone: #CE972E;
    --col-hl-zesty-lime: #94af33;
    --col-hl-so-orange: #FB6226;
    --col-hl-aubergene: #AC7C94;
    --col-hl-pinkit: #F75790;
    --col-hl-soblue: #16b1c3;

    --col-hl-fg: var(--col-fg, #222);
    --col-hl-fg-sutble: var(--col-fg-subtle, #333);
    --col-hl-fg-dimmed: var(--col-fg-dimmed, #666);
    --col-hl-bg: var(--col-bg, #FFF);
    --col-hl-bg-subtle: var(--col-bg-subtle, #FBFBFB);
    --col-hl-bg-dimmed: var(--col-bg-dimmed, #999);
}

.highlight .nc {
    color: var(--col-hl-aubergene);
}

.highlight .na {
    color: var(--col-hl-zesty-lime);
}

.highlight .nb {
    color: var(--col-hl-bleached-bone);
}

.highlight .nv {
    color: var(--col-hl-fg-dimmed);
}

.highlight .nn {
    color: var(--col-hl-zesty-lime);
}

.highlight .nf,
.highlight .nc {
    color: var(--col-hl-aubergene);
    font-weight: bold;
}

.highlight .k {
    color: var(--col-hl-pinkit);
    font-weight: bold;
}

.highlight .kt {
    color: var(--col-accent);
}

.highlight .c,
.highlight .c1 {
    color: var(--col-hl-bg-dimmed);
}

.highlight .m {
    color: var(--col-hl-so-orange);
}

.highlight .mi {
    color: var(--col-hl-so-orange);
}

.highlight .s {
    color: var(--col-hl-so-orange);
}

.highlight .s2 {
    color: var(--col-hl-bleached-bone);
}

.highlight .se {
    color: var(--col-hl-bleached-bone);
}

.highlight .nt {
    color: var(--col-hl-pinkit);
}

.highlight .cp {
    color: var(--col-hl-zesty-lime);
}

.highlight .o {
    color: var(--col-hl-fg-dimmed);
}