@charset "UTF-8";

/* Import ET Book styles
   adapted from https://github.com/edwardtufte/et-book/blob/gh-pages/et-book.css */

@font-face { font-family: "et-book";
             src: url("et-book/et-book-roman-line-figures/et-book-roman-line-figures.eot");
             src: url("et-book/et-book-roman-line-figures/et-book-roman-line-figures.eot?#iefix") format("embedded-opentype"), url("et-book/et-book-roman-line-figures/et-book-roman-line-figures.woff") format("woff"), url("et-book/et-book-roman-line-figures/et-book-roman-line-figures.ttf") format("truetype"), url("et-book/et-book-roman-line-figures/et-book-roman-line-figures.svg#etbookromanosf") format("svg");
             font-weight: normal;
             font-style: normal; }

@font-face { font-family: "et-book";
             src: url("et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.eot");
             src: url("et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.eot?#iefix") format("embedded-opentype"), url("et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.woff") format("woff"), url("et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.ttf") format("truetype"), url("et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.svg#etbookromanosf") format("svg");
             font-weight: normal;
             font-style: italic; }

@font-face { font-family: "et-book";
             src: url("et-book/et-book-bold-line-figures/et-book-bold-line-figures.eot");
             src: url("et-book/et-book-bold-line-figures/et-book-bold-line-figures.eot?#iefix") format("embedded-opentype"), url("et-book/et-book-bold-line-figures/et-book-bold-line-figures.woff") format("woff"), url("et-book/et-book-bold-line-figures/et-book-bold-line-figures.ttf") format("truetype"), url("et-book/et-book-bold-line-figures/et-book-bold-line-figures.svg#etbookromanosf") format("svg");
             font-weight: bold;
             font-style: normal; }

@font-face { font-family: "et-book-roman-old-style";
             src: url("et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.eot");
             src: url("et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.eot?#iefix") format("embedded-opentype"), url("et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.woff") format("woff"), url("et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.ttf") format("truetype"), url("et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.svg#etbookromanosf") format("svg");
             font-weight: normal;
             font-style: normal; }

/* Tufte CSS styles */
html { font-size: 12pt; }

body { width: 87.5%;
       margin-left: auto;
       margin-right: auto;
       padding-left: 12.5%;
       font-family: et-book, Palatino, "Palatino Linotype", "Palatino LT STD", "Book Antiqua", Georgia, serif;
       background-color: #fffff8;
       color: #111;
       max-width: 1400px;
       counter-reset: sidenote-counter; }

h1 { font-weight: 400;
     margin-top: 4rem;
     margin-bottom: 1.5rem;
     font-size: 3.2rem;
     line-height: 1; }

h2 { font-style: italic;
     font-weight: 400;
     margin-top: 2.1rem;
     margin-bottom: 1.4rem;
     font-size: 2.2rem;
     line-height: 1; }

h3 { font-style: italic;
     font-weight: 400;
     font-size: 1.7rem;
     margin-top: 2rem;
     margin-bottom: 1.4rem;
     line-height: 1; }

hr { display: block;
     height: 1px;
     width: 55%;
     border: 0;
     border-top: 1px solid #ccc;
     margin: 1em 0;
     padding: 0; }

p.subtitle { font-style: italic;
             margin-top: 1rem;
             margin-bottom: 1rem;
             font-size: 1.8rem;
             display: block;
             line-height: 1; }

.numeral { font-family: et-book-roman-old-style; }

.danger { color: red; }

article { position: relative;
          padding: 5rem 0rem; }

section { padding-top: 1rem;
          padding-bottom: 1rem; }

p, ol, ul { font-size: 1.4rem;
            line-height: 2rem; }

p { margin-top: 1.4rem;
    margin-bottom: 1.4rem;
    padding-right: 0;
    vertical-align: baseline; }

/* Chapter Epigraphs */
div.epigraph { margin: 5em 0; }

div.epigraph > blockquote { margin-top: 3em;
                            margin-bottom: 3em; }

div.epigraph > blockquote, div.epigraph > blockquote > p { font-style: italic; }

div.epigraph > blockquote > footer { font-style: normal; }

div.epigraph > blockquote > footer > cite { font-style: italic; }
/* end chapter epigraphs styles */

blockquote {
    border-left: solid 3px lightsteelblue;
    font-size: 1.2rem;
    padding-left: 0.5rem;
}

blockquote p { font-size: 1.2rem;
               width: 55%;
               margin-right: 40px; }

blockquote ol,
blockquote ul {
    font-size: 1.2rem;
}

blockquote footer { width: 55%;
                    font-size: 1.1rem;
                    text-align: right; }

blockquote code {
    font-size: 0.95rem;
}

section > p,
section > footer,
section > table,
section div > p { width: 55%; }

/* 50 + 5 == 55, to be the same width as paragraph; 36px is the left padding */
section > ol, section > ul,
section div > ol, section div > ul { width: calc(55% - 36px);
                             -webkit-padding-start: 5%; }

li:not(:first-child) { margin-top: 0.25rem; }

figure { padding: 0;
         border: 0;
         font-size: 100%;
         font: inherit;
         vertical-align: baseline;
         max-width: 55%;
         -webkit-margin-start: 0;
         -webkit-margin-end: 0;
         margin: 0 0 1em 0; }

figcaption { margin-top: 0;
             margin-bottom: 0;
             font-size: 1.1rem;
             line-height: 1.6;
             vertical-align: baseline;
             position: relative; }

.fullwidth figure {
    max-width: 100%;
}

figure.fullwidth figcaption { margin-right: 24%; }

/* Links: replicate underline that clears descenders */
a:link, a:visited { color: inherit; }

a:link { text-decoration: none;
         background: -webkit-linear-gradient(#fffff8, #fffff8), -webkit-linear-gradient(#fffff8, #fffff8), -webkit-linear-gradient(#333, #333);
         background: linear-gradient(#fffff8, #fffff8), linear-gradient(#fffff8, #fffff8), linear-gradient(#333, #333);
         -webkit-background-size: 0.05em 1px, 0.05em 1px, 1px 1px;
         -moz-background-size: 0.05em 1px, 0.05em 1px, 1px 1px;
         background-size: 0.05em 1px, 0.05em 1px, 1px 1px;
         background-repeat: no-repeat, no-repeat, repeat-x;
         text-shadow: 0.03em 0 #fffff8, -0.03em 0 #fffff8, 0 0.03em #fffff8, 0 -0.03em #fffff8, 0.06em 0 #fffff8, -0.06em 0 #fffff8, 0.09em 0 #fffff8, -0.09em 0 #fffff8, 0.12em 0 #fffff8, -0.12em 0 #fffff8, 0.15em 0 #fffff8, -0.15em 0 #fffff8;
         background-position: 0% 93%, 100% 93%, 0% 93%; }

@media screen and (-webkit-min-device-pixel-ratio: 0) { a:link { background-position-y: 87%, 87%, 87%; } }

a:link::selection { text-shadow: 0.03em 0 #b4d5fe, -0.03em 0 #b4d5fe, 0 0.03em #b4d5fe, 0 -0.03em #b4d5fe, 0.06em 0 #b4d5fe, -0.06em 0 #b4d5fe, 0.09em 0 #b4d5fe, -0.09em 0 #b4d5fe, 0.12em 0 #b4d5fe, -0.12em 0 #b4d5fe, 0.15em 0 #b4d5fe, -0.15em 0 #b4d5fe;
                    background: #b4d5fe; }

a:link::-moz-selection { text-shadow: 0.03em 0 #b4d5fe, -0.03em 0 #b4d5fe, 0 0.03em #b4d5fe, 0 -0.03em #b4d5fe, 0.06em 0 #b4d5fe, -0.06em 0 #b4d5fe, 0.09em 0 #b4d5fe, -0.09em 0 #b4d5fe, 0.12em 0 #b4d5fe, -0.12em 0 #b4d5fe, 0.15em 0 #b4d5fe, -0.15em 0 #b4d5fe;
                         background: #b4d5fe; }

/* Sidenotes, margin notes, figures, captions */
img { max-width: 100%; }

video { max-width: 100%; }

.sidenote, .marginnote { float: right;
                         clear: right;
                         margin-right: -60%;
                         width: 50%;
                         margin-top: 0;
                         margin-bottom: 0;
                         font-size: 1.1rem;
                         line-height: 1.3;
                         vertical-align: baseline;
                         position: relative; }

.margintable {
    float: right;
    clear: right;
    margin-right: 12.5%;
    width: 27.5%;
    margin-top: 0;
    margin-bottom: 0;
    font-size: 1.1rem;
    line-height: 1.3;
    vertical-align: baseline;
    position: relative;
}

.sidenote-number { counter-increment: sidenote-counter; }

.sidenote-number:after, .sidenote:before { font-family: et-book-roman-old-style;
                                           position: relative;
                                           vertical-align: baseline; }

.sidenote-number:after { content: counter(sidenote-counter);
                         font-size: 1rem;
                         top: -0.5rem;
                         left: 0.1rem; }

.sidenote:before { content: counter(sidenote-counter) " ";
                   font-size: 1rem;
                   top: -0.5rem; }

blockquote .sidenote, blockquote .marginnote { margin-right: -82%;
                                               min-width: 59%;
                                               text-align: left; }

div.fullwidth,
div.fullwidth table,
table.fullwidth { width: 100%; }

.fullwidth p {
    width: 100%;
}

div.table-wrapper { overflow-x: auto;
                    font-family: "Trebuchet MS", "Gill Sans", "Gill Sans MT", sans-serif; }

.sans { font-family: "Gill Sans", "Gill Sans MT", Calibri, sans-serif;
        letter-spacing: .03em; }

code { font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
       font-size: 1.1rem;
       line-height: 1.42;

       background-color: #ecf2f8;
       border: 1px solid #b1b1b9;
       border-radius: 5px;
       padding: 2px 2px; }

.sans > code { font-size: 1.1rem; }

h1 > code, h2 > code, h3 > code { font-size: 0.85em; }

.marginnote > code, .sidenote > code {
    font-size: 1rem;
    padding-bottom: 0;
    padding-top: 0;
}

pre code {
    background-color: initial;
    border: initial;
    border-radius: initial;
    padding: initial;
}

pre.code,
pre.sourceCode {
    font-size: 0.9rem;
    width: 90%;
    margin-left: 2.5%;
    overflow-x: auto;
    padding: 5px; }

.fullwidth pre.code,
.fullwidth pre.sourceCode {
    width: 90%;
}

div.sourceCode {
    background-color: #f1f8ff;
    border-bottom: solid 2px #c2c6d1;
    border-top: solid 2px #c2c6d1;
    margin: 0.5em 0;
    position: relative;
    width: 55%;
}

.framed div.sourceCode,
.fullwidth div.sourceCode,
ol div.sourceCode,
ul div.sourceCode,
td div.sourceCode {
    width: 100%;
}


table div.sourceCode::before,
table div.sourceCode::after {
    background-color: initial;
    height: 0;
    width: 0;
}

pre.code.textwidth,
pre.sourceCode.textwidth { width: 90%; }

.sourceCode a {
    background: none;
}

.sourceCode.numberLines {
    margin-left: 3.5%;
    overflow-x: initial;
}

.fullwidth { max-width: 90%;
             clear:both; }

             .center {
text-align: center;
}

span.newthought { font-variant: small-caps;
                  font-size: 1.2em; }

input.margin-toggle { display: none; }

label.sidenote-number { display: inline; }

label.margin-toggle:not(.sidenote-number) { display: none; }

.iframe-wrapper { position: relative;
                  padding-bottom: 56.25%; /* 16:9 */
                  padding-top: 25px;
                  height: 0; }

.iframe-wrapper iframe { position: absolute;
                         top: 0;
                         left: 0;
                         width: 100%;
                         height: 100%; }

@media (max-width: 760px) { body { width: 84%;
                                   padding-left: 8%;
                                   padding-right: 8%; }
                            hr, section > p, section > footer, section > table { width: 100%; }
                            pre.code { width: 97%; }
                            section > ol { width: 90%; }
                            section > ul { width: 90%; }
                            figure { max-width: 90%; }
                            figcaption, figure.fullwidth figcaption { margin-right: 0%;
                                                                      max-width: none; }
                            blockquote { margin-left: 1.5em;
                                         margin-right: 0em; }
                            blockquote p, blockquote footer { width: 100%; }
                            label.margin-toggle:not(.sidenote-number) { display: inline; }
                            .sidenote, .marginnote { display: none; }
                            .margin-toggle:checked + .sidenote,
                            .margin-toggle:checked + .marginnote { display: block;
                                                                   float: left;
                                                                   left: 1rem;
                                                                   clear: both;
                                                                   width: 95%;
                                                                   margin: 1rem 2.5%;
                                                                   vertical-align: baseline;
                                                                   position: relative; }
                            label { cursor: pointer; }
                            div.table-wrapper, table { width: 85%; }
                            img { width: 100%; } }

th {
    text-align: left;
}

th, td {
    vertical-align: baseline;
}

table code {
    font-size: 1.1rem;
}

table {
    font-size: 1.4rem;
}

caption {
    font-size: 1.2rem;
}

.reference-table th {
    background-color: #eee;
    font-size: 1.2rem;
    padding: .2em;
}

.reference-table td {
    border-bottom: 1px solid grey;
    font-size: 1.15rem;
    line-height: 1.4rem;
    padding: 5px;
}

.reference-table td p {
    font-size: 1.15rem;
    line-height: 1.4rem;
    margin-bottom: 1rem;
    margin-top: 0;
}

.reference-table td ol,
.reference-table td li {
    font-size: 1.15rem;
    line-height: 1.4rem;
}

.image-table td {
    vertical-align: top;
}

@media print {
    html { font-size: 11px; }

    .page-break {
        page-break-after: always;
    }

    .sidenote,
    .marginnote {
        display: block;
        background-color: lightgray;
        float: left;
        left: 1rem;
        clear: both;
        width: 95%;
        margin: 1rem 2.5%;
        vertical-align: baseline;
        position: relative;
        border: 1px solid black;
        padding: 3px;
    }
}

/* MathJax */
.math {
    font-size: 1.2rem;
}

.marginnote .math,
.sidenote .math {
    font-size: 1.05rem;
}

/* Custom styling for truth tables */
.truth-table td {
    border-top: 1px solid black;
    padding: 0 7px;
}

.truth-table td + td,
.truth-table th + th {
    border-left: 1px solid black;
}

/* Custom styling for memory model tables */
.memory-model-values {
    width: 55%;
}

table .memory-model-values {
    width: 100%;
}

table .memory-model-values table {
    min-width: 90%;
}

.memory-model-values th {
    font-weight: 400;
    font-style: italic;
}
.memory-model-values td {
    border-top: 1px solid darkgrey;
}

.memory-model-values table {
    border: 1px solid black;
    margin: 0.5rem auto;
    min-width: 40%;
}

.memory-model-values caption {
    background-color: lavender;
    padding-left: 5px;
    text-align: left;
}

.memory-model-values-inactive table {
    background-color: lightgray;
}

.memory-model-values-inactive {
    color: slategray;
}

.memory-model-values-inactive caption {
    background-color: silver;
}


/* Math environments */
.definition > p:first-child::before {
    content: "Definition. ";
    display: inline;
    font-style: italic;
}

.example > p:first-child::before {
    content: "Example. ";
    display: inline;
    font-weight: bold;
}

.translation > p:first-child::before {
    content: "Translation. ";
    display: inline;
    font-style: italic;
    font-weight: normal;
}

.discussion > p:first-child::before {
    content: "Discussion. ";
    display: inline;
    font-style: italic;
    font-weight: normal;
}

.proof > p:first-child::before {
    content: "Proof. ";
    display: inline;
    font-style: italic;
    font-weight: normal;
}

.proof::after {
    content: "◼";
    float: left;
    margin-top: -2.5em;
    margin-left: 53%;
}

.analysis > p:first-child::before {
    content: "Running time analysis. ";
    display: inline;
    font-style: italic;
    font-weight: normal;
}

.analysis::after {
    content: "◼";
    float: left;
    margin-top: -2.5em;
    margin-left: 53%;
}

.theorem > p:first-child::before {
    content: "Theorem. ";
    display: inline;
    font-weight: bold;
}

.claim > p:first-child::before {
    content: "Claim. ";
    display: inline;
    font-style: italic;
}

.framed {
    border: solid 1px black;
    padding: 0 10px;
}

section > .framed {
    width: 55%;
}

section > .framed.fullwidth {
    width: 90%;
}

.framed p {
    width: 100%;
}

.framed ol,
.framed ul {
    width: 95%;
}

.framed .proof::after {
    float: right;
    margin-left: 0;
}

/* hovercard styling */
.hovercard {
    border-bottom: 2px dotted #7c7c7c;
    cursor: help;
}

.hovercard-element {
    border: solid 2px darkgray;
    box-shadow: 10px 10px 15px gray;
    padding-top: 0 !important;
}

.hovercard-element .hovercard-description::after {
    content: none !important;
}

.hovercard-element .hovercard-card {
    overflow: auto !important;
    padding-top: 0 !important;
}

.hovercard-element h1 {
    margin-top: 3.2rem;
    margin-bottom: 1.2rem;
    font-size: 2.56rem;
}

.hovercard-element h2 {
    margin-top: 1.68rem;
    margin-bottom: 1.1rem;
    font-size: 1.76rem;
}

.hovercard-element h3 {
    font-size: 1.36rem;
    margin-top: 1.6rem;
    margin-bottom: 1.12rem;
}

.hovercard-element p,
.hovercard-element ol,
.hovercard-element ul {
    font-size: 1.1rem;
    line-height: 1.6rem;
}

.hovercard-element p {
    margin-top: 0.8rem;
    margin-bottom: 0.8rem;
}

/* Styling for "copy to clipboard" button */
.codecopy {
    position: relative;
}

.codecopy-btn {
    cursor: pointer;
    position: absolute;
    right: 0.5rem;
    top: 0.5rem;
}

.codecopy-btn:hover {
    background-color: #a4e5a4;
    border-radius: 5px;
    border-color: grey;
}
