:root{--ink:#111;--ink-soft:#4f4f4f;--ink-faint:#6b6b6b;--rule:#e6e6e6;--paper:#fff;--rail-paper:#fafafa;--measure:40rem;--rail-left:15rem;--rail-right:16.25rem}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:1.0625rem;line-height:1.7}.skip-link{background:var(--ink);color:var(--paper);z-index:10;padding:.5rem 1rem;position:absolute;top:0;left:-9999px}.skip-link:focus-visible{left:0}.shell{grid-template-columns:var(--rail-left) minmax(0, 1fr) var(--rail-right);align-items:start;min-height:100vh;display:grid}.rail{max-height:100vh;padding:2rem 1.75rem;position:sticky;top:0;overflow-y:auto}.rail-left{background:var(--rail-paper);border-right:1px solid var(--rule);flex-direction:column;min-height:100vh;display:flex}.site-name{letter-spacing:-.01em;margin:0;font-weight:600}.site-nav{margin-top:3rem}.site-nav ul{flex-direction:column;gap:1.1rem;margin:0;padding:0;list-style:none;display:flex}.site-nav a{color:var(--ink-soft);text-decoration:none}.site-nav a:hover{color:var(--ink);text-underline-offset:.2em;text-decoration:underline}.rail-bottom{margin:auto 0 0;padding-top:2rem}.rail-socials{flex-wrap:wrap;gap:.5rem;margin:0 0 1.25rem;padding:0;list-style:none;display:flex}.rail-social-link{border:1px solid var(--rule);width:2.25rem;height:2.25rem;color:var(--ink-soft);background:var(--paper);border-radius:.375rem;justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.rail-social-link:hover{color:var(--ink);border-color:var(--ink-faint)}.rail-social-link svg{width:1rem;height:1rem;display:block}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.rail-footer{letter-spacing:.04em;color:var(--ink-faint);margin:0;font-size:.75rem}.rail-block{margin-bottom:2.75rem}.rail-label{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);margin:0 0 1rem;font-size:.75rem;font-weight:600}.rail-list{flex-direction:column;gap:.55rem;margin:0;padding:0;font-size:.9375rem;list-style:none;display:flex}.rail-list a{color:var(--ink-soft);text-decoration:none}.rail-list a:hover{color:var(--ink);text-underline-offset:.2em;text-decoration:underline}.rail-index{margin:0;padding:0;list-style:none}.rail-index li{border-top:1px solid var(--rule);align-items:center;gap:.75rem;padding:.7rem 0;display:flex}.rail-product-icon{object-fit:cover;border-radius:.375rem;flex:none;width:2.5rem;height:2.5rem}.rail-num{color:var(--ink-faint);font-variant-numeric:tabular-nums;font-size:.8125rem}.rail-item-text{flex-direction:column;gap:.05rem;display:flex}.rail-item-text a{color:var(--ink);font-weight:500;text-decoration:none}.rail-item-text a:hover{text-underline-offset:.2em;text-decoration:underline}.rail-item-sub{color:var(--ink-faint);white-space:nowrap;text-overflow:ellipsis;max-width:11rem;font-size:.8125rem;overflow:hidden}main{min-width:0;padding:0 clamp(1.5rem,6vw,4.5rem);container:content/inline-size}main>section,main>.site-footer{max-width:var(--measure);text-align:center;margin-inline:auto}.content-section{border-top:1px solid var(--rule);padding:3.5rem 0;scroll-margin-top:1.5rem}h1{letter-spacing:-.03em;margin:0 0 1.25rem;font-size:clamp(2.5rem,7vw,3.75rem);font-weight:650;line-height:1.05}h2{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);margin:0 0 1.75rem;font-size:.8125rem;font-weight:600}h3{letter-spacing:-.01em;margin:0;font-size:1.0625rem;font-weight:600}p{margin:0 0 1rem}.hero{padding:clamp(3rem,7vw,5rem) 0 4rem}.hero-greeting{color:var(--ink-faint);margin-bottom:.5rem;font-size:.9375rem}.hero-headline{letter-spacing:-.01em;max-width:34rem;margin-inline:auto;font-size:1.25rem;font-weight:500;line-height:1.55}.hero-subheadline{color:var(--ink-soft);max-width:36rem;margin-inline:auto}.tag-list{flex-wrap:wrap;justify-content:center;gap:.5rem;margin:1.75rem 0 0;padding:0;list-style:none;display:flex}.tag-list li{border:1px solid var(--rule);color:var(--ink-soft);border-radius:999px;padding:.15rem .75rem;font-size:.8125rem}.hero-actions{flex-wrap:wrap;justify-content:center;gap:.75rem;margin-top:2.25rem;display:flex}.button{border:1px solid var(--ink);background:var(--ink);color:var(--paper);border-radius:.375rem;padding:.6rem 1.25rem;font-size:.9375rem;text-decoration:none;display:inline-block}.button:hover{background:#000}.button-secondary{color:var(--ink);background:0 0}.button-secondary:hover{background:#f5f5f5}.section-lead{max-width:36rem;margin-inline:auto;font-size:1.125rem;line-height:1.6}.product-list,.work-list,.social-list{margin:0;padding:0;list-style:none}.product{border-top:1px solid var(--rule);text-align:left;grid-template-columns:2.5rem minmax(0,1fr);align-items:start;column-gap:1rem;padding:1.5rem 0;scroll-margin-top:1.5rem;display:grid}.product:first-child{border-top:none;padding-top:0}.product-icon{object-fit:cover;border-radius:.375rem;width:2.5rem;height:2.5rem;display:block}.product-body p{color:var(--ink-soft);max-width:36rem;margin-inline:0}.product-link{margin-bottom:0}.product-link a,.social-list a{color:var(--ink);text-underline-offset:.2em;text-decoration:underline}#work{text-align:left}.work-group .work-list{text-align:left;grid-template-columns:1fr 1fr;gap:.5rem 2rem;display:grid}.work-item{grid-row:span 4;grid-template-columns:minmax(0,1fr);grid-template-rows:subgrid;text-align:left;border-top:1px solid var(--rule);justify-items:start;padding:1rem 0;display:grid}.work-item:nth-child(2n){text-align:right;justify-items:end}.work-item:nth-child(-n+2){border-top-color:#0000}.work-item:nth-child(n+3){margin-top:1.5rem}.work-num{color:var(--ink-faint);font-variant-numeric:tabular-nums;font-size:.8125rem;display:block}.work-item-body{display:contents}.work-item-heading{margin:0}.work-item-meta{color:var(--ink-faint);margin:.25rem 0 0;font-size:.8125rem}.work-item p{color:var(--ink-soft);margin:0}@container content (width<=599px){.work-group .work-list{grid-template-columns:1fr}.work-item:nth-child(2n){text-align:left;justify-items:start}.work-item:nth-child(-n+2){border-top-color:var(--rule)}.work-item:first-child{border-top-color:#0000}.work-item:nth-child(n+3){margin-top:0}.work-item:nth-child(n+2){margin-top:1.5rem}}#about p{max-width:38rem;margin-inline:auto}.contact-note{color:var(--ink-soft);max-width:36rem;margin-inline:auto}.social-list{flex-wrap:wrap;justify-content:center;gap:1.5rem;margin-top:1.5rem;display:flex}.site-footer{border-top:1px solid var(--rule);color:var(--ink-faint);padding:2rem 0 3rem;font-size:.875rem}.footer-attribution-inline{margin-bottom:0;display:none}a:focus-visible,button:focus-visible{outline:2px solid var(--ink);outline-offset:3px;border-radius:2px}@media (width<=1100px){.shell{grid-template-columns:var(--rail-left) minmax(0, 1fr)}.rail-right{display:none}}@media (width<=760px){.shell{grid-template-columns:minmax(0,1fr)}.rail-left{border-right:none;border-bottom:1px solid var(--rule);min-height:0;padding:1.25rem 1.5rem;position:static}.site-nav{margin-top:1rem}.site-nav ul{flex-flow:wrap;gap:1.25rem}.rail-bottom{margin-top:1.25rem;padding-top:0}.rail-socials{margin-bottom:0}.rail-footer,.rail-right{display:none}main{padding:0 1.5rem}.hero{padding-top:2.5rem}.work-item-heading{flex-direction:column;gap:.15rem}.footer-attribution-inline{display:block}}.work-group{text-align:left;margin-bottom:4rem}.work-group:last-child{margin-bottom:0}.work-group-title{margin-bottom:.25rem;font-size:1.25rem}.work-group-note{color:var(--ink-faint);margin-bottom:.5rem;font-size:.875rem}.work-item-link{margin:0}.work-item-link a{color:var(--ink);text-underline-offset:.2em;font-size:.9375rem;text-decoration:underline}.work-item-note{color:var(--ink-faint);font-size:.8125rem}h4{letter-spacing:-.01em;margin:0;font-size:1.0625rem;font-weight:600}.site-name a{color:inherit;text-decoration:none}.site-nav a[aria-current=page]{font-weight:650}.main-sub>section{text-align:left}.subpage{padding:3.5rem 0}.subpage h1{letter-spacing:-.02em;margin:0 0 1.5rem;font-size:clamp(1.75rem,4vw,2.25rem)}.subpage h2{margin:0 0 1rem;font-size:1.25rem}.crumb{margin:0 0 1rem}.quiet-link{color:var(--ink-soft);font-size:.9375rem}.toolbar{flex-direction:column;gap:1rem;margin-bottom:2rem;display:flex}.toolbar input[type=search]{border:1px solid var(--rule);background:var(--paper);width:100%;color:var(--ink);font:inherit;padding:.5rem .75rem;font-size:.9375rem}.toolbar-row{align-items:center;gap:1rem;display:flex}.sort-label{color:var(--ink-faint);align-items:center;gap:.5rem;font-size:.8125rem;display:inline-flex}.sort-label select{font:inherit;color:var(--ink);background:var(--paper);border:1px solid var(--rule);padding:.25rem .5rem;font-size:.8125rem}.chip-row{flex-wrap:wrap;gap:.25rem 1rem;display:flex}.chip{font:inherit;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);cursor:pointer;background:0 0;border:none;border-bottom:1.5px solid #0000;padding:.25rem 0;font-size:.75rem;font-weight:520}.chip-on{color:var(--ink);border-bottom-color:var(--ink)}.quiet-btn{font:inherit;border:none;border-bottom:1px solid var(--rule);color:var(--ink-soft);cursor:pointer;background:0 0;padding:.125rem 0;font-size:.8125rem}.quiet-btn:hover{color:var(--ink);border-bottom-color:var(--ink)}.quiet-btn[disabled]{opacity:.55;cursor:wait}.rx-btn{font:inherit;color:var(--ink-soft);cursor:pointer;background:0 0;border:none;border-bottom:1.5px solid #0000;padding:.125rem;font-size:.875rem;line-height:1.2}.rx-on{border-bottom-color:var(--ink)}.rx-btn[disabled]{opacity:.55;cursor:wait}.state-note{color:var(--ink-faint);font-size:.9375rem}.state-error{color:#b91c1c}.card-grid{text-align:left;grid-template-columns:1fr 1fr;gap:.5rem 2rem;margin:0;padding:0;list-style:none;display:grid}.card{grid-row:span 5;grid-template-columns:minmax(0,1fr);grid-template-rows:subgrid;text-align:left;border-top:1px solid var(--rule);justify-items:start;padding:1rem 0;display:grid}.card:nth-child(2n){text-align:right;justify-items:end}.card:nth-child(2n) .card-tags{justify-content:flex-end}.card:nth-child(-n+2){border-top-color:#0000}.card:nth-child(n+3){margin-top:1.5rem}.card-link{color:inherit;text-decoration:none;display:contents}.card-title{letter-spacing:-.01em;margin:0;font-size:1.0625rem;font-weight:600}.card-meta{color:var(--ink-faint);margin:.25rem 0 0;font-size:.8125rem}.card-desc{color:var(--ink-soft);margin:0}.card-stats{color:var(--ink-faint);margin:0;font-size:.8125rem}.card-tags{letter-spacing:.04em;text-transform:uppercase;color:var(--ink-faint);flex-wrap:wrap;gap:.25rem .75rem;margin:0;font-size:.75rem;display:flex}.card-tags span{border-bottom:1px solid var(--rule)}@container content (width<=599px){.card-grid{grid-template-columns:1fr}.card:nth-child(2n){text-align:left;justify-items:start}.card:nth-child(2n) .card-tags{justify-content:flex-start}.card:nth-child(-n+2){border-top-color:var(--rule)}.card:first-child{border-top-color:#0000}.card:nth-child(n+3){margin-top:0}.card:nth-child(n+2){margin-top:1.5rem}}.post-lead{color:var(--ink-soft);margin:0 0 1rem;font-size:1.125rem}.post-stats{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);color:var(--ink-faint);align-items:center;gap:1.5rem;margin:0 0 2rem;padding:.5rem 0;font-size:.8125rem;display:flex}.post-poster{margin:0 0 2rem}.post-poster img{object-fit:cover;object-position:center;border:1px solid var(--rule);width:100%;max-height:24rem;display:block}.prose{color:var(--ink-soft)}.prose p,.prose ul,.prose ol,.prose blockquote,.prose pre{margin:0 0 1.5rem}.prose h2,.prose h3,.prose h4{color:var(--ink);letter-spacing:-.01em;margin:2rem 0 1rem}.prose a{color:var(--ink);text-underline-offset:.2em;text-decoration:underline}.prose img{max-width:100%;height:auto}.prose pre{border:1px solid var(--rule);padding:1rem;font-size:.875rem;overflow-x:auto}.prose code{font-size:.875em}.prose blockquote{border-left:2px solid var(--rule);color:var(--ink-faint);padding-left:1rem}.comments{border-top:1px solid var(--rule);margin-top:4rem;padding-top:2rem}.entry-tree{margin:0;padding:0;list-style:none}.entry{border-top:1px solid var(--rule);margin-left:calc(var(--depth,0) * 1rem);padding:1rem 0}.entry:first-child{border-top:none;padding-top:0}.entry .entry-tree{margin-top:.5rem}.entry .entry-tree .entry:first-child{border-top:1px solid var(--rule);padding-top:1rem}.entry-meta{color:var(--ink-faint);margin:0 0 .25rem;font-size:.8125rem}.entry-meta strong{color:var(--ink);font-weight:600}.member-badge{letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);margin-left:.5rem;font-size:.625rem;font-weight:650}.entry-body{color:var(--ink-soft);white-space:pre-wrap;margin:0}.entry-actions{flex-wrap:wrap;align-items:center;gap:.5rem 1rem;margin-top:.75rem;display:flex}.composer{flex-direction:column;gap:.75rem;margin-bottom:2rem;display:flex}.composer-label{color:var(--ink-faint);font-size:.8125rem}.composer textarea{box-sizing:border-box;border:1px solid var(--rule);background:var(--paper);width:100%;color:var(--ink);font:inherit;resize:vertical;padding:.5rem .75rem;font-size:.9375rem;line-height:1.6}.composer .button{align-self:flex-start}.composer .button[disabled]{opacity:.55;cursor:wait}.hp-field{opacity:0;width:0;height:0;position:absolute;left:-9999px}.reply-banner{border:1px solid var(--rule);color:var(--ink-faint);justify-content:space-between;align-items:center;gap:1rem;padding:.5rem .75rem;font-size:.8125rem;display:flex}.signin-box{border:1px solid var(--rule);margin-bottom:2rem;padding:1rem}.signin-box .button{display:inline-block}.view-switch{align-items:center;gap:1rem;display:inline-flex}.post-list{margin:0;padding:0;list-style:none}.post-row{border-top:1px solid var(--rule);padding:1.25rem 0}.post-row:first-child{border-top-color:#0000;padding-top:0}.post-row-link{color:inherit;text-decoration:none;display:block}.post-row-title{letter-spacing:-.01em;margin:0;font-size:1.25rem;font-weight:600}.post-row .card-meta{margin:.25rem 0 .5rem}.post-row .card-desc,.post-row .card-stats{margin:0 0 .5rem}.load-more{flex-wrap:wrap;justify-content:center;align-items:center;gap:.75rem;margin-top:1.5rem;display:flex}.load-more[hidden]{display:none}.load-more .state-note{margin:0}
