@font-face{font-family:Pixelify Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/_astro/pixelify-sans-cyrillic-wght-normal.BfQLqnEI.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Pixelify Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/_astro/pixelify-sans-latin-ext-wght-normal.CsF3XSp0.woff2)format("woff2-variations");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:Pixelify Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/_astro/pixelify-sans-latin-wght-normal.Cbhn5ptY.woff2)format("woff2-variations");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:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/_astro/archivo-vietnamese-wdth-normal.rJmnGBSt.woff2)format("woff2-variations");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:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/_astro/archivo-latin-ext-wdth-normal.7khWdh9v.woff2)format("woff2-variations");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:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/_astro/archivo-latin-wdth-normal.DY7AcnAa.woff2)format("woff2-variations");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:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-cyrillic-ext-opsz-normal.DIwfbPUE.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-cyrillic-opsz-normal.C0olyEE-.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-greek-opsz-normal.DrHU7SY7.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-vietnamese-opsz-normal.DX68cEVD.woff2)format("woff2-variations");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:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-latin-ext-opsz-normal.HoL-AExg.woff2)format("woff2-variations");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-latin-opsz-normal.BpEBLj1O.woff2)format("woff2-variations");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:"Source Serif 4 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-cyrillic-ext-opsz-italic.Bl6DJqma.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Source Serif 4 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-cyrillic-opsz-italic.Dibx14aP.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:"Source Serif 4 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-greek-opsz-italic.CMW9dfKg.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:"Source Serif 4 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-vietnamese-opsz-italic.Hh3oeMt5.woff2)format("woff2-variations");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:"Source Serif 4 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-latin-ext-opsz-italic.BhUEwDRF.woff2)format("woff2-variations");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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Source Serif 4 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-latin-opsz-italic.BOLXpvkj.woff2)format("woff2-variations");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}:root{--desk:#1f4f8f;--desk-deep:#163b6c;--grid:#deecff17;--grid-major:#deecff29;--line:#e8f2ff80;--putty:#e9e2cf;--putty-hi:#fbf8ef;--putty-lo:#b3a98f;--paper:#f6f2e7;--paper-sunk:#e8e1cf;--ink:#1b1d22;--ink-soft:#57524a;--rule:#8ea7c9;--rule-faint:#d6cdb8;--red:#c8382a;--link:#1b4f96;--focus:#ff5a1f;--signal:#ff5a1f;--chrome-1:#f4f6f8;--chrome-2:#a4acb6;--chrome-3:#59626d;--amber:#ffb547;--amber-dim:#9c6a26;--crt:#171008;--walnut-1:#5a3a22;--walnut-2:#3e2716;--pixel:"Pixelify Sans Variable", "Pixelify Sans", ui-monospace, monospace;--sans:"Archivo Variable", "Archivo", system-ui, sans-serif;--serif:"Source Serif 4 Variable", "Source Serif 4", Georgia, serif;--mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--measure:38rem;--wide:56rem;--gutter:clamp(1rem, 4vw, 2.5rem);--bar:32px;--shadow:5px 5px 0 #08122673;color-scheme:light dark}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--desk:#0c1f3a;--desk-deep:#081629;--grid:#b4cdf512;--grid-major:#b4cdf521;--line:#c8dcff5c;--putty:#34312a;--putty-hi:#4a463d;--putty-lo:#15140f;--paper:#23211c;--paper-sunk:#2e2b25;--ink:#ece6d6;--ink-soft:#b3ab9a;--rule:#4a6386;--rule-faint:#3d3a31;--red:#e06a5c;--link:#9fc2ff;--focus:#ff7a45;--signal:#ff7a45;--shadow:5px 5px 0 #0000008c}}:root[data-theme=dark]{--desk:#0c1f3a;--desk-deep:#081629;--grid:#b4cdf512;--grid-major:#b4cdf521;--line:#c8dcff5c;--putty:#34312a;--putty-hi:#4a463d;--putty-lo:#15140f;--paper:#23211c;--paper-sunk:#2e2b25;--ink:#ece6d6;--ink-soft:#b3ab9a;--rule:#4a6386;--rule-faint:#3d3a31;--red:#e06a5c;--link:#9fc2ff;--focus:#ff7a45;--signal:#ff7a45;--shadow:5px 5px 0 #0000008c}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{min-height:100vh;color:var(--ink);background-color:var(--desk);background-image:linear-gradient(var(--grid-major) 1px, transparent 1px), linear-gradient(90deg, var(--grid-major) 1px, transparent 1px), linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);font-family:var(--serif);font-optical-sizing:auto;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;background-size:120px 120px,120px 120px,24px 24px,24px 24px;background-attachment:fixed;margin:0;font-size:1.125rem;line-height:1.6}a{color:var(--link);text-underline-offset:.18em;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.skip{position:absolute;left:-9999px}.skip:focus{left:1rem;top:calc(var(--bar) + .5rem);z-index:1000;background:var(--putty);color:var(--ink);font-family:var(--pixel);padding:.25rem .5rem}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.wrap{width:100%;max-width:calc(var(--wide) + 2 * var(--gutter));padding:0 var(--gutter);margin:0 auto}h1,h2,h3,h4{font-family:var(--sans);color:var(--ink);text-wrap:balance;margin:0;line-height:1.1}.menubar{height:var(--bar);z-index:900;background:var(--putty);border-bottom:2px solid var(--ink);font-family:var(--pixel);align-items:center;gap:.25rem;padding:0 .6rem;font-size:15px;line-height:1;display:flex;position:fixed;inset:0 0 auto}.menubar a,.menubar button{color:var(--ink);font:inherit;cursor:pointer;background:0 0;border:0;padding:.35rem .55rem;text-decoration:none}.menubar a:hover,.menubar button:hover,.menubar a[aria-current=page]{background:var(--ink);color:var(--putty)}.menubar .badge{font-family:var(--sans);letter-spacing:.02em;align-items:center;gap:.45rem;padding:.2rem .55rem .2rem .3rem;font-size:13px;font-style:italic;font-weight:800;font-stretch:125%;display:flex}.menubar .badge svg{width:22px;height:22px}.menubar .menus{scrollbar-width:none;gap:.1rem;display:flex;overflow-x:auto}.menubar .tray{white-space:nowrap;align-items:center;gap:.75rem;margin-left:auto;padding-right:.25rem;display:flex}.menubar .lamp{border:1px solid var(--ink);vertical-align:1px;background:#2fbf5b;width:8px;height:8px;margin-right:.35rem;display:inline-block}.win{background:var(--putty);border:2px solid var(--ink);box-shadow:var(--shadow);flex-direction:column;min-width:0;display:flex}.win-bar{border-bottom:2px solid var(--ink);background:var(--putty);-webkit-user-select:none;user-select:none;flex:none;align-items:center;gap:6px;height:30px;padding:0 6px;display:flex}.win-bar .stripes{flex:1;min-width:8px;height:14px}.win.is-active .win-bar .stripes{background:repeating-linear-gradient(to bottom, var(--ink) 0 2px, transparent 2px 4px)}.win.is-active .win-bar .stripes:last-of-type{background:repeating-linear-gradient(to bottom, var(--signal) 0 2px, transparent 2px 4px)}.win-title{text-overflow:ellipsis;white-space:nowrap;max-width:60%;font-family:var(--pixel);color:var(--ink);flex:none;padding:0 4px;font-size:15px;font-weight:600;overflow:hidden}.win-btn{border:2px solid var(--ink);background:var(--putty-hi);width:18px;height:18px;color:var(--ink);font:700 12px/1 var(--pixel);cursor:pointer;flex:none;place-items:center;padding:0;text-decoration:none;display:grid}.win-btn:hover{background:var(--signal);color:#fff}.win-btn[hidden]{display:none}.win-body{background:var(--paper);border-top:1px solid var(--putty-hi);overscroll-behavior:contain;flex:1;min-height:0;overflow:auto}.win-status{border-top:2px solid var(--ink);background:var(--putty);font-family:var(--pixel);color:var(--ink-soft);flex:none;justify-content:space-between;gap:1rem;padding:4px 10px;font-size:13px;display:flex}.page-desk{padding:calc(var(--bar) + 28px) var(--gutter) 28px}.page-desk>.win{max-width:1040px;margin:0 auto}.page-desk .win-body{padding-bottom:3rem}.win-body>.wrap,.win-body>article.wrap,.win-body>section.wrap{padding-top:clamp(1.25rem,4vw,2.5rem)}.statusbar{max-width:1040px;padding:0 var(--gutter) 2rem;font-family:var(--pixel);color:#e8f0ff;flex-wrap:wrap;justify-content:space-between;gap:.5rem 1.5rem;margin:0 auto;font-size:14px;display:flex}.statusbar a{color:#e8f0ff}.statusbar nav{flex-wrap:wrap;gap:.4rem 1.1rem;display:flex}.prose{max-width:var(--measure)}.prose>*+*{margin-top:1.1em}.prose p,.prose ul,.prose ol{margin-bottom:0}.prose h2{margin-top:2.4em;font-size:1.5rem;font-weight:700;font-stretch:85%}.prose h3{margin-top:2em;font-size:1.2rem;font-weight:650;font-stretch:90%}.prose ul,.prose ol{padding-left:1.3em}.prose li+li{margin-top:.4em}.prose strong{font-weight:650}.prose blockquote{border-left:3px double var(--red);color:var(--ink-soft);margin-left:0;padding-left:1rem}.prose hr{border:0;border-top:1px solid var(--rule);margin:2.5em 0}.prose :not(pre)>code{font-family:var(--mono);background:var(--paper-sunk);overflow-wrap:anywhere;border-radius:3px;padding:.08em .3em;font-size:.84em}.prose pre{font-family:var(--mono);border:2px solid var(--ink);box-shadow:3px 3px 0 var(--rule-faint);padding:1rem 1.1rem;font-size:.85rem;line-height:1.55;overflow-x:auto;background:var(--paper-sunk)!important}.astro-code,.astro-code span{color:var(--shiki-light)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .astro-code,:root:not([data-theme=light]) .astro-code span{color:var(--shiki-dark)}}:root[data-theme=dark] .astro-code,:root[data-theme=dark] .astro-code span{color:var(--shiki-dark)}.prose img{border:2px solid var(--ink);width:auto;max-width:100%;height:auto;max-height:85vh;box-shadow:4px 4px 0 var(--rule-faint);display:block}.prose p:has(>img){margin-top:1.75em}.prose p:has(>img) em{font-family:var(--sans);color:var(--ink-soft);margin-top:.7rem;font-size:.9rem;font-style:normal;line-height:1.45;display:block}.prose table{border-collapse:collapse;max-width:100%;font-family:var(--sans);font-variant-numeric:tabular-nums;font-size:.92rem;line-height:1.4;display:block;overflow-x:auto}.prose th,.prose td{text-align:left;border-bottom:1px solid var(--rule);vertical-align:top;padding:.5rem .8rem .5rem 0}.prose th{border-bottom-width:2px;font-weight:650}.prose td[align=right],.prose th[align=right]{text-align:right}.page-h1{font-size:clamp(2.1rem,5.5vw,3.2rem);font-weight:800;font-stretch:70%;line-height:1}.lede{color:var(--ink-soft);max-width:var(--measure);margin:.8rem 0 1.75rem;font-size:1.15rem}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body.is-desk{overflow:hidden}.desktop{inset:var(--bar) 0 0 0;position:fixed;overflow:hidden}body.is-desk .statusbar{z-index:5;max-width:none;margin:0;padding:0 0 .6rem 1rem;position:fixed;bottom:0;left:0}body.is-desk .statusbar>span{display:none}.windows{pointer-events:none;z-index:10;position:absolute;inset:0}.desk-win{pointer-events:auto;outline:none;position:fixed}.desk-win:not(.is-active){box-shadow:3px 3px #0812264d}.desk-win .win-bar{cursor:grab}.desk-win.is-dragging .win-bar{cursor:grabbing}.desk-win.is-dragging{opacity:.92}.desk-win.is-max{left:0!important;top:var(--bar)!important;width:100%!important;height:calc(100% - var(--bar))!important}.desk-win .win-body>.loading,.win-error{font-family:var(--pixel);color:var(--ink-soft);padding:1.5rem;font-size:16px}.win-body[aria-busy=true]{cursor:progress}.zoom-ghost{z-index:2000;pointer-events:none;mix-blend-mode:difference;border:2px dashed #f4f8ff;position:fixed}.win-body.crt{background:repeating-linear-gradient(to bottom, #ffb5470a 0 1px, transparent 1px 3px), radial-gradient(ellipse at 50% 40%, #241608 0%, var(--crt) 75%);color:var(--amber);font-family:var(--pixel);text-shadow:0 0 6px #ffb54759;padding:14px 16px;font-size:16px;line-height:1.45}.term-out{white-space:pre-wrap;word-break:break-word;min-height:1.45em}.term-echo{color:#ffd79a}.term-out a{color:#ffe0ad}.term-line{align-items:baseline;gap:.6ch;display:flex}.term-prompt{color:#ffd79a;flex:none}.term-line input{min-width:0;color:var(--amber);font:inherit;text-shadow:inherit;caret-color:var(--amber);background:0 0;border:0;outline:none;flex:1;padding:0}@media (width<=720px){body.is-desk{overflow:auto}.desktop{padding-top:var(--bar);min-height:100vh;position:static}.desk-win{left:0!important;top:var(--bar)!important;width:100%!important;height:calc(100% - var(--bar))!important;position:fixed!important}body.is-desk .statusbar{padding:1rem;position:static}.windows{pointer-events:auto;position:static}.menubar .tray,.menubar .badge span{display:none}}
