:root {
	--main-text-color: black;
	--dark-link-color: rgb(113, 183, 225);
	--dark-text-color: rgb(200,200,200);
	--dark-title-color: rgb(215, 215, 215);
	--dark-background-color: rgb(34,34,37);
	--sans-serif: -apple-system,BlinkMacSystemFont,avenir next,avenir,helvetica neue,helvetica,ubuntu,roboto,noto,segoe ui,arial,sans-serif;
	--avenir: avenir next,avenir,sans-serif;
	--baskerville: baskerville,serif;
}

body {
	font-family: var(--sans-serif);
	margin: 0;
	padding: 0;
	line-height: 1.15;
	display: grid;
	grid-template-columns: 1fr;
	color: var(--main-text-color);
	width: 100%;
	touch-action: manipulation;
	text-wrap: pretty;
}

h1 {
	font-weight: 100;
	line-height: 1.5;
}

main article li,
p {
	line-height: 1.8;
	word-break: break-word;
}

a {
	opacity: 1;
	text-decoration: none;
	background-color: transparent;
	color: rgb(65, 110, 210);
}

a:active {
	opacity: 0.8;
	transition: opacity 0.15s ease-out;
}

a:hover, a:focus {
	opacity: 0.5;
}

a, a:focus, a:hover {
	transition: opacity 0.15s ease-in;
}

a:focus-visible {
	outline: 2px solid currentColor;
	outline-offset: 2px;
}

/* Skip link for keyboard navigation */
.skip-link {
	position: absolute;
	top: -40px;
	left: 0;
	background: var(--main-text-color);
	color: white;
	padding: 8px 16px;
	z-index: 100;
	text-decoration: underline;
}

.skip-link:focus {
	top: 0;
}

hr {
	height: 1px;
	border: 0;
	background-color: rgba(0,0,0,.1);
}

ol {
	list-style-type: none;
	padding: 0;
}

section {
	font-family: var(--sans-serif);
	margin: auto;
	max-width: 60rem;
}

article {
	padding: 1rem 3rem;
}

figure {
	margin: 0;
}

figcaption {
	font-size: 0.75rem;
	color: #777;
	margin-top: 0.25rem;
}

figure img {
	width: 100%;
	object-fit: cover;
}

/* small logo images that show up in the middle of the text */
article p a img {
	width: 1.19rem;
	height: 1.19rem;
	transform: translate(0, 0.15rem);
}

article li {
	line-height: 1.7;
}

main article small a {
  font-size: 1rem;
}

footer {
	text-align: center;
	padding: 0rem 3rem;
	width: calc(100vw - 6rem);
}
footer nav li {
	line-height: 1.5;
	width: 100%;
	white-space: pre-wrap;
	margin-top: 0.5rem;
}
footer nav h4 {
	white-space: break-spaces;
	font-weight: 500;
}

table { 
  width: 100%;
  border-collapse: collapse;
}

th, td {
  padding: .5rem .75rem;
  text-align: left;
  border-bottom: 1px solid #e5e7eb;
}

thead th {
  background: #f8fafc;
  font-weight: 600;
  border-bottom: 2px solid #e5e7eb;
}

tbody tr:hover { background: #f9fafb; }
caption { caption-side: bottom; padding-top: .5rem; color: #6b7280; font-size: .875rem; }

.logo {
	margin: auto;
	color: var(--main-text-color);
	padding-top: 3rem;
	padding-bottom: 3rem;
	text-align: center;
}

.logo h1 {
	font-size: 1.15rem;
	color: #555;
	font-weight: 600;
	font-family: -apple-system,BlinkMacSystemFont,avenir next,avenir,helvetica neue,helvetica,ubuntu,roboto,noto,segoe ui,arial,sans-serif;
}

.logo h2 {
	font-size: 0.875rem;
	font-weight: 200;
	text-transform: uppercase;
	letter-spacing: 0.1em;
	color: #777;
}

.intro {
	padding-top: 6rem;
}

.intro article {
	display: grid;
}

.intro article figure {
	grid-row: 2;
}

.intro article h1 {
	font-size: 1.5rem;
	font-weight: 600;
	text-align: center;
	margin-top: 0;
	line-height: 1.25;
}

.intro article p {
	font-size: 1rem;
	margin-top: 2rem;
}

.posts {
	padding: 0 4rem;
}

.posts li {
	text-align: center;
	padding-bottom: 2.5rem;
}

.posts li p {
	max-width: 25rem;
	margin: auto;
	padding: 1rem 0;
}

.posts li a {
	font-size: 1.8rem;
	font-weight: 300;
}

.posts li time {
	color: #777;
}

.all-posts,
.all-posts + aside h2 {
	text-align: center;
}

.project-menu {
  background: white;
  display: flex;
  justify-content: start;
  align-items: center;
  position: sticky;
  z-index: 10;
  top: 0;
  width: calc(100vw - 1rem);
  height: 3rem;
  border-bottom: 1px solid rgba(0,0,0,.1);
  margin-top: -3rem;
}

.hamburger {
  margin-left: auto;
  margin-right: 0rem;
  background: none;
  border: none;
  cursor: pointer;
  padding: 0.5rem;
  display: flex;
  align-items: center;
  justify-content: center;
}

.hamburger:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 2px;
}

.toc,
.show-toc .toc {
  position: fixed;
  z-index: 2;

  visibility: visible;
  padding: 2rem;
  padding-right: 3rem;
  top: 0;
  right: 0;
  height: 92vh;
  background: white;
  box-shadow: -2px 1px 5px -1px rgba(0,0,0,0.75);
  transition-property: right, visibility;
  transition-duration: 0.25s, 0.01s;
  transition-delay: 0s, 0s;
  transition-timing-function: ease-out, linear;
  overflow-y: auto;
}

.toc {
  visibility: hidden;
  transition-duration: 0.25s, 0.01s;
  transition-delay: 0s, 2s;
  transition-timing-function: linear, linear;
  right: -150%;
}

.show-toc:before {
  width: 100vw;
  height: 100vh;
  background: rgba(0,0,0,0.5);
  content: " ";
  position: fixed;
  top: 0;
  left: 0;
  z-index: 1;
}

.show-toc {
  overflow: hidden;
}

.toc h1 {
  font-size: 1.5rem;
}

main article {
	color: #222;
	box-sizing: border-box;
	max-width: 49rem;
	padding: 1rem 2rem;
	margin: auto;
  width: 100vw;
  overflow: hidden;
}

main.project article {
	max-width: 70rem;
  padding: 0 0.5rem;
  overflow: visible;
}

main.project {
  display: flex;
  flex-direction: column;
}

main article li,
main article a,
main article p {
	font-size: 1.15rem;
}

main article strong {
	font-weight: 500;
}
main article li strong {
  font-size: 1.25rem;
}

main article ul {
	list-style: square;
	color: #333;
}

main article header {
	text-align: center;
	padding-bottom: 0.5rem;
	margin-bottom: 3rem;
	border-bottom: 1px solid #777;
  overflow: visible;
	position: sticky;
	z-index: 10;
	top: -8rem;
  background-color: white;
}

main.project article header {
	border-bottom: transparent;
}

main article header h1 {
	font-size: 2.25rem;
	font-weight: 700;
	margin-bottom: 1.5rem;
	padding-bottom: 0;
	line-height: 1.2;
  text-align: center;
  width: 100%;
  max-width: 100%;
  min-width: 100%;
}

main article header p {
	font-size: 1.55rem;
	font-weight: 300;
	color: #777;
	margin-top: 0;
	padding-top: 0;
	line-height: 1.2;
  width: 100%;
  text-align: center;
}

main article header time {
	color: #444;
	font-weight: 200;
	text-align: left;
}

main article header nav {
  display: flex;
  justify-content: start;
	margin-top: 3rem;
}

main.project article header nav {
  display: none;
}

main article header nav time {
  position: absolute;
  margin-top: 2.8rem;
  margin-left: 0.3rem;
}

main article header nav span {
  display: flex;
	text-align: center;
  width: 100%;
}

.project-menu a,
main article header nav a {
	font-size: 0.9rem;
	text-transform: uppercase;
	color: #777;
  margin-right: 0.6rem;
}

main article.documentation a.documentation,
main article.introduction a.introduction {
  font-weight: 500;
  color: #222;
}

main article h2 a,
main article h2 {
	color: #222;
	font-size: 1.6rem;
	font-weight: 500;
}

main article h2 {
	margin-top: 1.8rem;
}

main article img {
	max-width: 100%;
	object-fit: cover;
}

main article pre {
  line-height: 1.6;
  padding: 2rem 1rem;
	max-width: 100%;
	width: calc(100vw - 6rem);
	overflow: auto;
}

main.project article pre {
	width: calc(100vw - 3rem);
}

main article pre code {
	overflow: auto;
}

main hr {
	margin-bottom: 0;
	padding-bottom: 0;
}

main footer {
	display: flex;
	justify-content: center;
	align-items: center;
	height: 3rem;
}

main footer nav {
	text-align: center;
	text-transform: uppercase;
	font-size: 0.85rem;
}

main footer nav a {
	padding: 1.5rem 0.25rem;
}

main .center-images img {
	text-align: center;
	margin: auto;
	display: flex;
}

main .with-lists ol {
	list-style-type:upper-roman;
	padding-left: 2rem;
}

.blur {
  filter: blur(5px);
}

