/* A restrained editorial palette, with independent light and dark tokens. */
:root{--bg:#fff;--surface:#f3f6fa;--text:#172a3d;--muted:#526272;--line:#dbe3eb;--accent:#195bc5;--accent-soft:#e8f0fc;--featured:#162d43;--featured-text:#f3f7fc;--featured-muted:#c3d3e4;--serif:Georgia,'Times New Roman',serif;--sans:Inter,'Segoe UI',Arial,sans-serif;--mono:'SFMono-Regular',Consolas,'Liberation Mono',monospace;color-scheme:light}
:root[data-theme=dark]{--bg:#101b28;--surface:#162434;--text:#edf3fa;--muted:#b0bfd0;--line:#344557;--accent:#89baff;--accent-soft:#223a55;--featured:#20374d;color-scheme:dark}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#101b28;--surface:#162434;--text:#edf3fa;--muted:#b0bfd0;--line:#344557;--accent:#89baff;--accent-soft:#223a55;--featured:#20374d;color-scheme:dark}}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:7rem}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:1rem;line-height:1.7;-webkit-font-smoothing:antialiased}::selection{background:var(--accent);color:var(--bg)}a{color:inherit;text-decoration:none}a:hover{color:var(--accent)}a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid var(--accent);outline-offset:5px}button{font:inherit;color:inherit;cursor:pointer}button[hidden]{display:none}h1,h2,h3,h4,p{margin:0}h1,h2,h3,h4{line-height:1.2;overflow-wrap:anywhere}img{display:block;max-width:100%}em{font-family:var(--serif);font-weight:400}strong{font-weight:600}.container{width:min(1120px,calc(100% - 96px));margin-inline:auto}.eyebrow{font-family:var(--mono);font-size:.75rem;font-weight:500;letter-spacing:.095em;line-height:1.65;text-transform:uppercase;color:var(--muted)}.skip-link{position:fixed;top:-100px;left:1rem;z-index:100;background:var(--text);color:var(--bg);padding:.75rem 1rem}.skip-link:focus{top:1rem}.site-header{position:sticky;top:0;z-index:20;background:var(--bg);border-bottom:1px solid var(--line)}.header-inner{width:min(1280px,calc(100% - 80px));margin:auto;display:flex;gap:2rem;align-items:center;min-height:88px;justify-content:space-between}.wordmark{display:flex;gap:1rem;align-items:center;flex-shrink:0}.monogram{font-family:var(--serif);font-size:2rem;font-weight:700;letter-spacing:-.12em}.monogram span{color:var(--accent)}.wordmark-name{font-size:.875rem;font-weight:600;letter-spacing:-.01em}nav{display:flex;gap:1.8rem}nav a{font-size:.875rem;color:var(--muted);position:relative;padding:.35rem 0}nav a[aria-current]{color:var(--accent)}nav a[aria-current]:after{content:'';position:absolute;height:2px;background:var(--accent);bottom:-5px;left:0;right:0}.header-actions{display:flex;gap:1rem;align-items:center}.theme-toggle{width:40px;height:40px;display:flex;align-items:center;justify-content:center;border:0;background:transparent;border-radius:50%}.theme-toggle:hover{background:var(--surface)}.sun-icon{display:none}.small-button{display:flex;gap:.65rem;align-items:center;justify-content:center;font-size:.875rem;border:1px solid var(--line);border-radius:4px;padding:.45rem .9rem}.small-button:hover{border-color:var(--accent)}:root[data-theme=dark] .moon-icon{display:none}:root[data-theme=dark] .sun-icon{display:block}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .moon-icon{display:none}:root:not([data-theme=light]) .sun-icon{display:block}}
.hero{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:90px;padding-top:76px;padding-bottom:76px;align-items:center}.hero .eyebrow{display:flex;align-items:center;gap:12px}.short-rule{display:inline-block;width:22px;height:2px;background:var(--accent);flex-shrink:0}h1{font-size:clamp(3.7rem,6.4vw,5.6rem);letter-spacing:-.065em;line-height:.99;font-weight:500;margin-top:26px}.title-dot{color:var(--accent)}.hero-statement{font-size:clamp(1.45rem,2.2vw,1.875rem);line-height:1.35;letter-spacing:-.025em;margin-top:28px}.hero-statement em{color:var(--accent)}.hero-description{max-width:540px;color:var(--muted);margin-top:19px;font-size:1rem;line-height:1.8}.hero-buttons{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}.button{display:inline-flex;align-items:center;justify-content:center;padding:.75rem 1.3rem;border:1px solid var(--line);border-radius:4px;font-size:.875rem;font-weight:600;min-height:47px}.primary{background:var(--text);color:var(--bg);border-color:var(--text)}.primary:hover{background:var(--accent);border-color:var(--accent);color:var(--bg)}.secondary:hover{border-color:var(--accent)}.social-links{display:flex;gap:15px;align-items:center;flex-wrap:wrap;margin-top:26px;font-size:.875rem}.social-links>span{color:var(--line)}.social-links a{border-bottom:1px solid transparent}.social-links a:hover{border-bottom-color:var(--accent)}.hero-profile{align-self:center}.portrait-wrap{position:relative;background:var(--surface);border-radius:4px;overflow:hidden}.portrait-wrap img{width:100%;height:345px;object-fit:cover;object-position:50% 48%}.portrait-caption{position:absolute;bottom:15px;left:15px;background:#fff;color:#172a3d;padding:5px 10px;border-radius:2px;font-size:.75rem;font-family:var(--mono)}.profile-note{margin-top:22px;border-left:2px solid var(--accent);padding-left:16px}.profile-note p{margin-top:6px;line-height:1.6;font-size:1rem}.profile-degree{font-size:.75rem;color:var(--muted);display:block;margin-top:5px}.affiliation-strip{border-block:1px solid var(--line);background:var(--surface);padding:27px 0}.affiliation-strip>.container{display:flex;align-items:center;gap:40px;justify-content:space-between}.affiliation-strip .eyebrow{font-size:.6875rem;max-width:135px}.affiliations{display:flex;justify-content:space-between;align-items:center;gap:42px;flex:1}.affiliations span{font-size:1.2rem;font-weight:600;letter-spacing:-.045em}.affiliations span:nth-child(2){font-family:var(--serif);font-weight:400;letter-spacing:-.02em}.section{padding-block:82px}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:44px;margin-bottom:36px}.section-heading .eyebrow{margin-bottom:13px;color:var(--accent)}h2{font-size:clamp(2rem,3vw,2.7rem);font-weight:500;letter-spacing:-.045em;line-height:1.15}h2 em{display:inline}.section-intro{max-width:300px;color:var(--muted);font-size:.875rem;line-height:1.8}.project-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.project-card{border:1px solid var(--line);border-radius:5px;padding:30px;display:flex;flex-direction:column;align-items:flex-start;background:var(--bg);min-width:0}.card-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;width:100%;margin-bottom:25px}.card-top .eyebrow{font-size:.6875rem;letter-spacing:.06em;max-width:80%}.project-number{font-family:var(--mono);font-size:.8125rem;color:var(--muted)}.project-card h3{font-size:1.6rem;letter-spacing:-.04em;font-weight:500;line-height:1.3;margin-bottom:14px}.project-card>p{font-size:1rem;color:var(--muted);line-height:1.75}.featured{background:var(--featured);border-color:var(--featured);color:var(--featured-text)}.featured .eyebrow,.featured .project-number,.featured>p,.featured .project-results span,.featured .detail-note{color:var(--featured-muted)}.featured .card-top .eyebrow{color:#98c9ff}.project-results{display:grid;grid-template-columns:1fr 1.3fr;gap:24px;margin-block:27px;width:100%}.project-results strong{display:block;font-size:2.2rem;font-weight:500;letter-spacing:-.055em;line-height:1.2}.project-results span{display:block;font-size:.75rem;color:var(--muted);line-height:1.5;margin-top:7px}.project-results.compact strong{font-size:1.85rem}.tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:20px}.tags>span{font-size:.75rem;border:1px solid var(--line);border-radius:3px;padding:3px 7px;line-height:1.5;color:var(--muted)}.featured .tags>span{border-color:#4b6177;color:var(--featured-muted)}.project-card .tags{margin-bottom:20px}.project-card details{width:100%;margin-top:auto;border-top:1px solid var(--line);padding-top:14px;font-size:.875rem}.featured details{border-color:#4b6177}.project-card summary{cursor:pointer;font-weight:500;min-height:32px;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:12px}.project-card summary::-webkit-details-marker{display:none}.project-card summary:after{content:'+';font-family:var(--mono);font-size:1.2rem}.project-card details[open] summary:after{content:'−'}.detail-content{padding-top:12px;line-height:1.75}.detail-content p+p{margin-top:12px}.detail-note{font-size:.75rem;color:var(--muted)}.text-link{font-size:.875rem;font-weight:500;display:inline-flex;align-items:center;gap:12px;min-height:36px}.project-card .text-link{margin-top:10px;color:var(--accent)}.link-mark{font-size:1rem}.publications-section{background:var(--surface);border-block:1px solid var(--line)}.publication{display:grid;grid-template-columns:85px minmax(0,1fr);gap:30px;border-bottom:1px solid var(--line);padding:30px 0}.publication:first-child{padding-top:0}.publication:last-child{padding-bottom:0;border-bottom:0}.pub-year{font-family:var(--mono);font-size:.875rem;padding-top:6px;color:var(--muted)}.pub-meta{display:flex;align-items:center;flex-wrap:wrap;gap:12px;font-size:.75rem;color:var(--muted);margin-bottom:13px}.badge{display:inline-flex;padding:4px 8px;border:1px solid var(--line);border-radius:3px;font-family:var(--mono);font-size:.6875rem;color:var(--text);line-height:1.4}.latest-paper .badge{background:var(--accent);color:var(--bg);border-color:var(--accent)}.publication h3{font-size:1.3rem;line-height:1.45;letter-spacing:-.02em;font-weight:500;max-width:910px}.authors{margin-top:10px;color:var(--muted);font-size:.875rem}.authors strong{color:var(--text)}.pub-description{font-size:.875rem;max-width:850px;margin-top:12px;color:var(--muted)}.pub-links{display:flex;gap:22px;margin-top:12px;font-size:.875rem;color:var(--accent);font-weight:500}.pub-links a{min-height:30px;display:flex;align-items:center}.pub-links a:hover{text-decoration:underline}.experience{display:grid;grid-template-columns:220px minmax(0,1fr);gap:50px;padding:30px 0;border-top:1px solid var(--line)}.experience:first-child{padding-top:0;border:0}.experience:last-child{padding-bottom:0}.experience-date{font-size:.875rem;font-family:var(--mono);line-height:1.7;padding-top:5px}.experience-date span{display:block;color:var(--muted);font-family:var(--sans);margin-top:6px}.experience-body h3{font-size:1.4rem;font-weight:500;letter-spacing:-.025em;display:flex;flex-wrap:wrap;gap:8px 20px;align-items:baseline}.experience-body h3 span{font-size:.875rem;color:var(--muted);font-weight:400;letter-spacing:0}.experience-body>p{color:var(--muted);margin-top:14px;font-size:1rem;line-height:1.8}.experience-body strong{color:var(--text)}.experience-body .tags{margin-top:15px}.experience-body .text-link{color:var(--accent);margin-top:12px}.education-section{border-block:1px solid var(--line);background:var(--surface)}.background-grid{display:grid;grid-template-columns:1fr 1fr;gap:58px}.education-card h3{font-size:1.6rem;font-weight:500;line-height:1.4;letter-spacing:-.04em;margin-top:17px;max-width:440px}.education-card>p{color:var(--muted);margin-top:12px}.gpa{margin-top:26px;display:flex;gap:18px;align-items:center}.gpa>strong{font-size:2.3rem;font-weight:500;letter-spacing:-.05em;line-height:1.2}.gpa strong span{font-size:1rem;color:var(--muted);letter-spacing:0}.gpa>span{font-size:.75rem;max-width:125px;line-height:1.5;color:var(--muted);border-left:1px solid var(--line);padding-left:18px}.recognition h3,.skills h3{font-size:1.2rem;letter-spacing:-.02em;font-weight:500}.recognition ul{list-style:none;padding:0;margin:20px 0 0}.recognition li{display:flex;gap:24px;margin-bottom:17px;line-height:1.5}.recognition li>span{font-family:var(--mono);font-size:.75rem;padding-top:3px;color:var(--muted)}.recognition strong{font-size:1rem;font-weight:500}.recognition p{font-size:.875rem;color:var(--muted);margin-top:5px}.skills{border-top:1px solid var(--line);margin-top:40px;padding-top:28px}.skill-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;margin-top:24px}.skill-grid h4{font-size:.875rem;font-weight:500;line-height:1.5;margin-bottom:11px}.skill-grid p{font-size:.875rem;color:var(--muted);line-height:1.95}.certifications{border-top:1px solid var(--line);padding-top:24px;margin-top:30px}.certifications p{font-size:.875rem;margin-top:10px;line-height:2}.certifications p>span{font-size:.75rem;color:var(--muted);margin-left:6px}.certifications .divider{margin-inline:14px;color:var(--line)}.certifications a{text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:4px}.contact{display:grid;grid-template-columns:1fr 255px;gap:90px;align-items:center}.contact .eyebrow{color:var(--accent);margin-bottom:15px}.contact h2{font-size:clamp(2rem,3.5vw,3rem);line-height:1.15}.contact p:not(.eyebrow){color:var(--muted);max-width:520px;margin-top:20px;font-size:1rem}.contact-email{display:inline-block;font-size:1.25rem;letter-spacing:-.025em;margin-top:24px;padding-bottom:4px;border-bottom:1px solid var(--accent);color:var(--accent);overflow-wrap:anywhere}.contact-links{display:flex;flex-direction:column}.contact-links a{display:flex;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line);padding:15px 0;font-size:.875rem}.site-footer{border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:20px;justify-content:space-between;padding-block:24px;color:var(--muted);font-size:.75rem}.site-footer a{margin-left:auto}.redirect-page{max-width:650px;padding-block:100px}.redirect-page h1{font-size:3rem;margin-bottom:24px}.redirect-page p{color:var(--muted);margin-bottom:24px}
@media(min-width:1400px){.hero{padding-top:84px;padding-bottom:84px}}
@media(max-width:1050px){.container{width:calc(100% - 64px)}.header-inner{width:calc(100% - 48px);gap:20px}nav{gap:20px}.hero{gap:50px;grid-template-columns:minmax(0,1fr) 250px}.portrait-wrap img{height:320px}.affiliation-strip>.container{gap:25px}.affiliations{gap:25px}.affiliations span{font-size:1.05rem}.section-heading{gap:28px}.section-intro{max-width:240px}.project-card{padding:25px}.experience{gap:35px;grid-template-columns:190px minmax(0,1fr)}.background-grid{gap:40px}.contact{gap:50px}.skill-grid{grid-template-columns:1fr 1fr;gap:25px 45px}}
@media(max-width:800px){.header-inner{flex-wrap:wrap;padding-top:12px;gap:5px 15px;min-height:105px}.wordmark-name{font-size:.8125rem}.header-actions{margin-left:auto}nav{order:3;width:100%;justify-content:space-between;gap:15px;padding-bottom:12px}nav a{font-size:.8125rem}.container{width:calc(100% - 48px)}.hero{grid-template-columns:minmax(0,1fr) 210px;gap:32px;padding-block:48px}.hero .eyebrow{font-size:.625rem;letter-spacing:.05em}h1{font-size:3.6rem}.hero-statement{font-size:1.4rem}.hero-description{font-size:.9375rem}.portrait-wrap img{height:290px}.profile-degree{font-size:.6875rem}.profile-note p{font-size:.875rem}.hero-buttons{gap:8px}.button{font-size:.8125rem;padding:.65rem 1rem}.social-links{font-size:.8125rem;gap:10px}.affiliation-strip>.container{display:block}.affiliation-strip .eyebrow{max-width:none;margin-bottom:14px;display:block}.affiliations{gap:15px;flex-wrap:wrap;justify-content:space-between}.section{padding-block:60px}.section-heading{align-items:flex-start;flex-direction:column;gap:18px;margin-bottom:28px}.section-intro{max-width:520px}.project-grid{gap:16px}.project-card{padding:23px}.project-card h3{font-size:1.3rem}.project-card>p{font-size:.9375rem}.project-results{gap:15px}.project-results strong{font-size:1.8rem}.project-card .tags{gap:5px}.publication{grid-template-columns:50px minmax(0,1fr);gap:20px}.experience{grid-template-columns:150px minmax(0,1fr);gap:25px}.experience-date{font-size:.75rem}.background-grid{gap:30px}.education-card h3{font-size:1.3rem}.contact{grid-template-columns:1fr 210px;gap:40px}}
@media(max-width:600px){html{scroll-padding-top:8rem}.hero{grid-template-columns:1fr;gap:32px;padding-block:40px}.hero .eyebrow{font-size:.6875rem;line-height:1.8;max-width:300px}.hero h1{font-size:clamp(3.3rem,13vw,4.4rem);margin-top:22px}.hero-statement{font-size:1.55rem;margin-top:23px}.hero-description{font-size:1rem}.hero-profile{display:grid;grid-template-columns:110px minmax(0,1fr);gap:18px;align-items:center;padding-top:24px;border-top:1px solid var(--line)}.portrait-wrap img{height:137px;object-position:50% 48%}.portrait-caption{display:none}.profile-note{margin-top:0;padding-left:14px}.profile-note .eyebrow{font-size:.625rem}.profile-note p{font-size:.9375rem}.profile-degree{font-size:.75rem}.social-links{margin-top:22px;font-size:.875rem}.affiliation-strip{padding:22px 0}.affiliations{display:grid;grid-template-columns:1fr 1fr;gap:17px 24px}.affiliations span{font-size:1.05rem}.affiliations span:nth-child(2){font-size:1rem}.section{padding-block:48px}h2{font-size:2rem}.section-heading .eyebrow{font-size:.6875rem}.project-grid{grid-template-columns:1fr;gap:18px}.project-card{padding:25px}.project-card h3{font-size:1.5rem}.project-card>p{font-size:1rem}.card-top{margin-bottom:21px}.project-results{grid-template-columns:1fr 1.3fr;gap:20px;margin-block:25px}.project-results strong{font-size:2rem}.project-card .tags{margin-top:18px;margin-bottom:20px}.project-card summary{min-height:38px}.publication{grid-template-columns:1fr;gap:9px;padding-block:26px}.pub-year{padding:0;font-size:.75rem}.pub-meta{gap:8px 12px}.publication h3{font-size:1.2rem;line-height:1.45}.authors{font-size:.875rem}.pub-links{gap:24px}.experience{grid-template-columns:1fr;gap:14px;padding-block:28px}.experience-date{display:flex;gap:12px;align-items:baseline;flex-wrap:wrap;font-size:.75rem}.experience-date span{display:inline;margin:0}.experience-body h3{font-size:1.3rem}.background-grid{grid-template-columns:1fr;gap:34px}.education-card h3{font-size:1.5rem}.recognition{padding-top:26px;border-top:1px solid var(--line)}.skill-grid{grid-template-columns:1fr;gap:22px}.skill-grid p{line-height:1.8}.skills{margin-top:26px}.certifications .divider{margin-inline:8px}.contact{grid-template-columns:1fr;gap:32px}.contact h2{font-size:2.15rem}.contact-links{display:grid;grid-template-columns:1fr 1fr;gap:0 24px}.contact-email{font-size:1.15rem}.site-footer{display:block;line-height:2}.site-footer>span{display:block}.site-footer a{display:inline-block;margin-top:8px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
@media print{.site-header,.hero-buttons,.social-links,.contact-links,.site-footer,.theme-toggle{display:none}.container{width:100%}.hero{padding-block:20px;grid-template-columns:1fr 160px;gap:30px}.portrait-wrap img{height:170px}h1{font-size:3rem}.section{padding-block:25px}.project-card{break-inside:avoid}.publication,.experience{break-inside:avoid}.project-card details .detail-content{display:block!important}.contact{display:block}:root{--bg:white;--surface:white;--text:#111;--muted:#444;--line:#bbb;--accent:#164f8c;color-scheme:light}.featured{background:white;color:#111;border-color:#bbb}.featured .eyebrow,.featured>p,.featured .project-results span,.featured .project-number{color:#444}}
/* Preserve reflow on narrow screens and when readers enlarge text. */
body{overflow-wrap:anywhere}.project-results{grid-template-columns:minmax(0,1fr) minmax(0,1.3fr)}.project-results>div{min-width:0}.affiliations>span{min-width:0}
@media(max-width:600px){.wordmark-name{display:none}.site-header{position:relative}html{scroll-padding-top:2rem}.header-inner{gap:10px 15px}nav{flex-wrap:wrap;gap:8px 20px;justify-content:flex-start}.header-actions{gap:10px}.project-results{grid-template-columns:minmax(0,1fr) minmax(0,1.3fr)}.affiliations{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
