body {
    font-family:
        -apple-system,
        BlinkMacSystemFont,
        "Segoe UI",
        Roboto,
        Oxygen,
        Ubuntu,
        Cantarell,
        "Fira Sans",
        "Droid Sans",
        "Helvetica Neue",
        sans-serif;
    max-width: 980px;
    padding: 10px;
}
ol,
ul { list-style-type: none; }
blockquote,
q { quotes: none; }
blockquote::before,
blockquote::after,
q::before,
q::after {
    content: '';
    content: none;
}
ins { text-decoration: none; }
del { text-decoration: line-through; }
table {
    width: 99%;
    border-collapse: collapse;
}
th {
    background-color: #cccccc;
    text-align: center;
}
td {
    text-align: left;
    padding: 1em;
}
table,
td { border: 1px solid #cccccc; }
tr:last-child td { border-bottom-width: 0; }
tfoot { font-style: italic; }
caption { background: transparent; }
h2 {
    font-weight: normal;
}
h3 {
    font-size: 1.5em;
    color: #007c8d;
}

/* Where the nav's "Schedule." link lands. An empty anchor before the next item
   rather than the item's own id, because a meeting and a milestone on the same
   day share an `on-MM-DD` id and only one of them is next. It has no height:
   the 2em it used to have was standing in for the navbar's, which
   scroll-padding-top accounts for properly now, and which would otherwise be a
   gap at the top of the page whenever the next item is the first one. */
#next {
    display: block;
    height: 0;
}

/* A unit heading is divided from the unit above it. The anchor breaks that
   adjacency wherever it happens to fall, so the rule is repeated through it --
   except at the top of the page, where there is no unit above to divide. */
div + h3,
#next:not(:first-child) + h3 {
    border-top: 1px dashed gray;
    margin-top: 2em;
    padding-top: 1em;
}
h4 {
    font-size: 1.2em;
    margin-top: 2em;
    margin-bottom: 1em;
}
h4 .date {
    color: #666666;
    font-weight: normal;
    font-style: italic;
}
h5 {
    font-size: 1em;
    font-style: italic;
    font-weight: normal;
}
h6 {
    font-style: italic;
    font-weight: normal;
}
ul {
    list-style-position: inside;
    list-style-type: none;
}
ol { list-style-type: decimal; }
abbr,
acronym { border-bottom-width: 0; }
strong { font-weight: bold; }
em { font-style: italic; }
code { font-size: 1.4em; }
a:link,
a:hover,
a:visited,
a:active {
    color: #ef4300;
    font-weight: bold;
    text-decoration: none;
}
a:hover {
    border-bottom: 1px solid #ef4300;
    color: #ef4300;
}
a.nohover:hover {
    border-bottom: none;
}
.amp {
    color: #666666;
    font-family: "Warnock Pro", "Goudy Old Style", Palatino, "Book Antiqua", Georgia, serif;
    font-style: italic;
}
.dquo { margin-left: -0.45em; }
.assignment {
    border-color: gray;
    border-style: dashed;
    border-width: 1px 0 0;
    padding-top: 9px;
}
.assignment-due {
    font-weight: bold;
}
.caps {
    letter-spacing: 0.01em;
    font-variant-caps: all-small-caps;
    font-size: 1.2em;
}
.error {
    color: #ef4300;
    font-weight: bold;
}
.success {
    color: #408000;
    font-weight: bold;
}
.warning {
    color: #b1ad00;
    font-weight: bold;
}
.optional {
    color: #408000;
    font-weight: bold;
}
.posted-by { color: #666666; }
img {
    display: block;
    margin: auto;
}
.word-count, .minute-count {
    color: #666666;
    font-style: italic;
}
.passed {
    color: #757575;
    text-decoration: line-through;
}
p { line-height: 1.3em; }
li + li { margin-top: 1em }
li p { margin: 0; }
table p { margin: 0; }
li p + p,
li ul + p,
li ol + p,
li pre + p { margin-top: 8px; }
table p + p { margin-top: 4px; }
nav {
    background-color: #ffffff;
    position: sticky;
    top: 0;
    border-bottom: 1px solid #ebebeb;
    padding: 5px 15px;
}

/* The navbar above is stuck to the top of the viewport, so anything scrolled
   to by a fragment identifier -- an assignment, a meeting, a milestone --
   arrives underneath it unless the scrollport is told to keep that much room.
   navheight.js measures the navbar and writes --nav-height here, because the
   navbar wraps onto more lines as the viewport narrows and nothing in CSS can
   measure that. The fallback is the height of the one-line navbar a wide
   viewport gets: too small and a title hides, too large and it merely sits
   lower than it needs to, so it errs the way that stays readable. */
:root { --nav-height: 2.5em; }
html { scroll-padding-top: var(--nav-height); }
.main {
    margin: 0 15px;
}
ul.nav {
    padding: 0;
    margin: 0;
    line-height: 1.8em;
}
ul.nav li {
    display: inline;
    margin: 0 2% 0 0;
}
ul.nav li .mark {
    display: inline;
    margin: 0;
    padding: 0;
    margin-bottom: -0.25rem;
}
blockquote { margin-left: 1.5em; }
.highlight {
    background-color: #fffd82;
    padding: 1em;
    margin-top: 1em;
}
.highlight h4 {
    margin: 0;

    /* A milestone on the schedule is the yellow box, not the heading inside
       it, so the scroll stops one box-padding earlier and the box lines up
       with the navbar. Milestones have a page of their own where they are not
       boxed, and this selector does not match them there. */
    scroll-margin-top: 1em;
}
.highlight p {
    margin-bottom: 0;
}
.tentative {
    background-color: #d4d4d4;
    padding: 0.5em 1em;
}
ul.errorlist {
    color: #ef4300;
    display: inline;
}
ul.errorlist li {
    display: inline;
    padding: 0;
}
.spacer { clear: both; }
.csl-bib-body,
.csl-entry { display: inline; }
a.button,
button {
    background-color: #f5f5f5;
    border: 1px solid #dedede;
    color: #565656;
    cursor: pointer;
    display: block;
    float: left;
    font-family: "Lucida Grande", Tahoma, Arial, Verdana, sans-serif;
    font-weight: bold;
    line-height: 130%;
    margin: 2em 0.5em 0.7em 0;
    text-decoration: none;
}
button img,
a.button img {
    border: none;
    float: none;
    padding: 0;
}
button:hover,
a.button:hover {
    background-color: #dff4ff;
    border: 1px solid #c2e1ef;
    color: #336699;
}
ul.nav form {
    display: inline-block;
}
ul.nav button {
    color: #ef4300;
    background-color: #ffffff;
    font-weight: bold;
    display: inline-block;
    margin: 0;
    padding: 0;
    border: none;
    font-size: 1em;
    margin-bottom: -0.25em;
}
a.button:active,
a.pushed,
a.pushed:hover {
    background-color: #6299c5;
    border: 1px solid #6299c5;
    color: #ffffff;
}
a.slides {
    display: inline-block;
    color: #ffffff;
    background-color: #ef4300;
    font-size: 1.1em;
    padding: 0.4em;
}
a.slides:hover {
    border: none;
    background-color: #ff4700;
}
.slides-updated {
    margin-left: 0.5em;
    color: #666666;
    font-style: italic;
}
summary {
    color: #ef4300;
    cursor: pointer;
    font-weight: bold;
    margin: 0.25em 0 0.5em;
    padding: 0.25em 0;
}
.tips:hover {
    border-bottom: 1px solid #ef4300;
}
pre {
    margin: 1em;
}
.viewing p { display: inline }
ol.viewing-parts {
    list-style-type: none;
    padding: 0;
    display: inline;
}
ol.viewing-parts li { display: inline; }
.footer {
    height: 1000px;
}

@media print {
    nav { display: none; }
}
