html{background-color:var(--color-bg);color:var(--color-text-primary);font-size:20px;overflow-y:scroll}:root{--color-bg:#0d0d0d;--color-bg-alt:#181818;--color-text-main:#d8d8d8;--color-text-primary:#b0b0b0;--color-text-muted:#7d7d7d;--color-tech-stack:#7d7d7d;--color-text-hover:#fff;--color-text-italic:#9a9a9a;--color-border:#2e2e2e;--color-tech-stack-span:#b0b0b0;--color-loading:#d8d8d8;--color-brand-github:#e6edf3;--color-brand-twitter:#1d9bf0;--color-brand-linkedin:#0a66c2;--color-brand-telegram:#2aabee;--color-brand-discord:#5865f2;--color-brand-chess:#fff;--color-brand-bluesky:#0085ff;--color-link-underline:#ffffff2e;--color-selection:#ffffff1f}html[data-theme=light]{--color-bg:#f3f3f3;--color-bg-alt:#ece9e4;--color-text-main:#2d2a26;--color-text-primary:#59544d;--color-text-muted:#8d877f;--color-text-hover:#141312;--color-text-italic:#6d6257;--color-border:#d4cec6;--color-tech-stack:#8d877f;--color-tech-stack-span:#59544d;--color-loading:#2d2a26;--color-brand-github:#24292f;--color-brand-twitter:#1da1f2;--color-brand-linkedin:#0a66c2;--color-brand-telegram:#229ed9;--color-brand-discord:#5865f2;--color-brand-chess:#6d6257;--color-brand-bluesky:#1185fe;--color-link-underline:#2d2a262e;--color-selection:#2d2a261a}body{background-color:var(--color-bg);min-height:100svh;color:var(--color-text-primary);-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-khtml-user-select:none;margin:0;font-weight:100;overflow-x:hidden;font-family:Source Code Pro!important}::selection{background-color:var(--color-selection)}::selection{background-color:var(--color-selection)}a{color:unset;cursor:pointer;-webkit-tap-highlight-color:transparent;outline:none}@media (width<=768px){html{font-size:15.5px}}p a,li a{color:var(--color-text-main);border-bottom:1px solid var(--color-link-underline);opacity:.85;padding-bottom:0;text-decoration:none;transition:border-bottom-color .25s,opacity .25s}p a:hover,li a:hover{opacity:1;border-bottom-color:var(--color-text-main)}h1,h1.page-title,h1.post-heading{color:var(--color-text-main);border-bottom:1px solid var(--color-border);margin-top:0;margin-bottom:30px;padding-bottom:.3em;font-size:1.2rem;font-weight:600;display:inline-block}.page-subtitle{color:var(--color-text-muted);margin-top:-15px;margin-bottom:40px;font-size:1.05rem;display:block}@font-face{font-family:Source Code Pro;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/source-code-pro-cyrillic-ext-400-normal.DMj7z5uw.woff2)format("woff2"),url(/_astro/source-code-pro-cyrillic-ext-400-normal.BlBdefdy.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:Source Code Pro;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/source-code-pro-cyrillic-400-normal.zAQh90eX.woff2)format("woff2"),url(/_astro/source-code-pro-cyrillic-400-normal.BxAVGXSA.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Source Code Pro;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,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)format("woff2"),url(data:font/woff;base64,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)format("woff");unicode-range:U+1F??}@font-face{font-family:Source Code Pro;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/source-code-pro-greek-400-normal.loYmywBR.woff2)format("woff2"),url(/_astro/source-code-pro-greek-400-normal.D-pDoyqc.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:Source Code Pro;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/source-code-pro-vietnamese-400-normal.Cp62Zi-a.woff2)format("woff2"),url(/_astro/source-code-pro-vietnamese-400-normal.CSQ0MR64.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:Source Code Pro;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/source-code-pro-latin-ext-400-normal.C8wU-ygL.woff2)format("woff2"),url(/_astro/source-code-pro-latin-ext-400-normal.GB-6ZST1.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:Source Code Pro;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/source-code-pro-latin-400-normal.DEXWLoHG.woff2)format("woff2"),url(/_astro/source-code-pro-latin-400-normal.Bf_aQirX.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}
