:root{color-scheme:light;--hls-navy-900:#0e1621;--hls-navy-800:#182841;--hls-navy-700:#27364a;--hls-navy-600:#3f4c5e;--hls-navy-500:#5a6879;--hls-blue-50:#e8f3fe;--hls-blue-100:#cbe6fd;--hls-blue-200:#9bcffb;--hls-blue-300:#5fb2f7;--hls-blue-400:#0494f7;--hls-blue-500:#0285ed;--hls-blue-600:#0b62c4;--hls-blue-700:#0057b8;--hls-blue-800:#034a8c;--hls-blue-900:#023a6e;--hls-blue-950:#01203c;--hls-slate-0:#fff;--hls-slate-25:#f7f9fc;--hls-slate-50:#eef2f8;--hls-slate-100:#e4eaf3;--hls-slate-200:#d6dfeb;--hls-slate-300:#c2cedd;--hls-slate-400:#9aa8ba;--hls-slate-500:#5a6879;--hls-slate-600:#3f4c5e;--hls-slate-700:#27364a;--hls-slate-800:#182841;--hls-slate-900:#0e1621;--hls-slate-950:#0b111a;--hls-success:#0e7c5a;--hls-success-soft:#e7f5ef;--hls-warn:#8a5200;--hls-warn-soft:#fdf3e2;--hls-danger:#c0332d;--hls-danger-soft:#fcedec;--hls-eff-io:#0b5fb8;--hls-eff-io-soft:#e8f3fe;--hls-eff-time:#b45309;--hls-eff-time-soft:#fdf3e2;--hls-eff-proc:#7a3aa6;--hls-eff-proc-soft:#f3ecfb;--hls-eff-exit:#b3261e;--hls-eff-exit-soft:#fcedec;--hls-eff-conc:#0f6b4f;--hls-eff-conc-soft:#e7f5ef;--hls-code-text:#1b2739;--hls-code-comment:#62707f;--hls-code-keyword:#0b5fb8;--hls-code-control:#7a3aa6;--hls-code-type:#0f6b4f;--hls-code-effect:#b45309;--hls-code-tainted:#b3261e;--hls-code-attr:#b3261e;--hls-bg-canvas:#fff;--hls-bg-surface:#f7f9fc;--hls-bg-raised:#eef2f8;--hls-bg-inset:#0e1621;--hls-bg-overlay:#0e162173;--hls-text-primary:#0e1621;--hls-text-secondary:#3f4c5e;--hls-text-muted:#5a6879;--hls-text-link:#0b62c4;--hls-text-inverse:#fff;--hls-text-on-accent:#fff;--hls-border-subtle:#e4eaf3;--hls-border-default:#d6dfeb;--hls-border-strong:#5a6879;--hls-accent:#0285ed;--hls-accent-solid:#0057b8;--hls-accent-solid-hover:#034a8c;--hls-accent-soft:#e8f3fe;--hls-accent-text:#0b62c4;--hls-focus-ring:#0285ed;--hls-brand-navy:#182841;--hls-mark-navy:#182841;--hls-mark-blue:#0285ed;--hls-code-bg:#f7f9fc;--hls-code-border:#e4eaf3;--hls-code-header-bg:#eef2f8;--hls-code-gutter:#9aa8ba;--hls-terminal-fg:#c9d6e6;--hls-terminal-dim:#8fa3be;--hls-shadow-sm:0 1px 2px #0e16210d, 0 1px 1px #0e16210a;--hls-shadow-md:0 4px 12px #0e162114;--hls-shadow-lg:0 12px 32px #0e16211a;--hls-font-sans:"IBM Plex Sans", "Be Vietnam Pro", "Segoe UI", Roboto, system-ui, sans-serif;--hls-font-mono:"IBM Plex Mono", "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--hls-fs-2xs:.75rem;--hls-fs-xs:.8125rem;--hls-fs-sm:.875rem;--hls-fs-base:1rem;--hls-fs-md:1.125rem;--hls-fs-lg:1.25rem;--hls-fs-xl:1.5rem;--hls-fs-2xl:1.875rem;--hls-fs-3xl:2.375rem;--hls-fs-4xl:3rem;--hls-fs-5xl:3.75rem;--hls-lh-tight:1.15;--hls-lh-snug:1.35;--hls-lh-normal:1.6;--hls-lh-body:1.7;--hls-ls-tight:-.025em;--hls-ls-snug:-.015em;--hls-ls-normal:0;--hls-prose-max:68ch;--hls-space-1:.25rem;--hls-space-2:.5rem;--hls-space-3:.75rem;--hls-space-4:1rem;--hls-space-5:1.25rem;--hls-space-6:1.5rem;--hls-space-8:2rem;--hls-space-10:2.5rem;--hls-space-12:3rem;--hls-space-16:4rem;--hls-space-20:5rem;--hls-space-24:6rem;--hls-radius-sm:4px;--hls-radius-md:6px;--hls-radius-lg:8px;--hls-radius-card:12px;--hls-radius-panel:16px;--hls-radius-pill:999px;--hls-border-width:1px;--hls-container-max:1200px;--hls-container-pad:24px;--hls-header-h:64px;--hls-dur-fast:.12s;--hls-dur-base:.14s;--hls-dur-slow:.2s;--hls-ease:ease-out;--hls-ease-emphasized:cubic-bezier(.2, .8, .2, 1)}:root[lang=vi]{--hls-prose-max:72ch}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--hls-bg-canvas:#0b111a;--hls-bg-surface:#141d2b;--hls-bg-raised:#1a2637;--hls-bg-inset:#080d14;--hls-bg-overlay:#02060ca6;--hls-text-primary:#e8eef7;--hls-text-secondary:#a9b7cb;--hls-text-muted:#8fa3be;--hls-text-link:#4ba3f5;--hls-text-inverse:#0b111a;--hls-text-on-accent:#0b111a;--hls-border-subtle:#1a2637;--hls-border-default:#223047;--hls-border-strong:#5a6b82;--hls-accent:#0494f7;--hls-accent-solid:#4ba3f5;--hls-accent-solid-hover:#6bb1ff;--hls-accent-soft:#4ba3f51f;--hls-accent-text:#4ba3f5;--hls-focus-ring:#0494f7;--hls-brand-navy:#0e1621;--hls-mark-navy:#5b82b4;--hls-mark-blue:#0494f7;--hls-code-bg:#101a28;--hls-code-border:#1e2937;--hls-code-header-bg:#1a2637;--hls-code-gutter:#5a6b82;--hls-terminal-fg:#c9d6e6;--hls-terminal-dim:#8fa3be;--hls-shadow-sm:0 1px 2px #0006;--hls-shadow-md:0 4px 12px #00000073;--hls-shadow-lg:0 12px 32px #0000008c;--hls-success:#3fd3a3;--hls-success-soft:#0f2a22;--hls-warn:#f0b429;--hls-warn-soft:#2a2214;--hls-danger:#ff7b72;--hls-danger-soft:#2e1a19;--hls-eff-io:#6bb1ff;--hls-eff-io-soft:#10233a;--hls-eff-time:#f0b429;--hls-eff-time-soft:#2a2214;--hls-eff-proc:#c89bf0;--hls-eff-proc-soft:#211a33;--hls-eff-exit:#ff8a80;--hls-eff-exit-soft:#2e1a19;--hls-eff-conc:#5fd6ae;--hls-eff-conc-soft:#0f2a22;--hls-code-text:#d9e3f0;--hls-code-comment:#7c8ca3;--hls-code-keyword:#6bb1ff;--hls-code-control:#c89bf0;--hls-code-type:#5fd6ae;--hls-code-effect:#f0b429;--hls-code-tainted:#ff8a80;--hls-code-attr:#ff8a80}}:root[data-theme=dark]{color-scheme:dark;--hls-bg-canvas:#0b111a;--hls-bg-surface:#141d2b;--hls-bg-raised:#1a2637;--hls-bg-inset:#080d14;--hls-bg-overlay:#02060ca6;--hls-text-primary:#e8eef7;--hls-text-secondary:#a9b7cb;--hls-text-muted:#8fa3be;--hls-text-link:#4ba3f5;--hls-text-inverse:#0b111a;--hls-text-on-accent:#0b111a;--hls-border-subtle:#1a2637;--hls-border-default:#223047;--hls-border-strong:#5a6b82;--hls-accent:#0494f7;--hls-accent-solid:#4ba3f5;--hls-accent-solid-hover:#6bb1ff;--hls-accent-soft:#4ba3f51f;--hls-accent-text:#4ba3f5;--hls-focus-ring:#0494f7;--hls-brand-navy:#0e1621;--hls-mark-navy:#5b82b4;--hls-mark-blue:#0494f7;--hls-code-bg:#101a28;--hls-code-border:#1e2937;--hls-code-header-bg:#1a2637;--hls-code-gutter:#5a6b82;--hls-terminal-fg:#c9d6e6;--hls-terminal-dim:#8fa3be;--hls-shadow-sm:0 1px 2px #0006;--hls-shadow-md:0 4px 12px #00000073;--hls-shadow-lg:0 12px 32px #0000008c;--hls-success:#3fd3a3;--hls-success-soft:#0f2a22;--hls-warn:#f0b429;--hls-warn-soft:#2a2214;--hls-danger:#ff7b72;--hls-danger-soft:#2e1a19;--hls-eff-io:#6bb1ff;--hls-eff-io-soft:#10233a;--hls-eff-time:#f0b429;--hls-eff-time-soft:#2a2214;--hls-eff-proc:#c89bf0;--hls-eff-proc-soft:#211a33;--hls-eff-exit:#ff8a80;--hls-eff-exit-soft:#2e1a19;--hls-eff-conc:#5fd6ae;--hls-eff-conc-soft:#0f2a22;--hls-code-text:#d9e3f0;--hls-code-comment:#7c8ca3;--hls-code-keyword:#6bb1ff;--hls-code-control:#c89bf0;--hls-code-type:#5fd6ae;--hls-code-effect:#f0b429;--hls-code-tainted:#ff8a80;--hls-code-attr:#ff8a80}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:100 700;src:url(/fonts/ibm-plex-sans-latin.woff2)format("woff2");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 Sans;font-style:normal;font-display:swap;font-weight:100 700;src:url(/fonts/ibm-plex-sans-latin-ext.woff2)format("woff2");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 Sans;font-style:normal;font-display:swap;font-weight:100 700;src:url(/fonts/ibm-plex-sans-vietnamese.woff2)format("woff2");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 Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/fonts/ibm-plex-mono-latin-400.woff2)format("woff2");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 Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/fonts/ibm-plex-mono-latin-ext-400.woff2)format("woff2");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 Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/fonts/ibm-plex-mono-vietnamese-400.woff2)format("woff2");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 Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/fonts/ibm-plex-mono-latin-500.woff2)format("woff2");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 Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/fonts/ibm-plex-mono-latin-ext-500.woff2)format("woff2");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 Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/fonts/ibm-plex-mono-vietnamese-500.woff2)format("woff2");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}*,:before,:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--hls-header-h) + var(--hls-space-6))}body{background:var(--hls-bg-canvas);min-height:100svh;color:var(--hls-text-primary);font-family:var(--hls-font-sans);font-size:var(--hls-fs-base);line-height:var(--hls-lh-body);font-synthesis-weight:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased}img,svg,video{max-width:100%;display:block}input,button,textarea,select{font:inherit;color:inherit}button{cursor:pointer}a{color:var(--hls-text-link);text-underline-offset:.2em;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--hls-focus-ring);outline-offset:2px;border-radius:var(--hls-radius-sm)}::selection{background:var(--hls-blue-100);color:var(--hls-blue-900)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:var(--hls-lh-snug);color:var(--hls-text-primary);text-wrap:balance}h1{font-size:var(--hls-fs-4xl);line-height:var(--hls-lh-tight);letter-spacing:var(--hls-ls-tight)}h2{font-size:var(--hls-fs-2xl);letter-spacing:var(--hls-ls-snug)}h3{font-size:var(--hls-fs-xl)}h4{font-size:var(--hls-fs-lg)}p,li{text-wrap:pretty}code,kbd,samp,pre{font-family:var(--hls-font-mono);font-feature-settings:"zero" 1}:not(pre)>code{border-radius:var(--hls-radius-sm);background:var(--hls-bg-raised);border:1px solid var(--hls-border-subtle);padding:2px 5px;font-size:.9em}.hls-container{width:100%;max-width:var(--hls-container-max);padding-inline:var(--hls-container-pad);margin-inline:auto}.hls-section{padding-block:var(--hls-space-20);border-top:1px solid var(--hls-border-subtle)}.hls-section--tight{padding-block:var(--hls-space-16)}.hls-section__head{max-width:var(--hls-prose-max);margin-bottom:var(--hls-space-10)}.hls-section__title{margin-bottom:var(--hls-space-4)}.hls-section__lead{font-size:var(--hls-fs-md);color:var(--hls-text-secondary);line-height:var(--hls-lh-normal)}.hls-eyebrow{font-family:var(--hls-font-mono);font-size:var(--hls-fs-2xs);color:var(--hls-text-muted);margin-bottom:var(--hls-space-3);font-weight:500;display:block}.hls-prose{max-width:var(--hls-prose-max);color:var(--hls-text-secondary)}.hls-prose>*+*{margin-top:var(--hls-space-4)}.hls-prose strong{color:var(--hls-text-primary);font-weight:600}.hls-mono{font-family:var(--hls-font-mono);font-variant-numeric:tabular-nums}.hls-btn{justify-content:center;align-items:center;gap:var(--hls-space-2);min-height:48px;padding-inline:var(--hls-space-6);border-radius:var(--hls-radius-md);font-size:var(--hls-fs-base);transition:background-color var(--hls-dur-fast) var(--hls-ease), border-color var(--hls-dur-fast) var(--hls-ease), color var(--hls-dur-fast) var(--hls-ease);border:1px solid #0000;font-weight:500;line-height:1;text-decoration:none;display:inline-flex}.hls-btn--primary{background:var(--hls-accent-solid);color:var(--hls-text-on-accent)}.hls-btn--primary:hover{background:var(--hls-accent-solid-hover)}.hls-btn--secondary{border-color:var(--hls-border-default);color:var(--hls-text-primary);background:0 0}.hls-btn--secondary:hover{background:var(--hls-bg-raised);border-color:var(--hls-border-strong)}.hls-btn--ghost{color:var(--hls-accent-text);padding-inline:var(--hls-space-3);background:0 0}.hls-btn--ghost:hover{background:var(--hls-accent-soft)}.hls-btn--sm{min-height:36px;padding-inline:var(--hls-space-4);font-size:var(--hls-fs-sm)}.hls-card{background:var(--hls-bg-surface);border:1px solid var(--hls-border-subtle);border-radius:var(--hls-radius-card);padding:var(--hls-space-6)}.hls-card:hover{border-color:var(--hls-border-default)}.hls-chip{align-items:center;gap:var(--hls-space-2);height:28px;padding-inline:var(--hls-space-3);border-radius:var(--hls-radius-pill);border:1px solid var(--hls-border-subtle);background:var(--hls-bg-raised);color:var(--hls-text-secondary);font-family:var(--hls-font-mono);font-size:var(--hls-fs-2xs);white-space:nowrap;font-weight:500;display:inline-flex}.hls-chip--accent{background:var(--hls-blue-50);border-color:var(--hls-blue-100);color:var(--hls-blue-900)}.hls-chip__num{color:var(--hls-text-primary);font-weight:600}.hls-table-wrap{border:1px solid var(--hls-border-subtle);border-radius:var(--hls-radius-card);background:var(--hls-bg-canvas);overflow-x:auto}.hls-table{border-collapse:collapse;width:100%;font-size:var(--hls-fs-sm)}.hls-table th,.hls-table td{padding:var(--hls-space-3) var(--hls-space-4);text-align:left;vertical-align:top;border-bottom:1px solid var(--hls-border-subtle)}.hls-table thead th{background:var(--hls-bg-raised);font-size:var(--hls-fs-2xs);color:var(--hls-text-secondary);white-space:nowrap;font-weight:600}.hls-table tbody tr:last-child td{border-bottom:0}.hls-table tbody tr:hover{background:var(--hls-bg-surface)}.hls-table td code{white-space:nowrap}.shiki,.shiki span{color:var(--shiki-light);background-color:var(--shiki-light-bg);font-style:var(--shiki-light-font-style);font-weight:var(--shiki-light-font-weight);text-decoration:var(--shiki-light-text-decoration)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .shiki,:root:not([data-theme=light]) .shiki span{color:var(--shiki-dark);background-color:var(--shiki-dark-bg);font-style:var(--shiki-dark-font-style);font-weight:var(--shiki-dark-font-weight);text-decoration:var(--shiki-dark-text-decoration)}}:root[data-theme=dark] .shiki,:root[data-theme=dark] .shiki span{color:var(--shiki-dark);background-color:var(--shiki-dark-bg);font-style:var(--shiki-dark-font-style);font-weight:var(--shiki-dark-font-weight);text-decoration:var(--shiki-dark-text-decoration)}.hls-sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.hls-skip-link{left:var(--hls-space-4);top:var(--hls-space-2);z-index:100;padding:var(--hls-space-2) var(--hls-space-4);background:var(--hls-bg-canvas);border:1px solid var(--hls-border-default);border-radius:var(--hls-radius-md);position:absolute;transform:translateY(-200%)}.hls-skip-link:focus{transform:translateY(0)}
