* {
	margin: 0;
	padding: 0;
	box-sizing: border-box;
}

:root {
	color-scheme: light dark;
	--padding: 1.5rem;
	--rounded: 0.5rem;
	--color-black: #000;
	--color-white: #fff;
	--color-grey: #777;
	--color-light: #efefef;
	--color-text: hsl(0, 0%, 20%);
	--color-text-dimmed: hsl(0, 0%, 40%);
	--color-text-highlight: hsl(0, 0%, 0%);
	--color-background: var(--color-white);
	--color-border: var(--color-light);
	--color-dropdown-background: var(--color-black);
	--color-dropdown-border: #444;
	--color-dropdown-text: var(--color-white);
	--color-button-background: var(--color-black);
	--color-button-text: var(--color-white);
	--color-code-light-grey:  #cacbd1;
	--color-code-comment:     #a9aaad;
	--color-code-white:       #c5c9c6;
	--color-code-red:         #d16464;
	--color-code-orange:      #de935f;
	--color-code-yellow:      #f0c674;
	--color-code-green:       #a7bd68;
	--color-code-aqua:        #8abeb7;
	--color-code-blue:        #7e9abf;
	--color-code-purple:      #b294bb;
	--font-family-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
	--font-family-mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
}

html[data-theme] {
	transition: all .3s;
}

/* Dark theme styles */
[data-theme="dark"] {
	--color-background: var(--color-black);
	--color-light: #222;
	--color-text: hsl(0, 0%, 80%);
	--color-text-dimmed: hsl(0, 0%, 60%);
	--color-text-highlight: hsl(0, 0%, 100%);
	--color-dropdown-background: var(--color-white);
	--color-dropdown-text: var(--color-black);
	--color-dropdown-border: #ddd;
	--color-button-background: var(--color-white);
	--color-button-text: var(--color-black);
}

.rounded {
	border-radius: var(--rounded);
}

html {
	font-family: var(--font-family-sans);
	color: var(--color-text);
	background: var(--color-background);
	line-height: 1;
}
img {
	width: 100%;
	border-radius: var(--rounded);
}
body {
	padding: var(--padding);
	max-width: 80rem;
	margin: 0 auto;
}
li {
	list-style: none;
}
a {
	color: currentColor;
	text-decoration: none;
}
button {
	font: inherit;
	background: none;
	border: 0;
	color: currentColor;
	cursor: pointer;
}
strong, b {
	font-weight: 600;
}
small {
	font-size: inherit;
	color: var(--color-text-dimmed);
}

.header {
	position: relative;
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	margin-right: -1rem;
	margin-left: -1rem;
	margin-bottom: 6rem;
}

.logo summary {
	color: var(--color-text-highlight);
	list-style: none;
}
.logo summary span {
	padding: 1rem;
	display: flex;
	align-items: center;
	font-weight: 600;
	cursor: pointer;
}
.logo summary svg {
	margin-right: .75rem;
}
.logo summary svg {
	width: 1.25rem;
	height: 1.25rem;
}
.logo summary::-webkit-details-marker {
	display: none;
}
.logo summary:focus {
	outline: 0;
}
.logo-dropdown-box {
	position: absolute;
	top: 3rem;
	left: 1rem;
	z-index: 1;
	display: flex;
	flex-direction: column;
	background: var(--color-dropdown-background);
	color: var(--color-dropdown-text);
	max-width: 25rem;
	box-shadow: rgba(0,0,0, .1) 0 5px 10px;
	border-radius: var(--rounded);
}
.logo-dropdown-box header {
	display: flex;
	border-bottom: 1px solid var(--color-dropdown-border);
	justify-content: space-between;
}
.logo-dropdown-box header a {
	display: block;
	padding: .75rem 1rem;
	font-weight: 600;
}

.killer-button {
	padding: .75rem 1rem;
}
.killer-button svg {
	width: 1.25rem;
	height: 1.25rem;
}
.killer-button svg * {
	fill: currentColor;
}

.logo-dropdown-box-content {
	line-height: 1.5em;
	display: flex;
	flex-wrap: wrap;
	padding: 1rem;
}
.logo-dropdown-box-content > div {
	flex-grow: 1;
	flex-shrink: 0;
	flex-basis: 50%;
}
.logo-dropdown-box-content > div:not(:last-child) {
	margin-bottom: 1.5rem;
}
.logo-dropdown-box-content h2 {
	text-transform: uppercase;
	font-size: .75rem;
	font-weight: 600;
	letter-spacing: .1em;
	color: #999;
	margin-bottom: .5rem;
}
.logo-dropdown-box ul:not(:last-child) {
	margin-bottom: 1.5rem;
}
.logo-dropdown-box-content a {
	white-space: nowrap;
	padding-right: 2rem;
	display: block;
}
.logo-dropdown-box-content a:before {
	content: "→";
	padding-right: .5rem;
}
.logo-dropdown-box footer {
	border-top: 1px solid var(--color-dropdown-border);
	padding: .75rem 1rem;
	line-height: 1.5em;
	margin-top: .5rem;
	color: var(--color-dropdown-text);
	font-size: .875rem;
}

.menu {
	color: var(--color-text-highlight);
	display: flex;
	gap: .5rem;
	align-items: center;
	line-height: 1;
}
.menu a, .menu button {
	padding: .5rem;
	display: block;
}
.menu svg {
	width: 1.25rem;
	height: 1.25rem;
}
.menu a[aria-current] {
	text-decoration: underline;
	text-underline-offset: .25rem;
}

/* Theme toggle button styles */
.theme-toggle {
	margin-left: 2.5rem;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
}
.theme-toggle .sun-icon {
	display: none;
}
.theme-toggle .moon-icon {
	display: block;
}
[data-theme="dark"] .theme-toggle .sun-icon {
	display: block;
}
[data-theme="dark"] .theme-toggle .moon-icon {
	display: none;
}


.section {
	padding: 3rem 0;
}

.grid {
	--columns: 12;
	--gutter: 3rem;
	display: grid;
	grid-gap: var(--gutter);
	grid-template-columns: 1fr;
}
.grid > .column {
	margin-bottom: var(--gutter);
}

.autogrid {
	--gutter: 3rem;
	--min: 10rem;
	display: grid;
	grid-gap: var(--gutter);
	grid-template-columns: repeat(auto-fit, minmax(var(--min), 1fr));
	grid-auto-flow: dense;
}

h1, h2, h3, h4, h5, h6 {
	color: var(--color-text-highlight);
	font-size: inherit;
	font-weight: inherit;
	line-height: inherit;
}

.text {
	line-height: 1.5em;
}
.text :where(h1, h2, h3, h4, h5, h6, a, strong, b) {
	color: var(--color-text-highlight);
}
.text a {
	text-decoration: underline;
	text-underline-offset: .25rem;
}
.text :first-child {
	margin-top: 0;
}
.text :last-child {
	margin-bottom: 0;
}
.text p,
.text ul,
.text ol {
	margin-bottom: 1.5rem;
}
.text li::marker {
	color: var(--color-text-highlight);
}
.text ul,
.text ol {
	margin-left: 1rem;
}
.text ul > li {
	list-style: disc;
}
.text ol > li {
	list-style: numeric;
}
.text h1,
.h1,
.intro {
	font-size: 2rem;
	margin-bottom: 3rem;
	line-height: 1.25em;
}
.text h2,
.h2 {
	font-size: 1.25rem;
	font-weight: 600;
	margin-bottom: 1.25rem;
}
.text h3,
.h3 {
	font-weight: 600;
}
.text .codeblock {
	display: grid;
}
.text code {
	font-family: var(--font-family-mono);
	font-size: 1em;
	background: var(--color-light);
	padding: 0 .5rem;
	display: inline-block;
	color: var(--color-text-highlight);
}
.text pre {
	margin: 3rem 0;
	background: var(--color-black);
	color: var(--color-white);
	padding: 1.5rem;
	overflow-x: scroll;
	overflow-y: hidden;
	line-height: 1.5rem;
}
.text pre code {
	padding: 0;
	background: none;
	color: inherit;
}
.text hr {
	margin: 6rem 0;
}
.text dt {
	font-weight: 600;
}
.text blockquote {
	font-size: 1.25rem;
	line-height: 1.5em;
	border-left: 2px solid currentColor;
	padding-left: 1rem;
	margin: 3rem 0 3rem -1rem;
	color: var(--color-text-highlight);
}
.text figure {
	margin: 3rem 0;
}
.text figcaption {
	padding-top: .75rem;
	color: var(--color-text-dimmed);
}

hr {
	border: 0;
	background: var(--color-text-highlight);
	height: 2px;
	width: 1.5rem;
	margin: 3rem auto;
}

.align-center {
	text-align: center;
}

.intro {
	max-width: 40rem;
}
.intro *:not(:last-child) {
	margin-bottom: 1em;
}

.cta {
	background: var(--color-button-background);
	color: var(--color-button-text);
	display: inline-flex;
	justify-content: center;
	padding: .5rem 1.5rem;
	border-radius: var(--rounded);
}

.box {
	background: var(--color-light);
	border-radius: var(--rounded);
	padding: 1.5rem;
}
@media screen and (min-width: 60rem) {
	.transparent-box {
		padding-top: 1.5rem;
	}
}

.video,
.img {
	position: relative;
	display: block;
	--w: 1;
	--h: 1;
	aspect-ratio: var(--w) / var(--h);
	border-radius: var(--rounded);
}
.img img,
.video iframe {
	position: absolute;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	border: 0;
	border-radius: var(--rounded);
}
.img[data-contain] img {
	object-fit: contain;
}
.img-caption,
.video-caption {
	color: var(--color-text-highlight);
	padding-top: .75rem;
	line-height: 1.5em;
}

.footer {
	padding: 9rem 0 6rem;
	line-height: 1.5em;
}
.footer:before {
	content: "";
	display: block;
	width: 1.5rem;
	height: 2px;
	background: var(--color-text-highlight);
	margin-bottom: 1.5rem;
}

.footer h2 {
	font-weight: 600;
	margin-bottom: .75rem;
}
.footer ul,
.footer p {
	color: var(--color-text-dimmed);
}
.footer p {
	max-width: 15rem;
}
.footer a:hover {
	color: var(--color-text);
}

.social {
	margin-top: 1.5rem;
	margin-left: -.5rem;
	color: var(--color-text-highlight);
}
.social a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: .5rem;
}
.social svg {
	width: 1.25rem;
	height: 1.25rem;
}

.map {
	--w: 2;
	--h: 1;
	aspect-ratio: var(--w) / var(--h);
	position: relative;
	overflow: hidden;
	background: var(--color-text-highlight);
	border-radius: var(--rounded);
}
.map iframe {
	position: absolute;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	width: 100%;
	height: 100%;
	border: 0;
	border-radius: var(--rounded);
}

.margin-s {
	margin-bottom: .75rem;
}
.margin-m {
	margin-bottom: 1.5rem;
}
.margin-l {
	margin-bottom: 3rem;
}
.margin-xl {
	margin-bottom: 4.5rem;
}
.margin-xxl {
	margin-bottom: 6rem;
}


@media screen and (min-width: 60rem) {
	body {
		--padding: 3rem;
	}

	.grid {
		grid-template-columns: repeat(12, 1fr);
	}
	.grid > .column {
		grid-column: span var(--columns);
	}

}
