:root{--font-serif:"Source Serif 4", Charter, "Bitstream Charter", "Sitka Text", Cambria, Georgia, serif;--font-sans:system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;--text-body:clamp(1.125rem, 1.06rem + 0.3vw, 1.25rem);--leading-body:1.65;--measure:680px;--wide:1040px;--gallery:1280px;--page:728px;--gutter:clamp(1rem, 4vw, 1.5rem);--header-height:4rem;--radius:6px;--bg:#ffffff;--bg-soft:#f7f6f3;--bg-code:#f5f4f0;--text:#242424;--text-muted:#6b6b6b;--text-faint:#8f8f8f;--border:#e9e7e3;--accent:#1a7f5a;--header-bg:rgb(255 255 255 / 0.86);--selection:rgb(26 127 90 / 0.18)}[data-theme=dark]{--bg:#121314;--bg-soft:#1b1c1e;--bg-code:#1c1d20;--text:#e8e6e3;--text-muted:#a8a5a0;--text-faint:#7d7b77;--border:#2b2c2f;--accent:#5cc79a;--header-bg:rgb(18 19 20 / 0.86);--selection:rgb(92 199 154 / 0.25)}@media(prefers-color-scheme:dark){:root:not([data-theme]){--bg:#121314;--bg-soft:#1b1c1e;--bg-code:#1c1d20;--text:#e8e6e3;--text-muted:#a8a5a0;--text-faint:#7d7b77;--border:#2b2c2f;--accent:#5cc79a;--header-bg:rgb(18 19 20 / 0.86);--selection:rgb(92 199 154 / 0.25)}}*,*::before,*::after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--header-height) + 1rem)}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{min-height:100vh;display:flex;flex-direction:column;background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:1rem;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;transition:background-color .2s ease,color .2s ease}main{flex:1}img,svg,video,picture{display:block;max-width:100%;height:auto}a{color:inherit}button{font:inherit;color:inherit}::selection{background:var(--selection)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}.skip-link{position:absolute;left:var(--gutter);top:-100px;z-index:200;padding:.5rem 1rem;background:var(--text);color:var(--bg);border-radius:var(--radius);text-decoration:none}.skip-link:focus{top:.75rem}.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.container{width:min(var(--page),100% - 2 * var(--gutter));margin-inline:auto}.flow-grid{display:grid;grid-template-columns:[full-start] minmax(var(--gutter),1fr) [wide-start] minmax(0,calc((var(--wide) - var(--measure))/2)) [content-start] min(var(--measure),100% - 2 * var(--gutter)) [content-end] minmax(0,calc((var(--wide) - var(--measure))/2)) [wide-end] minmax(var(--gutter),1fr) [full-end]}.flow-grid>*{grid-column:content}.flow-grid>.wide{grid-column:wide}.flow-grid>.full{grid-column:full}.site-header{position:sticky;top:0;z-index:50;background:var(--header-bg);-webkit-backdrop-filter:saturate(180%)blur(12px);backdrop-filter:saturate(180%)blur(12px);border-bottom:1px solid var(--border)}.site-header__inner{display:flex;align-items:center;gap:1.5rem;width:min(var(--wide),100% - 2 * var(--gutter));min-height:var(--header-height);margin-inline:auto}.site-title{font-family:var(--font-serif);font-size:1.375rem;font-weight:700;letter-spacing:-.015em;text-decoration:none;white-space:nowrap}.site-nav{margin-left:auto}.site-nav ul{display:flex;gap:1.75rem;padding:0;list-style:none}.site-nav a{position:relative;color:var(--text-muted);font-size:.9375rem;text-decoration:none;transition:color .15s ease}.site-nav a:hover,.site-nav a[aria-current=page]{color:var(--text)}.site-nav a[aria-current=page]::after{content:"";position:absolute;left:0;right:0;bottom:-.4rem;height:2px;border-radius:1px;background:var(--accent)}.theme-toggle{display:grid;place-items:center;width:2.25rem;height:2.25rem;padding:0;border:0;border-radius:50%;background:0 0;color:var(--text-muted);cursor:pointer;transition:background-color .15s ease,color .15s ease}.theme-toggle:hover{background:var(--bg-soft);color:var(--text)}.theme-toggle .icon-moon{display:none}[data-theme=dark] .theme-toggle .icon-sun{display:none}[data-theme=dark] .theme-toggle .icon-moon{display:block}@media(max-width:640px){.site-header__inner{flex-wrap:wrap;gap:0 1rem}.theme-toggle{margin-left:auto}.site-nav{order:3;width:100%;margin:0;overflow-x:auto;scrollbar-width:none}.site-nav ul{gap:1.5rem;padding-bottom:.85rem}.site-nav a[aria-current=page]::after{bottom:-.3rem}}.site-footer{margin-top:6rem;border-top:1px solid var(--border);color:var(--text-muted);font-size:.875rem}.site-footer__inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem 2rem;width:min(var(--wide),100% - 2 * var(--gutter));margin-inline:auto;padding-block:2.5rem}.site-footer__links{display:flex;flex-wrap:wrap;gap:1.25rem;padding:0;list-style:none}.site-footer__links a{text-decoration:none}.site-footer__links a:hover{color:var(--text)}.reading-progress{display:none}@supports(animation-timeline:scroll()){.reading-progress{display:block;position:fixed;inset:0 0 auto 0;z-index:60;height:2px;background:var(--accent);transform-origin:0 50%;animation:reading-progress linear both;animation-timeline:scroll(root)}@keyframes reading-progress{from{transform:scaleX(0)}to{transform:scaleX(1)}}}.article__header{padding-top:clamp(2.5rem,6vw,4.5rem)}.kicker{justify-self:start;margin-bottom:1rem;color:var(--accent);font-size:.8125rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;text-decoration:none}.kicker:hover{text-decoration:underline;text-underline-offset:.2em}.article__title{font-size:clamp(2rem,1.4rem + 2.6vw,2.75rem);font-weight:700;line-height:1.16;letter-spacing:-.022em;text-wrap:balance}.article__subtitle{margin-top:.85rem;color:var(--text-muted);font-size:clamp(1.1875rem,1.1rem + .4vw,1.375rem);line-height:1.45;text-wrap:pretty}.byline{display:flex;align-items:center;gap:.85rem;margin-top:2rem;padding-block:1.25rem;border-block:1px solid var(--border)}.byline__name{font-size:.9375rem;font-weight:600;text-decoration:none}.byline__name:hover{text-decoration:underline;text-underline-offset:.2em}.byline__meta{display:flex;flex-wrap:wrap;gap:.4rem;color:var(--text-muted);font-size:.875rem}.avatar{flex:none;width:var(--size,44px);height:var(--size,44px);border-radius:50%;object-fit:cover}.avatar--initials{display:grid;place-items:center;background:var(--text);color:var(--bg);font-family:var(--font-serif);font-size:calc(var(--size,44px) * .4);font-weight:600;letter-spacing:.02em}.article__hero{width:min(var(--wide),100%);margin:clamp(2rem,5vw,3rem)auto 0}.article__hero img{width:100%}@media(min-width:1040px){.article__hero img{border-radius:var(--radius)}}.prose{padding-top:clamp(2rem,5vw,3rem);font-family:var(--font-serif);font-size:var(--text-body);line-height:var(--leading-body);font-optical-sizing:auto;overflow-wrap:break-word}.prose>*+*{margin-top:1.5em}.prose p{text-wrap:pretty}.prose h2,.prose h3,.prose h4{position:relative;font-family:var(--font-sans);font-weight:700;letter-spacing:-.015em;text-wrap:balance}.prose h2{margin-top:2.2em;font-size:1.5em;line-height:1.25}.prose h3{margin-top:1.9em;font-size:1.2em;line-height:1.3}.prose h4{margin-top:1.8em;font-size:1em}.prose :is(h2,h3,h4)+*{margin-top:.6em}.heading-anchor{margin-left:.25em;color:var(--text-faint);font-weight:400;text-decoration:none;opacity:0;transition:opacity .15s ease}.prose :is(h2,h3,h4):hover .heading-anchor,.heading-anchor:focus-visible{opacity:1}.prose a{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.18em;transition:color .15s ease,text-decoration-color .15s ease}.prose a:hover{color:var(--accent)}.prose strong{font-weight:700}.prose ul,.prose ol{padding-left:1.6em}.prose li+li{margin-top:.45em}.prose li>ul,.prose li>ol{margin-top:.45em}.prose li::marker{color:var(--text-muted)}.prose hr{height:auto;margin-top:2.75em;border:0;color:var(--text-muted);text-align:center}.prose hr::before{content:"···";font-size:1.75em;letter-spacing:.6em;line-height:1}.prose blockquote{padding-left:1.25em;border-left:3px solid var(--text);font-style:italic}.prose blockquote>*+*{margin-top:1em}.prose figure img{max-width:100%;margin-inline:auto}.prose figure.wide img,.prose figure.full img{width:100%}.prose>:is(figure.wide,figure.full,.pullquote,.quote-block,.gallery-embed){margin-top:2.5em}.prose>:is(figure.wide,figure.full,.pullquote,.quote-block,.gallery-embed,hr)+*{margin-top:2.5em}.prose figure.full img{border-radius:0}.prose figure:not(.full) img{border-radius:4px}.prose figcaption,.article__hero figcaption{margin-top:.75rem;padding-inline:var(--gutter);color:var(--text-muted);font-family:var(--font-sans);font-size:.875rem;line-height:1.5;text-align:center}.prose code{padding:.15em .35em;border-radius:4px;background:var(--bg-code);font-family:var(--font-mono);font-size:.82em}.prose pre{overflow-x:auto;padding:1.25rem 1.5rem;border-radius:var(--radius);background:var(--bg-code);font-size:.8em;line-height:1.6;tab-size:2}.prose pre code{padding:0;background:0 0;font-size:inherit}.prose .highlight{margin-top:1.5em}.prose .chroma .hl{display:block;background:rgb(127 127 127/.14)}@media(max-width:727px){.prose>.highlight,.prose>pre{grid-column:full}.prose>.highlight pre,.prose>pre{border-radius:0;padding-inline:var(--gutter)}}.prose table{width:100%;border-collapse:collapse;font-family:var(--font-sans);font-size:.8em}.prose th,.prose td{padding:.6em .75em;border-bottom:1px solid var(--border);text-align:left}.prose th{font-weight:600}.prose .footnotes{margin-top:3em;padding-top:1.5em;border-top:1px solid var(--border);color:var(--text-muted);font-size:.85em}.prose .footnotes hr{display:none}.prose sup a{text-decoration:none;font-family:var(--font-sans);font-size:.8em}.article__footer{padding-top:3.5rem}.tag-list{display:flex;flex-wrap:wrap;gap:.5rem;padding:0;list-style:none}.tag{display:inline-flex;align-items:center;gap:.4rem;padding:.4rem .9rem;border-radius:999px;background:var(--bg-soft);font-size:.875rem;text-decoration:none;transition:background-color .15s ease}.tag:hover{background:var(--border)}.tag__count{color:var(--text-faint);font-size:.8125rem}.author-card{display:flex;gap:1.25rem;margin-top:3rem;padding-block:2rem;border-block:1px solid var(--border)}.author-card__eyebrow{color:var(--text-muted);font-size:.8125rem;letter-spacing:.04em;text-transform:uppercase}.author-card__name{margin-top:.15rem;font-size:1.25rem;font-weight:700}.author-card__name a{text-decoration:none}.author-card__bio{margin-top:.5rem;color:var(--text-muted);font-family:var(--font-serif);font-size:1.0625rem;line-height:1.55}.post-nav{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:2rem}.post-nav__link{display:flex;flex-direction:column;gap:.35rem;padding:1.25rem;border:1px solid var(--border);border-radius:var(--radius);text-decoration:none;transition:border-color .15s ease}.post-nav__link:hover{border-color:var(--text-faint)}.post-nav__link--newer{grid-column:2;text-align:right}.post-nav__label{color:var(--text-muted);font-size:.8125rem}.post-nav__title{font-weight:600;line-height:1.35}@media(max-width:560px){.post-nav{grid-template-columns:1fr}.post-nav__link--newer{grid-column:auto}}.container--wide{width:min(var(--wide),100% - 2 * var(--gutter))}.intro{padding-block:clamp(3rem,8vw,5.5rem)clamp(2.5rem,6vw,3.5rem)}.intro__who{display:flex;align-items:center;gap:.85rem;margin-bottom:2rem}.intro__name{font-weight:600}.intro__role{color:var(--text-muted);font-size:.875rem}.intro__title{font-family:var(--font-serif);font-size:clamp(2.25rem,1.6rem + 2.8vw,3.25rem);font-weight:600;line-height:1.1;letter-spacing:-.025em}.intro__lede{margin-top:1.25rem;color:var(--text-muted);font-family:var(--font-serif);font-size:clamp(1.1875rem,1.1rem + .45vw,1.4375rem);line-height:1.55;text-wrap:pretty}.intro__lede a{color:var(--text);text-underline-offset:.18em}.intro__lede>*+*{margin-top:1em}.intro__links{display:flex;flex-wrap:wrap;gap:.75rem 1.5rem;margin-top:1.75rem;padding:0;list-style:none;font-size:.9375rem;font-weight:500}.intro__links a{padding-bottom:2px;border-bottom:1px solid var(--border);text-decoration:none;transition:color .15s ease,border-color .15s ease}.intro__links a:hover{color:var(--accent);border-color:initial}.home-section{margin-top:clamp(3rem,7vw,4.5rem)}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;padding-bottom:.85rem;border-bottom:1px solid var(--border)}.section-head .section-label{padding:0;border:0}.section-head__more{color:var(--text-muted);font-size:.875rem;text-decoration:none}.section-head__more:hover{color:var(--accent)}.post-feature{position:relative}.post-feature__media{display:block;overflow:hidden;border-radius:var(--radius);background:var(--bg-soft)}.post-feature__img{width:100%;aspect-ratio:16/9;object-fit:cover;transition:transform .5s ease}.post-feature:hover .post-feature__img{transform:scale(1.015)}.post-feature__body{margin-top:1.5rem}.post-feature__meta{display:flex;flex-wrap:wrap;gap:.4rem;color:var(--text-muted);font-size:.8125rem}.post-feature__tag{color:var(--accent);font-weight:600;letter-spacing:.06em;text-transform:uppercase}.post-feature__title{margin-top:.6rem;font-size:clamp(1.75rem,1.3rem + 2vw,2.375rem);font-weight:700;line-height:1.15;letter-spacing:-.022em;text-wrap:balance}.post-feature__title a{text-decoration:none}.post-feature__title a::after{content:"";position:absolute;inset:0}.post-feature:hover .post-feature__title a{color:var(--accent)}.post-feature__excerpt{margin-top:.75rem;color:var(--text-muted);font-family:var(--font-serif);font-size:clamp(1.125rem,1.08rem + .25vw,1.25rem);line-height:1.5;text-wrap:pretty}.photo-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:.75rem;margin-top:1.5rem}.photo-strip__item{position:relative;display:block;overflow:hidden;border-radius:var(--radius);background:var(--bg-soft);text-decoration:none}.photo-strip__item img{width:100%;aspect-ratio:4/5;object-fit:cover;transition:transform .5s ease}.photo-strip__item:hover img{transform:scale(1.03)}.photo-strip__title{position:absolute;inset:auto 0 0 0;padding:2.5rem .9rem .8rem;background:linear-gradient(transparent,rgb(0 0 0/.6));color:#fff;font-size:.875rem;font-weight:600}@media(max-width:640px){.photo-strip{grid-template-columns:repeat(2,1fr)}}.quote-block{position:relative;padding:2.75rem 0 2.5rem;border-block:1px solid var(--border)}.quote-block::before{content:"“";position:absolute;top:.35rem;left:-.05em;color:var(--accent);font-family:var(--font-serif);font-size:4.5rem;line-height:1}.quote-block__text{font-family:var(--font-serif);font-size:clamp(1.5rem,1.2rem + 1.3vw,2.125rem);font-weight:400;line-height:1.35;letter-spacing:-.012em;text-wrap:pretty}.quote-block__text>*+*{margin-top:.75em}.quote-block__cite{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:1.25rem;color:var(--text-muted);font-size:.9375rem}.quote-block__author{color:var(--text);font-weight:600}.quote-block__cite a{color:inherit}.section-label{padding-bottom:.85rem;border-bottom:1px solid var(--border);font-size:.8125rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.more-link{margin-top:2rem;font-weight:600}.more-link a{text-decoration:none}.more-link a:hover{color:var(--accent)}.page-header{padding-block:clamp(2.5rem,6vw,4rem)1rem}.page-header__eyebrow{margin-bottom:.5rem;color:var(--accent);font-size:.8125rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.page-header__title{font-size:clamp(2rem,1.5rem + 2vw,2.625rem);font-weight:700;line-height:1.15;letter-spacing:-.022em}.page-header__desc{margin-top:.75rem;color:var(--text-muted);font-family:var(--font-serif);font-size:1.1875rem;line-height:1.55}.page-header__count{margin-top:.6rem;color:var(--text-muted);font-size:.9375rem}.topic-nav{margin-top:1.5rem;border-bottom:1px solid var(--border);overflow-x:auto;scrollbar-width:none}.topic-nav ul{display:flex;gap:1.75rem;padding:0;list-style:none;white-space:nowrap}.topic-nav a{display:block;padding-block:.85rem;border-bottom:1px solid transparent;margin-bottom:-1px;color:var(--text-muted);font-size:.9375rem;text-decoration:none;transition:color .15s ease}.topic-nav a:hover{color:var(--text)}.topic-nav a[aria-current=page]{border-color:var(--text);color:var(--text)}.year-group{margin-top:2.75rem}.year-group__label{color:var(--text-faint);font-family:var(--font-serif);font-size:1.5rem;font-weight:600;letter-spacing:-.01em}.year-group .post-card:last-child{border-bottom:0}.post-card{display:grid;grid-template-columns:1fr auto;gap:1.5rem;align-items:center;padding-block:2rem;border-bottom:1px solid var(--border)}.post-card__meta{display:flex;gap:.4rem;color:var(--text-muted);font-size:.8125rem}.post-card__title{margin-top:.4rem;font-size:clamp(1.1875rem,1.1rem + .45vw,1.4375rem);font-weight:700;line-height:1.3;letter-spacing:-.012em;text-wrap:balance}.post-card__title a{text-decoration:none}.post-card__title a::after{content:"";position:absolute;inset:0}.post-card{position:relative}.post-card:hover .post-card__title a{color:var(--accent)}.post-card__excerpt{margin-top:.4rem;color:var(--text-muted);font-family:var(--font-serif);font-size:1.0625rem;line-height:1.5;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.post-card__thumb img{width:160px;height:107px;border-radius:4px;object-fit:cover;background:var(--bg-soft)}@media(max-width:560px){.post-card{gap:1rem;align-items:start}.post-card__thumb img{width:88px;height:88px}}.pagination{display:flex;align-items:center;justify-content:space-between;margin-top:2.5rem;font-size:.9375rem}.pagination__link{font-weight:600;text-decoration:none}.pagination__link:hover{color:var(--accent)}.pagination__status{color:var(--text-muted)}.tag-list--large{margin-top:1rem;gap:.75rem}.tag-list--spaced{margin-top:1.5rem}.empty{padding-block:3rem;color:var(--text-muted);font-family:var(--font-serif);font-size:1.125rem}.not-found{padding-block:clamp(4rem,12vw,8rem)}.not-found p:last-child{margin-top:1rem;color:var(--text-muted);font-family:var(--font-serif);font-size:1.1875rem}.container--gallery{width:min(var(--gallery),100% - 2 * var(--gutter))}.album-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr));gap:2.5rem 1.5rem;margin-top:1.5rem}.album-card{display:block;text-decoration:none}.album-card__media{overflow:hidden;border-radius:var(--radius);background:var(--bg-soft)}.album-card__media img{width:100%;aspect-ratio:3/2;object-fit:cover;transition:transform .5s ease}.album-card:hover .album-card__media img{transform:scale(1.025)}.album-card__title{margin-top:1rem;font-size:1.25rem;font-weight:700;letter-spacing:-.012em;transition:color .15s ease}.album-card:hover .album-card__title{color:var(--accent)}.album-card__meta,.album__meta{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.35rem;color:var(--text-muted);font-size:.875rem}.album__header{padding-block:clamp(2.5rem,6vw,4rem)2rem}.album__header .kicker{display:inline-block}.album__title{font-size:clamp(2rem,1.4rem + 2.6vw,2.75rem);font-weight:700;line-height:1.15;letter-spacing:-.022em}.album__subtitle{max-width:var(--measure);margin-top:.6rem;color:var(--text-muted);font-size:clamp(1.125rem,1.08rem + .3vw,1.3125rem);line-height:1.45}.album__meta{margin-top:1rem}.album__intro{max-width:var(--measure);margin-top:1.5rem;font-family:var(--font-serif);font-size:1.125rem;line-height:1.6}.album__intro>*+*{margin-top:1em}.album__footer{margin-top:3rem}.gallery{--row:300px;display:flex;flex-wrap:wrap;gap:.5rem}.gallery::after{content:"";flex-grow:1e6}.gallery__item{flex-grow:calc(var(--ar) * 100);flex-basis:calc(var(--ar) * var(--row));margin:0;overflow:hidden;background:var(--bg-soft)}.gallery__item a{display:block;height:100%;cursor:zoom-in}.gallery__item img{width:100%;height:100%;aspect-ratio:var(--ar);object-fit:cover;transition:transform .4s ease,opacity .2s ease}.gallery__item a:hover img{transform:scale(1.02)}.gallery__item a:focus-visible{outline-offset:-3px}@media(max-width:900px){.gallery{--row:220px}}@media(max-width:560px){.gallery{--row:150px;gap:.35rem}}html:has(.lightbox[open]){overflow:hidden}.lightbox{width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:0;border:0;background:rgb(10 10 11/.96);color:#f2f2f2}.lightbox::backdrop{background:0 0}.lightbox[open]{display:grid;place-items:center;animation:lightbox-in .2s ease}@keyframes lightbox-in{from{opacity:0}}.lightbox__figure{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;margin:0;padding:4rem clamp(.5rem,6vw,5rem)1.5rem}.lightbox__img{max-width:100%;max-height:calc(100dvh - 9rem);width:auto;height:auto;object-fit:contain;opacity:0;transition:opacity .25s ease;user-select:none;-webkit-user-drag:none}.lightbox__img.is-loaded{opacity:1}.lightbox__caption{display:flex;flex-direction:column;gap:.25rem;max-width:var(--measure);min-height:2.75rem;margin-top:1rem;padding-inline:1rem;text-align:center}.lightbox__text{font-family:var(--font-serif);font-size:1.0625rem}.lightbox__meta{color:#9a9a9a;font-size:.8125rem;letter-spacing:.02em}.lightbox__counter{position:absolute;top:1.25rem;left:1.5rem;color:#9a9a9a;font-size:.875rem;font-variant-numeric:tabular-nums}.lightbox__btn{position:absolute;display:grid;place-items:center;width:2.75rem;height:2.75rem;padding:0;border:0;border-radius:50%;background:rgb(255 255 255/8%);color:#f2f2f2;cursor:pointer;transition:background-color .15s ease}.lightbox__btn:hover{background:rgb(255 255 255/.18)}.lightbox__close{top:.75rem;right:.75rem}.lightbox__prev,.lightbox__next{top:50%;translate:0 -50%}.lightbox__prev{left:1rem}.lightbox__next{right:1rem}.lightbox.is-single .lightbox__prev,.lightbox.is-single .lightbox__next{display:none}@media(max-width:640px){.lightbox__prev,.lightbox__next{top:auto;bottom:1rem;translate:none}}html:has(body.is-quotes){scroll-snap-type:y mandatory;scroll-padding-top:var(--header-h,var(--header-height))}.is-quotes .site-footer{margin-top:0;scroll-snap-align:end}.quote-slide{position:relative;display:grid;place-items:center;min-height:calc(100svh - var(--header-h,var(--header-height)));padding:3rem var(--gutter)6.5rem;scroll-snap-align:start;scroll-snap-stop:always}.quote-slide+.quote-slide{border-top:1px solid var(--border)}.quote-slide__inner{position:relative;width:min(46rem,100%);margin:0;padding-top:3.75rem}.quote-slide__inner::before{content:"“";position:absolute;top:-.35rem;left:-.05em;color:var(--accent);font-family:var(--font-serif);font-size:6rem;line-height:1}.quote-slide__text{font-family:var(--font-serif);font-size:var(--quote-size);line-height:1.28;letter-spacing:-.015em;text-wrap:pretty}.quote-slide__text>*+*{margin-top:.75em}.quote-slide--xl{--quote-size:clamp(2rem, 1.3rem + 3.2vw, 3.5rem)}.quote-slide--l{--quote-size:clamp(1.6rem, 1.25rem + 1.8vw, 2.5rem)}.quote-slide--m{--quote-size:clamp(1.3rem, 1.15rem + 0.9vw, 1.85rem)}.quote-slide--m .quote-slide__text{line-height:1.4}.quote-slide__cite{display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem .5rem;margin-top:1.75rem;color:var(--text-muted);font-size:1rem}.quote-slide__author{color:var(--text);font-weight:600}.quote-slide__link{margin-left:auto;color:var(--text-faint);font-size:.8125rem;text-decoration:none}.quote-slide__link:hover{color:var(--accent);text-decoration:underline;text-underline-offset:.2em}.quote-slide__hint{position:absolute;bottom:5.25rem;left:50%;translate:-50% 0;color:var(--text-faint);font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;transition:opacity .3s ease}.quote-slide__hint::after{content:" ↓"}.has-scrolled .quote-slide__hint{opacity:0}@media(prefers-reduced-motion:no-preference){.quote-slide__hint{animation:quote-hint 2.4s ease-in-out infinite}@keyframes quote-hint{50%{translate:-50% 5px}}}.quote-controls{position:fixed;bottom:max(1rem,env(safe-area-inset-bottom));left:50%;z-index:40;display:flex;align-items:center;gap:.15rem;padding:.3rem .35rem .3rem 1rem;translate:-50% 0;border:1px solid var(--border);border-radius:999px;background:var(--header-bg);-webkit-backdrop-filter:saturate(180%)blur(12px);backdrop-filter:saturate(180%)blur(12px);box-shadow:0 8px 28px rgb(0 0 0/8%);font-size:.875rem;white-space:nowrap}.quote-controls[hidden]{display:none}.quote-controls__title{margin-right:.35rem;font-weight:600}.quote-controls__count{min-width:4.25rem;color:var(--text-muted);font-variant-numeric:tabular-nums;text-align:center}.quote-controls__btn{display:grid;place-items:center;width:2.25rem;height:2.25rem;padding:0;border:0;border-radius:50%;background:0 0;color:var(--text-muted);cursor:pointer;transition:background-color .15s ease,color .15s ease}.quote-controls__btn:hover:not(:disabled){background:var(--bg-soft);color:var(--text)}.quote-controls__btn:disabled{opacity:.35;cursor:default}.quote-card{position:relative;padding-block:2.25rem;border-bottom:1px solid var(--border)}.quote-card__text{font-family:var(--font-serif);font-size:clamp(1.25rem,1.15rem + .5vw,1.5rem);line-height:1.45;letter-spacing:-.008em;text-wrap:pretty}.quote-card--short .quote-card__text{font-size:clamp(1.5rem,1.25rem + 1.1vw,2rem);line-height:1.3}.quote-card__text>*+*{margin-top:.75em}.quote-card__cite{display:flex;flex-wrap:wrap;align-items:baseline;gap:.4rem;margin-top:1rem;color:var(--text-muted);font-size:.9375rem}.quote-card__author{color:var(--text);font-weight:600}.quote-card__link{margin-left:auto;color:var(--text-faint);text-decoration:none;opacity:0;transition:opacity .15s ease,color .15s ease}.quote-card:hover .quote-card__link,.quote-card__link:focus-visible{opacity:1}.quote-card__link:hover{color:var(--accent)}@media(hover:none){.quote-card__link{opacity:1}}.quote-page{padding-top:clamp(3rem,9vw,6rem)}.quote-page .kicker{display:inline-block;margin-bottom:1.5rem}.quote-page .quote-block{border-top:0;padding-top:3.5rem}.quote-page .quote-block::before{font-size:6rem;top:-.5rem}.quote-page .quote-block__text{font-size:clamp(1.75rem,1.3rem + 2vw,2.75rem);line-height:1.25}.quote-page--long .quote-block__text{font-size:clamp(1.375rem,1.15rem + 1vw,1.875rem);line-height:1.4}.quote-page__added{margin-top:1.5rem;color:var(--text-faint);font-size:.875rem}.quote-page__tags{margin-top:1.25rem}.prose .quote-block__text{padding-left:0;border-left:0;font-style:normal}.prose .quote-block__cite{margin-top:1.25rem;padding-inline:0;font-size:.9375rem;text-align:left}.prose .pullquote{padding-block:1.75rem;border-block:1px solid var(--border);text-align:center}.prose .pullquote blockquote{padding:0;border:0;font-size:clamp(1.4rem,1.15rem + 1.1vw,1.875rem);font-style:italic;line-height:1.35;letter-spacing:-.01em;text-wrap:balance}.prose .pullquote blockquote>p:first-child::before{content:"“";color:var(--accent)}.prose .pullquote blockquote>p:last-child::after{content:"”";color:var(--accent)}.prose .pullquote figcaption{margin-top:1rem;padding:0;color:var(--text-muted);font-size:.9375rem}.prose .pullquote figcaption::before{content:"— "}.callout{--callout:#2f6fd6;padding:1rem 1.25rem 1.1rem;border-left:3px solid var(--callout);border-radius:0 var(--radius)var(--radius)0;background:color-mix(in srgb,var(--callout) 7%,var(--bg));font-size:.9em;line-height:1.6}.callout--tip{--callout:#1a7f5a}.callout--important{--callout:#7c4dcc}.callout--warning{--callout:#b7791f}.callout--caution{--callout:#c4372b}[data-theme=dark] .callout{--callout:#6aa1ff;background:color-mix(in srgb,var(--callout) 10%,var(--bg))}[data-theme=dark] .callout--tip{--callout:#5cc79a}[data-theme=dark] .callout--important{--callout:#b392f0}[data-theme=dark] .callout--warning{--callout:#e3b341}[data-theme=dark] .callout--caution{--callout:#ff7b72}.callout__title{display:flex;align-items:center;gap:.45rem;margin-bottom:.35rem;color:var(--callout);font-family:var(--font-sans);font-size:.8125rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.callout__body>*+*{margin-top:.75em}.prose details{padding:.85rem 1.1rem;border:1px solid var(--border);border-radius:var(--radius);font-size:.9em}.prose summary{font-family:var(--font-sans);font-weight:600;cursor:pointer}.prose details[open] summary{margin-bottom:.75rem}.prose details>:not(summary)+*{margin-top:.75em}.prose .gallery-embed .gallery{--row:220px}.prose .gallery-embed figure img{border-radius:0}.gallery-embed__link{margin-top:.85rem;font-family:var(--font-sans);font-size:.875rem;text-align:center}.prose .gallery-embed__link a{color:var(--text-muted);text-decoration:none}.prose .gallery-embed__link a:hover{color:var(--accent)}.project-media{display:block;width:100%;aspect-ratio:16/10;object-fit:cover;border-radius:var(--radius);background:var(--bg-soft)}.project-media--monogram{display:grid;place-items:center;background:radial-gradient(120% 90% at 20% 10%,rgb(255 255 255/.22),transparent 60%),var(--project);color:#fff;font-family:var(--font-serif);font-size:clamp(2.5rem,6vw,3.5rem);font-weight:600;letter-spacing:-.02em}.project-media--icon{flex:none;width:48px;height:48px;aspect-ratio:1;border-radius:10px;font-size:1.125rem}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:2.75rem 1.75rem;margin-top:1.5rem}.project-card{position:relative}.project-card__media{overflow:hidden;border-radius:var(--radius)}.project-card__media .project-media{transition:transform .5s ease}.project-card:hover .project-card__media .project-media{transform:scale(1.025)}.project-card__body{margin-top:1rem}.project-card__meta{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;color:var(--text-muted);font-size:.8125rem}.project-card__title{margin-top:.35rem;font-size:1.25rem;font-weight:700;letter-spacing:-.012em}.project-card__title a{text-decoration:none}.project-card__title a::after{content:"";position:absolute;inset:0}.project-card:hover .project-card__title a{color:var(--accent)}.project-card__tagline{margin-top:.35rem;color:var(--text-muted);font-family:var(--font-serif);font-size:1.0625rem;line-height:1.5}.stack-list{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.85rem;padding:0;list-style:none}.stack-list li{padding:.2rem .6rem;border:1px solid var(--border);border-radius:999px;color:var(--text-muted);font-size:.75rem}.project-status{display:inline-flex;align-items:center;gap:.35rem;color:var(--text-muted);font-size:.8125rem}.project-card__meta .project-status{margin-left:auto}.project-status::before{content:"";width:.45rem;height:.45rem;border-radius:50%;background:var(--text-faint)}.project-status--active::before{background:#2ea36b;box-shadow:0 0 0 3px rgb(46 163 107/.18)}.project-links{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.75rem;padding:0;list-style:none}.button{display:inline-flex;align-items:center;gap:.4rem;padding:.6rem 1.1rem;border:1px solid var(--border);border-radius:999px;font-size:.9375rem;font-weight:500;text-decoration:none;transition:border-color .15s ease,background-color .15s ease,color .15s ease}.button:hover{border-color:var(--text-faint)}.button--primary{border-color:var(--text);background:var(--text);color:var(--bg)}.button--primary:hover{border-color:var(--accent);background:var(--accent);color:#fff}.project-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:1rem 1.5rem;margin-top:2rem;padding-block:1.25rem;border-block:1px solid var(--border)}.project-facts__wide{grid-column:1/-1}.project-facts dt{color:var(--text-muted);font-size:.75rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.project-facts dd{margin-top:.2rem;font-size:.9375rem}.project-rows{margin-top:.5rem;padding:0;list-style:none}.project-row{position:relative;display:flex;align-items:center;gap:1rem;padding-block:1.1rem;border-bottom:1px solid var(--border)}.project-row:last-child{border-bottom:0}.project-row__text{flex:1;min-width:0}.project-row__title{font-weight:700;text-decoration:none}.project-row__title::after{content:"";position:absolute;inset:0}.project-row:hover .project-row__title{color:var(--accent)}.project-row__tagline{margin-top:.15rem;overflow:hidden;color:var(--text-muted);font-size:.9375rem;text-overflow:ellipsis;white-space:nowrap}.project-row__years{flex:none;color:var(--text-faint);font-size:.875rem;font-variant-numeric:tabular-nums}@media(max-width:560px){.project-row__years{display:none}.project-row__tagline{white-space:normal}}.chroma{-webkit-text-size-adjust:none}.chroma .err{color:#cf222e}.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 .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .line{display:flex}.chroma .k{color:#cf222e}.chroma .kc{color:#cf222e}.chroma .kd{color:#cf222e}.chroma .kn{color:#cf222e}.chroma .kp{color:#cf222e}.chroma .kr{color:#cf222e}.chroma .kt{color:#cf222e}.chroma .na{color:#1f2328}.chroma .nc{color:#1f2328}.chroma .no{color:#0550ae}.chroma .nd{color:#0550ae}.chroma .ni{color:#6639ba}.chroma .nl{color:#900;font-weight:700}.chroma .nn{color:#24292e}.chroma .nx{color:#1f2328}.chroma .nt{color:#0550ae}.chroma .nb{color:#6639ba}.chroma .bp{color:#6a737d}.chroma .nv{color:#953800}.chroma .vc{color:#953800}.chroma .vg{color:#953800}.chroma .vi{color:#953800}.chroma .vm{color:#953800}.chroma .nf{color:#6639ba}.chroma .fm{color:#6639ba}.chroma .s{color:#0a3069}.chroma .sa{color:#0a3069}.chroma .sb{color:#0a3069}.chroma .sc{color:#0a3069}.chroma .dl{color:#0a3069}.chroma .sd{color:#0a3069}.chroma .s2{color:#0a3069}.chroma .se{color:#0a3069}.chroma .sh{color:#0a3069}.chroma .si{color:#0a3069}.chroma .sx{color:#0a3069}.chroma .sr{color:#0a3069}.chroma .s1{color:#0a3069}.chroma .ss{color:#032f62}.chroma .m{color:#0550ae}.chroma .mb{color:#0550ae}.chroma .mf{color:#0550ae}.chroma .mh{color:#0550ae}.chroma .mi{color:#0550ae}.chroma .il{color:#0550ae}.chroma .mo{color:#0550ae}.chroma .o{color:#0550ae}.chroma .ow{color:#0550ae}.chroma .or{color:#0550ae}.chroma .p{color:#1f2328}.chroma .c{color:#57606a}.chroma .ch{color:#57606a}.chroma .cm{color:#57606a}.chroma .c1{color:#57606a}.chroma .cs{color:#57606a}.chroma .cp{color:#57606a}.chroma .cpf{color:#57606a}.chroma .gd{color:#82071e}.chroma .ge{color:#1f2328}.chroma .gi{color:#116329}.chroma .go{color:#1f2328}.chroma .gl{text-decoration:underline}.chroma .w{color:#fff}[data-theme=dark] .chroma span{color:inherit;font-weight:inherit;font-style:inherit}[data-theme=dark] .chroma{color:#e6edf3;-webkit-text-size-adjust:none}[data-theme=dark] .chroma .err{color:#f85149}[data-theme=dark] .chroma .lnlinks{outline:none;text-decoration:none;color:inherit}[data-theme=dark] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}[data-theme=dark] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}[data-theme=dark] .chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#737679}[data-theme=dark] .chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#6e7681}[data-theme=dark] .chroma .line{display:flex}[data-theme=dark] .chroma .k{color:#ff7b72}[data-theme=dark] .chroma .kc{color:#79c0ff}[data-theme=dark] .chroma .kd{color:#ff7b72}[data-theme=dark] .chroma .kn{color:#ff7b72}[data-theme=dark] .chroma .kp{color:#79c0ff}[data-theme=dark] .chroma .kr{color:#ff7b72}[data-theme=dark] .chroma .kt{color:#ff7b72}[data-theme=dark] .chroma .nc{color:#f0883e;font-weight:700}[data-theme=dark] .chroma .no{color:#79c0ff;font-weight:700}[data-theme=dark] .chroma .nd{color:#d2a8ff;font-weight:700}[data-theme=dark] .chroma .ni{color:#ffa657}[data-theme=dark] .chroma .ne{color:#f0883e;font-weight:700}[data-theme=dark] .chroma .nl{color:#79c0ff;font-weight:700}[data-theme=dark] .chroma .nn{color:#ff7b72}[data-theme=dark] .chroma .nx{color:#e6edf3}[data-theme=dark] .chroma .py{color:#79c0ff}[data-theme=dark] .chroma .nt{color:#7ee787}[data-theme=dark] .chroma .nv{color:#79c0ff}[data-theme=dark] .chroma .vc{color:#79c0ff}[data-theme=dark] .chroma .vg{color:#79c0ff}[data-theme=dark] .chroma .vi{color:#79c0ff}[data-theme=dark] .chroma .vm{color:#79c0ff}[data-theme=dark] .chroma .nf{color:#d2a8ff;font-weight:700}[data-theme=dark] .chroma .fm{color:#d2a8ff;font-weight:700}[data-theme=dark] .chroma .l{color:#a5d6ff}[data-theme=dark] .chroma .ld{color:#79c0ff}[data-theme=dark] .chroma .s{color:#a5d6ff}[data-theme=dark] .chroma .sa{color:#79c0ff}[data-theme=dark] .chroma .sb{color:#a5d6ff}[data-theme=dark] .chroma .sc{color:#a5d6ff}[data-theme=dark] .chroma .dl{color:#79c0ff}[data-theme=dark] .chroma .sd{color:#a5d6ff}[data-theme=dark] .chroma .s2{color:#a5d6ff}[data-theme=dark] .chroma .se{color:#79c0ff}[data-theme=dark] .chroma .sh{color:#79c0ff}[data-theme=dark] .chroma .si{color:#a5d6ff}[data-theme=dark] .chroma .sx{color:#a5d6ff}[data-theme=dark] .chroma .sr{color:#79c0ff}[data-theme=dark] .chroma .s1{color:#a5d6ff}[data-theme=dark] .chroma .ss{color:#a5d6ff}[data-theme=dark] .chroma .m{color:#a5d6ff}[data-theme=dark] .chroma .mb{color:#a5d6ff}[data-theme=dark] .chroma .mf{color:#a5d6ff}[data-theme=dark] .chroma .mh{color:#a5d6ff}[data-theme=dark] .chroma .mi{color:#a5d6ff}[data-theme=dark] .chroma .il{color:#a5d6ff}[data-theme=dark] .chroma .mo{color:#a5d6ff}[data-theme=dark] .chroma .o{color:#ff7b72;font-weight:700}[data-theme=dark] .chroma .ow{color:#ff7b72;font-weight:700}[data-theme=dark] .chroma .or{color:#ff7b72;font-weight:700}[data-theme=dark] .chroma .c{color:#8b949e;font-style:italic}[data-theme=dark] .chroma .ch{color:#8b949e;font-style:italic}[data-theme=dark] .chroma .cm{color:#8b949e;font-style:italic}[data-theme=dark] .chroma .c1{color:#8b949e;font-style:italic}[data-theme=dark] .chroma .cs{color:#8b949e;font-weight:700;font-style:italic}[data-theme=dark] .chroma .cp{color:#8b949e;font-weight:700;font-style:italic}[data-theme=dark] .chroma .cpf{color:#8b949e;font-weight:700;font-style:italic}[data-theme=dark] .chroma .gd{color:#ffa198}[data-theme=dark] .chroma .ge{font-style:italic}[data-theme=dark] .chroma .gr{color:#ffa198}[data-theme=dark] .chroma .gh{color:#79c0ff;font-weight:700}[data-theme=dark] .chroma .gi{color:#56d364}[data-theme=dark] .chroma .go{color:#8b949e}[data-theme=dark] .chroma .gp{color:#8b949e}[data-theme=dark] .chroma .gs{font-weight:700}[data-theme=dark] .chroma .gu{color:#79c0ff}[data-theme=dark] .chroma .gt{color:#ff7b72}[data-theme=dark] .chroma .gl{text-decoration:underline}[data-theme=dark] .chroma .w{color:#6e7681}