@import "https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&display=swap";@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-duration:initial;--tw-ease:initial;--tw-content:""}}}@layer theme{:root,:host{--font-sans:var(--primitive-font-sans);--font-mono:var(--primitive-font-mono);--spacing:.25rem;--breakpoint-sm:760px;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--font-weight-medium:500;--font-weight-semibold:600;--tracking-normal:0em;--ease-in:cubic-bezier(.4, 0, 1, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--color-canvas:var(--semantic-bg);--text-display:var(--primitive-type-display);--radius-panel:var(--component-panel-radius);--animate-boot-blink:boot-blink 1s steps(2, start) infinite}}@layer base{*,:before,:after{box-sizing:border-box;border-style:solid;border-width:0}html{scroll-behavior:smooth}body{background:var(--semantic-bg);min-width:320px;color:var(--semantic-text);font-family:var(--primitive-font-mono);font-synthesis:none;text-rendering:optimizelegibility;margin:0;font-weight:500}button,a{font:inherit;color:inherit}button{cursor:pointer}button:focus-visible,a:focus-visible{outline:var(--component-focus-ring);outline-offset:4px}#app{min-height:100vh}@supports (min-height:100dvh){#app{min-height:100dvh}}}@layer components{.post-body{color:var(--semantic-text);font-size:var(--primitive-type-body);overflow-wrap:anywhere;word-break:break-word;line-height:1.9}.post-body>:first-child{margin-top:0}.post-body>:last-child{margin-bottom:0}.post-body p,.post-body ul,.post-body ol,.post-body blockquote,.post-body pre,.post-body table{margin:0 0 20px}.post-body h2,.post-body h3,.post-body h4,.post-body h5,.post-body h6{color:var(--semantic-text);margin:44px 0 16px;scroll-margin-top:104px;font-weight:500;line-height:1.4}@media (width<=760px){.post-body h2,.post-body h3,.post-body h4,.post-body h5,.post-body h6{scroll-margin-top:84px}}.post-body h2{border-top:1px dotted var(--semantic-border);font-size:var(--primitive-type-h3);padding-top:16px}.post-body h2:before{content:"// ";color:var(--semantic-primary)}.post-body h3{font-size:var(--primitive-type-title)}.post-body h4,.post-body h5,.post-body h6{font-size:var(--primitive-type-body);color:var(--semantic-text-muted);letter-spacing:.08em}.post-body a{color:var(--semantic-primary);text-underline-offset:3px;text-decoration:underline}.post-body a:hover{color:var(--semantic-primary-hover)}.post-body strong{font-weight:600}.post-body code{background:var(--semantic-surface-raised);border:1px solid var(--semantic-border);padding:1px 6px;font-family:inherit;font-size:.9em}.post-body pre{background:var(--semantic-surface);border:var(--component-border);font-size:var(--primitive-type-code);padding:18px 20px;line-height:1.7;overflow-x:auto}.post-body pre code{font-size:inherit;background:0 0;border:0;padding:0}.post-body blockquote{border-left:2px solid var(--semantic-primary);background:var(--semantic-primary-bg);color:var(--semantic-text-muted);padding:14px 20px}.post-body blockquote>:last-child{margin-bottom:0}.post-body .custom-block{--custom-block-color:var(--semantic-primary);border:var(--component-border);border-left:2px solid var(--custom-block-color);background:var(--semantic-surface);background:var(--custom-block-color);margin:0 0 20px;padding:14px 18px}@supports (color:color-mix(in lab, red, red)){.post-body .custom-block{background:color-mix(in srgb, var(--custom-block-color) 7%, var(--semantic-surface))}}.post-body .custom-block>:last-child{margin-bottom:0}.post-body .custom-block-title{color:var(--custom-block-color);font-size:var(--primitive-type-caption);letter-spacing:.08em;margin:0 0 8px;font-weight:500;line-height:1.6}.post-body .custom-block-title:before{content:"> "}.post-body .custom-block.tip{--custom-block-color:var(--semantic-success)}.post-body .custom-block.info{--custom-block-color:var(--semantic-info)}.post-body .custom-block.warning{--custom-block-color:var(--semantic-warning)}.post-body .custom-block.danger{--custom-block-color:var(--semantic-danger)}.post-body .table-of-contents{border:var(--component-border);background:var(--semantic-surface);margin:0 0 28px;padding:14px 18px}.post-body .table-of-contents:before{content:"// CONTENTS";color:var(--semantic-text-muted);font-size:var(--primitive-type-caption);letter-spacing:.08em;margin-bottom:8px;font-weight:500;display:block}.post-body .table-of-contents ul{margin:0;padding-left:0;list-style:none}.post-body .table-of-contents ul ul{margin-top:6px;padding-left:1.4em}.post-body .table-of-contents li{margin:0}.post-body .table-of-contents li+li{margin-top:6px}.post-body .table-of-contents a{color:var(--semantic-text);padding:2px 0;text-decoration:none;display:inline-block}.post-body .table-of-contents a:hover{color:var(--semantic-primary);text-underline-offset:3px;text-decoration:underline}.post-body ul,.post-body ol{padding-left:1.6em}.post-body li+li{margin-top:6px}.post-body li::marker{color:var(--semantic-primary)}.post-body hr{border:0;border-top:1px dotted var(--semantic-border);margin:36px 0}.post-body img{border:var(--component-border);cursor:zoom-in;max-width:100%;height:auto;display:block}.post-body img:focus-visible{outline:var(--component-focus-ring);outline-offset:4px}.post-body table{border-collapse:collapse;width:100%;font-size:var(--primitive-type-label);line-height:1.6;display:block;overflow-x:auto}.post-body th,.post-body td{border:var(--component-border);text-align:left;vertical-align:top;padding:8px 12px}.post-body th{color:var(--semantic-text-muted);letter-spacing:.08em;font-weight:500}.reveal{opacity:0;transition:opacity var(--primitive-duration-slower) ease, transform var(--primitive-duration-slower) cubic-bezier(.22, 1, .36, 1);transition-delay:calc(min(var(--reveal-index,0), 8) * 70ms);will-change:opacity, transform;transform:translateY(14px)}.reveal.is-revealed{opacity:1;will-change:auto;transform:none}.reveal.reveal-fade{transform:none}.menu-drop-enter-active,.menu-drop-leave-active{transition:opacity var(--primitive-duration-normal) ease, transform var(--primitive-duration-normal) ease}.menu-drop-enter-from,.menu-drop-leave-to{opacity:0;transform:translateY(-8px)}.blog-shift-leave-active{transition:opacity var(--component-blog-leave-duration) ease-in, transform var(--component-blog-leave-duration) ease-in}.blog-shift-leave-to{opacity:0;transform:translateY(calc(var(--component-blog-leave-shift) * -1))}.blog-shift-enter-active{transition:opacity calc(var(--component-blog-enter-duration) * .8) ease-out, transform var(--component-blog-enter-duration) cubic-bezier(.16, 1, .3, 1)}.blog-shift-enter-from{opacity:0;transform:translateY(var(--component-blog-enter-shift))}.blog-shift-leave-active,.blog-shift-enter-active{will-change:opacity, transform}.page-shift-leave-active{transition:opacity var(--component-page-leave-duration) linear}.page-shift-enter-active{transition:opacity var(--component-page-enter-duration) linear}.page-shift-leave-active>main,.page-shift-enter-active>main{will-change:transform, opacity}.page-shift-leave-active>main{transition:transform var(--component-page-leave-duration) cubic-bezier(.4, 0, .8, .2), opacity var(--component-page-leave-duration) ease-in}.page-shift-leave-to>main{transform:translateY(var(--component-page-leave-shift));opacity:0}.page-shift-enter-active>main{transition:transform var(--component-page-enter-duration) cubic-bezier(.16, 1, .3, 1), opacity calc(var(--component-page-enter-duration) * .55) ease-out}.page-shift-enter-from>main{transform:translateY(var(--component-page-enter-shift));opacity:0}.page-shift-leave-active .nav-slide{animation:nav-slide-out var(--component-nav-exit-duration) cubic-bezier(.4, 0, 1, 1) both}.page-shift-enter-active .nav-slide{animation:nav-slide-in var(--component-nav-enter-duration) cubic-bezier(.16, 1, .3, 1) both}.page-shift-leave-active .nav-tag{animation:nav-tag-out calc(var(--component-nav-tag-duration) * .6) ease-in both}.page-shift-enter-active .nav-tag{animation:nav-tag-in var(--component-nav-tag-duration) cubic-bezier(.16, 1, .3, 1) both;animation-delay:.1s}.page-shift-leave-active .nav-slide,.page-shift-enter-active .nav-slide,.page-shift-leave-active .nav-tag,.page-shift-enter-active .nav-tag{will-change:opacity, transform}@keyframes nav-slide-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translateX(var(--component-nav-shift))}}@keyframes nav-slide-in{0%{opacity:0;transform:translateX(var(--component-nav-shift))}to{opacity:1;transform:translate(0)}}@keyframes nav-tag-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(-8px)}}@keyframes nav-tag-in{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transition:none;transform:none}.page-shift-leave-to>main,.page-shift-enter-from>main{opacity:1;transform:none}.page-shift-leave-active .nav-slide,.page-shift-enter-active .nav-slide,.page-shift-leave-active .nav-tag,.page-shift-enter-active .nav-tag{animation:none}.blog-shift-leave-to,.blog-shift-enter-from,.menu-drop-enter-from,.menu-drop-leave-to{opacity:1;transform:none}*,:before,:after{transition-duration:0s!important;animation-duration:0s!important}}}@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.top-0{top:0}.top-\[104px\]{top:104px}.left-1\/2{left:50%}.z-10{z-index:10}.z-\[1\]{z-index:1}.col-span-3{grid-column:span 3/span 3}.col-span-full{grid-column:1/-1}.col-start-1{grid-column-start:1}.col-start-2{grid-column-start:2}.float-right{float:right}.m-0{margin:0}.mx-auto{margin-inline:auto}.mt-0{margin-top:0}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-\[18px\]{margin-top:18px}.mt-\[22px\]{margin-top:22px}.mt-auto{margin-top:auto}.mr-0{margin-right:0}.mr-\[\.2em\]{margin-right:.2em}.mr-\[9px\]{margin-right:9px}.mb-0{margin-bottom:0}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.mb-9{margin-bottom:calc(var(--spacing) * 9)}.mb-\[14px\]{margin-bottom:14px}.mb-\[18px\]{margin-bottom:18px}.-ml-1{margin-left:calc(var(--spacing) * -1)}.ml-1{margin-left:var(--spacing)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-\[18px\]{margin-left:18px}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-\[7px\]{width:7px;height:7px}.size-\[18px\]{width:18px;height:18px}.size-\[var\(--component-avatar-size\)\]{width:var(--component-avatar-size);height:var(--component-avatar-size)}.size-full{width:100%;height:100%}.h-4{height:calc(var(--spacing) * 4)}.h-\[calc\(74px\*var\(--density-scale\)\)\]{height:calc(74px * var(--density-scale))}.h-\[var\(--component-topbar-height\)\]{height:var(--component-topbar-height)}.h-full{height:100%}.h-px{height:1px}.min-h-0{min-height:0}.min-h-12{min-height:calc(var(--spacing) * 12)}.min-h-\[1\.9em\]{min-height:1.9em}.min-h-\[760px\]{min-height:760px}.min-h-\[var\(--component-control-min\)\]{min-height:var(--component-control-min)}.min-h-screen{min-height:100vh}.w-2{width:calc(var(--spacing) * 2)}.w-\[1ch\]{width:1ch}.w-\[var\(--card-frozen-w\,100\%\)\]{width:var(--card-frozen-w,100%)}.w-\[var\(--component-container\)\]{width:var(--component-container)}.w-full{width:100%}.max-w-\[620px\]{max-width:620px}.max-w-\[720px\]{max-width:720px}.max-w-\[760px\]{max-width:760px}.max-w-\[var\(--component-panel-max\)\]{max-width:var(--component-panel-max)}.min-w-0{min-width:0}.flex-1{flex:1}.flex-\[0_1_auto\]{flex:0 auto}.flex-none{flex:none}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-auto{flex-basis:auto}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-boot-blink{animation:var(--animate-boot-blink)}.cursor-pointer{cursor:pointer}.resize{resize:both}.scroll-mt-20{scroll-margin-top:calc(var(--spacing) * 20)}.scroll-mt-\[104px\]{scroll-margin-top:104px}.list-none{list-style-type:none}.\[grid-template-columns\:subgrid\]{grid-template-columns:subgrid}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[1fr_360px\]{grid-template-columns:1fr 360px}.grid-cols-\[1fr_auto_1fr\]{grid-template-columns:1fr auto 1fr}.grid-cols-\[18px_max-content_max-content_minmax\(0\,1fr\)\]{grid-template-columns:18px max-content max-content minmax(0,1fr)}.grid-cols-\[minmax\(0\,1\.15fr\)_minmax\(0\,\.85fr\)\]{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr)}.grid-cols-\[minmax\(0\,220px\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,220px) minmax(0,1fr)}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:var(--spacing)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-3\.5{gap:calc(var(--spacing) * 3.5)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-\[\.6em\]{gap:.6em}.gap-\[clamp\(16px\,2\.2vw\,32px\)\]{gap:clamp(16px,2.2vw,32px)}.gap-\[clamp\(24px\,2\.7vw\,46px\)\]{gap:clamp(24px,2.7vw,46px)}.gap-\[var\(--component-hero-gap\)\]{gap:var(--component-hero-gap)}.gap-x-2\.5{column-gap:calc(var(--spacing) * 2.5)}.gap-x-3\.5{column-gap:calc(var(--spacing) * 3.5)}.gap-y-1\.5{row-gap:calc(var(--spacing) * 1.5)}.gap-y-2\.5{row-gap:calc(var(--spacing) * 2.5)}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-clip{overflow-x:clip}.rounded-\[var\(--component-panel-radius\)\]{border-radius:var(--component-panel-radius)}.rounded-full{border-radius:2147483647px}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-dotted{--tw-border-style:dotted;border-style:dotted}.border-line{border-color:var(--semantic-border)}.border-line-strong{border-color:var(--semantic-border-strong)}.border-primary{border-color:var(--semantic-primary)}.border-warning{border-color:var(--semantic-warning)}.bg-canvas{background-color:var(--semantic-bg)}.bg-line{background-color:var(--semantic-border)}.bg-primary{background-color:var(--semantic-primary)}.bg-primary-bg{background-color:var(--semantic-primary-bg)}.bg-surface{background-color:var(--semantic-surface)}.bg-surface-raised{background-color:var(--semantic-surface-raised)}.bg-topbar{background-color:var(--semantic-topbar-bg)}.bg-transparent{background-color:#0000}.object-cover{object-fit:cover}.p-0{padding:0}.p-5{padding:calc(var(--spacing) * 5)}.p-\[var\(--component-panel-padding\)\]{padding:var(--component-panel-padding)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-\[3px\]{padding-inline:3px}.px-\[7px\]{padding-inline:7px}.px-\[22px\]{padding-inline:22px}.px-\[clamp\(36px\,5vw\,88px\)\]{padding-inline:clamp(36px,5vw,88px)}.py-0{padding-block:0}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-\[9px\]{padding-block:9px}.py-\[18px\]{padding-block:18px}.py-\[22px\]{padding-block:22px}.py-\[var\(--component-section-pad-y\)\]{padding-block:var(--component-section-pad-y)}.py-px{padding-block:1px}.pt-1{padding-top:var(--spacing)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-8{padding-top:calc(var(--spacing) * 8)}.pt-10{padding-top:calc(var(--spacing) * 10)}.pt-\[150px\]{padding-top:150px}.pt-\[calc\(72px\*var\(--density-scale\)\)\]{padding-top:calc(72px * var(--density-scale))}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-7{padding-bottom:calc(var(--spacing) * 7)}.pb-9{padding-bottom:calc(var(--spacing) * 9)}.pb-\[var\(--component-section-pad-y\)\]{padding-bottom:var(--component-section-pad-y)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--primitive-font-mono)}.font-sans{font-family:var(--primitive-font-sans)}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[15px\]{font-size:15px}.text-\[17px\]{font-size:17px}.text-\[31px\]{font-size:31px}.text-body{font-size:var(--primitive-type-body)}.text-caption{font-size:var(--primitive-type-caption)}.text-code{font-size:var(--primitive-type-code)}.text-display{font-size:var(--primitive-type-display)}.text-h1{font-size:var(--primitive-type-h1)}.text-h2{font-size:var(--primitive-type-h2)}.text-h3{font-size:var(--primitive-type-h3)}.text-label{font-size:var(--primitive-type-label)}.text-title{font-size:var(--primitive-type-title)}.leading-\[\.98\]{--tw-leading:.98;line-height:.98}.leading-\[1\.3\]{--tw-leading:1.3;line-height:1.3}.leading-\[1\.4\]{--tw-leading:1.4;line-height:1.4}.leading-\[1\.6\]{--tw-leading:1.6;line-height:1.6}.leading-\[1\.8\]{--tw-leading:1.8;line-height:1.8}.leading-\[1\.9\]{--tw-leading:1.9;line-height:1.9}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[-\.01em\]{--tw-tracking:-.01em;letter-spacing:-.01em}.tracking-\[-\.08em\]{--tw-tracking:-.08em;letter-spacing:-.08em}.tracking-\[\.1em\]{--tw-tracking:.1em;letter-spacing:.1em}.tracking-\[\.04em\]{--tw-tracking:.04em;letter-spacing:.04em}.tracking-\[\.06em\]{--tw-tracking:.06em;letter-spacing:.06em}.tracking-\[\.08em\]{--tw-tracking:.08em;letter-spacing:.08em}.tracking-\[\.12em\]{--tw-tracking:.12em;letter-spacing:.12em}.tracking-\[\.14em\]{--tw-tracking:.14em;letter-spacing:.14em}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.\[word-break\:break-word\]{word-break:break-word}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-faint{color:var(--semantic-text-faint)}.text-muted{color:var(--semantic-text-muted)}.text-primary{color:var(--semantic-primary)}.text-primary-hover{color:var(--semantic-primary-hover)}.text-text{color:var(--semantic-text)}.text-warning{color:var(--semantic-warning)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.no-underline{text-decoration-line:none}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-\[\.04\]{opacity:.04}.mix-blend-screen{mix-blend-mode:screen}.shadow-\[var\(--component-glow\)\]{--tw-shadow:var(--component-glow);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-\[600ms\]{--tw-duration:.6s;transition-duration:.6s}.ease-\[ease\]{--tw-ease:ease;transition-timing-function:ease}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.will-change-\[width\,height\,transform\]{will-change:width,height,transform}.\[animation-delay\:40ms\]{animation-delay:40ms}.\[background\:radial-gradient\(circle_at_70\%_12\%\,var\(--semantic-primary-subtle\)_0\,transparent_40\%\)\,var\(--semantic-bg\)\]{background:radial-gradient(circle at 70% 12%,var(--semantic-primary-subtle) 0,transparent 40%),var(--semantic-bg)}.\[background\:repeating-linear-gradient\(0deg\,transparent_0_3px\,var\(--semantic-primary-hover\)_4px\)\]{background:repeating-linear-gradient(0deg,transparent 0 3px,var(--semantic-primary-hover) 4px)}@media (hover:hover){.group-hover\/contact\:text-primary:is(:where(.group\/contact):hover *){color:var(--semantic-primary)}.group-hover\/contact\:underline:is(:where(.group\/contact):hover *){text-decoration-line:underline}.group-hover\/link\:text-primary:is(:where(.group\/link):hover *),.group-hover\/post\:text-primary:is(:where(.group\/post):hover *){color:var(--semantic-primary)}}.group-data-\[revealed\=true\]\:pointer-events-auto:is(:where(.group)[data-revealed=true] *){pointer-events:auto}.group-data-\[revealed\=true\]\:opacity-100:is(:where(.group)[data-revealed=true] *){opacity:1}.before\:text-primary:before{content:var(--tw-content);color:var(--semantic-primary)}.before\:content-\[\'\#\'\]:before{--tw-content:"#";content:var(--tw-content)}.last\:mb-0:last-child{margin-bottom:0}@media (hover:hover){.hover\:border-line-strong:hover{border-color:var(--semantic-border-strong)}.hover\:border-primary-hover:hover{border-color:var(--semantic-primary-hover)}.hover\:bg-primary-subtle:hover{background-color:var(--semantic-primary-subtle)}.hover\:bg-transparent:hover{background-color:#0000}.hover\:text-primary:hover{color:var(--semantic-primary)}.hover\:text-primary-hover:hover{color:var(--semantic-primary-hover)}.hover\:underline:hover{text-decoration-line:underline}}@supports (min-height:100dvh){.supports-\[min-height\:100dvh\]\:min-h-dvh{min-height:100dvh}}@media (prefers-reduced-motion:reduce){.motion-reduce\:hidden{display:none}}@media not all and (width>=1100px){.max-lg\:h-\[calc\(74px\*var\(--density-scale\)\)\]{height:calc(74px * var(--density-scale))}.max-lg\:w-\[90vw\]{width:90vw}.max-lg\:max-w-\[420px\]{max-width:420px}.max-lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.max-lg\:grid-cols-\[1fr_360px\]{grid-template-columns:1fr 360px}.max-lg\:grid-cols-\[minmax\(0\,180px\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,180px) minmax(0,1fr)}.max-lg\:gap-4{gap:calc(var(--spacing) * 4)}.max-lg\:gap-11{gap:calc(var(--spacing) * 11)}.max-lg\:p-\[calc\(24px\*var\(--density-scale\)\)_calc\(26px\*var\(--density-scale\)\)\]{padding:calc(24px * var(--density-scale)) calc(26px * var(--density-scale))}.max-lg\:px-\[4vw\]{padding-inline:4vw}.max-lg\:px-\[calc\(18px\*var\(--density-scale\)\)\]{padding-inline:calc(18px * var(--density-scale))}.max-lg\:py-\[calc\(14px\*var\(--density-scale\)\)\]{padding-block:calc(14px * var(--density-scale))}.max-lg\:py-\[calc\(96px\*var\(--density-scale\)\)\]{padding-block:calc(96px * var(--density-scale))}.max-lg\:pt-\[calc\(64px\*var\(--density-scale\)\)\]{padding-top:calc(64px * var(--density-scale))}.max-lg\:pt-\[calc\(96px\*var\(--density-scale\)\)\]{padding-top:calc(96px * var(--density-scale))}.max-lg\:pb-\[calc\(96px\*var\(--density-scale\)\)\]{padding-bottom:calc(96px * var(--density-scale))}.max-lg\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.max-lg\:text-\[13px\]{font-size:13px}.max-lg\:text-\[15px\]{font-size:15px}}@media not all and (width>=900px){.max-md\:static{position:static}.max-md\:order-0{order:0}.max-md\:order-1{order:1}.max-md\:order-2{order:2}.max-md\:order-3{order:3}.max-md\:m-0{margin:0}.max-md\:mt-0{margin-top:0}.max-md\:mb-6{margin-bottom:calc(var(--spacing) * 6)}.max-md\:flex{display:flex}.max-md\:max-w-\[var\(--component-panel-max\)\]{max-width:var(--component-panel-max)}.max-md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.max-md\:flex-col{flex-direction:column}.max-md\:flex-row{flex-direction:row}.max-md\:items-center{align-items:center}.max-md\:gap-4{gap:calc(var(--spacing) * 4)}.max-md\:gap-6{gap:calc(var(--spacing) * 6)}.max-md\:gap-\[52px\]{gap:52px}.max-md\:justify-self-start{justify-self:flex-start}.max-md\:pt-\[calc\(56px\*var\(--density-scale\)\)\]{padding-top:calc(56px * var(--density-scale))}}@media not all and (width>=760px){.max-sm\:absolute{position:absolute}.max-sm\:inset-x-0{inset-inline:0}.max-sm\:top-full{top:100%}.max-sm\:mt-\[18px\]{margin-top:18px}.max-sm\:-mr-2{margin-right:calc(var(--spacing) * -2)}.max-sm\:mr-0{margin-right:0}.max-sm\:mb-5{margin-bottom:calc(var(--spacing) * 5)}.max-sm\:mb-6{margin-bottom:calc(var(--spacing) * 6)}.max-sm\:mb-\[14px\]{margin-bottom:14px}.max-sm\:flex{display:flex}.max-sm\:hidden{display:none}.max-sm\:inline-block{display:inline-block}.max-sm\:inline-flex{display:inline-flex}.max-sm\:size-24{width:calc(var(--spacing) * 24);height:calc(var(--spacing) * 24)}.max-sm\:h-\[var\(--component-control-min\)\]{height:var(--component-control-min)}.max-sm\:h-auto{height:auto}.max-sm\:min-h-0{min-height:0}.max-sm\:w-\[88vw\]{width:88vw}.max-sm\:w-\[var\(--component-control-min\)\]{width:var(--component-control-min)}.max-sm\:max-w-none{max-width:none}.max-sm\:flex-1{flex:1}.max-sm\:flex-none{flex:none}.max-sm\:shrink-0{flex-shrink:0}.max-sm\:scroll-mt-20{scroll-margin-top:calc(var(--spacing) * 20)}.max-sm\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.max-sm\:flex-col{flex-direction:column}.max-sm\:items-center{align-items:center}.max-sm\:items-stretch{align-items:stretch}.max-sm\:justify-center{justify-content:center}.max-sm\:justify-items-center{justify-items:center}.max-sm\:gap-1{gap:var(--spacing)}.max-sm\:gap-3{gap:calc(var(--spacing) * 3)}.max-sm\:gap-4{gap:calc(var(--spacing) * 4)}.max-sm\:gap-5{gap:calc(var(--spacing) * 5)}.max-sm\:gap-10{gap:calc(var(--spacing) * 10)}.max-sm\:justify-self-center{justify-self:center}.max-sm\:border-0{border-style:var(--tw-border-style);border-width:0}.max-sm\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.max-sm\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.max-sm\:border-line{border-color:var(--semantic-border)}.max-sm\:bg-topbar{background-color:var(--semantic-topbar-bg)}.max-sm\:bg-transparent{background-color:#0000}.max-sm\:p-\[18px\]{padding:18px}.max-sm\:p-\[calc\(24px\*var\(--density-scale\)\)_calc\(20px\*var\(--density-scale\)\)\]{padding:calc(24px * var(--density-scale)) calc(20px * var(--density-scale))}.max-sm\:px-0{padding-inline:0}.max-sm\:px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.max-sm\:px-\[5px\]{padding-inline:5px}.max-sm\:px-\[6vw\]{padding-inline:6vw}.max-sm\:px-\[calc\(16px\*var\(--density-scale\)\)\]{padding-inline:calc(16px * var(--density-scale))}.max-sm\:py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.max-sm\:py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.max-sm\:py-\[calc\(12px\*var\(--density-scale\)\)\]{padding-block:calc(12px * var(--density-scale))}.max-sm\:py-\[calc\(48px\*var\(--density-scale\)\)\]{padding-block:calc(48px * var(--density-scale))}.max-sm\:pt-1{padding-top:var(--spacing)}.max-sm\:pt-7{padding-top:calc(var(--spacing) * 7)}.max-sm\:pt-10{padding-top:calc(var(--spacing) * 10)}.max-sm\:pt-\[calc\(40px\*var\(--density-scale\)\)\]{padding-top:calc(40px * var(--density-scale))}.max-sm\:pb-2\.5{padding-bottom:calc(var(--spacing) * 2.5)}.max-sm\:pb-3{padding-bottom:calc(var(--spacing) * 3)}.max-sm\:pb-8{padding-bottom:calc(var(--spacing) * 8)}.max-sm\:pb-\[calc\(48px\*var\(--density-scale\)\)\]{padding-bottom:calc(48px * var(--density-scale))}.max-sm\:text-center{text-align:center}.max-sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.max-sm\:text-\[13px\]{font-size:13px}.max-sm\:text-\[15px\]{font-size:15px}.max-sm\:text-\[22px\]{font-size:22px}.max-sm\:text-\[55px\]{font-size:55px}.max-sm\:leading-none{--tw-leading:1;line-height:1}.max-sm\:tracking-\[\.06em\]{--tw-tracking:.06em;letter-spacing:.06em}.max-sm\:tracking-\[\.08em\]{--tw-tracking:.08em;letter-spacing:.08em}.max-sm\:text-primary{color:var(--semantic-primary)}}}:root{--theme-hue:104;--hue:var(--theme-hue);--sat:100%;--primitive-black:#080a09;--primitive-gray-900:#0d100e;--primitive-gray-800:#11150f;--primitive-gray-700:#1a1f1b;--primitive-gray-600:#29312b;--primitive-gray-500:#3a443c;--primitive-gray-400:#59635b;--primitive-gray-300:#879188;--primitive-gray-100:#d8ddd5;--primitive-white:#f5f7f4;--primitive-gray-050:#eef2ec;--primitive-gray-150:#d5dcd4;--primitive-gray-250:#b8c2b8;--primitive-ink:#1a201c;--primitive-ink-muted:#5c665e;--primitive-ink-faint:#8a938b;--primitive-success:#4ade80;--primitive-warning:#e9bb67;--primitive-danger:#f87171;--primitive-info:#8be8d0;--primitive-font-sans:"Inter", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;--primitive-font-mono:"JetBrains Mono", "Noto Sans Mono CJK SC", "Sarasa Mono SC", "Microsoft YaHei UI", "Microsoft YaHei", monospace;--primitive-space-1:4px;--primitive-space-2:8px;--primitive-space-3:12px;--primitive-space-4:16px;--primitive-space-5:20px;--primitive-space-6:24px;--primitive-space-7:32px;--primitive-space-8:40px;--primitive-space-9:48px;--primitive-space-10:56px;--primitive-space-11:64px;--primitive-space-12:80px;--primitive-radius-none:0;--primitive-radius-sm:4px;--primitive-radius-md:8px;--primitive-duration-instant:0s;--primitive-duration-fast:.12s;--primitive-duration-normal:.18s;--primitive-duration-slow:.26s;--primitive-duration-slower:.6s;--primitive-z-base:0;--primitive-z-raised:1;--primitive-z-sticky:10;--primitive-z-overlay:20;--primitive-z-modal:30;--primitive-z-toast:40;--primitive-type-display:clamp(58px, 6.4vw, 104px);--primitive-type-h1:33px;--primitive-type-h2:29px;--primitive-type-h3:22px;--primitive-type-title:18px;--primitive-type-body:16px;--primitive-type-label:14px;--primitive-type-caption:13px;--primitive-type-code:14px;--primitive-type-metric:26px;--primitive-type-numeric:16px;--semantic-bg:var(--primitive-black);--semantic-surface:var(--primitive-gray-900);--semantic-surface-raised:var(--primitive-gray-800);--semantic-border:var(--primitive-gray-600);--semantic-border-strong:var(--primitive-gray-500);--semantic-topbar-bg:#080a09ed;--semantic-text:var(--primitive-gray-100);--semantic-text-muted:var(--primitive-gray-300);--semantic-text-faint:var(--primitive-gray-400);--semantic-primary:hsl(var(--hue) var(--sat) 74%);--semantic-primary-hover:hsl(var(--hue) var(--sat) 80%);--semantic-primary-active:hsl(var(--hue) var(--sat) 64%);--semantic-primary-subtle:hsl(var(--hue) 25% 14%);--semantic-primary-bg:hsl(var(--hue) 26% 7%);--semantic-primary-border:hsl(var(--hue) var(--sat) 74%);--semantic-focus:var(--primitive-info);--semantic-success:var(--primitive-success);--semantic-warning:var(--primitive-warning);--semantic-danger:var(--primitive-danger);--semantic-info:var(--primitive-info);--density-scale:1;--component-container:min(1240px, 88vw);--component-topbar-height:calc(82px * var(--density-scale));--component-control-min:44px;--component-panel-max:540px;--component-panel-padding:calc(28px * var(--density-scale)) calc(32px * var(--density-scale));--component-panel-radius:var(--primitive-radius-none);--component-avatar-size:128px;--component-border:1px solid var(--semantic-border);--component-glow:0 0 8px var(--semantic-primary);--component-section-pad-y:calc(120px * var(--density-scale));--component-hero-gap:clamp(64px, 8vw, 140px);--component-focus-ring:2px solid var(--semantic-focus);--component-reveal:opacity var(--primitive-duration-slower) ease;--component-page-leave-duration:.28s;--component-page-leave-shift:56px;--component-page-enter-duration:.42s;--component-page-enter-shift:76px;--component-blog-leave-duration:.18s;--component-blog-leave-shift:10px;--component-blog-enter-duration:.36s;--component-blog-enter-shift:16px;--component-nav-exit-duration:.22s;--component-nav-enter-duration:.36s;--component-nav-shift:48px;--component-nav-tag-duration:.3s}[data-density=comfortable]{--density-scale:1.2}[data-density=dense]{--density-scale:.85}[data-theme=light]{--semantic-bg:var(--primitive-white);--semantic-surface:#fff;--semantic-surface-raised:var(--primitive-gray-050);--semantic-border:var(--primitive-gray-150);--semantic-border-strong:var(--primitive-gray-250);--semantic-topbar-bg:#f5f7f4ed;--semantic-text:var(--primitive-ink);--semantic-text-muted:var(--primitive-ink-muted);--semantic-text-faint:var(--primitive-ink-faint);--semantic-primary:hsl(var(--hue) 80% 42%);--semantic-primary-hover:hsl(var(--hue) 80% 36%);--semantic-primary-active:hsl(var(--hue) 80% 30%);--semantic-primary-subtle:hsl(var(--hue) 60% 92%);--semantic-primary-bg:hsl(var(--hue) 60% 94%);--semantic-primary-border:hsl(var(--hue) 80% 42%);--semantic-focus:hsl(var(--hue) 80% 42%)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes boot-blink{0%,to{opacity:1}50%{opacity:0}}
