@font-face{font-family:IBM Plex Serif;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-serif-cyrillic-ext-400-normal.CxUI4jC_.woff2)format("woff2"),url(/_astro/ibm-plex-serif-cyrillic-ext-400-normal.BcBv-TKp.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 Serif;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-serif-cyrillic-400-normal.CPQ8oqB-.woff2)format("woff2"),url(/_astro/ibm-plex-serif-cyrillic-400-normal.C7IY3oUc.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Serif;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-serif-vietnamese-400-normal.DGubAMUE.woff2)format("woff2"),url(/_astro/ibm-plex-serif-vietnamese-400-normal.BY9Vij9A.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 Serif;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-serif-latin-ext-400-normal.CNMooFZX.woff2)format("woff2"),url(/_astro/ibm-plex-serif-latin-ext-400-normal.DwktX9jl.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 Serif;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-serif-latin-400-normal.BIGslYFI.woff2)format("woff2"),url(/_astro/ibm-plex-serif-latin-400-normal.BB-zNvJB.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 Serif;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-serif-cyrillic-ext-400-italic.o20Cx6Xj.woff2)format("woff2"),url(/_astro/ibm-plex-serif-cyrillic-ext-400-italic.CPw2or01.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 Serif;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-serif-cyrillic-400-italic.C_ad97oI.woff2)format("woff2"),url(/_astro/ibm-plex-serif-cyrillic-400-italic.CygxzOWU.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Serif;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-serif-vietnamese-400-italic.BSp0Db6W.woff2)format("woff2"),url(/_astro/ibm-plex-serif-vietnamese-400-italic.1VBVfWB7.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 Serif;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-serif-latin-ext-400-italic.hOoDEQwh.woff2)format("woff2"),url(/_astro/ibm-plex-serif-latin-ext-400-italic.4IJS-XHX.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 Serif;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-serif-latin-400-italic.BCf4TsCA.woff2)format("woff2"),url(/_astro/ibm-plex-serif-latin-400-italic.Dd68USph.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 Serif;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-serif-cyrillic-ext-600-normal.DXSZftVr.woff2)format("woff2"),url(/_astro/ibm-plex-serif-cyrillic-ext-600-normal.CDMeBxaJ.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 Serif;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-serif-cyrillic-600-normal.6oiym5iu.woff2)format("woff2"),url(/_astro/ibm-plex-serif-cyrillic-600-normal.C8YEAlRA.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Serif;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-serif-vietnamese-600-normal.BBruYZNA.woff2)format("woff2"),url(/_astro/ibm-plex-serif-vietnamese-600-normal.DZRaS25B.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 Serif;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-serif-latin-ext-600-normal.CU6LeQOd.woff2)format("woff2"),url(/_astro/ibm-plex-serif-latin-ext-600-normal.D1-_Ic5L.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 Serif;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-serif-latin-600-normal.DAxitmSu.woff2)format("woff2"),url(/_astro/ibm-plex-serif-latin-600-normal.D3rpGdkS.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 Serif;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/ibm-plex-serif-cyrillic-ext-700-normal.CFcTJr1V.woff2)format("woff2"),url(/_astro/ibm-plex-serif-cyrillic-ext-700-normal.Dq7XTXEq.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 Serif;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/ibm-plex-serif-cyrillic-700-normal.BSMLrh7C.woff2)format("woff2"),url(/_astro/ibm-plex-serif-cyrillic-700-normal.CHVzwaSb.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Serif;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/ibm-plex-serif-vietnamese-700-normal.hPmb8oh_.woff2)format("woff2"),url(/_astro/ibm-plex-serif-vietnamese-700-normal.B3aSYR1A.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 Serif;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/ibm-plex-serif-latin-ext-700-normal.BoBbeF2z.woff2)format("woff2"),url(/_astro/ibm-plex-serif-latin-ext-700-normal.5BnP_gGI.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 Serif;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/ibm-plex-serif-latin-700-normal.bnJnpGuO.woff2)format("woff2"),url(/_astro/ibm-plex-serif-latin-700-normal.BBiG0u0D.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 Serif;font-style:italic;font-display:swap;font-weight:700;src:url(/_astro/ibm-plex-serif-cyrillic-ext-700-italic.Bc19HSAP.woff2)format("woff2"),url(/_astro/ibm-plex-serif-cyrillic-ext-700-italic.DgecleUo.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 Serif;font-style:italic;font-display:swap;font-weight:700;src:url(/_astro/ibm-plex-serif-cyrillic-700-italic.BRtCjQkv.woff2)format("woff2"),url(/_astro/ibm-plex-serif-cyrillic-700-italic.n7rvy6Ur.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Serif;font-style:italic;font-display:swap;font-weight:700;src:url(/_astro/ibm-plex-serif-vietnamese-700-italic.CKlPs2pg.woff2)format("woff2"),url(/_astro/ibm-plex-serif-vietnamese-700-italic.BfNGIsDC.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 Serif;font-style:italic;font-display:swap;font-weight:700;src:url(/_astro/ibm-plex-serif-latin-ext-700-italic.CQ77jtux.woff2)format("woff2"),url(/_astro/ibm-plex-serif-latin-ext-700-italic.D1NXqml7.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 Serif;font-style:italic;font-display:swap;font-weight:700;src:url(/_astro/ibm-plex-serif-latin-700-italic.CHn67auB.woff2)format("woff2"),url(/_astro/ibm-plex-serif-latin-700-italic.CRdJzUDe.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}:root{--bg:#16161a;--fg:#e6e6e2;--muted:#97978f;--accent:#8ab4e8;--green:#4cc273;--red:#f85149;--border:#2c2c32;--tag-bg:#24242a;--font-serif:"IBM Plex Serif", Georgia, "Times New Roman", serif;--font-ui:ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:ui-monospace, "Cascadia Code", Consolas, monospace;color-scheme:dark}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scrollbar-gutter:stable;scroll-behavior:smooth}body{background:var(--bg);max-width:min(100%,clamp(60rem,30rem + 60vw,100rem));color:var(--fg);font-family:var(--font-serif);-webkit-font-smoothing:antialiased;margin:0 auto;padding:0 2rem;font-size:1.2rem;line-height:1.7}header nav{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:2rem;margin-bottom:3rem;padding:1.75rem 0 1.25rem;display:flex}.site-title,.nav-link{color:var(--accent);font-size:1.45rem;font-weight:700;text-decoration:none;position:relative}.nav-link{font-family:var(--font-ui)}.site-title{color:var(--fg);align-items:center;gap:.6rem;font-size:1.75rem;transition:color .15s;display:inline-flex}.site-title .mark{flex:none;width:1.9rem;height:1.9rem;transition:transform .2s}.site-title span{position:relative}.site-title:hover,.site-title:focus-visible{color:var(--accent)}.site-title:hover .mark,.site-title:focus-visible .mark{transform:rotate(-6deg)}.site-title span:after,.nav-link:after{content:"";background:var(--accent);transform-origin:0;width:100%;height:2px;transition:transform .2s;position:absolute;bottom:-.2rem;left:0;transform:scaleX(0)}.site-title:hover span:after,.site-title:focus-visible span:after,.nav-link:hover:after,.nav-link:focus-visible:after{transform:scaleX(1)}.nav-pages{align-items:center;gap:2rem;margin-left:auto;display:flex}.nav-links{align-items:center;gap:1.1rem;display:flex}.icon-link{color:var(--muted);align-items:center;transition:color .15s;display:inline-flex}.icon-link:hover,.icon-link:focus-visible{color:var(--accent)}.icon-link svg{width:1.75rem;height:1.75rem}.icon-link-linkedin svg{width:1.5rem;height:1.5rem}main a{color:var(--accent)}.skip-link{z-index:10;background:var(--accent);color:var(--bg);border-radius:0 0 8px;padding:.5rem 1rem;font-weight:700;text-decoration:none;transition:transform .15s;position:absolute;top:0;left:0;transform:translateY(-150%)}.skip-link:focus-visible{transform:none}h1,h2,h3{text-wrap:balance;line-height:1.25}p{text-wrap:pretty}h1{margin-top:0;font-size:2.5rem}h2{margin-top:2.5rem;font-size:1.75rem}h3{font-size:1.35rem}code{font-family:var(--font-mono);background:var(--tag-bg);tab-size:4;border-radius:4px;padding:.1em .35em;font-size:.95em}pre{tab-size:4;border-radius:8px;padding:1rem;font-size:.95em;overflow-x:auto}pre code{background:0 0;padding:0}pre.mermaid{background:0 0;justify-content:center;display:flex;overflow-x:auto}iframe[src*="google.com/maps/embed"]{border-radius:8px;width:100%;height:min(70vh,45rem);margin:1.5rem 0;display:block}.pdf-embed{border:1px solid var(--border);border-radius:8px;width:100%;height:min(80vh,60rem);margin:1.5rem 0;display:block}blockquote{border-left:3px solid var(--border);color:var(--fg);margin:1rem 0;padding-left:1rem}.markdown-alert{--alert-color:var(--accent);border-left:3px solid var(--alert-color);margin:1rem 0;padding:.5rem 1rem}.markdown-alert>:last-child{margin-bottom:0}.markdown-alert-title{color:var(--alert-color);text-transform:lowercase;font-variant:small-caps;letter-spacing:.02em;margin:0 0 .25rem;font-weight:600}.markdown-alert-title .octicon{fill:currentColor;vertical-align:text-bottom;margin-right:.4rem}.markdown-alert-note{--alert-color:var(--accent)}.markdown-alert-tip{--alert-color:var(--green)}.markdown-alert-important{--alert-color:#a371f7}.markdown-alert-warning{--alert-color:#d29922}.markdown-alert-caution{--alert-color:#f85149}img{max-width:100%;height:auto}hr{border:none;border-top:1px solid var(--border);margin:2rem 0}table{border-collapse:collapse;width:100%}th,td{border:1px solid var(--border);text-align:left;padding:.4rem .6rem}td img{width:100%;display:block}table:has(td img){width:75%}.tags{flex-wrap:wrap;gap:.4rem;margin:.5rem 0 0;padding:0;list-style:none;display:flex}.tags a{font-family:var(--font-ui);background:hsl(var(--tag-hue,220) 30% 22% / .55);color:hsl(var(--tag-hue,220) 45% 78%);border:1px solid hsl(var(--tag-hue,220) 30% 38% / .8);border-radius:999px;padding:.1rem .65rem;font-size:.8rem;text-decoration:none;transition:background-color .15s,color .15s,border-color .15s;display:inline-block}.tags a:hover,.tags a:focus-visible,.tags a.active,.tags a[aria-current=page]{background:hsl(var(--tag-hue,220) 60% 40%);color:hsl(var(--tag-hue,220) 100% 94%);border-color:#0000}.status{font-family:var(--font-ui);letter-spacing:.04em;text-transform:uppercase;color:var(--muted);white-space:nowrap;--status-color:var(--muted);align-items:center;gap:.45rem;font-size:.75rem;font-weight:700;display:inline-flex}.status:before{content:"";background:var(--status-color);border-radius:50%;flex:none;width:.5rem;height:.5rem;transition:box-shadow .15s}.status-completed{--status-color:var(--green)}.status-abandoned{--status-color:#e0877a}.status-ongoing{--status-color:var(--accent)}.status-ongoing:before{box-shadow:0 0 0 3px color-mix(in srgb, var(--status-color) 25%, transparent)}.reading-time{font-family:var(--font-ui);color:var(--muted);white-space:nowrap;align-items:center;gap:.35rem;margin-top:.5rem;font-size:.85rem;transition:color .15s;display:inline-flex}.reading-time svg{width:.95em;height:.95em}.entry-controls{font-family:var(--font-ui)}footer{border-top:1px solid var(--border);font-family:var(--font-ui);color:var(--muted);margin-top:4rem;padding:1.5rem 0;font-size:.85rem}footer a{color:inherit}.heading-anchor{color:var(--muted);opacity:0;margin-left:.45em;text-decoration:none;transition:opacity .15s}:is(h1,h2,h3,h4,h5,h6):hover .heading-anchor,.heading-anchor:focus-visible,.show-anchor .heading-anchor{opacity:1}.heading-anchor:hover,.heading-anchor:focus-visible{color:var(--accent)}:is(h1,h2,h3,h4,h5,h6)[id]{scroll-margin-top:1rem}.katex-display{padding-block:.25em;overflow:auto hidden}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width<=640px){body{padding:0 1.25rem;font-size:1.05rem}header nav{grid-template-columns:auto 1fr;gap:1.25rem 1rem;margin-bottom:2rem;padding-top:1.25rem;display:grid}.site-title{grid-column:1/-1;font-size:1.5rem}.nav-pages{gap:1rem;margin-left:0}.nav-link{font-size:1.15rem}.nav-links{justify-self:end;gap:.7rem}.icon-link svg{width:1.5rem;height:1.5rem}.icon-link-linkedin svg{width:1.25rem;height:1.25rem}h1{font-size:2rem}h2{font-size:1.5rem}table{display:block;overflow-x:auto}table:has(td img),main img[width]{width:100%}}@media print{:root{--bg:#fff;--fg:#111;--muted:#555;--accent:#1a3d73;--green:#1a7f3c;--red:#b3261e;--border:#bbb;--tag-bg:#eee;color-scheme:light}body{max-width:none;padding:0;font-size:11pt}header nav,footer,.skip-link,.back,.heading-anchor,.code-block button,.lightbox,.progress{display:none!important}main a{color:inherit;text-decoration:underline}pre{white-space:pre-wrap;word-break:break-word;border:1px solid var(--border)}pre,pre *{color:#111!important;background:#f4f4f4!important}.tags a{border:1px solid #999;color:#333!important;background:0 0!important}h1,h2,h3{break-after:avoid}img,pre,table{break-inside:avoid}}
