:root{color-scheme:light;--background:#fdfdfc;--text:#222220;--muted:#686864;--border:#deded9;--link:#174ea6;--font:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--width:48rem}*,:before,:after{box-sizing:border-box}html{background:var(--background)}body{background:var(--background);min-width:20rem;color:var(--text);font-family:var(--font);margin:0;font-size:.96rem;line-height:1.7}a{color:var(--link);text-underline-offset:.15em}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--link);outline-offset:3px}::selection{background:#dce8fb}.shell{width:min(calc(100% - 2rem), var(--width));margin-inline:auto}.skip-link{z-index:10;background:var(--background);padding:.4rem .6rem;position:absolute;top:.5rem;left:.5rem;transform:translateY(-200%)}.skip-link:focus{transform:translateY(0)}.site-header__inner{border-bottom:1px solid var(--border);justify-content:space-between;align-items:baseline;gap:2rem;padding-block:1.5rem 1rem;display:flex}.wordmark{color:var(--text);font-weight:700;text-decoration:none}.site-nav{flex-wrap:wrap;justify-content:flex-end;gap:1.25rem;font-size:.88rem;display:flex}.site-nav a{color:var(--text);text-decoration:none}.site-nav a:hover,.site-nav a[aria-current=page]{text-decoration:underline}.intro{padding-block:4.5rem 1rem}.intro h1,.page-header h1,.article__header h1,.error-page h1{letter-spacing:-.04em;margin:0;font-size:clamp(1.75rem,5vw,2.25rem);line-height:1.25}.intro>p{max-width:42rem;margin:.85rem 0 0}.intro__links{flex-wrap:wrap;gap:.6rem;font-size:.9rem;display:flex}.home-section{padding-block:3.5rem 1rem;scroll-margin-top:1rem}.home-section+.home-section{border-top:1px solid var(--border)}.section-header{justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:1rem;display:flex}.section-header h2,.home-section>h2,.about>h3{letter-spacing:-.02em;margin:0;font-size:1.25rem}.section-header>a{flex:none;font-size:.86rem}.post-list,.project-list,.experience-list{margin:0;padding:0;list-style:none}.post-list{border-top:1px solid var(--border)}.post-item{border-bottom:1px solid var(--border);grid-template-columns:8.5rem minmax(0,1fr);gap:1.5rem;padding-block:1.5rem;display:grid}.post-item time,.post-meta,.article__meta{color:var(--muted);font-size:.82rem}.post-item h2,.post-item h3,.project-list h3{margin:0;font-size:1rem;line-height:1.45}.post-item h2 a,.post-item h3 a,.project-list h3 a{color:var(--text)}.post-item div>p:not(.series-label,.post-meta),.project-list li>p:not(.post-meta),.experience-list li>p:last-child{color:#454542;margin:.5rem 0 0}.series-label{color:var(--muted);margin:0 0 .35rem;font-size:.8rem;font-weight:700}.post-meta{margin:.55rem 0 0}.project-list{border-top:1px solid var(--border)}.project-list li{border-bottom:1px solid var(--border);padding-block:1.25rem}.about>p{max-width:44rem;margin:1rem 0 0}.about>h3{margin-top:2.5rem}.experience-list{border-top:1px solid var(--border);margin-top:.75rem}.experience-list li{border-bottom:1px solid var(--border);padding-block:1.25rem}.experience-list p{margin:0}.experience-list span{color:var(--muted);font-size:.85rem}.page{padding-block:4rem 2rem}.page-header{margin-bottom:2.5rem}.page-header p{color:var(--muted);margin:.75rem 0 0}.archive .post-item:last-child{border-bottom:0}.article{padding-block:4rem}.article__header{border-bottom:1px solid var(--border);padding-bottom:2rem}.article__header .series-label{margin-bottom:.65rem}.article__description{color:#454542;margin:1rem 0 0;font-size:1rem}.article__meta{margin:1rem 0 0}.series-nav{margin-top:1.5rem}.series-nav p{margin:0}.series-nav ul{margin:.5rem 0 0;padding-left:1.5rem}.series-nav li{margin-top:.3rem}.series-nav a[aria-current=page]{color:var(--text);font-weight:700}.prose{padding-block:2.5rem}.prose>:first-child{margin-top:0}.prose>:last-child{margin-bottom:0}.prose p,.prose ul,.prose ol,.prose blockquote,.prose pre,.prose table{margin-block:0 1.5rem}.prose h2,.prose h3{letter-spacing:-.02em;margin-block:2.5rem .8rem;line-height:1.35}.prose h2{font-size:1.3rem}.prose h3{font-size:1.08rem}.prose li{margin-bottom:.4rem}.prose blockquote{border-left:3px solid var(--border);color:#454542;margin-left:0;padding-left:1rem}.prose code{font-family:var(--font);background:#f1f1ee;padding:.08em .25em;font-size:.9em}.prose pre{border:1px solid var(--border);background:#f5f5f2;padding:1rem;font-size:.85rem;line-height:1.55;overflow-x:auto}.prose pre code{background:0 0;padding:0}.prose img{max-width:100%;height:auto;margin-block:2rem;display:block}.prose hr{border:0;border-top:1px solid var(--border);margin-block:2.5rem}.prose table{border-collapse:collapse;max-width:100%;font-size:.86rem;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--border);text-align:left;vertical-align:top;padding:.5rem .7rem}.site-footer__inner{border-top:1px solid var(--border);color:var(--muted);justify-content:space-between;align-items:baseline;gap:1rem 2rem;margin-top:4rem;padding-block:1.5rem 2.5rem;font-size:.82rem;display:flex}.site-footer__inner p{margin:0}.site-footer__links{flex-wrap:wrap;justify-content:flex-end;gap:1rem;display:flex}.error-page{min-height:55vh;padding-block:5rem}.error-page>p{margin:1rem 0 0}@media (width<=38rem){body{font-size:.91rem}.site-header__inner{gap:1rem}.site-nav{gap:.8rem;font-size:.82rem}.intro{padding-top:3.5rem}.home-section{padding-top:2.75rem}.post-item{display:block}.post-item time{margin-bottom:.55rem;display:block}.site-footer__inner{flex-direction:column;align-items:flex-start}.site-footer__links{justify-content:flex-start}}.prose figure.diagram{border:1px solid var(--border);background:#fff;border-radius:.75rem;width:min(72rem,100vw - 2rem);margin:2.75rem 50%;padding:.75rem;overflow:hidden;transform:translate(-50%);box-shadow:0 .25rem 1.25rem #0000000d}.prose figure.diagram img{border-radius:.35rem;width:100%;min-width:0;height:auto;margin:0;display:block}.prose figure.diagram figcaption{max-width:58rem;color:var(--muted);text-align:center;margin:.85rem auto 0;font-size:.78rem;line-height:1.5}@media (width<=52rem){.prose figure.diagram{width:calc(100vw - 1rem);padding:.35rem}.prose figure.diagram figcaption{padding-inline:.5rem;font-size:.74rem}}
