/* @import url("https://use.typekit.net/gtq2lol.css"); */
@import url("https://use.typekit.net/rqp2pdl.css");

@layer theme;

@layer theme {
:root {
	--background: white;
}
}

.page {
	font-family: "adobe-kis-variable", "Hoefler Text", "brix-slab", sans-serif;
	font-variation-settings: "opsz" 12;
	font-weight: 350;
	font-size: 1.25em;
	position: relative;
	display: grid;
	overflow: visible;
	grid-template-columns: 1fr;
	padding-left: calc(max(24px, 5vw));
	padding-right: calc(max(24px, 5vw));
	max-width: calc(1400px + 10vw);
	margin-left: auto;
	margin-right: auto;
}
nav.post-sidebar {
	display: none;
}
@media screen and (min-width: 1024px) {
.page.has-post-sidebar {
	display: grid;
	grid-template-columns: 200px 1fr;
}
nav.post-sidebar {
	display: block;
	padding-right: 36px;
}
}
.page .post, .page .landing {
	margin-left: auto;
	margin-right: auto;
	width: 100%;
	max-width: 1200px;
	overflow: visible;
}
@media screen and (min-width: 1555px) {
.page.has-post-sidebar {
	margin-left: calc(0.25 * (90vw - 1400px));
	margin-right: calc(0.75 * (90vw - 1400px));
}
}
nav.post-sidebar {
	font-family: "gimlet-sans-variable", sans-serif;
	font-variation-settings: "opsz" 12;
	font-weight: 350;
	font-size: 0.8rem;
}
nav.post-sidebar > ul {
	padding-left: 0;
	position: sticky;
	top: 64px;
	margin-top: 64px;
}
nav.post-sidebar > ul > li {
	list-style-type: none;
	margin-bottom: 0.25rem;
}
nav.post-sidebar a {
	color: #990000;
}
.post h1 {
	font-style: italic;
	text-rendering: optimizeLegibility;
	font-variation-settings: "opsz" 18;
}
.post h2 {
	font-variation-settings: "opsz" 16;
	font-weight: 600;
}
.post .katex {
	font-size: 1em;
}
.smaller {
	font-size: smaller;
}
.xsm {
	font-size: 8pt;
}
pre, code {
	font-size: 85%;
}
.tight-lines {
	line-height: 1.2;
}

ul.section-nav {
	list-style-type: none;
	padding: 0;
}
ul.section-nav > li {
	display: inline-block;
}
ul.section-nav > li::after {
	content: "·";
	padding-left: 0.5rem;
	padding-right: 0.5rem;
}
ul.section-nav > li:last-child::after {
	content: "";
}

a {
	text-decoration: none;
}
a:hover {
	text-decoration: underline;
}
ol > li > ol {
	list-style-type: lower-alpha;
}
ol.upper-alpha {
	list-style-type: upper-alpha;
}
p + ol, p + ul {
	margin-bottom: 1rem;
}
.tight-list > li > p {
	margin-bottom: 0;
}
p:last-child {
	margin-bottom: 0.5rem;
}
blockquote {
	margin-left: 2rem;
	padding-left: 1rem;
}
blockquote > h3:first-child {
	margin-top: 0.5rem;
}
blockquote, blockquote.solution.note {
	border-left: 0.25rem solid rgba(0, 0, 80, 0.25);
}
blockquote.solution.inflow {
	margin-left: 0;
	padding-left: 0;
	border-left: 0 none;
	background: inherit;
}
.solution.shown, .solution-collapsed.shown {
	animation: slide-down .3s ease-out;
}
.solution, blockquote.highlight {
	border-left: 0.25rem solid rgba(255, 255, 0, 0.5);
	background: #fffff0;
	padding-top: 0.25rem;
	padding-bottom: 0.25rem;
	padding-right: 1rem;
	margin-left: 0;
	print-color-adjust: exact;
	-webkit-print-color-adjust: exact;
}
blockquote.announce {
	border: 0.5rem solid #e3bb36;
	background: #fffff0;
	padding-top: 0.25rem;
	padding-right: 1rem;
	margin-left: 0;
	print-color-adjust: exact;
	-webkit-print-color-adjust: exact;
}
.solution-collapsed, .slideview-toggle, blockquote.note {
	background: #f0f0ff;
	padding-top: 0.25rem;
	padding-bottom: 0.25rem;
	padding-right: 1rem;
	margin-left: 0;
}
.solution-collapsed {
	background: rgba(0, 0, 255, 0.1);
	font-size: smaller;
}
.solution-collapsed.inflow {
	background: #ffffe0;
}
.solution-collapsed, .slideview-toggle, blockquote.citation {
	display: table;
	border-left: 0 none;
	margin-left: 0;
}
.slideview-toggle {
	margin-top: 1rem;
	font-size: 1rem;
}
blockquote.question, blockquote.exercise, blockquote.discussion {
	background: #f3e8ff;
	padding-top: 0.25rem;
	padding-bottom: 0.25rem;
	padding-right: 1rem;
	border-left: 0.25rem solid rgba(100, 0, 255, 0.5);
	margin-left: 0;
	print-color-adjust: exact;
	-webkit-print-color-adjust: exact;
}
blockquote.question.offline, blockquote.exercise.offline, blockquote.discussion.offline {
	margin-left: 5vw;
}
dd {
	margin-left: 2vw;
}
dd::before {
	content: "↪︎";
	display: block;
	position: absolute;
	indent: 0;
	margin-left: -1.25em;
	width: 1em;
}
blockquote.citation {
	background: #f8f8f8;
	padding-top: 0.25rem;
	padding-bottom: 0.25rem;
	padding-right: 1rem;
	font-size: smaller;
	print-color-adjust: exact;
	-webkit-print-color-adjust: exact;
}
blockquote.citation > p:last-child {
	margin-bottom: 0;
}
blockquote.group-only {
	border-left-width: 0;
	border-left-style: none;
	margin-left: 0;
	padding-left: 0;
	margin-bottom: 0;
}
.larger {
	font-size: larger;
}
a.js-solution.hide {
	font-size: smaller;
}
a.js-solution.hide.all {
	font-size: inherit;
}
.githubref {
	text-align: right;
	margin-top: -0.5rem;
	font-style: italic;
	font-size: 0.75rem;
}
.githubref:first-child {
	margin-top: 0rem;
}
.page-slides .githubref, .page-slides blockquote.citation {
	font-size: 50%;
}
.float-left {
	float: left;
}
.float-right {
	float: right;
}
.mb-4 {
	margin-bottom: 1.5rem !important;
}
.ml-7 {
	margin-left: 5rem !important;
}
.mr-7 {
	margin-right: 5rem !important;
}
@keyframes slide-down {
	0% { opacity: 0; }
	100% { opacity: 1; }
}
.post {
	padding-top: 5px;
	position: relative;
	margin-bottom: 3rem;
}
.post img {
	max-width: 100%;
}
.tall > img {
	max-height: 50vh;
}
.of-contain {
	object-fit: contain;
}
.mw-600px {
	min-width: 600px;
}
.fullw {
	width: 100%;
}
.maxw-600px {
	max-width: 600px;
}
.maxw-400px {
	max-width: 400px;
}
.child-maxw-600px > img {
	max-width: 600px;
}
.child-maxw-400px > img {
	max-width: 400px;
}
h2 {
	margin-top: 3rem;
	font-weight: 700;
}
h2:first-child {
	margin-top: 0;
}
.h3, h3 {
	font-size: 1.5rem;
}
.h4, h4 {
	font-size: 1.25rem;
	font-style: italic;
}
h3 {
	margin-top: 1.5rem;
}
h3 > code {
	color: inherit;
}
.page th, .page td {
	padding: 0.15rem 1.5rem 0.15rem 0;
}
tbody.tight > tr > td, td.tight {
	padding: 0;
}
.page table {
	margin: 0.85rem 0;
	border-spacing: 0;
}
.page-slides {
	font-size: 2rem;
	margin-bottom: 100vh;
}
.page-slides h1 {
	font-size: 3.5rem;
}
.page-slides h2 {
	font-size: 3rem;
}
div.footnotes {
	margin-top: 4rem;
}
.page-slides h2, .page-slides div.footnotes {
	margin-top: 100vh;
}
.page-slides h2:first-child {
	margin-top: 3rem;
}
.page-slides .post img {
	max-height: 80vh;
}
.page-slides .tall > img {
	max-height: 50vh;
}
.tabular {
	font-variant-numeric: tabular-nums;
}
table.nohead > thead {
	display: none;
}
.table-layout-fixed {
	table-layout: fixed;
	width: 100%;
}
table.message-summary-table {
	display: grid;
	width: 100%;
	grid-template-columns: 1fr 1fr 1fr;
}
table.message-summary-table > thead,
table.message-summary-table > tbody,
table.message-summary-table > tfoot,
table.message-summary-table > thead > tr,
table.message-summary-table > tbody > tr,
table.message-summary-table > tfoot > tr {
	display: contents;
}
@media (max-width: 1024px) {
table.message-summary-table {
	grid-template-columns: 1fr 1.5fr;
}
table.message-summary-table .cell-notes {
	grid-column-start: 1;
	grid-column-end: 3;
	padding-left: 1.5em;
}
table.message-summary-table th.cell-notes {
	display: none;
}
}
th[scope=row], th[scope=rowgroup] {
	font-weight: 500;
}
tr.even > td,
tr.even > th,
table.alternate > tbody > tr:nth-child(even) > td,
table.alternate > tbody > tr:nth-child(even) > th,
tbody.alternate > tr:nth-child(even) > td,
tbody.alternate > tr:nth-child(even) > th {
	background: #f0f0ff;
}
table.alternate > tbody > tr > th[scope=rowgroup] {
	background: #403090;
	color: #ffffff;
	border-top: 3px solid white;
}
table.header-highlight > thead > tr > th,
tr.separator > td,
tr.separator > th,
th.separator,
tr.even > th.separator {
	background: #d8d8f8;
}
td > p:first-child, th > p:first-child {
	margin-top: 0.25rem;
}
td > p:last-child, th > p:last-child {
	margin-bottom: 0.25rem;
}
table.padleft > thead > tr > th:first-child,
table.padleft > tbody > tr > td:first-child,
table.padleft > tbody > tr > th:first-child,
th.padleft,
td.padleft {
	padding-left: 0.35rem;
}
table.align-baseline > thead > tr > th,
table.align-baseline > thead > tr > td,
table.align-baseline > tbody > tr > th,
table.align-baseline > tbody > tr > td {
	vertical-align: baseline;
}
table.row-last-small > tbody > tr:last-child {
	font-size: small;
}
.dim {
	opacity: 0.4;
}
.del-dim del {
	opacity: 0.4;
	text-decoration-line: none;
}
.em-checksuper em {
	font-style: inherit;
}
.em-checksuper em::after {
	content: "✓";
	vertical-align: super;
	font-size: smaller;
}
.page .td-pl {
	padding-left: 1.5rem;
}
.r {
	font-weight: normal;
}
tr.row-wide-padding > td {
	padding-left: 3em;
	padding-right: 3em;
}
tr.row-wide-padding > td:first-child {
	padding-left: 0;
}
tr.row-wide-padding > td:last-child {
	padding-right: 0;
}
tr.row-space-above > td {
	padding-top: 3em;
}
div.sp {
	margin-top: 3em;
}
hr.hr-tight-solid {
	margin: 0;
	border-bottom: solid 1px black;
}

blockquote.float-left {
	margin-left: 0;
	padding-left: 0;
	border-left: 0 none;
	margin-right: 3rem;
}
blockquote.float-left.half-width {
	min-width: 25rem;
	max-width: 100%;
}

/* prettier table types */
table.wikitable > tr > th,
table.wikitable > tr > td,
table.wikitable > * > tr > th,
table.wikitable > * > tr > td {
	border: 1px solid #a2a9b1;
	padding: 0.2em 0.4em;
}
table.cell-minw-3p > tbody > tr > td {
	min-width: 1.75em;
}
table.cell-minw-4 > tbody > tr > td {
	min-width: 2.25em;
}
table.wikitable th,
table.wikitable.row-last-header > tbody > tr:last-child > td {
	text-align: center;
	background-color: #eaecf0;
}
td.hgray, tr.hgray {
	background-color: #888888;
}
td.hpink, tr.hpink {
	background: #ff80bb;
}
.color-red {
	color: red;
}
.d-inline-block {
	display: inline-block !important;
}
.d-inline-table {
	display: inline-table !important;
}
.align-middle {
	vertical-align: middle;
}

table.truthtable > * > tr > th,
table.truthtable > * > tr > td {
	border: 2px solid #a2a9b1;
	padding: 0.6em;
	text-align: center;
}

.nw {
	white-space: nowrap;
}
.pw, .pw > pre, pre > code {
	white-space: pre-wrap;
}
table.nowrap1 > * > tr > th:first-child,
table.nowrap1 > * > tr > td:first-child {
	white-space: nowrap;
}
table.text-right-1 > * > tr > th:first-child,
table.text-right-1 > * > tr > td:first-child {
	text-align: right;
}
table.text-right-2 > * > tr > th:nth-child(2),
table.text-right-2 > * > tr > td:nth-child(2) {
	text-align: right;
}
table.text-right-3 > * > tr > th:nth-child(3),
table.text-right-3 > * > tr > td:nth-child(3) {
	text-align: right;
}
table.text-right-4 > * > tr > th:nth-child(4),
table.text-right-4 > * > tr > td:nth-child(4) {
	text-align: right;
}
table.text-right-5 > * > tr > th:nth-child(5),
table.text-right-5 > * > tr > td:nth-child(5) {
	text-align: right;
}
.text-left {
	text-align: left;
}
.text-center {
	text-align: center;
}
.text-right {
	text-align: right;
}
.fs-smaller {
	font-size: smaller;
}
.fs-72pct {
	font-size: 72%;
}
.fs-84pct {
	font-size: 84%;
}
.code-bw code {
	color: black;
}

hr.c {
	clear: both;
	margin: 0;
	border: 0 none;
	height: 0;
}

.hello-background {
	position: fixed;
	transform: rotate(-15deg);
	opacity: 0.15;
	z-index: -1;
	top: -3rem;
	left: -2.5rem;
	width: 200px;
	height: 200px;
}
.float-left.rotate-img-m5 {
	margin-right: 1.5em;
}
.float-right.rotate-img-5 {
	margin-left: 1.5em;
}
img.rotate-img-5, .rotate-img-5 img {
	transform: rotate(5deg);
}
img.rotate-img-m5, .rotate-img-m5 img {
	transform: rotate(-5deg);
}

figure > img {
	max-width: 100%;
	object-fit: scale-down;
}

.navbar-has-drafts {
	background: yellow;
}
.nav-item-draft {
	color: #aaa;
}
.oldsite-warning {
	background: #220000;
	color: #ff2222;
	padding-left: 1rem;
	padding-top: 2rem;
	padding-bottom: 2rem;
	margin-bottom: 1rem;
	font-size: 125%;
}
.oldsite-warning a {
	text-decoration: underline;
	color: inherit;
}
.lh-tight {
	line-height: 0.95;
}

.lecture-sticky {
	background-color: var(--background);
	position: sticky;
	z-index: 2;
	top: 0;
}
.lecture-navigation {
	width: 100%;
	display: flex;
	padding-left: 0;
	font-family: "gimlet-sans-variable", sans-serif;
	font-variation-settings: "slnt" 0, "wght" 480, "opsz" 12;
	font-size: 92%;
	column-gap: 5px;
	transition: font-size 0.15s ease;
}
.lecture-stuck > .lecture-navigation {
	font-size: 72%;
	margin-bottom: 0.35rem;
}
.lecture-navigation > li {
	list-style-type: none;
	margin: 0;
	flex: 1 1 0;
	padding: 0.25em 0.5em;
	background-color: lightgray;
}
.lecture-navigation > li > a {
	color: #990000;
}
.lecture-navigation > li:last-child:not(:first-child),
.lecture-navigation.first > li:last-child {
	text-align: right;
}
.lecture-sticky > h1 {
	position: sticky;
	z-index: 1;
	background-color: var(--background);
	transition: font-size 0.1s ease, padding 0.1s ease;
}
.lecture-stuck > h1 {
	font-size: 1.5rem;
	padding-bottom: 0.5rem;
	border-bottom: 1px solid #ddd;
}

.hidden {
	display: none !important;
}
hr.prbr {
	border: 0 none;
}
hr.twoem {
	border: 0 none;
	margin-top: 2em;
}
hr.fourem {
	border: 0 none;
	margin-top: 4em;
}
hr.eightem {
	border: 0 none;
	margin-top: 8em;
}
hr.sixteenem {
	border: 0 none;
	margin-top: 16em;
}
hr.web-page-gap {
	height: 90vh;
	opacity: 1;
	background-color: transparent;
	background-image: radial-gradient(circle closest-side, #808080 0, #f0f0f0 15%, transparent 16%);
	background-repeat: repeat-y;
	background-size: 40px 40px;
	background-position: top center;
}

@media print {
html {
	/*font-size: 125%;*/
}
h1 {
	font-size: 2rem;
}
h2 {
	font-size: 1.5rem;
	margin-top: 2rem;
}
.prbr {
	page-break-before: always;
	margin-top: 0;
}
hr.prbr + h2 {
	margin-top: 0;
}
.web-page-gap {
	display: none;
}
@page {
	margin-top: 0.75in;
	margin-bottom: 0.75in;
}
.hello-background {
	display: none;
}
.print-hide-solutions .solution, .print-hide-solutions .solution-collapsed {
	display: none;
}
a, a:not(.btn) {
	color: inherit;
}
.navbar {
	display: none;
}
}

@media not print {
.pronly {
	display: none;
}
.code-color-important a > code {
	color: #e83e8c !important;
	text-decoration: underline;
}
.shellsession-prompt {
	color: #95917e;
}
.shellsession-typed {
	font-weight: bolder;
}
.shellsession-output {
	color: #003c85;
}
.controlcharacters-ctrl {
	color: white;
	background: black;
}
}

.gridlist-m, .gridlist-s {
	display: grid;
	padding-left: 0;
	gap: 1rem;
}
.gridlist-m > li, .gridlist-s > li {
	list-style-type: none;
}
@media (min-width: 90em) {
.gridlist-m, .gridlist-s {
	grid-template-columns: repeat(3, 1fr);
}
}
@media (min-width: 50em) and (max-width: 90em) {
.gridlist-m {
	grid-template-columns: repeat(2, 1fr);
}
.gridlist-s {
	grid-template-columns: repeat(3, 1fr);
}
}

.carousel {
	padding-left: 0;
	display: grid;
	margin: 0 -16px 1em -16px;
	padding: 15px;
	border: 1px solid gold;
	border-radius: 5px;
	grid-template-columns: 1fr auto auto;
}
.carousel > li {
	grid-area: 2 / 1 / 3 / 4;
	visibility: hidden;
	display: flex;
	flex-direction: column;
}
.carousel > li:first-child {
	visibility: visible;
}
.carousel-bimg {
	margin-top: auto;
	margin-bottom: 0;
	text-align: center;
}
.carousel-position {
	grid-area: 1 / 1 / 2 / 2 !important;
	text-align: center;
	padding-bottom: 0.5em;
	display: block !important;
}
.carousel-previous {
	grid-area: 1 / 2 / 3 / 3 !important;
	display: block !important;
}
.carousel-next, .carousel-restart {
	grid-area: 1 / 3 / 3 / 4 !important;
	display: block !important;
}
.carousel-visible {
	visibility: visible !important;
}
.carousel-invisible {
	visibility: hidden;
}
.page-slides .carousel-invisible {
	display: none;
}

.navbar .gsc-control-cse {
	padding: 0;
	padding-top: .5rem;
	padding-left: 1rem;
	background: inherit;
	border: 0 none;
}

/* ANSI escapes */
.ansib {
	font-weight: bold;
}
.ansii {
	font-style: italic;
}
.ansiu {
	text-decoration: underline;
}
.ansis {
	text-decoration: line-through;
}

.ansifg0 {
	color: #000000;
}
.ansifg1, .cR {
	color: #c23621;
}
.ansifg2, .cG {
	color: #25bc24;
}
.ansifg3 {
	color: #adad27;
}
.ansifg4, .cB {
	color: #492ee1;
}
.ansifg5 {
	color: #d338d3;
}
.ansifg6 {
	color: #33bbc8;
}
.ansifg7 {
	color: #cbcccd;
}
.cOR {
	color: #d05d01;
}
.hl {
	background-color: #ffffdd;
	print-color-adjust: exact;
}
.hl2 {
	background-color: #ffe8e4;
	print-color-adjust: exact;
}
em.hl, em.hl2 {
	font-style: inherit;
}

.ansifg0.ansib, .ansifg8 {
	color: #818383;
}
.ansifg1.ansib, .ansifg9 {
	color: #fc391f;
}
.ansifg2.ansib, .ansifg10 {
	color: #31e722;
}
.ansifg3.ansib, .ansifg11 {
	color: #eaec23;
}
.ansifg4.ansib, .ansifg12 {
	color: #5833ff;
}
.ansifg5.ansib, .ansifg13 {
	color: #f935f8;
}
.ansifg6.ansib, .ansifg14 {
	color: #14f0f0;
}
.ansifg7.ansib, .ansifg15 {
	color: #e9ebeb;
}

.ansibg0 {
	background-color: #000000;
}
.ansibg1 {
	background-color: #c23621;
}
.ansibg2 {
	background-color: #25bc24;
}
.ansibg3 {
	background-color: #adad27;
}
.ansibg4 {
	background-color: #492ee1;
}
.ansibg5 {
	background-color: #d338d3;
}
.ansibg6 {
	background-color: #33bbc8;
}
.ansibg7 {
	background-color: #cbcccd;
}

.ansibg0.ansib, .ansibg8 {
	background-color: #818383;
}
.ansibg1.ansib, .ansibg9 {
	background-color: #fc391f;
}
.ansibg2.ansib, .ansibg10 {
	background-color: #31e722;
}
.ansibg3.ansib, .ansibg11 {
	background-color: #eaec23;
}
.ansibg4.ansib, .ansibg12 {
	background-color: #5833ff;
}
.ansibg5.ansib, .ansibg13 {
	background-color: #f935f8;
}
.ansibg6.ansib, .ansibg14 {
	background-color: #14f0f0;
}
.ansibg7.ansib, .ansibg15 {
	background-color: #e9ebeb;
}

.hidden {
	visibility: hidden;
}
[hidden] {
	display: none !important;
}

code[data-lang] > span {
	align-items: baseline;
}
.has-lineno::before {
	content: attr(data-lineno);
	opacity: 0.5;
	font-size: smaller;
	text-align: right;
	width: 3.5rem;
	padding-right: 1.5rem;
	display: inline-block;
	vertical-align: baseline;
}
