@font-face { font-family: Libertinus; src: url('../assets/fonts/LibertinusSerif-Regular.otf') format('opentype'); font-style: normal; font-weight: 400; font-display: swap; }
@font-face { font-family: Libertinus; src: url('../assets/fonts/LibertinusSerif-Bold.otf') format('opentype'); font-style: normal; font-weight: 700; font-display: swap; }
@font-face { font-family: Libertinus; src: url('../assets/fonts/LibertinusSerif-Italic.otf') format('opentype'); font-style: italic; font-weight: 400; font-display: swap; }
@font-face { font-family: Libertinus; src: url('../assets/fonts/LibertinusSerif-BoldItalic.otf') format('opentype'); font-style: italic; font-weight: 700; font-display: swap; }
* { box-sizing: border-box; }
html { color-scheme: light; scroll-padding-top: 24px; }
body { margin: 0; color: #000; background: #fff; font: .9125rem/1.28685 Libertinus, Georgia, serif; font-kerning: normal; }
a { color: #2F65A7; text-decoration: none; }
a:hover { text-decoration: underline; text-underline-offset: .15em; }
a:focus-visible { outline: 3px solid #2F65A7; outline-offset: 4px; }
[tabindex='-1']:focus { outline: none; }
h1,h2,h3,p { margin: 0; }
strong { font-weight: 700; }
.venue { font-style: normal; }
#cv-content { padding-block: 80px 48px; }
.skip-link { position: fixed; top: 8px; left: 12px; z-index: 10; padding: 8px 12px; color: #fff; background: #2F65A7; transform: translateY(-200%); font: 1rem/1.5 sans-serif; }
.skip-link:focus { transform: none; }
.cv-page { position: relative; width: 60rem; max-width: 100%; margin-inline: auto; padding: 0 5.7rem 0 11.1rem; }
.cv-page + .cv-page { margin-top: 1.1425rem; }
.cv-header { margin-top: 0; }
.cv-header h1 { display: flex; flex-wrap: wrap; align-items: baseline; gap: .55rem; font-size: 1.6604rem; line-height: 2.325rem; font-weight: 400; margin-bottom: .345rem; }
.cv-header h1 strong { font-size: 1.9925rem; }
.contact-header { display: grid; grid-template-columns: 55% 45%; }
.contact-links { text-align: right; line-height: max(24px, 1.28685em); }
.contact-links a { display: inline-block; min-height: 24px; line-height: 1.28685; vertical-align: top; }
.cv-section { margin-top: 1.1425rem; }
.cv-header + .cv-section { margin-top: .8475rem; }
.cv-section:has(#peer-reviewed-conference-papers) { margin-top: 1.614rem; }
.cv-section:has(#demos) { margin-top: 1.359rem; }
.cv-section h2 { font-size: 1.1955rem; line-height: 1.10; border-bottom: .5px solid #000; padding-bottom: 1.15px; margin-bottom: .25rem; font-weight: 700;  }
.cv-section > p { text-align: justify; hyphens: auto; }
.cv-entry { position: relative; margin-bottom: .4485rem; }
.entry-label { position: absolute; width: 5.1rem; right: calc(100% + .6844rem); top: 0; text-align: right; font-style: italic; white-space: nowrap; }
.entry-body { text-align: justify; hyphens: auto; }
.pub { margin-bottom: .157rem; }
.pub .entry-label { font-style: normal; font-weight: 700; }
.cv-page[data-page='2'] .cv-section:first-child { margin-top: 0; }
.service-role + .service-role { margin-top: .429rem; }
.service-role h3 { font-size: 1em; font-weight: 700; line-height: inherit; }
.service-role .cv-entry { margin-bottom: 0; }
.updated { text-align: center; font-size: .7472rem; line-height: 1.2; margin-top: 2.75rem; }
.page-footer { display: none; color: #737373; font-size: .8302rem; line-height: 1.2; }
@media (max-width: 850px) {
  #cv-content { padding-block: 56px 28px; }
  .cv-page { width: auto; padding: 0 24px 0 6.25rem; }
  .cv-header h1 { flex-wrap: wrap; white-space: normal; column-gap: 16px; row-gap: 0; }
  .contact-header { grid-template-columns: 1fr; gap: 12px; }
  .contact-links { text-align: left; }
  .entry-label { width: 4.25rem; right: calc(100% + .625rem); white-space: normal; }
}
@media (max-width: 520px) {
  body { font-size: 1rem; line-height: 1.5; }
  #cv-content { padding-block: 48px 24px; }
  .cv-page { padding: 0 20px; }
  .cv-header { margin-top: 0; }
  .cv-section h2 { font-size: 1.25rem; line-height: 1.3; margin-bottom: 10px; }
  .cv-entry { display: grid; gap: 2px; margin-bottom: 12px; }
  .entry-label { position: static; width: auto; text-align: left; }
  .entry-label br { display: none; }

  .entry-body, .cv-section > p { text-align: left; hyphens: none; }
  .service-role + .service-role { margin-top: 12px; }
  .updated { font-size: .875rem; }
}
@media (forced-colors: active) {
  a:focus-visible { outline-color: Highlight; }
}
@media print {
  @page { size: letter; margin: 0; }
  body { background: white; }
  .skip-link { display: none; }
  #cv-content { padding: 0; }
  .cv-page { width: 8.5in; height: 11in; min-height: 11in; margin: 0; padding: .85in .95in .95in 1.85in; box-shadow: none; break-after: page; }
  .cv-page + .cv-page { margin-top: 0; }
  .cv-page:last-child { break-after: auto; }
  .cv-header { margin-top: -.5625rem; }
  .cv-header h1 { flex-wrap: nowrap; white-space: nowrap; }
  .contact-header { grid-template-columns: 55% 45%; gap: 0; }
  .contact-links { text-align: right; }
  .entry-label { position: absolute; width: .85in; right: calc(100% + .75em); text-align: right; }
  .page-footer { display: block; position: absolute; right: .95in; bottom: .3in; }
}

main a { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .15em; }
::selection { background: #DCE9F8; color: #242d2b; }
