:root{color-scheme:light dark;--font-body:"Iowan Old Style","Palatino Linotype","URW Palladio L",P052,Palatino,Georgia,serif;--font-mono:ui-monospace,"SF Mono","Cascadia Code","JetBrains Mono",Menlo,Consolas,"DejaVu Sans Mono",monospace;--bg:light-dark(#f4f1e8,#141b19);--fg:light-dark(#1f2a24,#e3decf);--muted:light-dark(#56625b,#a3ab9f);--accent:light-dark(#2a6670,#93cfc0);--border:light-dark(#d8d2c0,#2c3732);--surface:light-dark(#e9e4d6,#1c2522);--moss:light-dark(#bcd5b4,#3f5a45);--lake:light-dark(#b5d3e6,#34505f);--heather:light-dark(#e1c3dc,#5f4862);--blaze:light-dark(#f2ab8c,#e99a7b);--highlight:light-dark(#c9e0bb,#36503d);--trail:light-dark(#97a598,#5d6e64);--grain:light-dark(rgb(80 66 40 / 0.18),rgb(225 220 200 / 0.07));--topo:light-dark(#d5ccb4,#27342f);--ridge-far:light-dark(#bfd2dc,#3b5361);--ridge-near:light-dark(#86a98d,#2b4a37);--code-keyword:light-dark(#8a3d7c,#d8aad2);--code-string:light-dark(#2e6b3c,#a9d4a0);--code-number:light-dark(#8a5300,#e6c387);--code-comment:light-dark(#5d645b,#8f988e);--code-function:light-dark(#2b5a85,#9fc6e6);--code-type:light-dark(#7a4a1c,#e2b78f);--code-error:light-dark(#a8322a,#f09a8c)}:root[data-theme="light"]{color-scheme:light}:root[data-theme="dark"]{color-scheme:dark}*,*::before,*::after{box-sizing:border-box}html{background-color:var(--bg);color:var(--fg);font-family:var(--font-body);font-size:112.5%;line-height:1.65;-webkit-text-size-adjust:100%;text-size-adjust:100%}body{--measure:38rem;--sidebar:12rem;--gutter:4rem;position:relative;display:grid;grid-template-columns:minmax(1rem,1fr) minmax(0,var(--measure)) minmax(1rem,1fr);grid-template-rows:auto 1fr auto;grid-template-areas:". header ." ". main ." ". footer .";min-height:100vh;min-height:100dvh;margin:0;padding-top:2.5rem}.site-header{grid-area:header}main{grid-area:main;min-width:0;overflow-wrap:break-word}.site-footer{grid-area:footer}@media (min-width:66em){body{grid-template-columns:minmax(2rem,1fr) var(--sidebar) var(--gutter) minmax(0,var(--measure)) minmax(2rem,1fr);grid-template-rows:1fr auto;grid-template-areas:". header . main ." ". footer footer footer .";padding-top:4.5rem}.site-header{align-self:start}}.skip-link{position:absolute;top:-10rem;left:1rem;z-index:10;padding:0.4rem 0.8rem;background:var(--fg);color:var(--bg);font-family:var(--font-mono);font-size:0.85rem}.skip-link:focus{top:1rem}.site-header{display:grid;grid-template-columns:1fr auto;align-items:center;gap:0.35rem 1rem;margin-bottom:3rem}.site-title{color:var(--fg);font-family:var(--font-mono);font-size:1.05rem;font-weight:700;letter-spacing:0.14em;text-decoration:none;text-transform:uppercase}.site-description{grid-column:1 / -1;margin:0;color:var(--muted);font-size:0.95rem;font-style:italic;line-height:1.45}.site-nav{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:0.35rem 1.4rem;margin-top:1rem;font-family:var(--font-mono);font-size:0.9rem}.site-nav a{display:inline-flex;align-items:center;gap:0.55em;color:var(--muted);text-decoration:none}.site-nav a:hover{color:var(--fg)}.site-nav a[aria-current="page"]{color:var(--fg);font-weight:700}.theme-toggle{padding:0.1rem 0.5rem;border:1.5px solid var(--border);border-radius:4px;background:none;color:var(--muted);font:inherit;line-height:1.4;cursor:pointer}.theme-toggle:hover{border-color:var(--muted);color:var(--fg)}@media (min-width:66em){.site-nav{flex-direction:column;gap:0.8rem;margin-top:2.5rem}}h1,h2,h3,h4{margin:2.5rem 0 0.75rem;line-height:1.25}h1{margin-top:0;font-size:2rem;letter-spacing:-0.01em}h2{font-size:1.4rem}h3{font-size:1.15rem}a{color:var(--accent);text-decoration-color:color-mix(in srgb,var(--accent) 45%,transparent);text-decoration-thickness:0.08em;text-underline-offset:0.18em}a:hover{text-decoration-color:currentColor}:focus-visible{outline:2px dashed var(--accent);outline-offset:3px}::selection{background:var(--highlight);color:var(--fg)}blockquote{margin:1.75rem 0;padding:0.1rem 0 0.1rem 1.1rem;border-left:3px solid var(--moss);color:var(--muted)}hr{margin:2.5rem 0;border:0;border-top:1px solid var(--border)}img,video,iframe{max-width:100%}img{height:auto}figure{margin:2rem 0;text-align:center}figcaption{margin-top:0.6rem;color:var(--muted);font-family:var(--font-mono);font-size:0.8rem}table{display:block;max-width:100%;margin:1.5rem 0;overflow-x:auto;border-collapse:collapse}th,td{padding:0.35rem 0.9rem;border-bottom:1px solid var(--border)}code,pre{font-family:var(--font-mono);font-size:0.85em}:not(pre)>code{padding:0.1em 0.3em;border-radius:3px;background:var(--surface)}pre{padding:1rem 1.1rem;overflow-x:auto;border:1px solid var(--border);border-radius:4px;background:var(--surface);line-height:1.5}pre code{font-size:inherit}mjx-container[display="true"]{overflow-x:auto;overflow-y:hidden}.page-header{margin-bottom:2.25rem}.page-header h1{margin-bottom:0.4rem}.lede{margin:0;color:var(--muted);font-style:italic}.meta,.post-nav,.entry-list time{color:var(--muted);font-family:var(--font-mono);font-size:0.8rem;letter-spacing:0.04em}.meta{margin:0}.post-nav{margin-top:3.5rem}.entry-list{margin:1.5rem 0;padding:0;list-style:none}.entry-list li{padding:0.55rem 0}.entry-list time{display:block;font-variant-numeric:tabular-nums}.entry-list a{font-size:1.1rem}.entry-description{display:block;color:var(--muted);font-size:0.92rem}.portrait{float:right;width:40%;max-width:15rem;margin:0.35rem 0 1rem 1.75rem;border-radius:6px}.float-right{float:right;margin:0 0 1rem 1rem}.centered{text-align:center}.site-footer{clear:both;margin-top:4.5rem;padding:1.25rem 0 1.5rem;border-top:1px solid var(--border);color:var(--muted);font-family:var(--font-mono);font-size:0.78rem}.site-footer p{margin:0.6rem 0 0}.site-footer a{color:inherit}.site-footer a:hover{color:var(--fg)}@media print{html{background:none;color:#000;font-size:11pt}body{display:block;padding:0}.site-nav,.theme-toggle,.post-nav,.site-footer nav{display:none}a{color:inherit}}code span.kw,code span.cf,code span.im,code span.pp{color:var(--code-keyword)}code span.st,code span.ch,code span.vs,code span.ss,code span.sc{color:var(--code-string)}code span.dv,code span.bn,code span.fl,code span.cn{color:var(--code-number)}code span.co,code span.do,code span.an,code span.cv,code span.in{color:var(--code-comment);font-style:italic}code span.fu,code span.bu{color:var(--code-function)}code span.dt,code span.at{color:var(--code-type)}code span.al,code span.er,code span.wa{color:var(--code-error);font-weight:bold}pre.sourceCode a{color:inherit;text-decoration:none}@media screen and (prefers-contrast:no-preference){body{--ridge-height:clamp(5.5rem, 12vw, 10rem);isolation:isolate;padding-bottom:calc(var(--ridge-height) - 1rem);background-color:var(--bg)}body::after{content:"";position:fixed;inset:0;z-index:-1;background:var(--grain);mask:url("/assets/decor/grain.svg");pointer-events:none}body::before{content:"";position:absolute;inset:0 auto auto 0;z-index:-1;width:min(100%,46rem);height:30rem;background:var(--topo);mask:url("/assets/decor/topo.svg") -10rem -7rem / 60rem auto no-repeat,radial-gradient(farthest-side at 0 0,#000 45%,transparent);mask-composite:intersect;pointer-events:none}.site-footer::after{content:"";position:absolute;inset:auto 0 0;height:var(--ridge-height);background:linear-gradient(var(--ridge-far),var(--ridge-near) 80%);mask:url("/assets/decor/ridges.svg") bottom center / auto 100% repeat-x}.site-footer{border-top:2px dashed var(--border)}.site-title{text-shadow:0.1em 0.08em 0 var(--heather),-0.06em -0.05em 0 var(--lake)}.site-nav a::before,.entry-list a::before{content:"";flex:none;width:0.75em;height:0.75em;border:2px solid var(--trail);border-radius:50%;background:var(--bg)}.site-nav a:hover::before,.entry-list a:hover::before{border-color:var(--fg)}.site-nav a[aria-current="page"]::before{border-color:var(--fg);background:var(--blaze)}.site-nav,.entry-list{--trail-x:0.375em;position:relative}.site-nav a::before{position:relative}.entry-list{--trail-x:0.45rem;padding-left:2rem}.entry-list::before,.site-nav::before{content:"";position:absolute;top:0;bottom:0;left:calc(var(--trail-x) - 1px);width:2px;background:repeating-linear-gradient(var(--trail) 0 0.35rem,transparent 0.35rem 0.7rem);mask:linear-gradient(transparent,#000 1.25rem,#000 calc(100% - 1.25rem),transparent)}.entry-list a{position:relative}.entry-list a::before{position:absolute;top:0.3em;left:calc(var(--trail-x) - 2rem - 0.36rem);width:0.72rem;height:0.72rem}@media (max-width:65.99em){.site-nav::before{display:none}}.page-header h1{text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--highlight) 60%,transparent);text-decoration-thickness:0.2em;text-decoration-skip-ink:none;text-underline-offset:-0.08em}main h2::before{content:"";display:inline-block;width:0.3em;height:0.8em;margin-right:0.5em;border-radius:2px;background:var(--blaze);vertical-align:-0.04em}.portrait{border-radius:999px 999px 6px 6px;box-shadow:0.55rem 0.55rem 0 var(--moss);filter:saturate(0.85) contrast(0.96) sepia(0.12)}figure img{border-radius:4px;box-shadow:0.45rem 0.45rem 0 var(--lake)}hr{border-top:2px dashed var(--trail)}blockquote{border-left-style:dashed}html{--forest-floor:0%;background-color:color-mix(in srgb,var(--ridge-near) var(--forest-floor),var(--bg))}@supports (animation-timeline:scroll()){html{animation:forest-floor linear both;animation-timeline:scroll(root)}}@keyframes forest-floor{from{--forest-floor:0%}to{--forest-floor:100%}}}@media (forced-colors:active){body::before,body::after,.site-footer::after{display:none}}