@font-face{font-family:Literata;font-style:italic;font-weight:200 900;font-display:swap;src:url(../media/3bf0a7fbfaf92f8a-s.185fu60_s7xhz.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Literata;font-style:italic;font-weight:200 900;font-display:swap;src:url(../media/ad2175b88e6bd6af-s.3hpgqf3c5o5ld.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Literata;font-style:italic;font-weight:200 900;font-display:swap;src:url(../media/f9ea4dd7757ffe41-s.0btl7djgeog5e.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Literata;font-style:italic;font-weight:200 900;font-display:swap;src:url(../media/fbe73f374d4c06e2-s.02kz5ehdag2r0.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Literata;font-style:italic;font-weight:200 900;font-display:swap;src:url(../media/de1fefbe5297a568-s.3aamvj35z_s7m.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Literata;font-style:italic;font-weight:200 900;font-display:swap;src:url(../media/da2b464f6ebc6f07-s.1vwa6irdhs_-x.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:Literata;font-style:italic;font-weight:200 900;font-display:swap;src:url(../media/72068b9941c12912-s.p.419o0z6lrmsw5.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:Literata;font-style:normal;font-weight:200 900;font-display:swap;src:url(../media/60f58a7a803855c6-s.2mgcr0scld764.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Literata;font-style:normal;font-weight:200 900;font-display:swap;src:url(../media/187df20e17b435d1-s.1de5oe27h2kcs.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Literata;font-style:normal;font-weight:200 900;font-display:swap;src:url(../media/5e8350fc289b169a-s.2m6nwxvnysiq2.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Literata;font-style:normal;font-weight:200 900;font-display:swap;src:url(../media/f99ec718d2aa2628-s.2s656e8rzol1k.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Literata;font-style:normal;font-weight:200 900;font-display:swap;src:url(../media/252b59f46c3165d8-s.445tgcafqxet_.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Literata;font-style:normal;font-weight:200 900;font-display:swap;src:url(../media/2ce13b16b29213e7-s.0hl3_-74zo9b6.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:Literata;font-style:normal;font-weight:200 900;font-display:swap;src:url(../media/c8d3663ba40d1542-s.p.3t6wimnoqat92.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:Literata Fallback;src:local(Times New Roman);ascent-override:99.62%;descent-override:26.07%;line-gap-override:0.0%;size-adjust:118.15%}.literata_64b50103-module__mQqf4a__className{font-family:Literata,Literata Fallback}.literata_64b50103-module__mQqf4a__variable{--font-serif:"Literata", "Literata Fallback"}
:root{--ground:#1b1a19;--text:#e8e5df;--muted:#a39e96;--hairline:#3b3936;--hairline-strong:#5a5752;--selection:#4a463f;--accent:#8fd18a;--accent-soft:color-mix(in srgb, var(--accent) 55%, transparent);--mono:ui-monospace, "Cascadia Code", "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--font:var(--font-serif), "Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, "Times New Roman", serif;--size:17px;--leading:1.6;--measure:600px;--gutter:20px;--radius:6px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=light]{--ground:#f4f1eb;--text:#1b1a19;--muted:#6b665e;--hairline:#d9d3c9;--hairline-strong:#b8b1a5;--selection:#e3dccf;--accent:#2e7d4f;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box;margin:0}html{height:100%;font-size:var(--size);-webkit-text-size-adjust:100%;scrollbar-color:var(--hairline-strong) transparent;scrollbar-width:thin}body{background:var(--ground);min-height:100%;color:var(--text);font-family:var(--font);line-height:var(--leading);font-feature-settings:"kern", "liga";-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;caret-color:var(--text)}::selection{background:var(--selection);color:var(--text)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--hairline-strong);border-radius:999px}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}a{color:inherit;text-decoration:underline;-webkit-text-decoration-color:var(--accent-soft);text-decoration-color:var(--accent-soft);text-underline-offset:.18em;text-decoration-thickness:1px;transition:text-decoration-color .16s ease-out,text-underline-offset .16s ease-out}a:hover{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);text-underline-offset:.24em}h1,h2,h3{text-wrap:balance;font-weight:600;line-height:1.25}ul,ol{padding-left:1.2em}.page{width:min(100% - 2 * var(--gutter), var(--measure));flex-direction:column;gap:36px;margin-inline:auto;padding-block:48px 40px;display:flex}.masthead{flex-direction:column;gap:18px;display:flex}.masthead h1{letter-spacing:-.01em;font-size:32px}.tagline{color:var(--muted);margin-top:-8px}.chips{flex-wrap:wrap;align-items:center;gap:8px;padding:0;list-style:none;display:flex}.chips li{display:contents}.chip{border:1px solid var(--hairline);min-height:34px;color:var(--text);font:inherit;cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:8px;padding:5px 13px 5px 11px;font-size:15px;line-height:1;text-decoration:none;transition:border-color .16s ease-out,background-color .16s ease-out,transform .16s cubic-bezier(.16,1,.3,1);display:inline-flex}.chip:hover{border-color:var(--accent);background:color-mix(in srgb, var(--text) 4%, transparent)}.chip:active{transform:translateY(1px)}.chip svg{flex:none;width:16px;height:16px}.chip svg.mark{width:14px;height:14px;margin-inline:1px}.chip--icon{justify-content:center;width:34px;margin-left:auto;padding:0}.box{border:1px solid var(--hairline);border-radius:var(--radius);padding:26px 22px 22px;position:relative}.box>h2{background:var(--ground);color:var(--muted);letter-spacing:.01em;padding:0 7px;font-size:15px;font-weight:500;line-height:1.2;position:absolute;top:0;left:14px;transform:translateY(-50%)}.path-prefix{color:var(--accent)}.about{grid-template-columns:1fr auto;align-items:start;gap:22px;display:grid}.about-text{flex-direction:column;gap:14px;display:flex}.about-text p{max-width:62ch}.photo{border:1px solid var(--hairline);border-radius:var(--radius);width:120px;height:120px;color:var(--muted);background:color-mix(in srgb, var(--text) 3%, transparent);place-items:center;font-size:14px;display:grid;overflow:hidden}.photo img{object-fit:cover;width:100%;height:100%;display:block}.rows{flex-direction:column;padding:0;list-style:none;display:flex}.rows>li{border-top:1px solid var(--hairline);padding-block:18px}.rows>li:first-child{border-top:0;padding-top:2px}.rows>li:last-child{padding-bottom:2px}.row-head{justify-content:space-between;align-items:baseline;gap:16px;display:flex}.row-title{font-size:17px;font-weight:600}.row-title a{text-decoration:none}.row-title a:hover{text-decoration:underline}.row-when{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right;font-size:15px}.row-sub{color:var(--muted);margin-top:2px;font-size:15px}.row-sub .sep{margin-inline:.45em}.row-body{max-width:64ch;margin-top:10px}.tags{color:var(--muted);flex-wrap:wrap;gap:4px 0;margin-top:10px;padding:0;font-size:14.5px;list-style:none;display:flex}.tags li{white-space:nowrap}.tags li+li:before{content:"·";margin-inline:.5em}.row-links{flex-wrap:wrap;gap:14px;margin-top:10px;font-size:15px;display:flex}.row-links a{align-items:center;gap:4px;display:inline-flex}.row-links svg{width:13px;height:13px}.term{flex-direction:column;gap:18px;display:flex}.term-block{flex-direction:column;gap:12px;display:flex}.cmd{font-family:var(--mono);color:var(--text);white-space:nowrap;font-size:14px;line-height:1.6}.prompt{color:var(--accent);font-weight:600}.cursor{vertical-align:text-bottom;background:var(--accent);width:.6em;height:1.1em;animation:1.1s steps(2,start) infinite blink;display:inline-block}@keyframes blink{to{visibility:hidden}}.ls{font-family:var(--mono);color:var(--muted);flex-wrap:wrap;gap:4px 28px;padding:0;font-size:14px;list-style:none;display:flex}.ls .dir{color:var(--accent);font-weight:600;text-decoration:none}.ls .dir:hover{text-decoration:underline;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}html[data-play] .cmd-text{vertical-align:bottom;width:0;animation:type calc(var(--n) * 42ms) steps(var(--n), end) forwards;animation-delay:calc(var(--t) * 1ms);display:inline-block;overflow:hidden}html[data-play] .out{opacity:0;animation:.42s cubic-bezier(.16,1,.3,1) forwards appear;animation-delay:calc(var(--t) * 1ms)}html[data-play] .cursor{opacity:0;animation:1ms linear forwards appear,1.1s steps(2,start) infinite blink;animation-delay:calc(var(--t) * 1ms), calc(var(--t) * 1ms)}@keyframes type{to{width:calc(var(--n) * 1ch)}}@keyframes appear{to{opacity:1}}.tree{top:46px;left:calc(50% - var(--measure) / 2 - 172px);font-variant-numeric:tabular-nums;width:132px;font-size:15px;line-height:1.7;position:fixed}.tree-root{color:var(--accent);height:26px;padding-left:1px;font-size:28px;font-weight:600;line-height:.9;display:block}.tree ul{margin:0;padding:0;list-style:none}.tree li{padding-left:22px;position:relative}.tree li:before{content:"";border-left:1px solid var(--hairline-strong);position:absolute;top:-.3em;bottom:0;left:4px}.tree li:last-child:before{bottom:50%}.tree li:after{content:"";border-top:1px solid var(--hairline-strong);width:12px;position:absolute;top:50%;left:4px}.tree a{color:var(--muted);text-decoration:none;transition:color .16s ease-out}.tree a:hover{color:var(--text)}.tree a[aria-current=page]{color:var(--accent);font-weight:600}.footer{color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:8px 16px;padding-top:4px;font-size:14.5px;display:flex}::view-transition-old(root){mix-blend-mode:normal;animation:none}::view-transition-new(root){mix-blend-mode:normal;animation:none}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:2;animation:.52s cubic-bezier(.16,1,.3,1) theme-reveal}@keyframes theme-reveal{0%{clip-path:circle(0px at var(--vt-x,50%) var(--vt-y,50%))}to{clip-path:circle(var(--vt-r,150vmax) at var(--vt-x,50%) var(--vt-y,50%))}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}.cursor{opacity:.6}}@media (max-width:1040px){.tree{width:min(100% - 2 * var(--gutter), var(--measure));flex-wrap:wrap;align-items:baseline;gap:6px 16px;margin:40px auto -32px;display:flex;position:static}.tree-root{display:none}.tree ul{flex-wrap:wrap;gap:6px 16px;display:flex}.tree li{padding-left:0}.tree li:before,.tree li:after{content:none}.tree a:before{content:"~/";color:var(--accent)}.tree a[aria-current=page]{text-decoration:underline;-webkit-text-decoration-color:var(--accent-soft);text-decoration-color:var(--accent-soft);text-underline-offset:.24em}}@media (max-width:560px){.page{gap:30px;padding-block:32px}.tree{margin-top:28px;margin-bottom:-26px}.masthead h1{font-size:28px}.box{padding:24px 16px 18px}.about{grid-template-columns:1fr}.photo{order:-1;width:96px;height:96px}.row-head{flex-direction:column;align-items:flex-start;gap:2px}.row-when{text-align:left;white-space:normal}}
