@import url("https://use.typekit.net/jlb5olz.css");

.font-chaparral,
.font-chaparral h1, .font-chaparral h2, .font-chaparral h3, .font-chaparral h4 {
	font-family: "Chaparral Pro", "Hoefler Text", "brix-slab", sans-serif;
}
.font-chaparral h1 {
	font-weight: 300;
	font-style: italic;
}
.font-chaparral h2 {
	font-weight: 400;
	font-style: italic;
}
.dim {
	opacity: 0.333;
}
.smaller {
	font-size: smaller;
}
.xsm {
	font-size: 8pt;
}

ul.empty, ol.empty {
	list-style-type: none;
	padding-left: 2rem;
}
ul.empty > li > p:first-child,
ol.empty > li > p:first-child {
	text-indent: -2rem;
}

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;
}
.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.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;
}
.container-slides .githubref, .container-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 {
	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;
}
h1, h2, h3, h4 {
	font-family: "brix-slab", sans-serif;
}
h1 {
	font-weight: 900;
}
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;
}
.container th, .container td {
	padding: 0.15rem 1.5rem 0.15rem 0;
}
tbody.tight > tr > td, td.tight {
	padding: 0;
}
.container table {
	margin: 0.85rem 0;
	border-spacing: 0;
}
.container-slides {
	font-size: 2rem;
	margin-bottom: 100vh;
}
.container-slides h1 {
	font-size: 3.5rem;
}
.container-slides h2 {
	font-size: 3rem;
}
.container-slides h2, .container-slides div.footnotes {
	margin-top: 100vh;
}
.container-slides h2:first-child {
	margin-top: 3rem;
}
.container-slides .post img {
	max-height: 80vh;
}
.container-slides .tall > img {
	max-height: 50vh;
}
.container-slides .if-not-slides {
	display: none !important;
}
.tabular {
	font-variant-numeric: tabular-nums;
}
table.nohead > thead {
	display: none;
}
.table-layout-fixed {
	table-layout: fixed;
}
tr.even > td,
tr.even > th,
table.alternate > tbody > tr:nth-child(even) > td,
tbody.alternate > tr:nth-child(even) > td,
tbody.alternate > tr:nth-child(even) > th {
	background: #f0f0ff;
}
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;
}
.container .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 {
	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;
}

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;
	background: linear-gradient(-105deg, rgba(255,255,255,1), rgba(255,255,255,0)), url("../img/cs61hello.jpg");
	width: 200px;
	height: 200px;
}
.container {
	padding-left: 24px;
	padding-right: 24px;
	background: linear-gradient(to right, rgba(255,255,255,0), rgba(255,255,255,0.8) 16px, rgba(255,255,255,0.95) 5%);
}
.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 {
	background: #eeeef8;
	margin-bottom: 1rem;
}
.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;
}

.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;
}
.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;
}
.container-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 {
	color: #c23621;
}
.ansifg2 {
	color: #25bc24;
}
.ansifg3 {
	color: #adad27;
}
.ansifg4 {
	color: #492ee1;
}
.ansifg5 {
	color: #d338d3;
}
.ansifg6 {
	color: #33bbc8;
}
.ansifg7 {
	color: #cbcccd;
}

.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;
}

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;
}
