@import url('https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,400;0,700;0,800;1,400&family=Inconsolata:wght@400;700&family=Lora:ital,wght@1,700&display=swap');

:root {
	--grid: minmax(1.5em, 1fr) minmax(20rem, var(--content-max-width)) minmax(1.5em, 1fr);

	--font-family-body: 'Open Sans', sans-serif;
	--font-family-heading: 'Open Sans', sans-serif;
	--font-family-heading-1: 'Lora', serif;
	--font-family-code: 'Inconsolata', monospace;

	/* From type-scale.com */
	--fs-h1: 3.375rem;
	--fs-h2: 2.25rem;
	--fs-h3: 1.5rem;
	--fs-h4: 1rem;
	--fs-p: 1rem;
	--fs-nav-links: 0.875rem;

	--content-max-width: 70ch;

	--line-height-text: 1.6;
	--line-height-heading: 1.05;
	--line-height-code: 1.4;
	--line-height-listing: 1.6;

	--clr-bg: white;
	--clr-link: #0467a0;
	--clr-primary: #a30093;
	--clr-text: black;
	--clr-box-bg: #f7f7f7;
	--clr-gray: #474747;
	--clr-code-block-lang: #7a7a7a;
}

@media (prefers-color-scheme: dark) {
	:root {
		--clr-bg: #222;
		--clr-primary: #00f2fe;
		--clr-link: #ff3ed4;
		--clr-text: #e5e5e5;
		--clr-box-bg: #292929;
		--clr-gray: #a0a0a0;
		--clr-code-block-lang: #7a7a7a;
	}
}

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

html {
	box-sizing: border-box;
}

body {
	padding: 0;
	margin: 0;
	font-family: var(--font-family-body);
	background: var(--clr-bg);
	color: var(--clr-text);
}

main {
	display: grid;
	grid-template-columns: var(--grid);
}

main .content {
	grid-column: 2 / span 1;
}

a {
	color: var(--clr-link);
	text-decoration: none;
}

blockquote {
	position: relative;
	font-size: 1.1em;
	font-style: italic;
	border-left: solid 6px var(--clr-primary);
	margin: 10px 0;
	padding: 0.5em 1em;
	background: var(--clr-box-bg);
}

h1 {
	font-family: var(--font-family-heading-1);
	line-height: var(--line-height-heading);
	color: var(--clr-primary);
	font-weight: 900;
	font-size: var(--fs-h1);
	font-style: italic;
}

h2 {
	font-family: var(--font-family-heading);
	line-height: var(--line-height-heading);
	font-size: var(--fs-h2);
	margin: 1em 0 0.5em 0;
}

h3 {
	font-family: var(--font-family-heading);
	line-height: var(--line-height-heading);
	font-size: var(--fs-h3);
	margin-bottom: 0.75rem;
}

h4 {
	font-family: var(--font-family-heading);
	line-height: var(--line-height-heading);
	font-size: var(--fs-h4);
	font-weight: 700;
}

p {
	font-size: var(--fs-p);
	line-height: var(--line-height-text);
}

code {
	font-family: var(--font-family-code);
}

li {
	line-height: var(--line-height-listing);
}

div.highlighter-rouge {
	position: relative;
}

div.highlighter-rouge::before {
	color: var(--clr-code-block-lang);
	position: absolute;
	left: -0.5rem;
	top: -0.5rem;
	background: var(--clr-bg);
	z-index: 10;
	padding: 0 0.5rem;
	text-align: left;
	font-size: 0.8rem;
	font-family: var(--font-family-code);
	line-height: var(--line-height-code);
	text-transform: uppercase;
	vertical-align: text-top;
}

div.highlighter-rouge::after {
	color: var(--clr-code-block-lang);
	position: absolute;
	content: '</>';
	right: -0.5rem;
	bottom: -0.5rem;
	background: var(--clr-bg);
	z-index: 10;
	padding: 0 0.5rem;
	text-align: left;
	font-size: 0.8rem;
	font-family: var(--font-family-code);
	line-height: var(--line-height-code);
	text-transform: uppercase;
	vertical-align: text-top;
}

div.language-javascript::before {
	content: 'JavaScript';
}

div.language-typescript::before {
	content: 'TypeScript';
}

div.language-text::before {
	content: 'Text';
}

div.language-bash::before {
	content: 'Bash';
}

div.language-swift::before {
	content: 'Swift';
}

div.language-objc::before {
	content: 'Objective-C';
}

div.language-ruby::before {
	content: 'Ruby';
}

div.language-c::before {
	content: 'C';
}

div.language-json::before {
	content: 'JSON';
}

div.language-Dockerfile::before {
	content: 'Docker';
}

pre.highlight {
	margin: 0;
}

div.highlight {
	/* overflow: auto; */
	/* background-color: var(--clr-box-bg); */
	line-height: var(--line-height-code);
	font-size: 1rem;
	margin: 3rem 0;
	border-radius: 5px;
	padding: 1.5rem 0rem;
	letter-spacing: 0;
	position: relative;
}

div.highlight::before,
div.highlight::after {
	height: 1px;
	content: '';
	position: absolute;
	width: min(100vw, calc(100% + 3rem));
	left: -1.5rem;
}

div.highlight::before {
	background: linear-gradient(
		to right,
		rgba(122, 122, 122, 0.1) 0%,
		rgba(122, 122, 122, 0.5) 50%,
		rgba(0, 242, 254, 0.1) 100%
	);
	top: 0;
}

div.highlight::after {
	background: linear-gradient(
		to right,
		rgba(0, 242, 254, 0.1) 0%,
		rgba(122, 122, 122, 0.5) 50%,
		rgba(122, 122, 122, 0.1) 100%
	);
	bottom: 0;
}

pre.highlight {
	overflow: auto;
}

.hljs-comment {
	font-style: italic;
	color: var(--clr-gray);
}

.hljs-keyword {
	color: var(--clr-primary);
	font-weight: bold;
}

/* The Docker highlighter seems to be eating a space when marking a span as bash */
.language-Dockerfile span.language-bash::before {
	content: ' ';
}

.post header {
	margin: 2em 0;
}

.post h1 {
	margin-bottom: 0.5rem;
}

.post-date {
	color: var(--clr-gray);
	font-variant-caps: all-small-caps;
	font-size: 18px;
}

.section-title {
	font-variant-caps: small-caps;
	font-size: 24px;
	color: var(--clr-gray);
	margin-left: -20px;
	margin-bottom: 10px;
}

@media (max-width: 740px) {
	.section-title {
		margin-left: 0px;
	}
}

.article-list article {
	margin-bottom: 1.5rem;
}

.article-list-link {
	display: block;
	font-size: var(--fs-h4);
	font-weight: 700;
}

.article-list .post-date {
	font-size: 1rem;
}
