@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-cyrillic-ext-wght-normal.d45eAU9y.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:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-cyrillic-wght-normal.BAAhND-U.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-greek-wght-normal.CmyJS8uq.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:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-vietnamese-wght-normal.Dg1JeJN0.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:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-latin-ext-wght-normal.CIII54If.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:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-latin-wght-normal.IvpUvPa2.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: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}*{box-sizing:border-box;margin:0;padding:0}:root{--font-sans:"IBM Plex Sans Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--font-mono:"IBM Plex Mono", "Fira Code", "JetBrains Mono", "SF Mono", Menlo, Consolas, Monaco, "Liberation Mono", "Courier New", monospace;--font-heading:var(--font-mono);--color-primary:#4078f2;--color-primary-dark:#2f5fd1;--color-primary-light:#4078f214;--color-secondary:#50a14f;--color-secondary-light:#e9f5e8;--color-accent:#986801;--color-accent-light:#fbf2e2;--color-accent-contrast:#fffaf0;--color-success:#50a14f;--color-success-bg:#eaf6e9;--color-success-border:#cbe8c9;--color-error:#e45649;--color-error-bg:#fdecea;--color-error-border:#f7c8c3;--color-text:#383a42;--color-text-light:#696c77;--color-background:#fafafa;--color-background-hover:#eeeeef;--color-background-alt:#fff;--color-border:#e2e2e4;--space-xs:.25rem;--space-sm:.5rem;--space-md:1rem;--space-lg:2rem;--space-xl:4rem;--space-2xl:6rem;--shadow-sm:0 1px 2px #383a420f;--shadow-md:0 4px 10px #383a4214;--shadow-lg:0 10px 24px #383a4214;--shadow-card:0 1px 2px #383a420d, 0 8px 20px #383a420f;--shadow-card-hover:0 4px 10px #383a4214, 0 16px 32px #383a421a;--radius-sm:.375rem;--radius-md:.625rem;--radius-lg:1rem;color-scheme:light}[data-theme=light]{--color-primary:#4078f2;--color-primary-dark:#2f5fd1;--color-primary-light:#4078f214;--color-secondary:#50a14f;--color-secondary-light:#e9f5e8;--color-accent:#986801;--color-accent-light:#fbf2e2;--color-accent-contrast:#fffaf0;--color-success:#50a14f;--color-success-bg:#eaf6e9;--color-success-border:#cbe8c9;--color-error:#e45649;--color-error-bg:#fdecea;--color-error-border:#f7c8c3;--color-text:#383a42;--color-text-light:#696c77;--color-background:#fafafa;--color-background-hover:#eeeeef;--color-background-alt:#fff;--color-border:#e2e2e4;color-scheme:light}[data-theme=dark]{--color-primary:#61afef;--color-primary-dark:#4d9be0;--color-primary-light:#61afef1f;--color-secondary:#98c379;--color-secondary-light:#98c3791f;--color-accent:#e5c07b;--color-accent-light:#e5c07b1f;--color-accent-contrast:#23262d;--color-success:#98c379;--color-success-bg:#98c37924;--color-success-border:#98c3794d;--color-error:#e06c75;--color-error-bg:#e06c7524;--color-error-border:#e06c754d;--color-background:#282c34;--color-background-hover:#333842;--color-background-alt:#2c313c;--color-text:#abb2bf;--color-text-light:#7f848e;--color-border:#3b4048;--shadow-sm:0 1px 2px #00000040;--shadow-md:0 4px 10px #0000004d;--shadow-lg:0 12px 28px #00000059;--shadow-card:0 1px 2px #0003, 0 8px 20px #00000047;--shadow-card-hover:0 4px 12px #0000004d, 0 18px 36px #0006;color-scheme:dark}@media (prefers-color-scheme:dark){[data-theme=system]{--color-primary:#61afef;--color-primary-dark:#4d9be0;--color-primary-light:#61afef1f;--color-secondary:#98c379;--color-secondary-light:#98c3791f;--color-accent:#e5c07b;--color-accent-light:#e5c07b1f;--color-accent-contrast:#23262d;--color-success:#98c379;--color-success-bg:#98c37924;--color-success-border:#98c3794d;--color-error:#e06c75;--color-error-bg:#e06c7524;--color-error-border:#e06c754d;--color-background:#282c34;--color-background-hover:#333842;--color-background-alt:#2c313c;--color-text:#abb2bf;--color-text-light:#7f848e;--color-border:#3b4048;--shadow-sm:0 1px 2px #00000040;--shadow-md:0 4px 10px #0000004d;--shadow-lg:0 12px 28px #00000059;--shadow-card:0 1px 2px #0003, 0 8px 20px #00000047;--shadow-card-hover:0 4px 12px #0000004d, 0 18px 36px #0006;color-scheme:dark}}html{font-family:var(--font-sans);color:var(--color-text);background-color:var(--color-background);font-size:16px;line-height:1.7}body{flex-direction:column;min-height:100vh;display:flex}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);letter-spacing:-.01em;font-weight:600;line-height:1.25}h1{margin-bottom:var(--space-lg);letter-spacing:-.02em;font-size:2.5rem;font-weight:600}h2{margin-bottom:var(--space-md);font-size:2rem}h3{margin-bottom:var(--space-md);font-size:1.5rem}p{margin-bottom:var(--space-lg)}a{color:var(--color-primary);text-decoration:none;transition:color .2s}a:hover{color:var(--color-primary-dark);text-decoration:underline}a:focus-visible,button:focus-visible{outline:2px solid var(--color-primary);outline-offset:3px}img{max-width:100%;height:auto}ul,ol{margin-left:2rem;margin-bottom:var(--space-md)}li{margin-bottom:.5rem}.container{width:100%;max-width:800px;padding:var(--space-lg);text-align:left;margin:0 auto}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.header-container{max-width:800px;padding:0 var(--space-lg);justify-content:space-between;align-items:center;margin:0 auto;display:flex}.wordmark{font-family:var(--font-heading);letter-spacing:.01em;color:var(--color-text);font-size:.95rem;font-weight:600}.wordmark:hover{color:var(--color-text);text-decoration:none}.wordmark span{color:var(--color-primary)}.logo{font-family:var(--font-heading);color:var(--color-text);letter-spacing:-.01em;font-size:1.5rem;font-weight:600}.social-links{gap:1.5rem;display:flex}.social-links a{color:var(--color-text-light);transition:color .2s}.social-links a:hover{color:var(--color-primary)}.btn-link{border-radius:var(--radius-md);border:1px solid var(--color-border);color:var(--color-text);background:0 0;align-items:center;padding:.75rem 1.5rem;font-size:1rem;font-weight:500;text-decoration:none;transition:all .2s;display:inline-flex}.btn-link:hover{border-color:var(--color-primary);color:var(--color-primary);background:var(--color-background-hover);text-decoration:none}.btn-link.primary{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-contrast);box-shadow:var(--shadow-card)}.btn-link.primary:hover{background:var(--color-accent);color:var(--color-accent-contrast);filter:brightness(1.08);box-shadow:var(--shadow-card-hover)}.btn-link-external:after{content:"↗";opacity:.7;margin-left:.5rem;font-size:.8rem;transition:all .3s}.btn-link-external:hover:after{opacity:1}.btn-link.small{padding:.6rem 1.2rem;font-size:.9rem}.btn-link.list{text-align:left;width:100%;margin-bottom:.75rem;display:block}@media (width<=768px){.btn-link{padding:.65rem 1.25rem;font-size:.95rem}.btn-link.small{padding:.5rem 1rem;font-size:.85rem}}pre{font-family:var(--font-mono);padding:var(--space-lg);border-radius:var(--radius-md);background-color:var(--color-background-alt);margin:var(--space-lg) 0;tab-size:2;overflow-x:auto}.code-block,.code-block code{tab-size:2!important}code{font-family:var(--font-mono);tab-size:2;font-size:.9em}:not(pre)>code{background-color:var(--color-primary-light);color:var(--color-primary);border-radius:var(--radius-sm);padding:.2em .4em}@media (width>=1024px){.container{padding:var(--space-lg) var(--space-xl)}}@media (width<=768px){html{font-size:14px}.container{padding:1.5rem}h1{font-size:2rem}}@media print{.container{padding:0}h1,h2,h3,h4,h5,h6,p{margin-bottom:.5rem}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}::view-transition-old(root){animation:.4s cubic-bezier(.4,0,.2,1) both fade-out}::view-transition-new(root){animation:.4s cubic-bezier(.4,0,.2,1) both fade-in}.page-transitioning{cursor:wait}.page-transitioning *{pointer-events:none}@media (prefers-reduced-motion:reduce){::view-transition-old(root),::view-transition-new(root){animation:none}}.loading-indicator[data-astro-cid-f2fqehlv]{background:linear-gradient(90deg, var(--color-primary), var(--color-secondary));z-index:9999;height:3px;animation:1s ease-in-out infinite loading-progress;position:fixed;top:0;left:0;right:0}.loading-spinner[data-astro-cid-f2fqehlv]{background:inherit;width:100%;height:100%;animation:1s ease-in-out infinite loading-slide}@keyframes loading-progress{0%{transform:translate(-100%)}50%{transform:translate(0%)}to{transform:translate(100%)}}@keyframes loading-slide{0%{opacity:.6}50%{opacity:1}to{opacity:.6}}@media (prefers-reduced-motion:reduce){.loading-indicator[data-astro-cid-f2fqehlv],.loading-spinner[data-astro-cid-f2fqehlv]{animation:none}}#themeToggle[data-astro-cid-l6lhmie6]{cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;min-width:44px;min-height:44px;display:flex}svg[data-astro-cid-l6lhmie6]{transition:transform .3s cubic-bezier(.4,0,.2,1)}.sun[data-astro-cid-l6lhmie6],.moon[data-astro-cid-l6lhmie6]{fill:#0000;stroke:#0000;transform-origin:50%;transition:all .3s cubic-bezier(.4,0,.2,1)}.js-loaded .sun[data-astro-cid-l6lhmie6]{fill:currentColor;stroke:currentColor;opacity:1;transform:scale(1)rotate(0)}.js-loaded.dark .sun[data-astro-cid-l6lhmie6]{fill:#0000;stroke:#0000;opacity:0;transform:scale(.8)rotate(180deg)}.js-loaded.dark .moon[data-astro-cid-l6lhmie6]{fill:#fff;stroke:#fff;opacity:1;transform:scale(1)rotate(0)}.js-loaded:not(.dark) .moon[data-astro-cid-l6lhmie6]{opacity:0;transform:scale(.8)rotate(-180deg)}@keyframes sunRayRotate{0%{transform:scale(1)rotate(0)}to{transform:scale(1)rotate(360deg)}}.js-loaded:not(.dark) .sun[data-astro-cid-l6lhmie6]{animation:20s linear infinite sunRayRotate}.sr-only[data-astro-cid-l6lhmie6]{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}.main-nav[data-astro-cid-ju4pidww]{align-items:center;gap:1.5rem;height:44px;display:flex}.main-nav[data-astro-cid-ju4pidww] a[data-astro-cid-ju4pidww]{color:var(--color-text);padding:var(--space-sm);font-weight:500;transition:color .2s}.main-nav[data-astro-cid-ju4pidww] a[data-astro-cid-ju4pidww]:hover{text-decoration:none}.main-nav[data-astro-cid-ju4pidww] a[data-astro-cid-ju4pidww].active{border-bottom:2px solid var(--color-primary)}.main-nav[data-astro-cid-ju4pidww] a[data-astro-cid-ju4pidww]:not(.active):hover{border-radius:var(--radius-sm);background-color:var(--color-background-hover)}.site-footer[data-astro-cid-ju4pidww]{border-top:1px solid var(--color-border);background-color:var(--color-background-hover);margin-top:auto;padding:2rem 0}.site-header[data-astro-cid-ju4pidww]{z-index:40;border-bottom:1px solid var(--color-border);background-color:var(--color-background);padding:1.25rem 0;position:sticky;top:0}.footer-container[data-astro-cid-ju4pidww]{max-width:800px;padding:0 var(--space-lg);justify-content:space-between;align-items:center;margin:0 auto;display:flex}.footer-container[data-astro-cid-ju4pidww] p[data-astro-cid-ju4pidww]{color:var(--color-text-light);margin-bottom:0}@media print{.site-header[data-astro-cid-ju4pidww],.site-footer[data-astro-cid-ju4pidww]{display:none}}@media (prefers-color-scheme:dark){.site-footer[data-astro-cid-ju4pidww]{background-color:var(--color-background)}}.social-links[data-astro-cid-ju4pidww]{gap:1.5rem;display:flex}.social-links[data-astro-cid-ju4pidww] a[data-astro-cid-ju4pidww]{color:var(--color-text-light);transition:color .2s}.social-links[data-astro-cid-ju4pidww] a[data-astro-cid-ju4pidww]:hover{color:var(--color-primary)}@media (width<=768px){.main-nav[data-astro-cid-ju4pidww]{flex-wrap:wrap;justify-content:center}.header-container[data-astro-cid-ju4pidww],.footer-container[data-astro-cid-ju4pidww]{text-align:center;flex-direction:column;gap:.75rem}.social-links[data-astro-cid-ju4pidww]{justify-content:center}}
