@import"https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600&family=JetBrains+Mono:wght@400;500&display=swap";:root{--cream: #f4f0e6;--cream-deep: #ede8da;--paper: #fbf9f3;--charcoal: #1a1a1a;--off-white: #fbf9f3;--charcoal-90: rgba(26, 26, 26, .9);--charcoal-82: rgba(26, 26, 26, .82);--charcoal-60: rgba(26, 26, 26, .6);--charcoal-40: rgba(26, 26, 26, .4);--charcoal-35: rgba(26, 26, 26, .35);--charcoal-12: rgba(26, 26, 26, .12);--charcoal-10: rgba(26, 26, 26, .1);--charcoal-04: rgba(26, 26, 26, .04);--muted: #5f5f5d;--accent: #1d3a6e;--accent-soft: rgba(29, 58, 110, .1);--accent-ring: rgba(29, 58, 110, .35);--bg: var(--cream);--bg-elev: var(--paper);--bg-hover: var(--cream-deep);--fg: var(--charcoal);--fg-body: var(--charcoal-82);--fg-muted: var(--muted);--fg-faint: var(--charcoal-40);--fg-on-dark: var(--off-white);--rule: var(--charcoal-12);--border: var(--charcoal-10);--border-strong: var(--charcoal-35);--link: var(--fg);--link-hover: var(--accent);--font-sans: "Geist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--fs-display: clamp(2.5rem, 4.5vw + 1rem, 4rem);--fs-h1: clamp(2rem, 3vw + .75rem, 3rem);--fs-h2: clamp(1.5rem, 1.5vw + .875rem, 2rem);--fs-h3: 1.25rem;--fs-lead: 1.125rem;--fs-body: 1rem;--fs-small: .875rem;--fs-micro: .75rem;--lh-tight: 1.05;--lh-snug: 1.2;--lh-normal: 1.5;--lh-relaxed: 1.65;--tracking-display: -.025em;--tracking-h1: -.02em;--tracking-h2: -.015em;--tracking-normal: 0;--tracking-mono: -.005em;--tracking-caps: .08em;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 24px;--s-6: 32px;--s-7: 48px;--s-8: 64px;--s-9: 96px;--s-10: 128px;--s-11: 160px;--s-12: 200px;--r-sm: 4px;--r-md: 8px;--r-lg: 12px;--r-pill: 999px;--shadow-inset-dark: inset 0 .5px 0 rgba(255, 255, 255, .18), inset 0 0 0 .5px rgba(0, 0, 0, .25), 0 1px 2px rgba(0, 0, 0, .06);--shadow-focus: 0 4px 12px rgba(0, 0, 0, .08);--ring-accent: 0 0 0 2px var(--accent-ring);--content-max: 880px;--page-max: 1120px;--gutter: clamp(20px, 5vw, 48px);--ease-out: cubic-bezier(.22, 1, .36, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--dur-fast: .15s;--dur-base: .25s;--dur-slow: .6s}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--font-sans);font-size:var(--fs-body);line-height:var(--lh-normal);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}h1,h2,h3,h4,h5,h6{color:var(--fg);font-weight:600;margin:0;text-wrap:balance}h1{font-size:var(--fs-display);line-height:var(--lh-tight);letter-spacing:var(--tracking-display)}h2{font-size:var(--fs-h1);line-height:var(--lh-snug);letter-spacing:var(--tracking-h1)}h3{font-size:var(--fs-h2);line-height:var(--lh-snug);letter-spacing:var(--tracking-h2)}h4{font-size:var(--fs-h3);line-height:var(--lh-snug);font-weight:500}p{margin:0;color:var(--fg-body);line-height:var(--lh-relaxed);text-wrap:pretty}a{color:var(--link);text-decoration-line:underline;text-decoration-thickness:1px;text-underline-offset:3px;transition:text-decoration-thickness var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}a:hover{color:var(--link-hover);text-decoration-thickness:2px}code,kbd,samp,pre{font-family:var(--font-mono);font-size:.92em;letter-spacing:var(--tracking-mono)}hr{border:0;border-top:1px solid var(--rule);margin:var(--s-7) 0}::selection{background:var(--accent);color:var(--off-white)}.probe-label{font-family:var(--font-mono);font-size:var(--fs-small);font-weight:500;color:var(--accent);letter-spacing:var(--tracking-mono)}.eyebrow{font-family:var(--font-mono);font-size:var(--fs-micro);font-weight:500;color:var(--fg-muted);letter-spacing:var(--tracking-caps);text-transform:uppercase}.tag{font-family:var(--font-mono);font-size:var(--fs-micro);color:var(--fg-body);letter-spacing:var(--tracking-mono)}.btn{display:inline-flex;align-items:center;gap:var(--s-2);padding:8px 14px;border-radius:var(--r-sm);font-family:var(--font-sans);font-size:var(--fs-body);font-weight:500;line-height:1;cursor:pointer;border:1px solid transparent;transition:opacity var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),background var(--dur-fast) var(--ease-out);text-decoration:none;white-space:nowrap}.btn:hover{text-decoration:none}.btn:active{opacity:.85}.btn:focus-visible{outline:none;box-shadow:var(--shadow-focus),var(--ring-accent)}.btn--dark{background:var(--charcoal);color:var(--fg-on-dark);box-shadow:var(--shadow-inset-dark)}.btn--dark:hover{background:#000}.btn--ghost{background:transparent;color:var(--fg);border-color:var(--border-strong)}.btn--ghost:hover{background:var(--charcoal-04)}.btn--quiet{background:transparent;color:var(--fg);border-color:var(--border)}.btn--quiet:hover{border-color:var(--border-strong)}body{min-height:100vh;background:var(--bg)}.page{max-width:var(--page-max);margin:0 auto;padding:0 var(--gutter)}section{scroll-margin-top:80px}em{font-style:italic;color:var(--fg)}.site-nav{position:sticky;top:0;z-index:50;background:var(--bg);border-bottom:1px solid transparent;transition:border-color var(--dur-fast) var(--ease-out),background var(--dur-fast) var(--ease-out)}.site-nav.is-scrolled{border-bottom-color:var(--rule);background:color-mix(in srgb,var(--bg) 92%,transparent);-webkit-backdrop-filter:saturate(140%) blur(8px);backdrop-filter:saturate(140%) blur(8px)}.site-nav__inner{max-width:var(--page-max);margin:0 auto;padding:18px var(--gutter);display:flex;align-items:center;justify-content:space-between;gap:32px}.site-nav__brand{display:inline-flex;align-items:baseline;gap:2px;color:var(--fg);text-decoration:none;white-space:nowrap}.site-nav__brand:hover{text-decoration:none}.brand-name{font-family:var(--font-sans);font-weight:600;font-size:16px;letter-spacing:-.015em}.brand-phd{font-family:var(--font-mono);font-weight:500;font-size:11px;color:var(--accent);margin-left:2px}.site-nav__links{display:flex;gap:28px;align-items:center;font-family:var(--font-mono);font-size:13px}.site-nav__links a{color:var(--fg-muted);text-decoration:none;transition:color var(--dur-fast) var(--ease-out)}.site-nav__links a:hover{color:var(--fg)}.hero{padding:120px 0 96px;position:relative;border-bottom:1px solid var(--rule);display:grid;grid-template-columns:1fr;grid-template-areas:"portrait" "text";gap:36px}.hero__text{grid-area:text;min-width:0}.hero__portrait{grid-area:portrait;width:200px;aspect-ratio:4 / 5;border-radius:var(--r-md);overflow:hidden;border:1px solid var(--border);background:var(--bg-hover)}.hero__portrait img{width:100%;height:100%;display:block;object-fit:cover;object-position:center 28%}@media(min-width:900px){.hero{grid-template-columns:minmax(0,1fr) 280px;grid-template-areas:"text portrait";gap:64px;align-items:center}.hero__portrait{width:280px}}.hero__eyebrow{font-family:var(--font-mono);font-size:12px;font-weight:500;letter-spacing:.04em;color:var(--fg-muted);margin-bottom:36px}.hero__headline{font-size:var(--fs-display);font-weight:600;line-height:1.05;letter-spacing:-.025em;color:var(--fg);max-width:18ch;margin-bottom:32px;text-wrap:balance}.hero__sub{font-size:19px;line-height:1.55;color:var(--fg-body);max-width:58ch;margin-bottom:44px}.hero__ctas{display:flex;gap:12px;flex-wrap:wrap}.hero__scroll{position:absolute;left:0;bottom:32px;display:none;align-items:center;justify-content:center;width:32px;height:32px;color:var(--fg-muted);text-decoration:none;opacity:.6;transition:opacity var(--dur-fast) var(--ease-out)}.hero__scroll:hover{opacity:1}@media(min-height:720px){.hero__scroll{display:inline-flex}}.approach{padding:96px 0 80px;border-bottom:1px solid var(--rule)}.approach__body{font-size:20px;line-height:1.6;color:var(--fg-body);max-width:60ch}.approach__body em{font-style:italic;color:var(--fg)}.eyebrow{font-family:var(--font-mono);font-size:12px;font-weight:500;letter-spacing:.04em;color:var(--fg-muted);margin-bottom:28px}.projects{padding:96px 0;border-bottom:1px solid var(--rule)}.projects__list{display:flex;flex-direction:column;gap:24px}.project{position:relative;border:1px solid var(--border);border-radius:var(--r-md);background:var(--bg);padding:28px 32px 26px;transition:border-color var(--dur-base) var(--ease-out),opacity var(--dur-slow) var(--ease-out),transform var(--dur-slow) var(--ease-out)}.project:hover{border-color:var(--border-strong)}.project--article{cursor:pointer}.project__title--article:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:var(--r-md);z-index:1}.project__urllink{position:relative;z-index:2;display:inline-flex;align-items:center;gap:5px;font-family:var(--font-mono);font-size:12px;letter-spacing:.06em;color:var(--fg-muted);text-decoration:none;transition:color var(--dur-fast) var(--ease-out)}.project__urllink:hover{color:var(--accent)}.project__urllink svg{opacity:.5}.project__more{margin-top:18px;font-family:var(--font-mono);font-size:13px;font-weight:500;color:var(--accent);transition:transform var(--dur-fast) var(--ease-out)}.project--article:hover .project__more{transform:translate(3px)}.project.is-hidden{opacity:0;transform:translateY(16px)}.project__top{display:flex;align-items:center;justify-content:space-between;padding-bottom:14px;border-bottom:1px solid var(--rule);margin-bottom:22px}.project__num,.project__url{font-family:var(--font-mono);font-size:12px;color:var(--fg-muted);letter-spacing:.06em}.project__title{display:inline-flex;align-items:center;gap:10px;font-size:28px;font-weight:600;letter-spacing:-.02em;line-height:1.15;color:var(--fg);text-decoration:none;margin-bottom:14px}.project__title svg{opacity:.45;transition:opacity var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}.project__title:hover{text-decoration:none}.project__title:hover svg{opacity:1;transform:translate(2px,-2px)}.project__title.is-pending{cursor:default;color:var(--fg)}.project__probe{font-family:var(--font-mono);font-size:14px;font-weight:500;line-height:1.5;margin-bottom:14px}.project__probe-label{color:var(--accent)}.project__probe-q{color:var(--fg)}.project__desc{font-size:16px;line-height:1.65;color:var(--fg-body);max-width:70ch;margin-bottom:20px}.project__desc code{font-family:var(--font-mono);font-size:.92em;color:var(--accent);background:var(--accent-soft);padding:1px 5px;border-radius:3px}.project__desc strong{color:var(--fg);font-weight:600}.project__tags{font-family:var(--font-mono);font-size:12px;color:var(--fg-muted);letter-spacing:0;line-height:1.6}.project__sep{color:var(--fg-faint);margin:0 2px}.background{padding:96px 0;border-bottom:1px solid var(--rule)}.background__list{max-width:var(--content-max)}.background__row{display:grid;grid-template-columns:160px 1fr;gap:28px;padding:18px 0;border-top:1px solid var(--rule)}.background__row:last-child{border-bottom:1px solid var(--rule)}.background__role{font-family:var(--font-mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--fg-muted);padding-top:3px}.background__detail{font-size:16px;line-height:1.6;color:var(--fg-body)}.background__detail strong{color:var(--fg);font-weight:500}.pub{font-family:var(--font-mono);font-size:13px;color:var(--accent)}.pubs{margin:0}.pubs>summary{list-style:none;cursor:pointer;display:flex;align-items:baseline;gap:10px;-webkit-user-select:none;user-select:none;padding:0;transition:color var(--dur-fast) var(--ease-out)}.pubs>summary::-webkit-details-marker{display:none}.pubs__chevron{display:inline-block;width:12px;font-family:var(--font-mono);font-size:13px;color:var(--fg-muted);line-height:1;transition:color var(--dur-fast) var(--ease-out)}.pubs[open] .pubs__chevron:before{content:"−"}.pubs:not([open]) .pubs__chevron:before{content:"+"}.pubs[open] .pubs__chevron{color:var(--accent)}.pubs>summary:hover .pubs__chevron{color:var(--accent)}.pubs__list{list-style:none;margin:18px 0 4px;padding:0;display:flex;flex-direction:column;gap:18px}.pub-item{padding-top:14px;border-top:1px solid var(--rule)}.pub-item:first-child{border-top:0;padding-top:6px}.pub-title{display:inline-block;font-size:15px;line-height:1.4;color:var(--fg);font-weight:500;text-decoration:none;margin-bottom:4px;transition:color var(--dur-fast) var(--ease-out)}.pub-title:hover{color:var(--accent);text-decoration:none}.pub-authors{font-size:13.5px;line-height:1.5;color:var(--fg-muted);margin-bottom:6px}.pub-authors strong{color:var(--fg);font-weight:500}.pub-meta{font-family:var(--font-mono);font-size:12px;color:var(--accent)}.pub-venue{color:var(--accent)}.pub-sep{color:var(--fg-faint)}.pub-link{color:var(--fg-muted);text-decoration:none;transition:color var(--dur-fast) var(--ease-out)}.pub-link:hover{color:var(--accent)}.footer{padding:96px 0 64px}.footer__close{font-size:28px;font-weight:600;letter-spacing:-.015em;line-height:1.2;color:var(--fg);max-width:22ch;margin-bottom:48px}.footer__row{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;margin-bottom:28px}.footer__email{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:14px;color:var(--fg);text-decoration:none}.footer__email:hover{color:var(--accent)}.footer__links{display:flex;gap:22px;font-family:var(--font-mono);font-size:13px}.footer__links a{display:inline-flex;align-items:center;gap:6px;color:var(--fg-muted);text-decoration:none;transition:color var(--dur-fast) var(--ease-out)}.footer__links a:hover{color:var(--fg)}.footer__rule{height:1px;background:var(--rule);margin-bottom:18px}.footer__meta{display:flex;justify-content:space-between;gap:24px;font-family:var(--font-mono);font-size:11px;color:var(--fg-faint);letter-spacing:0}.article-bar{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--bg) 92%,transparent);-webkit-backdrop-filter:saturate(140%) blur(8px);backdrop-filter:saturate(140%) blur(8px);border-bottom:1px solid var(--rule)}.article-bar__inner{max-width:var(--page-max);margin:0 auto;padding:16px var(--gutter);display:flex;align-items:center;justify-content:space-between;gap:24px}.article-bar__back{font-family:var(--font-mono);font-size:13px;color:var(--fg-muted);text-decoration:none;white-space:nowrap;transition:color var(--dur-fast) var(--ease-out)}.article-bar__back:hover{color:var(--fg)}.prose{max-width:760px;margin:0 auto;padding:56px 0 96px}.prose__kicker{font-family:var(--font-mono);font-size:13px;line-height:1.6;color:var(--fg-body);padding:14px 16px;border-left:2px solid var(--accent);background:var(--accent-soft);border-radius:0 var(--r-sm) var(--r-sm) 0;margin-bottom:44px}.prose__probe{color:var(--accent);font-weight:500}.prose h1{font-size:clamp(2rem,3vw + 1rem,2.9rem);line-height:1.1;letter-spacing:-.025em;margin-bottom:24px}.prose h2{font-size:26px;line-height:1.2;letter-spacing:-.015em;margin:8px 0 18px}.prose h3{font-size:19px;line-height:1.25;letter-spacing:-.01em;margin:34px 0 12px}.prose p{font-size:17px;line-height:1.7;color:var(--fg-body);margin:0 0 20px}.prose blockquote{margin:0 0 32px;padding:2px 0 2px 20px;border-left:2px solid var(--border-strong);color:var(--fg-muted)}.prose blockquote p{color:var(--fg-muted);font-style:italic}.prose ul,.prose ol{font-size:17px;line-height:1.7;color:var(--fg-body);margin:0 0 22px;padding-left:22px}.prose li{margin-bottom:8px}.prose li::marker{color:var(--fg-faint)}.prose a:not(.btn){color:var(--accent);text-decoration-line:underline;text-decoration-thickness:1px;text-underline-offset:2px}.prose a:not(.btn):hover{color:var(--accent);text-decoration-thickness:2px}.prose strong{color:var(--fg);font-weight:600}.prose em{font-style:italic;color:var(--fg)}.prose code{font-family:var(--font-mono);font-size:.88em;color:var(--accent);background:var(--accent-soft);padding:1px 5px;border-radius:3px}.prose hr{border:0;border-top:1px solid var(--rule);margin:48px 0}.prose table{width:100%;border-collapse:collapse;margin:4px 0 28px;font-size:14.5px}.prose th,.prose td{text-align:left;padding:10px 14px;border:1px solid var(--rule);vertical-align:top;line-height:1.5}.prose thead th{background:var(--bg-hover);font-weight:600;color:var(--fg);font-size:13px}.prose td{color:var(--fg-body)}.prose__cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:56px;padding-top:32px;border-top:1px solid var(--rule)}@media(max-width:720px){.site-nav__links{display:none}.hero{padding:64px 0 56px}.hero__sub{font-size:17px}.approach,.projects,.background,.footer{padding-top:64px;padding-bottom:64px}.approach__body{font-size:17px}.project{padding:22px}.project__title{font-size:22px}.background__row{grid-template-columns:1fr;gap:8px}.footer__close{font-size:22px}.footer__meta{flex-direction:column;gap:4px}.prose{padding:36px 0 64px}.prose p,.prose ul,.prose ol{font-size:16px}.prose table{display:block;overflow-x:auto;font-size:13px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important}.project.is-hidden{opacity:1;transform:none}}
