:root {
  --theme-text: #4e5862;
  --theme-heading: #26354b;
  --theme-font: "Libre Caslon Text", Georgia, serif;
  --theme-link: #385f7f;
  --theme-muted: #646e6d;
  --theme-border: #e0e3df;
  --theme-surface: #ffffff;
  --type-family: "Lato Text", "Lato", "Segoe UI", sans-serif;
  --type-heading-family: "Libre Caslon Text", Georgia, serif;
  --type-weight: 500;
  --type-heading-weight: 500;
  --type-nav-weight: 500;
  --type-leading: 1.65;
  --type-ink: #35404b;
  --type-heading-ink: #23344a;
  --type-nav-ink: #475463;
  --type-link: #385f7f;
  --type-meta-ink: #586474;
  --type-meta-opacity: 1;
  --type-size: 17px;
  --type-mobile-size: 16px;
  --type-title-size: 29px;
  --type-mobile-title-size: 27px;
  --type-section-size: 22px;
  --type-subhead-size: 18px;
  --type-name-size: 25px;
  --type-mobile-name-size: 23px;
  --type-bio-size: 15px;
  --type-mobile-bio-size: 14px;
  --type-nav-size: 20px;
  --nav-size: 20px;
  --nav-padding-x: 10px;
  --nav-padding-y: 12px;
  --spacing-entry-desktop: 20px;
  --spacing-entry-mobile: 16px;
}

html, body, .masthead, .greedy-nav { background-color: #fbfcfd; }

@font-face { font-family: 'Lato'; src: url('../fonts/typography/Lato-Regular.woff2') format('woff2'); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: 'Lato'; src: url('../fonts/typography/Lato-Bold.woff2') format('woff2'); font-weight: 700; font-style: normal; font-display: swap; }
@font-face { font-family: 'Lato'; src: url('../fonts/typography/Lato-Black.woff2') format('woff2'); font-weight: 900; font-style: normal; font-display: swap; }
@font-face { font-family: 'Lato'; src: url('../fonts/typography/Lato-Italic.woff2') format('woff2'); font-weight: 400; font-style: italic; font-display: swap; }
@font-face { font-family: 'Lato'; src: url('../fonts/typography/Lato-BoldItalic.woff2') format('woff2'); font-weight: 700; font-style: italic; font-display: swap; }

.author__avatar {
  position: relative;
  display: block;
  width: 100%;
  max-width: 240px;
  aspect-ratio: 4 / 5;
  overflow: hidden;
  border-radius: 12px;
  background: #e5e5df;
  align-self: start;
}
.author__avatar img {
  position: absolute;
  inset: auto;
  top: -1.055099306977%;
  left: -22.831184197674%;
  display: block;
  width: 140.679953197674%;
  max-width: none;
  height: auto;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
}

:root { --heading-content-gap: 24px; }
#main,
.masthead__inner-wrap {
  width: 100%;
  max-width: 1024px;
  margin-left: auto;
  margin-right: auto;
  padding-left: 24px;
  padding-right: 24px;
}

#main { margin-top: 36px; }
#main::before,
#main::after { display: none; }

.masthead__inner-wrap { padding-top: 16px; padding-bottom: 16px; }
.greedy-nav a,
.greedy-nav .hidden-links a { font-size: 16px; line-height: 1.5; }

.page__title { font-size: 28px; line-height: 1.2; margin-bottom: var(--heading-content-gap); }
.page__content { font-size: 17px; line-height: 1.65; }

.page__content p,
.page__content li,
.page__content dl { font-size: inherit; }
.page__content p { margin-bottom: 1.25em; }
.page__content :is(h1, h2, h3, h4, h5, h6) {
  --heading-rule-padding: 0px;
  --heading-rule-width: 0px;

  padding-bottom: var(--heading-rule-padding);
  margin-bottom: calc(var(--heading-content-gap) - var(--heading-rule-padding) - var(--heading-rule-width));
}
.page__content h2 {
  font-size: 22px;
  line-height: 1.3;
  --heading-rule-padding: .5em;
  --heading-rule-width: 1px;
}
.page__content h3 { font-size: 18px; line-height: 1.4; }
.page__content .research-section-title {
  --heading-rule-padding: .5rem;
  --heading-rule-width: 1px;
}
.page__content :is(h1, h2, h3, h4, h5, h6) + * { margin-top: 0; }

.page__content > :is(h1, h2, h3, h4, h5, h6):first-child,
.page__content > style:first-child + :is(h1, h2, h3, h4, h5, h6) { margin-top: 0; }

#main > .sidebar,
#main > .page,
#main > .archive {
  float: none;
  clear: none;
  width: 100%;
  min-width: 0;
  margin-left: 0;
  margin-right: 0;
  padding-left: 0;
  padding-right: 0;
}

.author__avatar { max-width: 240px; }
.author__content { padding: 0; }
.sidebar .author__name { font-size: 24px; line-height: 1.2; }
.sidebar .author__bio { font-size: 15px; line-height: 1.55; }
.author__urls a { font-size: 15px; }
.author__urls li { font-size: 14px; }

@media (min-width: 57.8125em) {
  #main {
    display: grid;
    grid-template-columns: clamp(203.077px, 20.308vw, 240px) minmax(0, 1fr);
    column-gap: clamp(36px, 4.5vw, 56px);
    align-items: start;
  }

  #main > .sidebar { margin-bottom: 0; }
  #main > .page,
  #main > .archive { max-width: 680px; }

  .author-profile { display: block; }
  .author__content {
    display: flex;
    flex-direction: column;
    gap: 7px;
    padding: 18px 0 16px;
  }
}

@media (max-width: 57.8124em) {
  #main,
  .masthead__inner-wrap { max-width: 708px; }
  #main > .sidebar { margin-bottom: 32px; }
  .author-profile {
    display: grid;
    grid-template-columns: clamp(103.385px, 27.692vw, 147.692px) minmax(0, 1fr);
    column-gap: 20px;
    row-gap: 12px;
    align-items: start;
  }
  .author__avatar { grid-column: 1; grid-row: 1 / 3; }
  .author__content {
    grid-column: 2;
    grid-row: 1;
    display: flex;
    flex-direction: column;
    gap: 7px;
  }
  .author__urls-wrapper { grid-column: 2; grid-row: 2; align-self: start; }
  .author__urls { z-index: 30; max-width: calc(100vw - 40px); }
}

@media (min-width: 37.5em) and (max-width: 57.8124em) {
  .author-profile { grid-template-columns: 166.154px minmax(0, 1fr); column-gap: 28px; }
}

@media (max-width: 37.4999em) {
  :root { --heading-content-gap: 20px; }
  #main,
  .masthead__inner-wrap { padding-left: 20px; padding-right: 20px; }
  #main { margin-top: 26px; }
  .page__title { font-size: 26px; }
  .page__content { font-size: 16px; }
  .sidebar .author__name { font-size: 22px; }
  .sidebar .author__bio { font-size: 14px; }
}

@media (max-width: 22.5em) {
  .author-profile { column-gap: 16px; }
  .sidebar .author__name { font-size: 20px; }
}

html body { color: var(--theme-text); }
html h1,
html h2,
html h3,
html h4,
html h5,
html h6,
html .sidebar .author__name {
  color: var(--theme-heading);
  font-family: var(--theme-font);
}
html a,
html a:visited,
html .author__urls a,
html .abstract-toggle { color: var(--theme-link); }
html a:focus-visible,
html button:focus-visible { outline: 2px solid var(--theme-link); outline-offset: 3px; }
html .masthead,
html .page__content h2,
html .research-section-title,
html hr { border-color: var(--theme-border); }
html .greedy-nav a { color: var(--theme-muted); }
html .greedy-nav a:hover,
html .greedy-nav a:focus-visible,
html .greedy-nav a[aria-current="page"] {
  color: var(--theme-link);
  text-decoration: underline;
  text-underline-offset: .28em;
  text-decoration-thickness: 1px;
}
html .greedy-nav button { background-color: var(--theme-link); }
html .greedy-nav .hidden-links { background: var(--theme-surface); border-color: var(--theme-border); }
html .greedy-nav .hidden-links:before { border-bottom-color: var(--theme-border); }
html .greedy-nav .hidden-links:after { border-bottom-color: var(--theme-surface); }
html .btn--inverse {
  color: var(--theme-link) !important;
  background: var(--theme-surface);
  border-color: var(--theme-border) !important;
}
html .btn--inverse:hover { color: #fff !important; background: var(--theme-link); }
@media (max-width: 57.8124em) {
  html .author__urls { background: var(--theme-surface); border-color: var(--theme-border); }
  html .author__urls:before { border-bottom-color: var(--theme-border); }
  html .author__urls:after { border-bottom-color: var(--theme-surface); }
}
@media print {
  html body, html a { color: #222; }
}

@font-face { font-family: 'Lato Text'; src: url('../fonts/typography/Lato-Regular.woff2') format('woff2'); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: 'Lato Text'; src: url('../fonts/typography/Lato-Medium.woff2') format('woff2'); font-weight: 500; font-style: normal; font-display: swap; }
@font-face { font-family: 'Lato Text'; src: url('../fonts/typography/Lato-Semibold.woff2') format('woff2'); font-weight: 600; font-style: normal; font-display: swap; }
@font-face { font-family: 'Lato Text'; src: url('../fonts/typography/Lato-Bold.woff2') format('woff2'); font-weight: 700; font-style: normal; font-display: swap; }
@font-face { font-family: 'Lato Text'; src: url('../fonts/typography/Lato-Black.woff2') format('woff2'); font-weight: 900; font-style: normal; font-display: swap; }
@font-face { font-family: 'Lato Text'; src: url('../fonts/typography/Lato-Italic.woff2') format('woff2'); font-weight: 400; font-style: italic; font-display: swap; }
@font-face { font-family: 'Lato Text'; src: url('../fonts/typography/Lato-MediumItalic.woff2') format('woff2'); font-weight: 500; font-style: italic; font-display: swap; }
@font-face { font-family: 'Lato Text'; src: url('../fonts/typography/Lato-SemiboldItalic.woff2') format('woff2'); font-weight: 600; font-style: italic; font-display: swap; }
@font-face { font-family: 'Lato Text'; src: url('../fonts/typography/Lato-BoldItalic.woff2') format('woff2'); font-weight: 700; font-style: italic; font-display: swap; }
@font-face { font-family: 'Libre Caslon Text'; src: url('../fonts/typography/LibreCaslonText-Variable.ttf') format('truetype'); font-weight: 400 700; font-style: normal; font-display: swap; }

html body {
  font-family: var(--type-family);
  font-weight: var(--type-weight);
  color: var(--type-ink);
}
html .page__content {
  font-size: var(--type-size);
  line-height: var(--type-leading);
  font-weight: var(--type-weight);
}
html h1,
html h2,
html h3,
html h4,
html h5,
html h6,
html .sidebar .author__name {
  font-family: var(--type-heading-family);
  font-weight: var(--type-heading-weight);
  color: var(--type-heading-ink);
}
html .page__title { font-size: var(--type-title-size); }
html .page__content h2 { font-size: var(--type-section-size); }
html .page__content h3 { font-size: var(--type-subhead-size); }
html .sidebar .author__name { font-size: var(--type-name-size); }
html .sidebar .author__bio { font-size: var(--type-bio-size); font-weight: var(--type-weight); }
html .author__urls a { font-size: var(--type-bio-size); font-weight: var(--type-weight); }
html .greedy-nav a,
html .greedy-nav a:visited,
html .greedy-nav .hidden-links a {
  font-family: var(--type-family);
  font-size: var(--type-nav-size);
  font-weight: var(--type-nav-weight);
  color: var(--type-nav-ink);
}
html .greedy-nav .masthead__menu-item--lg a { font-weight: 700; }
html .greedy-nav a:hover,
html .greedy-nav a:focus-visible,
html .greedy-nav a[aria-current="page"],
html a,
html a:visited,
html .abstract-toggle { color: var(--type-link); }
html .page__content b,
html .page__content strong { font-weight: 700; }
html .paper-meta { color: var(--type-meta-ink); opacity: var(--type-meta-opacity); }
@media (max-width: 37.4999em) {
  html .page__content { font-size: var(--type-mobile-size); }
  html .page__title { font-size: var(--type-mobile-title-size); }
  html .sidebar .author__name { font-size: var(--type-mobile-name-size); }
  html .sidebar .author__bio { font-size: var(--type-mobile-bio-size); }
}

html .greedy-nav a,
html .greedy-nav a:visited,
html .greedy-nav .hidden-links a {
  font-size: var(--nav-size);
  line-height: 1.5;
  padding: var(--nav-padding-y) var(--nav-padding-x);
}
html .greedy-nav .visible-links {
  gap: max(12px, calc(1.6rem - 2 * var(--nav-padding-x)));
  margin-left: calc(-1 * var(--nav-padding-x));
}
html .greedy-nav .hidden-links a {
  padding-left: 20px;
  padding-right: 20px;
}

html {
  --spacing-section-gap: 24px;
  --spacing-entry-gap: var(--spacing-entry-desktop);
  --spacing-rule-color: #e2e5e8;
}
html .page__content {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-section-gap);
}
html .page__content > *,
html .page__content > #work-in-progress {
  margin-top: 0;
  margin-bottom: 0;
}
html .page__content > :is(h2, h3) {
  --heading-rule-padding: 8px;
  --heading-rule-width: 1px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--spacing-rule-color);

  margin-bottom: -9px;
}
html .page__content > #work-in-progress { margin-bottom: -9px; }
html .page__content ul.papers {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-entry-gap);
  margin: 0;
}
html .page__content ul.papers > li {
  display: flow-root;
  margin: 0;
}
html .paper-actions,
html .abstract-block { margin-bottom: 0; }
html .page__content.spacing-entry-list { gap: var(--spacing-entry-gap); }
html .page__content .paper-block,
html .page__content .paper-block > p { margin: 0; }
@media (max-width: 37.4999em) {
  html {
    --spacing-section-gap: 20px;
    --spacing-entry-gap: var(--spacing-entry-mobile);
  }
}

@media print { html, body, .masthead, .greedy-nav { background-color: #fff; } }
