:root{--background:#fff;--foreground:#080808;--card:#fff;--card-foreground:#080808;--popover:#fff;--popover-foreground:#080808;--primary:#0d0d0d;--primary-foreground:#fcfcfc;--secondary:#f3f3f3;--secondary-foreground:#121212;--muted:#f3f3f3;--muted-foreground:#585858;--accent:#ebebeb;--accent-foreground:#121212;--border:#dedede;--input:#dedede;--ring:#121212}@supports (color:lab(0% 0 0)){:root{--background:lab(100% 0 0);--foreground:lab(2.22245% 0 0);--card:lab(100% 0 0);--card-foreground:lab(2.22245% 0 0);--popover:lab(100% 0 0);--popover-foreground:lab(2.22245% 0 0);--primary:lab(3.6999% 0 0);--primary-foreground:lab(98.84% .0000298023 -.0000119209);--secondary:lab(95.94% 0 0);--secondary-foreground:lab(5.26802% 0 0);--muted:lab(95.94% 0 0);--muted-foreground:lab(37.36% .0000149012 -.00000596046);--accent:lab(93.04% .0000298023 -.0000119209);--accent-foreground:lab(5.26802% 0 0);--border:lab(88.4% 0 .0000119209);--input:lab(88.4% 0 .0000119209);--ring:lab(5.26802% 0 0)}}.dark{--background:#050505;--foreground:#fafafa;--card:#0c0c0c;--card-foreground:#fafafa;--popover:#0c0c0c;--popover-foreground:#fafafa;--primary:#fafafa;--primary-foreground:#080808;--secondary:#1b1b1b;--secondary-foreground:#fafafa;--muted:#1b1b1b;--muted-foreground:#9e9e9e;--accent:#1e1e1e;--accent-foreground:#fafafa;--border:#ffffff1f;--input:#ffffff29;--ring:#e4e4e4}@supports (color:lab(0% 0 0)){.dark{--background:lab(1.3738% 0 0);--foreground:lab(98.26% 0 0);--card:lab(3.36376% 0 0);--card-foreground:lab(98.26% 0 0);--popover:lab(3.36376% 0 0);--popover-foreground:lab(98.26% 0 0);--primary:lab(98.26% 0 0);--primary-foreground:lab(2.22245% 0 0);--secondary:lab(9.52% -.00000745058 0);--secondary-foreground:lab(98.26% 0 0);--muted:lab(9.52% -.00000745058 0);--muted-foreground:lab(65.2% 0 0);--accent:lab(11.26% .00000745058 -.00000298023);--accent-foreground:lab(98.26% 0 0);--border:lab(100% 0 0/.12);--input:lab(100% 0 0/.16);--ring:lab(90.72% .0000298023 -.0000119209)}}body{background:var(--background)}::selection{background:var(--foreground);color:var(--background)}.public-surface,main .rounded-3xl.border.bg-background,main .rounded-3xl.border.bg-muted\/10,main .rounded-3xl.border.bg-muted\/15,main .rounded-3xl.border.bg-card,main .rounded-3xl.border.bg-card\/95{box-shadow:0 1px 2px #0000000a;box-shadow:0 1px 2px lab(0% 0 0/.04)}main a.rounded-full,main button.rounded-full,nav a.rounded-full,nav button.rounded-full{transition-property:color,background-color,border-color,box-shadow,transform;transition-duration:.16s}@media (hover:hover) and (pointer:fine){main a.rounded-full:hover,main button.rounded-full:hover{transform:translateY(-1px)}}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline-offset:3px}main .shadow-xl,main .shadow-2xl{box-shadow:0 1px 2px #0000000d,0 16px 40px -32px #00000047!important;box-shadow:0 1px 2px lab(0% 0 0/.05),0 16px 40px -32px lab(0% 0 0/.28)!important}.tech-grid{background-image:linear-gradient(90deg,#0000000b 1px,#0000 1px),linear-gradient(#0000000b 1px,#0000 1px);background-image:linear-gradient(90deg,lab(0% 0 0/.045) 1px,#0000 1px),linear-gradient(lab(0% 0 0/.045) 1px,#0000 1px);background-size:44px 44px}.dark .tech-grid{background-image:linear-gradient(90deg,#ffffff0d 1px,#0000 1px),linear-gradient(#ffffff0d 1px,#0000 1px);background-image:linear-gradient(90deg,lab(100% 0 0/.05) 1px,#0000 1px),linear-gradient(lab(100% 0 0/.05) 1px,#0000 1px)}@media (max-width:767px){main .rounded-3xl{border-radius:1.1rem}}
.article-content,.article-content--reading{overflow-wrap:break-word;min-width:0;max-width:100%;color:var(--foreground);font-size:clamp(.98rem,1.1vw,1.04rem);line-height:1.58}.article-content>:first-child,.article-content--reading>:first-child{margin-top:0!important}.article-content>:last-child,.article-content--reading>:last-child{margin-bottom:0!important}.article-content p,.article-content--reading p{-webkit-hyphens:auto;hyphens:auto;margin:0 0 .55rem}.article-content p:empty,.article-content--reading p:empty{display:none}.article-content h1,.article-content h2,.article-content h3,.article-content h4,.article-content--reading h1,.article-content--reading h2,.article-content--reading h3,.article-content--reading h4{color:var(--foreground);letter-spacing:-.025em;scroll-margin-top:6rem;font-weight:800}.article-content h1,.article-content--reading h1{margin:1.25rem 0 .4rem;font-size:clamp(1.75rem,3.4vw,2.4rem);line-height:1.12}.article-content h2,.article-content--reading h2{margin:1.4rem 0 .4rem;font-size:clamp(1.3rem,2.1vw,1.6rem);line-height:1.22}.article-content h2:before,.article-content--reading h2:before{content:"##";color:var(--muted-foreground);font-family:var(--font-mono), ui-monospace, SFMono-Regular, Consolas, monospace;letter-spacing:0;vertical-align:.12em;margin-right:.5rem;font-size:.78em;font-weight:600;display:inline-block}.article-content h3,.article-content--reading h3{margin:1.05rem 0 .32rem;font-size:clamp(1.08rem,1.5vw,1.18rem);line-height:1.3}.article-content h3:before,.article-content--reading h3:before{content:"###";color:var(--muted-foreground);font-family:var(--font-mono), ui-monospace, SFMono-Regular, Consolas, monospace;letter-spacing:0;vertical-align:.12em;margin-right:.5rem;font-size:.78em;font-weight:600;display:inline-block}.article-content h4,.article-content--reading h4{margin:.85rem 0 .28rem;font-size:clamp(1rem,1.4vw,1.06rem);line-height:1.36}.article-content h1+p,.article-content h2+p,.article-content h3+p,.article-content h4+p,.article-content h1+ul,.article-content h2+ul,.article-content h3+ul,.article-content h4+ul,.article-content h1+ol,.article-content h2+ol,.article-content h3+ol,.article-content h4+ol,.article-content--reading h1+p,.article-content--reading h2+p,.article-content--reading h3+p,.article-content--reading h4+p,.article-content--reading h1+ul,.article-content--reading h2+ul,.article-content--reading h3+ul,.article-content--reading h4+ul,.article-content--reading h1+ol,.article-content--reading h2+ol,.article-content--reading h3+ol,.article-content--reading h4+ol{margin-top:0}.article-content ul,.article-content ol,.article-content--reading ul,.article-content--reading ol{margin:.35rem 0 .6rem;padding-left:1.25rem}.article-content ul,.article-content--reading ul{list-style:square}.article-content ol,.article-content--reading ol{list-style:decimal}.article-content li,.article-content--reading li{margin:.08rem 0;padding-left:.12rem}.article-content li>p,.article-content--reading li>p{margin:.08rem 0}.article-content li::marker{color:var(--muted-foreground);font-weight:600}.article-content--reading li::marker{color:var(--muted-foreground);font-weight:600}.article-content blockquote,.article-content section[data-callout],.article-content--reading blockquote,.article-content--reading section[data-callout]{border:1px solid var(--border);border-left-width:2px;border-left-color:var(--foreground);background:var(--muted);color:var(--foreground);border-radius:.5rem;margin:.85rem 0;padding:.7rem .95rem}.article-content blockquote,.article-content--reading blockquote{color:var(--muted-foreground);font-style:normal}.article-content hr,.article-content--reading hr{background:var(--border)!important;width:100%!important;height:1px!important;min-height:1px!important;box-shadow:none!important;border:0!important;border-radius:0!important;margin:1.1rem 0!important;display:block!important}.article-content a,.article-content--reading a{color:var(--foreground);text-decoration-line:underline;-webkit-text-decoration-color:var(--border);text-decoration-color:var(--border);text-underline-offset:.22em;text-decoration-thickness:1px;transition:text-decoration-color .14s}.article-content a:hover,.article-content--reading a:hover{-webkit-text-decoration-color:var(--foreground);text-decoration-color:var(--foreground)}.article-content code:not(pre code),.article-content--reading code:not(pre code){border:1px solid var(--border);background:var(--muted);color:var(--foreground);border-radius:.35rem;padding:.1rem .32rem;font-size:.88em;font-weight:600}.article-content pre,.article-content--reading pre{box-sizing:border-box;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;scrollbar-gutter:stable;color:#ebebeb;color:lab(93.04% .0000298023 -.0000119209);background:#090909;background:lab(2.47865% 0 0);border:1px solid #ffffff14;border:1px solid lab(100% 0 0/.08);border-radius:.65rem;width:100%;min-width:0;max-width:100%;margin:.95rem 0;padding:2.4rem 1rem .9rem;position:relative;overflow:auto hidden;box-shadow:inset 0 1px #ffffff0a;box-shadow:inset 0 1px lab(100% 0 0/.04)}.article-content pre:before,.article-content--reading pre:before{content:"$ code";box-sizing:border-box;max-width:100%;height:1.85rem;font-family:var(--font-mono), ui-monospace, SFMono-Regular, Consolas, monospace;letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;text-overflow:ellipsis;color:#9e9e9e;color:lab(65.2% 0 0);border-bottom:1px solid #ffffff14;border-bottom:1px solid lab(100% 0 0/.08);align-items:center;padding-left:.95rem;padding-right:5rem;font-size:.66rem;font-weight:600;display:flex;position:absolute;inset:0 0 auto;overflow:hidden}.article-content pre:after,.article-content--reading pre:after{content:none}.article-content pre code,.article-content--reading pre code{white-space:pre;width:max-content;min-width:100%;max-width:none;color:inherit;font-family:var(--font-mono), ui-monospace, SFMono-Regular, Consolas, monospace;tab-size:2;background:0 0;padding:0;font-size:.86rem;line-height:1.6;display:block}.article-content .hljs-keyword,.article-content .hljs-selector-tag,.article-content .hljs-built_in,.article-content .hljs-name,.article-content .hljs-type,.article-content .hljs-class .hljs-title,.article-content .hljs-function .hljs-title,.article-content--reading .hljs-keyword,.article-content--reading .hljs-selector-tag,.article-content--reading .hljs-built_in,.article-content--reading .hljs-name,.article-content--reading .hljs-type,.article-content--reading .hljs-class .hljs-title,.article-content--reading .hljs-function .hljs-title,.rich-text-editor .ProseMirror .hljs-keyword,.rich-text-editor .ProseMirror .hljs-selector-tag,.rich-text-editor .ProseMirror .hljs-built_in,.rich-text-editor .ProseMirror .hljs-name,.rich-text-editor .ProseMirror .hljs-type{color:#fff;color:lab(100% 0 0);font-weight:700}.article-content .hljs-string,.article-content .hljs-title,.article-content .hljs-section,.article-content .hljs-attribute,.article-content .hljs-number,.article-content .hljs-literal,.article-content .hljs-variable,.article-content .hljs-template-variable,.article-content .hljs-params,.article-content .hljs-tag,.article-content .hljs-attr,.article-content--reading .hljs-string,.article-content--reading .hljs-title,.article-content--reading .hljs-section,.article-content--reading .hljs-attribute,.article-content--reading .hljs-number,.article-content--reading .hljs-literal,.article-content--reading .hljs-variable,.article-content--reading .hljs-template-variable,.article-content--reading .hljs-params,.article-content--reading .hljs-tag,.article-content--reading .hljs-attr,.rich-text-editor .ProseMirror .hljs-string,.rich-text-editor .ProseMirror .hljs-title,.rich-text-editor .ProseMirror .hljs-number,.rich-text-editor .ProseMirror .hljs-attr,.rich-text-editor .ProseMirror .hljs-tag{color:#d7d7d7;color:lab(86.08% -.0000298023 0)}.article-content .hljs-comment,.article-content .hljs-quote,.article-content .hljs-operator,.article-content .hljs-punctuation,.article-content .hljs-meta,.article-content--reading .hljs-comment,.article-content--reading .hljs-quote,.article-content--reading .hljs-operator,.article-content--reading .hljs-punctuation,.article-content--reading .hljs-meta,.rich-text-editor .ProseMirror .hljs-comment,.rich-text-editor .ProseMirror .hljs-operator,.rich-text-editor .ProseMirror .hljs-punctuation{color:#7a7a7a;color:lab(51.28% -.0000298023 0);font-style:italic}.article-content--reading .code-copy-button,.article-content .code-copy-button{z-index:3;color:#dedede;color:lab(88.4% 0 .0000119209);height:1.45rem;font-family:var(--font-mono), ui-monospace, SFMono-Regular, Consolas, monospace;letter-spacing:.05em;text-transform:uppercase;white-space:nowrap;cursor:pointer;background:#ffffff0f;background:lab(100% 0 0/.06);border:1px solid #ffffff29;border:1px solid lab(100% 0 0/.16);border-radius:.35rem;padding:0 .55rem;font-size:.62rem;font-weight:600;transition:background .14s,border-color .14s,color .14s;position:absolute;top:.4rem;right:.5rem}.article-content--reading .code-copy-button:hover,.article-content .code-copy-button:hover{color:#fff;color:lab(100% 0 0);background:#ffffff1f;background:lab(100% 0 0/.12);border-color:#fff6;border-color:lab(100% 0 0/.4)}.article-content--reading .code-copy-button[data-copied=true],.article-content .code-copy-button[data-copied=true]{color:#fff;color:lab(100% 0 0);background:#ffffff2e;background:lab(100% 0 0/.18);border-color:#ffffff80;border-color:lab(100% 0 0/.5)}.article-content--reading .code-copy-button:focus-visible,.article-content .code-copy-button:focus-visible{outline-offset:1px;outline:2px solid #fff9;outline:2px solid lab(100% 0 0/.6)}@media (max-width:640px){.article-content pre,.article-content--reading pre{border-radius:.55rem;margin:.85rem 0;padding:2.2rem .8rem .8rem}.article-content pre code,.article-content--reading pre code{font-size:.78rem;line-height:1.55}.article-content--reading .code-copy-button,.article-content .code-copy-button{height:1.35rem;font-size:.6rem;top:.32rem;right:.35rem}}
