@font-face { font-family: 'Noto Sans'; font-weight: 400; font-style: normal; src: url("../fonts/Noto-Sans-regular/Noto-Sans-regular.eot"); src: url("../fonts/Noto-Sans-regular/Noto-Sans-regular.eot?#iefix") format("embedded-opentype"), local("Noto Sans"), local("Noto-Sans-regular"), url("../fonts/Noto-Sans-regular/Noto-Sans-regular.woff2") format("woff2"), url("../fonts/Noto-Sans-regular/Noto-Sans-regular.woff") format("woff"), url("../fonts/Noto-Sans-regular/Noto-Sans-regular.ttf") format("truetype"), url("../fonts/Noto-Sans-regular/Noto-Sans-regular.svg#NotoSans") format("svg"); }
@font-face { font-family: 'Noto Sans'; font-weight: 700; font-style: normal; src: url("../fonts/Noto-Sans-700/Noto-Sans-700.eot"); src: url("../fonts/Noto-Sans-700/Noto-Sans-700.eot?#iefix") format("embedded-opentype"), local("Noto Sans Bold"), local("Noto-Sans-700"), url("../fonts/Noto-Sans-700/Noto-Sans-700.woff2") format("woff2"), url("../fonts/Noto-Sans-700/Noto-Sans-700.woff") format("woff"), url("../fonts/Noto-Sans-700/Noto-Sans-700.ttf") format("truetype"), url("../fonts/Noto-Sans-700/Noto-Sans-700.svg#NotoSans") format("svg"); }
@font-face { font-family: 'Noto Sans'; font-weight: 400; font-style: italic; src: url("../fonts/Noto-Sans-italic/Noto-Sans-italic.eot"); src: url("../fonts/Noto-Sans-italic/Noto-Sans-italic.eot?#iefix") format("embedded-opentype"), local("Noto Sans Italic"), local("Noto-Sans-italic"), url("../fonts/Noto-Sans-italic/Noto-Sans-italic.woff2") format("woff2"), url("../fonts/Noto-Sans-italic/Noto-Sans-italic.woff") format("woff"), url("../fonts/Noto-Sans-italic/Noto-Sans-italic.ttf") format("truetype"), url("../fonts/Noto-Sans-italic/Noto-Sans-italic.svg#NotoSans") format("svg"); }
@font-face { font-family: 'Noto Sans'; font-weight: 700; font-style: italic; src: url("../fonts/Noto-Sans-700italic/Noto-Sans-700italic.eot"); src: url("../fonts/Noto-Sans-700italic/Noto-Sans-700italic.eot?#iefix") format("embedded-opentype"), local("Noto Sans Bold Italic"), local("Noto-Sans-700italic"), url("../fonts/Noto-Sans-700italic/Noto-Sans-700italic.woff2") format("woff2"), url("../fonts/Noto-Sans-700italic/Noto-Sans-700italic.woff") format("woff"), url("../fonts/Noto-Sans-700italic/Noto-Sans-700italic.ttf") format("truetype"), url("../fonts/Noto-Sans-700italic/Noto-Sans-700italic.svg#NotoSans") format("svg"); }
.highlight table td { padding: 5px; }

.highlight table pre { margin: 0; }

.highlight .cm { color: #999988; font-style: italic; }

.highlight .cp { color: #999999; font-weight: bold; }

.highlight .c1 { color: #999988; font-style: italic; }

.highlight .cs { color: #999999; font-weight: bold; font-style: italic; }

.highlight .c, .highlight .cd { color: #999988; font-style: italic; }

.highlight .err { color: #a61717; background-color: #e3d2d2; }

.highlight .gd { color: #000000; background-color: #ffdddd; }

.highlight .ge { color: #000000; font-style: italic; }

.highlight .gr { color: #aa0000; }

.highlight .gh { color: #999999; }

.highlight .gi { color: #000000; background-color: #ddffdd; }

.highlight .go { color: #888888; }

.highlight .gp { color: #555555; }

.highlight .gs { font-weight: bold; }

.highlight .gu { color: #aaaaaa; }

.highlight .gt { color: #aa0000; }

.highlight .kc { color: #000000; font-weight: bold; }

.highlight .kd { color: #000000; font-weight: bold; }

.highlight .kn { color: #000000; font-weight: bold; }

.highlight .kp { color: #000000; font-weight: bold; }

.highlight .kr { color: #000000; font-weight: bold; }

.highlight .kt { color: #445588; font-weight: bold; }

.highlight .k, .highlight .kv { color: #000000; font-weight: bold; }

.highlight .mf { color: #009999; }

.highlight .mh { color: #009999; }

.highlight .il { color: #009999; }

.highlight .mi { color: #009999; }

.highlight .mo { color: #009999; }

.highlight .m, .highlight .mb, .highlight .mx { color: #009999; }

.highlight .sb { color: #d14; }

.highlight .sc { color: #d14; }

.highlight .sd { color: #d14; }

.highlight .s2 { color: #d14; }

.highlight .se { color: #d14; }

.highlight .sh { color: #d14; }

.highlight .si { color: #d14; }

.highlight .sx { color: #d14; }

.highlight .sr { color: #009926; }

.highlight .s1 { color: #d14; }

.highlight .ss { color: #990073; }

.highlight .s { color: #d14; }

.highlight .na { color: #008080; }

.highlight .bp { color: #999999; }

.highlight .nb { color: #0086B3; }

.highlight .nc { color: #445588; font-weight: bold; }

.highlight .no { color: #008080; }

.highlight .nd { color: #3c5d5d; font-weight: bold; }

.highlight .ni { color: #800080; }

.highlight .ne { color: #990000; font-weight: bold; }

.highlight .nf { color: #990000; font-weight: bold; }

.highlight .nl { color: #990000; font-weight: bold; }

.highlight .nn { color: #555555; }

.highlight .nt { color: #000080; }

.highlight .vc { color: #008080; }

.highlight .vg { color: #008080; }

.highlight .vi { color: #008080; }

.highlight .nv { color: #008080; }

.highlight .ow { color: #000000; font-weight: bold; }

.highlight .o { color: #000000; font-weight: bold; }

.highlight .w { color: #bbbbbb; }

.highlight { background-color: #f8f8f8; }

body { background-color: #fff; padding: 50px; font: 14px/1.5 "Noto Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; color: #727272; font-weight: 400; }

h1, h2, h3, h4, h5, h6 { color: #222; margin: 0 0 20px; }

p, ul, ol, table, pre, dl { margin: 0 0 20px; }

h1, h2, h3 { line-height: 1.1; }

h1 { font-size: 28px; }

h2 { color: #393939; }

h3, h4, h5, h6 { color: #494949; }

a { color: #267CB9; text-decoration: none; }

a:hover, a:focus { color: #069; font-weight: bold; }

a small { font-size: 11px; color: #777; margin-top: -0.3em; display: block; }

a:hover small { color: #777; }

.wrapper { width: 860px; margin: 0 auto; }

blockquote { border-left: 1px solid #e5e5e5; margin: 0; padding: 0 0 0 20px; font-style: italic; }

code, pre { font-family: Monaco, Bitstream Vera Sans Mono, Lucida Console, Terminal, Consolas, Liberation Mono, DejaVu Sans Mono, Courier New, monospace; color: #333; }

pre { padding: 8px 15px; background: #f8f8f8; border-radius: 5px; border: 1px solid #e5e5e5; overflow-x: auto; }

table { width: 100%; border-collapse: collapse; }

th, td { text-align: left; padding: 5px 10px; border-bottom: 1px solid #e5e5e5; }

dt { color: #444; font-weight: 700; }

th { color: #444; }

img { max-width: 100%; }

kbd { background-color: #fafbfc; border: 1px solid #c6cbd1; border-bottom-color: #959da5; border-radius: 3px; box-shadow: inset 0 -1px 0 #959da5; color: #444d56; display: inline-block; font-size: 11px; line-height: 10px; padding: 3px 5px; vertical-align: middle; }

header { width: 270px; float: left; position: fixed; -webkit-font-smoothing: subpixel-antialiased; }

ul.downloads { list-style: none; height: 40px; padding: 0; background: #f4f4f4; border-radius: 5px; border: 1px solid #e0e0e0; width: 270px; }

.downloads li { width: 89px; float: left; border-right: 1px solid #e0e0e0; height: 40px; }

.downloads li:first-child a { border-radius: 5px 0 0 5px; }

.downloads li:last-child a { border-radius: 0 5px 5px 0; }

.downloads a { line-height: 1; font-size: 11px; color: #676767; display: block; text-align: center; padding-top: 6px; height: 34px; }

.downloads a:hover, .downloads a:focus { color: #675C5C; font-weight: bold; }

.downloads ul a:active { background-color: #f0f0f0; }

strong { color: #222; font-weight: 700; }

.downloads li + li + li { border-right: none; width: 89px; }

.downloads a strong { font-size: 14px; display: block; color: #222; }

section { width: 500px; float: right; padding-bottom: 50px; }

small { font-size: 11px; }

hr { border: 0; background: #e5e5e5; height: 1px; margin: 0 0 20px; }

footer { width: 270px; float: left; position: fixed; bottom: 50px; -webkit-font-smoothing: subpixel-antialiased; }

@media print, screen and (max-width: 960px) { div.wrapper { width: auto; margin: 0; }
  header, section, footer { float: none; position: static; width: auto; }
  header { padding-right: 320px; }
  section { border: 1px solid #e5e5e5; border-width: 1px 0; padding: 20px 0; margin: 0 0 20px; }
  header a small { display: inline; }
  header ul { position: absolute; right: 50px; top: 52px; } }
@media print, screen and (max-width: 720px) { body { word-wrap: break-word; }
  header { padding: 0; }
  header ul, header p.view { position: static; }
  pre, code { word-wrap: normal; } }
@media print, screen and (max-width: 480px) { body { padding: 15px; }
  .downloads { width: 99%; }
  .downloads li, .downloads li + li + li { width: 33%; } }
@media print { body { padding: 0.4in; font-size: 12pt; color: #444; } }
:root { --ink: #1f2933; --muted: #667580; --accent: #2f6473; --accent-dark: #1f3b4d; --line: #dfe5e8; --paper: #f5f7f7; --surface: #ffffff; --soft: #edf3f4; }

* { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body { padding: 64px 32px; color: var(--ink); background: var(--paper); font: 15px/1.72 -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; font-weight: 400; }

a { color: var(--accent); text-decoration: none; text-underline-offset: 3px; }

a:hover, a:focus { color: var(--accent-dark); font-weight: inherit; text-decoration: underline; }

.skip-link { position: fixed; z-index: 20; top: 12px; left: 12px; padding: 8px 12px; color: white; background: var(--accent-dark); border-radius: 6px; transform: translateY(-150%); }

.skip-link:focus { color: white; transform: translateY(0); }

.wrapper { width: min(100%, 1120px); margin: 0 auto; }

.profile { width: 250px; position: fixed; float: none; }

.portrait-link { display: inline-block; }

.portrait { width: 184px; height: 220px; margin-bottom: 26px; object-fit: cover; object-position: center 24%; border: 8px solid var(--surface); border-radius: 18px; box-shadow: 0 14px 32px rgba(31, 59, 77, 0.12); }

.profile h1 { margin: 0 0 8px; font-family: Georgia, "Times New Roman", serif; font-size: 32px; font-weight: 500; letter-spacing: -0.025em; line-height: 1.15; }

.profile h1 a { color: var(--accent-dark); }

.profile h1 a:hover { text-decoration: none; }

.tagline { margin: 0 0 5px; color: #455762; font-size: 14px; }

.profile-note { margin: 0 0 28px; color: var(--muted); font-size: 11px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; }

.site-nav { display: flex; gap: 20px; margin-bottom: 22px; padding-bottom: 18px; border-bottom: 1px solid var(--line); }

.site-nav a { color: var(--muted); font-size: 16px; font-weight: 650; }

.site-nav a.current, .site-nav a:hover { color: var(--accent-dark); text-decoration: none; }

.site-nav a.current { box-shadow: inset 0 -2px var(--accent); }

.profile-links { display: grid; gap: 7px; }

.profile-links a { width: fit-content; color: var(--accent); font-size: 13px; }

main { width: 780px; float: right; padding: 48px 54px 58px; background: var(--surface); border: 1px solid rgba(223, 229, 232, 0.9); border-radius: 18px; box-shadow: 0 18px 50px rgba(31, 59, 77, 0.07); }

h1, h2, h3, h4, h5, h6 { color: var(--accent-dark); }

main h1, main h2, main h3 { line-height: 1.3; }

main h1 { margin: 0 0 18px; font-family: Georgia, "Times New Roman", serif; font-size: 37px; font-weight: 500; letter-spacing: -0.025em; }

main h2 { margin: 46px 0 18px; padding-bottom: 9px; border-bottom: 1px solid var(--line); font-family: Georgia, "Times New Roman", serif; font-size: 24px; font-weight: 500; }

main h3 { margin: 0; font-size: 16px; font-weight: 650; }

p, ul, ol, table, pre, dl { margin: 0 0 18px; }

.kicker { margin-bottom: 10px; color: var(--accent); font-size: 11px; font-weight: 750; letter-spacing: 0.12em; text-transform: uppercase; }

.lead { margin-bottom: 26px; color: #3f505a; font-family: Georgia, "Times New Roman", serif; font-size: 19px; line-height: 1.65; }

.text-link { display: inline-block; margin-top: 5px; font-weight: 650; }

.interest-list { display: flex; flex-wrap: wrap; gap: 9px; margin: 0; padding: 0; list-style: none; }

.interest-list li { padding: 7px 11px; color: #36535d; background: var(--soft); border-radius: 999px; font-size: 13px; }

.publication-list { margin: 0 0 4px; padding: 0; list-style: none; }

.paper { padding: 9px 0; border-bottom: 1px solid var(--line); }

.paper:first-child { padding-top: 3px; }

.paper:last-child { border-bottom: 0; }

.paper h3 { margin-bottom: 2px; font-family: Georgia, "Times New Roman", serif; font-size: 15px; font-weight: 400; line-height: 1.34; }

.paper h3 a { color: var(--accent-dark); }

.paper h3 a:hover { color: var(--accent); }

.authors { display: block; margin: 0; color: var(--muted); font-size: 12.5px; line-height: 1.45; }

.venue { display: block; margin: 1px 0 0; color: #3f505a; font-size: 12px; font-weight: 700; letter-spacing: 0.015em; line-height: 1.45; }

.note + h2, .publication-list + h2 { margin-top: 28px; margin-bottom: 10px; padding-bottom: 6px; }

.note { padding: 14px 16px; color: #53636d; background: #f7f9f9; border-left: 3px solid #aac0c7; border-radius: 0 8px 8px 0; font-size: 13px; }

footer { width: 250px; position: fixed; bottom: 58px; float: none; color: #89959c; }

footer p { margin: 0; font-size: 11px; }

@media print, screen and (max-width: 1150px) { body { padding: 42px 28px; }
  .wrapper { width: min(100%, 880px); }
  .profile, main, footer { width: auto; position: static; float: none; }
  .profile { display: grid; grid-template-columns: 150px 1fr; column-gap: 28px; align-items: start; margin-bottom: 30px; }
  .portrait-link { grid-row: 1 / 7; }
  .portrait { width: 150px; height: 176px; margin: 0; }
  .profile h1 { margin-top: 8px; }
  .profile-note { margin-bottom: 18px; }
  .site-nav { margin-bottom: 14px; padding-bottom: 12px; }
  main { padding: 46px 50px 54px; }
  footer { display: flex; justify-content: space-between; margin-top: 24px; padding: 0 4px; } }
@media print, screen and (max-width: 600px) { body { padding: 24px 14px; }
  .profile { grid-template-columns: 96px 1fr; column-gap: 18px; }
  .portrait { width: 96px; height: 116px; border-width: 5px; border-radius: 13px; }
  .profile h1 { margin-top: 0; font-size: 26px; }
  .tagline { font-size: 12px; }
  .profile-note { display: none; }
  .site-nav { margin: 10px 0 8px; padding: 0; border: 0; }
  .profile-links { grid-auto-flow: column; grid-template-columns: max-content max-content; gap: 15px; }
  main { padding: 32px 24px 40px; border-radius: 14px; }
  main h1 { font-size: 31px; }
  main h2 { margin-top: 38px; font-size: 22px; }
  .lead { font-size: 17px; }
  footer { padding: 0 4px 8px; } }
@media print { body { padding: 0.4in; background: white; }
  main { border: 0; box-shadow: none; } }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
