@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.xuaO2J-f.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.DMdlQ8Kv.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-400-normal.CEL4l2ZJ.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2)format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-400-normal.DDuiU_S-.woff)format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-ext-400-normal.BmRBH3aV.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-400-normal.D3D2R8hC.woff)format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff)format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-cyrillic-ext-500-normal.BqneJy0T.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-500-normal.BIfNGwUT.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-cyrillic-500-normal.Bq9vWWag.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-500-normal.Ael50iVv.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-vietnamese-500-normal.DZ4AoWbu.woff2)format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.woff)format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-ext-500-normal.CAhNIIs5.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-500-normal.CZ70TYgx.woff)format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff)format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-mono-cyrillic-ext-600-normal.V-xxqcpd.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-600-normal.9HEixskS.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-mono-cyrillic-600-normal.CTOM6hUh.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-600-normal.fLZuRloM.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-mono-vietnamese-600-normal.D2EvbN8M.woff2)format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-600-normal.iLQfcSjf.woff)format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-mono-latin-ext-600-normal.D38SheWl.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-600-normal.DmB0ttJJ.woff)format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-mono-latin-600-normal.BgSNZQsw.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-600-normal.DWFSQ4vo.woff)format("woff");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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-sans-cyrillic-ext-400-normal.g30qAdWV.woff2)format("woff2"),url(/_astro/ibm-plex-sans-cyrillic-ext-400-normal.Dsrv2Tcn.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-sans-cyrillic-400-normal.DZqxrq2p.woff2)format("woff2"),url(/_astro/ibm-plex-sans-cyrillic-400-normal.BTotfTJu.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-sans-greek-400-normal._efipK4i.woff2)format("woff2"),url(/_astro/ibm-plex-sans-greek-400-normal.D9ESIMu3.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-sans-vietnamese-400-normal.DG4YqDda.woff2)format("woff2"),url(/_astro/ibm-plex-sans-vietnamese-400-normal.fK1oJ5dG.woff)format("woff");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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-sans-latin-ext-400-normal.C5H60-Va.woff2)format("woff2"),url(/_astro/ibm-plex-sans-latin-ext-400-normal.RBey6euL.woff)format("woff");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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-sans-latin-400-normal.CDDApCn2.woff2)format("woff2"),url(/_astro/ibm-plex-sans-latin-400-normal.CYLoc0-x.woff)format("woff");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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-sans-cyrillic-ext-500-normal.Cs5J6C77.woff2)format("woff2"),url(/_astro/ibm-plex-sans-cyrillic-ext-500-normal.DB5PtV2g.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-sans-cyrillic-500-normal.CocWQlwt.woff2)format("woff2"),url(/_astro/ibm-plex-sans-cyrillic-500-normal.ByOcLdNv.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-sans-greek-500-normal.JMMifIXV.woff2)format("woff2"),url(/_astro/ibm-plex-sans-greek-500-normal.CuWXN6rf.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-sans-vietnamese-500-normal.e4dixQRQ.woff2)format("woff2"),url(/_astro/ibm-plex-sans-vietnamese-500-normal.BEb3_waV.woff)format("woff");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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-sans-latin-ext-500-normal.DakdToA3.woff2)format("woff2"),url(/_astro/ibm-plex-sans-latin-ext-500-normal.D0aIdm-b.woff)format("woff");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:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-sans-latin-500-normal.6ng42L7E.woff2)format("woff2"),url(/_astro/ibm-plex-sans-latin-500-normal.BgVn5rGT.woff)format("woff");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:Noto Sans Runic;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/noto-sans-runic-runic-400-normal.BZc_rAOQ.woff2)format("woff2"),url(/_astro/noto-sans-runic-runic-400-normal.DYBj2eoI.woff)format("woff");unicode-range:U+16A0-16F8}@font-face{font-family:Noto Sans Runic;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/noto-sans-runic-latin-ext-400-normal.BMkNQp_E.woff2)format("woff2"),url(/_astro/noto-sans-runic-latin-ext-400-normal.D7YAzaXJ.woff)format("woff");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:Noto Sans Runic;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/noto-sans-runic-latin-400-normal.CHCCOE2b.woff2)format("woff2"),url(/_astro/noto-sans-runic-latin-400-normal.DHlbS1M0.woff)format("woff");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}*{box-sizing:border-box}html{background:var(--bg)}body{background:var(--bg);color:var(--text);margin:0;font-size:15px;line-height:1.75}::selection{background:var(--line);color:var(--yellow)}a{color:var(--accent);text-underline-offset:3px;text-decoration:underline 1px}a:hover,a:focus-visible{background:var(--accent);color:var(--bg);text-decoration:none}a:focus-visible{outline:2px solid var(--yellow);outline-offset:2px}.shell{flex-wrap:wrap;align-items:flex-start;gap:48px 72px;max-width:960px;margin:0 auto;padding:56px 24px 72px;display:flex}.shell.narrow{max-width:700px;display:block}.side{flex:0 0 190px}.tree{font-family:var(--mono);color:var(--muted);margin:0;font-size:14px;line-height:1.7}.tree a{color:var(--cyan)}.tree a.home{color:var(--text);font-weight:600;text-decoration:none}.tree a[aria-current=page]{background:var(--line);color:var(--text)}.narrow .main{max-width:none}h1.page,h2.sec{color:var(--purple);margin:0;font-size:15px;font-weight:600}h1.page:before{content:"# ";color:var(--comment)}h2.sec:before{content:"## ";color:var(--comment)}.lead{font-family:var(--sans);margin:0;font-size:19px;line-height:1.6}.soft{font-family:var(--sans);color:#c3c8e0;margin:0;font-size:17px;line-height:1.6}.muted{color:var(--muted)}.stack{flex-direction:column;gap:12px;display:flex}.posts{flex-direction:column;display:flex}.row{border-top:1px dashed var(--line);flex-wrap:wrap;gap:0 20px;padding:10px 0;display:flex}.row:last-child{border-bottom:1px dashed var(--line)}.row .date{color:var(--muted);flex:0 0 100px}.row .title{flex:280px}.row .cat{white-space:nowrap}.cat-prolab{color:var(--cyan)}.list-dash>div:before{content:"- ";color:var(--comment)}.list-dash{color:var(--soft)}.footer{border-top:1px solid var(--line);color:var(--muted);padding-top:16px;display:flex}.post-head{border-bottom:1px dashed var(--line);flex-direction:column;gap:14px;margin-bottom:28px;padding-bottom:28px;display:flex}.post-head h1{letter-spacing:-.01em;margin:0;font-size:34px;font-weight:600;line-height:1.25}.meta{color:var(--muted);font-size:13px}.infobox{border:1px solid var(--line);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-bottom:28px;font-size:14px;line-height:1.9;display:grid}.prose{font-family:var(--sans);color:var(--soft);font-size:18px;line-height:1.75}.prose>*+*{margin-top:22px}.prose h2,.prose h3{font-family:var(--mono);color:var(--purple);margin-top:40px;font-weight:600;line-height:1.3}.prose h2:before{content:"## ";color:var(--comment)}.prose h3:before{content:"### ";color:var(--comment)}.prose ul,.prose ol{padding-left:1.4em}.prose li+li{margin-top:6px}.prose code{font-family:var(--mono);color:var(--yellow);font-size:.88em}.prose pre code{color:inherit;font-size:inherit}.prose pre,.prose .astro-code{border:1px solid var(--line);font-family:var(--mono);margin:0;padding:16px;font-size:14px;line-height:1.8;overflow-x:auto;background:var(--bg-dark)!important}.prose blockquote{border:1px solid var(--cyan);color:var(--text);background:#2f3647;margin-left:0;margin-right:0;padding:14px 20px}.prose blockquote>*{margin:0}.prose blockquote>*+*{margin-top:8px}.prose img{border:1px solid var(--line)}.prose table{border-collapse:collapse;font-family:var(--mono);font-size:14px;display:block;overflow-x:auto}.prose th,.prose td{border-bottom:1px dashed var(--line);text-align:left;padding:8px 14px}.prose hr{border:0;border-top:1px dashed var(--line)}.vault.open{display:none}.vault input:focus-visible{outline:2px solid var(--yellow);outline-offset:1px}.vault button{font-weight:600}#vault-msg{min-height:1.5em;color:var(--red);margin:0;font-size:14px}.taglist{flex-wrap:wrap;gap:6px 16px;display:flex}.taglist a{color:var(--cyan)}.taglist small{color:var(--muted)}#search{--pagefind-ui-scale:.9;--pagefind-ui-primary:var(--accent);--pagefind-ui-text:var(--text);--pagefind-ui-background:var(--bg-dark);--pagefind-ui-border:var(--line);--pagefind-ui-tag:var(--line);--pagefind-ui-border-width:1px;--pagefind-ui-border-radius:0px;--pagefind-ui-font:var(--mono)}@media (width<=600px){.post-head h1{font-size:26px}.shell{padding-top:32px}}.wrap{max-width:720px;margin:0 auto;padding:28px 24px 72px}.main{flex-direction:column;flex:none;gap:48px;min-width:0;max-width:none;display:flex}.nav{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px 28px;padding-bottom:14px;display:flex}.brand{color:var(--text);font-weight:600;text-decoration:none}.brand:hover,.brand:focus-visible{color:var(--text);background:0 0}.name{font-size:17px}.nav nav{flex-wrap:wrap;gap:6px 22px;font-size:14px;display:flex}.nav nav a{color:var(--muted);text-decoration:none}.nav nav a:hover,.nav nav a[aria-current=page]{color:var(--text);text-underline-offset:5px;background:0 0;text-decoration:underline}.bits{letter-spacing:.14em;color:var(--comment);white-space:nowrap;border-top:1px dashed var(--line);user-select:none;margin-bottom:44px;padding-top:8px;font-size:11px;overflow:hidden}h1.page:before,h2.sec:before,.prose h2:before,.prose h3:before{content:none}h1.page{font-family:var(--sans);color:var(--text);letter-spacing:-.01em;font-size:30px;font-weight:600;line-height:1.2}h2.sec{font-family:var(--sans);color:var(--text)}.prose h2,.prose h3,.prose h4,.prose h5,.prose h6{font-family:var(--sans);color:var(--text);font-weight:600;line-height:1.3}.prose h2{font-size:24px}.prose h3{font-size:20px}.prose h4{font-size:17px}.prose h5,.prose h6{font-size:16px}.footer{flex-flow:wrap;justify-content:space-between;gap:6px 24px;margin-top:56px}.crumbs{color:var(--muted);flex-wrap:wrap;justify-content:flex-start;gap:6px 20px;margin-bottom:28px;font-size:14px;display:flex}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.hero{position:relative;overflow:hidden}.hero-bg{z-index:0;color:var(--purple);opacity:.16;font-family:var(--mono), "Noto Sans Runic", sans-serif;letter-spacing:.16em;white-space:pre;user-select:none;pointer-events:none;font-size:13px;line-height:1.6;position:absolute;inset:0;overflow:hidden}.hero>:not(.hero-bg){z-index:1;position:relative}.plist{margin:0;padding:0;list-style:none}.plist li{border-top:1px dashed var(--line);align-items:baseline;gap:16px;padding:9px 0;display:grid}.plist li:last-child{border-bottom:1px dashed var(--line)}.plist .date{color:var(--muted);font-variant-numeric:tabular-nums;font-size:13px}.plist .title{color:var(--text);text-decoration:none}.plist .title:hover{color:var(--accent)}@media (width<=560px){.plist li{gap:2px 12px}.plist .date{grid-column:1/-1}}.counts{margin:14px 0 0;font-size:13px}.counts a:hover{color:var(--accent)}.plist .title:hover,.plist .title:focus-visible,.counts a:hover,.counts a:focus-visible{color:var(--accent);text-underline-offset:4px;background:0 0;text-decoration:underline}.brand{align-items:center;gap:10px;display:inline-flex}.brand img{width:28px;height:28px;display:block}.hero{min-height:190px;padding:28px 0 20px}.hero #hero-rain{opacity:.5;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000 55%,#0000 100%);mask-image:linear-gradient(#000 55%,#0000 100%)}.hero .lead{text-shadow:0 0 10px var(--bg), 0 0 4px var(--bg)}.prose img{max-width:100%;height:auto;margin:20px auto 6px;display:block}.prose img+em,.prose img+br+em,.prose figcaption,.prose p>em:only-child,.prose p>img:only-child~em,.prose p:has(>img:only-child)+p>em:only-child{text-align:center;max-width:90%;font-family:var(--sans);color:var(--cyan);opacity:.9;margin:0 auto 22px;font-size:13.5px;font-style:italic;line-height:1.5;display:block}.prose p:has(>img:only-child){margin-bottom:0}.prose [style*=\#8b949e i],.prose [style*="8b949e" i]{opacity:.9;color:var(--cyan)!important;font-family:var(--sans)!important;text-align:center!important;font-size:13.5px!important}.prose .caption{text-align:center;max-width:90%;font-family:var(--sans);color:var(--cyan);opacity:.9;margin:0 auto 22px;font-size:13.5px;font-style:italic;line-height:1.5;display:block}.nav.home{align-items:center}.nav.home .brand img{width:88px;height:88px}.nav.home .brand{gap:18px}@media (width<=560px){.nav.home .brand img{width:64px;height:64px}}.nav.home .name{letter-spacing:-.01em;font-size:34px;font-weight:600;line-height:1}@media (width<=560px){.nav.home .name{font-size:26px}}.totop{z-index:50;font:600 20px/1 var(--mono);position:fixed;bottom:20px;right:20px}.totop[hidden]{display:none}.totop:hover,.totop:focus-visible{background:var(--accent);outline:none}@media (width<=560px){.totop{bottom:12px;right:12px}}.post-layout{position:relative}.prose h2,.prose h3{scroll-margin-top:20px}.toc-inline{margin:0 0 24px}.toc-inline summary{cursor:pointer;font-family:var(--mono)}.toc-inline ul,.toc ul{margin:10px 0 0;padding:0;list-style:none}.toc-inline li,.toc li{margin:0}.toc-inline a,.toc a{text-decoration:none;display:block}.toc-inline a:hover,.toc a:hover,.toc-inline a:focus-visible,.toc a:focus-visible{color:var(--accent);background:0 0}.toc{display:none}@media (width>=1280px){.toc-inline{display:none}.toc{width:230px;font-size:13px;display:block;position:absolute;top:0;bottom:0;left:calc(100% + 48px)}.toc-in{border-left:1px dashed var(--line);max-height:calc(100vh - 48px);padding-left:16px;position:sticky;top:24px;overflow-y:auto}.toc-in p{color:var(--purple);font-family:var(--mono);letter-spacing:.06em;text-transform:lowercase;margin:0;font-size:12px}.toc a.on{color:var(--text);box-shadow:-17px 0 0 -15px var(--accent)}.toc a.on:before{content:""}}.sbox{box-sizing:border-box;width:100%;font:15px var(--mono);color:var(--text);background:var(--bg-dark,#21222c);border:1px solid var(--line);border-radius:0;outline:none;padding:10px 12px}.sbox:focus{border-color:var(--purple)}.sresults{margin:8px 0 0;padding:0;list-style:none}.sresults li{border-top:1px dashed var(--line);padding:12px 0}.sresults li:last-child{border-bottom:1px dashed var(--line)}.sresults .stitle{color:var(--text);font-weight:500;text-decoration:none}.sresults .stitle:hover{color:var(--accent);background:0 0}.sresults .smeta{color:var(--muted);margin-left:12px;font-size:12px}.sresults .ssnip{color:var(--soft);overflow-wrap:anywhere;margin:6px 0 0;font-size:14px;line-height:1.5}.sresults mark{color:var(--text);background:#8be9fd38;padding:0 1px}.prose picture{display:block}.prose picture+em,.prose picture+br+em,.prose p>picture:only-child~em,.prose p:has(>picture:only-child)+p>em:only-child{text-align:center;max-width:90%;font-family:var(--sans);color:var(--cyan);opacity:.9;margin:0 auto 22px;font-size:13.5px;font-style:italic;line-height:1.5;display:block}.prose p:has(>picture:only-child){margin-bottom:0}.code-wrap{margin:20px 0}.code-wrap pre{margin:0}.code-bar{background:var(--line);font:12px var(--mono);align-items:center;gap:12px;padding:4px 8px 4px 12px;display:flex}.code-lang{color:var(--muted);letter-spacing:.04em}.prose .anchor{color:var(--comment);opacity:0;margin-left:.45em;font-weight:400;text-decoration:none}.prose h2:hover .anchor,.prose h3:hover .anchor,.prose h4:hover .anchor,.prose .anchor:focus-visible{opacity:1}.prose .anchor:hover{color:var(--accent);background:0 0}.skip{z-index:100;background:var(--bg-dark);color:var(--text);border:1px solid var(--purple);padding:8px 12px;text-decoration:none;position:absolute;top:-48px;left:12px}.skip:focus{top:12px}@media print{html,body{color:#000!important;background:#fff!important}.nav,.footer,.totop,.toc,.toc-inline,.hero-bg,#hero-rain,.pager,.related,.code-bar,.skip,.anchor{display:none!important}.wrap{max-width:none!important;padding:0!important}.prose,.prose p,.prose li,.soft,.lead,.meta{color:#000!important}a{text-decoration:underline;color:#000!important;background:0 0!important}pre,code{word-break:break-word;border:1px solid #ccc;white-space:pre-wrap!important;color:#000!important;background:#f4f4f4!important}pre span{color:#000!important}img{break-inside:avoid;max-width:100%!important}h1,h2,h3{break-after:avoid}}.plist .tag{display:inline-block}@media (width<=560px){.plist .cat{justify-content:flex-start;gap:10px}.plist .mins{min-width:0}}.plist li{grid-template-columns:6.5rem 1fr 10rem}.plist .cat{letter-spacing:.04em;text-transform:lowercase;white-space:nowrap;justify-content:flex-start;align-items:center;gap:0;font-size:14px;display:flex}.plist .tag{min-width:4.6rem;font-size:inherit;letter-spacing:0;text-transform:none;text-align:left;background:0 0;border:0;padding:0}.plist .mins{font-variant-numeric:tabular-nums;text-align:left;min-width:0;font-size:inherit;color:var(--muted)}.plist .mins:before{content:"· "}@media (width<=560px){.plist li{grid-template-columns:1fr auto}.plist .tag{min-width:0;margin-right:.35em}}.hero-slim{align-items:center;display:flex;position:relative;overflow:hidden}.hero-slim #hero-rain{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.hero-slim h1.page{z-index:1;text-shadow:0 0 10px var(--bg), 0 0 4px var(--bg);margin:0;position:relative}.plist .title:hover,.plist .title:focus-visible,.sresults .stitle:hover,.sresults .stitle:focus-visible,.toc a:hover,.toc a:focus-visible,.toc-inline a:hover,.toc-inline a:focus-visible,.counts a:hover,.counts a:focus-visible,.prose .anchor:hover{color:var(--cyan)}.list-dash a{color:var(--cyan);text-decoration:none}.list-dash a:hover,.list-dash a:focus-visible{color:var(--text);text-underline-offset:4px;text-decoration:underline;text-decoration-color:var(--cyan);background:0 0}.infobox div{align-items:baseline;gap:12px;padding:6px 16px;display:flex}.infobox span{min-width:6.5rem;color:var(--muted);margin-right:0;display:inline-block}.hero-404{flex-direction:column;justify-content:center;min-height:300px;display:flex}.hero-404 .code404{font:600 clamp(72px, 16vw, 128px)/1 var(--mono);letter-spacing:.04em;color:var(--purple);opacity:.95;text-shadow:0 0 18px var(--bg), 0 0 6px var(--bg);margin:0}.hero-404 h1.page{margin:10px 0 6px;font-size:26px;line-height:1}.hero-404 .lead{text-shadow:0 0 10px var(--bg), 0 0 4px var(--bg);margin:0 0 10px}.hero-404 .status{font:12px var(--mono);letter-spacing:.06em;color:var(--muted);margin:0}.egg{color:var(--cyan);font:italic 15px/1.5 var(--sans);margin:4px 0 0}.egg[hidden]{display:none}@keyframes n0x-shake{0%,to{transform:translate(0)}15%{transform:translate(-7px,2px)skew(3deg)}30%{transform:translate(6px,-3px)skew(-4deg)}45%{transform:translate(-4px,4px)}60%{transform:translate(8px,1px)skew(2deg)}80%{transform:translate(-5px,-2px)skew(-2deg)}}.crash-line.cursor:after{content:" _";animation:1s step-end infinite n0x-blink}@keyframes n0x-blink{50%{opacity:0}}.crash-bg{z-index:0;user-select:none;pointer-events:none;color:#bd93f9;opacity:.1;word-break:break-all;font:30px/1.7 Noto Sans Runic,sans-serif;animation:3s steps(4,end) infinite alternate n0x-runes;position:absolute;inset:0;overflow:hidden}@keyframes n0x-runes{0%{opacity:.05}50%{opacity:.13}to{opacity:.08}}@media (prefers-reduced-motion:reduce){.crash-bg{animation:none}}.crash-runes{letter-spacing:.14em;color:#bd93f9;text-shadow:0 0 18px #bd93f973;word-break:break-word;margin-top:22px;font:34px/1.3 Noto Sans Runic,sans-serif;display:none}body.n0x-glitch main,body.n0x-glitch header,body.n0x-glitch footer{filter:none;animation:.4s steps(3,end) infinite n0x-shake}.crash-box{z-index:1;background:0 0;border:0;width:100%;max-width:none;padding:0;position:relative}canvas.crash-bg{width:100%;height:100%;font:inherit;opacity:.2;animation:none;display:none}canvas.crash-bg,.crash-media{display:none!important}.crash{z-index:9999;background:#282a36;place-items:normal;padding:28px 34px;display:block;position:fixed;inset:0;overflow:hidden}.crash ::selection{background:#44475a}.crash-line{word-break:break-word;white-space:pre-wrap;text-shadow:none;color:#f8f8f2;font:15px/1.6 IBM Plex Mono,ui-monospace,monospace}.crash-line.err{color:#f55;font-weight:400}.crash-line.dim{color:#6272a4;margin-top:14px}.crash .t-path{color:#8be9fd}.term-cursor{vertical-align:text-bottom;background:#f8f8f2;width:.6em;height:1.15em;margin-left:1px;animation:1s step-end infinite n0x-blink;display:inline-block}h1.page:before,h2.sec:before,.prose h2:before,.prose h3:before,.list-dash>div:before,.bits{color:#6272a4}.prose img{cursor:zoom-in}.prose a img{cursor:pointer}html.zoomed{overflow:hidden}.zoom{z-index:900;cursor:zoom-out;background:#21222cf5;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.zoom img{object-fit:contain;border:1px solid var(--line);background:#282a36;max-width:100%;max-height:100%}.code-label{border:1px solid var(--line);color:var(--muted);background:#21222c;border-bottom:0;justify-content:space-between;gap:12px;margin-top:1.4em;padding:5px 14px;font:12px/1.6 IBM Plex Mono,ui-monospace,monospace;display:flex}.code-label .code-file{color:var(--soft)}.code-label+pre,.code-label+div{margin-top:0}.toc a.is-active,.toc-inline a.is-active{color:var(--accent,#8be9fd)}.plist-year{border-bottom:1px dashed var(--line);color:var(--muted);grid-column:1/-1;margin:26px 0 8px;padding:0 0 5px;font:500 13px IBM Plex Mono,ui-monospace,monospace;list-style:none;display:block!important}.plist-year:first-child{margin-top:4px}@media print{@page{margin:16mm}html,body{color:#000!important;background:#fff!important}.nav,.footer,.toc,.toc-inline,.pager,.related,.vault,.crash,.zoom,button,.skip,canvas{display:none!important}.wrap,.main{width:auto!important;max-width:none!important;margin:0!important;padding:0!important}h1,h2,h3,.meta,.infobox,.infobox span,.prose,.prose *{color:#000!important}.prose a{text-decoration:underline}.prose a[href^=http]:after{content:" (" attr(href) ")";word-break:break-all;font-size:11px}.prose pre,pre.astro-code{word-break:break-word;border:1px solid #bbb;white-space:pre-wrap!important;background:#f6f6f6!important}.prose pre span{color:#000!important}.code-label{background:#eee!important;border-color:#bbb!important}.prose img{break-inside:avoid;max-width:100%!important}.prose h2,.prose h3{break-after:avoid}}.nav nav a[aria-current=page]{color:var(--nav-accent);text-decoration-color:var(--nav-accent)}.counts a{color:var(--cyan);text-underline-offset:4px;text-decoration:underline 1px}.counts span{color:var(--comment)}.cta{margin:12px 0 0;font-size:14px}a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible,.vault input:focus-visible,.totop:focus-visible,.code-copy:focus-visible,.sbox:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}.toc-inline{z-index:40;background:var(--bg-dark);border:1px solid var(--line);padding:12px 16px;font-size:15px;position:sticky;top:0}.toc-inline summary{color:var(--cyan)}.toc-inline[open]{max-height:70vh;overflow-y:auto}.toc-inline a,.toc a{color:var(--text);overflow-wrap:anywhere;padding:5px 0;line-height:1.4}.toc-inline li.d3,.toc li.d3{padding-left:18px}@media (width>=1300px){.toc-inline{display:none}.toc{width:270px;font-size:15px;display:block;position:absolute;top:0;bottom:0}.toc-in{border-left:1px dashed var(--comment);max-height:calc(100vh - 48px);padding-left:16px;position:sticky;top:24px;overflow-y:auto}.toc-in p{color:var(--cyan);letter-spacing:.06em;margin:0 0 6px;font-size:13px}.toc a{position:relative}.toc a.is-active{color:var(--cyan);font-weight:600}.toc a.is-active:before{content:"";background:var(--cyan);width:3px;position:absolute;top:5px;bottom:5px;left:-16px}}@media (width>=1280px) and (width<=1299px){.toc-inline{display:block}.toc{display:none}}.toc-in p{text-transform:none}@media (width>=1300px){.toc a.on{box-shadow:none}.toc a.on,.toc a.is-active{color:var(--cyan);font-weight:600}.toc a.on:before,.toc a.is-active:before{content:"";background:var(--cyan);width:3px;position:absolute;top:5px;bottom:5px;left:-16px}}.machine-img{border:1px solid var(--line);width:112px;height:112px;display:block}.overview{background:var(--bg-dark);border:1px solid var(--line);align-items:center;gap:24px;margin:0 0 28px;padding:20px 24px;display:flex}.overview .machine-img{background:var(--bg);border:1px solid var(--line);box-sizing:border-box;object-fit:contain;border-radius:50%;flex:none;width:124px;height:124px;padding:8px;display:block}.ov-facts{flex:1;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:16px 24px;min-width:0;margin:0;display:grid}.ov-facts dt{color:var(--muted);font-size:12px}.ov-facts dd{color:var(--text);margin:2px 0 0;font-size:18px;font-weight:600}.ov-facts .diff-easy{color:var(--green)}.ov-facts .diff-medium{color:var(--orange)}.ov-facts .diff-hard{color:var(--red)}.ov-facts .diff-insane{color:var(--purple)}.ov-facts .st-active{color:var(--green)}@media (width<=560px){.overview{flex-direction:column;align-items:flex-start;gap:16px}}.overview{border-left:1px solid var(--line)}.diff-easy{color:var(--green)}.diff-medium{color:var(--orange)}.diff-hard{color:var(--red)}.diff-insane{color:var(--purple)}.plist .ttl{align-items:center;gap:12px;min-width:0;display:flex}.plist .ttl .title{min-width:0}.plist .thumb{border:1px solid var(--line);flex:none;width:40px;height:40px}.plist-machines li{align-items:center}.plist .lock{color:var(--yellow);flex:none;font-size:12px}.block{margin-top:36px}.more{margin:6px 0 0;font-size:14px}.filters{flex-wrap:wrap;gap:6px 20px;font-size:14px;display:flex}.filters button{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0}.filters button:hover{color:var(--text)}.filters button[aria-pressed=true]{color:var(--cyan);text-underline-offset:5px;text-decoration:underline 1px}.mgrid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px;display:grid}.mcard{background:var(--bg-dark);border:1px solid var(--line);color:var(--text);align-items:center;gap:14px;padding:14px;text-decoration:none;display:flex}.mcard:hover,.mcard:focus-visible{background:var(--bg-dark);color:var(--text);border-color:var(--cyan);text-decoration:none}.mcard[hidden]{display:none}.mcard img,.mcard .mph{border:1px solid var(--line);flex:none;width:72px;height:72px}.mcard .mph{background:var(--bg)}.mbody{flex-direction:column;gap:2px;min-width:0;display:flex}.mname{font-size:17px;font-weight:600}.mmeta{color:var(--muted);font-size:13px}.read-progress{background:var(--muted);transform-origin:0;z-index:60;pointer-events:none;width:100%;height:2px;position:fixed;top:0;left:0;transform:scaleX(0)}@media (prefers-reduced-motion:reduce){.read-progress{display:none}}.filters button{padding:4px 2px;font-size:15px}.machine-img,.post-head .machine-img,.plist .thumb,.mcard img{background:0 0;border:0}.plist .ttl{flex-wrap:wrap}.plist .teaser .title{color:var(--muted)}.mcard.soon{opacity:.75}.mcard.soon:hover{border-color:var(--line)}.sresults .stags{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.sresults .stag{border:1px solid var(--line);color:var(--cyan);font:inherit;cursor:pointer;background:0 0;border-radius:999px;padding:1px 8px;font-size:12px}.sresults .stag:hover{border-color:var(--cyan)}.sresults .stag mark{color:inherit;background:#8be9fd38}picture{display:contents}.post-tags{flex-wrap:wrap;gap:6px;margin:10px 0 0;padding:0;list-style:none;display:flex}.post-tags a{border:1px solid var(--line);color:var(--cyan);border-radius:999px;padding:1px 10px;font-size:12px;text-decoration:none;display:inline-block}.post-tags a:hover{border-color:var(--cyan);background:0 0}.post-layout .crumbs,.crumbs{margin-bottom:4px}.post-layout .post-head{margin-top:0;padding-top:0}.post-layout .post-head h1{margin-top:0}@media print{.read-progress,#read-progress,.post-tags,.crumbs,.filters{display:none!important}.overview{break-inside:avoid;background:0 0!important;border:1px solid #bbb!important}.overview,.overview *,.caption,.post-head .meta{color:#000!important}.prose div:has(>img){break-inside:avoid}}.main>.crumbs:has(+.post-layout){margin-bottom:-32px}.crumbs a{color:var(--muted);background:0 0;border-bottom:0;text-decoration:none}.crumbs a:hover,.crumbs a:focus-visible{color:var(--cyan)}.toc .toc-in>p,aside.toc p,.toc-inline>summary{color:var(--purple)!important}.vault{border:0;border-top:1px dashed var(--line);border-bottom:1px dashed var(--line);font-family:var(--sans);background:0 0;border-radius:0;flex-direction:column;gap:12px;margin-bottom:28px;padding:20px 0;font-size:16px;display:block}.vault p{margin:0}.vault .vault-title{color:var(--text);margin-bottom:4px;font-weight:600}.vault .vault-deny{color:var(--muted);margin-bottom:14px}.vault form{flex-wrap:wrap;gap:8px;display:flex}.vault input{background:var(--bg-dark);border:1px solid var(--line);min-width:0;color:var(--text);font-family:var(--mono);border-radius:0;flex:220px;padding:8px 10px;font-size:14px}.vault input:focus{border-color:var(--purple)}.vault button{border:1px solid var(--purple);color:var(--purple);font-family:var(--mono);cursor:pointer;background:0 0;border-radius:0;padding:8px 16px;font-size:14px}.vault button:hover{background:var(--purple);color:var(--bg-dark)}.vault #vault-msg{margin-top:10px}.hero-slim{min-height:52px;margin-bottom:0;padding:10px 0 4px}.plist .teaser .ttl{flex-wrap:nowrap}.plist .teaser .lock{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}aside.toc .toc-in li a,.toc-inline li a{font-size:13px;font-weight:400;line-height:1.4}aside.toc .toc-in li.d3 a,.toc-inline li.d3 a{color:var(--muted);font-size:12px}aside.toc .toc-in a.is-active{font-weight:600}.toc-inline summary{font-size:14px}@media (width>=1300px){.toc{left:calc(100% + clamp(40px,50vw - 700px,260px))}}body{font-family:var(--sans)}.date,.mins,.smeta,.mmeta,.meta,.plist-year{font-variant-numeric:tabular-nums}.toc-inline summary,.toc-in p,.plist-year,.sbox,.vault input,.vault button{font-family:var(--sans)}.prose h2{margin-top:56px;margin-bottom:14px}.prose h3{margin-top:36px;margin-bottom:10px}.prose h4{margin-top:28px;margin-bottom:8px}@media (width<=560px){.wrap{padding-left:16px;padding-right:16px}.post-layout,.main,.prose{min-width:0;max-width:100%}.prose{overflow-wrap:break-word;font-size:16.5px;line-height:1.7}.prose>*+*{margin-top:18px}.prose h2{margin-top:32px;font-size:21px}.prose h3{margin-top:28px;font-size:18px}.prose pre,.prose .astro-code{-webkit-overflow-scrolling:touch;max-width:100%;font-size:12.5px;line-height:1.5;overflow-x:auto}.prose :not(pre)>code{overflow-wrap:anywhere}.prose img{margin:14px auto 4px}.prose .caption{font-size:12.5px}}.runes{color:var(--purple);letter-spacing:.12em;font-family:Noto Sans Runic,sans-serif;font-size:17px}.prose h2{color:var(--purple)}.prose h3{color:var(--cyan)}.prose strong{color:var(--orange);font-weight:600}.prose :not(pre)>code{color:var(--soft);background:color-mix(in srgb, var(--text) 7%, transparent);overflow-wrap:anywhere;border-radius:3px;padding:1px 4px;font-size:.82em}.prose table{border:1px solid var(--line);width:100%}.prose th,.prose td{border:1px solid var(--line)}.prose th{color:var(--text);background:var(--bg-dark);font-weight:600}.prose tbody tr:nth-child(2n){background:color-mix(in srgb, var(--line) 14%, transparent)}@media (width<=560px){.prose table{font-size:13px}.prose th,.prose td{padding:6px 10px}}.prose[data-cat=htb]{counter-reset:tbl}.prose[data-cat=htb] table{border-collapse:separate;border-spacing:0;border:1px solid var(--line);width:100%;font-family:var(--sans);border-radius:8px;margin:24px 0;font-size:15px;line-height:1.5;display:table;overflow:hidden}.prose[data-cat=htb] th,.prose[data-cat=htb] td{border:0;border-bottom:1px solid color-mix(in srgb, var(--line) 55%, transparent);text-align:left;vertical-align:top;padding:10px 16px}.prose[data-cat=htb] th{background:var(--bg-dark);border-bottom:1px solid var(--line);color:var(--muted);font-size:13px;font-weight:500}.prose[data-cat=htb] tbody tr:nth-child(n){background:0 0}.prose[data-cat=htb] td{color:var(--soft)}.prose[data-cat=htb] td:first-child{color:var(--text);font-family:var(--mono);font-size:13.5px}.prose[data-cat=htb] tbody tr:last-child td{border-bottom:0}.prose[data-cat=htb] .tcap{counter-increment:tbl;text-align:center;color:var(--muted);margin:10px 0 24px;font-size:13px;line-height:1.5}.prose[data-cat=htb] .tcap:before{content:"Table " counter(tbl) ": "}.prose[data-cat=htb] table:has(+.tcap){margin-bottom:0}@media (width<=700px){.prose[data-cat=htb] table{-webkit-overflow-scrolling:touch;font-size:14px;display:block;overflow-x:auto}.prose[data-cat=htb] th,.prose[data-cat=htb] td{padding:8px 12px}.prose[data-cat=htb] td:first-child{font-size:13px}}aside.toc .toc-in>p{margin-bottom:8px;font-size:15px}.toc-inline>summary{font-size:16px}.post-head .hero-slim{min-height:0;margin:0;padding:14px 0}.post-head .hero-slim h1{z-index:1;position:relative}@media (width<=560px){.post-head .hero-slim{padding:10px 0}}@media print{.post-head #hero-rain{display:none}}.overview{padding-left:14px}.copy-btn{color:var(--muted);background:var(--bg-dark,#21222c);border:1px solid var(--line);cursor:pointer;border-radius:4px;justify-content:center;align-items:center;margin:0 0 0 auto;padding:0;line-height:0;transition:color .15s,border-color .15s;display:inline-flex}.copy-btn:hover,.copy-btn:focus-visible{color:var(--cyan);border-color:var(--cyan);outline:none}.copy-btn .i-ok{display:none}.copy-btn.done{color:var(--green,#50fa7b);border-color:var(--green,#50fa7b)}.copy-btn.done .i-copy{display:none}.copy-btn.done .i-ok{display:block}.copy-btn.fail{color:var(--red,#f55);border-color:var(--red,#f55)}.code-lang{display:none!important}.copy-btn{width:24px;height:24px}.copy-btn svg{pointer-events:none;width:13px;height:13px}.code-wrap{position:relative}.code-wrap>div:has(>.copy-btn){border:0;height:0;min-height:0;margin:0;padding:0;overflow:visible}.code-wrap pre{padding-right:40px}.code-wrap>.code-bar{background:0 0!important;border:0!important;height:0!important;min-height:0!important;margin:0!important;padding:0!important;overflow:visible!important}.code-wrap>.code-bar .code-lang{display:none!important}.prose .code-wrap pre,.prose .code-wrap pre code,.prose pre.astro-code,.prose pre.astro-code code{line-height:1.55;font-size:13px!important}.totop{cursor:pointer;justify-content:center;align-items:center;width:40px;height:40px;font-size:18px;line-height:1;transition:color .15s,border-color .15s,transform .15s,box-shadow .15s;box-shadow:0 4px 14px #00000059;color:var(--soft,var(--text))!important;background:var(--bg-dark,#21222c)!important;border:1px solid var(--line)!important;border-radius:6px!important;padding:0!important;display:inline-flex!important}.totop:hover,.totop:focus-visible{transform:translateY(-2px);box-shadow:0 6px 18px #00000073;color:var(--cyan)!important;border-color:var(--cyan)!important}.cs .ex{padding:22px 0 20px}.cs .edesc{color:var(--soft,var(--text));margin:4px 0 0;font-size:15px;line-height:1.5}.cs .cmdbox{margin:12px 0 10px}.cs .src{color:var(--muted);margin-top:10px;font-size:13px;line-height:1.5}.cs .src a{color:var(--muted);text-decoration-color:var(--line)}.cs .src a:hover{color:var(--cyan)}@media (width>=1500px){#index#index{flex-flow:column;gap:2px;width:190px;max-height:calc(100vh - 170px);font-size:13px;position:fixed;top:130px;left:24px;overflow-y:auto}#index#index:before{content:"Tools";letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding:0 8px 6px;font-size:11px}#index#index a{border-left:2px solid var(--line);padding:3px 8px}#index#index a:hover{border-left-color:var(--cyan);background:var(--bg-dark)}}.toc-inline a,.toc-inline a *{font-weight:inherit!important;font-family:inherit!important;font-style:inherit!important;font-size:inherit!important;background:0 0!important;padding:0!important}.ex{scroll-margin-top:16px}.jump{margin:14px 0 6px;font-size:13px}.jump summary{cursor:pointer;color:var(--purple);font-family:var(--mono);letter-spacing:.04em;font-size:12px}.jump .jl{flex-wrap:wrap;gap:6px 8px;margin-top:10px;display:flex}.jump .jl a{color:var(--soft,var(--text));border:1px solid var(--line);border-radius:4px;padding:2px 9px;line-height:1.5;text-decoration:none}.jump .jl a:hover,.jump .jl a:focus-visible{color:var(--cyan);border-color:var(--cyan);outline:none}.ex.flash{animation:1.6s ease-out csflash}@keyframes csflash{0%{background:#8be9fd24}to{background:0 0}}.code-wrap>.code-bar{border:0!important;border-bottom:1px solid var(--line)!important;background:var(--bg-dark)!important;justify-content:flex-end!important;align-items:center!important;height:30px!important;min-height:30px!important;margin:0!important;padding:0 6px!important;display:flex!important;overflow:visible!important}.code-wrap .copy-btn{background:0 0;border-color:#0000;margin:0!important;position:static!important}.code-wrap .copy-btn:hover,.code-wrap .copy-btn:focus-visible{border-color:var(--cyan)}.code-wrap pre,.code-wrap pre.astro-code,.prose .code-wrap pre{padding-top:12px!important;padding-right:16px!important}.toc a.is-active,.toc-inline a.is-active{font-weight:inherit!important}.toc a.is-active:before{content:"";background:var(--cyan);width:2px;position:absolute;top:5px;bottom:5px;left:-17px}.toc a,.toc a:hover,.toc a:focus,.toc a:focus-visible,.toc a:active,.toc a:visited,.toc a.on,.toc a.is-active,.toc-inline a,.toc-inline a:hover,.toc-inline a:focus,.toc-inline a:active,.toc-inline a.on,.toc-inline a.is-active,.toc li,.toc li>a>*,.toc-inline li>a>*{font-weight:400!important}#jumpbar{border-left:1px dashed var(--line);scrollbar-width:thin;flex-direction:column;max-height:calc(100vh - 170px);padding-left:14px;font-size:13px;line-height:1.35;display:flex;position:fixed;top:130px;overflow-y:auto}#jumpbar[hidden]{display:none}#jumpbar p{color:var(--purple);font-family:var(--mono);letter-spacing:.06em;margin:0 0 6px;font-size:12px}#jumpbar a{color:var(--soft);text-overflow:ellipsis;white-space:nowrap;padding:3px 0;font-weight:400;text-decoration:none;display:block;overflow:hidden}#jumpbar a.jt{color:var(--text);font-family:var(--mono);margin-top:10px}#jumpbar a:hover,#jumpbar a:focus-visible{color:var(--cyan);background:0 0;outline:none}.has-jumpbar .jump{display:none}.prose .code-wrap,.code-wrap{position:relative}.code-wrap>.code-bar{background:0 0!important;border:0!important;height:0!important;min-height:0!important;margin:0!important;padding:0!important;position:static!important;overflow:visible!important}.code-wrap .copy-btn{z-index:2;opacity:0;width:24px;height:24px;transition:opacity .15s,color .15s,border-color .15s;top:6px;right:6px;margin:0!important;position:absolute!important}.code-wrap:hover .copy-btn,.code-wrap .copy-btn:focus-visible,.code-wrap .copy-btn.done,.code-wrap .copy-btn.fail{opacity:1}@media (hover:none){.code-wrap .copy-btn{opacity:.85}}.code-wrap pre,.prose .code-wrap pre{padding-top:12px!important;padding-right:44px!important}#results a:not(.copy-btn):not(.more){text-decoration:none;color:var(--cyan,#8be9fd)!important}#results a:not(.copy-btn):not(.more):hover,#results a:not(.copy-btn):not(.more):focus-visible{text-underline-offset:3px;text-decoration:underline}#jumpbar a{border-radius:3px;margin-left:-8px;padding-left:8px;transition:color .15s,background .15s;position:relative}#jumpbar a.jc{padding-left:20px}#jumpbar a.on{background:#8be9fd1a;color:var(--cyan,#8be9fd)!important;box-shadow:none!important}#jumpbar a.on:before{content:"";background:var(--cyan,#8be9fd);border-radius:2px;width:2px;position:absolute;top:2px;bottom:2px;left:-15px}.has-jumpbar .usage-src{display:none}#jumpbar a.ju{font-family:var(--mono);color:var(--cyan,#8be9fd);opacity:.85;padding-left:20px;font-size:12px}#jumpbar a.ju:hover,#jumpbar a.ju:focus-visible{opacity:1;text-underline-offset:3px;text-decoration:underline}.nav:not(.home) .brand{align-items:center;gap:14px}.nav:not(.home) .brand img{width:48px!important;height:48px!important}.nav:not(.home) .brand .name{letter-spacing:.01em;font-size:26px;line-height:1}@media (width<=700px){.nav:not(.home) .brand img{width:36px!important;height:36px!important}.nav:not(.home) .brand .name{font-size:20px}}#jumpbar>*{flex:none!important}#jumpbar{overscroll-behavior:contain}.hero-slim #hero-rain{opacity:.42!important;-webkit-mask-image:linear-gradient(#0000 0%,#000 24% 62%,#0000 100%)!important;mask-image:linear-gradient(#0000 0%,#000 24% 62%,#0000 100%)!important}.hero:not(.hero-slim) #hero-rain{opacity:.6!important;-webkit-mask-image:linear-gradient(#0000 0%,#000 20% 70%,#0000 100%)!important;mask-image:linear-gradient(#0000 0%,#000 20% 70%,#0000 100%)!important}.nav .brand,.nav.home .brand{align-items:center!important;gap:14px!important}.nav .brand img,.nav.home .brand img{width:48px!important;height:48px!important}.nav .brand .name,.nav.home .brand .name{letter-spacing:.01em;line-height:1;font-size:26px!important}@media (width<=700px){.nav .brand img,.nav.home .brand img{width:36px!important;height:36px!important}.nav .brand .name,.nav.home .brand .name{font-size:20px!important}}.nav.home{padding-bottom:6px}.hero:not(.hero-slim):not(.hero-404){min-height:0!important;padding:4px 0 18px!important}.hero:not(.hero-slim):not(.hero-404) .lead{margin-top:0}.ex.is-new{box-shadow:inset 3px 0 0 var(--green,#50fa7b)}.newchip{font:11px var(--mono);letter-spacing:.05em;color:var(--green,#50fa7b);border:1px solid;border-radius:3px;margin-right:8px;padding:0 6px}.newnote{font:13px var(--mono);color:var(--muted);margin:6px 0 14px}.sbox,.vault input,input[type=search],input[type=text],input[type=password]{border-color:var(--comment)}.searchbar{top:var(--sticky-top,0px);z-index:30;background:var(--bg);padding:10px 0 6px;position:sticky}.cs .tool,.cs .ex{scroll-margin-top:120px}.chips{flex-direction:column;gap:8px;margin-top:14px;display:flex}.chiprow{flex-wrap:wrap;align-items:center;gap:8px;font-size:13px;display:flex}.chip{background:var(--bg-dark);color:var(--soft);border:1px solid var(--comment);font:inherit;cursor:pointer;border-radius:999px;padding:4px 12px}.chip span{color:var(--muted);margin-left:4px}.chip:hover{border-color:var(--cyan);color:var(--cyan)}.chip[aria-pressed=true]{background:var(--cyan);border-color:var(--cyan);color:var(--bg)}.chip[aria-pressed=true] span{color:var(--bg)}.ex mark.hl{color:inherit;background:#f1fa8c38;border-radius:2px;padding:0 1px}.copyall{color:var(--cyan);font:inherit;cursor:pointer;background:0 0;border:0;margin:6px 0 0;padding:0;font-size:13px}.copyall:hover{text-underline-offset:3px;text-decoration:underline}.postnote{color:var(--muted);margin:8px 0 0;font-size:14px}#jumpbtn{z-index:55;background:var(--bg-dark);color:var(--cyan);border:1px solid var(--comment);font:14px var(--mono);cursor:pointer;border-radius:999px;padding:8px 16px;position:fixed;bottom:16px;left:16px}#jumpbar.sheet{background:var(--bg-dark)!important;border-top:1px solid var(--comment)!important;z-index:60!important;box-sizing:border-box!important;width:auto!important;max-height:60vh!important;padding:14px 18px 22px!important;position:fixed!important;inset:auto 0 0!important;overflow:auto!important}.chips [hidden],.copyall[hidden],#jumpbtn[hidden],#jumpbar[hidden]{display:none!important}.used-cmds{border-top:1px dashed var(--line);margin-top:36px;padding-top:16px}.used-cmds h2{margin:0 0 6px;font-size:18px}.used-cmds p{color:var(--muted);margin:0 0 8px;font-size:14px}.used-cmds ul{flex-wrap:wrap;gap:6px 16px;margin:0;padding:0;font-size:14px;list-style:none;display:flex}.used-cmds li span{color:var(--muted)}.prose pre.cmd-hit{outline-offset:4px;outline:2px solid #bd93f9;transition:outline-color .6s}.diff-veryeasy,.ov-facts .diff-veryeasy{color:var(--yellow)}.mcard{position:relative}.mcard .mbody{flex:auto;min-width:0}.mtype{letter-spacing:.08em;text-transform:uppercase;color:var(--comment);flex:none;font-size:11px}.typebar{flex-wrap:wrap;gap:6px 20px;margin:0 0 6px;font-size:15px;display:flex}.typebar a{color:var(--muted);padding:4px 0;text-decoration:none}.typebar a:hover{color:var(--cyan);background:0 0}.typebar a[aria-current=page]{color:var(--cyan);text-underline-offset:5px;text-decoration:underline 1px}.typebar+.filters,.filters+.filters{margin-top:2px}.filters .flabel{color:var(--comment);padding:4px 2px}.mhead{flex-wrap:nowrap;justify-content:space-between;align-items:baseline;gap:8px;display:flex}.mhead .mname{white-space:nowrap;text-overflow:ellipsis;flex:auto;min-width:0;overflow:hidden}.mhead .mtype{margin-left:auto}.tcount{color:var(--comment);margin-left:2px;font-size:13px}.typebar a[aria-current=page] .tcount{color:var(--muted)}.wsearch{box-sizing:border-box;width:100%;max-width:340px;font:inherit;color:var(--text);background:var(--bg-dark);border:1px solid var(--line);border-radius:0;margin:6px 0 4px;padding:7px 10px;font-size:14px;display:block}.wsearch::placeholder{color:var(--comment)}.wsearch:focus-visible{outline:2px solid var(--cyan);outline-offset:1px;border-color:var(--cyan)}.wempty[hidden]{display:none}.mtype,.tcount,.wsearch::placeholder{color:#8190bd}.pager-back{margin:14px 0 0;font-size:14px}@media print{.overview,.overview *{color:#000!important;background:0 0!important;border-color:#bbb!important}.overview img,.machine-img{max-width:90px!important}.crumbs,.typebar,.filters,.wsearch,.wempty,.pager-back{display:none!important}}.ov-facts dd{overflow-wrap:anywhere}.overview[aria-label=Sherlock\ overview] .ov-facts>div:first-child{grid-column:1/-1}.pager a{background:var(--bg-dark);border:1px solid var(--line);overflow-wrap:anywhere;font-weight:600}.pager a span{letter-spacing:.02em;font-weight:400}.pager a:hover,.pager a:focus-visible{background:var(--bg-dark);border-color:var(--cyan);color:var(--text)}.pager a:hover span,.pager a:focus-visible span{color:var(--cyan)}.pager-back a{color:var(--muted);text-decoration:none}.pager-back a:hover,.pager-back a:focus-visible{color:var(--cyan);text-underline-offset:3px;background:0 0;text-decoration:underline}body:has(.overview[aria-label=Sherlock\ overview]) .prose h2[id^=task-]+p{color:var(--muted);margin-top:-4px;font-size:14.5px;line-height:1.6}body:has(.overview[aria-label=Sherlock\ overview]) .prose h2[id^=task-]+p strong{color:inherit;font-weight:400}body:has(.mgrid) .wrap{max-width:1120px}.main .mgrid{grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr));gap:16px}@media (width>=760px) and (width<1200px){body:has(.post-layout) .wrap{max-width:840px}}@media (width>=1200px){body:has(.post-layout) .wrap{max-width:1132px}.post-layout{grid-template-columns:minmax(0,1fr) 230px;column-gap:128px;display:grid}.post-layout>:not(aside.toc){grid-column:1}.post-layout>aside.toc{grid-area:1/2/span 20;width:auto;display:block;position:static;top:auto;bottom:auto;left:auto}.post-layout>.toc-inline{display:none}}@media (width<1200px){.prose h2,.prose h3,.prose h4{scroll-margin-top:76px}}@media (width<=560px){.overview .ov-facts{grid-template-columns:repeat(2,minmax(0,1fr));align-self:stretch;gap:14px 20px;width:100%}.nav{row-gap:2px}.nav nav{grid-template-columns:repeat(2,max-content);justify-content:start;column-gap:32px;width:100%;display:grid}.nav nav a{align-items:center;min-height:44px;display:flex}}@media (pointer:coarse),(width<=560px){.toc-inline li a{align-items:center;min-height:40px;display:flex}.crumbs a,.pager-back a{margin:-10px -8px;padding:10px 8px;display:inline-block}.footer a{margin:-12px -4px;padding:12px 4px;display:inline-block}.filters button,.typebar a{padding-block:9px}}.related{margin-top:48px}.related h2{color:var(--purple);margin:0 0 14px;font-size:20px;font-weight:600;line-height:1.3}.prose>h2:first-child{margin-top:24px}@media (width>560px){.prose{font-size:16.5px;line-height:1.7}.prose h2{font-size:22px}.prose h3{font-size:18.5px}.post-head h1{font-size:30px}}@media (width>=760px) and (width<1200px){html body:not(#_) .wrap{max-width:840px}}@media (width>=1200px){html body:not(#_) .wrap{max-width:1132px}.cs{grid-template-columns:minmax(0,1fr) 300px;align-items:start;column-gap:96px;display:grid}.cs>.hero,.cs>p.muted{grid-column:1/-1}.cs>.searchbar{grid-area:3/1}.cs>#results{grid-area:4/1}.cs>#chips{border:0;border-left:1px solid var(--line);background:0 0;grid-area:3/2/span 2;margin:0;padding:0 0 0 22px;position:sticky;top:76px}.cs #chips .chiprow{flex-direction:column;gap:0;display:flex}.cs #chips .chiprow:before,.side-title{color:var(--muted);letter-spacing:.1em;text-transform:uppercase;text-align:left;margin:0 0 8px;font-size:11px;font-weight:600;display:block}.cs #chips .chiprow:before{content:"Browse"}.cs #chips .chip{width:100%;min-height:0;box-shadow:none;color:var(--text);font:inherit;text-align:left;background:0 0;border:0;border-radius:0;justify-content:space-between;align-items:baseline;padding:5px 0;font-size:13.5px;display:flex}.cs #chips .chip span{color:var(--muted)}.cs #chips .chip:hover,.side-item:hover{color:var(--cyan)}.cs #chips .chip[aria-pressed=true]{color:var(--cyan);background:0 0}.side-group{margin-top:22px}.side-item{width:100%;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;justify-content:space-between;align-items:baseline;gap:12px;padding:5px 0;font-size:13.5px;display:flex}.side-meta{color:var(--muted);white-space:nowrap;font-size:12px}.side-bar{padding-bottom:10px;position:relative}.side-bar:after{content:"";height:2px;width:var(--w,0%);background:var(--purple);opacity:.6;position:absolute;bottom:3px;left:0}.side-bar:hover:after{background:var(--cyan);opacity:1}.side-tag{border:1px solid var(--line);color:var(--text);font:inherit;cursor:pointer;background:0 0;border-radius:999px;margin:0 6px 6px 0;padding:3px 10px;font-size:12.5px;display:inline-flex}.side-tag:hover{border-color:var(--cyan);color:var(--cyan)}html.has-jumpbar #jumpbar{max-height:calc(100vh - 120px);overflow:auto;width:300px!important;top:96px!important;left:calc(50% + 242px)!important;right:auto!important}html:has(#q:placeholder-shown) #jumpbar{display:none!important}.cs:has(#q:not(:placeholder-shown))>#chips{display:none}}@media (width<1200px){.side-extra{display:none}}html body:not(#_) .nav nav a{color:var(--text);border-bottom:2px solid #0000;width:fit-content;padding-block:6px;font-weight:600;text-decoration:none;transition:color .15s,border-color .15s}html body:not(#_) .nav nav a:hover,html body:not(#_) .nav nav a:focus-visible{color:var(--nav-accent);border-bottom-color:var(--nav-accent)}html body:not(#_) .nav nav a[aria-current=page]{color:var(--nav-accent);border-bottom-color:var(--nav-accent);text-decoration:none}@media (width>560px){html body:not(#_) .nav nav a{font-size:16px}html body:not(#_) .nav nav{column-gap:28px}}html body:not(#_) p.counts>span{display:none}html body:not(#_) p.counts a{background:var(--bg-dark);border:1px solid var(--line);align-items:center;padding:8px 14px;font-size:14px;font-weight:600;transition:border-color .15s,color .15s;display:inline-flex}html body:not(#_) p.counts{flex-wrap:wrap;gap:4px 12px;margin-top:18px;font-size:14px}html body:not(#_) p.counts>span{color:var(--muted)}html body:not(#_) p.counts a{color:var(--text);text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:4px;text-decoration-thickness:1px}html body:not(#_) p.counts a:hover,html body:not(#_) p.counts a:focus-visible{border-color:var(--cyan);color:var(--cyan);text-decoration-color:var(--cyan)}@media (width<=560px){html body:not(#_) p.counts>span{display:none}}html body:not(#_) p.cta{display:none}@media (width>=1200px){.main:has(>.hero){grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;column-gap:64px;display:grid}.main:has(>.hero)>.hero{grid-column:1/-1}.main:has(>.hero)>section.stack .plist li{box-sizing:border-box;grid-template-columns:100px minmax(0,1fr) 136px;align-items:center;column-gap:12px;min-height:59px}}.plist .date,.plist .mins,.plist .tag{font-size:14.5px}.footer{font-size:14px}.cat-maldev{color:var(--orange);justify-content:flex-end}.picks{grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr));gap:0 40px;margin:0;padding:0;list-style:none;display:grid}.picks li{border-top:1px solid var(--line);flex-direction:column;gap:6px;padding:14px 0 18px;display:flex}.pick-title{color:var(--text);font-weight:600;text-decoration:none}.pick-title:hover,.pick-title:focus-visible{color:var(--nav-accent)}@media (width>=1200px){.main:has(>.hero)>.wide{grid-column:1/-1}}.credit-list{grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr));gap:0 40px;margin:0;padding:0;list-style:none;display:grid}.credit-list li{border-top:1px solid var(--line);align-items:center;gap:20px;padding:18px 0;display:flex}.credit-list a{min-width:64px;color:var(--text);flex:none;align-items:center;font-weight:600;text-decoration:none;display:inline-flex}.credit-list a:hover,.credit-list a:focus-visible{color:var(--nav-accent)}.credit-list img{width:auto;max-width:200px;height:48px}.credit-note{color:var(--muted);font-size:14.5px;line-height:1.5}.pick-title:hover,.pick-title:focus-visible,.credit-list a:hover,.credit-list a:focus-visible,.cmdstrip a:hover,.cmdstrip a:focus-visible{background:0 0}.cmdstrip a:hover,.cmdstrip a:focus-visible{color:var(--nav-accent);text-underline-offset:4px;text-decoration:underline}.plist li{border-top-style:solid}.plist li:last-child,.plist-year{border-bottom-style:solid}.cmdstrip p{max-width:none;margin:0 0 8px}.cmdstrip p:first-of-type{border-top:1px solid var(--line);margin:0;padding:14px 0 6px}.picks,.credit-list{border-bottom:0}.cmdstrip p:last-of-type{border-bottom:0;margin:0;padding:0 0 18px}.main:has(>.hero) .plist li:last-child{border-bottom:0}.credit-note a{color:var(--text);text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:4px}.credit-note a:hover,.credit-note a:focus-visible{color:var(--nav-accent);text-decoration-color:var(--nav-accent);background:0 0}body:has(.main>.hero) .footer{border-top:0}.main:has(>.hero) .plist li>*{min-width:0}.main:has(>.hero) .plist li>:last-child{white-space:normal;text-align:right;overflow-wrap:anywhere;line-height:1.3}.main:has(>.hero) .plist li>:nth-child(2){text-overflow:ellipsis;overflow:hidden}.main:has(>.hero) .plist .date{white-space:normal;line-height:1.25}.picks li.slot{display:block}.slide{flex-direction:column;transition:opacity .7s;display:flex}.slide.off{display:none}.slide.fade{opacity:0}@media (prefers-reduced-motion:reduce){.slide{transition:none}}.counts a,.counts a:hover,.counts a:focus,.counts a:focus-visible,.counts a:active{-webkit-tap-highlight-color:transparent;box-shadow:none!important;background:0 0!important;outline:0!important}.counts a:hover,.counts a:focus-visible{color:var(--text);text-underline-offset:3px;text-decoration:underline}.hero a,.hero a:hover,.hero a:focus,.hero a:focus-visible,.hero a:active,.main:has(>.hero) p a,.main:has(>.hero) p a:hover,.main:has(>.hero) p a:focus,.main:has(>.hero) p a:focus-visible,.main:has(>.hero) p a:active{-webkit-tap-highlight-color:transparent;box-shadow:none!important;background:0 0!important;outline:0!important}.hero a:hover,.hero a:focus-visible,.main:has(>.hero) p a:hover,.main:has(>.hero) p a:focus-visible{color:var(--text);text-underline-offset:3px;text-decoration:underline}.astro-code span[style*=\#6272A4 i]{color:#8f9ccc!important}.ex.more{display:none!important}.showmore{border:0;border-bottom:1px solid var(--line);color:var(--muted);font:inherit;cursor:pointer;margin:12px 0 6px;padding:6px 0;font-size:14px;display:block;background:0 0!important}.showmore:hover,.showmore:focus-visible{color:var(--text);border-bottom-color:var(--muted);outline:0}.showmore[hidden]{display:none}.counts{flex-wrap:wrap;align-items:baseline;gap:10px 34px;display:flex}.counts a,.counts a:hover,.counts a:focus,.counts a:focus-visible,.counts a:active{font-family:var(--sans);color:var(--muted);align-items:baseline;gap:9px;font-size:14px;display:inline-flex;box-shadow:none!important;background:0 0!important;border:0!important;border-radius:0!important;outline:0!important;padding:0!important;text-decoration:none!important}.counts b{font-family:var(--mono);color:var(--text);font-size:22px;font-weight:600;line-height:1}.counts a span{color:var(--muted);letter-spacing:.01em;font-size:14px}.counts a:hover span,.counts a:focus-visible span{color:var(--text);text-underline-offset:4px;text-decoration:underline}@media (width<=520px){.counts{grid-template-columns:1fr 1fr;gap:14px 20px;display:grid}}.hero .counts{flex-wrap:wrap;align-items:flex-start;gap:16px 40px;margin-top:22px;display:flex}.hero .counts a,.hero .counts a:hover,.hero .counts a:focus,.hero .counts a:focus-visible,.hero .counts a:active{flex-direction:column;align-items:flex-start;gap:6px;min-width:92px;transition:border-color .15s;display:inline-flex;box-shadow:none!important;background:0 0!important;border:0!important;border-top:2px solid #f8f8f247!important;border-radius:0!important;outline:0!important;padding:11px 0 0!important;text-decoration:none!important}.hero .counts b{font-family:var(--mono);color:var(--text);font-size:28px;font-weight:600;line-height:1}.hero .counts a span{letter-spacing:.09em;text-transform:uppercase;color:#f8f8f2bd;font-size:12.5px;text-decoration:none}.hero .counts a:hover,.hero .counts a:focus-visible{border-top-color:#f8f8f2d9!important}.hero .counts a:hover span,.hero .counts a:focus-visible span{color:var(--text);text-decoration:none}@media (width<=520px){.hero .counts{grid-template-columns:1fr 1fr;gap:16px 24px;display:grid}}.nav nav a,.nav nav a:visited{color:#f8f8f2bd;padding-bottom:6px;font-weight:500;transition:color .15s,border-color .15s;background:0 0!important;border-bottom:2px solid #0000!important;text-decoration:none!important}.nav nav a:hover,.nav nav a:focus-visible{color:#f8f8f2;outline:0;background:0 0!important;border-bottom-color:#f8f8f266!important}.nav nav a[aria-current],.nav nav a.current,.nav nav a.active{color:#f8f8f2;font-weight:600;border-bottom-color:#f8f8f2!important}.chiprow .grp{letter-spacing:.09em;text-transform:uppercase;width:100%;color:var(--muted);flex:0 0 100%;margin:18px 0 4px;font-size:12px;font-weight:600;display:block}.chiprow .grp:first-child{margin-top:0}.pick-title:hover,.pick-title:focus-visible,.credit-list a:hover,.credit-list a:focus-visible,.credit-note a:hover,.credit-note a:focus-visible,.cmdstrip a:hover,.cmdstrip a:focus-visible{color:#fff!important;background:0 0!important}.cat-htb{color:var(--soft)!important}.st-active{color:var(--text)!important}.crash .t-user{color:var(--text)}.chiprow .chip.cg-closed:not([aria-pressed=true]){display:none!important}.chiprow button.grp{width:100%;font:inherit;letter-spacing:.09em;text-transform:uppercase;text-align:left;border:0;border-radius:0;outline:0;flex:0 0 100%;align-items:center;gap:10px;margin:6px 0 0;padding:9px 0;font-size:12.5px;font-weight:600;display:flex;background:0 0!important}.chiprow button.grp:first-child{margin-top:0}.chiprow button.grp .gl{flex:1}.chiprow button.grp .gn{font-family:var(--mono);letter-spacing:0;font-size:12px;font-weight:400}.chiprow button.grp:after{content:"";border-bottom:1.5px solid;border-right:1.5px solid;width:6px;height:6px;margin:-3px 2px 0 4px;transition:transform .15s;transform:rotate(45deg)}.chiprow button.grp[aria-expanded=true]:after{margin-top:3px;transform:rotate(-135deg)}.chiprow button.grp:after{display:none}.chiprow button.grp{cursor:default;color:var(--muted)}@media (hover:none){.chiprow button.grp{cursor:pointer}}.pick-kind{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;align-items:center;gap:9px;font-size:13px;display:inline-flex}.pick-ico{object-fit:contain;border-radius:4px;flex:none;width:22px;height:22px}.pick-title{font-size:18px;line-height:1.35}.slide{gap:6px}.pick-sum{color:var(--muted);-webkit-line-clamp:3;-webkit-box-orient:vertical;font-size:16px;line-height:1.6;display:-webkit-box;overflow:hidden}:root{--accent:#8be9fd;--bg:#282a36;--bg-dark:#21222c;--line:#44475a;--muted:#9aa5ce;--text:#f8f8f2;--soft:#e4e7f5;--cyan:#8be9fd;--orange:#ffb86c;--pink:#ff79c6;--purple:#bd93f9;--red:#f55;--yellow:#f1fa8c;--mono:"IBM Plex Mono", ui-monospace, monospace;--sans:"IBM Plex Sans", system-ui, sans-serif;color-scheme:dark;--comment:#8490c0;--nav-accent:#f8f8f2;--green:#e4e7f5;--hd:#bd93f9}.chiprow button.grp:hover,.chiprow button.grp:focus-visible,.chiprow button.grp[aria-expanded=true]{color:var(--hd)}.chiprow .chip{color:#f8f8f2d6}.chiprow .chip span{color:var(--muted)}.chiprow .chip[aria-pressed=true]{color:#fff}#filterbar{color:var(--muted);align-items:center;gap:10px;margin:0 0 14px;font-size:14px;display:flex}#filterbar[hidden]{display:none}#filterbar button{border:0;border-bottom:1px solid var(--muted);font:inherit;color:var(--text);cursor:pointer;border-radius:0;padding:2px 0;background:0 0!important}#filterbar button:hover,#filterbar button:focus-visible{border-bottom-color:var(--text);outline:0}.chiprow .chip{box-shadow:inset 1px 0 0 color-mix(in srgb, var(--hd,#bd93f9) 45%, transparent);padding-left:14px}.copy-btn.done,.copyall.done{animation:.18s ease-out copied-in;color:#fff!important;background:#f8f8f217!important;border-color:#f8f8f28c!important}.copy-btn.done:before,.copyall.done:before{border-bottom:2px solid;border-right:2px solid;width:5px;height:9px;margin:-3px 8px 0 1px;display:inline-block;transform:rotate(45deg)}@keyframes copied-in{0%{opacity:.45;transform:translateY(2px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.copy-btn.done,.copyall.done{animation:none}}.copy-btn.done:before,.copyall.done:before{content:none!important}.copy-btn.done,.copyall.done{justify-content:center;align-items:center;gap:7px;display:inline-flex}.copy-btn.done svg,.copyall.done svg{flex:none;display:block}.diff-easy,.tag.diff-easy{color:#50fa7b!important}.diff-medium,.tag.diff-medium{color:var(--orange)!important}.diff-hard,.tag.diff-hard{color:var(--red)!important}.diff-veryeasy,.tag.diff-veryeasy{color:var(--yellow)!important}.cat-maldev .tag{display:none!important}.cat-maldev .mins:before{content:"· "!important}.learned-col{border-left:1px solid var(--line);min-width:0;padding:24px 26px 22px}.learned-col:first-child{border-left:0;padding-left:0}.learned-col:last-child{padding-right:0}.learned-logo{color:var(--text);align-items:center;font-weight:600;text-decoration:none;display:inline-flex}.learned-intro{color:var(--muted);margin:10px 0 14px;font-size:14.5px;line-height:1.5}.learned-courses{margin:0;padding:0;list-style:none}.learned-courses li{border-top:1px solid var(--line)}.learned-courses a{color:var(--text);padding:11px 0;text-decoration:none;display:block}.lc-top{justify-content:space-between;gap:12px;font-weight:600;display:flex}.lc-arrow{color:var(--muted);font-weight:400}.lc-name{color:var(--muted);margin-top:2px;font-size:14.5px;line-height:1.45;display:block}.learned-courses a:hover .lc-top,.learned-courses a:hover .lc-arrow,.learned-courses a:hover .lc-name,.learned-logo:hover{color:var(--accent)}@media (width<=860px){.learned{grid-template-columns:1fr}.learned-col,.learned-col:first-child,.learned-col:last-child{border-left:0;border-top:1px solid var(--line);padding:22px 0 8px}.learned-col:first-child{border-top:0}}.picks .pick-ico{width:30px;height:30px}.picks .pick-kind{gap:11px}.picks .pick-sum{-webkit-line-clamp:unset;display:block;overflow:visible}.mgrid .mhead{flex-wrap:nowrap;align-items:flex-start;column-gap:8px}.mgrid .mname{white-space:normal;overflow-wrap:break-word;flex:auto;min-width:0}.mgrid .mtype{flex:none;margin-left:auto}.about-page h2.sec{color:var(--purple)!important}.wsort{color:var(--muted);align-items:center;gap:8px;margin:10px 0 0;font-size:14px;display:flex}.wsort select{background:var(--bg-dark);color:var(--text);border:1px solid var(--line);font:14px var(--mono);padding:6px 10px}.wsort select:focus{border-color:var(--purple);outline:none}.cb{position:relative}.cb-copy{background:var(--bg-dark);color:var(--muted);border:1px solid var(--line);font:12px var(--mono);cursor:pointer;opacity:.85;padding:3px 9px;position:absolute;top:6px;right:6px}.cb-copy:hover,.cb-copy:focus-visible{color:var(--cyan);border-color:var(--cyan);opacity:1}.latest{margin:0;padding:0;list-style:none}.latest li{border-top:1px solid var(--line)}.lrow,.lrow:hover,.lrow:focus-visible{color:var(--text);background:0 0;align-items:center;gap:18px;padding:14px 0;text-decoration:none;display:flex}a.lrow:hover .lname,a.lrow:focus-visible .lname{color:var(--nav-accent)}.lthumb{object-fit:contain;background:var(--bg);border:1px solid var(--line);border-radius:8px;flex:none;width:48px;height:48px;display:block}.lbody{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.lmeta{color:var(--muted);font-size:14px}.latest .soon{opacity:.75}.d-very-easy{color:var(--yellow,#f1fa8c)}.d-easy{color:var(--green,#50fa7b)}.d-medium{color:var(--orange,#ffb86c)}.d-hard{color:var(--red,#f55)}.d-insane{color:var(--purple,#bd93f9)}.learned-col,.learned-col:first-child,.learned-col:last-child{border:0;border-top:1px solid var(--line);padding:22px 0 8px}.lc-ttl{align-items:center;gap:10px;display:inline-flex}.lc-badge{object-fit:contain;flex:none;width:26px;height:26px}.learned-logo.plate{height:auto}.learned-logo{box-sizing:border-box;justify-content:flex-start}.learned-logo.plate img{object-position:center;height:100%}.learned{border-top:1px solid var(--line);border-bottom:1px solid var(--line);border:0;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 40px;display:grid}@media (width<=900px){.learned{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=600px){.learned{grid-template-columns:1fr}}.learned-logo{background:0 0;border-radius:0;width:auto;max-width:100%;padding:0}.learned-logo img{object-fit:contain;object-position:left center;width:auto;max-width:100%;height:auto;display:block}.learned-logo img:not([style]){height:44px}.learned-logo.plate{background:0 0;border-radius:0;padding:0}.learned-logo.plate img{box-sizing:content-box;background:#f8f8f2;border-radius:8px;padding:6px 10px}.learned-logo{height:64px}.learned-show.js-on{display:grid}.learned-show.js-on>.lpage{opacity:0;visibility:hidden;grid-area:1/1;transition:opacity .7s,visibility 0s linear .7s}.learned-show.js-on>.lpage.on{opacity:1;visibility:visible;transition:opacity .7s}@media (prefers-reduced-motion:reduce){.learned-show.js-on>.lpage,.learned-show.js-on>.lpage.on{transition:none}}.ldots{gap:2px;margin-top:10px;display:flex}.ldots button{cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;width:24px;height:24px;padding:0;display:inline-flex}.ldots button:before{content:"";background:var(--comment);border-radius:50%;width:8px;height:8px}.ldots button[aria-current=true]:before{background:var(--text)}.learned-logo,.learned-logo:hover,.learned-logo:focus,.learned-logo:active,.learned-logo:focus-visible,.learned-logo:hover img,.learned-logo:focus-visible img{-webkit-tap-highlight-color:transparent;box-shadow:none!important;background-color:#0000!important}.learned-logo.plate img,.learned-logo.plate:hover img{background-color:#f8f8f2!important}.lname{overflow-wrap:break-word;font-size:18px;font-weight:600;line-height:1.3}@media (width<=600px){.learned-show.js-on{display:block}.learned-show.js-on>.lpage,.learned-show.js-on>.lpage.on{opacity:1;visibility:visible;transition:none}.ldots{display:none}}@media (width<=520px){.nav nav{column-gap:12px!important}.nav nav a{white-space:nowrap;font-size:13px!important}}h2.sec{letter-spacing:-.01em;margin:0 0 1.1rem;font-size:1.75rem;font-weight:700;line-height:1.2}@media (width<=600px){h2.sec{font-size:1.45rem}}.credits a,.credits a:hover,.credits a:focus,.credits a:focus-visible,.credits a:active,.credits a:hover *,.credits a:focus-visible *{border-color:currentColor;color:inherit!important;box-shadow:none!important;text-shadow:none!important;background:0 0!important}.credits a:hover{opacity:1}h2.sec,.block>h2,.picks h2{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;text-shadow:none!important;filter:none!important;opacity:1!important;transform:none!important}.d-very-easy,.pick-kind .d-very-easy,.lmeta .d-very-easy{color:#f1fa8c!important}.d-easy,.pick-kind .d-easy,.lmeta .d-easy{color:#50fa7b!important}.d-medium,.pick-kind .d-medium,.lmeta .d-medium{color:#ffb86c!important}.d-hard,.pick-kind .d-hard,.lmeta .d-hard{color:#f55!important}.d-insane,.pick-kind .d-insane,.lmeta .d-insane{color:#bd93f9!important}.lrow{min-width:0}.lside{color:var(--muted);overflow-wrap:anywhere;flex-direction:column;flex:0 auto;align-items:flex-end;gap:2px;min-width:0;font-size:14px;display:flex}@media (width<=600px){.lrow{flex-wrap:wrap;row-gap:4px}.lside{flex:100%;align-items:flex-start}}@media (width<=768px){#q,input[type=search],input[type=text]{font-size:16px}}.cs section.tool{content-visibility:auto;contain-intrinsic-size:auto 600px}@media (width<=480px){.nav nav{flex-wrap:nowrap;gap:4px 14px;font-size:13px}.nav nav a{white-space:nowrap}}.nav nav a,main a[href="/commands/"],main a[href="/HTB-Writeups/"]{padding:12px 0;display:inline-block}.footer a{padding:12px 6px;display:inline-block}@media (width<=600px){main:has(>.hero){gap:28px}.hero+section{margin-top:0}}.vbox .vlabel{font:13px/1.4 var(--mono,ui-monospace, SFMono-Regular, Menlo, monospace);color:var(--muted);margin:12px 0 4px}.vbox .vlabel:first-child{margin-top:0}.vbox .vrow{position:relative}.vbox pre{margin:0 0 2px}html body .toc a.on,html body .toc a.is-active{color:var(--text);box-shadow:-17px 0 0 -15px var(--accent)}.cs .ex .etitle{color:var(--text);border-left:2px solid var(--accent);padding-left:10px;line-height:1.35}.sec-note{color:#f55;font:13px/1.4 var(--mono,monospace);margin:8px 0 0}.sec-note[hidden]{display:none}.privacy-note{color:var(--muted);margin:8px 0 0;font-size:12px;line-height:1.5}.prose p.caption,.prose .caption{color:#a3abce;opacity:1}.cs .privacy-note,.privacy-note{color:var(--muted);opacity:.85;font-size:12px}.prose,.prose[data-cat]{counter-reset:tbl 0 figure 0}.prose .caption:before{counter-increment:figure;content:"Figure " counter(figure) ": ";font-style:normal;font-weight:600}.copyall{display:none!important}.osico{vertical-align:-.15em;background:currentColor;width:1em;height:1em;margin-right:.4em;display:inline-block;-webkit-mask:none 50%/contain no-repeat;mask:none 50%/contain no-repeat}.lside .tagrow{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.tagpill{border:1px solid var(--line);color:var(--cyan);white-space:nowrap;border-radius:999px;padding:1px 10px;font-size:12px;line-height:1.6}@media (width<=600px){.lside .tagrow{justify-content:flex-start}}.osico,.os-linux,.os-windows{-webkit-mask:none;mask:none}.os-windows{background:url(/img/os/windows11.png) 50%/contain no-repeat;-webkit-mask-image:url(/img/os/windows11.svg);mask-image:url(/img/os/windows11.svg)}.os-linux{background:url(/img/os/linux.png) 50%/contain no-repeat;width:.84em;-webkit-mask-image:url(/img/os/linux.svg);mask-image:url(/img/os/linux.svg)}#q.sbox{box-sizing:border-box;width:100%;height:50px;color:var(--text);border:1px solid var(--line);background:#21222c url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%239aa5ce' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E") 16px/20px no-repeat;border-radius:12px;outline:none;padding:0 16px 0 48px;font:16px IBM Plex Sans,system-ui,sans-serif;transition:border-color .15s,box-shadow .15s;display:block}#q.sbox::placeholder{color:#6272a4}#q.sbox:focus{border-color:var(--cyan);box-shadow:0 0 0 3px #8be9fd26}#count{margin:10px 2px 14px;font-size:13px}#results.sresults{gap:12px;margin:0;padding:0;list-style:none;display:grid}#results li{border:1px solid var(--line);background:#21222c;border-radius:12px;padding:14px 18px;transition:border-color .15s}#results li:hover{border-color:#6272a4}#results .stitle{color:var(--text);font-size:17px;font-weight:600;line-height:1.35;text-decoration:none;display:block}#results .stitle:hover{color:var(--cyan)}#results .smeta{font:12px var(--mono);letter-spacing:.02em;color:var(--muted);margin-top:2px;display:block}#results .stags{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}#results .stag{font:12px/1.6 var(--mono);border:1px solid var(--line);color:var(--cyan);cursor:pointer;background:0 0;border-radius:999px;padding:1px 10px}#results .stag:hover{border-color:var(--cyan)}#results .smore{font:12px/1.6 var(--mono);color:var(--muted);padding:1px 6px}#results .ssnip{color:var(--muted);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:10px 0 0;font-size:14px;line-height:1.55;display:-webkit-box;overflow:hidden}#results li.sempty{color:var(--muted);text-align:center;background:0 0;border-style:dashed;padding:28px 18px}@media (width<=600px){#q.sbox{height:46px}#results li{padding:12px 14px}}.sfilters{flex-wrap:wrap;gap:8px;margin:12px 0 4px;display:flex}.sfilters button,.sextra .qtag{background:var(--bg-dark);color:var(--soft);border:1px solid var(--comment);font:inherit;cursor:pointer;border-radius:999px;padding:4px 12px;font-size:13px}.sfilters button span{color:var(--muted);margin-left:4px}.sfilters button:hover,.sextra .qtag:hover{border-color:var(--cyan);color:var(--cyan)}.sfilters button[aria-pressed=true]{background:var(--cyan);border-color:var(--cyan);color:var(--bg)}.sfilters button[aria-pressed=true] span{color:var(--bg)}.didyou{color:var(--muted);margin:10px 0 0}.didyou a,.didyou button{color:var(--cyan);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.shead{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);grid-column:1/-1;margin:14px 0 0;font-size:13px}#results{margin-top:14px}#results mark{color:var(--text);background:#8be9fd38;border-radius:2px;padding:0 1px}#results .mcard.fz{border-style:dashed}.mcard .ssn{color:var(--muted);overflow-wrap:anywhere;margin-top:4px;font-size:13px;display:block}.mcard .stg{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.mcard.kbd,.mcard:focus-visible{border-color:var(--cyan);outline:none}.sextra{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px;margin-top:18px;font-size:13px;display:flex}.sextra .lbl{margin-right:4px}.sfoot{color:var(--muted);margin-top:10px;font-size:12px}.footer a:hover,.footer a:focus-visible{color:var(--text);text-underline-offset:3px;background:0 0;text-decoration:underline}.about-page:not(.priv) h2.sec{margin-bottom:0!important}.about-page:not(.priv)>h2.sec+*{margin-top:-4px}.toc li.toc-child,.toc-inline li.toc-child{opacity:0;max-height:0;padding-top:0;padding-bottom:0;transition:max-height .25s,opacity .2s;overflow:hidden}.toc li.toc-child.toc-show,.toc-inline li.toc-child.toc-show{opacity:1;max-height:200px}.toc-inline li.d4,.toc li.d4{padding-left:28px}aside.toc .toc-in li.d4 a,.toc-inline li.d4 a{color:var(--muted);opacity:.65;font-size:11px}
