:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:oklch(13% 0 0);--surface:oklch(18.5% 0 0);--line:oklch(27% 0 0);--ink:oklch(96% 0 0);--dim:oklch(74% 0 0);--faint:oklch(62% 0 0);--accent:oklch(78% .1 240);--font:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--page:46rem;--rail:6rem;--gap:2rem;--pad:1.5rem;--ease:cubic-bezier(.23, 1, .32, 1);--fast:.14s;--slow:.24s}*,:before,:after{box-sizing:border-box}*{margin:0}html{background:var(--bg);-webkit-text-size-adjust:100%}body{font-family:var(--font);color:var(--ink);background:var(--bg);font-synthesis-weight:none;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-size:1rem;line-height:1.6}img,picture,svg{max-width:100%;height:auto;display:block}::selection{background:var(--accent);color:var(--bg)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}a{color:inherit;text-underline-offset:.18em;transition:text-decoration-color var(--slow) var(--ease), color var(--fast) var(--ease);-webkit-text-decoration:underline #0000;text-decoration:underline #0000;text-decoration-thickness:1px}@media (hover:hover) and (pointer:fine){a:hover{text-decoration-color:currentColor}}a:active{color:var(--dim)}.skip{left:var(--pad);z-index:10;background:var(--surface);transition:top var(--fast) var(--ease);border-radius:6px;padding:.5rem .875rem;position:absolute;top:-4rem}.skip:focus{top:var(--pad)}.page{width:min(100% - var(--pad) * 2, var(--page));margin-inline:auto;padding-block:clamp(4rem,12vh,7rem) 6rem}.band{grid-template-columns:var(--rail) minmax(0, 1fr);gap:var(--gap);padding-block:3.75rem;display:grid}.band+.band{border-block-start:1px solid var(--line);margin-block-start:.5rem}.rail{text-align:right;letter-spacing:.01em;color:var(--faint);font-variant-numeric:tabular-nums;padding-block-start:.2rem;font-size:.8125rem;line-height:1.5}.rail--sticky{position:sticky;top:1.75rem}.masthead{border-block-end:1px solid var(--line);padding-block-end:4rem}.crumb{letter-spacing:.01em;color:var(--faint);margin-block-end:1.5rem;font-size:.8125rem}.crumb a{-webkit-text-decoration-color:var(--faint);text-decoration-color:var(--faint);padding-block:.25rem}.name{letter-spacing:-.035em;text-wrap:balance;font-size:clamp(2.25rem,7vw,3.5rem);font-weight:600;line-height:1.02}.role{color:var(--dim);text-wrap:pretty;margin-block-start:1rem;font-size:1.0625rem}.links{color:var(--dim);flex-wrap:wrap;gap:1.5rem;margin-block-start:2.25rem;font-size:.9375rem;display:flex}.links a{-webkit-text-decoration-color:var(--faint);text-decoration-color:var(--faint);padding-block:.25rem}.entries{flex-direction:column;gap:2.125rem;padding:0;list-style:none;display:flex}.entry{grid-template-columns:5.75rem minmax(0,1fr);align-items:baseline;gap:1.25rem;display:grid}.entry time{letter-spacing:.01em;color:var(--faint);font-variant-numeric:tabular-nums slashed-zero;white-space:nowrap;font-size:.8125rem}.entry-title{text-wrap:pretty}.projects{flex-direction:column;gap:2.25rem;padding:0;list-style:none;display:flex}.project-name{font-size:1rem;font-weight:500}.project-desc{color:var(--dim);text-wrap:pretty;margin-block-start:.25rem;font-size:.9375rem}.note{color:var(--dim);margin-block-start:2.5rem;font-size:.9375rem}.note a{color:var(--ink);-webkit-text-decoration-color:var(--faint);text-decoration-color:var(--faint)}.about{color:var(--dim);text-wrap:pretty;max-width:36rem}.role a,.about a{color:var(--ink);-webkit-text-decoration-color:var(--faint);text-decoration-color:var(--faint)}.title{letter-spacing:-.025em;text-wrap:balance;font-size:clamp(1.75rem,4.5vw,2.5rem);font-weight:600;line-height:1.1}.standfirst{color:var(--dim);text-wrap:pretty;margin-block-start:1rem;font-size:1.0625rem}.prose{color:var(--dim);font-size:1.0625rem;line-height:1.72}.prose>*+*{margin-block-start:1.5em}.prose p{text-wrap:pretty}.prose strong{color:var(--ink);font-weight:600}.prose a{color:var(--ink);-webkit-text-decoration-color:var(--faint);text-decoration-color:var(--faint)}.prose h2,.prose h3{color:var(--ink);letter-spacing:-.012em;text-wrap:balance;margin-block-start:2.9em;font-weight:600;line-height:1.25}.prose h2{font-size:1.3125rem}.prose h3{font-size:1.0625rem}.prose ul,.prose ol{padding-inline-start:1.25rem}.prose li+li{margin-block-start:.5em}.prose li::marker{color:var(--faint)}.prose blockquote{border-inline-start:1px solid var(--line);color:var(--faint);padding-inline-start:1.25rem}.prose hr{border:0;border-block-start:1px solid var(--line);margin-block:2.75em}.prose figcaption{color:var(--faint);margin-block-start:.625rem;font-size:.8125rem}.prose picture,.prose img{border-radius:6px}.prose table{border-collapse:collapse;width:100%;font-size:.9375rem}.prose th,.prose td{text-align:start;border-block-end:1px solid var(--line);vertical-align:top;padding:.625rem 1rem .625rem 0}.prose th{color:var(--ink);font-weight:500}.prose code{font-family:var(--mono);font-size:.875em}.prose :not(pre)>code{background:var(--surface);color:var(--ink);border-radius:4px;padding:.15em .4em}.prose pre{background:var(--surface);overscroll-behavior-x:contain;tab-size:2;border-radius:8px;padding:1rem 1.125rem;font-size:.8125rem;line-height:1.65;overflow-x:auto}.prose pre code{font-size:inherit}.math-block{padding-block:.5rem;overflow-x:auto}.math-block .katex-display,.math-block .katex-display>.katex{text-align:start}.katex{font-size:1.05em}@media (width<=46rem){:root{--gap:1rem}.prose{margin-block-start:.75rem}.band{grid-template-columns:minmax(0,1fr);padding-block:2.75rem}.rail{text-align:start}.rail--sticky{position:static}.entry{grid-template-columns:minmax(0,1fr);gap:.3rem}.masthead{padding-block-end:2.75rem}}@view-transition{navigation:auto}::view-transition-old(root){animation:.11s ease-out both fade-out}::view-transition-new(root){animation:fade-in .22s var(--ease) both}@keyframes fade-out{to{opacity:0}}@keyframes fade-in{0%{opacity:0}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}::view-transition-group(*){animation:none!important}::view-transition-old(*){animation:none!important}::view-transition-new(*){animation:none!important}}
