:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--page-bg:var(--lightningcss-light,#f4f0e8)var(--lightningcss-dark,#111416);--surface:var(--lightningcss-light,#fbf8f2)var(--lightningcss-dark,#191d20);--surface-raised:var(--lightningcss-light,#fff)var(--lightningcss-dark,#202529);--text:var(--lightningcss-light,#202a2f)var(--lightningcss-dark,#e8eceb);--muted:var(--lightningcss-light,#697277)var(--lightningcss-dark,#99a3a7);--line:var(--lightningcss-light,#d8d0c3)var(--lightningcss-dark,#333a3e);--accent:var(--lightningcss-light,#b45f3d)var(--lightningcss-dark,#e39a73);--accent-strong:var(--lightningcss-light,#7f3f29)var(--lightningcss-dark,#ffc0a0);--accent-soft:var(--lightningcss-light,#ead7ca)var(--lightningcss-dark,#35241f);--cool:var(--lightningcss-light,#365e68)var(--lightningcss-dark,#8fbac1);--shadow:var(--lightningcss-light,#342a231f)var(--lightningcss-dark,#00000052);--max-width:960px;--radius:14px;font-family:IBM Plex Sans,Avenir Next,Avenir,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}*{box-sizing:border-box}html{background:var(--page-bg);scroll-behavior:smooth}body{background:linear-gradient(to right, color-mix(in srgb, var(--line) 28%, transparent) 1px, transparent 1px), linear-gradient(to bottom, color-mix(in srgb, var(--line) 20%, transparent) 1px, transparent 1px), var(--page-bg);min-height:100vh;color:var(--text);background-size:44px 44px;margin:0;font-size:16px;line-height:1.65}a{color:var(--accent-strong);text-decoration:none}a:hover{color:var(--accent)}button,input{font:inherit}.site-header{width:100%}.site-nav{width:min(calc(100% - 2rem), var(--max-width));border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:1rem;margin:0 auto;padding:1.1rem 0;display:flex}.brand{border:1px solid var(--line);width:2.35rem;height:2.35rem;color:var(--text);letter-spacing:.08em;border-radius:50%;place-items:center;font-size:.78rem;font-weight:750;display:grid}.brand:hover{border-color:var(--accent);color:var(--accent)}.nav-links{flex-wrap:wrap;gap:1.35rem;font-size:.9rem;display:flex}.nav-links a{color:var(--muted)}.nav-links a:hover{color:var(--text)}main{width:min(calc(100% - 2rem), var(--max-width));margin:0 auto;padding:2.5rem 0 5rem}.site-footer{width:min(calc(100% - 2rem), var(--max-width));border-top:1px solid var(--line);color:var(--muted);margin:0 auto;padding:1.5rem 0 2.5rem;font-size:.82rem}.hero{grid-template-columns:minmax(0,1.5fr) minmax(240px,.65fr);align-items:center;gap:clamp(2.5rem,7vw,6rem);min-height:34rem;padding:4.5rem 0 5rem;display:grid}.hero-kicker,.eyebrow,.publication-year{color:var(--accent);letter-spacing:.12em;text-transform:uppercase;margin:0;font-size:.75rem;font-weight:750}.hero h1{letter-spacing:-.07em;max-width:760px;margin:.2rem 0 0;font-size:clamp(3.6rem,9vw,7.4rem);font-weight:620;line-height:.9}.hero-role{color:var(--cool);margin:1.35rem 0 0;font-size:1rem;font-weight:650}.hero-intro{max-width:600px;color:var(--muted);margin:1rem 0 0;font-size:1.08rem;line-height:1.75}.social-links{flex-wrap:wrap;gap:.75rem;margin-top:1.5rem;display:flex}.social-links a{border:1px solid var(--line);background:color-mix(in srgb, var(--surface) 72%, transparent);color:var(--text);border-radius:999px;padding:.3rem .65rem;font-size:.82rem;font-weight:600}.social-links a:hover{border-color:var(--accent);color:var(--accent)}.hero-aside{position:relative}.portrait-frame{width:min(100%,260px);margin-left:auto;position:relative}.portrait-frame:before{content:"";border:1px solid var(--accent);border-radius:28px 8px;position:absolute;inset:16px -16px -16px 16px}.profile-photo{z-index:1;aspect-ratio:1;object-fit:cover;width:100%;box-shadow:0 18px 48px var(--shadow);border-radius:28px 8px;display:block;position:relative}.focus-list{gap:.45rem;width:min(100%,260px);margin:2rem 0 0 auto;display:grid}.focus-list span{border-left:2px solid var(--accent);background:color-mix(in srgb, var(--surface) 75%, transparent);color:var(--muted);padding:.55rem .75rem;font-size:.82rem}.section{border-top:1px solid var(--line);padding:4.5rem 0}.section-heading{grid-template-columns:120px minmax(0,1fr);align-items:start;gap:1.5rem;margin-bottom:2rem;display:grid}.section-index{color:var(--line);margin:0 0 .3rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:2.5rem;font-weight:700;line-height:1}.section-heading h2,.section>h2{letter-spacing:-.045em;margin:-.25rem 0 .45rem;font-size:clamp(2rem,5vw,3.2rem);font-weight:620}.section-heading p:not(.eyebrow):not(.section-index){max-width:680px;color:var(--muted);margin:0}.card-grid{gap:.9rem;display:grid}.research-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.opensource-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.card{border:1px solid var(--line);border-radius:var(--radius);background:color-mix(in srgb, var(--surface) 88%, transparent);min-width:0;box-shadow:0 8px 24px color-mix(in srgb, var(--shadow) 35%, transparent);padding:1.15rem 1.2rem;transition:transform .18s,border-color .18s,background .18s}.card:hover{border-color:var(--accent);background:var(--surface-raised);transform:translateY(-2px)}.project-card{grid-template-rows:auto auto 1fr auto;gap:.75rem;display:grid}.project-card .card-heading{text-align:left}.project-card .eyebrow{color:var(--cool);letter-spacing:.07em}.card h3{margin:.25rem 0 0;font-size:1.15rem;line-height:1.3}.card h3 a{color:var(--text)}.card-description,.card>p{color:var(--muted);margin:0;font-size:.9rem;line-height:1.65}.link-row,.tag-row,.filter-row{flex-wrap:wrap;gap:.4rem;display:flex}.pill{border:1px solid var(--line);background:var(--surface);width:fit-content;color:var(--muted);border-radius:999px;align-items:center;padding:.2rem .55rem;font-size:.75rem;font-weight:600;display:inline-flex}a.pill:hover{border-color:var(--accent);color:var(--accent)}.muted{color:var(--muted)}.section-link{text-align:right;margin:1.25rem 0 0;font-size:.9rem;font-weight:650}.page-header{max-width:820px;margin:3rem 0 4rem}.page-header h1{letter-spacing:-.055em;margin:.25rem 0 0;font-size:clamp(2.8rem,7vw,5.2rem);font-weight:620;line-height:.95}.page-lede{max-width:720px;color:var(--muted);margin-top:1rem;font-size:1.05rem}.publication-list{border-top:1px solid var(--line)}.publication{border-bottom:1px solid var(--line);grid-template-columns:5rem minmax(0,1fr);gap:1rem;padding:1.3rem 0;display:grid}.publication h3{margin:0;font-size:1rem}.publication p{margin:.35rem 0 0;font-size:.9rem}.project-controls{gap:.8rem;margin:0 0 1.4rem;display:grid}.project-controls input{border:1px solid var(--line);background:var(--surface);width:min(100%,28rem);color:var(--text);border-radius:8px;outline:none;padding:.65rem .8rem}.project-controls input:focus{border-color:var(--accent)}.filter-row button{border:1px solid var(--line);background:var(--surface);color:var(--muted);cursor:pointer;border-radius:999px;padding:.3rem .65rem}.filter-row button:hover,.filter-row button.active{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.empty-state{color:var(--muted);padding:2rem 0}.cv-header{margin-bottom:2.5rem}.cv-block{margin:3.5rem 0}.cv-block>h2{border-bottom:1px solid var(--line);margin-bottom:.7rem;padding-bottom:.5rem;font-size:1.7rem}.cv-entry{border-bottom:1px solid var(--line);grid-template-columns:minmax(220px,.8fr) 1.7fr;gap:1.5rem;padding:1.1rem 0;display:grid}.cv-entry h3,.cv-entry p{margin-top:0}.cv-entry p{color:var(--muted)}.cv-tags{gap:.5rem}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=820px){.hero{grid-template-columns:1fr;min-height:auto;padding:3rem 0 4rem}.hero-aside{grid-template-columns:180px 1fr;align-items:end;gap:1.5rem;display:grid}.portrait-frame,.focus-list{width:100%;margin:0}.research-grid,.opensource-grid{grid-template-columns:1fr}.section-heading{grid-template-columns:80px 1fr}}@media (width<=560px){.site-nav{align-items:flex-start}.nav-links{gap:.8rem}main{padding-top:1.25rem}.hero{padding-top:2rem}.hero h1{font-size:clamp(3rem,18vw,4.6rem)}.hero-aside{grid-template-columns:1fr}.portrait-frame{max-width:210px;margin:0 auto}.focus-list{max-width:280px;margin:0 auto}.section-heading{grid-template-columns:1fr;gap:.65rem}.section-index{font-size:1.6rem}.publication,.cv-entry{grid-template-columns:1fr;gap:.35rem}}@media print{.site-header,.site-footer,.social-links,.hero-aside{display:none}body{color:#000;background:#fff}main{width:100%;padding:0}.card{break-inside:avoid;box-shadow:none}}.contribution-row{flex-wrap:wrap;align-items:center;gap:.55rem;display:flex}.contribution-stat{color:var(--accent-strong);letter-spacing:-.01em;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.76rem;font-weight:700}.contribution-stat:hover{color:var(--accent)}.opensource-section,.upstream-section{margin:3rem 0 4.5rem}.upstream-list{border-top:1px solid var(--line)}.upstream-item{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:2rem;padding:1.2rem 0;display:grid}.upstream-item h3{margin:0;font-size:1.05rem}.upstream-item h3 a{color:var(--text)}.upstream-item p{max-width:610px;color:var(--muted);margin:.35rem 0 0;font-size:.88rem}.section-heading--compact{margin-top:0}@media (width<=680px){.upstream-item{grid-template-columns:1fr;gap:.7rem}}.packaging-section{margin:3rem 0 4.5rem}.packaging-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem;display:grid}.packaging-item{border:1px solid var(--line);background:color-mix(in srgb, var(--surface) 82%, transparent);border-radius:10px;padding:1rem}.packaging-item h3{margin:0;font-size:.95rem}.packaging-item h3 a{color:var(--text)}.packaging-item p{color:var(--muted);margin:.45rem 0 .85rem;font-size:.84rem;line-height:1.55}@media (width<=760px){.packaging-grid{grid-template-columns:1fr}}.publication-card{grid-template-rows:auto auto auto 1fr auto;gap:.65rem;display:grid}.publication-card h3{margin:0}.publication-venue-card{color:var(--cool);margin:0;font-size:.82rem;font-weight:650}.thesis-section{max-width:720px}.thesis-section h2{margin-top:.35rem;font-size:1.65rem}.thesis-section h2 a{color:var(--text)}.thesis-section p:last-child{color:var(--muted)}
