:root{color-scheme:dark;--font-reading: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--font-ui: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: SFMono-Regular, "SF Mono", ui-monospace, Menlo, Monaco, Consolas, monospace;--bg: #1b1a19;--text-copy: #e8e5df;--text-heading: #f4f1eb;--text-secondary: #cbc6be;--text-nav: #aaa59e;--surface-subtle: #242321;--code-background: #242321;--code-inline: #e06c5f;--divider: #3b3936;--line-subtle: color-mix(in srgb, var(--text-copy) 18%, transparent);--focus-color: #8f80ea;--size-body: 17px;--size-ui: 14px;--size-meta: 13px;--leading-body: 1.6;--page-pad: clamp(1.25rem, 3.4vw, 3.25rem);--page-pad-top: clamp(2.5rem, 7vw, 6.5rem);--content-width: 600px}*,*:before,*:after{box-sizing:border-box}html{background:var(--bg)}body{margin:0;background:var(--bg);color:var(--text-copy);font-family:var(--font-reading);font-size:var(--size-body);line-height:var(--leading-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:focus-visible{outline:2px solid var(--focus-color);outline-offset:2px;border-radius:2px}.site-shell{min-height:100vh;padding:var(--page-pad-top) var(--page-pad) var(--page-pad);container-type:inline-size}.content-frame{position:relative;width:min(100%,var(--content-width));margin-inline:auto;overflow-wrap:break-word}.content-frame>:last-child{margin-bottom:0}.site-title,.content-title{margin:0;color:var(--text-heading);font-family:var(--font-reading);font-weight:600;letter-spacing:-.02em;text-wrap:balance}.site-title{margin-bottom:.95em;font-size:clamp(2.2rem,3.5vw,2.65rem);line-height:1.15}.site-title-at{display:inline-block;position:relative;top:.015em;margin-right:.015em;font-size:1.1em;line-height:0}.content-frame a.site-title-link{color:var(--text-heading);text-decoration:none;transition:color .3s ease-in-out}.content-frame a.site-title-link:hover,.content-frame a.site-title-link:focus-visible{color:var(--text-secondary)}.content-title{font-size:clamp(2.2rem,3.5vw,2.65rem);line-height:1.15}.content-title:has(+.article-meta){margin-bottom:12px;line-height:1.1}.section-heading{margin:0 0 1.2rem;color:var(--text-heading);font-family:var(--font-reading);font-size:1.45rem;font-weight:600;line-height:1.4;letter-spacing:-.02em}.prose-heading{margin:2.2rem 0 1rem;color:var(--text-heading);font-family:var(--font-reading);font-weight:600;line-height:1.4;letter-spacing:-.02em}.prose-heading--2{font-size:1.45rem}.prose-heading--3{font-size:1.2rem}p{margin:0 0 1.45rem}.content-frame a{color:var(--text-nav);text-decoration-line:underline;text-decoration-color:color-mix(in srgb,var(--text-nav) 30%,transparent);text-decoration-thickness:auto;text-decoration-skip-ink:auto;transition:color .3s ease-in-out,text-decoration-color .3s ease-in-out}.content-frame a:hover{color:var(--text-secondary);text-decoration-color:color-mix(in srgb,var(--text-secondary) 30%,transparent)}blockquote{margin:0 0 1.45rem;padding-left:1.15rem;border-left:1px solid var(--line-subtle);color:var(--text-secondary);font-style:italic}blockquote p:last-child{margin-bottom:0}blockquote cite{display:block;margin-top:.5rem;color:var(--text-nav);font-family:var(--font-ui);font-size:var(--size-meta);font-style:normal}hr{height:1px;margin:calc(8px + 1rem) 0;border:0;background:var(--divider)}pre{margin:0 0 1.333rem;padding:1rem 2rem 1rem 1rem;border-radius:.45rem;background:var(--code-background);font-family:var(--font-mono);font-size:13px;line-height:1.4;overflow-x:auto}pre code{font:inherit}code:not(pre code){padding:0 .2rem;color:var(--code-inline);font-family:var(--font-mono);font-size:.9em}.bio-section{margin-bottom:3.25rem}.bio-label{margin:0 0 1.35rem;padding-bottom:.55rem;border-bottom:1px solid var(--line-subtle);color:var(--text-nav);font-family:var(--font-ui);font-size:var(--size-ui);line-height:1.4;letter-spacing:.01em}.notes-list{columns:2;column-gap:2.5rem;margin:.8em 0 0;padding-left:1.1em;list-style:square}.notes-list li{break-inside:avoid;margin-bottom:.2rem;padding-left:.15em}.notes-list li::marker{color:var(--text-nav)}@container (max-width: 32rem){.notes-list{columns:1}}.prose-list{margin:0 0 1.45rem;padding-left:1.1em;list-style:square}.prose-list li{margin-bottom:.2rem;padding-left:.15em}.prose-list li::marker{color:var(--text-nav)}.blogs-list{margin-top:.85em;border-top:1px solid var(--line-subtle)}.blogs-list .blog-row,.blogs-list .blog-row:hover{text-decoration:none}.blogs-list .blog-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:1.25rem;padding:.72em 0;border-bottom:1px solid var(--line-subtle);color:var(--text-copy);text-decoration:none}.blogs-list .blog-row:hover{color:var(--text-copy)}.blog-row time{color:var(--text-nav);font-family:var(--font-ui);font-size:var(--size-ui);font-variant-numeric:lining-nums tabular-nums;letter-spacing:0;white-space:nowrap}@media(hover:hover)and (pointer:fine){.blogs-list .blog-row{transition:opacity .3s ease-in-out}.blogs-list:hover .blog-row{opacity:.8}.blogs-list:hover .blog-row:hover{opacity:1}}.project-row{padding:.9em 0}.project-body{display:flex;flex-direction:column;gap:.15rem;min-width:0}.project-name{color:var(--text-copy);line-height:1.35}.project-link-mark{display:inline-block;margin-left:.3em;font-family:var(--font-ui);font-size:.78em;line-height:1;opacity:.55}.project-summary{color:var(--text-nav);font-family:var(--font-ui);font-size:var(--size-ui);line-height:1.45;text-wrap:pretty}.content-title:has(+.project-lead){margin-bottom:14px;line-height:1.1}.project-lead{margin-bottom:1.9rem;color:var(--text-secondary);font-size:1.1rem;line-height:1.5;text-wrap:pretty}.project-facts{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);gap:.55rem 1.6rem;margin:0 0 2.8rem;padding:1.15rem 0;border-top:1px solid var(--line-subtle);border-bottom:1px solid var(--line-subtle);font-family:var(--font-ui);font-size:var(--size-ui);line-height:1.45}.project-facts dt{color:var(--text-nav)}.project-facts dd{margin:0;color:var(--text-copy)}.project-links{display:flex;flex-wrap:wrap;gap:.35rem 1.15rem}.home-section{margin-bottom:3.25rem}.section-more{margin:1.4rem 0 0;font-family:var(--font-ui);font-size:var(--size-ui)}.article-meta{display:flex;align-items:center;gap:.45rem;margin:0 0 2.4rem;color:var(--text-nav);font-family:var(--font-ui);font-size:var(--size-meta);line-height:1.35}.article-meta-avatar{flex:0 0 auto;width:20px;height:20px;border:1px solid var(--line-subtle);border-radius:9999px;object-fit:cover}.article-meta-details{display:flex;align-items:baseline;gap:.4rem;margin:0;letter-spacing:-.005em}.back-link{display:inline-block;margin-bottom:2.2rem;font-family:var(--font-ui);font-size:var(--size-meta)}.site-footer{display:flex;flex-wrap:wrap;align-items:center;gap:1rem;margin-top:4rem;padding-top:1.1rem;border-top:1px solid var(--line-subtle);color:var(--text-nav);font-family:var(--font-ui);font-size:var(--size-meta)}.site-footer nav{display:flex;gap:1rem}.page{position:relative;width:min(100%,680px);margin-inline:auto;overflow-wrap:break-word}.page a{color:var(--text-nav);text-decoration-line:underline;text-decoration-color:color-mix(in srgb,var(--text-nav) 30%,transparent);text-decoration-skip-ink:auto;transition:color .3s ease-in-out,text-decoration-color .3s ease-in-out}.page a:hover{color:var(--text-secondary);text-decoration-color:color-mix(in srgb,var(--text-secondary) 30%,transparent)}.site-header{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;padding-bottom:.7rem;margin-bottom:clamp(1.75rem,4vw,2.75rem);border-bottom:1px solid var(--line-subtle);font-family:var(--font-ui);font-size:var(--size-ui)}.page a.site-header-mark{color:var(--text-heading);text-decoration:none;letter-spacing:-.01em}.page a.site-header-mark:hover{color:var(--text-secondary)}.site-header-at{opacity:.65}.site-header nav{display:flex;gap:1.4rem}.page .site-header nav a{text-decoration:none}.page .site-header nav a.is-active{color:var(--text-copy)}.hero{position:relative;margin-bottom:clamp(3rem,6vw,4.5rem)}.eyebrow{margin:0 0 .75rem;color:var(--text-nav);font-family:var(--font-ui);font-size:12px;letter-spacing:.14em;text-transform:uppercase}.hero-name{margin:0 0 1.6rem;color:var(--text-heading);font-family:var(--font-reading);font-size:clamp(2.4rem,5.6vw,3.6rem);font-weight:600;line-height:1.06;letter-spacing:-.028em;text-wrap:balance}.hero-bio{max-width:33rem}.hero-bio p:last-child{margin-bottom:0}.hero-links{display:flex;flex-wrap:wrap;gap:1.3rem;margin-top:1.9rem;font-family:var(--font-ui);font-size:var(--size-ui)}.section-label{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin-bottom:1.4rem}.section-label-title{display:flex;align-items:baseline;gap:.75rem;margin:0;color:var(--text-heading);font-family:var(--font-reading);font-size:1.45rem;font-weight:600;line-height:1.3;letter-spacing:-.02em}.section-label-action{flex:0 0 auto;font-family:var(--font-ui);font-size:var(--size-meta)}.page .section-label-action a{text-decoration:none}.page .section-label-action a:hover{text-decoration:underline}.section-intro{max-width:33rem;margin-top:-.4rem;color:var(--text-nav)}.home-section:last-of-type{margin-bottom:0}.page>.content-frame{width:100%;margin-inline:0}.page-head{position:relative;margin-bottom:clamp(2rem,4vw,2.75rem)}.page-head .content-title{margin-bottom:.6rem}.page .back-link{display:inline-block;margin-bottom:2rem;font-family:var(--font-ui);font-size:var(--size-meta);text-decoration:none}.page .back-link:hover{text-decoration:underline}.note-summary{margin:-.6rem 0 2.2rem;color:var(--text-nav);font-family:var(--font-ui);font-size:var(--size-ui)}.notfound{position:relative;padding-top:clamp(3rem,12vh,7rem)}.lineart-decor{position:absolute;pointer-events:none;-webkit-user-select:none;user-select:none;opacity:1;z-index:0;color:#fff;overflow:visible}.lineart-decor img,.lineart-decor svg{display:block;width:100%;height:100%}.lineart-decor--top-right{top:-2rem;right:-4rem}.lineart-decor--bottom-left{bottom:-1rem;left:-4rem}.lineart-decor--top-left{top:-2rem;left:-4rem}.lineart-decor--bottom-right{bottom:-1rem;right:-4rem}.lineart-decor--flower{width:220px;height:220px}.lineart-decor--flower3{width:280px;height:280px}.lineart-decor--flower.lineart-decor--top-right{transform:rotate(0)}.lineart-decor--flower.lineart-decor--bottom-left{transform:rotate(180deg)}.lineart-decor--flower.lineart-decor--top-left{transform:scaleX(-1)}.lineart-decor--flower.lineart-decor--bottom-right{transform:rotate(180deg) scaleX(-1)}@media(max-width:480px){.lineart-decor{display:none}}
