:root{--background:#f7f7f4;--surface:#fff;--text:#345;--muted:#6a7686;--soft:#e9eeee;--link:#087a51;--link-hover:#345;--accent:#5bcf80;--highlight:#faf46a;--marker:#d97857;--code:#17202a;--site-width:1040px;--reading-width:720px;--font:"Avenir Next", Avenir, "Helvetica Neue", Arial, sans-serif}*{box-sizing:border-box}html{background:var(--background);scroll-behavior:smooth}body{min-width:320px;color:var(--text);background:var(--background);font-family:var(--font);text-rendering:optimizelegibility;margin:0;font-size:16px;line-height:1.65}a{color:var(--link);text-underline-offset:.18em;text-decoration-thickness:1px}a:hover{color:var(--link-hover)}img,svg{max-width:100%;display:block}h1,h2,h3,h4,p{margin-top:0}h1,h2,h3,h4{line-height:1.2}h1{letter-spacing:-.045em;font-size:clamp(2.7rem,6vw,4.2rem)}h2{letter-spacing:-.025em;font-size:clamp(1.55rem,3vw,2rem)}h3{letter-spacing:-.012em;font-size:1.2rem}::selection{color:var(--text);background:var(--highlight)}:focus-visible{outline:3px solid var(--accent);outline-offset:4px}.site-shell{width:min(100% - 40px, var(--site-width));min-height:100vh;margin-inline:auto}.skip-link{z-index:20;color:#fff;background:var(--text);padding:.6rem .9rem;position:fixed;top:1rem;left:1rem;transform:translateY(-180%)}.skip-link:focus{transform:translateY(0)}.site-header{justify-content:space-between;align-items:center;gap:2rem;min-height:78px;display:flex}.site-brand{color:#263746;letter-spacing:-.025em;font-size:1.08rem;font-weight:700;text-decoration:none}.site-brand:hover{color:var(--link)}.site-header nav ul,.site-footer ul,.post-card__tags,.article-tags,.contact-card ul{margin:0;padding:0;list-style:none;display:flex}.site-header nav ul{gap:1.5rem}.site-header nav a{color:var(--muted);font-size:.88rem;text-decoration:none;display:inline-block;position:relative}.site-header nav a:hover,.site-header nav a[aria-current=page]{color:var(--link)}.site-header nav a[aria-current=page]:after{background:var(--marker);content:"";height:3px;position:absolute;bottom:-.28rem;left:0;right:0}.site-footer{color:var(--muted);grid-template-columns:1fr auto;align-items:end;gap:2rem;margin-top:100px;padding:28px 0 42px;font-size:.82rem;display:grid}.site-footer p{margin-bottom:0}.site-footer .footer-name{color:var(--text);font-weight:650}.site-footer ul{flex-wrap:wrap;gap:1rem}.eyebrow,.mono-label{color:var(--muted);font-size:.76rem}.section-pad{padding-block:64px}.home-intro{grid-template-columns:minmax(0,680px) 132px;justify-content:space-between;align-items:start;gap:clamp(3rem,9vw,7rem);max-width:900px;padding:clamp(76px,10vw,110px) 0 38px;display:grid}.home-intro h1{margin-bottom:.4rem}.home-intro p{max-width:650px;color:var(--muted)}.home-intro .home-intro__role{color:var(--text);margin-bottom:2rem;font-size:1.02rem}.home-intro__role span{background:var(--highlight);padding:.12em .24em}.home-intro .home-intro__lead{color:var(--text);font-size:clamp(1.08rem,2vw,1.24rem);line-height:1.55}.home-intro__links{flex-wrap:wrap;gap:1.25rem;margin:1.8rem 0 0;font-size:.88rem;display:flex}.home-intro__photo{object-fit:cover;object-position:center;border-radius:50%;width:132px;height:132px}.home-section{max-width:860px;padding:38px 0}.home-section__heading{justify-content:space-between;align-items:baseline;gap:2rem;margin-bottom:2rem;display:flex}.home-section__heading h2,.home-elsewhere h2{margin:0;font-size:1.4rem}.home-section__heading h2:after,.home-elsewhere h2:after{background:var(--marker);content:"";width:28px;height:3px;margin-top:.4rem;display:block}.home-section__heading>a,.home-section__heading>p{color:var(--muted);margin:0;font-size:.84rem}.project-list{gap:1.8rem;margin:0;padding:0;list-style:none;display:grid}.project-list h3{margin-bottom:.25rem;font-size:1.1rem}.project-list h3 a:after{color:var(--muted);content:"↗";margin-left:.35rem;font-size:.72em}.project-list p,.home-elsewhere p,.archive-note{max-width:650px;color:var(--muted);margin:0;font-size:.9rem}.home-elsewhere{padding-bottom:10px}.home-elsewhere h2{margin-bottom:1rem}.link-list{margin:0;padding:0;list-style:none}.link-list li+li{margin-top:1rem}.link-list a{color:var(--text)}.link-list span{color:var(--muted);margin-left:1rem}.page-intro{max-width:760px;padding:76px 0 46px}.page-intro h1{margin-bottom:1rem}.page-intro:not(.page-intro--compact) h1:after{background:var(--marker);content:"";width:52px;height:6px;margin-top:.4rem;display:block}.page-intro>p:last-child{max-width:660px;color:var(--muted);margin-bottom:0;font-size:1.03rem}.page-intro--compact{padding-bottom:18px}.tag-nav{max-width:820px;color:var(--muted);margin-bottom:38px;font-size:.84rem}.tag-nav summary{width:max-content;color:var(--link);cursor:pointer}.tag-nav nav{flex-wrap:wrap;gap:.55rem 1rem;padding-top:1rem;display:flex}.tag-nav a{color:var(--muted)}.archive{max-width:900px;padding:12px 0 48px}.year-group{grid-template-columns:82px minmax(0,1fr);gap:2rem;margin-bottom:54px;display:grid}.year-group>h2{color:var(--link);letter-spacing:0;margin:.1rem 0 0;font-size:1rem;font-weight:600}.archive-list{gap:2rem;display:grid}.post-card{grid-template-columns:130px minmax(0,1fr);gap:1.5rem;display:grid}.post-card__meta{color:var(--muted);padding-top:.16rem;font-size:.75rem}.post-card h3{margin-bottom:.35rem;font-size:1.13rem}.post-card h3 a{color:var(--text)}.post-card h3 a:hover{color:var(--link)}.post-card__body>p{max-width:650px;color:var(--muted);margin-bottom:.55rem;font-size:.86rem;line-height:1.55}.post-card__tags,.article-tags{flex-wrap:wrap;gap:.3rem .7rem}.post-card__tags a,.article-tags a{color:var(--muted);font-size:.72rem}.about-grid{grid-template-columns:minmax(0,650px) 250px;justify-content:space-between;gap:clamp(3rem,9vw,7rem);padding:10px 0 62px;display:grid}.about-grid h2{margin-bottom:1.1rem;font-size:1.35rem}.prose-copy{color:var(--muted)}.prose-copy p{max-width:650px}.contact-card{background:var(--surface);align-self:start;padding:22px}.contact-card h2{margin-bottom:.7rem;font-size:1.08rem}.contact-card>p{color:var(--muted);overflow-wrap:anywhere;margin-bottom:.45rem;font-size:.78rem}.contact-card ul{flex-direction:column;gap:.35rem;margin-top:1.4rem;font-size:.84rem}.timeline-section{max-width:820px;padding:48px 0}.section-heading{justify-content:space-between;align-items:baseline;gap:2rem;margin-bottom:2rem;display:flex}.section-heading h2{margin:0;font-size:1.35rem}.text-link{font-size:.82rem}.timeline{gap:1.35rem;margin:0;padding:0;list-style:none;display:grid}.timeline li{grid-template-columns:120px 1fr;gap:1.5rem;display:grid}.timeline h3{margin-bottom:.1rem;font-size:.98rem}.timeline p{color:var(--muted);margin:0;font-size:.84rem}.timeline__year{color:var(--link);padding-top:.1rem;font-size:.76rem}.education{grid-template-columns:120px 1fr;gap:1.5rem;max-width:820px;padding:48px 0;display:grid}.education>h2{margin:0;font-size:1.2rem}.education h3{margin:.3rem 0;font-size:1.05rem}.education div p{color:var(--muted);font-size:.84rem}.back-link{color:var(--muted);margin-bottom:1.8rem;font-size:.82rem;display:inline-block}.article-header{max-width:800px;margin-inline:auto;padding:58px 0 36px}.article-header__meta{color:var(--muted);flex-wrap:wrap;gap:1rem;margin-bottom:.9rem;font-size:.76rem;display:flex}.article-header h1{text-wrap:balance;max-width:780px;margin-bottom:1.25rem;font-size:clamp(2.35rem,5vw,3.35rem);line-height:1.08}.article-deck{max-width:710px;color:var(--muted);font-size:1.08rem;line-height:1.58}.article-tags{margin-top:1.35rem}.article-cover{margin:2.3rem 0 0}.article-cover img{width:100%;height:auto}.article-layout{max-width:var(--reading-width);margin-inline:auto;padding:36px 0 52px;display:block}.article-prose{min-width:0;font-size:1.04rem;line-height:1.78}.article-prose>:first-child{margin-top:0}.article-prose h2,.article-prose h3,.article-prose h4{scroll-margin-top:2rem}.article-prose h2{margin:3.2rem 0 1rem;font-size:1.75rem}.article-prose h3{margin:2.5rem 0 .75rem;font-size:1.3rem}.article-prose h4{margin:2rem 0 .65rem;font-size:1.08rem}.article-prose img{width:auto;height:auto;margin:2.4rem auto}.article-prose figure{margin:2.4rem 0}.article-prose figure>img,.article-prose figure>a>img{margin-block:0}.article-prose figcaption{color:var(--muted);text-align:center;margin-top:.6rem;font-size:.75rem}.article-prose blockquote{border-left:4px solid var(--accent);color:var(--muted);margin:2.2rem 0;padding-left:1.25rem}.article-prose pre{background:var(--code);max-width:100%;margin:2.2rem 0;padding:1.15rem;font-size:.84rem;line-height:1.6;overflow-x:auto}.article-prose :not(pre)>code{background:var(--surface);padding:.1rem .28rem;font-size:.84em}.article-prose table{border-collapse:collapse;width:100%;margin:2.2rem 0;font-size:.84rem;display:block;overflow-x:auto}.article-prose th,.article-prose td{border-bottom:1px solid var(--soft);text-align:left;padding:.65rem}.article-prose hr{border:0;border-top:3px solid var(--accent);width:70px;margin:3.5rem auto}.article-origin{max-width:var(--reading-width);color:var(--muted);margin:auto;padding:0 0 48px;font-size:.78rem}.article-pagination{grid-template-columns:1fr 1fr;gap:3rem;max-width:820px;margin-inline:auto;padding:36px 0;display:grid}.article-pagination>a{gap:.3rem;text-decoration:none;display:grid}.article-pagination span{color:var(--muted);font-size:.72rem}.article-pagination strong{font-size:.92rem}.article-pagination__next{text-align:right;justify-items:end}.button-row{flex-wrap:wrap;gap:.8rem;display:flex}.button{color:var(--text);padding:.6rem .85rem;font-size:.86rem;display:inline-block}.button--primary{color:var(--text);background:var(--highlight);text-decoration:none}.not-found{flex-direction:column;justify-content:center;align-items:flex-start;min-height:65vh;padding:70px 0;display:flex}.not-found h1{margin-bottom:1rem}.not-found>p{max-width:600px;color:var(--muted)}@media (width<=760px){.site-header nav ul{gap:1rem}.home-intro{grid-template-columns:1fr;gap:2rem}.home-intro__photo{grid-row:1;width:96px;height:96px}.home-section__heading{flex-direction:column;align-items:flex-start;gap:.45rem}.year-group{grid-template-columns:1fr;gap:1.2rem}.about-grid{grid-template-columns:1fr}.contact-card{max-width:360px}}@media (width<=540px){.site-shell{width:min(100% - 30px, var(--site-width))}.site-header{min-height:68px}.site-header nav ul{gap:.8rem}.site-header nav a{font-size:.79rem}.site-footer{grid-template-columns:1fr;gap:1rem}.post-card,.timeline li,.education{grid-template-columns:1fr;gap:.35rem}.section-heading{flex-direction:column;align-items:flex-start;gap:.7rem}.article-header h1{font-size:clamp(2.15rem,11vw,3rem)}.article-pagination{grid-template-columns:1fr}.article-pagination__next{text-align:left;justify-items:start}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}@media print{.site-header,.site-footer,.article-pagination,.button-row{display:none}body{color:#000;background:#fff}.article-layout{display:block}}
