:root{--fg:#000000;--bg:#ffffff;--font-sans:"IBM Plex Sans",system-ui,-apple-system,Arial,sans-serif;--font-mono:"IBM Plex Mono",ui-monospace,"SF Mono",Menlo,monospace;--h1-home:clamp(34px,calc(34px + (100vw - 390px) * 12 / 1122),64px);--h1-article:clamp(16px,calc(16px + (100vw - 390px) * 30 / 1122),64px);--body:clamp(16px,calc(16px + (100vw - 1512px) * 6 / 1000),22px);--h2:var(--body);--gap-h1:clamp(16px,calc(34px - (100vw - 390px) * 18 / 1122),34px);--space-16:var(--body);--pad-left:clamp(10vw,calc(23.48vw - 52.6px),20vw);--pad-top:clamp(8.333vh,calc(8.333vh + (100vw - 390px) * 0.102),20vh);--pad-top-article:clamp(8.333vh,calc(8.333vh + (100vw - 390px) * 0.0146),10vh);--line:1.25}html.dark{--fg:#f5f5f4;--bg:#1c1917}*,:after,:before{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{overflow-x:hidden;background:var(--bg);color:var(--fg);font-family:var(--font-mono);font-size:var(--body);line-height:var(--line);-webkit-font-smoothing:antialiased}body,figure,h1,h2,p,ul{margin:0}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid currentColor;outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.page{position:relative;z-index:1;display:flex;flex-direction:column;min-height:100vh;padding:var(--pad-top) var(--pad-left) var(--space-16) var(--pad-left)}.h1-home{font-family:var(--font-sans);font-weight:400;font-size:var(--h1-home);line-height:var(--line)}.page header{margin-bottom:var(--gap-h1)}.lead{font-family:var(--font-mono);font-size:var(--body);line-height:var(--line)}.lead,.page section{margin-bottom:var(--space-16)}.page section:last-of-type{margin-bottom:0}h2{font-family:var(--font-sans);font-weight:700;font-size:var(--h2);line-height:var(--line)}ul.plain{list-style:none;padding:0;margin:0}ul.plain li{font-size:var(--body);line-height:var(--line)}.pdf-btn,ul.plain li{font-family:var(--font-mono)}.pdf-btn{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;min-height:12px;padding:0 4px;margin-left:.4em;font-weight:400;font-size:10px;line-height:1;color:var(--fg);background:transparent;border:0;cursor:pointer}.pdf-btn:hover{text-decoration:underline}.pdf-corner{position:absolute;top:0;right:0;margin-left:0}.top-nav{position:fixed;top:clamp(12px,2.2vw,30px);right:clamp(12px,2.2vw,30px);z-index:10}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;color:var(--fg);background:transparent;border:0;cursor:pointer}.theme-toggle svg{display:block;width:clamp(18px,1.4vw,20px);height:clamp(18px,1.4vw,20px)}.tree{position:fixed;bottom:0;left:65%;z-index:0;opacity:.45;transform:translateY(25%);pointer-events:none}@media (min-width:768px){.tree{left:60%}}.tree img{display:block;width:clamp(110px,24vw,340px);height:auto}.tree img.tree-night,html.dark .tree img.tree-day{display:none}html.dark .tree img.tree-night{display:block;filter:invert(1)}.site-footer{position:relative;z-index:1;margin-top:auto;padding-top:var(--space-16);text-align:center}.site-email{display:inline-block;text-decoration:none}.site-email:hover{text-decoration:underline}.h3{font-family:var(--font-mono);font-weight:300;font-size:10px;line-height:var(--line);color:var(--fg)}.social-link{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;width:16px;height:16px;margin-left:.4em;color:var(--fg)}.social-link,.social-link:hover{text-decoration:none}.social-link:hover svg{opacity:.7}.social-link svg{display:block;width:12px;height:12px}.article-wrap{--line:2;position:relative;z-index:1;padding-top:var(--pad-top-article);padding-bottom:12vh}.article{position:relative;width:min(100% - 2 * var(--pad-left),940px);margin:0 auto}.h1-article{font-family:var(--font-sans);font-weight:700;font-size:var(--h1-article);padding-right:44px}.h1-article,.pub-date{line-height:var(--line)}.pub-date{display:block;font-family:var(--font-mono);font-size:var(--body);margin:calc(var(--body) * .75) 0 calc(var(--body) * 1.6)}.article h2{font-family:var(--font-sans);font-weight:700;font-size:var(--h2);margin:calc(var(--body) * 2) 0 calc(var(--body) * .75)}.article h2,.article p{line-height:var(--line)}.article p{font-family:var(--font-mono);font-size:var(--body)}.article p,.article ul.bullets{margin:0 0 calc(var(--body) * 1.25)}.article ul.bullets{padding-left:1.4em}.article ul.bullets li{font-family:var(--font-mono);font-size:var(--body);line-height:var(--line);margin-bottom:calc(var(--body) * .5)}.article ul.bullets li:last-child{margin-bottom:0}