@font-face {
  font-family: "XCharter";
  src: url("fonts/xcharter-regular.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "XCharter";
  src: url("fonts/xcharter-bold.woff2") format("woff2");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "XCharter";
  src: url("fonts/xcharter-italic.woff2") format("woff2");
  font-weight: 400;
  font-style: italic;
  font-display: swap;
}
@font-face {
  font-family: "XCharter";
  src: url("fonts/xcharter-bold-italic.woff2") format("woff2");
  font-weight: 700;
  font-style: italic;
  font-display: swap;
}
:root {
  color-scheme: light dark;
  --face-text: "XCharter", Charter, "Bitstream Charter", serif;
  --gutter: max(
    clamp(20px, 6vw, 72px),
    env(safe-area-inset-left, 0px),
    env(safe-area-inset-right, 0px)
  );
  --measure: 646px;
  --margin: 188px;
  --gap: 32px;
  --hang: calc(var(--margin) + var(--gap));
  --frame: calc(var(--hang) + var(--measure));
  --balance: calc(var(--hang) / 2);
  --bg: #ffffff;
  --text: #222222;
  --heading: #111111;
  --underline: #bdbdbd;
  --hairline: #e3e0db;
  --edge: #e3e0db;
  --panel: #f4f3f0;
  --scrim: rgb(0 0 0 / 0.18);
  --map-ground: #efebe3;
  --map-green: #cde2b9;
  --map-building: #dad4ca;
  --map-wall: #bfb7a9;
  --map-side-1: #c6c0b6;
  --map-side-2: #b5aea3;
  --map-side-3: #a39d93;
  --map-here-roof: #b9d9eb;
  --map-here-side-1: #99c8e2;
  --map-here-side-2: #7db9da;
  --map-here-side-3: #62aad2;
  --map-here-text: #111111;
  --map-here-edge: #62aad2;
  --map-path: #ffffff;
  --map-credit: #77726a;
}
@media screen and (prefers-color-scheme: dark) {
  :root {
    --bg: #161616;
    --text: #d2d5da;
    --heading: #f2f4f7;
    --underline: #505357;
    --hairline: #32373d;
    --edge: #32373d;
    --panel: #1c1c1a;
    --scrim: rgb(0 0 0 / 0.55);
    --map-ground: #1c1c1a;
    --map-green: #283823;
    --map-building: #36352f;
    --map-wall: #4a4842;
    --map-side-1: #2d2c28;
    --map-side-2: #282723;
    --map-side-3: #23221f;
    --map-here-roof: #4482a7;
    --map-here-side-1: #3a6f8d;
    --map-here-side-2: #315e77;
    --map-here-side-3: #284d62;
    --map-here-text: #f2f4f7;
    --map-here-edge: #4482a7;
    --map-path: #403f39;
    --map-credit: #8f8b84;
  }
}
*,
*::before,
*::after {
  box-sizing: border-box;
}
body {
  font-family: var(--face-text);
  font-size-adjust: 0.508;
  font-size: 17px;
  line-height: 1.6;
  color: var(--text);
  background-color: var(--bg);
  margin: 32px auto 96px;
  padding: 0 var(--gutter);
  max-width: calc(var(--frame) + var(--balance) + 2 * var(--gutter));
  -webkit-text-size-adjust: 100%;
  overflow-wrap: break-word;
}
[hidden] {
  display: none !important;
}
a:link,
a:visited,
a:active {
  color: inherit;
}
a {
  text-decoration-line: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.22em;
  text-decoration-color: var(--underline);
}
a:hover,
a:focus-visible {
  text-decoration-color: currentColor;
}
.runninghead a,
.cvnav a,
.pagefile,
.person,
.thumb,
.portrait,
.headshot {
  text-decoration-line: none;
}
.runninghead a:hover,
.runninghead a:focus-visible,
.pagefile:hover,
.pagefile:focus-visible,
.cvnav a:hover,
.cvnav a:focus-visible,
.person:hover,
.person:focus-visible {
  text-decoration-line: underline;
}
a img {
  border: 0;
}
::selection {
  color: var(--map-here-text);
  background-color: var(--map-here-roof);
}
h1,
h2,
h3 {
  color: var(--heading);
}
h1 {
  font-size: 2em;
  font-weight: 400;
  letter-spacing: -0.01em;
  line-height: 1.15;
  margin: 0 0 0.35em;
}
h2 {
  font-size: 1.25em;
  font-weight: 400;
  line-height: 1.3;
  margin: 0 0 0.5em;
}
h3 {
  font-size: 1em;
  font-weight: 600;
  font-variant-caps: small-caps;
  letter-spacing: 0.05em;
  color: var(--text);
  margin: 2.4em 0 0.6em;
}
p {
  margin: 0 0 0.85em;
}
h1,
h2,
h3 {
  text-wrap: balance;
}
p,
li {
  text-wrap: pretty;
}
body {
  font-variant-numeric: oldstyle-nums proportional-nums;
  font-feature-settings: "cv01" 1;
}
.when,
.yearhead {
  font-variant-numeric: lining-nums tabular-nums;
}
.lnum {
  font-variant-numeric: lining-nums proportional-nums;
}
ul {
  margin: 0 0 0.85em;
  padding-left: 1.6em;
}
li {
  margin-bottom: 0.15em;
}
main.hang {
  padding-left: var(--hang);
}
body > .runninghead,
body > header,
body > main {
  max-width: var(--frame);
}
.sec {
  position: relative;
  margin-top: 4.5em;
}
.sec > h2 {
  position: absolute;
  top: -0.093em;
  left: calc(-1 * var(--hang));
  width: var(--margin);
  margin: 0;
  text-align: right;
}
.linkrow {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0 0.45em;
  margin: 0 0 1em;
}
.runninghead {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: baseline;
  column-gap: 2em;
  margin: 0 0 1em;
  font-size: 17px;
}
.runninghead .dotlist ul {
  margin-bottom: 0;
}
.runninghead .places:first-child {
  margin-left: auto;
}
.runninghead .here {
  font-weight: 700;
  white-space: nowrap;
}
@property --rule {
  syntax: "<color>";
  inherits: false;
  initial-value: transparent;
}
.menu {
  display: none;
}
@media (max-width: 38em) {
  .runninghead {
    position: relative;
  }
  .runninghead .places {
    display: none;
  }
  .menu {
    display: block;
    margin-left: auto;
  }
  .menu summary {
    list-style: none;
    cursor: pointer;
    padding: 16px 12px;
    margin: -16px -12px;
    -webkit-tap-highlight-color: transparent;
  }
  .menu summary::-webkit-details-marker {
    display: none;
  }
  .menuicon {
    --rule: var(--heading);
    position: relative;
    display: inline-block;
    width: 1.1em;
    height: 0.508em;
    color: var(--heading);
    background: linear-gradient(var(--rule), var(--rule)) left center / 100% 1.5px no-repeat;
    transition: --rule 0.18s ease;
  }
  .menuicon::before,
  .menuicon::after {
    content: "";
    position: absolute;
    left: 0;
    height: 1.5px;
    background: currentColor;
    transition: transform 0.26s ease;
  }
  .menuicon::before {
    top: 0;
    width: 100%;
  }
  .menuicon::after {
    bottom: 0;
    width: 62%;
  }
  .menu[open]:not(.closing) .menuicon {
    --rule: transparent;
  }
  .menu[open]:not(.closing) .menuicon::before {
    transform: translateY(calc(0.254em - 0.75px)) rotate(45deg) scaleX(0.727);
  }
  .menu[open]:not(.closing) .menuicon::after {
    transform: translate(0.209em, calc(0.75px - 0.254em)) rotate(-45deg) scaleX(1.173);
  }
  html:has(.menu[open]) {
    overflow: hidden;
  }
  .menu ul {
    position: absolute;
    z-index: 3;
    top: 100%;
    left: calc(-1 * var(--gutter));
    right: calc(-1 * var(--gutter));
    list-style: none;
    margin: 0;
    padding: 0.2em var(--gutter) 0.3em;
    text-align: right;
    background-color: var(--bg);
  }
  .menu[open] ul {
    animation: menu-unroll 0.22s cubic-bezier(0.2, 0.7, 0.2, 1);
  }
  .menu.closing ul {
    animation: menu-roll-up 0.15s ease-in forwards;
  }
  .runninghead:has(.menu[open])::after {
    content: "";
    position: absolute;
    z-index: 2;
    top: 100%;
    left: calc(-1 * var(--gutter));
    right: calc(-1 * var(--gutter));
    height: 100vmax;
    background-color: var(--scrim);
    animation: menu-dim 0.22s ease-out;
  }
  .runninghead:has(.menu.closing)::after {
    animation: menu-undim 0.15s ease-in forwards;
  }
  .menu li {
    margin: 0;
    padding: 0.85em 0;
    font-size: 1.12em;
    line-height: 1;
    border-top: 1px solid var(--hairline);
  }
  .menu li:first-child {
    border-top: 0;
  }
}
@keyframes menu-unroll {
  from {
    clip-path: inset(0 0 100% 0);
  }
  to {
    clip-path: inset(0 0 0 0);
  }
}
@keyframes menu-roll-up {
  from {
    clip-path: inset(0 0 0 0);
  }
  to {
    clip-path: inset(0 0 100% 0);
  }
}
@keyframes menu-dim {
  from {
    opacity: 0;
  }
}
@keyframes menu-undim {
  to {
    opacity: 0;
  }
}
@media (prefers-reduced-motion: reduce) {
  .menu ul,
  .menu[open] ul,
  .menu.closing ul,
  .runninghead:has(.menu[open])::after,
  .runninghead:has(.menu.closing)::after,
  .menuicon,
  .menuicon::before,
  .menuicon::after {
    animation: none;
    transition: none;
  }
}
.titleline {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: baseline;
  column-gap: 1em;
  margin-bottom: 0.7em;
}
.titleline > h1 {
  margin-bottom: 0;
}
.pagefile {
  white-space: nowrap;
}
.linkrow .sep {
  color: var(--heading);
  font-weight: 700;
}
.linkrow a {
  white-space: nowrap;
}
.dotlist {
  --slot: 1.15em;
  overflow: hidden;
  overflow: clip;
  overflow-clip-margin: 3px;
}
.dotlist ul {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  list-style: none;
  padding: 0;
  margin: 0 0 1em calc(-1 * var(--slot));
}
.dotlist li {
  margin: 0;
  padding-left: var(--slot);
  white-space: nowrap;
}
.dotlist li::before {
  content: "\00B7";
  content: "\00B7" / "";
  display: inline-block;
  width: var(--slot);
  margin-left: calc(-1 * var(--slot));
  text-align: center;
  color: var(--heading);
  font-weight: 700;
}
@media (max-width: 34em) {
  main .dotlist ul {
    display: block;
    margin-left: 0;
  }
  main .dotlist li {
    padding-left: 0;
    white-space: normal;
    margin-bottom: 0.15em;
  }
  main .dotlist li::before {
    content: none;
  }
}
.runninghead,
.pagefile,
.addresslabel,
.cvnav {
  font-variant-caps: all-small-caps;
  letter-spacing: 0.05em;
}
.nameplate {
  display: grid;
  grid-template-columns: var(--margin) minmax(0, 1fr);
  column-gap: var(--gap);
  align-items: start;
  margin-bottom: 4.5em;
}
.nameplate .portrait {
  display: block;
  aspect-ratio: 4 / 5;
}
.nameplate .portrait img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
  display: block;
  border: 1px solid var(--edge);
}
.nameplate .who {
  line-height: 1.5;
  align-self: center;
}
.nameplate .who > :last-child {
  margin-bottom: 0;
}
.email span {
  display: none;
}
.people {
  display: flex;
  flex-wrap: wrap;
  gap: 16px 20px;
  margin: 0 0 1em;
}
.person {
  width: 104px;
  text-align: center;
  line-height: 1.4;
}
.person img {
  width: 104px;
  height: 104px;
  display: block;
  margin-bottom: 0.25em;
  border: 1px solid var(--edge);
}
.alumni {
  list-style: none;
  padding: 0;
  margin: 0;
}
.alumni li {
  position: relative;
}
.alumni .when {
  position: absolute;
  top: 0;
  left: calc(-1 * var(--hang));
  width: var(--margin);
  text-align: right;
}
ul.plain {
  list-style: none;
  padding: 0;
}
.topichead {
  display: grid;
  grid-template-columns: var(--margin) var(--gap) minmax(0, 1fr);
  align-items: baseline;
  margin: 3.4em 0 1.2em calc(-1 * var(--hang));
}
.sec > .topichead:first-child {
  margin-top: 0;
}
.topichead > h2 {
  scroll-margin-top: 32px;
  grid-column: 1;
  margin: 0;
  text-align: right;
}
.topicdesc {
  grid-column: 3;
  margin: 0;
}
.allpapers {
  margin: 2.4em 0 0;
}
.yearhead {
  margin: 3em 0 0.9em calc(-1 * var(--hang));
  width: var(--margin);
  text-align: right;
}
.titleline + .yearhead {
  margin-top: 1.4em;
}
.pub {
  display: grid;
  grid-template-columns: var(--margin) var(--gap) minmax(0, 1fr);
  align-items: start;
  margin: 0 0 28px calc(-1 * var(--hang));
}
.pub .thumb {
  grid-column: 1;
  justify-self: end;
  margin-top: 0.358em;
}
.pub .thumb picture {
  display: block;
}
.pub .thumb img,
.pub .thumb .noimage {
  width: 140px;
  display: block;
  border: 1px solid var(--edge);
}
.pub .thumb img {
  height: auto;
}
.pub .thumb .noimage {
  height: 92px;
  background-color: var(--panel);
}
.pub .meta {
  grid-column: 3;
  min-width: 0;
}
.pub .meta p {
  margin: 0;
  line-height: 1.55;
}
.pub .venue {
  white-space: nowrap;
}
.pub .author {
  white-space: nowrap;
}
.pub .meta strong {
  display: block;
  font-weight: 600;
  line-height: 1.4;
  color: var(--heading);
  text-wrap: balance;
}
.pub .links {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0 1.1em;
  line-height: 1.5;
  margin-top: 0.15em;
}
.pub .star {
  font-variant-position: super;
}
.pub .links .bib summary {
  list-style: none;
  cursor: pointer;
  text-decoration-line: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.22em;
  text-decoration-color: var(--underline);
}
.pub .links .bib summary:hover,
.pub .links .bib summary:focus-visible {
  text-decoration-color: currentColor;
}
.pub .links .bib summary::-webkit-details-marker {
  display: none;
}
.pub .links .bib summary {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-start;
}
.pub .links .bib summary::after {
  content: attr(data-copied);
  height: 0;
  overflow: hidden;
  visibility: hidden;
  pointer-events: none;
}
pre.bibtex {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.78em;
  line-height: 1.5;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  border-left: 2px solid var(--edge);
  padding-inline-start: 14px;
  margin: 0;
  -webkit-user-select: all;
  user-select: all;
  cursor: pointer;
}
pre.bibtex[tabindex] {
  cursor: copy;
}
.copystatus {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}
.pub .meta .bibwrap {
  display: grid;
  grid-template-rows: 0fr;
  margin-block-start: 0;
  opacity: 0;
  visibility: hidden;
  transition:
    grid-template-rows 240ms ease,
    margin-block-start 240ms ease,
    opacity 160ms ease,
    visibility 240ms;
}
.pub .meta:has(.bib[open]) .bibwrap {
  grid-template-rows: 1fr;
  margin-block-start: 10px;
  opacity: 1;
  visibility: visible;
}
.pub .meta .bibwrap > pre.bibtex {
  overflow: hidden;
  min-height: 0;
}
@media (prefers-reduced-motion: reduce) {
  .pub .meta .bibwrap {
    transition: none;
  }
}
@media (max-width: 52em) {
  main.hang {
    padding-left: 0;
  }
  .sec {
    margin-top: 3em;
  }
  .sec > h2,
  .yearhead {
    position: static;
    width: auto;
    margin: 0 0 0.5em;
    text-align: left;
  }
  .yearhead {
    margin-top: 2.4em;
  }
  .titleline + .yearhead {
    margin-top: 1em;
  }
  .nameplate {
    display: flex;
    flex-wrap: wrap;
    gap: 20px;
    margin-bottom: 3em;
  }
  .nameplate .portrait {
    flex: 0 0 180px;
  }
  .nameplate .who {
    min-width: 16em;
    flex: 1 1 16em;
  }
  .topichead {
    display: block;
    margin-left: 0;
    margin-top: 2.6em;
  }
  .topichead > h2 {
    text-align: left;
    margin-bottom: 0.3em;
  }
  .pub {
    display: flex;
    gap: 18px;
    margin-left: 0;
  }
  .pub .thumb {
    flex: 0 0 140px;
  }
  .pub .meta {
    flex: 1 1 auto;
  }
  .alumni li {
    display: grid;
    grid-template-columns: 3em minmax(0, 1fr);
  }
  .alumni .when {
    position: static;
    width: auto;
    text-align: left;
  }
}
@media (max-width: 34em) {
  .pub {
    gap: 14px;
  }
  .pub .thumb {
    flex-basis: 100px;
  }
  .pub .thumb img,
  .pub .thumb .noimage {
    width: 100px;
  }
  .pub .thumb .noimage {
    height: 66px;
  }
  .pub .author {
    white-space: normal;
  }
}
.spreadpage {
  --above-spread: calc(32px + 2.6em);
}
body.spreadpage {
  margin-bottom: var(--above-spread);
}
main.spread {
  display: grid;
  grid-template-columns: 1fr 1fr;
  column-gap: calc(2 * var(--gap));
  align-items: center;
  align-content: center;
  min-height: calc(100vh - 2 * var(--above-spread));
  min-height: calc(100svh - 2 * var(--above-spread));
}
.headshot {
  display: block;
}
.headshot img {
  display: block;
  width: 100%;
  height: auto;
  border: 1px solid var(--edge);
}
.facing > :last-child {
  margin-bottom: 0;
}
@media (max-width: 52em) {
  main.spread {
    display: block;
    min-height: 0;
  }
  .headshot {
    width: min(100%, 360px);
    margin-bottom: 1.4em;
  }
}
.pixel {
  position: absolute;
  width: 1px;
  height: 1px;
  border: 0;
  opacity: 0;
  pointer-events: none;
}
body.cvpage {
  font-variant-numeric: lining-nums tabular-nums;
  font-size: 16px;
  padding-top: env(safe-area-inset-top, 0px);
  padding-bottom: env(safe-area-inset-bottom, 0px);
}
body.cvpage a {
  text-decoration-line: none;
}
body.cvpage a:hover,
body.cvpage a:focus-visible {
  text-decoration-line: underline;
}
@media (max-width: 34em) {
  body.cvpage {
    font-size: 17px;
  }
}
.cv {
  line-height: 1.45;
}
.cvnameplate h1 {
  font-size: 2.4em;
  letter-spacing: 0;
}
.cvnameplate .titleline {
  margin-bottom: 1.68em;
}
.cvcontact {
  display: grid;
  grid-template-columns: 1fr max-content;
  column-gap: 2em;
  align-items: end;
  line-height: 1.32;
}
.cvcontact p {
  margin: 0;
  min-width: 0;
}
.cvcontact .cvreach {
  text-align: right;
}
.cvcontact a {
  overflow-wrap: anywhere;
}
@media (max-width: 34em) {
  .cvcontact {
    display: block;
  }
  .cvcontact .cvreach {
    text-align: left;
    margin-top: 0.7em;
  }
}
.cvnav {
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  width: min(calc(100% - 2 * var(--gutter)), var(--frame));
  margin-left: calc(
    (100% - min(100%, var(--frame) + var(--balance) + 2 * var(--gutter))) / 2 +
      var(--gutter)
  );
  z-index: 1;
  justify-content: flex-start;
  column-gap: 0.55em;
  background-color: var(--bg);
  padding: calc(0.7em + env(safe-area-inset-top, 0px)) 0 0.6em;
  border-bottom: 1px solid var(--hairline);
}
.cvnav.stuck {
  display: flex;
}
.cvnav .sep {
  display: none;
}
.cvnav a,
.cvnav .sep {
  font-size: 15px;
}
.cvnav a {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
}
.cvnav a::after {
  content: attr(data-label);
  font-weight: bold;
  height: 0;
  overflow: hidden;
  visibility: hidden;
  pointer-events: none;
}
.cvnav a.here,
.cvnav a.here:link,
.cvnav a.here:visited {
  font-weight: bold;
  text-decoration: none;
  cursor: default;
}
.cvsec {
  scroll-margin-top: calc(4.5em + env(safe-area-inset-top, 0px));
}
@media (max-width: 58.5em) {
  .cvsec {
    scroll-margin-top: calc(5.5em + env(safe-area-inset-top, 0px));
  }
}
@media (max-width: 34em) {
  .cvnav {
    flex-wrap: nowrap;
    overflow-x: auto;
    overflow-y: hidden;
    scrollbar-width: none;
    width: 100%;
    margin-left: 0;
    line-height: 1.3;
    padding: calc(0.5em + env(safe-area-inset-top, 0px)) var(--gutter) 0.45em;
  }
  .cvnav a,
  .cvnav .sep {
    font-size: inherit;
  }
  .cvnav::-webkit-scrollbar {
    display: none;
  }
  .cvnav .sep {
    display: inline;
  }
  .cvsec {
    scroll-margin-top: calc(4em + env(safe-area-inset-top, 0px));
  }
}
@media (prefers-reduced-motion: no-preference) {
  .cvnav {
    scroll-behavior: smooth;
  }
}
.cvprepared {
  margin: 2em 0 0;
}
.cv h2 {
  font-size: 1.4em;
  font-variant-caps: small-caps;
  letter-spacing: 0.06em;
  margin: 1.86em 0 0.35em;
  overflow: hidden;
}
.cv h2::after {
  content: "";
  display: inline-block;
  width: 100%;
  margin: 0 -100% 0 0.9em;
  vertical-align: 0.34em;
  border-top: 0.5px solid var(--text);
}
.cv h3 {
  font-size: 1.2em;
  font-variant-caps: small-caps;
  letter-spacing: 0.03em;
  color: var(--heading);
  margin: 0.72em 0 0.07em;
}
dl.dated {
  display: grid;
  grid-template-columns: 7.75em 1fr;
  column-gap: 0.65em;
  row-gap: 0.15em;
  margin: 0 0 0.15em;
}
dl.dated > dt {
  grid-column: 1;
  margin: 0;
}
dl.dated > dd {
  grid-column: 2;
  margin: 0;
}
.orgname {
  font-weight: bold;
}
.facts {
  margin: -0.15em 0 0.07em;
  line-height: 1.32;
}
.orgname ~ .facts {
  margin-bottom: 0.23em;
}
dl.dated > dd:last-child > .facts {
  margin-bottom: 0;
}
.factlabel {
  font-style: italic;
}
.factlabel::after {
  content: ": ";
}
.facts > .fact::after {
  content: "";
  display: block;
}
.facts.inline > .fact::after {
  content: "; ";
  display: inline;
}
.facts.inline > .fact:last-child::after {
  content: "";
}
@media (max-width: 34em) {
  dl.dated {
    grid-template-columns: 1fr;
    row-gap: 0;
  }
  dl.dated > dt {
    grid-column: 1;
    font-style: italic;
  }
  dl.dated > dd {
    grid-column: 1;
    margin-bottom: 0.8em;
  }
}
dl.dated > dt.sub {
  padding-left: 1.05em;
}
@media (max-width: 34em) {
  dl.dated > dt.sub {
    padding-left: 0;
  }
}
@media (width > 34em) {
  dl.cvorg {
    row-gap: 0;
  }
  dl.cvorg > .sub {
    line-height: 1.15;
  }
  dl.cvorg > .sub:nth-of-type(2) {
    margin-top: 0.45em;
  }
  dl.cvorg > .sub:last-of-type {
    margin-bottom: 0.15em;
  }
}
ol.pubs {
  list-style: none;
  margin: 0.2em 0 0;
  padding: 0;
}
ol.pubs > li {
  display: grid;
  grid-template-columns: 2.75em 1fr;
  column-gap: 0.55em;
  margin: 0 0 0.26em;
}
@media (max-width: 34em) {
  ol.pubs > li {
    grid-template-columns: 2em 1fr;
    column-gap: 0.5em;
  }
}
.pubnum {
  grid-column: 1;
  text-align: right;
}
.pubbody {
  grid-column: 2;
}
.pubtitle {
  font-style: italic;
}
.pubnotes {
  display: block;
  font-style: italic;
  margin-top: -0.15em;
  line-height: 1.32;
}
.pubnote + .pubnote::before {
  content: "; ";
}
.metrics,
.cvnote {
  margin: 0 0 0.15em;
}
u.trainee {
  text-decoration-thickness: from-font;
  text-underline-offset: 0.14em;
}
.tablewrap {
  overflow-x: auto;
  margin: 0 0 0.15em;
}
.cvtable {
  border-collapse: collapse;
  width: auto;
  min-width: 30em;
}
.cvtable th,
.cvtable td {
  padding: 0 0.65em;
  text-align: left;
  vertical-align: top;
}
.cvtable tbody tr:last-child td {
  padding-bottom: 0.38em;
}
.cv h2 + .tablewrap {
  margin-top: 0.86em;
}
.cvtable th:first-child,
.cvtable td:first-child {
  padding-left: 0;
}
.cvtable th:first-child,
.cvtable td:first-child {
  width: 7.75em;
  white-space: nowrap;
}
.cvtable th:last-child,
.cvtable td:last-child {
  padding-right: 0;
}
.cvtable thead th {
  padding-bottom: 0.22em;
}
.cvtable .a-right {
  text-align: right;
  white-space: nowrap;
}
@media (max-width: 34em) {
  .cvtable {
    min-width: 0;
  }
  .cvtable th,
  .cvtable td {
    padding: 0.3em 0.5em;
  }
  .cvtable th:first-child,
  .cvtable td:first-child {
    width: auto;
    white-space: normal;
  }
  .cvtable thead th.a-right {
    white-space: normal;
  }
}
.tnotes {
  margin: 0 0 0.6em;
  padding-left: 1.6em;
  line-height: 1.32;
}
@media print {
  :root {
    color-scheme: light;
    --bg: #ffffff;
    --text: #000000;
    --heading: #000000;
    --hairline: #aaaaaa;
    --edge: #aaaaaa;
    --panel: #ffffff;
  }
  @page {
    size: letter;
    margin: 0.9in;
  }
  body {
    margin: 0;
    padding: 0;
    max-width: none;
    font-size: 10.5pt;
    line-height: 1.35;
    color: var(--text);
    background-color: var(--bg);
  }
  nav,
  .pagefile,
  .pixel {
    display: none !important;
  }
  a,
  a:link,
  a:visited {
    color: var(--text);
    text-decoration: none;
  }
  u.trainee {
    text-decoration: underline;
  }
  h1,
  h2,
  h3,
  .topichead,
  dl.dated > dt {
    break-after: avoid;
    page-break-after: avoid;
  }
  dl.dated > dd,
  ol.pubs > li,
  .cvorg,
  .cvnameplate,
  tr {
    break-inside: avoid;
    page-break-inside: avoid;
  }
  p,
  li,
  dd {
    orphans: 3;
    widows: 3;
  }
  .tablewrap {
    overflow: visible;
  }
  .cvtable {
    min-width: 0;
  }
  .cvtable thead {
    display: table-header-group;
  }
  body.spreadpage {
    margin-bottom: 0;
  }
}
