@charset "UTF-8";:root{--font-body:Newsreader, Georgia, Times New Roman, serif;--font-mono:SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, monospace;--type-body:1.125rem;--type-body-sm:0.9375rem;--type-body-lg:1.25rem;--type-label:0.8125rem;--type-profile-name:clamp(1.9rem, 4vw, 2.5rem);--type-page-title:clamp(1.9rem, 4vw, 2.5rem);--type-post-title:clamp(2.35rem, 6vw, 3.4rem);--leading-body:1.68;--leading-body-loose:1.78;--leading-reading:1.82;--bg:#fafaf8;--text:#1c1917;--text-2:#57534e;--text-3:#78716c;--border:#e7e5e4;--link:#1d4ed8;--link-hover:#1e40af;--code-bg:#f3f1ed;--code-surface:#f6f3ee;--code-header-bg:#ebe5dc;--code-border-strong:#d6d0c6;--code-text:#2b2723;--code-muted:#6b6258;--code-accent:#9a3412;--quote-accent:#b45309}@media(prefers-color-scheme:dark){:root{--bg:#1a1916;--text:#eae3d7;--text-2:#b2a99f;--text-3:#7d7570;--border:#2e2b23;--link:#89b4f8;--link-hover:#a8c7fb;--code-bg:#222019;--code-surface:#1e1c15;--code-header-bg:#28261e;--code-border-strong:#3d3a30;--code-text:#dfd8cb;--code-muted:#8c847c;--code-accent:#e8855c;--quote-accent:#d97706}}body{font-family:var(--font-body);background:var(--bg);font-size:var(--type-body);line-height:var(--leading-body);color:var(--text)}a{color:var(--link);text-decoration:underline;text-decoration-color:transparent;text-underline-offset:3px;transition:color .15s ease,text-decoration-color .15s ease}a:hover{color:var(--link-hover);text-decoration-color:initial}h1,h2,h3,h4,h5,h6{color:var(--text);line-height:1.2;font-weight:500}p{color:inherit;line-height:inherit;margin-bottom:1rem}.page-title{font-size:var(--type-page-title);line-height:1.12;font-weight:500;color:var(--text);letter-spacing:-.015em}.home-name,.about-name{font-size:var(--type-profile-name);line-height:1.12;font-weight:500;color:var(--text);letter-spacing:-.015em}.blog-post-title{font-size:var(--type-post-title);line-height:1.08;font-weight:400;color:var(--text);letter-spacing:-.02em}.page-description,.author-card-name,.post-faq-title,.faq-question,.faq-answer,.empty-state,.pillar-description{font-size:var(--type-body-lg);line-height:1.55}.home-role,.section-heading a,.post-item-date,.post-meta-row,.author-card-bio,.post-nav-title,.footer-inner,.pagination,.about-role,.about-location{font-size:var(--type-body-sm);line-height:1.5}.year-label,.section-heading span,.post-category-label,.related-posts-label,.post-nav-label,.talk-conference-name,.references-title,.pillar-label{font-size:var(--type-label);font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-3)}.home-bio{font-size:var(--type-body);line-height:var(--leading-body-loose);color:var(--text-2)}.home-bio .focus-areas li,.tag-chip,.talk-link,.author-card-role{font-size:var(--type-label)}.post-item-desc,.post-content blockquote cite,.post-content pre code,.post-content img+em,.post-content table,.reference-item{font-size:var(--type-body-sm)}.post-content{font-size:var(--type-body);line-height:var(--leading-reading);color:var(--text-2)}*:focus-visible{outline:2px solid var(--link);outline-offset:3px;border-radius:2px}.page-header{max-width:700px;margin:0 auto;padding:3rem 1.5rem 2rem;border-bottom:1px solid var(--border);margin-bottom:2rem}.page-description{color:var(--text-2);margin-top:.75rem}.page-description p{margin-bottom:0}.post-list{list-style:none;padding:0;margin:0}.post-item{padding:1.25rem 0;border-bottom:1px solid var(--border)}.post-item:last-child{border-bottom:none}@media(min-width:640px){.post-item{display:flex;align-items:baseline;gap:1.5rem}}.post-item-date{display:block;color:var(--text-3);flex-shrink:0;font-variant-numeric:tabular-nums;margin-bottom:.25rem}@media(min-width:640px){.post-item-date{width:100px;margin-bottom:0}}.post-item-body{flex:1;min-width:0}.post-item-title{font-size:var(--type-body-lg);line-height:1.35;display:block;color:var(--text);text-decoration:none;font-weight:500;transition:color .15s ease}.post-item-title:hover{color:var(--link)}.post-item-desc{margin-top:.25rem;color:var(--text-2);line-height:1.6;margin-bottom:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.year-group{margin-bottom:2.5rem}.year-label{border-bottom:1px solid var(--border);padding-bottom:.65rem;margin-bottom:0}.home-intro{max-width:700px;margin:0 auto;padding:4rem 1.5rem 3rem}@media(min-width:640px){.home-intro{display:flex;align-items:flex-start;gap:2.5rem;padding-top:5rem}}.home-photo{flex-shrink:0;margin-bottom:1.5rem}.home-photo img{width:80px;height:80px;border-radius:50%;object-fit:cover;object-position:top center}@media(min-width:640px){.home-photo img{width:96px;height:96px}}.home-content{flex:1;min-width:0}.home-name{margin-bottom:.4rem}.home-role{color:var(--text-2);margin-bottom:1.25rem;letter-spacing:0}.home-bio p{margin-bottom:1rem}.home-bio p:last-child{margin-bottom:0}.home-bio strong{color:var(--text);font-weight:600}.home-bio a{font-weight:500}.home-bio .focus-areas{display:flex;flex-wrap:wrap;gap:.4rem;list-style:none;margin:1.5rem 0 0;padding:0}.home-bio .focus-areas li{color:var(--text-3);background:0 0;border:1px solid var(--border);border-radius:4px;padding:.25em .65em;white-space:nowrap;line-height:1.6;letter-spacing:.01em}.recent-posts{max-width:700px;margin:0 auto;padding:0 1.5rem 5rem}.section-heading{display:flex;align-items:baseline;justify-content:space-between;border-bottom:1px solid var(--border);padding-bottom:.75rem;margin-bottom:0}.section-heading a{color:var(--text-2);text-decoration:none;transition:color .15s ease}.section-heading a:hover{color:var(--link)}.blog-posts{max-width:700px;margin:0 auto;padding:0 1.5rem 5rem}.post-header{max-width:700px;margin:0 auto;padding:3rem 1.5rem 2rem}.post-category-label{color:var(--link);display:block;margin-bottom:.75rem;text-decoration:none}.blog-post-title{margin-bottom:1rem}.post-meta-row{display:flex;align-items:center;gap:.5rem;color:var(--text-2);margin-bottom:1rem;flex-wrap:wrap}.meta-sep{color:var(--border)}.post-tags-row{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.75rem}.tag-chip{color:var(--text-2);border:1px solid var(--border);padding:.15rem .5rem;border-radius:3px;text-decoration:none;transition:color .15s ease,border-color .15s ease}.tag-chip:hover{color:var(--link);border-color:var(--link)}.post-content{max-width:700px;margin:0 auto;padding:2rem 1.5rem 0;color:var(--text)}.post-content p{margin-bottom:1.5em}.post-content>p:first-of-type{font-size:var(--type-body-lg);line-height:1.7;color:var(--text);margin-bottom:1.75rem}.post-content a{color:var(--link);text-decoration:underline;text-underline-offset:3px;transition:color .15s ease}.post-content a:hover{color:var(--link-hover)}.post-content strong{color:var(--text);font-weight:600}.post-content em{font-style:italic}.post-content h1,.post-content h2,.post-content h3,.post-content h4,.post-content h5,.post-content h6{color:var(--text);margin-top:2.5em;margin-bottom:.75em;line-height:1.2;letter-spacing:-.01em;position:relative}.post-content h1{font-size:2rem;font-weight:500}.post-content h2{font-size:1.6rem;font-weight:500}.post-content h3{font-size:1.3rem;font-weight:500}.post-content h4{font-size:1.125rem;font-weight:500}.post-content h5{font-size:1rem;font-weight:500;color:var(--text-2)}.post-content ul,.post-content ol{margin:.75em 0 1.5em 1.5em}.post-content li{margin-bottom:.4em;line-height:1.75}.post-content li>ul,.post-content li>ol{margin:.3em 0 .5em}.post-content ul{list-style-type:disc}.post-content ol{list-style-type:decimal}.post-content blockquote{border-left:3px solid var(--quote-accent);background:linear-gradient(to right,color-mix(in srgb,var(--quote-accent) 5%,transparent),transparent);margin:2em 0;padding:1rem 1.25rem 1rem 1.5rem;border-radius:0 4px 4px 0}.post-content blockquote p{font-style:italic;color:var(--text);line-height:1.75;margin-bottom:.5em}.post-content blockquote p:last-of-type{margin-bottom:0}.post-content blockquote cite{display:block;font-style:normal;color:var(--text-3);margin-top:.75rem;text-align:right}.post-content code{font-family:var(--font-mono);font-size:.875em;background:var(--code-bg);color:var(--code-text);padding:.15em .4em;border-radius:3px;border:1px solid var(--border)}.post-content pre{margin:2em 0;border-radius:6px;overflow:hidden;border:1px solid var(--code-border-strong);background:var(--code-surface)}.post-content pre code{font-family:var(--font-mono);line-height:1.65;color:var(--code-text);display:block;padding:1.25rem 1.5rem;background:0 0;border:none;border-radius:0;white-space:pre;overflow-x:auto}.post-content .highlight{margin:2em 0;border-radius:6px;overflow:hidden;border:1px solid var(--code-border-strong);position:relative;background:var(--code-surface)}.post-content .highlight pre{margin:0;border:none;border-radius:0}.post-content .chroma{background:0 0;color:var(--code-text);-webkit-text-size-adjust:none}.post-content .chroma .line{display:flex}.post-content .chroma .ln,.post-content .chroma .lnt{color:color-mix(in srgb,var(--code-muted) 78%,white);user-select:none;margin-right:.75rem;padding-right:.75rem;border-right:1px solid rgba(154,52,18,.12)}.post-content .chroma .hl{background:rgba(180,83,9,9%)}.post-content .chroma .err{color:#8f1d1d;background:rgba(185,28,28,.1)}.post-content .chroma .c,.post-content .chroma .ch,.post-content .chroma .cm,.post-content .chroma .c1,.post-content .chroma .cs,.post-content .chroma .cp,.post-content .chroma .cpf{color:var(--code-muted);font-style:italic}.post-content .chroma .k,.post-content .chroma .kc,.post-content .chroma .kd,.post-content .chroma .kn,.post-content .chroma .kp,.post-content .chroma .kr,.post-content .chroma .kt{color:#b54708;font-weight:600}.post-content .chroma .na,.post-content .chroma .nb,.post-content .chroma .bp,.post-content .chroma .nc,.post-content .chroma .nd,.post-content .chroma .ne,.post-content .chroma .nf,.post-content .chroma .fm,.post-content .chroma .nl,.post-content .chroma .nn,.post-content .chroma .nx{color:#7c3f00}.post-content .chroma .no,.post-content .chroma .nv,.post-content .chroma .vc,.post-content .chroma .vg,.post-content .chroma .vi,.post-content .chroma .vm{color:#9a3412}.post-content .chroma .nt,.post-content .chroma .o,.post-content .chroma .ow{color:#c2410c}.post-content .chroma .l,.post-content .chroma .m,.post-content .chroma .mb,.post-content .chroma .mf,.post-content .chroma .mh,.post-content .chroma .mi,.post-content .chroma .il,.post-content .chroma .mo{color:#0f766e}.post-content .chroma .s,.post-content .chroma .sa,.post-content .chroma .sb,.post-content .chroma .sc,.post-content .chroma .dl,.post-content .chroma .sd,.post-content .chroma .s2,.post-content .chroma .se,.post-content .chroma .sh,.post-content .chroma .si,.post-content .chroma .sx,.post-content .chroma .sr,.post-content .chroma .s1,.post-content .chroma .ss{color:#1d4ed8}.post-content .chroma .p{color:color-mix(in srgb,var(--code-text) 84%,white)}.post-content .chroma .gd{color:#8f1d1d;background:rgba(185,28,28,.1)}.post-content .chroma .gi{color:#166534;background:rgba(22,101,52,.1)}.post-content .chroma .ge{font-style:italic}.post-content .chroma .gl{text-decoration:underline}.post-content .code-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;background:color-mix(in srgb,var(--code-surface) 72%,white);border-bottom:1px solid var(--code-border-strong)}.post-content .code-lang{font-family:var(--font-mono);font-size:.6875rem;color:var(--code-muted);text-transform:uppercase;letter-spacing:.08em;user-select:none}.post-content .copy-btn{display:inline-flex;align-items:center;gap:.35rem;font-size:.75rem;color:var(--code-muted);background:0 0;border:1px solid color-mix(in srgb,var(--code-border-strong) 86%,white);cursor:pointer;padding:.25rem .5rem;border-radius:999px;transition:color .15s ease,background .15s ease,border-color .15s ease;line-height:1}.post-content .copy-btn svg{width:13px;height:13px;flex-shrink:0}.post-content .copy-btn:hover{color:var(--code-accent);background:color-mix(in srgb,var(--code-surface) 82%,white);border-color:color-mix(in srgb,var(--code-accent) 22%,var(--code-border-strong))}.post-content .copy-btn.copied{color:var(--code-accent);background:color-mix(in srgb,var(--code-surface) 82%,white);border-color:color-mix(in srgb,var(--code-accent) 22%,var(--code-border-strong))}.post-content img{max-width:100%;height:auto;display:block;margin:2.5em auto;border-radius:6px;box-shadow:0 2px 12px rgba(0,0,0,8%),0 1px 3px rgba(0,0,0,6%)}.post-content img+em{display:block;text-align:center;font-style:italic;color:var(--text-3);margin-top:-1.75em;margin-bottom:2.5em;line-height:1.5}.post-content hr{border:none;border-top:1px solid var(--border);margin:3em auto;width:60%}.post-content table{width:100%;border-collapse:collapse;margin:1.5em 0}.post-content th{text-align:left;font-weight:600;color:var(--text);padding:.5rem .75rem;border-bottom:2px solid var(--border)}.post-content td{padding:.5rem .75rem;border-bottom:1px solid var(--border);color:var(--text-2)}.post-content tr:last-child td{border-bottom:none}.post-content h1:hover .anchor-link,.post-content h2:hover .anchor-link,.post-content h3:hover .anchor-link{opacity:1}.post-content .anchor-link{position:absolute;left:-1.25rem;opacity:0;color:var(--text-3);text-decoration:none;font-weight:400;font-size:1rem;transition:opacity .15s ease}.post-content .anchor-link:hover{color:var(--link);opacity:1}.author-card{display:flex;align-items:flex-start;gap:1rem;max-width:700px;margin:3rem auto 0;padding:1.5rem;background:var(--code-bg);border:1px solid var(--border);border-radius:8px}.author-card .author-card-photo{width:56px;height:56px;border-radius:50%;object-fit:cover;flex-shrink:0}.author-card .author-card-body{display:flex;flex-direction:column;gap:.2rem;min-width:0}.author-card .author-card-name{font-weight:600;color:var(--text);text-decoration:none}.author-card .author-card-name:hover{color:var(--link)}.author-card .author-card-role{color:var(--text-3)}.author-card .author-card-role a{color:var(--text-3);text-decoration:none}.author-card .author-card-role a:hover{color:var(--link)}.author-card .author-card-bio{margin:.5rem 0 0;color:var(--text-2);line-height:1.6}.post-footer{max-width:700px;margin:3rem auto 0;padding:2rem 1.5rem 5rem;border-top:1px solid var(--border)}.related-posts{margin-bottom:2.5rem}.related-posts-label{margin-bottom:.75rem}.post-nav{display:grid;grid-template-columns:1fr;gap:1rem;margin-top:.5rem}@media(min-width:640px){.post-nav{grid-template-columns:1fr 1fr}}.post-nav-item a{display:flex;flex-direction:column;gap:.25rem;text-decoration:none}.post-nav-item a:hover .post-nav-title{color:var(--link)}.post-nav-next{text-align:right}.post-nav-label{color:var(--text-3);font-weight:500;letter-spacing:.05em}.post-nav-title{color:var(--text-2);line-height:1.4;font-weight:500;transition:color .15s ease}.talks-content{max-width:700px;margin:0 auto;padding:0 1.5rem 5rem}.talk-item{align-items:flex-start}.talk-conference-name{display:block;margin:.2rem 0 .4rem;font-style:italic}.talk-links{display:flex;gap:1.25rem;margin-top:.5rem;flex-wrap:wrap}.talk-link{color:var(--link);text-decoration:none;font-weight:500;transition:text-decoration-color .15s ease}.talk-link:hover{text-decoration:underline;text-underline-offset:3px}.empty-state{padding:4rem 0;text-align:center;color:var(--text-3)}.citation-link{color:var(--link);text-decoration:none;font-size:.8em;vertical-align:super;line-height:1;padding:.1rem .2rem;border-radius:2px;font-weight:600;cursor:pointer;transition:color .15s ease}.citation-link:hover{color:var(--link-hover)}.references-section{margin-top:3rem;padding-top:2rem;border-top:1px solid var(--border)}.references-title{margin-bottom:1rem}.references-list{list-style:none;padding:0;margin:0}.reference-item{display:flex;gap:.75rem;margin-bottom:.75rem;line-height:1.6}.reference-number{font-weight:600;color:var(--text-3);flex-shrink:0;min-width:1.5rem}.reference-content{color:var(--text-2)}.reference-link{color:var(--link);text-decoration:underline;text-underline-offset:2px}.reference-link:hover{color:var(--link-hover)}.back-link{color:var(--text-3);text-decoration:none;margin-left:.25rem;font-size:.8em;transition:color .15s ease}.back-link:hover{color:var(--link)}.reading-intro{padding-top:0}.reading-intro p:last-child{margin-bottom:0}.reading-shelves{max-width:700px;margin:0 auto;padding:1rem 1.5rem 5rem}.reading-shelf+.reading-shelf{margin-top:3rem;padding-top:2rem;border-top:1px solid var(--border)}.reading-shelf-description{font-size:var(--type-body-sm);line-height:var(--leading-body);color:var(--text-2);margin-top:.75rem}.reading-book-list{list-style:none;padding:0;margin:1.5rem 0 0}.reading-book-card{display:grid;grid-template-columns:72px minmax(0,1fr);gap:1rem;align-items:start;padding:1.25rem 0;border-bottom:1px solid var(--border)}.reading-book-card:last-child{border-bottom:none}.reading-book-cover{display:block;width:72px;border-radius:8px;overflow:hidden;transition:opacity .15s ease}.reading-book-cover img{display:block;width:100%;height:auto}.reading-book-cover:hover{opacity:.9}.reading-book-body{min-width:0}.reading-book-meta,.reading-book-footer{display:flex;flex-wrap:wrap;gap:.5rem .75rem}.reading-book-meta{font-size:var(--type-label);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-3);margin-bottom:.5rem}.reading-book-title{font-size:1.1rem;line-height:1.35;font-weight:650;color:var(--text);letter-spacing:-.015em;margin-bottom:.3rem}.reading-book-title a{color:inherit;text-decoration:none}.reading-book-title a:hover{color:var(--link)}.reading-book-author{font-size:var(--type-body-sm);line-height:1.5;color:var(--text-2);margin-bottom:.65rem}.reading-book-summary{font-size:var(--type-body-sm);line-height:1.65;color:var(--text-2);margin-bottom:.85rem}.reading-book-footer{font-size:var(--type-body-sm);line-height:1.4;color:var(--text-3)}.reading-book-stat{position:relative}.reading-book-stat+.reading-book-stat::before{content:"•";margin-right:.75rem;color:var(--border)}.social-links{display:flex;align-items:center;gap:1.25rem;margin-top:1.25rem}.social-link{color:var(--text-3);text-decoration:none;display:flex;align-items:center;padding:.25rem;transition:color .15s ease}.social-link svg{width:18px;height:18px;display:block}.social-link:hover{color:var(--text)}.site-footer{border-top:1px solid var(--border);padding:2rem 0;margin-top:0}.footer-inner{max-width:700px;margin:0 auto;padding:0 1.5rem;display:flex;justify-content:space-between;align-items:center;color:var(--text-3)}.footer-inner a{color:var(--text-3);text-decoration:none;transition:color .15s ease}.footer-inner a:hover{color:var(--text)}.footer-meta{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.footer-rss-link{display:inline-flex;align-items:center;gap:.35rem}.footer-rss-link svg{display:block;flex-shrink:0}.footer-nav{display:flex;gap:1.5rem}@media(max-width:480px){.footer-nav{display:none}}.pagination{display:flex;justify-content:center;align-items:center;gap:.5rem;margin-top:3rem}.pagination a,.pagination span{padding:.4rem .75rem;border:1px solid var(--border);border-radius:4px;color:var(--text-2);text-decoration:none;transition:color .15s ease}.pagination a:hover{color:var(--link);border-color:var(--link)}.pagination .active{color:var(--link);border-color:var(--link);font-weight:600}.about-header{display:flex;align-items:center;gap:2rem;max-width:700px;margin:0 auto;padding:3.5rem 1.5rem 2.5rem;border-bottom:1px solid var(--border)}@media(max-width:480px){.about-header{flex-direction:column;align-items:flex-start;gap:1.25rem}}.about-photo img{width:120px;height:120px;border-radius:50%;object-fit:cover;flex-shrink:0}.about-name{margin:0 0 .35rem}.about-role{color:var(--text-2);margin:0 0 .2rem}.about-role a{color:var(--text-2);text-decoration:none}.about-role a:hover{color:var(--link)}.about-location{color:var(--text-3);margin:0}.about-content{padding-bottom:0;padding-top:2.5rem}.about-content p:first-child{line-height:var(--leading-body-loose)}.about-recent-posts{max-width:700px;margin:3rem auto 0;padding:0 1.5rem}.about-social{max-width:700px;margin:2.5rem auto 5rem;padding:0 1.5rem;padding-top:1.5rem;border-top:1px solid var(--border)}.post-faq{max-width:700px;margin:0 auto;padding:3rem 1.5rem 0;border-top:1px solid var(--border)}.post-faq-title{font-weight:700;color:var(--text);margin-bottom:.75rem}.faq-item{border-bottom:1px solid var(--border)}.faq-item:first-of-type{border-top:1px solid var(--border)}.faq-question{font-weight:600;color:var(--text);padding:.875rem 0;cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:1rem;user-select:none}.faq-question::-webkit-details-marker{display:none}.faq-question::after{content:'+';font-size:1.125rem;font-weight:400;color:var(--text-3);flex-shrink:0;line-height:1}details[open]>.faq-question::after{content:'−'}.faq-answer{padding:0 0 1.25rem;color:var(--text-2);line-height:1.7}.faq-answer p:last-child{margin-bottom:0}.pillar-label{display:block;margin-bottom:.5rem}.pillar-description{color:var(--text-2);margin-top:.75rem;max-width:640px}.pillar-intro{padding-bottom:0}.pillar-posts{max-width:700px;margin:2.5rem auto 0;padding:0 1.5rem 5rem}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media(prefers-color-scheme:dark){.post-content img{box-shadow:none;outline:1px solid var(--border)}}