@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/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(/_astro/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(/_astro/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(/_astro/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(/_astro/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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-ext-wght-normal.X_5orZeX.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 Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-wght-normal.DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-symbols2-wght-normal.CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-vietnamese-wght-normal.DadHysG0.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 Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-ext-wght-normal.Bwz-egvJ.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 Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-wght-normal.XN7g48iV.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}:root{color-scheme:light dark;--bg:light-dark(#fff,#121214);--bg-2:light-dark(#f7f7f8,#18181b);--bg-3:light-dark(#efeff1,#222226);--line:light-dark(#e6e6e9,#29292e);--line-2:light-dark(#d4d4d9,#3a3a41);--text:light-dark(#16161a,#ececef);--text-2:light-dark(#3c3c44,#c6c6cc);--muted:light-dark(#686873,#9a9aa4);--faint:light-dark(#8a8a94,#6c6c76);--accent:light-dark(#2b59e0,#84a3ff);--accent-2:light-dark(#1f47bd,#a6bcff);--accent-bg:light-dark(#edf1fd,#84a3ff1f);--on-accent:light-dark(#fff,#0d1430);--good:light-dark(#11804c,#4cc98a);--good-bg:light-dark(#e8f5ee,#4cc98a1a);--bad:light-dark(#c2323a,#ff7a80);--bad-bg:light-dark(#fbecec,#ff7a801a);--lts:light-dark(#8a5a00,#f2c45e);--lts-bg:light-dark(#fbf1dc,#f2c45e1f);--code-key:light-dark(#2b59e0,#9fb6ff);--code-str:light-dark(#11804c,#7fd6a6);--scrim:light-dark(#16161a52,#0000008c);--shade:light-dark(#16161a38,#0009);--pop:0 1px 2px var(--shade), 0 24px 56px -16px var(--shade);--bronze-1:#e8a873;--bronze-2:#a8612e;--silver-1:#dfe3ea;--silver-2:#8b93a3;--gold-1:#ffd66b;--gold-2:#c98a00;--plat-1:#b9f0ff;--plat-2:#6a7cff;--font:"Geist Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--mono:"Geist Mono Variable", ui-monospace, SFMono-Regular, Menlo, monospace;--r:8px;--ease:cubic-bezier(.2, .7, .2, 1)}@supports not (color:light-dark(#000, #fff)){:root{--bg:#fff;--bg-2:#f7f7f8;--bg-3:#efeff1;--line:#e6e6e9;--line-2:#d4d4d9;--text:#16161a;--text-2:#3c3c44;--muted:#686873;--faint:#8a8a94;--accent:#2b59e0;--accent-2:#1f47bd;--accent-bg:#edf1fd;--on-accent:#fff;--good:#11804c;--good-bg:#e8f5ee;--bad:#c2323a;--bad-bg:#fbecec;--lts:#8a5a00;--lts-bg:#fbf1dc;--code-key:#2b59e0;--code-str:#11804c;--scrim:#16161a52;--shade:#16161a38}.theme-btn{display:none!important}}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:88px}body{background:var(--bg);min-height:100dvh;color:var(--text);font:400 16px/1.6 var(--font);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;flex-direction:column;margin:0;display:flex}main{flex:1 0 auto}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-2);text-underline-offset:3px;text-decoration:underline 1px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}h1,h2,h3{letter-spacing:-.01em;text-wrap:balance;margin:0;font-weight:600;line-height:1.2}h1{letter-spacing:-.02em;font-size:clamp(30px,4vw,40px)}h2{font-size:22px}h3{font-size:16px}p{text-wrap:pretty;margin:0}code,kbd,.mono{font-family:var(--mono);font-size:.875em}kbd{border:1px solid var(--line-2);background:var(--bg);height:20px;color:var(--muted);border-bottom-width:2px;border-radius:4px;align-items:center;padding:0 5px;font-size:11px;line-height:1;display:inline-flex}[hidden]{display:none!important}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip{z-index:20;border-radius:var(--r);background:var(--accent);color:var(--on-accent);padding:8px 12px;position:absolute;top:-48px;left:12px}.skip:focus{top:12px}.wrap{max-width:1152px;margin:0 auto;padding:0 16px}@media (width>=720px){.wrap{padding:0 32px}}.site-head{z-index:10;background:color-mix(in srgb, var(--bg) 92%, transparent);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line);position:sticky;top:0}.site-head .wrap{align-items:center;gap:24px;height:60px;display:flex}.brand{color:var(--text);white-space:nowrap;align-items:center;gap:8px;line-height:1;display:inline-flex}.brand:hover{color:var(--text);text-decoration:none}.brand .mark{flex-shrink:0}.wordmark{letter-spacing:-.035em;font-size:17px;font-weight:600}.search-trigger{border:1px solid var(--line-2);border-radius:var(--r);background:var(--bg-2);width:300px;height:36px;color:var(--muted);align-items:center;gap:10px;padding:0 8px 0 12px;font-size:14px;display:flex}.search-trigger:hover{border-color:var(--faint);color:var(--text-2);text-decoration:none}.search-trigger .search-label{white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.site-nav{gap:24px;margin-left:auto;font-size:14px;display:flex}.site-nav a{color:var(--text-2)}.site-nav a:hover,.site-nav a[aria-current]{color:var(--text)}.site-nav a[aria-current]{font-weight:500}.theme-btn{border-radius:var(--r);width:34px;height:34px;color:var(--muted);cursor:pointer;background:0 0;border:0;flex-shrink:0;place-items:center;margin-right:-8px;display:grid}.theme-btn:hover{background:var(--bg-3);color:var(--text)}.theme-btn .i-sun,:root[data-theme=dark] .theme-btn .i-moon{display:none}:root[data-theme=dark] .theme-btn .i-sun{display:block}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .theme-btn .i-moon{display:none}:root:not([data-theme=light]) .theme-btn .i-sun{display:block}}@media (width<=900px){.site-nav{display:none}.search-trigger{margin-left:auto}}@media (width<=640px){.site-head .wrap{gap:10px}.search-trigger{background:0 0;justify-content:center;width:36px;padding:0}.search-trigger .search-label,.search-trigger kbd{display:none}.theme-btn{margin-right:0}.btn-sm .dl-long{display:none}}@media (width<=359px){.theme-btn{display:none}}.btn{border:1px solid var(--line-2);border-radius:var(--r);background:var(--bg);height:40px;color:var(--text);font:500 14px/1 var(--font);white-space:nowrap;justify-content:center;align-items:center;gap:8px;padding:0 16px;transition:background-color .12s,border-color .12s;display:inline-flex}.btn:hover{background:var(--bg-2);border-color:var(--faint);color:var(--text);text-decoration:none}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.btn-primary:hover{background:var(--accent-2);border-color:var(--accent-2);color:var(--on-accent)}.btn-sm{height:34px;padding:0 12px;font-size:13.5px}.btn svg{flex-shrink:0}.ext-mark{color:var(--faint);font-size:.9em}.actions{flex-wrap:wrap;gap:10px;margin-top:28px;display:flex}.status{border-radius:4px;align-items:center;height:22px;padding:0 8px;font-size:12.5px;font-weight:500;display:inline-flex}.st-good{color:var(--good);background:var(--good-bg)}.st-bad{color:var(--bad);background:var(--bad-bg)}.st-lts{color:var(--lts);background:var(--lts-bg)}.st-quiet{color:var(--muted);background:var(--bg-3)}.support .status{background:0 0;height:auto;padding:0}.badge{flex-shrink:0;display:block}.lb-disc{fill:color-mix(in srgb, var(--brand) 12%, var(--bg))}.lb-mono{font-family:var(--mono);fill:var(--brand);letter-spacing:-.03em;font-weight:600}.hero{padding:72px 0 96px;position:relative;overflow:hidden}.hero:before{content:"";z-index:-1;background-image:radial-gradient(circle, var(--line-2) 1px, transparent 1.2px);background-size:22px 22px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(60% 70% at 78% 45%,#000 20%,#0000 75%);mask-image:radial-gradient(60% 70% at 78% 45%,#000 20%,#0000 75%)}.hero-grid{align-items:center;gap:48px;display:grid}@media (width>=1000px){.hero{padding:88px 0 112px}.hero-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.04fr);gap:64px}}.hero h1{letter-spacing:-.04em;max-width:12ch;font-size:clamp(40px,6.2vw,68px);font-weight:650;line-height:1.02}.hero-sub{max-width:46ch;color:var(--text-2);margin-top:24px;font-size:clamp(17px,1.6vw,19px);line-height:1.55}.hero .btn{height:44px;padding:0 18px;font-size:15px}.agents{max-width:48ch;color:var(--muted);margin-top:32px;font-size:13.5px;line-height:1.6}.hero-demo{min-width:0}.demo-hint{color:var(--muted);margin-bottom:12px;font-size:13.5px}.demo{border:1px solid var(--line-2);background:var(--bg-2);box-shadow:var(--pop);border-radius:14px;overflow:hidden}.demo-tabs{border-bottom:1px solid var(--line);scrollbar-width:none;gap:2px;padding:6px;display:flex;overflow-x:auto}.demo-tabs button{height:32px;color:var(--muted);font:500 13.5px var(--font);white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:7px;align-items:center;gap:8px;padding:0 12px;display:inline-flex}.demo-tabs button:hover{color:var(--text)}.demo-tabs [aria-selected=true]{background:var(--bg);color:var(--text);box-shadow:0 0 0 1px var(--line-2)}@media (width<=480px){.demo-tabs button{flex:1 1 0;justify-content:center;gap:6px;padding:0 6px}}@media (width<=360px){.demo-tabs .badge{display:none}}.demo-session{padding:18px 20px 20px;font-size:14.5px}.demo-meta{color:var(--faint);gap:14px;margin-bottom:10px;font-size:12.5px;display:flex}.demo-meta span:first-child{color:var(--muted);font-weight:500}.demo-prompt{color:var(--text)}.demo-prompt b{color:var(--accent);margin-right:8px;font-weight:600}.demo-file{border:1px solid var(--line);background:var(--bg);border-radius:8px;margin-top:14px;overflow:hidden}.demo-file p{border-bottom:1px solid var(--line);color:var(--muted);font:12px var(--mono);white-space:nowrap;text-overflow:ellipsis;padding:6px 12px;overflow:hidden}.demo-file pre{color:var(--text-2);font:13px/1.7 var(--mono);margin:0;padding:12px 14px;overflow-x:auto}.demo-file code{font-size:inherit}.demo .k{color:var(--code-key)}.demo .s{color:var(--code-str)}.demo-lesson{border-top:1px solid var(--line-2);background:var(--bg);padding:20px;position:relative}.demo-lesson:before,.demo-lesson:after{content:"";border-radius:50%;width:24px;height:24px;position:absolute;top:-12px;left:20px}.demo-lesson:before{border:1px solid var(--line-2);background:var(--bg)}.demo-lesson:after{background:var(--accent);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.4' stroke-linejoin='round'%3E%3Cpath d='M9 5h6v4h4v6h-4v4H9v-4H5V9h4z'/%3E%3C/svg%3E") 50%/13px no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.4' stroke-linejoin='round'%3E%3Cpath d='M9 5h6v4h4v6h-4v4H9v-4H5V9h4z'/%3E%3C/svg%3E") 50%/13px no-repeat}.demo-topic{color:var(--text);align-items:center;gap:10px;margin-top:4px;font-size:13.5px;font-weight:600;line-height:1.3;display:inline-flex}.demo-topic:hover{color:var(--text)}.demo-sec{color:var(--muted);font-weight:400;display:block}.demo-topic:hover .demo-sec{color:var(--accent)}.demo-q{letter-spacing:-.01em;margin-top:14px;font-size:17px;font-weight:600;line-height:1.4}.demo-q code,.demo-why code{background:var(--bg-3);border-radius:4px;padding:1px 5px}.demo-opts{gap:6px;margin-top:14px;display:grid}.demo-opt{border:1px solid var(--line);background:var(--bg);width:100%;color:var(--text-2);font:400 14.5px/1.4 var(--font);text-align:left;cursor:pointer;transition:border-color .15s, background-color .15s, transform .15s var(--ease);border-radius:8px;align-items:center;gap:10px;padding:9px 12px;display:flex}.demo-opt:hover{border-color:var(--line-2);background:var(--bg-2);color:var(--text)}.demo-opt:active{transform:scale(.99)}.demo-dot{border:1.5px solid var(--line-2);border-radius:50%;flex-shrink:0;width:14px;height:14px;transition:border-color .15s,background .15s}.demo-opt[aria-pressed=true] .demo-dot{border-color:var(--accent);background:radial-gradient(circle, var(--accent) 0 3px, transparent 3.5px)}[data-answered] .demo-opt[data-right],html:not(.js) .demo-opt[data-right]{border-color:color-mix(in srgb, var(--good) 45%, transparent);background:var(--good-bg);color:var(--text)}[data-answered] .demo-opt[data-right] .demo-dot,html:not(.js) .demo-opt[data-right] .demo-dot{border-color:var(--good);background:radial-gradient(circle, var(--good) 0 3px, transparent 3.5px)}.demo-opt.is-wrong{border-color:color-mix(in srgb, var(--bad) 45%, transparent);background:var(--bad-bg)}.demo-opt.is-wrong .demo-dot{border-color:var(--bad);background:radial-gradient(circle, var(--bad) 0 3px, transparent 3.5px)}.demo-why{color:var(--muted);grid-template-rows:1fr;margin-top:14px;font-size:14px;display:grid}.js .demo-panel:not([data-answered]) .demo-why{display:none}.demo-verdict{color:var(--text);font-weight:600}[data-answered=right] .demo-verdict{color:var(--good)}.demo-verdict:empty{display:none}@media (width<=560px){.demo-session,.demo-lesson{padding-left:16px;padding-right:16px}.demo-lesson:before,.demo-lesson:after{left:16px}.demo-file pre{white-space:pre-wrap;overflow-wrap:anywhere}}@media (prefers-reduced-motion:no-preference){.js #demo-0 .demo-prompt,.js #demo-0 .demo-file{animation:rise .5s var(--ease) both}.js #demo-0 .demo-prompt{animation-delay:.15s}.js #demo-0 .demo-file{animation-delay:.45s}.js #demo-0 .demo-lesson{animation:rise .6s var(--ease) .9s both}.js .demo:not(.is-seen) #demo-0 :is(.demo-prompt,.demo-file,.demo-lesson){animation-play-state:paused}.demo-panel:not(#demo-0){animation:.25s both fade}[data-answered] .demo-why{animation:rise .3s var(--ease) both}}@keyframes rise{0%{opacity:0;transform:translateY(8px)}}@keyframes fade{0%{opacity:0}}.how{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--bg-2);padding:96px 0}.how .band-head{margin-bottom:48px}.how-steps{counter-reset:step;gap:32px;margin:0;padding:0;list-style:none;display:grid}@media (width>=860px){.how-steps{grid-template-columns:repeat(3,minmax(0,1fr));gap:40px}}.how-steps li{counter-increment:step;padding-top:44px;position:relative}.how-steps li:before{content:counter(step);border:1px solid var(--line-2);background:var(--bg);width:28px;height:28px;color:var(--text);text-align:center;border-radius:50%;font-size:13px;font-weight:600;line-height:26px;position:absolute;top:0;left:0}.how-steps li:not(:last-child):after{content:"";background:var(--line-2);height:1px;position:absolute;top:14px;left:40px;right:-28px}@media (width<=859px){.how-steps li:not(:last-child):after{display:none}}.how-steps h3{font-size:17px}.how-steps p{color:var(--muted);max-width:44ch;margin-top:8px}.ladder{border:1px solid var(--line-2);background:var(--bg);border-radius:14px;gap:2px;margin:56px 0 0;padding:6px;display:grid}@media (width>=860px){.ladder{grid-template-columns:repeat(4,minmax(0,1fr))}}.ladder figcaption{color:var(--muted);grid-column:1/-1;padding:8px 14px 4px;font-size:13px}.rung{border-radius:10px;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:8px 12px;padding:14px;display:grid}.rung-medal{background:linear-gradient(160deg, var(--t1), var(--t2));border-radius:50%;place-items:center;width:40px;height:40px;display:grid;box-shadow:inset 0 0 0 1.5px #ffffff73}.rung-medal .badge{background:var(--bg);outline:3px solid var(--bg);border-radius:50%}.tier-platinum{--t1:var(--plat-1);--t2:var(--plat-2)}.tier-gold{--t1:var(--gold-1);--t2:var(--gold-2)}.tier-silver{--t1:var(--silver-1);--t2:var(--silver-2)}.tier-bronze{--t1:var(--bronze-1);--t2:var(--bronze-2)}.rung-name{line-height:1.3;display:grid}.rung-name b{font-size:15px;font-weight:600}.rung-name small{color:var(--muted);font-size:13px}.rung-bar{background:var(--bg-3);border-radius:2px;grid-column:1/-1;height:4px;overflow:hidden}.rung-bar span{border-radius:inherit;background:linear-gradient(90deg, var(--t1), var(--t2));height:100%;display:block}.rung-count{color:var(--faint);font-variant-numeric:tabular-nums;grid-column:1/-1;font-size:12.5px}.band{padding-top:96px}.band-head{max-width:680px;margin-bottom:32px}.band-head h2{letter-spacing:-.025em;font-size:clamp(26px,3vw,34px)}.band-head p{color:var(--muted);margin-top:12px;font-size:17px;line-height:1.6}.catalog-search{max-width:720px;margin-bottom:40px}.field{border:1px solid var(--line-2);background:var(--bg);height:56px;color:var(--muted);box-shadow:0 1px 2px var(--shade);cursor:text;border-radius:12px;align-items:center;gap:12px;padding:0 14px 0 18px;display:flex}.field:hover{border-color:var(--faint)}.field:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg)}.field input{min-width:0;height:100%;color:var(--text);font:400 17px var(--font);background:0 0;border:0;outline:0;flex:1}.field input::placeholder{color:var(--faint)}.ref-table td{vertical-align:middle;padding-top:8px;padding-bottom:8px}.ref-table tbody tr:hover{background:var(--bg-2)}.ref-table td:first-child,.ref-table th:first-child{padding-left:8px}.ref-name{color:var(--text);align-items:center;gap:10px;font-weight:500;display:flex}@media (width<=640px){.ref-table .hide-sm{display:none}}.ref-table .num,.ref-table th:last-child{text-align:right;padding-right:0}.closer{border:1px solid var(--line-2);background:radial-gradient(120% 140% at 100% 0%, var(--accent-bg), transparent 60%), var(--bg-2);border-radius:16px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:24px;margin-top:96px;padding:40px;display:flex}@media (width<=560px){.closer{padding:28px 20px}}@media (width<=640px){.hero{padding:40px 0 56px}.hero-grid{gap:32px}.how{padding:56px 0}.how .band-head{margin-bottom:32px}.ladder{margin-top:40px}.band{padding-top:64px}.closer{margin-top:64px}}.closer h2{letter-spacing:-.02em;font-size:clamp(22px,2.6vw,28px)}.closer p{color:var(--muted);margin-top:6px}.closer .btn{height:44px;padding:0 18px;font-size:15px}.table-scroll{overflow-x:auto}table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:14.5px}th{border-bottom:1px solid var(--line-2);color:var(--muted);text-align:left;white-space:nowrap;padding:0 16px 10px 0;font-size:13px;font-weight:500}td{border-bottom:1px solid var(--line);color:var(--text-2);white-space:nowrap;padding:10px 16px 10px 0}td.mono{color:var(--text)}td.mono .status{font-family:var(--font);margin-left:4px}@media (width<=480px){.hide-xs{display:none}}.crumbs{color:var(--faint);flex-wrap:wrap;gap:4px 8px;margin:28px 0 0;padding:0;font-size:14px;list-style:none;display:flex}.crumbs li+li:before{content:"/";margin-right:8px}.crumbs a{color:var(--muted)}.crumbs a:hover{color:var(--text)}@media (width<=640px){.crumbs li:not(:last-child){display:none}.crumbs li:last-child:before{content:"←";margin-right:6px}}.page-head{padding-top:24px}.page-head.page-top{padding-top:73px}.page-head p{max-width:66ch;color:var(--text-2);margin-top:12px;font-size:17px}.block{margin-top:48px}.block>h2{margin-bottom:16px}.section-head{justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:16px;display:flex}.section-head h2 a{color:var(--text)}.section-head .count{color:var(--faint);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:14px}a.count:hover{color:var(--accent)}.tech-head{border-bottom:1px solid var(--line);padding:28px 0 40px}.tech-head-bare{border-bottom:0;padding-bottom:8px}.tech-title{align-items:center;gap:16px;display:flex}@media (width<=560px){.tech-title .badge{width:52px;height:52px}}.tech-head h1{letter-spacing:-.03em;overflow-wrap:anywhere;font-size:clamp(30px,4.4vw,44px);line-height:1.05}.tech-head h1.long{font-size:clamp(24px,3vw,32px);line-height:1.15}.lede{max-width:68ch;color:var(--text-2);margin-top:16px;font-size:18px;line-height:1.55}.facts{flex-wrap:wrap;gap:16px 0;margin:28px 0 0;display:flex}.facts div+div{border-left:1px solid var(--line);margin-left:28px;padding-left:28px}@media (width<=560px){.facts{gap:16px 28px}.facts div+div{border-left:0;margin-left:0;padding-left:0}}.facts div{gap:2px;display:grid}.facts dt{color:var(--faint);font-size:13px}.facts dd{flex-wrap:wrap;align-items:center;gap:4px 10px;margin:0;font-size:16px;font-weight:500;display:flex}.facts dd .mono{font-size:15px}.facts dd a{color:var(--text)}.facts dd a:hover{color:var(--accent)}.tech-head .actions{margin-top:24px}.install{border:1px solid var(--line);border-radius:var(--r);background:var(--bg-2);align-items:center;gap:12px;max-width:560px;margin-top:14px;padding:4px 4px 4px 14px;display:flex}.install code{white-space:nowrap;min-width:0;color:var(--text);flex:1;font-size:13.5px;overflow-x:auto}.install code:before{content:"$ ";color:var(--faint)}.copy{border:1px solid var(--line-2);background:var(--bg);height:30px;color:var(--text-2);font:500 13px var(--font);cursor:pointer;border-radius:6px;flex-shrink:0;align-items:center;gap:6px;padding:0 10px;display:inline-flex}.copy:hover{border-color:var(--faint);color:var(--text)}.copy .i-done,.copy.is-done .i-copy{display:none}.copy.is-done .i-done{display:block}.copy.is-done{border-color:color-mix(in srgb, var(--good) 45%, transparent);color:var(--good)}.filter{border:1px solid var(--line-2);border-radius:var(--r);background:var(--bg);height:40px;color:var(--faint);align-items:center;gap:10px;margin-bottom:12px;padding:0 12px;display:flex}.filter[hidden]{display:none}.filter:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg)}.filter input{min-width:0;height:100%;color:var(--text);font:400 15px var(--font);background:0 0;border:0;outline:0;flex:1}.filter input::placeholder{color:var(--faint)}.filter-count{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:13px}.filter-empty{color:var(--muted);padding:16px 0}.tl-head span{color:var(--faint);margin-left:6px;font-weight:400}td.tl{width:34%;min-width:160px;padding-right:0}.tl-track{height:8px;display:block;position:relative}.tl-bar{opacity:.85;background:currentColor;border-radius:4px;height:8px;padding:0;position:absolute;top:0}.tl-bar.st-bad,.tl-bar.st-quiet{opacity:.45}.tl-open{background:linear-gradient(90deg,currentColor 70%,#0000);border-radius:4px 0 0 4px}.tl-now{background:var(--text);opacity:.5;width:1px;position:absolute;top:-6px;bottom:-6px}@media (width<=720px){.tl-head,td.tl{display:none}}.layout{gap:48px;margin-top:40px;display:grid}@media (width>=960px){.layout{grid-template-columns:minmax(0,1fr) 260px;gap:64px}.side{align-self:start;position:sticky;top:92px}}.main-col{min-width:0}@media (width<=959px){.layout{gap:56px}.layout>.main-col{display:contents}.layout .doc-section+.doc-section{margin-top:0}.layout .related-section{order:1}}.doc-section+.doc-section{margin-top:56px}.doc-section h2{font-size:20px}.outline{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.outline li{border-bottom:1px solid var(--line);grid-template-columns:36px minmax(0,1fr);gap:2px 0;padding:14px 0;display:grid}.outline li:target{background:var(--accent-bg);border-radius:6px;margin:0 -12px;padding-left:12px;padding-right:12px}.outline li:before{content:attr(data-n);color:var(--faint);font-variant-numeric:tabular-nums;font-size:14px;line-height:24px}.outline a{color:var(--text);overflow-wrap:anywhere;font-weight:500}.outline a:hover{color:var(--accent)}.outline p{max-width:72ch;color:var(--muted);grid-column:2;font-size:15px}.ext:after{content:"↗";color:var(--faint);opacity:0;margin-left:5px;font-size:.85em;font-weight:400;transition:opacity .15s}.ext:hover:after,.ext:focus-visible:after{opacity:1}.empty{color:var(--muted)}.source{color:var(--faint);margin-top:14px;font-size:13.5px}.source a{color:var(--muted)}.app-note{border:1px solid var(--line);background:var(--bg-2);border-radius:10px;padding:18px}.app-note h2{font-size:15px;line-height:1.35}.app-note p{color:var(--muted);margin:8px 0 14px;font-size:14px}.tech-list{border-top:1px solid var(--line);grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr));column-gap:32px;margin:0;padding:0;list-style:none;display:grid}.tech-list li{border-bottom:1px solid var(--line);min-width:0}@media (width<=640px){.tech-list-names{grid-template-columns:1fr 1fr;column-gap:16px}.tech-list-names .tech-item small{display:none}}.tech-list-plain .badge{display:none}.tech-item{color:var(--text);align-items:center;gap:12px;padding:11px 0;display:flex}.tech-item:hover{color:var(--text);text-decoration:none}.tech-item:hover b{color:var(--accent)}.tech-item .t{min-width:0;line-height:1.4;display:grid}.tech-item b{overflow-wrap:anywhere;font-size:15px;font-weight:500}.tech-item small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;overflow:hidden}@media (width<=640px){.tech-item small{-webkit-line-clamp:2;white-space:normal;-webkit-box-orient:vertical;display:-webkit-box}}.cat-list{border-top:1px solid var(--line);grid-template-columns:repeat(auto-fill,minmax(min(260px,100%),1fr));column-gap:32px;margin:0;padding:0;list-style:none;display:grid}.cat-list li{border-bottom:1px solid var(--line)}.cat-item{color:var(--text-2);justify-content:space-between;gap:12px;padding:10px 0;display:flex}.cat-item:hover{color:var(--accent);text-decoration:none}.cat-item span{color:var(--faint);font-variant-numeric:tabular-nums;font-size:14px}.pager{flex-wrap:wrap;align-items:center;gap:6px;margin-top:32px;font-size:14px;display:flex}.pager a,.pager span{border:1px solid var(--line);border-radius:var(--r);min-width:36px;height:36px;color:var(--text-2);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;padding:0 12px;display:inline-flex}.pager a:hover{border-color:var(--line-2);background:var(--bg-2);color:var(--text);text-decoration:none}.pager .cur{border-color:var(--text);color:var(--text);font-weight:600}.pager .gap{min-width:0;color:var(--faint);border:0;padding:0 2px}.pager .of{display:none}@media (width<=560px){.pager{grid-template-columns:1fr auto 1fr;display:grid}.pager .num,.pager .gap,.pager .cur{display:none}.pager [rel=prev]{grid-area:1/1;justify-self:start}.pager .of{color:var(--muted);border:0;grid-area:1/2;display:inline-flex}.pager [rel=next]{grid-area:1/3;justify-self:end}}.group-list{border-top:1px solid var(--line);grid-template-columns:repeat(auto-fill,minmax(min(360px,100%),1fr));column-gap:40px;margin:40px 0 0;padding:0;list-style:none;display:grid}.group-list li{border-bottom:1px solid var(--line);min-width:0}.group-row{color:var(--text);align-items:baseline;gap:16px;padding:16px 0;display:flex}.group-row:hover{text-decoration:none}.group-row:hover b{color:var(--accent)}.gr-main{flex:1;gap:3px;min-width:0;display:grid}.gr-main b{font-size:16px;font-weight:600}.gr-cats{color:var(--muted);font-size:13.5px}.gr-count{color:var(--faint);font-variant-numeric:tabular-nums;font-size:14px}@media (width<=640px){.group-list{grid-template-columns:1fr;margin-top:28px}}@media (hover:none){.field kbd,.kbd-tip{display:none}}.lost{max-width:720px;padding-top:96px}.lost-code{color:var(--accent);font:600 15px var(--mono)}.lost h1{letter-spacing:-.03em;margin-top:8px;font-size:clamp(32px,5vw,48px)}.lost>p:not(.lost-code):not(.lost-home){max-width:54ch;color:var(--text-2);margin-top:14px;font-size:17px}.lost .field{margin-top:32px}.lost-links{flex-wrap:wrap;gap:8px;margin:16px 0 0;padding:0;list-style:none;display:flex}.lost-links a{border:1px solid var(--line);height:34px;color:var(--text-2);border-radius:999px;align-items:center;gap:8px;padding:0 12px 0 8px;font-size:14px;display:inline-flex}.lost-links a:hover{border-color:var(--line-2);color:var(--text);text-decoration:none}.lost-home{gap:20px;margin-top:32px;font-size:15px;display:flex}.site-foot{border-top:1px solid var(--line);background:var(--bg-2);color:var(--muted);margin-top:120px;padding:56px 0 40px;font-size:14px}.foot-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:40px;display:grid}@media (width>=900px){.foot-grid{grid-template-columns:2fr 1fr 1fr;gap:48px}}.foot-about{grid-column:1/-1}@media (width>=900px){.foot-about{grid-column:auto}}.foot-about p{max-width:34ch;margin-top:12px}.foot-about .foot-built{color:var(--faint);font-size:13px}.foot-col h2{color:var(--text);letter-spacing:0;font-size:13px;font-weight:600}.foot-col ul{gap:8px;margin:14px 0 0;padding:0;list-style:none;display:grid}.site-foot a:not(.brand){color:var(--muted)}.site-foot a:not(.brand):hover{color:var(--text)}.foot-fine{border-top:1px solid var(--line);color:var(--faint);margin-top:48px;padding-top:24px;font-size:13px}.foot-fine p{max-width:90ch}@media (width<=640px){.site-foot{margin-top:72px;padding-top:40px}}.search{border:1px solid var(--line-2);background:var(--bg);width:min(640px,100vw - 24px);max-width:none;max-height:min(580px,100dvh - 120px);color:var(--text);box-shadow:var(--pop);border-radius:14px;margin:12vh auto auto;padding:0;overflow:hidden}.search[open]{flex-direction:column;display:flex}.search::backdrop{background:var(--scrim);-webkit-backdrop-filter:blur(2px)}@media (prefers-reduced-motion:no-preference){.search[open]{animation:pop-in .18s var(--ease)}.search[open]::backdrop{animation:.18s fade}}@keyframes pop-in{0%{opacity:0;transform:translateY(-6px)scale(.985)}}.search-box{border-bottom:1px solid var(--line);height:58px;color:var(--muted);flex-shrink:0;align-items:center;gap:12px;padding:0 12px 0 18px;display:flex}.search-box input{min-width:0;height:100%;color:var(--text);font:400 17px var(--font);background:0 0;border:0;outline:0;flex:1}.search-box input::placeholder{color:var(--faint)}.search-close{color:var(--accent);font:500 15px var(--font);cursor:pointer;background:0 0;border:0;padding:4px}.search-cancel{display:none}@media (width<=640px){.search{border:0;border-radius:0;width:100vw;height:100dvh;max-height:none;margin:0}.search-box{padding-left:16px}.search-box input{font-size:16px}.search-close kbd{display:none}.search-cancel{display:inline}}.search-results{overscroll-behavior:contain;flex:1;padding:6px 8px 8px;overflow-y:auto}.search-group{color:var(--faint);padding:12px 10px 6px;font-size:12.5px;font-weight:500}.search-hit{color:var(--text);border-radius:8px;align-items:center;gap:12px;padding:9px 10px;display:flex}.search-hit:hover{color:var(--text);text-decoration:none}.search-hit[aria-selected=true]{background:var(--accent-bg)}.search-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:15px;overflow:hidden}.search-name mark{color:inherit;background:0 0;font-weight:600}.search-sub{text-overflow:ellipsis;white-space:nowrap;max-width:45%;color:var(--muted);flex-shrink:0;font-size:13px;overflow:hidden}@media (width<=480px){.search-hit{gap:1px;display:grid}.search-sub{max-width:none}}.search-empty{color:var(--muted);padding:24px 10px;font-size:15px}.search-foot{border-top:1px solid var(--line);background:var(--bg-2);color:var(--muted);flex-shrink:0;align-items:center;gap:16px;padding:10px 16px;font-size:12.5px;display:flex}.search-foot kbd{margin-right:4px}.search-status{color:var(--faint);text-align:right;margin-left:auto}@media (width<=560px){.search-foot>span:not(.search-status){display:none}}@media (prefers-reduced-motion:no-preference){@view-transition{navigation:auto}::view-transition-old(root),::view-transition-new(root){animation-duration:.18s}.site-head{view-transition-name:site-head}}
