@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2) format("woff2"),url(/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff) format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/jetbrains-mono-latin-600-normal-C8RAYTDA.woff2) format("woff2"),url(/assets/jetbrains-mono-latin-600-normal-BfsvjouI.woff) format("woff")}:root{color-scheme:light;--bg: #f5f5f7;--panel: #ffffff;--panel-2: #f2f2f5;--field: #ffffff;--hover: #ebebf0;--control: #ffffff;--scrim: #000000;--sidebar: #f7f7f9;--sidebar-top: #fcfcfd;--sidebar-sel: #e6e6eb;--bg-rgb: 245, 245, 247;--scrim-rgb: 0, 0, 0;--line: #e4e4e9;--line-2: #d1d1d8;--line-3: #b8b8c1;--head: #000000;--ink: #1d1d1f;--mut: #48484e;--mut-rgb: 72, 72, 78;--dim: #5f5f66;--faint: #c7c7cc;--acc: #0064d1;--acc-2: #004c9f;--acc-rgb: 0, 100, 209;--blue: #0060cf;--blue-2: #004aa3;--blue-rgb: 0, 96, 207;--inv: #0066d6;--inv-2: #0055b3;--on-inv: #ffffff;--on-acc: #ffffff;--glow-primary: 0 1px 2px 0 rgb(0 0 0 / .12);--ok: #1a7f37;--ok-rgb: 26, 127, 55;--err: #c4262e;--err-rgb: 196, 38, 46;--warn: #8a5a00;--warn-rgb: 138, 90, 0;--live: #137a3a;--live-rgb: 19, 122, 58;--edge: #86868e;--agent-1: #2f6fd6;--agent-2: #b4369a;--agent-3: #6c5ce0;--agent-4: #0f7f8c;--agent-5: #c9650a;--agent-6: #aa56d7;--agent-7: #7d8f00;--agent-8: #d35180;--shadow-card: 0 1px 2px 0 rgb(0 0 0 / .05), 0 1px 3px 0 rgb(0 0 0 / .03);--shadow-popover: 0 0 0 .5px rgb(0 0 0 / .1), 0 4px 12px -2px rgb(0 0 0 / .1), 0 16px 36px -12px rgb(0 0 0 / .22);--shadow-modal: 0 0 0 .5px rgb(0 0 0 / .1), 0 28px 72px -16px rgb(0 0 0 / .35);--shadow-control: 0 .5px 1px 0 rgb(0 0 0 / .08), 0 0 0 0 transparent;--font-sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI Variable", system-ui, sans-serif;--font-mono: "JetBrains Mono", "Nanum Gothic Coding", "D2Coding", "NanumGothicCoding", ui-monospace, SFMono-Regular, Menlo, Consolas, "Malgun Gothic", monospace;--radius-xs: .1875rem;--radius-sm: .25rem;--radius-md: .375rem;--radius-lg: .5rem;--radius-xl: .625rem;--radius-2xl: .75rem;--control-sm: 1.5rem;--control-md: 1.75rem;--control-lg: 2rem;--cta-h: 3.5rem;--ease-out: cubic-bezier(.2, 0, 0, 1);--dur-fast: .12s;--dur: .18s;--dur-slow: .26s;--hairline: 1px;--wrap: 1200px;--gutter: clamp(20px, 4vw, 40px);--bar-h: 64px;--sub-h: 44px;--section-gap: clamp(96px, 13vw, 184px);--night: #0b0e17;--night-rgb: 11, 14, 23;--night-2: #141826;--night-3: #1e2334;--night-line: #2c3347;--night-ink: #f4f6fb;--night-ink-rgb: 244, 246, 251;--night-mut: #aeb6cc;--night-acc: #9cc4ff;--cta-top: #1a6fdc;--cta-bottom: #0055bd;--shine: #ffffff;--shine-rgb: 255, 255, 255;--aurora-a: color-mix(in oklab, var(--agent-1) 26%, transparent);--aurora-b: color-mix(in oklab, var(--agent-3) 24%, transparent);--aurora-c: color-mix(in oklab, var(--agent-8) 15%, transparent);--aurora-d: color-mix(in oklab, var(--agent-4) 16%, transparent);--night-glow-a: color-mix(in oklab, var(--agent-1) 42%, transparent);--night-glow-b: color-mix(in oklab, var(--agent-3) 44%, transparent);--night-glow-c: color-mix(in oklab, var(--agent-8) 26%, transparent);--spot: color-mix(in oklab, var(--blue) 12%, transparent);--fade-down: linear-gradient(to bottom, #000 56%, transparent);--shadow-soft: 0 1px 2px rgb(15 23 42 / .04), 0 14px 32px -18px rgb(15 23 42 / .16);--shadow-lift: 0 2px 6px rgb(15 23 42 / .06), 0 22px 44px -18px rgb(15 23 42 / .26);--shadow-hero: 0 2px 4px rgb(15 23 42 / .05), 0 36px 90px -28px rgb(15 23 42 / .36);--shadow-cta: inset 0 1px 0 rgb(255 255 255 / .24), 0 1px 2px rgb(0 40 120 / .3), 0 14px 30px -12px rgb(0 86 200 / .6);--shadow-cta-hover: inset 0 1px 0 rgb(255 255 255 / .3), 0 1px 2px rgb(0 40 120 / .3), 0 20px 40px -12px rgb(0 86 200 / .66);--ease-soft: cubic-bezier(.16, 1, .3, 1);--radius-cta: .875rem;--radius-card: 1.25rem;--radius-panel: 2rem}:root[data-theme=dark]{color-scheme:dark;--bg: #090909;--panel: #0e0e10;--panel-2: #141417;--field: #0b0b0d;--hover: #1b1b1f;--control: #18181b;--sidebar: #0e0e10;--sidebar-top: #121215;--sidebar-sel: #1b1b1f;--bg-rgb: 9, 9, 9;--line: #1f1f23;--line-2: #2a2a2f;--line-3: #37373d;--head: #ffffff;--ink: #eef0f4;--mut: #9aa3ba;--mut-rgb: 154, 163, 186;--dim: #8a91a6;--faint: #3a3d45;--acc: #a8c8f0;--acc-2: #c3e4f7;--acc-rgb: 168, 200, 240;--blue: #4da3ff;--blue-2: #6cb6ff;--blue-rgb: 77, 163, 255;--inv: #f2f4f7;--inv-2: #d5dae3;--on-inv: #090909;--on-acc: #08111c;--glow-primary: 0 0 0 1px rgba(var(--blue-rgb), .7), 0 0 18px -4px rgba(var(--blue-rgb), .6);--ok: #5cb88a;--ok-rgb: 92, 184, 138;--err: #e5736f;--err-rgb: 229, 115, 111;--warn: #d4a64e;--warn-rgb: 212, 166, 78;--live: #45d68a;--live-rgb: 69, 214, 138;--edge: #62677a;--agent-1: #3987e5;--agent-2: #cf4fb2;--agent-3: #9085e9;--agent-4: #1f9fb0;--agent-5: #c06a04;--agent-6: #a757e2;--agent-7: #899907;--agent-8: #c3496d;--shadow-card: 0 0 0 0 transparent;--shadow-popover: 0 0 0 1px var(--line-2), 0 8px 20px -12px rgb(0 0 0 / .9);--shadow-modal: 0 0 0 1px var(--line-2), 0 20px 48px -20px rgb(0 0 0 / .95);--shadow-control: none;--night: #10131e;--night-rgb: 16, 19, 30;--night-2: #181c2a;--night-3: #222738;--night-line: #303750;--night-ink: #f4f6fb;--night-ink-rgb: 244, 246, 251;--night-mut: #aeb6cc;--night-acc: #9cc4ff;--cta-top: #ffffff;--cta-bottom: #dfe4ec;--shine: #ffffff;--shine-rgb: 255, 255, 255;--aurora-a: color-mix(in oklab, var(--agent-1) 30%, transparent);--aurora-b: color-mix(in oklab, var(--agent-3) 30%, transparent);--aurora-c: color-mix(in oklab, var(--agent-8) 18%, transparent);--aurora-d: color-mix(in oklab, var(--agent-4) 20%, transparent);--spot: color-mix(in oklab, var(--blue) 16%, transparent);--shadow-soft: 0 0 0 0 transparent;--shadow-lift: 0 20px 44px -22px rgb(0 0 0 / .9);--shadow-hero: 0 0 0 1px var(--line-2), 0 44px 110px -34px rgb(0 0 0 / .95);--shadow-cta: 0 0 0 1px rgba(var(--blue-rgb), .45), 0 14px 34px -12px rgba(var(--blue-rgb), .6);--shadow-cta-hover: 0 0 0 1px rgba(var(--blue-rgb), .7), 0 20px 44px -12px rgba(var(--blue-rgb), .7)}@media(min-resolution:2dppx){:root{--hairline: .5px}}*,*:before,*:after{box-sizing:border-box}html{background:var(--bg);scroll-behavior:smooth;--sub-eff: var(--sub-h);scroll-padding-top:calc(var(--bar-h) + var(--sub-eff) + 16px);-webkit-text-size-adjust:100%}body{margin:0;min-height:100vh;background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}::selection{background:rgba(var(--acc-rgb),.24)}h1,h2,h3,h4,p,ul,ol,dl,dd,figure{margin:0}ul,ol{padding:0;list-style:none}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}code,kbd,pre,samp{font-family:var(--font-mono);font-variant-ligatures:none}:where(a,button,summary,[tabindex]):focus-visible{outline:2px solid var(--blue);outline-offset:2px;border-radius:var(--radius-xs)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.page{position:relative;z-index:1}.wrap{width:min(var(--wrap),100% - var(--gutter) * 2);margin-inline:auto}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:var(--btn-h, var(--control-md));padding:0 var(--btn-px, 14px);border:var(--hairline) solid transparent;border-radius:var(--radius-md);font-size:var(--btn-fs, 13px);font-weight:600;line-height:1;white-space:nowrap;transition:background var(--dur-fast),border-color var(--dur-fast),color var(--dur-fast),box-shadow var(--dur-fast),transform .1s}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--inv);color:var(--on-inv)}.btn-primary:hover{background:var(--inv-2);box-shadow:var(--glow-primary)}.btn-secondary{background:var(--control);border-color:var(--line-2);color:var(--ink);box-shadow:var(--shadow-control)}.btn-secondary:hover{background:var(--hover);border-color:var(--line-3)}.btn-ghost{color:var(--mut)}.btn-ghost:hover{background:var(--hover);color:var(--ink)}.btn-sm{--btn-h: var(--control-sm);--btn-px: 10px;--btn-fs: 12px}.btn-md{--btn-h: 2.5rem;--btn-px: 18px;--btn-fs: 14px;border-radius:10px}.btn-lg{--btn-h: var(--cta-h);--btn-px: 28px;--btn-fs: 16px;gap:10px;border-radius:var(--radius-cta)}.btn-lg:hover{transform:translateY(-2px)}.btn-lg:active{transform:translateY(0)}.btn-primary.btn-lg{position:relative;overflow:hidden;background:linear-gradient(180deg,var(--cta-top),var(--cta-bottom));box-shadow:var(--shadow-cta)}.btn-primary.btn-lg:hover{background:linear-gradient(180deg,var(--cta-top),var(--cta-top));box-shadow:var(--shadow-cta-hover)}.btn-primary.btn-lg:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;transform:translate(-120%);transition:transform .8s var(--ease-soft);background:linear-gradient(105deg,transparent 36%,rgba(var(--shine-rgb),.32) 50%,transparent 64%)}.btn-primary.btn-lg:hover:after{transform:translate(120%)}.btn-secondary.btn-lg{background:var(--panel);box-shadow:var(--shadow-soft)}.btn svg{flex:none}.btn .arrow{transition:transform var(--dur) var(--ease-out)}.btn:hover .arrow{transform:translate(3px)}.btn[disabled]{opacity:.45;cursor:not-allowed}.btn[disabled]:hover,.btn[disabled]:active{transform:none;box-shadow:none}.btn-primary[disabled]:hover{background:var(--inv);box-shadow:none}.btn-primary.btn-lg[disabled],.btn-primary.btn-lg[disabled]:hover{background:linear-gradient(180deg,var(--cta-top),var(--cta-bottom));box-shadow:none}.btn-secondary[disabled]:hover{background:var(--control);border-color:var(--line-2)}.btn[disabled]:hover .arrow{transform:none}.btn[disabled]:after{display:none}.icon-btn{display:inline-grid;place-items:center;flex:none;width:var(--control-md);height:var(--control-md);border:var(--hairline) solid var(--line-2);border-radius:var(--radius-md);background:var(--control);color:var(--mut);box-shadow:var(--shadow-control);transition:background var(--dur-fast),color var(--dur-fast),border-color var(--dur-fast)}.icon-btn:hover{background:var(--hover);color:var(--head);border-color:var(--line-3)}.chip{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 8px;border:var(--hairline) solid var(--line-2);border-radius:999px;background:var(--panel-2);font-size:11px;line-height:1;color:var(--mut);white-space:nowrap}.chip-info{border-color:rgba(var(--acc-rgb),.35);color:var(--acc)}.chip-mono{font-family:var(--font-mono);font-size:11.5px}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.menu{position:absolute;z-index:30;top:calc(100% + 6px);left:0;min-width:240px;padding:6px;border-radius:var(--radius-lg);background:var(--panel);box-shadow:var(--shadow-popover);text-align:left;animation:fade-in var(--dur-fast) var(--ease-out)}.menu[hidden]{display:none}.menu.is-end{left:auto;right:0}.menu-item{display:flex;align-items:center;gap:8px;width:100%;min-height:28px;padding:2px 8px;border-radius:var(--radius-md);font-size:13px;color:var(--ink);text-align:left}.menu-item:hover,.menu-item:focus-visible{background:var(--hover)}.menu-item svg{color:var(--mut)}.menu-heading{margin:8px 8px 2px;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--dim)}.bar{position:fixed;inset:0 0 auto 0;z-index:20;height:var(--bar-h);border-bottom:var(--hairline) solid transparent;transition:background var(--dur-slow) ease,border-color var(--dur-slow) ease}.bar.is-stuck{background:rgba(var(--bg-rgb),.92);border-bottom-color:var(--line);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4)}.bar:after{content:"";position:absolute;left:0;bottom:-1px;height:1px;width:100%;background:linear-gradient(90deg,rgba(var(--blue-rgb),.2),var(--blue));transform:scaleX(var(--progress, 0));transform-origin:left center}.bar-in{display:flex;align-items:center;gap:24px;height:100%}.brand{display:inline-flex;align-items:center;gap:10px;color:var(--head)}.brand-mark{display:inline-flex;align-items:center;color:var(--head)}.brand-name{font-size:13px;font-weight:600;letter-spacing:.32em;color:var(--head)}.sitenav{display:flex;align-items:center;gap:2px;margin-left:16px}.site-links{display:flex;align-items:center;gap:2px}.site-link{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:var(--radius-md);font-size:14px;color:var(--mut);transition:color var(--dur-fast),background var(--dur-fast)}.site-link:hover{color:var(--head);background:var(--hover)}.site-link .stars{color:var(--dim);font-size:12px}.subnav{position:absolute;left:0;right:0;top:calc(100% + 8px);display:flex;justify-content:center;height:var(--sub-h);pointer-events:none;opacity:0;visibility:hidden;transform:translateY(-6px);transition:opacity var(--dur-slow) ease,visibility var(--dur-slow),transform var(--dur-slow) var(--ease-soft)}.bar.is-stuck .subnav{opacity:1;visibility:visible;transform:none}.subnav nav.wrap{display:inline-flex;align-items:center;gap:2px;width:auto;height:100%;margin:0;padding:4px;pointer-events:auto;border:var(--hairline) solid var(--line-2);border-radius:999px;background:rgba(var(--bg-rgb),.97);box-shadow:var(--shadow-popover)}.subnav a{padding:6px 12px;border-radius:999px;font-size:13px;color:var(--mut);transition:color var(--dur-fast),background var(--dur-fast)}.subnav a:hover{color:var(--head)}.subnav a[aria-current=true]{background:var(--panel);color:var(--head);font-weight:600;box-shadow:var(--shadow-control)}.nav-panel a[aria-current=true]{color:var(--head)}.nav-panel a[aria-current=true]:before{content:"❯";margin-right:6px;color:var(--blue)}.bar-end{display:flex;align-items:center;gap:8px;margin-left:auto}.bar-end .btn-sm{--btn-h: 2.25rem;--btn-px: 14px;--btn-fs: 14px;border-radius:10px}.bar-end .theme-toggle{width:var(--control-lg);height:var(--control-lg);border-color:transparent;background:none;box-shadow:none}.bar-end .theme-toggle:hover{background:var(--hover)}.nav-toggle{display:none;align-items:center;justify-content:center;width:var(--control-md);height:var(--control-md);border:var(--hairline) solid var(--line-2);border-radius:var(--radius-md);background:var(--control);font-size:18px;line-height:1;color:var(--ink)}.nav-toggle:hover{border-color:var(--line-3);color:var(--head)}.nav-panel{position:absolute;left:0;right:0;top:100%;padding:8px var(--gutter) 20px;border-bottom:var(--hairline) solid var(--line);background:var(--bg);max-height:calc(100vh - var(--bar-h));max-height:calc(100dvh - var(--bar-h));overflow-y:auto;overscroll-behavior:contain}.nav-panel[hidden]{display:none}.nav-panel nav{display:flex;flex-direction:column;max-width:var(--wrap);margin-inline:auto}.nav-panel h3{margin:14px 0 4px;font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}.nav-panel a,.nav-panel button{display:block;padding:8px 0;font-size:15px;text-align:left;color:var(--mut)}.nav-panel a:hover,.nav-panel button:hover{color:var(--head)}.nav-panel .menu-account{display:block;padding:8px 0 0;font-size:13px;color:var(--dim);overflow-wrap:anywhere}.nav-panel .menu-theme{padding-top:10px}.nav-panel .theme-toggle{display:inline-grid;padding:0}.social{display:flex;align-items:center;gap:2px}.social-link{display:inline-flex;align-items:center;gap:8px;color:var(--mut);transition:color var(--dur-fast),background var(--dur-fast)}.social-link:hover{color:var(--head)}.social-bar .social-link{justify-content:center;width:var(--control-lg);height:var(--control-lg);border-radius:var(--radius-md)}.social-bar .social-link:hover{background:var(--hover)}.social-menu{flex-wrap:wrap;gap:4px 20px;padding-top:10px}.nav-panel .social-link{display:inline-flex}.social-foot{flex-direction:column;align-items:flex-start;gap:8px;margin-top:8px}.theme-toggle svg>*{transform-box:view-box;transform-origin:10px 10px;transition:opacity var(--dur) var(--ease-out),transform var(--dur) var(--ease-out)}.theme-toggle .theme-moon{opacity:0;transform:rotate(-90deg)}:root[data-theme=dark] .theme-toggle .theme-sun{opacity:0;transform:rotate(90deg)}:root[data-theme=dark] .theme-toggle .theme-moon{opacity:1;transform:none}.account{position:relative;display:inline-flex}.account-btn{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--acc);color:var(--on-acc);font-size:12px;font-weight:600;box-shadow:0 0 0 var(--hairline) var(--line-2)}.account-menu{left:auto;right:0;top:calc(100% + 8px)}.account-who{display:flex;flex-direction:column;gap:2px;padding:6px 8px 8px;margin-bottom:4px;border-bottom:var(--hairline) solid var(--line)}.account-who b{font-size:13px;font-weight:600;color:var(--head)}.account-who>span:not(.chip){font-size:12px;color:var(--dim);overflow-wrap:anywhere}.account-who .chip{align-self:flex-start;margin-top:6px}.notice{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:var(--gutter);background:rgba(var(--scrim-rgb),.45)}.notice-card{width:min(420px,100%);padding:24px 26px;border-radius:var(--radius-2xl);background:var(--panel);box-shadow:var(--shadow-modal)}.notice-card h2{font-size:17px;font-weight:600;color:var(--head)}.notice-card p{margin-top:10px;font-size:14px;color:var(--mut)}.notice-card .notice-test{margin-top:8px;font-size:13px;color:var(--dim)}.notice-card .notice-error{margin-top:10px;font-size:13px;color:var(--err)}.notice-card .notice-who{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin-top:8px;font-size:13px;color:var(--dim);overflow-wrap:anywhere}.notice-who b{font-weight:600;color:var(--ink)}.notice-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:22px}.foot{position:relative;z-index:1;border-top:var(--hairline) solid var(--line);background:var(--bg)}.foot-in{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:28px 48px;padding:36px 0 28px;font-size:13px;color:var(--dim)}.foot-in .brand-name{font-size:12px}.foot-brand{display:flex;flex-direction:column;gap:14px}.foot-slogan{color:var(--mut)}.foot-cols{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(130px,auto);gap:24px 56px}.foot-col h3{margin-bottom:12px;font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}.foot-col li+li{margin-top:8px}.foot-col a{color:var(--mut)}.foot-col a:hover{color:var(--head)}.foot-col .is-held{color:var(--dim);cursor:not-allowed}.subnav .is-held{padding:6px 12px;font-size:13px;color:var(--dim);cursor:not-allowed}.nav-panel .is-held{display:block;padding:8px 0;font-size:15px;color:var(--dim);cursor:not-allowed}.foot-base{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px 24px;padding:14px 0 28px;border-top:var(--hairline) solid var(--line);font-size:13px;color:var(--dim)}@media(max-width:1080px){html{--sub-eff: 0px}.sitenav,.subnav,.site-links,.social-bar{display:none}.nav-toggle{display:inline-flex}}@media(max-width:560px){body{font-size:15px}.bar-in{gap:12px}.brand-name{display:none}.foot-in{flex-direction:column}.foot-cols{grid-auto-flow:row;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}}@media(max-width:360px){.bar-end .btn-sm{--btn-px: 8px}.bar-end{gap:6px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.btn,.btn .arrow,.btn-primary.btn-lg:after,.icon-btn,.subnav,.theme-toggle svg>*{transition:none}.menu{animation:none}}
