/* A text-first academic website. Uses system fonts; no tracking or external dependencies. */
:root{--ink:#252b32;--muted:#64707b;--link:#24577e;--line:#dce1e6;--soft:#f6f8fa;--serif:Georgia,'Times New Roman',serif;--sans:-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif}
*{box-sizing:border-box}html{scroll-padding-top:24px}body{margin:0;background:#fff;color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.75;-webkit-font-smoothing:antialiased}a{color:var(--link);text-decoration:none;text-underline-offset:3px}a:hover{text-decoration:underline}a:focus-visible,summary:focus-visible,button:focus-visible{outline:2px solid var(--link);outline-offset:4px}img{max-width:100%;height:auto;display:block}p{margin:0 0 18px}h1,h2,h3,h4{color:#242b33;line-height:1.3}h1,h2{font-family:var(--serif);font-weight:400}h2{font-size:27px;margin:0 0 22px}h3{font-size:18px;margin:0 0 10px;font-weight:600}h4{font-size:16px;margin:0 0 8px}ul,ol{padding-left:22px;margin:10px 0 22px}li{padding-left:3px;margin:7px 0}strong{font-weight:600}hr{border:0;border-top:1px solid var(--line);margin:30px 0}[hidden]{display:none!important}.wrap{width:min(1000px,calc(100% - 64px));margin:auto}.site-header{padding-top:48px}.identity{font-size:35px;line-height:1.2;letter-spacing:-.6px;margin:0 0 9px;font-family:var(--serif);font-weight:400}.identity a{color:inherit;text-decoration:none}.affiliation{font-size:15px;margin:0;color:var(--muted)}.site-nav{display:flex;flex-wrap:wrap;column-gap:30px;row-gap:8px;padding:22px 0 15px;margin-top:4px;border-bottom:1px solid var(--line);font-size:15px}.site-nav a{color:#414951}.site-nav a[aria-current=page]{color:var(--link);font-weight:600;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:8px}.page{padding-top:37px;padding-bottom:48px}.home-grid{display:grid;grid-template-columns:minmax(0,1fr) 220px;gap:62px}.body-column{min-width:0}.reading{max-width:770px}.side-column{font-size:14px;padding-top:3px;min-width:0}.side-column h2{font-family:var(--sans);font-size:15px;font-weight:600;margin:0 0 10px}.side-column section{margin-bottom:28px}.side-column p{margin-bottom:10px}.side-column .contact-links{list-style:none;padding:0;margin:10px 0}.side-column .contact-links li{padding:0;margin:4px 0}.portrait{width:220px;max-height:285px;object-fit:cover;object-position:50% 25%;margin-bottom:24px;border-radius:0}.small{font-size:14px}.muted,.meta{color:var(--muted)}.meta{font-size:14px;margin:4px 0 10px}.section{margin-top:35px}.section h2{font-size:24px;margin-bottom:18px}.section h3{margin-top:25px}.section h3:first-child{margin-top:0}.section-rule{border-top:1px solid var(--line);padding-top:27px}.inline-links{display:flex;flex-wrap:wrap;gap:6px 19px;font-size:14px;margin:13px 0 20px}.inline-links a{white-space:normal}.paper{margin:0 0 28px}.paper-title{font-size:17px;font-weight:600;line-height:1.55;margin:0 0 4px}.paper p{margin-bottom:9px}.paper details{font-size:15px}.paper summary{color:var(--link);cursor:pointer;width:fit-content;font-size:14px;margin:6px 0}.paper details p{padding:10px 0 3px;margin:0}.paper-links{font-size:14px;display:flex;gap:8px 18px;flex-wrap:wrap}.news-list{padding:0;list-style:none;font-size:14px}.news-list li{padding:0;margin:0 0 12px}.news-date{font-weight:600;margin-right:7px}.course-list{list-style:none;padding:0;margin:12px 0 23px}.course-list li{padding:0;margin:0 0 16px}.course-title{display:block;font-weight:500}.course-desc{display:block;font-size:14px;color:#59636d;margin-top:3px}.course-code{font-size:13px;display:inline-block;width:76px;color:var(--muted);font-weight:400}.course-status{font-size:13px;color:var(--muted)}.note{border-left:2px solid #c5d2dd;padding:2px 0 2px 17px;font-size:14px;color:#56616c;margin:21px 0}.note p:last-child{margin-bottom:0}.note strong{color:var(--ink)}.definition-list{margin:0}.definition-list dt{font-weight:600;margin-top:24px}.definition-list dd{margin:6px 0 18px}.timeline{list-style:none;padding:0}.timeline li{display:grid;grid-template-columns:145px 1fr;gap:20px;margin:0 0 19px;padding:0}.timeline time,.timeline .date{font-size:14px;color:var(--muted)}.timeline p{margin:3px 0;font-size:14px;color:#59636d}.plain-table{width:100%;border-collapse:collapse;font-size:14px;margin:14px 0 20px}.plain-table th,.plain-table td{padding:9px 12px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}.plain-table th{font-weight:600}.table-scroll{overflow-x:auto}.plain-table caption{text-align:left;color:var(--muted);font-size:13px;margin-bottom:8px}.measurement-block{border-top:1px solid var(--line);padding:16px 0}.measurement-block>summary{cursor:pointer;font-weight:500;color:var(--link)}.measurement-block>div{padding-top:13px}.measurement-block ul{font-size:14px}.two-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.cv-link{font-size:18px;display:inline-block;margin-bottom:19px}.cv-section{margin-top:30px}.cv-section .timeline{font-size:15px}.site-footer{border-top:1px solid var(--line);font-size:12px;color:var(--muted);padding:18px 0 32px;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}.site-footer p{margin:0}.skip-link{position:absolute;top:-80px;left:20px;padding:10px;background:#fff;border:1px solid var(--link);z-index:100}.skip-link:focus{top:5px}.anchor{scroll-margin-top:24px}body a{overflow-wrap:anywhere}::selection{background:#dbe8f1}
@media(min-width:800px){.home-grid .body-column>h2{font-size:27px;margin-bottom:19px}}
@media(max-width:760px){.wrap{width:calc(100% - 40px)}.site-header{padding-top:28px}.identity{font-size:30px}.affiliation{font-size:14px}.site-nav{column-gap:23px;row-gap:12px;font-size:14px;padding-top:19px}.page{padding-top:27px}.home-grid{grid-template-columns:1fr;gap:27px}.side-column{border-top:1px solid var(--line);padding-top:23px;display:grid;grid-template-columns:1fr 1fr;gap:22px;font-size:13px}.side-column .portrait{max-width:170px}.side-column section{margin-bottom:5px}.reading{max-width:100%}.timeline li{grid-template-columns:112px 1fr;gap:13px}body{font-size:15.5px;line-height:1.7}h2{font-size:25px}.section h2{font-size:23px}.section{margin-top:28px}.course-code{width:auto;margin-right:10px}}
@media(max-width:420px){.wrap{width:calc(100% - 32px)}.identity{font-size:28px}.site-nav{column-gap:19px}.side-column{grid-template-columns:1fr}.timeline li{grid-template-columns:1fr;gap:2px}.two-grid{grid-template-columns:1fr;gap:0}}
@media print{.site-nav,.skip-link{display:none}.wrap{width:100%;max-width:none}.site-header{padding-top:0}.home-grid{display:block}.page{padding-top:20px}body{font-size:11pt}a{color:#000;text-decoration:underline}.site-footer{font-size:9pt}.section,.paper{break-inside:avoid}}

/* Existing approved portrait, unchanged. */
.portrait{height:auto;max-height:none;object-fit:contain;object-position:center;border-radius:0;box-shadow:none;filter:none}
.home-portrait-mobile{display:none}
@media(max-width:760px){.home-portrait-mobile{display:block;margin:0 0 28px}.home-portrait-mobile .portrait{width:200px;height:auto;max-height:none;margin:0}.side-column>.portrait{display:none}}

/* End-of-page photo board. Original files: no crop, filter or retouching.
   Rotation, paper borders and tape are CSS presentation only. */
.classroom-gallery{margin-top:62px;padding-top:31px;border-top:1px solid var(--line);scroll-margin-top:28px}
.classroom-gallery>h2{font-size:25px;margin:0 0 9px}
.classroom-gallery>.gallery-intro{color:var(--muted);font-size:14px;margin:0 0 25px}
.photo-board{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:24px;row-gap:38px;align-items:center;padding:39px 37px 43px;background:#f8f7f2;border:1px solid #eae7de}
.photo-note{--tilt:0deg;position:relative;z-index:0;min-width:0;grid-column:span 4;margin:0;background:#fff;padding:10px 10px 22px;border:1px solid #e8e6e0;box-shadow:0 4px 9px rgba(44,40,31,.09),0 1px 2px rgba(44,40,31,.07);transform:rotate(var(--tilt));transform-origin:50% 40%;break-inside:avoid}
.photo-note:nth-child(1){grid-column:1 / span 7;margin-top:5px}
.photo-note:nth-child(2){grid-column:9 / span 4;margin-top:11px}
.photo-note:nth-child(3){grid-column:1 / span 4}
.photo-note:nth-child(4){grid-column:5 / span 4;margin-top:17px}
.photo-note:nth-child(5){grid-column:9 / span 4;margin-top:4px}
.photo-note.angle-left{--tilt:-2.1deg}
.photo-note.angle-right{--tilt:2.2deg}
.photo-note.angle-straight{--tilt:0deg}
.photo-note:nth-child(3).angle-right{--tilt:1.3deg}
.photo-note:nth-child(5).angle-left{--tilt:-1.5deg}
.photo-note::before{content:"";position:absolute;z-index:1;top:-11px;left:calc(50% - 30px);width:60px;height:22px;background:rgba(222,210,177,.64);border:1px solid rgba(214,201,166,.22);box-shadow:0 1px 2px rgba(55,45,20,.04);transform:rotate(-4deg);pointer-events:none}
.photo-note:nth-child(2)::before{transform:rotate(5deg);background:rgba(215,224,214,.72)}
.photo-note:nth-child(4)::before{transform:rotate(0);background:rgba(215,224,232,.67)}
.photo-note img{display:block;width:100%;height:auto;max-height:none;object-fit:contain;filter:none;border:0;border-radius:0;box-shadow:none}
.photo-note figcaption{margin:12px 3px 0;color:#5e625f;font-size:12px;line-height:1.5;text-align:center}
@media(max-width:760px){
 .classroom-gallery{margin-top:43px;padding-top:26px}
 .photo-board{column-gap:24px;row-gap:32px;padding:30px 24px 35px;grid-template-columns:repeat(2,minmax(0,1fr))}
 .photo-board .photo-note{grid-column:auto;margin-top:0}
 .photo-board .photo-note:first-child{grid-column:1/-1;width:86%;justify-self:center}
 .photo-note{padding:8px 8px 20px}
 .photo-note::before{width:48px;left:calc(50% - 24px)}
}
@media(max-width:520px){
 .photo-board{grid-template-columns:1fr;padding:31px 22px 36px;row-gap:32px}
 .photo-board .photo-note{grid-column:1/-1;width:100%;margin:0;justify-self:center}
 .photo-board .photo-note:first-child{width:100%}
 .photo-board .photo-note:nth-child(2){width:80%;max-width:275px}
 .photo-note.angle-left{--tilt:-1.6deg}
 .photo-note.angle-right{--tilt:1.6deg}
 .classroom-gallery>h2{font-size:23px}
}
@media print{.photo-board{background:#fff}.photo-note{transform:none;box-shadow:none}.photo-note::before{display:none}.classroom-gallery{break-before:page}}
