/*
-----------------------------------------------
	vars – css custom-properties

	NOTE
	- some vars change inside media-queries!
	- under normal conditions, there's no need to touch these
-----------------------------------------------
*/
:root {
	--nav-h:       6rem;
	--top-offset:  6rem;
	--sidebar-w:  30rem;
	--sidebar-mid-w: 36rem;
	--sidebar-large-w: 48rem;
	--main-width: 80rem;
	--code-w:      72em;
	--side-nav:  3.2rem;
	--side-page:   var(--side-nav);

	/* easings */
	--in-cubic:    cubic-bezier(0.55, 0.055, 0.675, 0.19);
	--out-cubic:   cubic-bezier(0.215, 0.61, 0.355, 1);
	--inout-cubic: cubic-bezier(0.645, 0.045, 0.355, 1);

	--in-back:     cubic-bezier(0.6, -0.28, 0.735, 0.045);
	--out-back:    cubic-bezier(0.175, 0.885, 0.32, 1.275);
	--inout-back:  cubic-bezier(0.68, -0.55, 0.265, 1.55);
}

@media screen and (min-width: 768px) {
	:root {
		--side-page:  14vw;
		--top-offset: 10rem;
		--side-nav: 4.8rem;
	}
}

/*	theme vars */
.theme-default {
	--back:       	#ffffff;
	--back-light: 	#f6fafd;
	--back-api: 		#eff8ff;
	--prime:      	#ff3e00;
	--second:     	#676778;
	--flash:      	#40b3ff;
	--heading:	var(--second);
	--text:      		#444;
	--sidebar-text: rgba(255, 255, 255, .75);
	--border-w:  		.3rem; /* border-width  */
	--border-r:  		.4rem; /* border-radius */
}

/*	typo vars */
.typo-default {
	--unit:     .8rem;
	--code-fs: 1.3rem;
	--h6:      1.4rem;
	--h5:      1.6rem;
	--h4:      1.8rem; /* default font-size */
	--h3:      2.6rem;
	--h2:        3rem;
	--h1:      3.2rem;
	--linemax:   42em; /* max line-length */
	--lh:  		 	  1.5; /* base line-height */
}

body {
	--font: 'Overpass', sans-serif;
	--font-mono: 'Fira Mono', monospace;
	--font-ui: var(--font-mono);
	--font-system: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;
}


/*	fonts ---------------------------------- */
/* overpass-300normal - latin */
@font-face {
	font-family: 'Overpass';
	font-style: normal;
	font-weight: 300;
	font-display: fallback;
	src:
		local('Overpass Light '),
		local('Overpass-Light'),
		url('fonts/overpass/overpass-latin-300.woff2') format('woff2');
}

/* overpass-600normal - latin */
@font-face {
	font-family: 'Overpass';
	font-style: normal;
	font-weight: 600;
	font-display: fallback;
	src:
		local('Overpass Bold '),
		local('Overpass-Bold'),
		url('fonts/overpass/overpass-latin-600.woff2') format('woff2');
}

/* fira-mono-400normal - latin */
@font-face {
	font-family: 'Fira Mono';
	font-style: normal;
	font-weight: 400;
	font-display: fallback;
	src:
		local('Fira Mono Regular '),
		local('Fira Mono-Regular'),
		url('fonts/fira-mono/fira-mono-latin-400.woff2') format('woff2');
}

/*	base reset ----------------------------- */
html {
	font-size: 62.5%;
	-ms-text-size-adjust: 62.5%;
	-webkit-text-size-adjust: 62.5%;
	-ms-overflow-style: -ms-autohiding-scrollbar;
	box-sizing: border-box;
	border-collapse: collapse;
}

html,
body,
#sapper {
	width: 100%;
	height: 100%;
}

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

/*	link reset ----------------------------- */
a {
	text-decoration: none;
	cursor: pointer;
	color: inherit;
}

a:hover, a:active { color: var(--flash) }
a:focus { outline: none }

/*
-----------------------------------------------
	global styles
-----------------------------------------------
*/

/*	typography ----------------------------- */
body {
	font: 300 var(--h4)/var(--lh) var(--font);
	background-color: var(--back);
	color: var(--text);

	/* default spacing of Overpass is a bit too airy */
	/* letter-spacing: -.013em; */
}

h1, h2, h3, h4, h5, h6, blockquote {
	position: relative;
	margin: 0;
	color: var(--heading);
}

/* h1, h2, h3, h4, h5, h6 { font-weight: 600 } */
h6 { font-size: var(--h6) }
h5 { font-size: var(--h5) }
h4 { font-size: var(--h4) }
h3 { font-size: var(--h3) }
h2 { font-size: var(--h2) }
h1 { font-size: var(--h1) }

h1, h2 {
	font-family: var(--font);
	line-height: 1.25;
}

h3 { font-weight: 300 }

p, ol, ul {
	margin: 0 0 1em 0;
}

.b, b, strong { font-weight: 600 }

tt, code, kbd, samp {
	font: 400 var(--code-fs)/1.7 var(--font-mono);
}

code {
	position: relative;
	border-radius: .3em;
	white-space: nowrap;
	color: #444;
	-webkit-font-smoothing: initial;
}

pre code {
	top: 0;
	white-space: inherit;
	background-color: none;
}

/* sync CodeMirror with prism  */
.CodeMirror {
	font-size: var(--code-fs) !important;
}

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

/*	opinionated styles --------------------- */

li:not(.white) > h2 {
	color: var(--second)
}

blockquote {
	position: relative;
	margin: 1.6rem 0 2.4rem;
	padding: 2rem 2.4rem 1.8rem 2.4rem;
	border-radius: var(--border-r);
	font-family: var(--font);
	max-width: var(--linemax);
}

blockquote p {
	font-size: var(--h5);
}

blockquote :last-child {
	margin: 0;
}

/*  buttons -------------------------------- */
button {
	font-family: inherit;
	font-size: inherit;
	background-color: transparent;
	border: none;
	color: currentColor;
	cursor: pointer;
}

button:focus,
.btn:focus { outline: 0 }

button[disabled],
.btn[disabled],
.btn:hover[disabled] {
	opacity: .55;
	pointer-events: none;
}

button > svg,
.btn > svg {
	position: relative;
	top: -.1rem;
	width: 2rem !important;
	height: 2rem !important;
	stroke: currentColor !important;
}

/*  reset ------- */
.btn {
  --btn-h: 4rem;
  --btn-outline: .2rem;
  --btn-font: var(--font);
  --btn-calc-h: calc(var(--btn-h) - var(--btn-outline) * 2);
  --btn-hover: linear-gradient(to top, rgba(0,0,0,.07), rgba(0,0,0,.07));

  position: relative;
  margin: 0 .8rem .8rem 0;
  vertical-align: middle;
  white-space: nowrap;
  display: inline-block;
  zoom: 1;
  border: none transparent;
	font: var(--h4) var(--btn-font);
	border-radius: var(--border-r);
  color: currentColor;
  cursor: pointer;
}

/*  default */
.btn {
	line-height: var(--btn-h);
  height: var(--btn-h);
  padding: 0 1.6rem;
	transition: all .1s;
}

.btn:hover  {
	transform: scale(.98);
	mix-blend-mode: multiply;
	background-image: var(--btn-hover);
}

/*  optional */
.btn[outline] {
	line-height: var(--btn-calc-h);
  height: var(--btn-calc-h);
  border: var(--btn-outline) solid currentColor;
  background-color: white;
  color: currentColor;
}

/*  links ------------------------------------- */
a {
	position: relative;
	padding: 0 0 1px 0;
	border-bottom: 1px solid currentColor;
	user-select: none;
	color: var(--prime);
	transition: color .2s, border .2s, padding .2s;
}

a:hover  {
	color: var(--flash);
}

a:hover {
	padding: 0;
	border-bottom: 2px solid currentColor;
}

a.no-underline {
	border-bottom: none;
	padding: 0;
}

/* a:hover:not(.disabled) > .icon { stroke: var(--flash) } */

/*  lists ---------------------------------- */
.listify ol,
.listify ul {
	--list-padding: 2.9rem;

	list-style: none;
	color: currentColor;
	margin-left: var(--list-padding);
}

.listify ol > li,
.listify ul > li {
	max-width: calc(var(--linemax) - var(--list-padding));
	line-height: 1.5;
	margin: 0 0 0.4rem 0;
}

.listify ul > li:before {
	content: '';
	position: absolute;
	margin-top: 1.1rem;
	margin-left: -1.8rem;
	background-color: var(--second);
	width: .6rem;
	height: .6rem;
	border-radius: 2px;
	opacity: 0.7;
}

.listify ol { list-style: decimal }

/*  tables --------------------------------- */
table {
	width: 100%;
	font-size: var(--h5);
}

td, th {
	text-align: left;
	border-bottom: 1px solid #eee;
	padding: 0.4rem 0.8rem 0.4rem 0;
}

table code, table span {
	white-space: pre;
}

/*	grid ----------------------------------- */
.grid, .grid.half {
	display: grid;
	grid-gap: 2.4rem;
	grid-template-columns: 1fr;
	align-items: center;
}

.grid.stretch { align-items: stretch }

.grid > .cols-2,
.grid > .cols-3 { grid-column: span 1 }

@media screen and (min-width: 840px) {
	.grid.half,
	.grid { grid-template-columns: repeat(2, 1fr) }
	.grid > .cols-2,
	.grid > .cols-3 { grid-column: span 2 }
}

@media screen and (min-width: 1100px) {
	.grid { grid-template-columns: repeat(3, 1fr) }
	.grid > .cols-2 { grid-column: span 2 }
	.grid > .cols-3 { grid-column: span 3 }
}

/*	helper styles -------------------------- */
.flex-auto { flex: 1 0 auto }

.py0 {
	padding-top: 0 !important;
	padding-bottom: 0 !important;
}

.legend, figcaption, .post aside {
	max-width: none;
	margin: 0 auto;
	padding: 1.6rem 0 0 .8rem;
	font: 1.2rem/1.6 var(--font-ui);
}

.filename {
	display: inline-block;
	padding: 1.6rem 0 0 1rem;
	font: var(--h6) var(--font-ui);
}

.box {
	padding: 2.4rem 3.2rem;
	border-radius: var(--border-r);
}

/*	theme colors --------------------------- */
.prime      { color: var(--prime) !important }
.second     { color: var(--second) !important }
.flash      { color: var(--flash) !important }
.black      { color: black !important }
.white      { color: white !important }

.back       { background-color: var(--back) !important }
.back-light { background-color: var(--back-light) !important }
.bg-prime   { background-color: var(--prime) !important }
.bg-second  { background-color: var(--second) !important }
.bg-flash   { background-color: var(--flash) !important }

/*	inputs --------------------------------- */
input[type="checkbox"] {
	/* display: block; */
	position: relative;
	height: 1em;
	width: calc(100% - 0.6em);
	max-width: 2em;
	top: -2px;
	border-radius: 0.5em;
	-webkit-appearance: none;
	outline: none;
	margin: 0 0.6em 0 0;
}

input[type="checkbox"]::before {
	content: "";
	position: absolute;
	display: block;
	height: 100%;
	width: 100%;
	padding: 2px;
	border-radius: 1em;
	top: 0;
	left: 0;
	background: var(--second);
	/* box-sizing: border-box; */
	box-sizing: content-box;
}

input[type="checkbox"]:checked::before {
	background: var(--prime);
}

input[type="checkbox"]::after {
	content: "";
	position: absolute;
	display: block;
	height: 1em;
	width: 1em;
	top: 2px;
	left: 2px;
	border-radius: 1em;
	background: white;
	box-shadow: 0 0px 1px rgba(0,0,0,.4), 0 4px 2px rgba(0,0,0,.1);
	-webkit-transition: background .2s ease-out, left .2s ease-out;
}

input[type="checkbox"]:checked::after {
	left: calc(100% - 9px);
}