@font-face {
  font-family: "Source Sans 3";
  font-style: normal;
  font-weight: 200 900;
  font-display: swap;
  src: url("../fonts/source-sans-3-latin.woff2") format("woff2");
}

:root {
  --site-font: "Source Sans 3", "Trebuchet MS", sans-serif;
  --site-width: 1040px;
  --mm-bg: #ffffff;
  --mm-bg-alt: #f5f7f6;
  --mm-surface: #ffffff;
  --mm-text: #263330;
  --mm-text-muted: #65716c;
  --mm-border: #dfe5e2;
  --mm-link: #356b60;
  --mm-link-hover: #204b42;
  --mm-link-visited: #356b60;
  --mm-accent: #356b60;
  --mm-toggle-bg: #ffffff;
  --mm-toggle-border: #dfe5e2;
  --mm-toggle-icon: #356b60;
  --mm-toggle-shadow: 0 3px 12px rgba(28, 51, 44, 0.08);
}

html[data-theme="dark"] {
  --mm-bg: #191f1e;
  --mm-bg-alt: #202826;
  --mm-surface: #202826;
  --mm-text: #e4ebe7;
  --mm-text-muted: #a4b3ac;
  --mm-border: #35413b;
  --mm-link: #9ccabd;
  --mm-link-hover: #c6e7dd;
  --mm-link-visited: #9ccabd;
  --mm-accent: #9ccabd;
  --mm-toggle-bg: #26312c;
  --mm-toggle-border: #415048;
  --mm-toggle-icon: #d9e8a8;
  --mm-toggle-shadow: 0 3px 12px rgba(0, 0, 0, 0.18);
}

html {
  font-size: 16px;
  background: var(--mm-bg);
}

body.academic-site {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  padding-bottom: 0;
  margin-bottom: 0;
  font: 400 17px / 1.65 var(--site-font);
}

.academic-site h1,
.academic-site h2,
.academic-site h3,
.academic-site h4,
.academic-site h5,
.academic-site h6,
.academic-site button,
.academic-site input,
.academic-site textarea,
.academic-site select,
.academic-site figcaption,
.academic-site .page__meta,
.academic-site .page__footer-copyright,
.academic-site .page__footer-follow li {
  font-family: var(--site-font);
}

.academic-site h1,
.academic-site h2,
.academic-site h3 {
  font-weight: 600;
}

.academic-site h1 { font-size: 2.75rem; }
.academic-site h2 { font-size: 1.75rem; }
.academic-site h3 { font-size: 1.15rem; }

.academic-site a {
  text-underline-offset: 0.2em;
  text-decoration-thickness: 1px;
}

.academic-site a:focus-visible,
.academic-site button:focus-visible,
.academic-site summary:focus-visible,
.academic-site input:focus-visible,
.academic-site textarea:focus-visible {
  outline: 2px solid var(--mm-link);
  outline-offset: 4px;
}

.site-skip-link {
  position: absolute;
  left: 1rem;
  top: -5rem;
  z-index: 1100;
  padding: 0.5rem 1rem;
  color: var(--mm-text);
  background: var(--mm-bg);
}

.site-skip-link:focus { top: 0.5rem; }

/* Keep the original animated rain image in the shared masthead and footer. */
.academic-site .masthead {
  flex: 0 0 auto;
  border-bottom: 1px solid rgba(255, 255, 255, 0.2);
  box-shadow: 0 3px 16px rgba(20, 40, 35, 0.14);
  animation: none;
}

.academic-site .masthead__inner-wrap {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;
  width: calc(100% - 48px);
  max-width: var(--site-width);
  padding: 1.4rem 0;
  font-family: var(--site-font);
}

.academic-site .masthead__inner-wrap::after { display: none; }

.academic-site .masthead a {
  color: #ffffff;
  text-shadow: 0 1px 6px rgba(0, 0, 0, 0.55);
}

.academic-site .masthead a:focus-visible { outline-color: #ffffff; }

.site-brand {
  font-size: 1.15rem;
  font-weight: 600;
  white-space: nowrap;
}

.site-nav ul {
  display: flex;
  align-items: center;
  gap: 1.8rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.site-nav li { margin: 0; }

.site-nav a {
  display: block;
  padding: 0.2rem 0;
  border-bottom: 1px solid transparent;
  font-size: 0.95rem;
}

.site-nav a:hover,
.site-nav a[aria-current="page"] { border-bottom-color: currentColor; }

.academic-site #main {
  flex: 1 0 auto;
  width: calc(100% - 48px);
  max-width: var(--site-width);
  margin: 3.5rem auto 0;
  padding: 0;
  animation: site-enter 420ms ease both;
}

.academic-site #main > .page,
.academic-site #main > .archive,
.academic-site #main > .splash {
  float: none;
  width: 100%;
  margin: 0;
  padding: 0;
}

.academic-site .page__inner-wrap,
.academic-site .page__content {
  float: none;
  margin: 0;
}

.academic-site .page__title {
  margin: 0 0 2rem;
  line-height: 1.2;
  letter-spacing: -0.025em;
}

.academic-site .page__content h2 {
  padding-bottom: 0;
  border-bottom: 0;
}

.academic-site .page__content > h2 { margin-top: 2.5rem; }
.academic-site .page__meta:empty { display: none; }

.academic-site #main .text-link,
.academic-site #main .text-link-underline { color: inherit; }
.academic-site #main .text-link { text-decoration: none; }
.academic-site #main .text-link-underline { text-decoration: underline; }

.site-profile {
  display: grid;
  align-items: center;
  gap: 4rem;
}

.site-profile--hero { grid-template-columns: minmax(0, 1fr) 224px; }
.site-profile__body { min-width: 0; }

.academic-site .site-profile__name {
  margin: 0 0 0.6rem;
  font-size: 3rem;
  line-height: 1.15;
  letter-spacing: -0.025em;
}

#main .site-profile__name a { color: inherit; text-decoration: none; }

.site-profile__affiliation {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 1.4rem;
  color: var(--mm-text-muted);
  font-size: 0.9rem;
}

.site-profile__location i { font-size: 0.75em; margin-right: 0.2em; }

html[data-theme="dark"] .site-profile__affiliation img[src$="WashU-RGB.png"] {
  filter: brightness(0) invert(1);
}

.site-profile__intro { margin-top: 1.7rem; }
.academic-site .site-profile__intro p { margin: 0 0 1rem; }

.site-profile__portrait {
  display: block;
  width: 224px;
  height: 224px;
  margin: 0;
  border-radius: 4px;
  object-fit: cover;
}

.site-profile__social {
  margin-top: 1.25rem;
}

.home-toc > summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.25rem;
  width: max-content;
  padding: 0.5rem 0.8rem;
  border: 1px solid var(--mm-border);
  border-radius: 4px;
  background: var(--mm-bg);
  color: var(--mm-text-muted);
  cursor: pointer;
  list-style: none;
}

.home-toc > summary::-webkit-details-marker { display: none; }

.disclosure-chevron {
  width: 6px;
  height: 6px;
  margin-top: -3px;
  border-right: 1px solid currentColor;
  border-bottom: 1px solid currentColor;
  transform: rotate(45deg);
}

details[open] > summary .disclosure-chevron { margin-top: 3px; transform: rotate(225deg); }

.site-profile__links {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.site-profile__links li { margin: 0; }

#main .site-profile__links a {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 3px;
  color: var(--mm-text);
  text-decoration: none;
  font-size: 1.5rem;
}

#main .site-profile__links a:hover,
#main .site-profile__links a:focus-visible { background: var(--mm-bg-alt); color: var(--mm-link); }
.site-profile__links i { color: inherit; line-height: 1; }

.site-profile--compact {
  grid-template-columns: 64px minmax(0, 1fr);
  gap: 1.25rem;
  padding-bottom: 2rem;
  margin-bottom: 2.75rem;
  border-bottom: 1px solid var(--mm-border);
}

.site-profile--compact .site-profile__portrait {
  grid-column: 1;
  grid-row: 1;
  width: 64px;
  height: 64px;
}

.site-profile--compact .site-profile__body {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  column-gap: 1.5rem;
  grid-column: 2;
}

.academic-site .site-profile--compact .site-profile__name { font-size: 1.4rem; }
.site-profile--compact .site-profile__affiliation { grid-column: 1; }
.site-profile--compact .site-profile__location { display: none; }

.site-profile--compact .site-profile__social {
  grid-column: 2;
  grid-row: 1 / span 2;
  align-self: center;
  margin: 0;
}

.site-profile--compact .site-profile__links { gap: 0.25rem; }
#main .site-profile--compact .site-profile__links a { width: 32px; height: 40px; font-size: 1.3rem; }

.site-back-link {
  display: inline-block;
  margin-bottom: 1.25rem;
  font-size: 0.9rem;
}

.teaching-course {
  display: grid;
  grid-template-columns: 120px minmax(0, 1fr);
  gap: 2rem;
  padding: 2rem 0;
  border-top: 1px solid var(--mm-border);
}

.teaching-course__year {
  color: var(--mm-text-muted);
  font-size: 0.95rem;
  font-variant-numeric: tabular-nums;
}

.academic-site .teaching-course h2 {
  margin: 0 0 0.6rem;
  font-size: 1.4rem;
}

#main .teaching-course h2 a { color: inherit; text-decoration: none; }
#main .teaching-course h2 a:hover { text-decoration: underline; }
.teaching-course__name p { margin: 0 0 0.7rem; }
.teaching-course__role { margin: 0; color: var(--mm-text-muted); font-size: 0.95rem; }

.academic-site .projects-grid { gap: 1.5rem; }
.academic-site .project-card { border-color: var(--mm-border); border-radius: 4px; background: var(--mm-surface); box-shadow: none; }
.academic-site .project-card:hover { transform: none; border-color: var(--mm-link); box-shadow: none; }
.academic-site .project-card__image { background: #ffffff; border-bottom: 1px solid var(--mm-border); }
.academic-site .project-card__image img { object-fit: contain; padding: 0.8rem; }
.project-card__image-fallback { display: none; }
.academic-site .project-card__image--missing { background: repeating-linear-gradient(135deg, var(--mm-bg-alt), var(--mm-bg-alt) 1px, var(--mm-surface) 1px, var(--mm-surface) 12px); }
.project-card__image--missing .project-card__image-fallback { display: flex; position: absolute; inset: 0; align-items: center; justify-content: center; padding: 1.5rem; color: var(--mm-text-muted); text-align: center; font-size: 1.1rem; }
.academic-site .project-card__body { padding: 1.2rem; gap: 0.8rem; }
.academic-site .project-card__title { font-size: 1.2rem; line-height: 1.3; }
#main .project-card__title a { color: inherit; text-decoration: none; }
.academic-site .project-card__desc { color: var(--mm-text-muted); font-size: 0.95rem; line-height: 1.55; }
.academic-site .project-card__tag { border-color: var(--mm-border); border-radius: 3px; font-size: 0.75rem; color: var(--mm-text-muted); background: var(--mm-bg-alt); }
.academic-site .btn { font-family: var(--site-font); font-size: 0.85rem; font-weight: 600; }
#main .project-card__actions .btn { color: var(--mm-link); background: transparent; border: 1px solid var(--mm-border) !important; border-radius: 3px; text-decoration: none; }
#main .project-card__actions .btn:hover { background: var(--mm-bg-alt); }

.academic-site .archive__item-title { font-size: 1.3rem; }
.academic-site .archive__item-excerpt { font-size: 1rem; }
.academic-site .list__item + .list__item { padding-top: 1.5rem; border-top: 1px solid var(--mm-border); }

.site-contact-wrap {
  flex: 0 0 auto;
  width: calc(100% - 48px);
  max-width: var(--site-width);
  margin: 3.5rem auto 0;
  border-top: 1px solid var(--mm-border);
  scroll-margin-top: 1.5rem;
}

.site-contact summary {
  padding: 1.25rem 0;
  font-size: 1.1rem;
  font-weight: 600;
  cursor: pointer;
}

.site-contact a { color: var(--mm-link); }
.site-contact form { display: grid; grid-template-columns: 1fr 2fr; align-items: start; gap: 1rem 2rem; padding: 0; }
.site-contact label { margin: 0; font-size: 0.95rem; font-weight: 400; }
.site-contact input,
.site-contact textarea { margin-top: 0.5rem; padding: 0.6rem; font-size: 1rem; border: 1px solid var(--mm-border); border-radius: 3px; }
.site-contact button { justify-self: start; padding: 0.5rem 1.5rem; border: 0; border-radius: 3px; color: var(--mm-bg); background: var(--mm-link); font-weight: 600; cursor: pointer; }

.academic-site .page__footer {
  flex: 0 0 auto;
  position: static;
  float: none;
  margin-top: 2.5rem;
  border-top-width: 1px;
  box-shadow: none;
  animation: none;
}

.academic-site .page__footer footer {
  width: calc(100% - 48px);
  max-width: var(--site-width);
  margin: 0 auto;
  padding: 2rem 0;
}

.academic-site .page__footer-follow li,
.academic-site .page__footer-copyright { font-size: 0.8rem; }
.academic-site .theme-toggle-floating { right: 1.25rem !important; bottom: 1.25rem !important; }

@keyframes site-enter {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

@media (max-width: 767px) {
  .academic-site #main { margin-top: 2.25rem; }
  .academic-site .masthead__inner-wrap { gap: 1rem; }
  .site-nav ul { gap: 1.2rem; }
  .site-profile--hero { grid-template-columns: minmax(0, 1fr) 160px; gap: 2rem; }
  .site-profile--hero .site-profile__portrait { width: 160px; height: 160px; }
  .academic-site .site-profile__name { font-size: 2.5rem; }
  .site-profile--compact .site-profile__body { display: block; }
  .site-profile--compact .site-profile__social { margin-top: 0.75rem; }
  .teaching-course { grid-template-columns: 64px minmax(0, 1fr); gap: 1rem; }
}

@media (max-width: 560px) {
  .academic-site .masthead__inner-wrap { align-items: flex-start; flex-direction: column; gap: 0.75rem; padding: 1.1rem 0; }
  .site-nav { width: 100%; }
  .site-nav ul { justify-content: space-between; }
  .academic-site .page__title { font-size: 2.25rem; margin-bottom: 1.5rem; }
  .site-profile--hero { grid-template-columns: 1fr; gap: 1.75rem; }
  .site-profile--hero .site-profile__portrait { width: 144px; height: 144px; }
  .academic-site .site-profile__name { font-size: 2.25rem; }
  .site-profile--compact { gap: 1rem; margin-bottom: 2rem; }
  .site-contact form { grid-template-columns: 1fr; }
  .academic-site .projects-grid { grid-template-columns: minmax(0, 1fr); }
}

@media (prefers-reduced-motion: reduce) {
  .academic-site #main { animation: none; }
}

@media print {
  .academic-site .masthead,
  .academic-site .site-contact-wrap,
  .academic-site .site-profile__social,
  .academic-site .theme-toggle-floating { display: none; }
  .academic-site #main { width: 100%; margin-top: 0; animation: none; }
  .academic-site .page__footer { background: none; color: #000; }
}
