:root{--paper:#fdfdfc;--surface:#f3f4f1;--panel:#fff;--ink:#282d29;--muted:#606a62;--line:#e3e6e0;--control:#7c867d;--green:#365d4e;--soft-green:#e8eee7;--orange:#825730;--heart:#a83e50;--sans:"PingFang SC","Microsoft YaHei","Noto Sans CJK SC",-apple-system,BlinkMacSystemFont,system-ui,sans-serif;color-scheme:light}:root[data-theme=dark]{--paper:#1c201d;--surface:#282e29;--panel:#222823;--ink:#e8ece7;--muted:#b4bdb2;--line:#3c463d;--control:#899686;--green:#b0cbb3;--soft-green:#303d31;--orange:#d7b08e;--heart:#f0a4b1;color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#1c201d;--surface:#282e29;--panel:#222823;--ink:#e8ece7;--muted:#b4bdb2;--line:#3c463d;--control:#899686;--green:#b0cbb3;--soft-green:#303d31;--orange:#d7b08e;--heart:#f0a4b1;color-scheme:dark}}:root.theme-ready,:root.theme-ready *{transition:background-color .18s,color .18s,border-color .18s}*{box-sizing:border-box}html{scroll-behavior:auto;scroll-padding-top:24px}body{padding-inline:env(safe-area-inset-left) env(safe-area-inset-right);background:var(--paper);color:var(--ink);font-family:var(--sans);margin:0;font-size:18px;line-height:1.85}h1,h2,h3,h4,p{margin-top:0}h1,h2,h3,h4{font-weight:600}h1{letter-spacing:-.035em;overflow-wrap:anywhere;text-wrap:balance;margin-bottom:24px;font-size:clamp(28px,3.1vw,38px);line-height:1.5}h2{margin-bottom:20px;font-size:23px;line-height:1.6}h3{margin-bottom:12px;font-size:21px;line-height:1.6}a{color:var(--green);text-decoration:none}a:hover{color:var(--ink)}button,input,select{font:inherit}button{cursor:pointer;color:var(--ink)}button,a,input,select,summary{-webkit-tap-highlight-color:transparent}:where(button,a,input,select,summary):focus-visible{outline:2px solid var(--orange);outline-offset:4px}[hidden],.js-only{display:none!important}[data-js] .js-only{display:block!important}.shell{width:min(1200px,100% - 48px);margin-inline:auto}.reading-width{width:min(100%,720px);margin-inline:auto}.muted{color:var(--muted)}.title-word{white-space:nowrap}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:50;background:var(--paper);padding:12px 20px;position:fixed;top:-80px;left:24px}.skip-link:focus{top:12px}.preview-bar{text-align:center;background:var(--surface);color:var(--muted);padding:4px 16px;font-size:12px}.preview-bar span{padding:0 8px}.site-header{justify-content:space-between;align-items:center;max-width:880px;padding-block:8px;display:flex}.site-header nav{align-items:center;gap:24px;display:flex}.site-header a{min-height:44px;color:var(--muted);align-items:center;font-size:14px;text-decoration:none;display:inline-flex}.site-header a:hover,.site-header a[aria-current=page]{color:var(--ink)}.site-header a[aria-current=page]{font-weight:600}.nav-icon{flex-shrink:0;display:none}.header-tools{align-items:center;gap:4px;display:flex}.reading-page .site-header{z-index:40;pointer-events:none;width:min(646px,100% - 64px);max-width:none;padding-block:8px}[data-js] .reading-page .site-header{position:sticky;top:0}.reading-page .site-header nav,.reading-page .site-header .theme-toggle{pointer-events:auto;background:var(--paper)}.reading-scrolled .site-header{justify-content:flex-start;gap:8px}.reading-scrolled .site-header nav{gap:4px}.reading-scrolled .site-header a{border-radius:6px;justify-content:center;width:36px}.reading-scrolled .site-header a:hover{background:var(--surface)}.reading-scrolled .site-header .theme-toggle{width:36px}.reading-scrolled .nav-icon{display:block}.reading-scrolled .nav-label{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.reading-page>main{width:min(1120px,100% - 64px);container:reading/inline-size}.theme-toggle{background:0 0;border:0;border-radius:50%;width:44px;min-height:44px;padding:0;line-height:1}.theme-icons{vertical-align:middle;width:20px;height:20px;display:inline-block;position:relative}.theme-toggle .theme-icon{transition:opacity .18s;position:absolute;inset:0}.theme-icon-sun{opacity:1}.theme-icon-moon,:root[data-theme=dark] .theme-icon-sun{opacity:0}:root[data-theme=dark] .theme-icon-moon{opacity:1}.theme-toggle:hover{background:var(--surface)}.site-footer{border-top:1px solid var(--line);max-width:880px;padding:24px 0 calc(24px + env(safe-area-inset-bottom));margin-top:64px}.site-footer nav{flex-wrap:wrap;align-items:center;gap:8px 24px;display:flex}.site-footer a{color:var(--muted);align-items:center;min-height:44px;font-size:13px;display:inline-flex}.footer-spacer{flex:1}.wide-page .site-header,.wide-page .site-footer{max-width:1200px}.home{max-width:1200px;margin:32px auto 0}.home h2{letter-spacing:0;color:var(--muted);margin:0 0 20px;font-size:14px;font-weight:500}.home h2>span{letter-spacing:0;text-transform:none;color:var(--muted);margin-left:8px;font-size:12px;font-weight:400}.home-today{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,440px) minmax(0,1fr);gap:80px;margin-bottom:40px;padding-bottom:40px;display:grid}.home-today p{white-space:pre-line;margin-bottom:16px;font-size:17px;line-height:1.9}.home-today p:last-child{margin-bottom:0}.home-columns{grid-template-columns:minmax(0,440px) minmax(0,1fr);align-items:start;gap:80px;display:grid}.home-columns.with-building{grid-template-columns:1fr 1fr 2fr;gap:40px}.home-columns>section{min-width:0}.home-sidebar{flex-direction:column;gap:32px;min-width:0;display:flex}.home-project-title{letter-spacing:0;margin:0 0 8px;font-size:18px;font-weight:600;line-height:1.4;display:flex}.home-projects .home-project-title a{font:inherit;gap:10px;margin-block:-8px;padding-block:8px}.home-projects .home-links li{margin-bottom:24px}.home-projects .home-links li:last-child{margin-bottom:0}.home-now{border-top:1px solid var(--line);padding-top:24px}.home-now p{color:var(--muted);white-space:pre-line;overflow-wrap:anywhere;margin:0 0 12px;font-size:14px;font-style:italic;line-height:1.75}.home-now p:last-child{margin-bottom:0}.now-directions{gap:24px;margin:0;padding:0;list-style:none;display:grid}.now-directions h3{letter-spacing:0;margin:0 0 8px;font-size:15px;font-weight:600;line-height:1.6}.home-links,.writing-links{margin:0;padding:0;list-style:none}.home-links li{margin-bottom:24px}.home-links a{color:var(--ink);align-items:center;gap:12px;min-height:44px;font-size:16px;text-decoration:none;display:inline-flex}.home-links a:hover{color:var(--green)}.home-links a span{color:var(--muted);font-size:13px}.home-links p{color:var(--muted);overflow-wrap:anywhere;margin:0;font-size:13px;line-height:1.8}.home-projects .home-links p{font-size:14px;font-style:italic;line-height:1.75}.writing-links>li{border-bottom:1px solid var(--line);margin-bottom:24px;padding-bottom:24px}.writing-links>li:last-child{margin-bottom:0}.writing-title{align-items:baseline;gap:12px;display:flex}.writing-title h3{letter-spacing:-.02em;min-width:0;margin:0;font-size:18px;font-weight:500;display:flex}.writing-title a{color:var(--ink);align-items:center;min-height:44px;margin-block:-8px;padding-block:8px;text-decoration:none;display:inline-flex}.writing-title a:hover{color:var(--green)}.writing-pick{color:var(--green);white-space:nowrap;font-size:12px}.writing-links .featured h3{font-size:24px;font-weight:600;line-height:1.6}.writing-links p{color:var(--muted);margin:8px 0;font-size:14px;line-height:1.85}.writing-meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:16px;font-size:13px;display:flex}.writing-links .writing-revision{border-left:1px solid var(--control);margin:8px 0 0;padding-left:12px;font-size:13px}.all-posts-link{align-items:center;gap:16px;min-height:44px;margin-top:20px;font-size:14px;display:inline-flex}.home-newsletter{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:24px;margin-top:48px;padding-top:24px;display:flex}.home-newsletter h2{margin:0}.home-newsletter>a{align-items:center;gap:16px;min-height:44px;font-size:14px;display:inline-flex}.empty-copy{color:var(--muted);margin:24px 0;font-size:16px}.empty-writing{border-top:1px solid var(--line);max-width:560px;padding:28px 0 36px}.empty-writing p{color:var(--muted);margin:0;font-size:15px;line-height:1.8}.empty-writing .empty-writing-title{color:var(--ink);margin-bottom:8px;font-size:20px}.empty-writing .text-link{margin-top:16px}.home-writing .empty-writing{text-align:center;flex-direction:column;justify-content:center;align-items:center;max-width:none;min-height:280px;padding:40px 24px;display:flex}.index-page:has(.empty-writing){min-height:45vh;padding-top:40px}.site-header .language-switch{white-space:nowrap;justify-content:center;min-width:44px;padding-inline:8px;font-size:13px}.reading-page .site-header .language-switch{pointer-events:auto;background:var(--paper)}.article-back{min-height:44px;color:var(--muted);align-items:center;gap:8px;margin-bottom:12px;font-size:14px;display:inline-flex}.article-back:hover{color:var(--ink)}@container reading (width>=960px){.article-page>.article-back{grid-column:2;width:100%}}@container reading (width>=960px){.reading-scrolled .article-header{padding-left:0}}.social-links{flex-wrap:wrap;gap:12px 24px;display:flex}.projects-page{max-width:1200px;margin-inline:auto}.projects-heading{padding-bottom:32px}.projects-heading>p{max-width:580px;color:var(--muted);margin-top:12px;font-size:16px;line-height:1.8}.project-story{border-top:1px solid var(--line);grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);grid-template-areas:"media copy";align-items:start;gap:40px;padding-block:40px 48px;display:grid}.project-story-copy{grid-area:copy;min-width:0}.project-category{color:var(--muted);margin:0 0 8px;font-size:12px}.project-story h2{margin:0 0 12px;font-size:26px;font-weight:600;line-height:1.3}.project-tagline{color:var(--ink);margin:0 0 16px;font-size:17px;line-height:1.6}.project-purpose{color:var(--muted);margin:0 0 16px;font-size:14px;line-height:1.85}.project-features{color:var(--muted);margin:0;padding-left:18px;font-size:13px;line-height:1.85}.project-features li+li{margin-top:6px}.project-actions{flex-wrap:wrap;gap:8px 24px;margin-top:16px;display:flex}.project-actions a{gap:6px;font-size:14px}.project-media{grid-area:media;min-width:0}.project-screens{scroll-snap-type:x mandatory;scrollbar-width:thin;overscroll-behavior-x:contain;display:flex;overflow-x:auto}.project-screen{scroll-snap-align:start;flex:0 0 100%;min-width:0;margin:0}.project-screen>a{aspect-ratio:16/10;border:1px solid var(--line);background:#fff;border-radius:8px;justify-content:center;align-items:center;display:flex;overflow:hidden}.project-screen img{object-fit:contain;width:100%;height:100%;display:block}.project-screen figcaption{color:var(--muted);padding-top:10px;font-size:12px;line-height:1.7}.gallery-controls{justify-content:flex-end;align-items:center;gap:4px;margin-top:4px;display:flex}[data-js] .gallery-controls{display:flex!important}.gallery-count{color:var(--muted);font-variant-numeric:tabular-nums;margin-right:10px;font-size:12px}.gallery-controls button{border:1px solid var(--line);width:44px;height:44px;color:var(--ink);cursor:pointer;font:inherit;background:0 0;border-radius:6px;justify-content:center;align-items:center;display:inline-flex}.gallery-controls button:disabled{opacity:.35;cursor:default}.gallery-controls button:not(:disabled):hover{background:var(--surface)}@media (width<=800px){.project-story{grid-template-columns:1fr;grid-template-areas:"copy""media";gap:24px;padding-block:32px 40px}.project-story h2{font-size:24px}.project-purpose{max-width:600px}.project-features{font-size:14px}.project-screen>a{aspect-ratio:16/10}}html[lang=en]{--reading-measure:646px}.section-label{color:var(--muted);margin-bottom:16px;font-size:13px}.example{color:var(--orange)}.page-heading{padding:24px 0 32px}.page-heading h1{margin-bottom:12px;font-size:30px}.page-heading p{color:var(--muted);margin-bottom:0;font-size:15px}.index-page{padding:32px 0 8px}.archive-list{min-width:0;margin:0;padding:0;list-style:none}.year-group{grid-template-columns:72px minmax(0,1fr);gap:24px;margin-bottom:40px;display:grid}.year-group>h2{font-variant-numeric:tabular-nums;color:var(--muted);margin:0;padding-top:12px;font-size:15px;font-weight:400}.post-card{border-bottom:1px solid var(--line);min-width:0;padding:24px 0}.post-card.compact{padding-block:20px}.card-title{justify-content:space-between;align-items:baseline;gap:24px;display:flex}.card-title h3{letter-spacing:-.02em;overflow-wrap:anywhere;min-width:0;margin-bottom:8px;font-size:20px;font-weight:500}.card-title a{color:var(--ink);align-items:center;min-height:44px;text-decoration:none;display:inline-flex}.card-title a:hover{color:var(--green)}.card-title time{color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums;font-size:13px}.post-card p{color:var(--muted);margin-bottom:0;font-size:16px;line-height:1.9}.post-meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px 16px;margin:0 0 8px;font-size:13px;display:flex}.post-card-body>.post-meta:last-child{margin-top:8px;margin-bottom:0}.kind-label{color:var(--green)}.card-revision{color:var(--muted);margin-top:12px;font-size:13px}.card-revision p{font-size:13px}.archive-entry,.archive-entry.compact{border-bottom:0;padding:4px 0 12px}.archive-entry .card-title h3{letter-spacing:0;margin:0;font-size:17px;line-height:1.8}.archive-entry .post-meta,.archive-example{font-size:12px}.archive-example{margin-top:0;display:block}.article-page{--reading-font-size:17px;--reading-measure:calc(var(--reading-font-size) * 38);padding-top:16px;padding-bottom:16px}.article-page .reading-width{width:min(100%,var(--reading-measure))}.article-header{z-index:30;background:var(--paper);align-items:center;gap:24px;margin-bottom:32px;padding-block:12px;display:flex;position:sticky;top:0}.article-header h1{letter-spacing:normal;flex:1;min-width:0;margin:0;font-size:30px;line-height:1.5}.article-header .article-like{flex-shrink:0}.back-to-top{right:calc(20px + env(safe-area-inset-right));bottom:calc(20px + env(safe-area-inset-bottom));z-index:35;border:1px solid var(--line);background:var(--paper);width:44px;min-height:44px;color:var(--muted);border-radius:50%;justify-content:center;align-items:center;padding:0;display:inline-flex;position:fixed;box-shadow:0 2px 12px #0000000a}.back-to-top-text{display:none}.back-to-top:hover{background:var(--surface);color:var(--ink)}.reading-scrolled .article-header{height:60px;margin-bottom:calc(32px + var(--expanded-title-height,69px) - 60px);gap:8px;padding:8px 0 8px 132px}.reading-scrolled .article-header h1{white-space:nowrap;text-overflow:ellipsis;text-wrap:nowrap;font-size:18px;line-height:1.5;overflow:hidden}.article-meta{color:var(--muted);flex-wrap:wrap;gap:8px 16px;margin-top:24px;padding-block:24px 40px;font-size:12px;display:flex}.reading-grid{position:relative}.reading-rail{margin-bottom:20px}.toc{color:var(--muted);font-size:13px}.toc summary{cursor:pointer;color:var(--muted);align-items:center;gap:12px;min-height:44px;list-style:none;display:flex}.toc summary::-webkit-details-marker{display:none}.toc summary:after{content:"";border-bottom:1px solid;border-right:1px solid;width:5px;height:5px;transform:rotate(45deg)}.toc details[open]>summary:after{transform:rotate(225deg)}.toc ol{margin:8px 0 0;padding:0;list-style:none}.toc li{margin:0}.toc a{color:var(--muted);border-radius:4px;min-height:32px;padding:6px 12px;line-height:1.7;display:block;position:relative}.toc a:before{content:"";background:var(--green);opacity:0;border-radius:2px;width:2px;height:8px;position:absolute;top:calc(2px + .85em);left:0}.toc a:hover{color:var(--ink);background:var(--surface)}.toc a[aria-current=location]{color:var(--ink);font-weight:500}.toc a[aria-current=location]:before{opacity:1}.prose{font-size:var(--reading-font-size,17px);letter-spacing:normal;text-align:start;line-break:strict;overflow-wrap:anywhere;min-width:0;line-height:1.8}.prose p{margin-bottom:1.15em}.prose h2{letter-spacing:normal;margin:2.4em 0 .8em;scroll-margin-top:112px;font-size:21px;line-height:1.55}.prose>h2:first-child,.prose>article>h2:first-child{margin-top:0}.prose h3{margin:2em 0 .75em;font-size:19px;line-height:1.6}.prose h4{margin:1.75em 0 .75em;font-size:17px;line-height:1.6}.prose ul,.prose ol{margin-block:0 1.15em;padding-left:1.5em}.prose li{margin-bottom:.4em}.prose li>p{margin-bottom:.6em}.prose blockquote{border-left:1px solid var(--control);color:var(--muted);margin:1.75em 0;padding-left:1.15em}.prose blockquote>:last-child{margin-bottom:0}.prose code{background:var(--surface);padding:2px 4px;font-family:ui-monospace,Consolas,monospace;font-size:.85em}.prose pre{background:var(--surface);color:var(--ink);border-radius:8px;max-width:100%;padding:20px;font-size:15px;line-height:1.75;overflow:auto}.prose pre code{padding:0}.code-frame{background:var(--surface);border-radius:8px;min-width:0;max-width:100%;margin:32px 0;overflow:hidden}.code-frame pre{border-radius:0;margin:0}.code-toolbar{border-bottom:1px solid var(--line);color:var(--muted);justify-content:space-between;align-items:center;padding:4px 20px;font-size:13px;display:flex}.code-toolbar button{min-height:44px;color:var(--muted);background:0 0;border:0;font-size:13px}.prose img{border-radius:8px;max-width:100%;height:auto;margin-block:32px;display:block}.prose table{border-collapse:collapse;width:100%;margin-block:24px;font-size:16px;display:block;overflow:auto}.prose td,.prose th{border:1px solid var(--control);text-align:left;padding:12px}.source-note cite{font-style:normal}.source-credit{margin-bottom:4px!important}.timeline{background:var(--surface);border-radius:8px;margin:32px 0;padding:24px}.component-label{color:var(--muted);font-size:13px}.timeline h3{margin:12px 0 24px;font-size:21px}.timeline>ol{margin:0;padding:0;list-style:none}.timeline-item{grid-template-columns:88px minmax(0,1fr);gap:24px;padding-bottom:24px;display:grid}.timeline-item>div:last-child{border-left:1px solid var(--control);padding-left:24px}.timeline-item:last-child{padding-bottom:0}.timeline-date{color:var(--muted);padding-top:4px;font-size:14px}.timeline-item h4{margin:0 0 8px;font-size:18px}.timeline-item p{margin:0;font-size:16px;line-height:1.85}.callout{background:var(--surface);border-radius:8px;margin:32px 0;font-size:16px}.callout summary{min-height:44px;color:var(--muted);cursor:pointer;align-items:center;gap:8px;padding:8px 16px;font-size:14px;list-style:none;display:flex}.callout summary::-webkit-details-marker{display:none}.callout summary:after{content:"+";margin-left:auto}.callout[open]>summary:after{content:"−"}.callout-body{padding:4px 16px 16px}.callout-body p:last-child{margin-bottom:0}.addendum{border-top:1px solid var(--line);margin-top:48px;padding-top:24px}.addendum header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:16px;display:flex}.addendum header h2{margin:0;font-size:21px}.addendum time{color:var(--muted);font-size:13px}.addendum p{margin-bottom:20px}.footnotes{border-top:1px solid var(--line);color:var(--muted);margin-top:48px;padding-top:24px}.prose .footnotes>h2{color:var(--muted);margin:0 0 12px;font-size:13px;font-weight:500}.footnote{color:var(--muted);grid-template-columns:20px minmax(0,1fr) 28px;align-items:start;gap:12px;padding:8px 0;scroll-margin-top:112px;font-size:14px;line-height:1.8;display:grid}.footnote p{margin:0}.footnote p+p{margin-top:8px}.footnote-number{font-variant-numeric:tabular-nums}.footnote-back{min-width:28px;min-height:28px;color:var(--muted);border-radius:4px;justify-content:center;align-items:center;display:inline-flex}.footnote-ref{border-radius:4px;justify-content:center;align-items:center;min-width:24px;min-height:24px;scroll-margin-top:112px;font-size:11px;line-height:1;display:inline-flex}.footnote-marker{vertical-align:super;font-size:.65em;line-height:0}.footnote-back:hover,.footnote-ref:hover{background:var(--surface);color:var(--ink)}.article-like{color:var(--muted);margin:0;line-height:0}.like-button{width:44px;min-height:44px;color:var(--muted);background:0 0;border:0;border-radius:50%;justify-content:center;align-items:center;padding:0;display:inline-flex;position:relative}.like-heart{width:20px;height:20px}.like-button:hover{background:var(--surface);color:var(--heart)}.like-button[aria-pressed=true]{color:var(--heart)}.like-button[aria-pressed=true] .like-heart{fill:currentColor}.celebrate .like-heart{animation:.36s ease-out heart-pop}@keyframes heart-pop{0%,to{transform:scale(1)}45%{transform:scale(1.25)rotate(-8deg)}}.project-grid{grid-template-columns:1fr 1fr;gap:40px;max-width:720px;margin:16px auto 32px;display:grid}.project-card{border-top:1px solid var(--line);padding:24px 0}.project-card h2{margin:16px 0;font-size:22px}.project-card p{color:var(--muted);font-size:15px}.project-card small{color:var(--muted);margin-top:16px;font-size:13px;display:block}.text-link{align-items:center;min-height:44px;font-size:15px;display:inline-flex}.button-link{background:var(--green);color:var(--paper);border-radius:6px;align-items:center;min-height:44px;margin-bottom:24px;padding:8px 20px;font-size:15px;display:inline-flex}@container reading (width>=960px){.article-page{grid-template-columns:200px minmax(0,var(--reading-measure));max-width:calc(264px + var(--reading-measure));column-gap:64px;margin-inline:auto;display:grid}.article-page .article-header,.article-page .article-meta{grid-column:2;width:100%}.article-page .reading-grid{grid-column:1/-1;grid-template-columns:200px minmax(0,var(--reading-measure));align-items:start;column-gap:64px;width:100%;display:grid}.reading-grid>.prose{grid-area:1/2}.reading-rail{grid-area:1/1;align-self:stretch;margin:0}.toc{flex-direction:column;gap:16px;height:calc(100dvh - 112px);display:flex;position:sticky;top:88px}.toc details{min-height:0;overflow-y:auto}.toc .back-to-top{width:auto;box-shadow:none;background:0 0;border:0;border-radius:6px;flex-shrink:0;align-self:flex-start;gap:8px;margin-top:auto;padding-inline:12px;position:static}.toc .back-to-top:hover{background:var(--surface)}.toc .back-to-top-text{font-size:13px;display:inline}.reading-scrolled .article-header{padding-left:0}.reading-scrolled .article-header h1{font-size:20px}}@media (width>=1024px){.reading-page .site-header{width:min(910px,100% - 64px)}}@media (width<=960px){.home-columns,.home-today{grid-template-columns:1fr 1.6fr;gap:40px}.home-columns.with-building{grid-template-columns:1fr 1fr;gap:40px}.with-building .home-writing{grid-column:1/-1}}@media (width<=640px){body{font-size:17px}.shell,.reading-page>main,.reading-page .site-header{width:calc(100% - 40px)}.site-header{padding-block:6px}.home{margin-top:24px}.home-today{margin-bottom:32px;padding-bottom:24px;display:block}.home-today h2{margin-bottom:16px}.home-columns,.home-columns.with-building{flex-direction:column;gap:32px;display:flex}.home-columns>section,.home-sidebar{width:100%}.home-sidebar{gap:32px}.home h2{margin-bottom:16px}.home-writing .empty-writing{text-align:left;align-items:flex-start;min-height:180px;padding:28px 0}.home-projects .home-links{grid-template-columns:1fr;gap:24px;display:grid}.home-projects .home-links li,.home-links li{margin-bottom:0}.writing-links .featured h3{font-size:22px}.writing-links>li{margin-bottom:24px;padding-bottom:24px}.home-newsletter{margin-top:32px;display:block}.home-newsletter h2{margin-bottom:8px}.page-heading{padding:20px 0 24px}.page-heading h1{font-size:28px}.year-group{grid-template-columns:1fr;gap:8px;margin-bottom:32px}.year-group>h2{padding-top:8px}.archive-entry .card-title h3{font-size:17px}.card-title{gap:16px}.card-title h3{font-size:19px}.article-page{--reading-font-size:16px;padding-top:12px}.article-header{gap:16px;margin-bottom:24px;padding-block:8px}.article-header h1{font-size:24px}.reading-scrolled .article-header{margin-bottom:calc(24px + var(--expanded-title-height,60px) - 60px)}.reading-scrolled .article-header h1{font-size:15px}.prose{font-size:16px}.prose h2{margin-top:2.2em;font-size:20px}.timeline{padding:20px}.timeline-item{grid-template-columns:1fr;gap:8px}.timeline-date{padding:0}.project-grid{grid-template-columns:1fr;gap:24px}.footer-spacer{display:none}.site-footer{margin-top:48px}}@media (width<=380px){.shell,.reading-page>main,.reading-page .site-header{width:calc(100% - 32px)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}.reading-scrolled .article-header{padding-left:176px}@container reading (width>=960px){.reading-scrolled .article-header{padding-left:0}}
