@font-face{font-family:ibm plex sans;src:url(/fonts/IBMPlexSans-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:ibm plex sans;src:url(/fonts/IBMPlexSans-Regular-Cyrillic.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:ibm plex sans;src:url(/fonts/IBMPlexSans-Italic.woff2)format("woff2");font-weight:400;font-style:italic;font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:ibm plex sans;src:url(/fonts/IBMPlexSans-Italic-Cyrillic.woff2)format("woff2");font-weight:400;font-style:italic;font-display:swap;unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:ibm plex sans;src:url(/fonts/IBMPlexSans-SemiBold.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:ibm plex sans;src:url(/fonts/IBMPlexSans-SemiBold-Cyrillic.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap;unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:ibm plex mono;src:url(/fonts/IBMPlexMono-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:ibm plex mono;src:url(/fonts/IBMPlexMono-Regular-Cyrillic.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:ibm plex mono;src:url(/fonts/IBMPlexMono-Italic.woff2)format("woff2");font-weight:400;font-style:italic;font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:ibm plex mono;src:url(/fonts/IBMPlexMono-Italic-Cyrillic.woff2)format("woff2");font-weight:400;font-style:italic;font-display:swap;unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:ibm plex mono;src:url(/fonts/IBMPlexMono-SemiBold.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:ibm plex mono;src:url(/fonts/IBMPlexMono-SemiBold-Cyrillic.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap;unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}:root{--bg:#fafaf7;--fg:#0a0a0a;--fg-muted:#707070;--border:#1a1a1a;--bg-soft:#f0efea;--accent:#e85d04;--max-width:720px;--sans:"IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
    sans-serif;--mono:"IBM Plex Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo,
    Consolas, "Liberation Mono", monospace;--fs-xs:0.75rem;--fs-sm:0.875rem;--fs-base:1rem;--fs-md:1.2rem;--fs-lg:1.44rem;--fs-xl:clamp(1.728rem, 1.4rem + 1.6vw, 2.25rem);--lh-tight:1.2;--lh-snug:1.35;--lh-prose:1.55;--space-1:0.25rem;--space-2:0.5rem;--space-3:1rem;--space-4:1.5rem;--space-5:2.5rem;--space-6:4rem}@media(prefers-color-scheme:dark){:root{--bg:#0e0e0c;--fg:#edede5;--fg-muted:#8a8a82;--border:#edede5;--bg-soft:#1a1a18;--accent:#ff7a1f}}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{max-width:var(--max-width);margin:0 auto;padding:0 1.5rem;font-family:var(--sans);font-size:var(--fs-base);line-height:var(--lh-prose);color:var(--fg);background:var(--bg)}@media(min-width:640px){body{padding:0 2rem}}::selection{background:var(--accent);color:var(--bg)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}:where( .site-nav ul,.section-label,figcaption,.post-row__date,.post-row__tags,.post-row__read,.post-meta,.post-nav,nav[aria-label=pagination],.site-footer ){font-family:var(--mono);font-size:var(--fs-sm);letter-spacing:.06em;line-height:var(--lh-snug)}.site-header{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap;padding:var(--space-6)0 var(--space-4);margin-bottom:var(--space-5);border-bottom:1px solid var(--border)}.site-brand{display:flex;align-items:center;gap:var(--space-3)}.site-avatar{display:block;flex:none;line-height:0}.site-avatar img{display:block;width:56px;height:56px;object-fit:cover}.site-id{display:block;text-decoration:none;color:inherit}.site-id__title{margin:0;font-family:var(--mono);font-size:var(--fs-md);font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--fg)}.site-id__subtitle{margin:.35rem 0 0;font-family:var(--sans);font-size:var(--fs-sm);color:var(--fg-muted)}.site-nav ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:var(--space-3);text-transform:lowercase}.site-nav a{color:var(--fg);text-decoration:none}.site-nav a:hover,.site-nav li[aria-current=page] a{color:var(--accent)}h1,h2,h3,h4{font-family:var(--sans);line-height:var(--lh-tight);margin:var(--space-5)0 var(--space-3);color:var(--fg)}h1{font-size:var(--fs-xl);font-weight:600;letter-spacing:-.01em}h2{font-size:var(--fs-lg);font-weight:600;padding-bottom:var(--space-2);border-bottom:1px solid var(--bg-soft)}h3{font-size:var(--fs-md);font-weight:600}.section-label{font-size:var(--fs-sm);font-weight:400;text-transform:uppercase;letter-spacing:.12em;color:var(--fg-muted);margin:var(--space-5)0 0;padding:0 0 var(--space-2);border-bottom:1px solid var(--bg-soft)}p{margin:0 0 var(--space-3)}a{color:var(--fg);text-underline-offset:3px;text-decoration-thickness:1px}a:hover{color:var(--accent);text-decoration-thickness:2px}ul,ol{padding-left:1.25rem}li{margin-bottom:.25rem}blockquote{margin:var(--space-4)0;padding:var(--space-1)0 var(--space-1)var(--space-3);border-left:2px solid var(--accent);color:var(--fg-muted)}hr{border:0;border-top:1px solid var(--border);margin:var(--space-5)0}.rule-double{border:0;border-top:1px solid var(--fg);border-bottom:1px solid var(--fg);height:3px;margin:var(--space-3)0 var(--space-4)}code{font-family:var(--mono);font-size:.9em;background:var(--bg-soft);padding:.1em .35em;border-radius:0}pre{font-family:var(--mono);font-size:var(--fs-sm);background:var(--bg-soft);padding:var(--space-3);border:1px solid var(--bg-soft);border-radius:0;overflow-x:auto;line-height:var(--lh-prose);margin:var(--space-4)0}pre code{background:0 0;padding:0;font-size:inherit}:root{--koda-comment:#969ba5;--koda-keyword:#525252;--koda-type:#3d3d3d;--koda-func:#101010;--koda-string:#407f00;--koda-const:#b07700;--koda-danger:#ca0043;--koda-success:#019833;--koda-line:#cccccc}@media(prefers-color-scheme:dark){:root{--koda-comment:#50585d;--koda-keyword:#777777;--koda-type:#777777;--koda-func:#ffffff;--koda-string:#ffffff;--koda-const:#d9ba73;--koda-danger:#ff7676;--koda-success:#86cd82;--koda-line:#474747}}.chroma .c,.chroma .ch,.chroma .cm,.chroma .c1,.chroma .cs{color:var(--koda-comment);font-style:italic}.chroma .cp,.chroma .cpf{color:var(--koda-keyword)}.chroma .k,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr{color:var(--koda-keyword)}.chroma .kc{color:var(--koda-const)}.chroma .kt{color:var(--koda-type)}.chroma .n,.chroma .na,.chroma .nb,.chroma .bp,.chroma .nc,.chroma .no,.chroma .nd,.chroma .ni,.chroma .ne,.chroma .nl,.chroma .nn,.chroma .nx,.chroma .py,.chroma .nv,.chroma .vc,.chroma .vg,.chroma .vi{color:var(--fg)}.chroma .nf,.chroma .fm{color:var(--koda-func)}.chroma .nt{color:var(--koda-keyword)}.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .s2,.chroma .se,.chroma .sh,.chroma .si,.chroma .sx,.chroma .sr,.chroma .s1,.chroma .ss{color:var(--koda-string)}.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo{color:var(--koda-const)}.chroma .o,.chroma .ow{color:var(--koda-type)}.chroma .p{color:var(--fg)}.chroma .err{color:var(--koda-danger)}.chroma .gd{color:var(--koda-danger)}.chroma .gi{color:var(--koda-success)}.chroma .gh,.chroma .gu{color:var(--koda-keyword);font-weight:600}.chroma .gs{font-weight:600}.chroma .ge{font-style:italic}.chroma .ln,.chroma .lnt{color:var(--koda-line)}img,video{max-width:100%;height:auto;display:block}figure{margin:var(--space-4)0}figcaption{color:var(--fg-muted);margin-top:var(--space-2)}.post-list{list-style:none;margin:0;padding:0}.post-row{display:grid;grid-template-columns:7rem 1fr;gap:var(--space-3);padding:var(--space-4)0;border-bottom:1px solid var(--bg-soft);margin:0}.post-row:first-of-type{border-top:0}.post-row__date{color:var(--fg-muted);letter-spacing:.02em;padding-top:.2rem}.post-row__body{margin:0}.post-row__title{margin:0 0 var(--space-2);font-family:var(--sans);font-size:var(--fs-md);font-weight:600;line-height:var(--lh-tight)}.post-row__title a{color:var(--fg);text-decoration:none}.post-row__title a:hover{color:var(--accent)}.post-row__desc{margin:0 0 var(--space-2);font-size:var(--fs-base);color:var(--fg-muted)}.post-row__tags{margin:0 0 var(--space-2);color:var(--fg-muted)}.post-row__tags a{color:var(--fg-muted);text-decoration:none}.post-row__tags a:hover{color:var(--accent)}.post-row__read{display:inline-block;margin:0;color:var(--fg);text-decoration:none}.post-row__read:hover{color:var(--accent)}@media(max-width:540px){.post-row{grid-template-columns:1fr;gap:var(--space-2)}.post-row__date{padding-top:0}}.post-header{margin-bottom:var(--space-5)}.post-meta{display:grid;grid-template-columns:6rem 1fr;gap:.3rem var(--space-3);margin:0 0 var(--space-3)}.post-meta dt{color:var(--fg-muted);text-transform:lowercase;letter-spacing:.02em;margin:0}.post-meta dd{margin:0;color:var(--fg)}.post-meta a{color:var(--fg);text-decoration:none}.post-meta a:hover{color:var(--accent)}.post-title{margin:var(--space-3)0 0}.post-body>:first-child{margin-top:0}.post-footer{margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--border)}.post-nav{display:flex;justify-content:space-between;gap:var(--space-3)}.post-nav a{color:var(--fg);text-decoration:none;max-width:45%}.post-nav a:hover{color:var(--accent)}.post-nav__label{display:block;color:var(--fg-muted);text-transform:uppercase;letter-spacing:.08em;font-size:var(--fs-xs);margin-bottom:.2rem}.post-nav__next{text-align:right;margin-left:auto}nav[aria-label=pagination]{display:flex;justify-content:space-between;gap:var(--space-3);margin:var(--space-5)0 var(--space-6)}nav[aria-label=pagination] a{color:var(--fg);text-decoration:none}nav[aria-label=pagination] a:hover{color:var(--accent)}nav[aria-label=pagination] span{color:var(--fg-muted)}.site-footer{margin-top:var(--space-6);padding:var(--space-4)0 var(--space-5);border-top:1px solid var(--border);display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-3);text-transform:uppercase;color:var(--fg-muted)}.site-footer a{color:var(--fg-muted);text-decoration:none}.site-footer a:hover{color:var(--accent)}.comments{margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--border)}