:root{--ink:#081a2c;--slate:#2f4c65;--muted:#64798b;--paper:#f5f8fa;--line:#d7e1e7;--aqua:#78e7d8;--blue:#a9d0f5;--deep:#0d6f7b}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:Manrope,Arial,sans-serif}a{color:inherit}.site-header{height:76px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(1.2rem,5vw,5rem);background:#f5f8faee;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10;backdrop-filter:blur(12px)}.brand{font-size:.9rem;font-weight:800;letter-spacing:.16em;text-decoration:none}.brand span{color:var(--deep)}nav{display:flex;gap:clamp(.7rem,2vw,1.65rem)}nav a{font-size:.78rem;color:var(--muted);text-decoration:none;font-weight:700}nav a:hover{color:var(--ink)}.hero{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(350px,.95fr);gap:clamp(2rem,7vw,8rem);align-items:center;min-height:650px;padding:clamp(4rem,9vw,8rem) clamp(1.2rem,10vw,10rem);background:var(--ink);color:#f9fcfd}.hero-copy{max-width:660px}.kicker{margin:0 0 1rem;color:var(--deep);font-family:"DM Mono",monospace;font-size:.7rem;letter-spacing:.13em;text-transform:uppercase}.hero .kicker,.contact .kicker{color:var(--aqua)}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(3.15rem,5.6vw,5.5rem);line-height:.98;letter-spacing:-.06em;margin-bottom:1.45rem;max-width:680px}h2{font-size:clamp(2rem,3.8vw,3.4rem);line-height:1.02;letter-spacing:-.055em;margin-bottom:1.35rem}h3{font-size:1.03rem;line-height:1.4;letter-spacing:-.02em}.lede{max-width:610px;color:#c7d7e2;line-height:1.75;font-size:1.05rem}.hero-actions,.contact>div{display:flex;align-items:center;flex-wrap:wrap;gap:1.2rem;margin-top:2rem}.button{display:inline-flex;align-items:center;justify-content:center;padding:.88rem 1.1rem;background:var(--aqua);color:var(--ink);font-size:.84rem;font-weight:800;text-decoration:none;transition:transform .18s,background .18s}.button:hover{background:#b4fff4;transform:translateY(-2px)}.text-link{font-size:.84rem;font-weight:800;text-decoration:none}.text-link:hover{text-decoration:underline}.data-figure{margin:0;min-height:360px;border-left:1px solid #b9dbef50;border-bottom:1px solid #b9dbef50;position:relative;background:radial-gradient(circle at 60% 40%,#78e7d826,transparent 30%),linear-gradient(125deg,transparent 12%,#78e7d810 12.2%,transparent 12.4%)}.data-figure svg{width:100%;height:auto;overflow:visible}.grid path{fill:none;stroke:#b9dbef21;stroke-width:1}.axis{fill:none;stroke:#b9dbef7b;stroke-width:1.2}.curve{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1;animation:draw 2.2s .3s cubic-bezier(.2,.7,.25,1) forwards}.curve-a{stroke:var(--aqua);stroke-width:3}.curve-b{stroke:var(--blue);stroke-width:2;opacity:.75;animation-delay:.65s}.points circle{fill:#fff;opacity:.72;animation:pulse 3.5s ease-in-out infinite}.points circle:nth-child(2n){animation-delay:-1s}.data-figure text{fill:#a8bfce;font-family:"DM Mono",monospace;font-size:10px;letter-spacing:1.2px;text-transform:uppercase}.vertical{transform:rotate(-90deg)}figcaption{position:absolute;right:0;bottom:-2rem;color:#a8bfce;font-family:"DM Mono",monospace;font-size:.62rem;letter-spacing:.08em}.section{display:grid;grid-template-columns:130px minmax(0,1fr);gap:clamp(1.5rem,6vw,7rem);padding:clamp(4.5rem,8vw,7rem) clamp(1.2rem,10vw,10rem)}.section-label{display:flex;flex-direction:column;gap:.65rem;padding-top:.35rem;color:var(--deep);font-family:"DM Mono",monospace;font-size:.7rem;letter-spacing:.12em;text-transform:uppercase}.section-label p{margin:0}.section-content{max-width:920px}.body-copy{max-width:710px;color:var(--slate);line-height:1.8;font-size:1.02rem}.fact-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0;margin:2.5rem 0 0;border-top:1px solid var(--line)}.fact-grid div{padding:1.2rem 1.3rem 1.1rem 0;border-right:1px solid var(--line)}.fact-grid div+div{padding-left:1.3rem}.fact-grid div:last-child{border:0}.fact-grid dt{font-family:"DM Mono",monospace;color:var(--deep);font-size:.68rem;text-transform:uppercase;letter-spacing:.1em}.fact-grid dd{margin:.7rem 0 0;color:var(--muted);font-size:.86rem;line-height:1.65}.research{background:#e6eef1}.research-cards{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);margin-top:2rem}.research-cards article{min-height:205px;padding:1.4rem 1.3rem 1rem 0;border-right:1px solid var(--line)}.research-cards article+article{padding-left:1.3rem}.research-cards article:last-child{border:0}.research-cards span{color:var(--deep);font-family:"DM Mono",monospace;font-size:.68rem}.research-cards p,.publication small,.thesis p{color:var(--muted);font-size:.88rem;line-height:1.65}.subsection{margin-top:4rem}.publication{padding:1.35rem 0;border-top:1px solid var(--line)}.publication:last-child{border-bottom:1px solid var(--line)}.publication>p{margin-bottom:.45rem;color:var(--deep);font-family:"DM Mono",monospace;font-size:.66rem;letter-spacing:.1em;text-transform:uppercase}.publication h3{margin:.2rem 0 .5rem}.publication h3 a{text-decoration:none}.publication h3 a:hover{color:var(--deep);text-decoration:underline;text-underline-offset:.2em}.thesis{margin-top:3rem;padding:2rem;border-left:3px solid var(--deep);background:#fff}.thesis h3{font-size:1.35rem;margin:.3rem 0 .9rem}.experience{background:#fff}.timeline{margin-top:2.2rem;border-top:1px solid var(--line)}.timeline article{display:grid;grid-template-columns:180px 1fr;gap:2rem;padding:1.3rem 0;border-bottom:1px solid var(--line)}.timeline time{font-family:"DM Mono",monospace;font-size:.72rem;color:var(--deep);letter-spacing:.04em}.timeline h3{margin:0 0 .35rem}.timeline p{margin:0;color:var(--muted);font-size:.9rem}.teaching-list{border-top:1px solid var(--line);margin-top:2rem}.teaching-list article{padding:1.25rem 0;border-bottom:1px solid var(--line)}.teaching-list p{margin-bottom:.4rem;color:var(--deep);font-family:"DM Mono",monospace;font-size:.68rem;letter-spacing:.1em;text-transform:uppercase}.teaching-list h3{margin:.15rem 0 .35rem}.teaching-list span{font-size:.88rem;color:var(--muted)}.awards{margin-top:3rem;padding:1.8rem 2rem;background:#e6eef1}.awards ul{margin:1rem 0 0;padding-left:1.2rem;color:var(--slate);line-height:1.8;font-size:.9rem}.cv{background:#e6eef1}.cv-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:2rem}.cv-viewer{display:block;width:100%;height:min(78vh,920px);margin-top:2rem;border:1px solid var(--line);background:#fff;box-shadow:0 16px 34px #081a2c14}.fallback{margin:.85rem 0 0;color:var(--muted);font-size:.82rem}.fallback a{font-weight:800}.contact{padding:clamp(4.5rem,9vw,8rem) clamp(1.2rem,10vw,10rem);background:var(--deep);color:#fff}.contact h2{max-width:700px}.contact>p:not(.kicker){color:#d4e3e9;max-width:560px;line-height:1.7}.contact .text-link{color:#fff}footer{display:flex;justify-content:space-between;gap:1rem;padding:1.3rem clamp(1.2rem,5vw,5rem);font-family:"DM Mono",monospace;font-size:.67rem;letter-spacing:.07em;color:var(--muted)}@keyframes draw{to{stroke-dashoffset:0}}@keyframes pulse{0%,100%{opacity:.45;r:3}50%{opacity:1;r:5}}@media(max-width:760px){.site-header{height:66px;gap:1rem}.site-header nav{max-width:calc(100vw - 8rem);overflow-x:auto;flex-wrap:nowrap;padding-bottom:.2rem;scrollbar-width:none}.site-header nav::-webkit-scrollbar{display:none}.site-header nav a{white-space:nowrap}.hero{grid-template-columns:1fr;min-height:0}.data-figure{display:none}.section{grid-template-columns:1fr;gap:1.15rem}.section-label{flex-direction:row;padding:0}.fact-grid,.research-cards{grid-template-columns:1fr}.fact-grid div,.fact-grid div+div,.research-cards article,.research-cards article+article{padding:1.25rem 0;border-right:0;border-bottom:1px solid var(--line)}.fact-grid div:last-child,.research-cards article:last-child{border-bottom:0}.timeline article{grid-template-columns:1fr;gap:.5rem}.cv-heading{align-items:flex-start;flex-direction:column}.cv-viewer{height:68vh}}@media(max-width:430px){h1{font-size:2.7rem}.hero-actions,.contact>div{align-items:flex-start;flex-direction:column;gap:1rem}footer{flex-direction:column}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.curve,.points circle{animation:none;stroke-dashoffset:0}}