@font-face{font-family:Newsreader;src:url(/fonts/newsreader-roman.woff2) format("woff2");font-weight:400 600;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Newsreader;src:url(/fonts/newsreader-italic.woff2) format("woff2");font-weight:400 600;font-style:italic;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;src:url(/fonts/jetbrains-mono.woff2) format("woff2");font-weight:400 700;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Newsreader Fallback;src:local("Georgia");size-adjust:96.12%;ascent-override:76.47%;descent-override:27.57%;line-gap-override:0%}@font-face{font-family:JetBrains Mono Fallback;src:local("Menlo");size-adjust:99.66%;ascent-override:102.35%;descent-override:30.1%;line-gap-override:0%}*,*:before,*:after{box-sizing:border-box}*{margin:0}img,picture,svg,video{display:block;max-width:100%}input,button,textarea,select{font:inherit;color:inherit}ol,ul{padding:0}:root{color-scheme:light dark;--bg: light-dark(#faf8f4, #131210);--surface: light-dark(#f1eee7, #1d1c19);--text: light-dark(#1c1a17, #e8e4da);--text-muted: light-dark(#6b655c, #9c968b);--accent: light-dark(#b23a0c, #f0773f);--accent-strong: light-dark(#8c2d08, #f59a6e);--border: light-dark(#e2ddd3, #2b2925);--border-strong: light-dark(#b8b0a2, #5a554d);--selection: light-dark(#f6d8c8, #5b2e18);--code-bg: var(--surface);--code-text: var(--text);--syn-keyword: light-dark(#8a3fa0, #d29be0);--syn-string: light-dark(#2f6b2a, #9ccb8e);--syn-number: light-dark(#a04a00, #f0a868);--syn-function: light-dark(#1f5c99, #8db8e8);--syn-type: light-dark(#8a5a00, #e0c070);--syn-comment: light-dark(#6e685f, #8e887e);--syn-punct: var(--text-muted);--shiki-foreground: var(--code-text);--shiki-background: transparent;--shiki-token-keyword: var(--syn-keyword);--shiki-token-string: var(--syn-string);--shiki-token-string-expression: var(--syn-string);--shiki-token-constant: var(--syn-number);--shiki-token-function: var(--syn-function);--shiki-token-parameter: var(--syn-type);--shiki-token-comment: var(--syn-comment);--shiki-token-punctuation: var(--syn-punct);--shiki-token-link: var(--syn-function);--font-text: "Newsreader", "Newsreader Fallback", Georgia, serif;--font-mono: "JetBrains Mono", "JetBrains Mono Fallback", ui-monospace, Menlo, Consolas, monospace;--fs-body: 1.125rem;--fs-lead: 1.3125rem;--fs-h1: clamp(2.25rem, 1.5rem + 3vw, 3.25rem);--fs-h2: 1.5rem;--fs-h3: 1.25rem;--fs-list-title: 1.125rem;--fs-small: .9375rem;--fs-meta: .8125rem;--fs-code: .875rem;--measure: 38rem;--wide: 52rem;--page: 64rem;--gutter: 1.25rem;--bg-card: var(--surface);--font-display: var(--font-text);--font-body: var(--font-text)}@media(min-width:720px){:root{--fs-body: 1.25rem;--fs-lead: 1.5rem;--fs-h2: 1.75rem;--fs-h3: 1.375rem;--fs-list-title: 1.25rem;--fs-small: 1rem;--fs-code: .9375rem;--gutter: 2rem}}html:has(.fp-screen){color-scheme:light}html{font-size:100%;background:var(--bg);color:var(--text);-webkit-text-size-adjust:100%;text-rendering:optimizeLegibility;scrollbar-gutter:stable}body{min-height:100dvh;display:flex;flex-direction:column;background:var(--bg);color:var(--text);font:var(--fs-body) / 1.6 var(--font-text);-webkit-hyphens:manual;hyphens:manual}main{flex:1 0 auto}::selection{background:var(--selection);color:var(--text)}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}.visually-hidden,.skip-link:not(:focus){position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.skip-link{position:absolute;top:.5rem;left:.5rem;z-index:10;padding:.5rem .75rem;background:var(--bg);font:500 var(--fs-meta) / 1.4 var(--font-mono);letter-spacing:.04em;text-transform:uppercase}.column{width:min(100% - 2 * var(--gutter),var(--measure));margin-inline:auto}.meta,.meta-links,.section-label{font:500 var(--fs-meta) / 1.4 var(--font-mono);letter-spacing:.04em;text-transform:uppercase;font-variant-ligatures:none;font-variant-numeric:tabular-nums}.meta{color:var(--text-muted)}.meta-links{text-transform:none}.meta-links a,.site-footer a,.site-nav a{transition:color .12s ease-out}.meta-links a:hover,.site-footer a:hover{color:var(--accent)}.site-header__inner{width:min(100% - 2 * var(--gutter),var(--page));margin-inline:auto;padding-block:1.5rem;display:flex;align-items:baseline;justify-content:space-between}.wordmark{font:italic 500 1.375rem / 1 var(--font-text);color:var(--text)}.site-nav{display:flex;gap:1.5rem;font:500 var(--fs-meta) / 1.4 var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted)}.site-nav a:hover,.site-nav a[aria-current=page]{color:var(--text)}.home .intro{margin-top:clamp(3rem,8vw,6rem);font-size:var(--fs-lead);line-height:1.45;letter-spacing:-.005em;text-wrap:pretty}.home .meta-links{margin-top:1.25rem;color:var(--text-muted)}.section-label{margin-top:4rem;margin-bottom:.75rem;color:var(--text-muted);font-weight:500}.all-writing{margin-top:1.5rem;font:500 var(--fs-meta) / 1.4 var(--font-mono);letter-spacing:.04em;text-transform:uppercase}.all-writing a{transition:color .12s ease-out}.all-writing a:hover{color:var(--accent)}.logbook{list-style:none}.logbook li:last-child{border-bottom:1px solid var(--border)}.logbook__row{display:grid;grid-template-columns:1fr auto;grid-template-areas:"date category" "title title";column-gap:1.25rem;align-items:baseline;padding-block:.75rem;border-top:1px solid var(--border)}.logbook__date,.logbook__category{font:400 var(--fs-meta) / 1.4 var(--font-mono);letter-spacing:.04em;color:var(--text-muted);font-variant-ligatures:none;font-variant-numeric:tabular-nums}.logbook__date{grid-area:date}.logbook__category{grid-area:category;font-weight:500;text-transform:uppercase}.logbook__title{grid-area:title;font-size:var(--fs-list-title);font-weight:500;line-height:1.35;color:var(--text);text-wrap:pretty;transition:color .12s ease-out}.logbook__row:hover .logbook__title{color:var(--accent)}.logbook__row:focus-visible{outline-offset:0;border-radius:0}@media(min-width:720px){.logbook__row{grid-template-columns:6.5rem 1fr auto;grid-template-areas:"date title category"}}.archive{margin-top:clamp(2.5rem,6vw,4.5rem)}.column h1{font-size:var(--fs-h1);font-weight:500;line-height:1.08;letter-spacing:-.02em;text-wrap:balance;text-box:trim-both cap alphabetic}.archive__count{margin-top:.75rem;color:var(--text-muted)}.year{margin-top:3rem;margin-bottom:.5rem;font-size:var(--fs-h3);font-weight:600;line-height:1.3}.pagination{margin-top:3rem;display:flex;justify-content:space-between;gap:1rem;font:500 var(--fs-meta) / 1.4 var(--font-mono);letter-spacing:.04em;text-transform:uppercase}.pagination a{transition:color .12s ease-out}.pagination a:hover{color:var(--accent)}.pagination__off,.pagination__page{color:var(--text-muted)}.post__header{margin-top:clamp(2.5rem,6vw,4.5rem)}.post__header h1{margin-top:1.25rem}.post__dek{margin-top:1.25rem;font-size:var(--fs-lead);font-style:italic;line-height:1.45;letter-spacing:-.005em;color:var(--text-muted);text-wrap:pretty}.post__hero{margin:2.5rem 0 3rem}.post__hero img{width:100%;height:auto;aspect-ratio:16 / 9;object-fit:cover;border-radius:3px;background:var(--surface)}@media(max-width:719.98px){.post__hero img{border-radius:0}}@media(min-width:720px){.post__hero{width:min(100% - 2 * var(--gutter),var(--measure));margin-inline:auto}}@media(min-width:960px){.post__hero{width:var(--wide)}}.post__header+.prose{margin-top:2.5rem}.prose{min-width:0}.prose>*+*{margin-top:1em}.prose p{text-wrap:pretty}.prose :is(h2,h3,h4,h5,h6){text-wrap:balance;scroll-margin-top:2rem}.prose h2{margin-top:2.4em;margin-bottom:.6em;font-size:var(--fs-h2);font-weight:600;line-height:1.2;letter-spacing:-.01em}.prose h3{margin-top:2em;margin-bottom:.5em;font-size:var(--fs-h3);font-weight:600;line-height:1.3}.prose :is(h4,h5,h6){margin-top:1.8em;margin-bottom:.4em;font-size:var(--fs-body);font-weight:600;line-height:1.4}.prose strong{font-weight:600}.prose a{color:var(--accent);text-decoration-line:underline;text-decoration-thickness:1px;text-underline-offset:.18em;text-decoration-color:color-mix(in srgb,var(--accent) 40%,transparent);overflow-wrap:anywhere;transition:color .12s ease-out,text-decoration-color .12s ease-out}.prose a:hover{color:var(--accent-strong);text-decoration-color:currentColor}.prose :is(ul,ol){padding-left:1.25em}.prose li+li{margin-top:.35em}.prose li>:is(ul,ol){margin-top:.35em}.prose li::marker{color:var(--text-muted)}.prose blockquote{margin:1.5em 0;padding-left:1.25em;border-left:2px solid var(--border-strong);font-style:italic;color:var(--text)}.prose :not(pre)>code{font-family:var(--font-mono);font-size:.84em;font-variant-ligatures:none;background:var(--surface);padding:.1em .3em;border-radius:3px;overflow-wrap:anywhere}.prose img{width:auto;height:auto;border-radius:3px}.prose figure{margin-block:1.5em}.prose figcaption{margin-top:.5em;font-size:var(--fs-small);color:var(--text-muted)}.prose hr{border:0;border-top:1px solid var(--border-strong);width:4rem;margin:3rem auto}.prose .anchor{margin-left:.4em;color:var(--text-muted);text-decoration:none;opacity:0;font-weight:400;transition:opacity .12s ease-out}.prose :is(h2,h3):hover>.anchor,.prose .anchor:focus-visible{opacity:1}.code-block{margin-block:1.5em;background:var(--code-bg);border:1px solid var(--border);margin-inline:calc(-1 * var(--gutter));border-inline:0;border-radius:0;overflow:hidden}@media(min-width:720px){.code-block{margin-inline:0;border-inline:1px solid var(--border);border-radius:4px}}@media(min-width:960px){.code-block{margin-inline:calc((var(--measure) - var(--wide)) / 2)}}.code-block__bar{display:flex;justify-content:flex-end;align-items:baseline;gap:1rem;padding:.5rem 1.25rem 0;font:500 var(--fs-meta) / 1.4 var(--font-mono);letter-spacing:.04em;color:var(--text-muted)}.code-block__lang{text-transform:uppercase}.code-block__copy{padding:0;border:0;background:none;cursor:pointer;font:inherit;letter-spacing:inherit;text-transform:uppercase;color:var(--text-muted);transition:color .12s ease-out,opacity .12s ease-out}.code-block__copy:hover{color:var(--accent)}@media(hover:hover){.code-block__copy{opacity:0}.code-block:hover .code-block__copy,.code-block:focus-within .code-block__copy{opacity:1}}.code-block pre{margin:0;padding:.25rem 1.25rem 1rem;overflow-x:auto;background:transparent!important;color:var(--code-text);font-family:var(--font-mono);font-size:var(--fs-code);line-height:1.6;font-variant-ligatures:none;tab-size:2;white-space:pre}.code-block pre code{font-family:inherit}.code-block pre:focus-visible{outline-offset:-2px}.table-scroll{overflow-x:auto;margin-block:1.5em}.prose table{width:100%;border-collapse:collapse;font-size:var(--fs-small)}.prose :is(th,td){padding:.5em .75em .5em 0;border-bottom:1px solid var(--border);text-align:left;vertical-align:baseline}.prose th{font:500 var(--fs-meta) / 1.4 var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);border-bottom-color:var(--border-strong)}.prose :is(th,td).num{text-align:right;font-variant-numeric:tabular-nums;padding-right:0;padding-left:.75em}.prose sup:has(>a[data-footnote-ref]){font:400 .7em var(--font-mono);line-height:0}.prose a[data-footnote-ref]{text-decoration:none}.prose a[data-footnote-ref]:before{content:"["}.prose a[data-footnote-ref]:after{content:"]"}.prose section[data-footnotes]{margin-top:3rem;font-size:var(--fs-small);line-height:1.5}.prose section[data-footnotes]:before{content:"";display:block;width:4rem;margin:0 auto 2rem;border-top:1px solid var(--border-strong)}.prose section[data-footnotes]>h2{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.prose section[data-footnotes] li>p{margin-top:0}.prose a[data-footnote-backref]{margin-left:.35em;text-decoration:none}.post__footer{margin-top:4rem;padding-top:1.5rem;border-top:1px solid var(--border)}.post__footer .meta a{transition:color .12s ease-out}.post__footer .meta a:hover{color:var(--accent)}.post__nav{margin-top:1.5rem;display:grid;gap:1.5rem 2rem}.post__nav a{display:block}.post__nav-title{display:block;margin-top:.25rem;font-size:var(--fs-list-title);font-weight:500;line-height:1.35;text-wrap:balance;transition:color .12s ease-out}.post__nav a:hover .post__nav-title{color:var(--accent)}@media(min-width:720px){.post__nav{grid-template-columns:1fr 1fr}.post__nav-older{grid-column:1;grid-row:1}.post__nav-newer{grid-column:2;grid-row:1;text-align:right}}.site-footer{margin-top:6rem}.site-footer__inner{width:min(100% - 2 * var(--gutter),var(--measure));margin-inline:auto;padding-block:2.5rem 3rem;border-top:1px solid var(--border)}.site-footer__row{font:500 var(--fs-meta) / 1.4 var(--font-mono);letter-spacing:.04em;color:var(--text-muted)}.site-footer__row+.site-footer__row{margin-top:.5rem}.site-footer__note{margin-top:1.5rem;font-size:var(--fs-small);line-height:1.5;color:var(--text-muted)}.error-page{margin-top:clamp(2.5rem,6vw,4.5rem)}.error-page h1{margin-top:1rem}.error-page__details{margin-top:1rem;font-size:var(--fs-lead);line-height:1.45;color:var(--text-muted)}.error-page .meta-links{margin-top:2rem;color:var(--text-muted)}.error-page__stack{margin-top:2rem;padding:1rem 1.25rem;overflow-x:auto;background:var(--surface);font:400 var(--fs-code) / 1.6 var(--font-mono)}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}::view-transition-old(root),::view-transition-new(root){animation-duration:.16s}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:0s!important;animation-duration:0s!important}::view-transition-old(root),::view-transition-new(root){animation-duration:0s}}@media print{:root{color-scheme:light}html,body{background:#fff;color:#000}body{font-size:11pt}.site-header,.site-footer,.skip-link,.code-block__copy,.post__nav,.anchor{display:none!important}.prose a[href^=http]:after{content:" (" attr(href) ")";font-size:.85em;overflow-wrap:anywhere}.prose a{color:inherit}.code-block{margin-inline:0;border-color:#999}.code-block pre{white-space:pre-wrap}}
