@font-face{font-family:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-vietnamese-wght-normal.Czsa-EzN.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:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-ext-wght-normal.C-3rgBeH.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:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-wght-normal.CCVVNp6i.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:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-vietnamese-standard-italic.DTr-ymY4.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:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-ext-standard-italic.CSPGnFdO.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:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-standard-italic.kJKFiXvB.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:Inter Tight Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-tight-cyrillic-ext-wght-normal.okcGN4Nq.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:Inter Tight Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-tight-cyrillic-wght-normal.BS41q_Tv.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Tight Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-tight-greek-ext-wght-normal.DQgQPNk4.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Tight Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-tight-greek-wght-normal.sS1B39LI.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:Inter Tight Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-tight-vietnamese-wght-normal.TKKdAiBA.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:Inter Tight Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-tight-latin-ext-wght-normal.B4u9PlvR.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:Inter Tight Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-tight-latin-wght-normal.DX-nOvPD.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:Inter Tight Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/_astro/inter-tight-cyrillic-ext-wght-italic.BJqtfpQe.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:Inter Tight Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/_astro/inter-tight-cyrillic-wght-italic.HmhN1gQv.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Tight Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/_astro/inter-tight-greek-ext-wght-italic.B_3RbJza.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Tight Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/_astro/inter-tight-greek-wght-italic.Bb1BGCmL.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:Inter Tight Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/_astro/inter-tight-vietnamese-wght-italic.CiVF0Juh.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:Inter Tight Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/_astro/inter-tight-latin-ext-wght-italic.DYqsmiDd.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:Inter Tight Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/_astro/inter-tight-latin-wght-italic.DiXukCDG.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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-cyrillic-ext-wght-normal.EocZY2iu.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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-cyrillic-wght-normal.D73BlboJ.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-greek-wght-normal.Bw9x6K1M.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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-vietnamese-wght-normal.Bt-aOZkq.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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-latin-ext-wght-normal.DBQx-q_a.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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-latin-wght-normal.B9CIFXIH.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}*,:before,:after{box-sizing:border-box}*{margin:0}html{text-size-adjust:100%}:root{color-scheme:light dark;--font-body:"Newsreader Variable", ui-serif, Georgia, "Times New Roman", serif;--font-heading:"Inter Tight Variable", ui-sans-serif, system-ui, sans-serif;--font-mono:"JetBrains Mono Variable", ui-monospace, SFMono-Regular, Menlo, monospace;--measure:66ch;--fs-base:clamp(1.02rem, .62rem + 1.05vw, 1.18rem);--lh-body:1.72;--lh-heading:1.2;--fs-h1:2.6;--fs-h2:1.85;--fs-h3:1.35;--fs-h4:1.1;--space-para:1.3em;--space-section:3em;--heading-weight:580;--heading-tracking:-.015em;--body-tracking:0em;--heading-align:start;--h3-transform:none;--h3-tracking:-.015em;--dropcap:1;--dropcap-float:none;--dropcap-family:inherit;--dropcap-weight:inherit;--dropcap-color:inherit;--dropcap-leading:inherit;--dropcap-pad-inline:0;--dropcap-pad-block:0;--section-rule:0;--divider:"§";--h:258;--c:.11;--bg:light-dark(oklch(98.6% .005 var(--h)),oklch(15% .014 var(--h)));--surface:light-dark(oklch(96.4% .009 var(--h)),oklch(19.5% .016 var(--h)));--fg:light-dark(oklch(24% .02 var(--h)),oklch(91% .014 var(--h)));--fg-muted:light-dark(oklch(47% .022 var(--h)),oklch(70% .016 var(--h)));--fg-faint:light-dark(oklch(55% .016 var(--h)),oklch(58% .014 var(--h)));--accent:light-dark(oklch(46% var(--c) var(--h)),oklch(80% calc(var(--c) * .72) var(--h)));--rule:light-dark(oklch(88.5% .011 var(--h)),oklch(30% .016 var(--h)));--pad-inline:clamp(1.25rem, 5vw, 3rem)}html{background:var(--bg)}body{background:var(--bg);min-height:100dvh;color:var(--fg);font-family:var(--font-body);font-size:var(--fs-base);line-height:var(--lh-body);letter-spacing:var(--body-tracking);font-optical-sizing:auto;font-synthesis-weight:none;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;hanging-punctuation:first last;flex-direction:column;display:flex}::selection{background:var(--accent);color:var(--bg)}:where(a):focus-visible,:where(button,summary,[tabindex]):focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}.shell{width:100%;max-width:calc(var(--measure) + 2 * var(--pad-inline));padding-inline:var(--pad-inline);margin-inline:auto}.skip-link{background:var(--fg);color:var(--bg);z-index:10;padding:.6rem 1rem;position:absolute;top:0;left:-9999px}.skip-link:focus{left:0}.site-header{padding-block:clamp(1.5rem,4vw,2.75rem) clamp(1.75rem,5vw,3.5rem)}.site-header__inner{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.75rem 1.5rem;display:flex}.site-header__name{font-family:var(--font-heading);letter-spacing:-.015em;color:var(--fg);font-size:1rem;font-weight:600;text-decoration:none}.site-nav{font-family:var(--font-heading);letter-spacing:.005em;gap:1.35rem;font-size:.875rem;display:flex}.site-nav a{color:var(--fg-muted);border-bottom:1px solid #0000;padding-block:.15em;text-decoration:none}.site-nav a:hover,.site-nav a[aria-current=page]{color:var(--fg);border-bottom-color:var(--accent)}.site-footer{font-family:var(--font-heading);color:var(--fg-faint);margin-top:auto;padding-block:clamp(3rem,8vw,5.5rem) clamp(2rem,5vw,3rem);font-size:.82rem}.site-footer__inner{border-top:1px solid var(--rule);flex-wrap:wrap;justify-content:space-between;gap:.5rem 1.5rem;padding-top:1.5rem;display:flex}.site-footer a{color:var(--fg-muted);text-decoration-color:var(--rule);text-underline-offset:3px}.site-footer a:hover{color:var(--accent)}.prose{font-size:var(--fs-base)}.prose>*+*{margin-block-start:var(--space-para)}.prose p{text-wrap:pretty;orphans:2;widows:2}.prose :is(h2,h3,h4,h5,h6){font-family:var(--font-heading);font-weight:var(--heading-weight);line-height:var(--lh-heading);letter-spacing:var(--heading-tracking);text-align:var(--heading-align);text-wrap:balance;color:var(--fg)}.prose h2{font-size:calc(var(--fs-base) * var(--fs-h2));border-block-start:calc(var(--section-rule) * 1px) solid var(--rule);margin-block-start:var(--space-section);padding-block-start:calc(var(--section-rule) * .9em)}.prose h3{font-size:calc(var(--fs-base) * var(--fs-h3));text-transform:var(--h3-transform);letter-spacing:var(--h3-tracking);margin-block-start:calc(var(--space-section) * .55)}.prose h4{font-size:calc(var(--fs-base) * var(--fs-h4));margin-block-start:calc(var(--space-section) * .4)}.prose :is(h5,h6){font-size:calc(var(--fs-base) * 1);color:var(--fg-muted);margin-block-start:calc(var(--space-section) * .35)}.prose :is(h2,h3,h4)>a[href^=\#]{color:inherit;text-decoration:none}.prose :is(h2,h3,h4)>a[href^=\#]:hover{color:var(--accent)}.prose>p:first-of-type:first-letter{float:var(--dropcap-float);font-family:var(--dropcap-family);font-size:calc(1em * var(--dropcap));font-weight:var(--dropcap-weight);line-height:var(--dropcap-leading);color:var(--dropcap-color);padding-block-start:var(--dropcap-pad-block);padding-inline-end:var(--dropcap-pad-inline)}.prose a{color:var(--fg);text-decoration-line:underline;text-decoration-color:var(--accent);text-underline-offset:.18em;text-decoration-thickness:1px}.prose a:hover{color:var(--accent)}.prose strong{font-weight:650}.prose em{font-style:italic}.prose :not(pre)>code{font-family:var(--font-mono);background:var(--surface);border:1px solid var(--rule);word-break:break-word;border-radius:3px;padding:.1em .32em;font-size:.87em}.prose blockquote{border-inline-start:2px solid var(--accent);color:var(--fg-muted);padding-inline-start:1.25em;font-style:italic}.prose :is(ul,ol){padding-inline-start:1.5em}.prose li+li{margin-block-start:calc(var(--space-para) * .42)}.prose li::marker{color:var(--fg-faint)}.prose pre{font-family:var(--font-mono);background:var(--surface);border:1px solid var(--rule);letter-spacing:0;border-radius:4px;padding:1em 1.1em;font-size:.85em;line-height:1.6;overflow-x:auto}.prose pre code{font-family:inherit}.prose table{border-collapse:collapse;width:100%;font-family:var(--font-heading);font-size:.9em}.prose :is(th,td){text-align:start;border-block-end:1px solid var(--rule);padding:.5em .75em}.prose th{font-weight:600}.prose :is(table,pre){max-width:100%}.table-scroll{overflow-x:auto}.prose hr{text-align:center;margin-block:var(--space-section);color:var(--fg-faint);border:0}.prose hr:after{content:var(--divider);font-family:var(--font-heading);letter-spacing:.3em;font-size:.9em}@media print{:root{--bg:#fff;--fg:#000;--fg-muted:#333;--fg-faint:#555;--rule:#ccc;--accent:#000}.site-nav,.skip-link,.post-footer-nav{display:none}.prose a[href^=http]:after{content:" (" attr(href) ")";color:#555;word-break:break-all;font-size:.82em}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
