/* Fixed profile and section layout inspired by manymuch.github.io and
   Read Only by HTML5 UP, CC BY 3.0. Rewritten for this site's content. */
:root{color-scheme:light dark;--page:#fff;--text:#525b58;--heading:#243c34;--muted:#64766f;--line:#e3eae6;--accent:#245c4f;--soft:#f3f7f4;--sidebar:#245c4f;--side-text:#eaf3ee;--sidebar-width:290px}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:28px}body{margin:0;background:var(--page);color:var(--text);font:15px/1.8 -apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif}a{color:var(--accent);text-underline-offset:4px}a:hover{opacity:.8}a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid #d6aa52;outline-offset:5px}h1,h2,h3{color:var(--heading);line-height:1.35}h2{font-size:30px;letter-spacing:-.7px;margin:0 0 8px}h3{font-size:21px;margin:0 0 14px}p{margin:0 0 22px}img{max-width:100%;height:auto;display:block}button{font:inherit;cursor:pointer}.skip-link{position:fixed;z-index:20;top:10px;left:10px;background:var(--page);padding:8px 20px;transform:translateY(-160%)}.skip-link:focus{transform:none}
#sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar-width);background:var(--sidebar);color:var(--side-text);overflow-y:auto;padding:42px 0 22px;z-index:2}#sidebar header{padding:0 28px;text-align:center}#sidebar header>img{width:128px;height:145px;object-fit:cover;object-position:50% 25%;border-radius:12px;margin:0 auto 24px}#sidebar h1{color:#fff;font-size:29px;letter-spacing:-.7px;margin:0 0 9px}.profile-role{font-size:13px;letter-spacing:.1px;margin-bottom:10px}.profile-focus{font-size:12px;line-height:1.9;color:#c1d8ce;margin-bottom:20px}#sidebar nav{margin-top:32px}#sidebar nav>a{display:flex;justify-content:space-between;align-items:center;color:var(--side-text);text-decoration:none;padding:13px 28px;font-size:13px;border-top:1px solid #ffffff15;border-left:3px solid transparent}#sidebar nav>a span:last-child{font-size:10px;color:#b5ccbf}#sidebar nav>a[aria-current="location"]{background:#ffffff12;border-left-color:#ddbd76;color:#fff}
main{margin-left:var(--sidebar-width)}.hero{position:relative;height:340px;isolation:isolate;overflow:hidden;background:#203c36}.hero>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 52%;z-index:-2}.hero:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#102b27cf,#132c2633);z-index:-1}.hero-content{max-width:1080px;padding:62px 64px;margin:auto;color:#fff}.eyebrow{font-size:10px;letter-spacing:2.4px;color:#e2eee5;margin-bottom:20px}.hero-title{font-family:Georgia,"Times New Roman",serif;font-style:italic;font-size:38px;line-height:1.25;margin-bottom:24px;letter-spacing:-.6px}.container{max-width:1080px;padding:60px 64px;margin:auto}main>section{border-bottom:1px solid var(--line)}.section-heading{display:flex;align-items:baseline;gap:20px;margin-bottom:30px}.section-number{font-size:11px;letter-spacing:1px;color:var(--muted);border-bottom:2px solid #c5aa72;padding-bottom:5px}.section-heading p{font-family:Georgia,serif;font-style:italic;color:var(--muted);font-size:15px;margin:0}.education-entry{display:grid;grid-template-columns:180px 1fr;gap:20px;padding:22px 0;border-bottom:1px solid var(--line)}.education-entry:first-child{padding-top:0}.education-entry strong{color:var(--heading)}.date{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;line-height:1.7}.subheading{margin-top:32px;font-size:20px}.courses{border-bottom:1px solid var(--line);padding:16px 0}.courses summary{cursor:pointer;color:var(--heading);font-weight:600}.courses summary span{float:right;font-size:11px;font-weight:400;color:var(--muted)}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:12px;margin-top:18px}caption{text-align:left;color:var(--muted);font-size:11px;padding-bottom:8px}td,th{text-align:left;border-bottom:1px solid var(--line);padding:9px}td:last-child,th:last-child{text-align:right;white-space:nowrap}
.project-index{display:grid;grid-template-columns:1fr 1fr;gap:8px 22px;margin-bottom:34px}.project-index a{font-size:11px;text-decoration:none;line-height:1.6;padding:9px 0;border-bottom:1px solid var(--line)}.project{padding:32px 0;border-top:1px solid var(--line);scroll-margin-top:24px}.project:last-child{padding-bottom:0}.project-number{font-size:10px;letter-spacing:1.5px;color:var(--muted)}.project h3{font-size:23px;letter-spacing:-.3px;margin:10px 0 14px;max-width:720px}.project-meta{font-size:11px;color:var(--muted);line-height:1.9;margin-bottom:24px}.project-meta strong{font-weight:500}.project-grid{display:grid;grid-template-columns:minmax(0, .85fr) minmax(0, 1.15fr);gap:28px;align-items:start}.project-copy{font-size:13px;line-height:1.85}.project-copy p:last-child{margin-bottom:0}.project-copy br+br{display:block;content:"";margin-top:12px}.project-media{display:grid;gap:20px}figure{margin:0;min-width:0}figure>a{display:block;position:relative;border-radius:4px;overflow:hidden;background:var(--soft)}figure img{width:100%;object-fit:contain}figcaption{font-size:11px;color:var(--muted);line-height:1.5;padding:9px 0 0}.motion-label{position:absolute;bottom:8px;right:8px;background:#142b26df;color:#fff;font-size:10px;border-radius:3px;padding:3px 8px}.publication-list{list-style:none;counter-reset:publication;padding:0;font-size:13px}.publication-list li{counter-increment:publication;position:relative;padding:18px 0 18px 36px;border-bottom:1px solid var(--line)}.publication-list li:before{content:counter(publication,decimal-leading-zero);position:absolute;left:0;color:var(--muted);font-size:11px}.publication-list strong{color:var(--heading)}.honors{list-style:none;padding:0;font-size:12px}.honors li{display:flex;justify-content:space-between;gap:24px;border-bottom:1px solid var(--line);padding:12px 0}.honors strong{font-weight:600;color:var(--heading)}.gallery{display:grid;gap:24px}.gallery.life{grid-template-columns:1fr 1fr}.gallery.life img{aspect-ratio:1.5;object-fit:cover}.gallery.favorites{grid-template-columns:repeat(4,1fr);gap:16px}.favorites img{height:180px;object-fit:contain;padding:8px}.smallprint{font-size:11px;color:var(--muted);margin:30px 0 0}footer{padding:32px 64px;max-width:1080px;margin:auto;font-size:11px;color:var(--muted)}footer>a{float:right}footer p{margin:14px 0 0;font-size:10px}
#media-viewer{background:var(--page);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:20px;max-width:min(95vw,1200px);max-height:94vh}#media-viewer::backdrop{background:#081411d9}.viewer-toolbar{display:flex;justify-content:space-between;gap:24px;align-items:center;margin-bottom:14px}.viewer-toolbar p{margin:0;font-size:13px}.viewer-toolbar button{background:var(--soft);color:var(--heading);border:1px solid var(--line);border-radius:3px;padding:5px 12px;white-space:nowrap}#media-content img{max-height:70vh;max-width:85vw;margin:auto;object-fit:contain}#media-status{font-size:12px;margin:10px 0}#media-original{font-size:12px}body.viewer-open{overflow:hidden}
@media(min-width:1600px){:root{--sidebar-width:330px}.container{padding-top:72px;padding-bottom:72px}.hero{height:400px}.hero-content{padding-top:90px}}
@media(max-width:1100px){:root{--sidebar-width:245px}.container{padding:44px 36px}.hero-content{padding:58px 36px}.hero-title{font-size:32px}.education-entry{grid-template-columns:145px 1fr}.project-grid{grid-template-columns:1fr}.project-media{grid-template-columns:1fr 1fr}.favorites img{height:140px}footer{padding:28px 36px}}
@media(max-width:760px){html{scroll-padding-top:14px}body{font-size:14px}#sidebar{position:static;width:auto;padding:26px 20px 0;overflow:visible}#sidebar header{display:grid;grid-template-columns:75px 1fr;column-gap:18px;text-align:left;padding:0}#sidebar header>img{grid-column:1;grid-row:1/5;width:75px;height:89px;margin:0;border-radius:8px}#sidebar h1{font-size:25px;margin-bottom:4px}.profile-role{font-size:12px;margin-bottom:6px}.profile-focus{display:none}#sidebar nav{display:flex;flex-wrap:wrap;margin:22px -20px 0;padding:0 14px;background:#0000000b}#sidebar nav>a{padding:12px 8px;border:0;border-bottom:2px solid transparent;font-size:11px;flex:1;justify-content:center;white-space:nowrap}#sidebar nav>a span:last-child{display:none}#sidebar nav>a[aria-current="location"]{border-bottom-color:#ddbd76}main{margin-left:0}.hero{height:280px}.hero-content{padding:45px 24px}.hero-title{font-size:30px}.eyebrow{font-size:9px}.container{padding:36px 24px}.section-heading{gap:14px;margin-bottom:24px}h2{font-size:26px}.section-heading p{font-size:13px}.education-entry{grid-template-columns:1fr;gap:6px}.education-entry .date{margin:0}.project-index{grid-template-columns:1fr;gap:0}.project h3{font-size:21px}.project-media{gap:14px}.project-copy{font-size:13px}.gallery{gap:18px}.gallery.favorites{grid-template-columns:repeat(2,1fr)}.favorites img{height:175px}.gallery.life{grid-template-columns:1fr 1fr}footer{padding:24px}.honors{font-size:12px}.courses summary span{font-size:10px}#media-viewer{padding:14px}.viewer-toolbar{gap:10px}}
@media(prefers-color-scheme:dark){:root{--page:#17221e;--text:#c3d0c8;--heading:#e1eee6;--muted:#9bafa2;--line:#304237;--accent:#9bceb5;--soft:#203027;--sidebar:#1c3d32;--side-text:#e1eee6}figure>a{background:#e8eee9}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
/* Keep differently shaped scientific figures legible without enlarging narrow originals. */
.project-media figure img{height:230px;object-fit:contain;padding:8px}
.project-media:has(figure:nth-child(3)){grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:760px){.project-media figure img{height:160px}.project-media{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* Degree programs span the page; non-degree experiences use compact paired rows. */
.education-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 32px}
.education-entry{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;align-items:start;padding:24px 0 0;border:0;border-top:1px solid var(--line);min-width:0;font-size:13px;line-height:1.75}
.education-entry:first-child{padding-top:0;border-top:0}
.education-body{grid-column:1;grid-row:1;min-width:0;overflow-wrap:anywhere}
.education-entry .date{grid-column:1;grid-row:2;margin:0;font-size:11px;line-height:1.6}
.education-primary{grid-column:1/-1;grid-template-columns:minmax(0,1fr) auto;gap:10px 22px;font-size:15px;line-height:1.85}
.education-primary .date{grid-column:2;grid-row:1;font-size:12px;white-space:nowrap;padding-top:2px}
.education-primary .education-body>strong:first-child{font-size:16px}
@media(max-width:1100px){.education-primary{grid-template-columns:minmax(0,1fr)}.education-primary .date{grid-column:1;grid-row:2;padding:0}.education-list{gap:24px}}
@media(max-width:760px){.education-list{grid-template-columns:1fr;gap:22px}.education-primary{gap:8px;font-size:14px}.education-primary .education-body>strong:first-child{font-size:15px}.education-secondary{font-size:12px;padding-top:20px}.education-entry .date{font-size:11px}}

/* Contacts and academic/social profiles live with the sidebar profile. */
.profile-contact{display:flex;flex-direction:column;gap:4px;margin:16px 0 12px;min-width:0}
.profile-contact a{color:var(--side-text);font-size:12px;line-height:1.8;text-decoration:none;overflow-wrap:anywhere}
.profile-contact a:hover{text-decoration:underline}
.social-links{display:flex;align-items:center;justify-content:center;gap:12px}
.social-link{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:1px solid #ffffff40;border-radius:50%;color:var(--side-text);text-decoration:none}
.social-link:hover{background:#ffffff18;opacity:1}
.social-link svg{width:17px;height:17px;fill:currentColor}
@media(max-width:760px){#sidebar header{min-width:0}#sidebar header>img{grid-row:1/5}.profile-contact{margin:6px 0 10px;gap:2px}.profile-contact a{font-size:11px}.social-links{justify-content:flex-start;gap:10px;grid-column:2}.social-link{width:30px;height:30px}.social-link svg{width:15px;height:15px}}

/* Professional experience, ordered from most recent to earliest. */
.career-entry+.career-entry{margin-top:32px;padding-top:30px;border-top:1px solid var(--line)}
.career-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:18px}
.career-heading h3{font-size:23px;letter-spacing:-.3px;margin:0 0 6px}
.career-role{font-size:15px;font-weight:600;color:var(--heading);margin:0 0 3px}
.career-department{font-size:12px;color:var(--muted);margin:0}
.career-heading>.date{flex-shrink:0;margin:3px 0 0;white-space:nowrap}
.career-highlights{margin:0;padding-left:20px;font-size:14px;line-height:1.85}
.career-highlights li{padding-left:3px;margin-bottom:10px}
.career-highlights li:last-child{margin-bottom:0}
.career-project{margin-top:24px}
.career-project>header{display:flex;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:12px}
.career-project h4{color:var(--heading);font-size:16px;line-height:1.5;margin:0}
.career-project-role{font-size:12px;color:var(--muted);margin:4px 0 0}
.career-project header .date{white-space:nowrap;flex-shrink:0;margin:0}

@media(max-width:760px){.career-heading,.career-project>header{flex-direction:column;gap:6px}.career-heading h3{font-size:21px}.career-role{font-size:14px}.career-highlights{font-size:13px}.career-project header .date{font-size:11px}}

/* Course toggles share the rank line and align with the date column. */
.education-primary .education-body{grid-column:1/-1}
.education-primary .education-body>strong:first-child{display:inline-block;max-width:calc(100% - 190px)}
.degree-stats{margin:0}
.degree-stats::after{content:"";display:block;clear:both}
.degree-stats>.courses{display:inline;margin:0;padding:0;border:0;font-size:12px}
.degree-stats>.courses summary{float:right;display:inline-flex;align-items:center;gap:5px;margin-left:12px;line-height:1.7;font-weight:400;color:var(--muted);font-variant-numeric:tabular-nums;text-decoration:none;cursor:pointer}
.degree-stats>.courses summary::before{content:"▸";font-size:10px}
.degree-stats>.courses[open] summary::before{content:"▾"}
.degree-stats>.courses summary::-webkit-details-marker{display:none}
.degree-stats>.courses .table-scroll{display:block;clear:both;padding-top:10px;max-width:100%}
.degree-stats>.courses table{margin-top:0}
@media(max-width:1100px){.education-primary .education-body>strong:first-child{max-width:100%}}
@media(max-width:760px){.degree-stats{font-size:13px}.degree-stats>.courses{font-size:11px}.degree-stats>.courses summary{margin-left:8px}}

/* Three compact portraits first; older landscape photos remain paired. */
.gallery.life{grid-template-columns:repeat(6,minmax(0,1fr))}
.gallery.life>figure{grid-column:span 3}
.gallery.life>figure.portrait{grid-column:span 2}
.gallery.life figure.portrait img{aspect-ratio:auto;object-fit:contain}
@media(max-width:760px){.gallery.life{column-gap:12px}}

/* Center every Life and favorites caption beneath its own image. */
#personal figcaption{text-align:center}

/* Company, position, and project metadata share a consistent hierarchy. */
.career-heading>div,.career-project>header>div{min-width:0}
.career-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:3px 0;margin:0;line-height:1.7}
.career-meta>span{display:inline;font-size:12px;margin:0;color:var(--muted)}
.career-meta>.career-role{font-size:14px;font-weight:600;color:var(--heading)}
.career-meta>span+span::before{content:"·";display:inline-block;margin:0 9px;color:var(--muted);font-weight:400}


.career-project-role{font-weight:500;color:var(--heading);line-height:1.7}
.career-project>header{align-items:flex-start}
.career-project header .date{margin-top:2px}
@media(max-width:760px){.career-meta{display:block}.career-meta>span{display:block}.career-meta>span+span::before{content:none}.career-heading>.date,.career-project header .date{margin-top:0}}

/* Crop source-image padding without altering the archived diagram. */
.media-crop{display:block;position:relative;overflow:hidden;aspect-ratio:var(--crop-ratio);width:100%;background:#fff}
.media-crop>img{position:absolute;width:var(--crop-image-width);max-width:none;max-height:none;height:auto;left:var(--crop-left);top:var(--crop-top)}
#media-content>.media-crop{width:min(85vw,66vh);margin:auto}
#media-content>.media-crop>img{max-width:none;max-height:none;margin:0}
.project-media figure .media-crop{width:min(100%,224px);margin:auto}
.project-media figure .media-crop>img{height:auto;padding:0}
@media(max-width:760px){.project-media figure .media-crop{width:min(100%,155.5px)}}

/* One company heading, with each position and its dates on the same row. */
.career-entry>h3{font-size:23px;letter-spacing:-.3px;margin:0 0 8px}
.career-heading>.career-meta{min-width:0;flex:1}
.career-heading>.date{margin:0;line-height:1.7}
.career-position+.career-position{margin-top:28px}
.career-position>.career-project:first-of-type{margin-top:18px}
@media(max-width:760px){.career-entry>h3{font-size:21px}.career-position>.career-heading{flex-direction:row;align-items:baseline;gap:12px}.career-heading>.date{font-size:11px;line-height:1.7}}

.career-company-heading{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:8px}
.career-company-heading h3{font-size:23px;letter-spacing:-.3px;margin:0}
.career-company-heading>.date{margin:0;flex-shrink:0;white-space:nowrap}
@media(max-width:760px){.career-company-heading h3{font-size:21px}.career-company-heading>.date{font-size:11px}}
