/* Readable original redesign: Roboto Slab bold headings, Lato regular body.
   Self-hosted fonts; licenses in assets/fonts/. */
@font-face {
  font-family: 'Roboto Slab'; font-style: normal; font-weight: 700;
  font-display: swap;
  src: url('assets/fonts/RobotoSlab-Bold.otf') format('opentype');
}
@font-face {
  font-family: 'Roboto Slab'; font-style: normal; font-weight: 400;
  font-display: swap;
  src: url('assets/fonts/RobotoSlab-Regular.otf') format('opentype');
}
@font-face {
  font-family: 'Lato'; font-style: normal; font-weight: 700;
  font-display: swap;
  src: url('assets/fonts/Lato-Bold.ttf') format('truetype');
}
@font-face {
  font-family: 'Lato'; font-style: normal; font-weight: 400;
  font-display: swap;
  src: url('assets/fonts/Lato-Regular.ttf') format('truetype');
}
@font-face {
  font-family: 'Lato'; font-style: italic; font-weight: 400;
  font-display: swap;
  src: url('assets/fonts/Lato-Italic.ttf') format('truetype');
}
@font-face {
  font-family: 'Academicons'; font-style: normal; font-weight: 400;
  font-display: block;
  src: url('assets/fonts/academicons.otf') format('opentype');
}
@font-face {
  font-family: 'Font Awesome'; font-style: normal; font-weight: 900;
  font-display: block;
  src: url('assets/fonts/FontAwesome5Free-Solid-900.otf') format('opentype');
}
:root {
  --ink: #000;
  --navy: #1a2a4f;
  /* Temporary preview: restore var(--navy) here for the previous heading color. */
  --section-heading: #000;
  --page-background: #fff;
  --link: #3366cc;
  --secondary: #4b5563;
  --measure: 46rem;
  color-scheme: light;
  background: var(--page-background);
}
*, *::before, *::after { box-sizing: border-box; }
html { scroll-padding-top: 1.5rem; }
body {
  margin: 0;
  background: var(--page-background);
  color: var(--ink);
  font-family: 'Lato', Arial, sans-serif;
  font-size: 17px;
  font-weight: 400;
  line-height: 1.65;
}
.site-header, .course-header, main, footer {
  width: calc(100% - 3rem);
  max-width: var(--measure);
  margin-inline: auto;
}
.site-header { padding-top: 3rem; text-align: center; }
.course-header { padding-top: 2.5rem; }
main { margin-top: 2rem; }
footer { margin-top: 2rem; padding-bottom: 3rem; font-size: .9em; }
h1, h2 {
  font-family: 'Roboto Slab', Georgia, serif;
  font-weight: 700;
  color: var(--section-heading);
  line-height: 1.3;
  overflow-wrap: break-word;
}
h1 { margin: 0 0 1rem; font-size: 2.125rem; letter-spacing: -.02em; }
h2 { margin: 0 0 .9rem; font-size: 1.5rem; }
.course-header h1 .secondary { color: inherit; }
h3 {
  margin: 1.25rem 0 .45rem;
  font-family: inherit;
  font-size: 1.1rem;
  font-weight: 700;
  line-height: 1.45;
}
p { margin: 0 0 1rem; }
section { margin-top: 2.25rem; }
strong { font-weight: 700; }
a {
  color: var(--link);
  text-decoration: none;
  overflow-wrap: anywhere;
}
a:hover { color: var(--navy); text-decoration: none; }
a:focus-visible, summary:focus-visible {
  outline: 2px solid var(--link);
  outline-offset: 4px;
}
nav {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: .35rem 1.25rem;
  font-size: .94em;
}
.quick-links, .cv-links {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: .4rem 1.35rem;
  font-size: .94em;
}
.quick-links { margin-bottom: 0; }
.quick-links a { display: inline-flex; align-items: baseline; gap: .4rem; }
.contact-icon { display: inline-block; width: 1.1em; text-align: center; line-height: 1; }
.ai-icon { font-family: 'Academicons'; font-weight: 400; }
.fa-icon { font-family: 'Font Awesome'; font-weight: 900; }
.cv-links { margin: -.15rem 0 1rem; }
.file-format { margin-left: .25em; font-size: .7em; letter-spacing: .04em; color: var(--secondary); }
ul, ol { margin: 0 0 1rem; padding-left: 1.2rem; }
ul { list-style-type: circle; }
li { padding-left: .1rem; margin-bottom: .35rem; }
li p { margin: .25rem 0 0; }
.publications li { margin-bottom: 1rem; }
.publications .paper-entry { margin: 0; }
.publications .paper-authors { font-size: .94em; font-style: italic; }
.publications cite { font-style: normal; }
.paper-tail { white-space: nowrap; }
.paper-links { display: inline-flex; gap: .4em; margin-left: .45em; font-size: .85em; white-space: nowrap; vertical-align: baseline; }
.paper-links a, .publication-profiles a {
  padding: .05em .5em;
  border: 1px solid #ccc;
  border-radius: .25rem;
  line-height: 1.5;
}
.paper-links a:hover, .publication-profiles a:hover { border-color: var(--link); }
.publication-profiles a { display: inline-flex; align-items: baseline; margin-right: .4em; font-size: .85em; white-space: nowrap; }
.publication-profiles a:last-child { margin-right: 0; }
cite { font-style: italic; }
.secondary, .course-term { color: var(--secondary); font-size: .94em; }
.course-term { margin-bottom: 0; }
.back-link { display: inline-block; margin-bottom: 1.25rem; font-size: .94em; }
.appointments li { margin-bottom: .35rem; }
details { margin: .5rem 0 .75rem; }
summary { cursor: pointer; color: var(--link); font-weight: 400; text-decoration: none; }
.details-body { margin: .75rem 0 1.25rem 1.1rem; }
.details-body h3:first-child { margin-top: 0; }
.project-tools { color: var(--secondary); font-size: .9em; margin-top: -.5rem; }
.example {
  margin: .5rem 0 1rem;
  padding: 0;
  background: transparent;
  border: 0;
  color: var(--secondary);
  font-size: .9em;
  font-style: italic;
}
.resource-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr));
  gap: .35rem 1rem;
  padding-left: 1.2rem;
}
.resource-list li { margin: 0; }
.syllabus { list-style: none; padding: 0; }
.syllabus li { margin-bottom: 1rem; padding: 0; }
.week { display: block; font-weight: 700; }
.lecture-links { font-size: .94em; }
.overbar { text-decoration: overline; text-decoration-thickness: .06em; }
.math { white-space: nowrap; }
sub { font-size: .75em; }
img { max-width: 100%; height: auto; }
.skip-link {
  position: absolute; top: .5rem; left: .5rem;
  padding: .4rem .75rem; background: #fff;
  transform: translateY(-200%);
}
.skip-link:focus { transform: translateY(0); }
@media (max-width: 36rem) {
  .site-header, .course-header, main, footer { width: calc(100% - 2.5rem); }
  .site-header, .course-header { padding-top: 2rem; }
  h1 { font-size: 1.8rem; }
  section { margin-top: 2rem; }
}
@media print {
  .skip-link, nav, footer, .back-link { display: none; }
  .site-header, .course-header, main { width: 100%; max-width: none; }
  .site-header, .course-header { padding-top: 0; }
  body { font-size: 11pt; font-weight: 400; }
  a { color: #000; }
  h1, h2, h3 { break-after: avoid; }
}
