:root{--color-bg:#fffbfa;--color-bg-alt:#f4eeed;--color-text:#262629;--color-text-muted:#616168;--color-accent:#52717a;--color-accent-hover:#3d545a;--color-accent-light:#9fb7be;--color-highlight:#9E2B2B;--color-border:rgba(38, 38, 41, 0.14);--color-surface-invert:#2b3b40;--color-on-invert:#fffbfa;--color-on-invert-muted:rgba(255, 251, 250, 0.75);--color-bg-rgb:255, 251, 250;--color-accent-rgb:82, 113, 122;--icon-frame:#9E2B2B;--icon-gold:#e4b169;--font-body:"Reddit Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-heading:"EB Garamond", Georgia, "Times New Roman", serif;--font-mono:"SF Mono", "Monaco", "Inconsolata", monospace;--text-h1:clamp(2.5rem, 6vw, 3.75rem);--text-h2:clamp(1.75rem, 3vw, 2.125rem);--text-h3:clamp(1.375rem, 1.75vw, 1.5rem);--text-sm:0.875rem;--text-base:1rem;--text-lg:1.625rem;--space-xs:0.5rem;--space-sm:1rem;--space-md:2rem;--space-lg:4rem;--space-xl:8rem;--max-width:960px;--line-body:1.7;--line-tight:1.5;--measure:34.5rem;--measure-wide:56rem;--rail:280px;--transition-fast:0.2s ease;--transition-medium:0.4s cubic-bezier(0.16, 1, 0.3, 1);--transition-slow:0.8s cubic-bezier(0.16, 1, 0.3, 1);--header-bg:rgba(var(--color-bg-rgb), 0.85);--header-height:80px}[data-theme=dark]{--color-bg:#000000;--color-bg-alt:#1a1a1f;--color-text:#f9f9fa;--color-text-muted:#b2b2b8;--color-accent:#9fb7be;--color-accent-hover:#c7d5d9;--color-accent-light:#c7d5d9;--color-highlight:#DB6B6B;--color-border:rgba(249, 249, 250, 0.16);--color-surface-invert:#2b3b40;--color-on-invert:#f9f9fa;--color-on-invert-muted:rgba(249, 249, 250, 0.75);--color-bg-rgb:0, 0, 0;--color-accent-rgb:159, 183, 190;--icon-frame:#e05555;--icon-gold:#e4b169;--header-bg:rgba(var(--color-bg-rgb), 0.85)}*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;scroll-behavior:smooth;background-color:var(--color-bg)}body{font-family:var(--font-body);font-size:var(--text-base);font-weight:400;line-height:var(--line-body);color:var(--color-text);background-color:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-padding-top:var(--header-height);transition:background-color var(--transition-medium),color var(--transition-medium);display:flex;flex-direction:column;min-height:100vh}main{flex:1}h1,h2,h3,h4{font-family:var(--font-heading);font-weight:600;line-height:1.15;color:var(--color-text)}h1{font-size:var(--text-h1)}h2{font-size:var(--text-h2)}h3{font-size:var(--text-h3)}h4{font-size:var(--text-base)}p{margin-bottom:1.5rem}p:last-child{margin-bottom:0}a{color:var(--color-accent);text-decoration:none;transition:color var(--transition-fast)}.nav__link::after,.home__text a::after,.legal__content a::after,.footer__link::after,.blog-post__content a::after,.post__title a::after{content:"";position:absolute;left:0;bottom:0;width:0;height:2px;background-color:var(--color-accent);transition:width var(--transition-medium)}.nav__link,.home__text a,.legal__content a,.footer__link,.blog-post__content a,.post__title a{position:relative;text-decoration:none;padding-bottom:.1rem}.nav__link:hover::after,.nav__link:focus-visible::after,.home__text a:hover::after,.home__text a:focus-visible::after,.legal__content a:hover::after,.legal__content a:focus-visible::after,.footer__link:hover::after,.footer__link:focus-visible::after,.blog-post__content a:hover::after,.blog-post__content a:focus-visible::after,.post__title a:hover::after,.post__title a:focus-visible::after{width:100%}code,pre{font-family:var(--font-mono)}.container{width:100%;max-width:var(--max-width);margin:0 auto;padding:0 var(--space-md)}section{padding:var(--space-xl)0}@media(max-width:768px){section{padding:var(--space-lg)0}.container{padding:0 var(--space-sm)}}.header{position:fixed;top:0;left:0;right:0;z-index:100;padding:var(--space-sm)0;background-color:var(--header-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);transition:background-color var(--transition-medium)}.header__inner{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-md)}.nav{display:flex;align-items:center;gap:var(--space-md)}.nav__link{font-size:var(--text-base);font-weight:500;color:var(--color-text);text-decoration:none;padding:var(--space-xs)0;position:relative}.nav__link--active{color:var(--color-highlight)}.nav__link--active::after{width:100%;background-color:var(--color-highlight)}.theme-toggle{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;margin-left:var(--space-xs);padding:0;background:0 0;border:none;cursor:pointer;color:var(--color-text-muted);transition:color var(--transition-fast)}.theme-toggle:hover{color:var(--color-text)}.theme-toggle svg{width:1.25rem;height:1.25rem}.theme-toggle__sun{display:block}.theme-toggle__moon{display:none}[data-theme=dark] .theme-toggle__sun{display:none}[data-theme=dark] .theme-toggle__moon{display:block}.menu-toggle{display:none;flex-direction:column;gap:5px;background:0 0;border:none;cursor:pointer;padding:var(--space-xs);z-index:101}.menu-toggle__bar{display:block;width:24px;height:2px;background-color:var(--color-text);transition:all var(--transition-fast)}.menu-toggle.is-active .menu-toggle__bar:nth-child(1){transform:rotate(45deg)translate(5px,5px)}.menu-toggle.is-active .menu-toggle__bar:nth-child(2){opacity:0}.menu-toggle.is-active .menu-toggle__bar:nth-child(3){transform:rotate(-45deg)translate(5px,-5px)}@media(max-width:768px){.menu-toggle{display:flex}.nav{position:fixed;top:0;right:-100%;width:100%;height:100vh;height:100dvh;background-color:var(--color-bg);flex-direction:column;justify-content:center;align-items:center;gap:var(--space-md);padding-top:env(safe-area-inset-top,20px);padding-bottom:env(safe-area-inset-bottom,20px);overflow-y:auto;transition:right var(--transition-medium)}.nav.is-open{right:0}.nav__link{font-size:var(--text-lg)}.theme-toggle{margin-left:0}}main>:first-child{padding-top:calc(var(--space-lg) + var(--header-height))}.page-header+section,.page-lead+section{padding-top:0}.page-lead{padding-bottom:var(--space-md)}.page-lead__text{max-width:var(--measure)}.page-header{padding-bottom:var(--space-md)}.page-header__title{margin-bottom:var(--space-sm)}.page-header__subtitle{font-size:var(--text-base);color:var(--color-text-muted);max-width:var(--measure)}.cta{display:inline-flex;align-items:center;gap:var(--space-sm);font-size:var(--text-base);font-weight:700;color:var(--color-text);padding:var(--space-sm)0;border-bottom:2px solid var(--color-accent);text-decoration:none;transition:gap var(--transition-fast)}.cta:hover{gap:calc(var(--space-sm) + .5rem)}.cta svg{width:20px;height:20px;stroke:currentColor}.cta--invert{color:var(--color-accent-light);border-bottom-color:var(--color-accent-light)}.cta--invert:hover,.cta--invert:focus-visible{color:var(--color-on-invert)}.cta--invert:focus-visible{outline-color:var(--color-on-invert)}.social-links{display:flex;gap:var(--space-sm)}.social-links a{display:flex;align-items:center;justify-content:center;width:44px;height:44px;color:var(--color-text);border:1px solid var(--color-border);transition:color var(--transition-fast),border-color var(--transition-fast)}.social-links a:hover{color:var(--color-accent);border-color:var(--color-accent)}.social-links svg{width:20px;height:20px}.dated-list{list-style:none;padding:0;margin:0;max-width:calc(var(--dated-column,var(--rail)) + var(--space-lg) + var(--measure))}.dated-item{display:grid;grid-template-columns:var(--dated-column,var(--rail))minmax(0,var(--measure));gap:var(--space-lg);padding:var(--space-sm)0;border-bottom:1px solid var(--color-border)}.dated-item:last-child{border-bottom:none}.dated-item__date{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-xs);font-size:var(--text-sm);color:var(--color-text-muted);font-variant-numeric:tabular-nums;padding-top:.2rem}@media(max-width:1024px){.dated-item{grid-template-columns:1fr;gap:var(--space-xs)}.course__meta{flex-direction:row;align-items:center}.course__icon svg{margin-bottom:0}.research__theme-meta{margin-bottom:var(--space-sm)}}.home__content{display:grid;grid-template-columns:var(--rail)minmax(0,var(--measure));gap:var(--space-lg);align-items:start}@media(max-width:1024px){.home__content{grid-template-columns:1fr}}.home__image{position:relative}.home__photo{width:100%;height:auto;display:block}.home__credit{font-size:var(--text-sm);color:var(--color-text-muted)}.home__credit a{color:var(--color-text-muted)}.home__affiliations{margin-top:var(--space-md);padding-top:var(--space-md);border-top:1px solid var(--color-border)}.home__affiliations h2{font-size:var(--text-h3);color:var(--color-text-muted);margin-bottom:var(--space-sm)}.home__affiliations ul{list-style:none;display:flex;flex-wrap:wrap;gap:var(--space-sm)}.home__affiliations a{display:inline-flex;align-items:center;gap:.5rem;font-size:var(--text-sm);color:var(--color-accent);padding:.4rem .8rem;border:1px solid var(--color-border);transition:all var(--transition-fast)}.home__affiliations a:hover{background-color:rgba(var(--color-accent-rgb),.08);border-color:var(--color-accent);color:var(--color-accent-hover)}.home__social{margin-top:var(--space-md);flex-wrap:wrap;gap:var(--space-xs)}.teaching{padding-bottom:var(--space-lg)}.teaching__category{margin-bottom:var(--space-lg)}.teaching__category:last-child{margin-bottom:0}.teaching__category-title,.cv__section-title,.research__outlook h2,.legal__content h2{margin-bottom:var(--space-md)}.course__title a,.blog-list__all a{display:inline-block;min-height:24px}.research__theme-title{line-height:1.25;margin-bottom:var(--space-xs)}@media(min-width:1024.02px){.research__theme-title{font-size:var(--text-h3)}}.teaching__category-title::before,.research__theme-title::before,.cv__section-title::before,.research__outlook h2::before,.legal__content h2::before{content:"";display:block;width:14px;height:14px;margin-bottom:var(--space-xs);border-top:2px solid var(--color-highlight);border-left:2px solid var(--color-highlight)}.teaching__list{margin-bottom:var(--space-lg)}.course__meta{flex-flow:row wrap;align-items:center}.course__icon{flex-basis:100%}.course__icon svg{width:48px;height:48px;display:block}.course__language,.course__license{display:inline-block;font-size:var(--text-sm);line-height:1.3;padding:.25rem .5rem;border:1px solid transparent}.course__language{color:var(--color-accent-hover);background-color:rgba(var(--color-accent-rgb),.1)}.course__license{color:var(--color-text-muted);border-color:var(--color-border)}.course__title{line-height:1.4;margin-bottom:var(--space-xs)}.course__title a{color:var(--color-text);text-decoration:none;transition:color var(--transition-fast)}.course__title a:hover,.course__title a:focus-visible{color:var(--color-accent)}.course__description{font-size:var(--text-base);color:var(--color-text-muted);line-height:var(--line-body)}.teaching__footer{background-color:var(--color-surface-invert);color:var(--color-on-invert);padding:var(--space-xl)0}.teaching__footer-inner{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-md);align-items:start}@media(max-width:768px){.teaching__footer-inner{grid-template-columns:1fr}}.teaching__footer h3{color:var(--color-on-invert);margin-bottom:var(--space-sm)}.teaching__footer p{color:var(--color-on-invert-muted);font-size:var(--text-base);line-height:var(--line-body)}.teaching__footer a{color:var(--color-accent-light);transition:color var(--transition-fast)}.teaching__footer a:hover,.teaching__footer a:focus-visible{color:var(--color-on-invert)}.teaching__footer a:focus-visible,.teaching__footer button:focus-visible{outline-color:var(--color-on-invert)}.teaching__training .cta{margin-top:var(--space-md)}.research__theme{margin-bottom:var(--space-lg);padding:0;border-bottom:none}.research__theme-meta{display:block;position:sticky;top:calc(var(--header-height) + var(--space-sm));align-self:start}@media(max-width:1024px){.research__theme-meta{position:static}}.research__theme-count{font-size:var(--text-sm);color:var(--color-text-muted);font-variant-numeric:tabular-nums;line-height:var(--line-tight)}.research__theme-description{font-size:var(--text-base);color:var(--color-text-muted);max-width:var(--measure);margin-bottom:var(--space-md)}.research__outlook{margin-top:var(--space-lg)}.research__outlook p{font-size:var(--text-base);color:var(--color-text-muted);max-width:var(--measure)}.publications__list{list-style:none;padding:0;margin:0;max-width:var(--measure)}.publication{padding:var(--space-sm)0;border-bottom:1px solid var(--color-border)}.publication:last-child{border-bottom:none}.publication__citation{color:var(--color-text-muted);font-size:var(--text-base);line-height:var(--line-body)}.publication__citation em{color:var(--color-text)}.publication__links{display:inline-flex;gap:var(--space-sm);margin-left:var(--space-xs)}.publication__links a{display:inline-flex;align-items:center;min-height:24px;font-size:var(--text-sm);color:var(--color-accent);text-decoration:none;border-bottom:1px solid rgba(var(--color-accent-rgb),.4);transition:border-color var(--transition-fast)}.publication__links a:hover,.publication__links a:focus-visible{border-bottom-color:var(--color-accent)}.blog-cover{margin:0 0 var(--space-lg)}.blog-cover__link{display:block;padding:0;overflow:hidden;border:1px solid var(--color-border)}.blog-cover__link::after{display:none}.blog-cover__link:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}.blog-cover__image{display:block;width:100%;height:auto;aspect-ratio:40/21;object-fit:cover;background-color:var(--color-bg-alt);transition:transform var(--transition-medium)}.blog-cover__link:hover .blog-cover__image,.blog-cover__link:focus-visible .blog-cover__image{transform:scale(1.015)}.blog-cover__caption{margin-top:var(--space-xs);color:var(--color-text-muted);font-size:var(--text-sm)}.blog-cover--preview{margin-bottom:var(--space-md)}.blog-tag{display:inline-block;font-size:var(--text-sm);color:var(--color-accent);background-color:rgba(var(--color-accent-rgb),.08);padding:.35rem .6rem;min-height:24px;text-decoration:none;border:1px solid var(--color-border);transition:all var(--transition-fast)}.blog-tag:hover{background-color:rgba(var(--color-accent-rgb),.12);border-color:var(--color-accent);color:var(--color-accent-hover)}.blog-tag--active{background-color:rgba(var(--color-accent-rgb),.15);border-color:var(--color-accent);text-decoration:underline;text-underline-offset:3px}.post__tags{display:flex;flex-wrap:wrap;gap:var(--space-xs)}@media(min-width:1024.02px){.blog-list__posts .dated-item{grid-template-rows:auto 1fr}.post__meta{grid-column:1;grid-row:1}.post__tags{grid-column:1;grid-row:2;align-self:start;margin-top:var(--space-xs)}.post__body{grid-column:2;grid-row:1/span 2}}@media(max-width:1024px){.post__tags{margin-top:var(--space-sm)}}.post__title{font-size:var(--text-h2);margin-bottom:var(--space-xs)}.post__title a{color:var(--color-text);text-decoration:none;transition:color var(--transition-fast)}.post__title a:hover,.post__title a:focus-visible{color:var(--color-accent)}.post__excerpt{font-size:var(--text-base);color:var(--color-text-muted)}.blog-list__all{margin-top:var(--space-md)}.tag-filter{display:flex;flex-wrap:wrap;gap:var(--space-xs);max-width:var(--measure)}.blog-post__header{max-width:var(--measure-wide);margin-bottom:var(--space-md)}.blog-post__description{max-width:var(--measure)}.blog-post__layout{padding:0;border-bottom:none;align-items:start}.blog-post__footer{max-width:var(--measure);margin-left:calc(var(--rail) + var(--space-lg))}@media(max-width:1024px){.blog-post__footer{margin-left:0}}.blog-post__content img{height:auto}.blog-post__content .katex-display,.blog-post__content table{overflow-x:auto;overflow-y:hidden}.blog-post__header{margin-bottom:var(--space-md)}.blog-post__date{display:block;font-size:var(--text-sm);color:var(--color-text-muted)}.blog-post__title{margin-bottom:var(--space-sm)}.blog-post__description{font-size:var(--text-base);color:var(--color-text-muted);line-height:var(--line-body);max-width:var(--measure)}.blog-post__meta{position:sticky;top:calc(var(--header-height) + var(--space-sm));color:var(--color-text-muted);font-size:var(--text-sm)}.blog-post__author{color:var(--color-text)}.blog-post__meta .blog-post__tags{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin-top:var(--space-xs)}@media(max-width:1024px){.blog-post__meta{position:static;flex-direction:row;flex-wrap:wrap;align-items:center;gap:var(--space-xs)var(--space-sm)}}.blog-post__reading-time{display:block;font-size:var(--text-sm);color:var(--color-text-muted)}.blog-post__content{line-height:var(--line-body)}.blog-post__content h2{margin-top:var(--space-lg);margin-bottom:var(--space-sm)}.blog-post__content h3{margin-top:var(--space-md);margin-bottom:var(--space-xs)}.blog-post__content h4{margin-top:var(--space-md);margin-bottom:var(--space-xs)}.blog-post__content p{margin-bottom:1.5rem}.blog-post__content a{color:var(--color-accent)}.blog-post__content a:hover{color:var(--color-accent-hover)}.blog-post__content ul,.blog-post__content ol{margin-left:var(--space-md);margin-bottom:1.5rem}.blog-post__content li{margin-bottom:var(--space-xs)}.blog-post__content blockquote{margin:var(--space-md)0;padding:var(--space-sm)var(--space-md);border-left:3px solid var(--color-highlight);background-color:var(--color-bg-alt);color:var(--color-text-muted);font-style:italic}.blog-post__content pre{margin:var(--space-md)0;padding:var(--space-md);background-color:var(--color-bg-alt);border:1px solid var(--color-border);border-left:3px solid var(--color-highlight);white-space:pre-wrap;overflow-wrap:anywhere;font-size:var(--text-sm);line-height:var(--line-tight);-webkit-text-size-adjust:100%;text-size-adjust:100%}.blog-post__content code{font-size:.9em}.blog-post__content p code,.blog-post__content li code{background-color:var(--color-bg-alt);padding:.15rem .4rem;border:1px solid var(--color-border);font-size:.85em}.blog-post__content img{max-width:100%;height:auto;display:block;margin:var(--space-md)0}.blog-post__content table{width:100%;margin:var(--space-md)0;border-collapse:collapse}.blog-post__content th,.blog-post__content td{padding:var(--space-xs)var(--space-sm);border:1px solid var(--color-border);text-align:left}.blog-post__content th{background-color:var(--color-bg-alt);font-weight:700}.blog-post__content hr{margin:var(--space-lg)0;border:none;border-top:1px solid var(--color-border)}.blog-post__footer{margin-top:var(--space-xl);padding-top:var(--space-md);border-top:1px solid var(--color-border)}.blog-post__tags{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.blog-post__license{margin-top:var(--space-md);font-size:var(--text-sm);color:var(--color-text-muted)}.blog-post__nav{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-md);margin-top:var(--space-md);margin-bottom:var(--space-lg)}.blog-post__nav-prev,.blog-post__nav-next{display:flex;flex-direction:column;gap:.25rem;text-decoration:none;color:var(--color-text);padding:var(--space-sm);border:1px solid var(--color-border);transition:border-color var(--transition-fast)}.blog-post__nav-prev:hover,.blog-post__nav-next:hover{border-color:var(--color-accent)}.blog-post__nav-next{text-align:right;grid-column:2}.blog-post__nav-prev span,.blog-post__nav-next span{font-size:var(--text-sm);font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted)}.taxonomy__title{margin-bottom:var(--space-lg)}.taxonomy__list{list-style:none;display:flex;flex-wrap:wrap;gap:var(--space-sm)}.footer{padding:var(--space-lg)0;background-color:var(--color-bg);color:var(--color-text);border-top:1px solid var(--color-border)}.footer__inner{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--space-md)}@media(max-width:640px){.footer__inner{flex-direction:column;text-align:center}}.footer__brand{display:flex;flex-direction:column;gap:var(--space-xs)}.footer__copyright{font-size:var(--text-sm);color:var(--color-text-muted)}.footer__links{display:flex;align-items:baseline;gap:var(--space-md)}.footer__link{font-size:var(--text-sm);color:var(--color-accent);padding-top:.5rem;transition:color var(--transition-fast);line-height:1}.footer__separator{color:var(--color-text-muted)}.footer__built{font-size:var(--text-sm);color:var(--color-text-muted);padding:.5rem 0;line-height:1}.legal__layout{padding:0;border-bottom:none}.legal__meta{display:block}.legal__updated{line-height:var(--line-tight)}.legal__content{max-width:var(--measure)}.legal__content>:first-child{margin-top:0}.legal h2{margin-top:var(--space-lg)}.legal h3{margin-top:var(--space-md);margin-bottom:var(--space-xs)}.legal p,.legal li{color:var(--color-text-muted)}.legal ul{margin-left:var(--space-md);margin-bottom:var(--space-md)}.legal li{margin-bottom:var(--space-xs)}.legal a{color:var(--color-accent)}.legal__back{display:inline-flex;align-items:center;gap:.5rem;margin-top:var(--space-lg);font-weight:500;text-decoration:none}.legal__back svg{width:16px;height:16px}.error-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding-bottom:var(--space-xl)}.error-page__content{text-align:center;max-width:560px;margin:0 auto}.error-page__visual{margin-bottom:var(--space-lg)}.error-page__graph{width:100%;max-width:400px;height:auto}.error-page__curve{stroke-dasharray:800;stroke-dashoffset:800;animation:drawCurve 2s ease-out forwards}.error-page__dot{opacity:0;animation:fadeInDot .4s ease-out forwards}.error-page__dot--local{animation-delay:1.6s}.error-page__dot--global{animation-delay:2s}@keyframes drawCurve{to{stroke-dashoffset:0}}@keyframes fadeInDot{to{opacity:1}}.error-page__code{display:block;font-size:clamp(4rem,10vw,7rem);font-weight:700;line-height:1;color:var(--color-text);opacity:.12;margin-bottom:var(--space-sm)}.error-page__title{margin-bottom:var(--space-md)}.error-page__text{font-size:var(--text-base);color:var(--color-text-muted);line-height:var(--line-body);margin-bottom:var(--space-lg)}.bg{color:var(--color-text);background-color:var(--color-bg-alt)}.chroma{color:var(--color-text);background-color:var(--color-bg-alt)}.chroma .err{color:#a02400}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:rgba(var(--color-accent-rgb),.15)}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:var(--color-text-muted)}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:var(--color-text-muted)}.chroma .line{display:flex}.chroma .k,.chroma .kc,.chroma .kd,.chroma .kn,.chroma .kr{color:#2b3b40;font-weight:700}.chroma .kp{color:#3d545a}.chroma .kt{color:#3d545a;font-weight:700}.chroma .na{color:#3e686c}.chroma .nb{color:#52717a}.chroma .nc{color:#3d545a;font-weight:700}.chroma .no{color:#3e686c}.chroma .nd{color:#52717a;font-weight:700}.chroma .ni{color:#616168}.chroma .ne,.chroma .nf,.chroma .nl{color:#3d545a;font-weight:700}.chroma .nn{color:#616168}.chroma .nt{color:#52717a}.chroma .nv{color:#3e686c}.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .s2,.chroma .se,.chroma .sh,.chroma .si,.chroma .sx,.chroma .s1{color:#284446}.chroma .sd{color:#284446;font-style:italic}.chroma .sr{color:#52717a}.chroma .ss{color:#3e686c}.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo{color:#2b3b40}.chroma .o{color:var(--color-text);font-weight:700}.chroma .ow{color:#2b3b40;font-weight:700}.chroma .p{color:var(--color-text)}.chroma .c,.chroma .ch,.chroma .cm,.chroma .c1,.chroma .cpf{color:#6c6c73;font-style:italic}.chroma .cs{color:#6c6c73;font-weight:700;font-style:italic}.chroma .cp{color:#6c6c73;font-weight:700}.chroma .gd{color:#701900;background-color:#fbe4dc}.chroma .gd::before{content:"− "}.chroma .ge{font-style:italic}.chroma .gi{color:#284446;background-color:#e5eff0}.chroma .gi::before{content:"+ "}.chroma .gs{font-weight:700}.chroma .gu{color:#6c6c73}.chroma .gl{text-decoration:underline}[data-theme=dark] .chroma{color:var(--color-text);background-color:var(--color-bg-alt);border:1px solid var(--color-border)}[data-theme=dark] .chroma .err{color:#e4b169}[data-theme=dark] .chroma .hl{background-color:rgba(var(--color-accent-rgb),.2)}[data-theme=dark] .chroma .k,[data-theme=dark] .chroma .kc,[data-theme=dark] .chroma .kd,[data-theme=dark] .chroma .kn,[data-theme=dark] .chroma .kr{color:#f0d0a0;font-weight:700}[data-theme=dark] .chroma .kp{color:#f0d0a0}[data-theme=dark] .chroma .kt{color:#f0d0a0;font-weight:700}[data-theme=dark] .chroma .na{color:#8fbbbf}[data-theme=dark] .chroma .nb{color:#8fbbbf}[data-theme=dark] .chroma .nc{color:#f0d0a0;font-weight:700}[data-theme=dark] .chroma .no{color:#8fbbbf}[data-theme=dark] .chroma .nd{color:#e4b169;font-weight:700}[data-theme=dark] .chroma .ne,[data-theme=dark] .chroma .nf{color:#bfd8da;font-weight:700}[data-theme=dark] .chroma .nn{color:#b2b2b8}[data-theme=dark] .chroma .nt{color:#e4b169}[data-theme=dark] .chroma .nl{color:#e4b169;font-weight:700}[data-theme=dark] .chroma .nv{color:#8fbbbf}[data-theme=dark] .chroma .s,[data-theme=dark] .chroma .sa,[data-theme=dark] .chroma .sb,[data-theme=dark] .chroma .sc,[data-theme=dark] .chroma .dl,[data-theme=dark] .chroma .s2,[data-theme=dark] .chroma .se,[data-theme=dark] .chroma .sh,[data-theme=dark] .chroma .si,[data-theme=dark] .chroma .sx,[data-theme=dark] .chroma .s1{color:#bfd8da}[data-theme=dark] .chroma .sd{color:#bfd8da;font-style:italic}[data-theme=dark] .chroma .sr{color:#8fbbbf}[data-theme=dark] .chroma .ss{color:#8fbbbf}[data-theme=dark] .chroma .m,[data-theme=dark] .chroma .mb,[data-theme=dark] .chroma .mf,[data-theme=dark] .chroma .mh,[data-theme=dark] .chroma .mi,[data-theme=dark] .chroma .il,[data-theme=dark] .chroma .mo{color:#f0d0a0}[data-theme=dark] .chroma .o{color:var(--color-text);font-weight:700}[data-theme=dark] .chroma .ow{color:#f0d0a0;font-weight:700}[data-theme=dark] .chroma .c,[data-theme=dark] .chroma .ch,[data-theme=dark] .chroma .cm,[data-theme=dark] .chroma .c1,[data-theme=dark] .chroma .cpf{color:#b2b2b8;font-style:italic}[data-theme=dark] .chroma .cs{color:#b2b2b8;font-weight:700;font-style:italic}[data-theme=dark] .chroma .cp{color:#b2b2b8;font-weight:700}[data-theme=dark] .chroma .gd{color:#e4b169}[data-theme=dark] .chroma .gi{color:#bfd8da}.js .fade-in{opacity:0;transform:translateY(20px);transition:opacity var(--transition-slow),transform var(--transition-slow)}.js .fade-in.is-visible{opacity:1;transform:translateY(0)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:absolute;top:-100%;left:var(--space-sm);z-index:200;padding:var(--space-xs)var(--space-sm);background-color:var(--color-bg);color:var(--color-text);border:2px solid var(--color-accent);font-size:var(--text-sm);font-weight:700;text-decoration:none}.skip-link:focus{top:0;color:var(--color-text)}a:focus-visible,button:focus-visible,[role=button]:focus-visible{outline:2px solid var(--color-text);outline-offset:2px}.text-muted{color:var(--color-text-muted)}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.fade-in{opacity:1;transform:none}}.cv__section{margin-bottom:var(--space-md)}.cv__rows{list-style:none;padding:0;margin:0}.cv__entry-title{font-size:var(--text-base);margin:0}.cv__entry-org,.cv__entry-detail{font-size:var(--text-sm);color:var(--color-text-muted);margin:0}.cv__rows{max-width:var(--measure)}.cv__rows dt{font-size:var(--text-sm);color:var(--color-text-muted)}.cv__rows dd,.cv__rows p{font-size:var(--text-base);margin:0 0 var(--space-xs)}