@font-face{font-family:alegreya;font-style:normal;font-weight:400 900;font-display:swap;src:url(/fonts/alegreya-latin.woff2)format('woff2');unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:alegreya;font-style:normal;font-weight:400 900;font-display:swap;src:url(/fonts/alegreya-latin-ext.woff2)format('woff2');unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:alegreya;font-style:italic;font-weight:400 900;font-display:swap;src:url(/fonts/alegreya-italic-latin.woff2)format('woff2');unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:alegreya;font-style:italic;font-weight:400 900;font-display:swap;src:url(/fonts/alegreya-italic-latin-ext.woff2)format('woff2');unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:dm mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/dm-mono-400-latin.woff2)format('woff2');unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:dm mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/dm-mono-400-latin-ext.woff2)format('woff2');unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:dm mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/dm-mono-500-latin.woff2)format('woff2');unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:dm mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/dm-mono-500-latin-ext.woff2)format('woff2');unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{color-scheme:light dark;--paper:light-dark(#ffffff, #000000);--ink:light-dark(#1a1a1a, #dcdcd7);--masthead:light-dark(#bd2499, #e24cba);--prose:light-dark(#0b5fd0, #5095f1);--prose-visited:light-dark(#445e81, #6a86ac);--grey:light-dark(
    color-mix(in srgb, var(--ink) 74%, var(--paper)),
    color-mix(in srgb, var(--ink) 35%, var(--paper)));--hairline:light-dark(
    color-mix(in srgb, var(--ink) 13%, var(--paper)),
    color-mix(in srgb, var(--ink) 22%, var(--paper)));--toggle:color-mix(in srgb, var(--ink) 50%, var(--paper));--measure:660px;--gutter:64px;--mono:'DM Mono', ui-monospace, SFMono-Regular, Menlo, monospace;--serif:'Alegreya', Georgia, 'Times New Roman', serif}*,*::before,*::after{box-sizing:border-box}html{background:var(--paper);-webkit-text-size-adjust:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--serif);font-size:20px;line-height:1.6;font-synthesis-weight:none}.wrap{max-width:calc(var(--measure) + (var(--gutter) * 2));margin:0 auto;padding:0 var(--gutter)}.masthead{padding:64px 0 0;display:flex;justify-content:space-between;align-items:baseline;gap:12px 28px;flex-wrap:wrap}.masthead a{color:var(--masthead)}.brand{font-family:var(--mono);font-size:20px;font-weight:500;letter-spacing:-.01em;margin:0;line-height:1.2}.brand a{text-decoration:none}.brand a:hover{text-decoration:underline;text-underline-offset:3px}.nav{font-family:var(--mono);font-size:15px;margin:0;display:flex;flex-wrap:wrap;gap:0 18px}.nav a{text-decoration:none;border-bottom:1px solid transparent;padding-bottom:1px}.nav a:hover{border-bottom-color:initial}main{padding:56px 0 0}.entry+.entry{margin-top:64px;padding-top:64px;border-top:1px solid var(--hairline)}.entry-date{font-family:var(--mono);font-size:15px;margin:22px 0 0;line-height:1.4;text-align:right}.entry-date a{color:var(--grey);text-decoration:none}.entry-date a:hover{color:var(--prose)}.entry-title{font-family:var(--mono);font-weight:500;font-size:21.2px;line-height:1.35;letter-spacing:-.01em;margin:0 0 18px}.entry-title a{color:var(--ink);text-decoration:none}.entry-title a:hover{color:var(--prose)}.entry-body>*:first-child{margin-top:0}.entry-body>*:last-child{margin-bottom:0}.entry-body p{margin:0 0 1.15em}.entry-body a{color:var(--prose);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}.entry-body a:visited{color:var(--prose-visited)}.entry-body h2,.entry-body h3{font-family:var(--mono);font-weight:500;line-height:1.35;margin:1.8em 0 .6em}.entry-body h2{font-size:20px}.entry-body h3{font-size:18px}.entry-body blockquote{margin:1.4em 0;padding-left:20px;border-left:2px solid var(--hairline);color:var(--grey)}.entry-body code{font-family:var(--mono);font-size:.85em}.entry-body pre{font-family:var(--mono);font-size:14px;line-height:1.5;overflow-x:auto;padding:14px 16px;border:1px solid var(--hairline)}.entry-body hr{border:0;border-top:1px solid var(--hairline);margin:2em 0}figure{margin:1.6em 0}figure img,.entry-body img,.entry-video{display:block;max-width:100%;height:auto}.entry-video{max-width:100%;max-height:80vh;height:auto;background:color-mix(in srgb,var(--ink) 8%,var(--paper))}figcaption{font-family:var(--mono);font-size:14px;line-height:1.5;color:var(--grey);margin-top:8px}a.photo-link{display:block;outline:2px solid transparent;outline-offset:3px;transition:outline-color 90ms linear}a.photo-link:hover{outline-color:var(--prose)}.archive-year{font-family:var(--mono);font-weight:500;font-size:21.2px;margin:2em 0 .7em}.archive-year:first-of-type{margin-top:0}.archive-list{list-style:none;margin:0;padding:0}.archive-list li{display:flex;gap:16px;align-items:baseline;padding:3px 0}.archive-list time{font-family:var(--mono);font-size:15px;color:var(--grey);flex:none;font-variant-numeric:tabular-nums}.archive-list a{color:var(--ink);text-decoration:none}.archive-list a:hover{color:var(--prose);text-decoration:underline;text-underline-offset:2px}.archive-list .untitled{color:var(--grey)}.pager{font-family:var(--mono);font-size:15px;margin-top:64px;padding-top:20px;border-top:1px solid var(--hairline);display:flex;justify-content:space-between;gap:20px}.pager a{color:var(--prose);text-decoration:none}.pager a:hover{text-decoration:underline;text-underline-offset:2px}.site-footer{font-family:var(--mono);font-size:14px;color:var(--grey);margin-top:96px;padding:20px 0 64px;border-top:1px solid var(--hairline)}.site-footer p{margin:0}@media(max-width:760px){:root{--gutter:22px}body{font-size:19px}.masthead{padding-top:40px;display:block}.nav{margin-top:10px}main{padding-top:40px}.entry+.entry{margin-top:48px;padding-top:48px}.archive-list li{display:block;padding:5px 0}.archive-list time{display:block}}.theme-toggle{display:none}.js .theme-toggle{display:block;position:fixed;right:20px;bottom:20px;z-index:10;font-family:var(--mono);font-size:10px;line-height:1;color:var(--toggle);background:var(--paper);border:1px solid var(--toggle);border-radius:3px;padding:5px 6px;cursor:pointer;transition:color 120ms ease,border-color 120ms ease;margin-bottom:env(safe-area-inset-bottom,0px);margin-right:env(safe-area-inset-right,0px)}.js .theme-toggle::before{content:'';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);min-width:44px;min-height:44px;width:100%;height:100%}.js .theme-toggle:hover,.js .theme-toggle:focus-visible{color:var(--prose);border-color:var(--prose)}.js .theme-toggle:focus-visible{outline:2px solid var(--prose);outline-offset:2px}