:root{--ink:#07080b;--ink-1:#0b0d12;--ink-2:#11141b;--ink-3:#181c25;--ink-4:#222735;--line:#1f2430;--line-2:#2c3242;--line-3:#3b4356;--text:#eef1f7;--text-2:#b4bbc9;--text-3:#8b94a6;--red:#e8142c;--red-2:#ff3a4f;--red-deep:#8f0a1b;--ray-direct:#bfe1ff;--ray-remux:#ffc04d;--ray-convert:#ff6b5e;--ok:#6fdc9a;--away:#ffc04d;--lock:#c79bff;--gone:#ff6b5e;--on-light:#07080b;--white:#fff;--shade:#000;--app-bg:#0a0a0b;--app-surface:#141416;--app-surface-2:#1c1c1f;--app-line:#26262b;--hue-movies:#ff5a5f;--hue-series:#7c8cff;--hue-music:#d66bc4;--hue-personal:#2fca7d;--hue-iptv:#17b8a6;--hue-system:#3fbf7f;--app-gold:#f5c26b;--app-progress:#4fd1c5;--bezel:#0f1116;--bezel-hi:#2a2f3b;--font:"Geist Variable", ui-sans-serif, system-ui, sans-serif;--font-title:"Big Shoulders Display Variable", "Geist Variable", sans-serif;--mono:ui-monospace, "Cascadia Mono", "SF Mono", Menlo, Consolas, monospace;--fs-3xs:.6875rem;--fs-2xs:.75rem;--fs-xs:.8125rem;--fs-sm:.875rem;--fs-md:1rem;--fs-base:1.0625rem;--fs-lg:1.25rem;--fs-xl:1.5rem;--fs-h3:clamp(1.4rem, 2vw, 1.75rem);--fs-title:clamp(1.6rem, 2.6vw, 2.2rem);--fs-h2:clamp(2.2rem, 4.4vw, 4rem);--fs-h1:clamp(2.9rem, 5.2vw, 6rem);--fs-work:clamp(1.75rem, 4.6vw, 4.5rem);--fs-work-md:clamp(1.625rem, 4vw, 3.75rem);--fs-work-sm:clamp(1.0625rem, 1.5vw, 1.375rem);--graph-fs-kind:11px;--graph-fs-title:15px;--graph-fs-small:11.5px;--graph-fs-pin:12px;--fs-work-xs:clamp(1rem, 1.7vw, 1.625rem);--app-fs-1:clamp(.5625rem, .8vw, .75rem);--app-fs-2:clamp(.625rem, .95vw, .875rem);--app-fs-3:clamp(.6875rem, 1.1vw, 1rem);--gutter:clamp(20px, 5vw, 128px);--section:clamp(112px, 14vw, 200px);--max:2160px;--measure:74ch;--edge:max(var(--gutter), calc((100% - var(--max)) / 2));--r-2xs:4px;--r-xs:6px;--r-sm:10px;--r:16px;--r-lg:24px;--r-pill:999px;--ease:cubic-bezier(.16, 1, .3, 1);--ease-in:cubic-bezier(.5, 0, .75, 0);--ease-io:cubic-bezier(.65, 0, .35, 1);--dur-fast:.16s;--dur:.28s;--dur-long:.9s;--dur-ambient:1.8s;--ambient-k:20%;--ambient-k-soft:13%;--ambient-beam:7%;--z-raised:2;--z-header:50;--z-skip:100;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-reduced-motion:reduce){:root{--dur-fast:0s;--dur:0s;--dur-long:0s;--dur-ambient:0s}}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-vietnamese-wght-normal-6IgcOCM7.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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-ext-wght-normal-DC-KSUi6.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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-wght-normal-BgDaEnEv.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:Big Shoulders Display Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/big-shoulders-display-vietnamese-wght-normal-B-JM5mJH.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:Big Shoulders Display Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/big-shoulders-display-latin-ext-wght-normal-EP2r9iG4.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:Big Shoulders Display Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/big-shoulders-display-latin-wght-normal-Bn_gnr7w.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}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scrollbar-color:var(--line-3) var(--ink);background:var(--ink);scroll-padding-top:96px;font-size:100%;overflow-x:clip}body{color:var(--text);font:400 var(--fs-base) / 1.6 var(--font);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;overflow-x:clip}@media (width>=2000px){html{font-size:min(100% + .4vw - 8px,125%)}}::selection{background:color-mix(in oklab, var(--ray-direct) 35%, transparent);color:var(--text)}::-webkit-scrollbar{width:12px}::-webkit-scrollbar-track{background:var(--ink)}::-webkit-scrollbar-thumb{background:var(--line-2);border:3px solid var(--ink);border-radius:var(--r-sm)}:focus-visible{outline:2px solid var(--ray-direct);outline-offset:3px;border-radius:var(--r-xs)}a{color:inherit;text-underline-offset:.22em;text-decoration-thickness:1px}img,svg,canvas,video{max-width:100%;display:block}button{font:inherit;color:inherit}h1,h2,h3,h4{letter-spacing:-.035em;text-wrap:balance;margin:0;font-weight:640;line-height:1.02}p{text-wrap:pretty;margin:0}ul,ol{margin:0;padding:0}code,kbd,samp{font-family:var(--mono);font-size:.92em}.tabular{font-variant-numeric:tabular-nums}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.js [data-reveal]{opacity:0;filter:blur(6px);transition:opacity var(--dur-long) var(--ease), transform var(--dur-long) var(--ease), filter var(--dur-long) var(--ease);transition-delay:calc(var(--i,0) * 70ms);transform:translateY(28px)}.js [data-reveal].in{opacity:1;filter:none;transform:none}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.js [data-reveal]{opacity:1;filter:none;transform:none}}.skip{z-index:var(--z-skip);background:var(--text);color:var(--on-light);border-radius:var(--r-sm);padding:10px 14px;font-weight:600;text-decoration:none;position:absolute;top:-80px;left:12px}.skip:focus{top:12px}.js h2[data-reveal]>span{clip-path:inset(0 0 100%);transition:clip-path 1.1s var(--ease) .18s, transform 1.1s var(--ease) .18s;display:inline-block;transform:translateY(35%)}.js h2[data-reveal].in>span{clip-path:inset(-10% -2% -20%);transform:none}[data-spot]{position:relative}[data-spot]:after{content:"";border-radius:inherit;pointer-events:none;background:radial-gradient(420px circle at var(--mx,50%) var(--my,50%), color-mix(in oklab, var(--ray-direct) 9%, transparent), transparent 60%);opacity:0;transition:opacity var(--dur-long) var(--ease);mix-blend-mode:screen;position:absolute;inset:0}[data-spot]:hover:after{opacity:1}@media (prefers-reduced-motion:reduce){.js h2[data-reveal]>span{clip-path:none;transform:none}[data-spot]:after{display:none}}.prose{font-size:var(--fs-base);color:var(--text-2);line-height:1.7}.prose>:is(p,ul,ol,h1,h2,h3,h4,blockquote,hr,dl){max-width:var(--measure)}.prose>*+*{margin-top:1.05em}.prose h1,.prose h2,.prose h3,.prose h4{color:var(--text);scroll-margin-top:96px;position:relative}.prose h2{font-size:var(--fs-title);letter-spacing:-.03em;margin-top:2.6em}.prose h3{font-size:var(--fs-lg);letter-spacing:-.02em;margin-top:2em}.prose h4{font-size:var(--fs-base);letter-spacing:-.01em;margin-top:1.6em}.prose h2+*,.prose h3+*,.prose h4+*{margin-top:.7em}.prose .anchor{color:var(--text-3);opacity:0;transition:opacity var(--dur-fast) var(--ease);margin-left:.4em;font-weight:400;text-decoration:none}.prose :is(h2,h3,h4):hover .anchor,.prose .anchor:focus-visible{opacity:1}.prose strong{color:var(--text);font-weight:600}.prose a{color:var(--text);-webkit-text-decoration-color:var(--line-3);text-decoration-color:var(--line-3)}.prose a:hover{-webkit-text-decoration-color:var(--text);text-decoration-color:var(--text)}.prose :not(pre)>code{border-radius:var(--r-2xs);background:var(--ink-3);color:var(--text);box-shadow:inset 0 0 0 1px var(--line);overflow-wrap:anywhere;padding:.12em .4em;font-size:.86em}.prose ul,.prose ol{padding-left:1.25em}.prose li+li,.prose li>ul,.prose li>ol{margin-top:.4em}.prose li::marker{color:var(--text-3)}.prose blockquote{border-radius:var(--r-sm);background:var(--ink-1);box-shadow:inset 0 0 0 1px var(--line);color:var(--text-2);margin:1.4em 0;padding:14px 18px}.prose blockquote>*+*{margin-top:.6em}.prose hr{background:var(--line);border:0;height:1px;margin:2.4em 0}.prose pre{margin:1.3em 0}.prose .table-wrap{border-radius:var(--r-sm);box-shadow:inset 0 0 0 1px var(--line);max-width:100%;margin:1.4em 0;overflow-x:auto}.prose .table-wrap:focus-visible{outline-offset:2px}.prose table{border-collapse:collapse;width:100%;font-size:var(--fs-md);line-height:1.5}.prose th{text-align:left;color:var(--text);background:var(--ink-1);white-space:nowrap;padding:10px 14px;font-weight:600}.prose td{box-shadow:inset 0 1px 0 var(--line);vertical-align:top;padding:10px 14px}.codeblock{border-radius:var(--r-sm);background:var(--ink);box-shadow:inset 0 0 0 1px var(--line-2);position:relative;overflow:hidden}.codeblock pre{font-size:var(--fs-sm);color:var(--text);margin:0;padding:44px 20px 18px;line-height:1.65;overflow-x:auto}.codeblock .lang{font-size:var(--fs-3xs);color:var(--text-3);font-family:var(--mono);position:absolute;top:8px;right:92px}.codeblock .copy{appearance:none;cursor:pointer;border-radius:var(--r-pill);background:var(--ink-3);height:28px;color:var(--text-2);font:500 var(--fs-2xs) var(--font);box-shadow:inset 0 0 0 1px var(--line-2);border:0;padding:0 10px;position:absolute;top:6px;right:6px}.codeblock .copy:hover{color:var(--text)}.codeblock .copy[data-done]{color:var(--ok)}.todo{background:color-mix(in oklab, var(--away) 18%, transparent);color:var(--away);border-radius:var(--r-2xs);padding:0 4px;font-weight:600}._logo_1i3nm_1{font-weight:700;font-size:var(--fs-lg);letter-spacing:-.045em;align-items:center;gap:10px;line-height:1;display:inline-flex}._logo_1i3nm_1 svg{width:24px;height:24px;fill:var(--red)}._logo_1i3nm_1 b{color:var(--red);font-weight:700}._lg_1i3nm_4{font-size:var(--fs-xl);gap:12px}._lg_1i3nm_4 svg{width:32px;height:32px}
