html{overflow-y:scroll;background-color:var(--color-bg);color:var(--color-text-primary);font-size:15px}:root{--color-bg: #0f0e1a;--color-text-main: #c0caf5;--color-text-primary: #a9b1d6;--color-text-muted: #565f89;--color-text-hover: #c0caf5;--color-border: #1c1b2e;--color-bg-alt: #0b0a16;--color-text-italic: #bb9af7;--color-tech-stack: #565f89;--color-tech-stack-span: #a9b1d6;--color-loading: #a9b1d6;--color-brand-github: #e6edf3;--color-brand-twitter: #1d9bf0;--color-brand-linkedin: #0a66c2;--color-brand-telegram: #2aabee;--color-brand-discord: #5865f2;--color-brand-chess: #ffffff;--color-brand-bluesky: #0085ff;--color-link-underline: rgba(187, 154, 247, .3);--color-selection: rgba(187, 154, 247, .25)}html[data-theme=light]{--color-bg: #ffeef1;--color-bg-alt: #ffe3e7;--color-text-main: #54313f;--color-text-primary: #7d5366;--color-text-muted: #a88091;--color-text-hover: #3d1d2b;--color-text-italic: #c25983;--color-border: #ffd2db;--color-tech-stack: #a88091;--color-tech-stack-span: #7d5366;--color-loading: #54313f;--color-brand-github: #2f1922;--color-brand-twitter: #1da1f2;--color-brand-linkedin: #0a66c2;--color-brand-telegram: #229ed9;--color-brand-discord: #5865f2;--color-brand-chess: #6b4c59;--color-brand-bluesky: #1185fe;--color-link-underline: rgba(194, 89, 131, .35);--color-selection: rgba(194, 89, 131, .22)}body{margin:0;min-height:100svh;overflow-x:hidden;background-color:var(--color-bg);color:var(--color-text-primary);font-family:Source Code Pro!important;font-weight:100;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}a{cursor:pointer;-webkit-tap-highlight-color:transparent;outline:none}@media(max-width:768px){html{font-size:12.5px}}p a,li a{color:var(--color-text-main);text-decoration:none;border-bottom:1px solid var(--color-link-underline);padding-bottom:1px;transition:border-bottom-color .25s ease,opacity .25s ease}p a:hover,li a:hover{opacity:.85;border-bottom-color:var(--color-text-main)}h1.page-title,h1.post-heading{font-size:1.2rem;font-weight:600;color:var(--color-text-main);border-bottom:1px solid var(--color-border);padding-bottom:.3em;margin-top:0;margin-bottom:30px;width:100%}@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+0460-052F,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+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,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+1F00-1FFF}@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+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@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+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,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+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
