
  .site {
    --paper:#f8f9fa; --ink:#202833; --body:#444e59; --muted:#5d6975;
    --blue:#2b587a; --blue-hover:#173b56; --rule:#d6dce2;
    --serif:Georgia,'Times New Roman',serif;
    --sans:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;
    --portrait-width:188px; --paper-gap:28px;
    color-scheme:light; color:var(--ink); background:var(--paper);
    font:16px/1.6 var(--sans); padding:38px 44px 28px; box-sizing:border-box;
  }
  .site * {box-sizing:border-box}
  .site h1,.site h2,.site h3,
  .site p,.site figure {margin:0}
  .site a {color:var(--blue);text-decoration:none}
  .site a:hover {color:var(--blue-hover);text-decoration:underline;text-underline-offset:4px}
  .site a:focus-visible {outline:2px solid var(--blue);outline-offset:5px}
  .site .mast {display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:20px;padding-bottom:23px;border-bottom:1px solid var(--rule)}
  .site h1 {font:400 42px/1.14 var(--serif);letter-spacing:-1.1px}
  .site .pages {display:flex;gap:25px;flex-wrap:wrap;font-size:18px}
  .site .introduction {display:grid;grid-template-columns:minmax(0,1fr) var(--portrait-width);gap:44px;padding:29px 0 30px;align-items:start}
  .site .bio {grid-column:1;grid-row:1;min-width:0}
  .site .research-intro {font:400 22px/1.52 var(--serif);max-width:55ch;color:var(--ink)}
  .site .appointment {font-size:19px;line-height:1.6;color:var(--body);margin-top:17px;max-width:66ch}
  .site .contact {display:flex;align-items:baseline;flex-wrap:wrap;column-gap:21px;row-gap:7px;margin-top:19px;font-size:16px}
  .site .contact a {font-weight:600;white-space:nowrap;padding:3px 0}
  .site figure {grid-column:2;grid-row:1;width:var(--portrait-width)}
  .site .portrait {width:100%;aspect-ratio:5/6;background-image:var(--photo);background-size:428.5714% auto;background-position:91.30435% 50%}
  .site figcaption {font:9px/1.4 var(--sans);color:var(--muted);margin-top:6px;text-align:center}
  .site .research {display:grid;grid-template-columns:168px minmax(0,1fr);gap:34px;border-top:1px solid var(--rule);padding-top:25px}
  .site .research-label h2 {font:500 18px/1.4 var(--sans);color:var(--ink)}
  .site .research-label a {display:inline-block;font-size:15px;margin-top:10px}
  .site article {padding-bottom:var(--paper-gap);margin-bottom:var(--paper-gap);border-bottom:1px solid var(--rule)}
  .site article:last-child {border-bottom:0;margin-bottom:0;padding-bottom:0}
  .site h3 {font:400 24px/1.3 var(--serif);letter-spacing:-.25px}
  .site h3 a {color:var(--ink)}
  .site .metadata {font:400 13px/1.6 var(--sans);color:var(--muted);margin-top:7px}
  .site .question {font:600 16px/1.55 var(--sans);margin-top:17px;color:var(--ink)}
  .site .answer {font:400 16px/1.65 var(--sans);margin-top:6px;color:var(--body);max-width:70ch}
  .site .paper-links {display:flex;flex-wrap:wrap;gap:20px;font-size:14px;margin-top:12px}
  .site .paper-links a {padding:3px 0}
  @media(max-width:760px) {
    .site {padding:28px;--portrait-width:150px}
    .site h1 {font-size:36px}
    .site .pages {gap:20px;font-size:16px}
    .site .introduction {gap:28px}
    .site .research-intro {font-size:20px}
    .site .research {grid-template-columns:140px minmax(0,1fr);gap:25px}
    .site .contact {column-gap:18px}
    .site h3 {font-size:23px}
  }
  @media(max-width:580px) {
    .site {padding:23px 20px}
    .site .mast {gap:14px;padding-bottom:20px}
    .site .introduction {display:flow-root;padding-top:23px}
    .site figure {width:152px;margin:0 auto 24px}
    .site .research-intro {font-size:20px}
    .site .appointment {margin-top:17px}
    .site .contact {font-size:15px;column-gap:19px;row-gap:4px;margin-top:15px}
    .site .research {display:block;padding-top:20px}
    .site .research-label {display:flex;justify-content:space-between;align-items:baseline;gap:15px;margin-bottom:23px}
    .site .research-label a {margin-top:0}
    .site h3 {font-size:23px}
    .site .question,.site .answer {font-size:15px}
  }
  @media(pointer:coarse) {
    .site .pages a,.site .contact a,.site .paper-links a {display:inline-flex;align-items:center;min-height:44px}
  }

    #software-examples { --s3-bg:#f8f9fa; --s3-ink:#202833; --s3-copy:#444e59; --s3-muted:#5d6975; --s3-blue:#2b587a; --s3-border:#d6dce2; --s3-code:#eef1f4; --s3-code-size:12.5px; color-scheme:light; background:var(--s3-bg); color:var(--s3-copy); font:15.5px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif; text-align:left; width:100%; }
    #software-examples * { box-sizing:border-box; }
    #software-examples [hidden] { display:none !important; }
    #software-examples a { color:var(--s3-blue); text-decoration:none; }
    #software-examples a:hover { text-decoration:underline; }
    #software-examples button,#software-examples summary { cursor:pointer; }
    #software-examples p { margin:0; font:inherit; }
    #software-examples h1,#software-examples h2,#software-examples h3 { font-family:Georgia,"Times New Roman",serif; font-weight:500; color:var(--s3-ink); letter-spacing:0; border:0; padding:0; }
    #software-examples .s3-main { max-width:1004px; margin:0 auto; padding:28px 32px 54px; }
    #software-examples h1 { font-size:33px; line-height:1.1; margin:0 0 35px; }
    #software-examples h2 { font-size:27px; line-height:1.2; margin:0 0 6px; }
    #software-examples .s3-availability { display:flex; flex-wrap:wrap; gap:9px; font-size:14px; color:var(--s3-muted); margin-bottom:16px; }
    #software-examples .s3-intro { max-width:755px; }
    #software-examples .s3-resources { display:flex; flex-wrap:wrap; align-items:baseline; gap:5px 23px; margin:16px 0 25px; font-size:14px; }
    #software-examples .s3-citation summary { color:var(--s3-blue); list-style:none; }
    #software-examples .s3-citation summary::-webkit-details-marker { display:none; }
    #software-examples .s3-citation summary::after { content:" +"; }
    #software-examples .s3-citation[open] { flex:1 0 100%; }
    #software-examples .s3-citation[open] summary::after { content:" −"; }
    #software-examples code,#software-examples pre { font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace; }
    #software-examples code { padding:0; background:transparent; border:0; font-size:.91em; color:inherit; }
    #software-examples pre { margin:0; color:var(--s3-ink); background:transparent; font-size:var(--s3-code-size); line-height:1.75; white-space:pre-wrap; overflow-wrap:anywhere; tab-size:2; }
    #software-examples pre code { font:inherit; color:inherit; }
    #software-examples .s3-citation pre { margin-top:12px; padding:16px; border:1px solid var(--s3-border); border-radius:5px; }
    #software-examples .s3-worked-head { display:flex; gap:16px; justify-content:space-between; align-items:center; margin:28px 0 15px; }
    #software-examples .s3-worked-head h2 { font:600 15px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif; margin:0; }
    #software-examples .s3-language { display:flex; gap:0; border:1px solid #9babb9; border-radius:5px; overflow:hidden; flex-shrink:0; }
    #software-examples .s3-language button { appearance:none; background:transparent; color:var(--s3-blue); border:0; padding:6px 17px; font:500 13px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif; }
    #software-examples .s3-language button[aria-pressed="true"] { background:var(--s3-blue); color:#fff; }
    #software-examples .s3-install { display:flex; flex-wrap:wrap; align-items:baseline; gap:5px 18px; border-top:1px solid var(--s3-border); border-bottom:1px solid var(--s3-border); padding:12px 0; font-size:13px; }
    #software-examples .s3-install .s3-small-label { color:var(--s3-muted); }
    #software-examples .s3-install a { margin-left:auto; }
    #software-examples .s3-example-picker { display:flex; flex-wrap:wrap; gap:9px; padding-top:18px; }
    #software-examples .s3-example-picker button { appearance:none; background:transparent; color:var(--s3-blue); border:1px solid #9babb9; border-radius:5px; padding:8px 13px; font:500 13px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif; }
    #software-examples .s3-example-picker button:hover { background:#e8edf2; }
    #software-examples .s3-example-picker button[aria-expanded="true"] { background:var(--s3-blue); border-color:var(--s3-blue); color:#fff; }
    #software-examples .s3-picker-hint { margin-top:11px; font-size:13px; color:var(--s3-muted); }
    #software-examples .s3-example { margin-top:30px; padding-bottom:8px; scroll-margin-top:20px; }
    #software-examples .s3-example:last-of-type { border-bottom:0; padding-bottom:8px; }
    #software-examples .s3-eyebrow { color:var(--s3-muted); font-size:11px; font-weight:600; letter-spacing:.09em; text-transform:uppercase; margin-bottom:5px; }
    #software-examples h3 { font-size:24px; line-height:1.25; margin:0 0 9px; }
    #software-examples .s3-scenario { max-width:840px; font-size:14.5px; margin-bottom:18px; }
    #software-examples .s3-example-grid { display:grid; grid-template-columns:minmax(0,1.27fr) minmax(0,1fr); gap:28px; align-items:start; }
    #software-examples .s3-code-pane { min-width:0; background:var(--s3-code); border:1px solid var(--s3-border); border-radius:5px; overflow:hidden; }
    #software-examples .s3-data { border-bottom:1px solid var(--s3-border); font-size:12px; }
    #software-examples .s3-data summary { padding:10px 15px; color:var(--s3-blue); }
    #software-examples .s3-data p { padding:0 15px 9px; color:var(--s3-muted); font-size:12px; }
    #software-examples .s3-data pre { padding:0 15px 14px; }
    #software-examples .s3-code-main { padding:15px 16px 17px; }
    #software-examples .s3-string { color:#2b587a; }
    #software-examples .s3-comment { color:#657583; }
    #software-examples .s3-result { padding-top:4px; min-width:0; }
    #software-examples .s3-result h4 { font:600 14px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif; margin:0 0 2px; color:var(--s3-ink); }
    #software-examples .s3-result .s3-sub { color:var(--s3-muted); font-size:12px; margin-bottom:17px; }
    #software-examples .s3-bar-row { margin:0 0 13px; }
    #software-examples .s3-bar-label { display:flex; justify-content:space-between; align-items:baseline; margin-bottom:5px; font-size:13px; gap:12px; }
    #software-examples .s3-bar-label strong { font-weight:600; color:var(--s3-ink); font-variant-numeric:tabular-nums; }
    #software-examples .s3-bar-track { height:7px; background:#e4e9ee; border-radius:1px; }
    #software-examples .s3-bar { height:100%; background:#527692; border-radius:1px; }
    #software-examples .s3-explanation { font-size:13px; line-height:1.6; margin-top:17px; }
    #software-examples .s3-caption { color:var(--s3-muted); font-size:12px; margin-top:9px; }
    #software-examples .s3-guide { display:inline-block; margin-top:17px; font-size:13px; }
    #software-examples .s3-table { width:100%; border-collapse:collapse; border:0; background:transparent; font-size:13px; margin:8px 0 0; }
    #software-examples .s3-table :is(thead,tbody,tfoot,tr,th,td) { background:transparent; }
    #software-examples .s3-table th,#software-examples .s3-table td { border:0; }
    #software-examples .s3-table th { font-weight:500; color:var(--s3-muted); border-bottom:1px solid #aab8c3; padding:7px 0; text-align:right; }
    #software-examples .s3-table th:first-child,#software-examples .s3-table td:first-child { text-align:left; }
    #software-examples .s3-table td { font-variant-numeric:tabular-nums; padding:10px 0; border-bottom:1px solid var(--s3-border); text-align:right; }
    #software-examples .s3-table tfoot td { font-weight:600; border-bottom:0; color:var(--s3-ink); }
    #software-examples .s3-range-number { font:500 36px/1.15 Georgia,"Times New Roman",serif; color:var(--s3-blue); margin:12px 0 5px; }
    #software-examples .s3-range-unit { color:var(--s3-muted); font-size:12px; }
    #software-examples .s3-proposal { border-top:1px solid var(--s3-border); margin-top:18px; padding-top:12px; font-size:13px; }
    #software-examples .s3-proposal strong { color:var(--s3-ink); font-weight:600; }
    #software-examples .s3-bottom { margin-top:30px; padding-top:19px; border-top:1px solid var(--s3-border); font-size:13px; color:var(--s3-muted); }
    @media (max-width:720px) { #software-examples .s3-example-grid { grid-template-columns:1fr; gap:18px; } #software-examples .s3-main { padding:25px 22px 40px; } #software-examples .s3-install a { margin-left:0; flex-basis:100%; margin-top:4px; } #software-examples h3 { font-size:22px; } }
    @media (max-width:390px) { #software-examples .s3-main { padding-left:16px; padding-right:16px; } #software-examples .s3-worked-head { align-items:flex-start; flex-direction:column; gap:8px; } }
    @media (pointer:coarse) { #software-examples .s3-language button,#software-examples .s3-example-picker button { min-height:44px; } #software-examples summary { min-height:44px; } }

html {color-scheme:light;background:#f8f9fa;scroll-behavior:auto}
body {margin:0;background:#f8f9fa}
.site {max-width:1056px;margin:0 auto;--photo:url('/images/juan-yamin-share.jpg')}
.site [hidden] {display:none!important}
.site .mast h1 a,.site .mast .name a {color:var(--ink);text-decoration:none}
.site .name {font:400 42px/1.14 var(--serif);letter-spacing:-1.1px}
.site a[aria-current=page] {text-decoration:underline;text-underline-offset:6px;color:var(--blue-hover)}
.skip-link {position:absolute;left:16px;top:-60px;z-index:50;background:#fff;color:#173b56;padding:10px 14px}
.skip-link:focus {top:8px}
.site .page-title {font:400 31px/1.25 var(--serif);letter-spacing:-.45px;margin:29px 0 27px}
.site .content-grid {display:grid;grid-template-columns:138px minmax(0,1fr);gap:34px;margin-bottom:34px;padding-bottom:34px;border-bottom:1px solid var(--rule)}
.site .content-grid:last-child {margin-bottom:0;padding-bottom:0;border-bottom:0}
.site .section-label h2 {font:500 15px/1.45 var(--sans);margin:0}
.site .section-label p {font:400 13px/1.55 var(--sans);color:var(--muted);margin:6px 0 0}
.site .content-column {min-width:0}
.site .paper-links {align-items:baseline}
.site .paper-links .abstract {font-size:14px;max-width:100%}
.site summary {color:var(--blue);cursor:pointer}
.site .abstract[open] {flex:1 0 100%;order:2}
.site .abstract-body {margin-top:12px;font:400 15px/1.7 var(--sans);color:var(--body)}
.site .talk {display:grid;grid-template-columns:44px minmax(0,1fr);gap:18px;padding:15px 0;border-bottom:1px solid var(--rule)}
.site .talk:first-child {padding-top:0}
.site .talk:last-child {border:0;padding-bottom:0}
.site .talk-year {font-size:14px;color:var(--muted)}
.site .talk-venue {font-size:16px;color:var(--ink)}
.site .talk-paper {font-size:14px;color:var(--body);margin-top:4px}
.site .course .metadata {margin-top:6px}
.site .evaluation {display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 20px;margin-top:12px;font-size:14px;color:var(--body)}
.site .scores {display:flex;flex-wrap:wrap;gap:4px 18px}
.site .scores strong,.site .evaluation strong {font-weight:600;color:var(--ink)}
.site .materials {min-width:0}
.site .materials[open] {flex:1 0 100%}
.site .material-body {margin-top:16px}
.site .topic+.topic {margin-top:16px}
.site .topic-line {font-size:15px}
.site .topic-links {display:inline-flex;gap:16px;flex-wrap:wrap;margin-left:8px}
.site .credit {font-size:13px;color:var(--muted);margin-top:4px}
.site #software-examples {font-size:16px;--s3-code-size:13px}
.site #software-examples .s3-main {max-width:none;padding:0}
.site #software-examples h2 {font:400 25px/1.3 var(--serif);margin:0 0 7px}
.site #software-examples h3 {font:400 23px/1.3 var(--serif)}
.site #software-examples .s3-intro {font-size:16px;line-height:1.65}
.site #software-examples .s3-availability {font-size:13px}
.site #software-examples .s3-resources {font-size:14px;margin:14px 0 25px}
.site #software-examples .s3-worked-head {align-items:center;margin:27px 0 15px}
.site #software-examples .s3-worked-head h2 {font:500 16px/1.5 var(--sans);margin:0}
.site #software-examples .s3-language {border-color:var(--rule);border-radius:3px}
.site #software-examples .s3-example-picker {gap:7px 17px;padding:16px 0 13px;border-bottom:1px solid var(--rule)}
.site #software-examples .s3-example-picker button {font-size:14px;border:0;border-radius:0;padding:5px 0;box-shadow:none;text-align:left}
.site #software-examples .s3-example-picker button:hover {background:transparent;text-decoration:underline;text-underline-offset:5px}
.site #software-examples .s3-example-picker button[aria-expanded=true] {background:transparent;color:var(--blue-hover);border:0;text-decoration:underline;text-underline-offset:5px}
.site #software-examples .s3-eyebrow {display:none}
.site #software-examples .s3-example {margin-top:24px}
.site #software-examples .s3-scenario {font-size:15px;line-height:1.65;margin-bottom:18px}
.site #software-examples .s3-example-grid {display:block}
.site #software-examples .s3-result {padding-top:23px;max-width:640px}
.site #software-examples .s3-code-pane {border:0;border-radius:3px}
.site #software-examples .s3-data {font-size:13px}
.site #software-examples .s3-data p {font-size:13px}
.site #software-examples .s3-result h4 {font-size:15px}
.site #software-examples .s3-result .s3-sub {font-size:13px;margin-bottom:10px}
.site #software-examples .s3-explanation {font-size:14px}
.site #software-examples .s3-caption,.site #software-examples .s3-bottom {font-size:13px}
.site #software-examples .s3-table {font-size:14px}
.site #software-examples .s3-range-number {font:400 32px/1.25 var(--serif)}
.site #software-examples button:focus-visible,.site summary:focus-visible {outline:2px solid var(--blue);outline-offset:4px}
@media(max-width:760px) {
  .site .name {font-size:36px}
  .site .content-grid {grid-template-columns:110px minmax(0,1fr);gap:25px}
  .site .page-title {font-size:28px}
}
@media(max-width:580px) {
  .site .content-grid {display:block;margin-bottom:29px;padding-bottom:29px}
  .site .section-label {margin-bottom:23px}
  .site .section-label h2 {font-size:15px}
  .site .section-label p {display:inline}
  .site .section-label p+p::before {content:' · '}
  .site .content-column h3 {font-size:23px}
  .site .topic-links {margin-left:0;display:flex;margin-top:5px}
  .site .talk {grid-template-columns:38px minmax(0,1fr);gap:12px}
  .site #software-examples .s3-worked-head {align-items:flex-start;flex-wrap:wrap;gap:12px}
  .site #software-examples .s3-code-main {padding:13px}
}
@media(pointer:coarse) {
  .site .evaluation a,.site .materials summary,.site .paper-links summary,.site .topic-links a {display:inline-flex;align-items:center;min-height:44px}
}
