.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}#backToTopBtn[data-astro-cid-wlspcwf4]{transition:opacity .3s ease,visibility .3s ease}#backToTopBtn[data-astro-cid-wlspcwf4].visible{opacity:1;visibility:visible;pointer-events:auto}#backToTopBtn[data-astro-cid-wlspcwf4]:hover{transform:translateY(-2px)}#backToTopBtn[data-astro-cid-wlspcwf4]:active{transform:translateY(0)}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(/fonts/JetBrainsMono-vietnamese.woff2)format("woff2");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:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(/fonts/JetBrainsMono-latin-ext.woff2)format("woff2");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:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(/fonts/JetBrainsMono-latin.woff2)format("woff2");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}html{scroll-behavior:smooth}html,body{height:100%;min-height:100vh}body{display:flex;flex-flow:column}body>main{flex:1}.content-wrapper :is(h1,h2,h3,h4,h5,h6){font-weight:700;margin-top:2em;margin-bottom:.5em;line-height:1.3}.content-wrapper :is(h1,h2,h3,h4,h5,h6):first-child{margin-top:0}.content-wrapper h1{font-size:1.5rem}.content-wrapper h2{font-size:1.35rem}.content-wrapper h3{font-size:1.2rem}.content-wrapper h4{font-size:1.1rem}.content-wrapper h5,.content-wrapper h6{font-weight:600;font-size:1rem}@media (min-width:768px){.content-wrapper h1{font-size:2.25rem}.content-wrapper h2{font-size:1.875rem}.content-wrapper h3{font-size:1.5rem}.content-wrapper h4{font-size:1.35rem}.content-wrapper h5,.content-wrapper h6{font-size:1.1rem}}.content-wrapper p{margin-top:1em;line-height:1.7}.content-wrapper a{text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;transition:opacity .15s}.content-wrapper a:hover{opacity:.7}.content-wrapper strong{font-weight:700}.content-wrapper em{font-style:italic}.content-wrapper del{text-decoration:line-through;opacity:.6}.content-wrapper ul,.content-wrapper ol{margin-top:1em;padding-left:0;list-style:none}.content-wrapper li{margin-top:.4em;line-height:1.7;padding-left:1.5em;position:relative}.content-wrapper ul>li:before{content:"•";position:absolute;left:0;color:currentColor;opacity:.5}.content-wrapper ol{counter-reset:ol-counter}.content-wrapper ol>li{counter-increment:ol-counter}.content-wrapper ol>li:before{content:counter(ol-counter)".";position:absolute;left:0;font-size:.875em;opacity:.5}.content-wrapper li>ul,.content-wrapper li>ol{margin-top:.25em;padding-left:0}.content-wrapper li>ol{counter-reset:ol-counter}.content-wrapper ul:has(>li>input[type=checkbox])>li:before{content:none}.content-wrapper ul:has(>li>input[type=checkbox])>li{padding-left:0}.content-wrapper li>input[type=checkbox]{margin-right:.5em;vertical-align:middle}.content-wrapper blockquote{margin-top:1em;border-left:3px solid currentColor;padding-left:1.25em;opacity:.85;font-style:italic}.content-wrapper blockquote>blockquote{margin-top:.5em}.content-wrapper :not(pre)>code{font-size:.875em;padding:.15em .4em;border-radius:3px;background-color:#e5e7eb}.dark .content-wrapper :not(pre)>code{background-color:#374151}.content-wrapper pre{margin-top:1em;padding:.75rem;border-radius:4px;overflow-x:auto;font-size:.75rem;line-height:1.6;background-color:#1f2937!important;color:#e5e7eb}@media (min-width:768px){.content-wrapper pre{padding:1.25rem;font-size:.875rem}}.content-wrapper pre>code{background:0 0;padding:0;border-radius:0;font-size:inherit}.content-wrapper img{margin-top:1.5em;margin-bottom:1.5em;max-width:100%;height:auto;border-radius:4px;border:1px solid rgb(229 231 235)}.dark .content-wrapper img{border-color:#374151}.content-wrapper table{margin-top:1.5em;width:100%;border-collapse:collapse;font-size:.75rem;overflow-x:auto;display:block}@media (min-width:768px){.content-wrapper table{font-size:.875rem}}.content-wrapper thead{border-bottom:2px solid currentColor}.content-wrapper th{font-weight:700;text-align:left;padding:.5em}.content-wrapper td{padding:.5em;border-bottom:1px solid rgb(229 231 235)}.dark .content-wrapper td{border-bottom-color:#374151}.content-wrapper tr:last-child td{border-bottom:none}.content-wrapper hr{margin-top:2em;margin-bottom:2em;border:0;border-top:1px solid rgb(209 213 219)}.dark .content-wrapper hr{border-top-color:#4b5563}.content-wrapper dl{margin-top:1em}.content-wrapper dt{font-weight:700;margin-top:1em}.content-wrapper dd{padding-left:1.5em;margin-top:.25em}.content-wrapper abbr[title]{text-decoration:underline dotted;cursor:help}.content-wrapper kbd{font-size:.875em;padding:.1em .4em;border:1px solid rgb(209 213 219);border-radius:3px;box-shadow:0 1px #d1d5db}.dark .content-wrapper kbd{border-color:#4b5563;box-shadow:0 1px #4b5563}.content-wrapper mark{background-color:#fef08a;padding:.1em .2em;border-radius:2px}.content-wrapper .footnotes{margin-top:3em;padding-top:1.5em;border-top:1px solid rgb(209 213 219);font-size:.875rem}.dark .content-wrapper .footnotes{border-top-color:#4b5563}.content-wrapper sup a{font-size:.75em;text-decoration:none;padding:0 .2em}.content-wrapper details{margin-top:1em;border:1px solid rgb(229 231 235);border-radius:4px;padding:.75em 1em}.dark .content-wrapper details{border-color:#374151}.content-wrapper summary{cursor:pointer;font-weight:600}.content-wrapper details[open] summary{margin-bottom:.5em}.content-wrapper aside{margin-top:1.5em;padding:1em 1.25em;border-left:3px solid rgb(59 130 246);background-color:#eff6ff;border-radius:0 4px 4px 0;font-size:.9rem}.dark .content-wrapper aside{background-color:#1e3a8a33}@keyframes fade-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.animate-on-scroll{opacity:0}.animate-on-scroll.is-visible{animation:fade-up .6s ease-out forwards}.animate-on-scroll.fade-only.is-visible{animation:fade-in .5s ease-out forwards}.animate-on-scroll[data-delay="1"]{animation-delay:.1s}.animate-on-scroll[data-delay="2"]{animation-delay:.2s}.animate-on-scroll[data-delay="3"]{animation-delay:.3s}.animate-on-scroll[data-delay="4"]{animation-delay:.4s}@media (prefers-reduced-motion:reduce){.animate-on-scroll{opacity:1!important;animation:none!important}}a,button,[role=button],input,select,textarea,.tag-btn{touch-action:manipulation}button:not(#backToTopBtn):active,[role=button]:active,nav a:active,a[class*=border-]:active{transform:scale(.97);transition:transform .06s ease-out}