.ff-v2 .ff-blog-shell{padding:96px 0 120px}.ff-v2 .ff-blog-layout{max-width:1240px;margin:0 auto;padding:0 32px;display:grid;grid-template-columns:minmax(0,760px) 220px;justify-content:center;gap:64px;align-items:start}.ff-v2 .ff-blog-article{max-width:760px}.ff-v2 .ff-blog-toc{position:sticky;top:96px;align-self:start;max-height:calc(100vh - 120px);overflow-y:auto}.ff-v2 .ff-blog-toc-label{font-family:var(--ff-font-mono);font-size:10px;color:var(--ff-fg-muted);text-transform:uppercase;letter-spacing:.18em;margin-bottom:16px}.ff-v2 .ff-blog-toc-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:2px;border-left:1px solid var(--ff-border)}.ff-v2 .ff-blog-toc-item{position:relative}.ff-v2 .ff-blog-toc-item a{display:flex;align-items:baseline;gap:12px;width:100%;padding:7px 0 7px 16px;background:transparent;border:0;text-align:left;text-decoration:none;color:var(--ff-fg-muted);font-size:13px;font-weight:400;letter-spacing:-.005em;line-height:1.45;transition:color .2s;border-left:1.5px solid transparent;margin-left:-1px}.ff-v2 .ff-blog-toc-item a:hover{color:var(--ff-fg)}.ff-v2 .ff-blog-toc-num{font-family:var(--ff-font-mono);font-size:10px;color:var(--ff-fg-faint);letter-spacing:.16em;flex-shrink:0;min-width:18px;transition:color .2s}.ff-v2 .ff-blog-toc-item.is-active a{color:var(--ff-violet);font-weight:500;border-left-color:var(--ff-violet)}.ff-v2 .ff-blog-toc-item.is-active .ff-blog-toc-num{color:var(--ff-violet)}.ff-v2 .ff-prose h2,.ff-v2 .ff-prose h3{scroll-margin-top:96px}@media (max-width:1024px){.ff-v2 .ff-blog-layout{grid-template-columns:minmax(0,1fr);gap:0}.ff-v2 .ff-blog-toc{display:none}}.ff-v2 .ff-blog-cta{margin:80px 0 0;padding:36px 40px;border:1px solid var(--ff-border);border-radius:var(--ff-radius-lg);background:var(--ff-card);position:relative;overflow:hidden}.ff-v2 .ff-blog-cta:before{content:"";position:absolute;inset:-40% -20% auto auto;width:60%;height:120%;background:radial-gradient(50% 50% at 50% 50%,var(--ff-violet-subtle),transparent 70%);pointer-events:none}.ff-v2 .ff-blog-cta-eyebrow{position:relative;font-family:var(--ff-font-mono);font-size:11px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--ff-fg-muted);margin-bottom:14px}.ff-v2 .ff-blog-cta-eyebrow:before{content:"";display:inline-block;width:6px;height:6px;border-radius:999px;background:var(--ff-violet);margin-right:12px;transform:translateY(-1px)}.ff-v2 .ff-blog-cta-copy{position:relative;margin:0 0 24px;font-family:var(--ff-font-sans);font-size:18px;line-height:1.5;letter-spacing:-.012em;color:var(--ff-fg);max-width:520px}.ff-v2 .ff-blog-cta-actions{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:16px}.ff-v2 .ff-blog-cta-primary{display:inline-flex;align-items:center;gap:10px;height:44px;padding:0 22px;border-radius:6px;background:var(--ff-fg);color:#fff;font-size:14px;font-weight:500;text-decoration:none;white-space:nowrap;transition:background .16s,transform .16s}.ff-v2 .ff-blog-cta-primary:hover{background:#000;transform:translateY(-1px)}.ff-v2 .ff-blog-cta-arrow{transition:transform .2s}.ff-v2 .ff-blog-cta-primary:hover .ff-blog-cta-arrow{transform:translateX(3px)}@media (max-width:640px){.ff-v2 .ff-blog-cta{padding:28px 24px;margin-top:64px}.ff-v2 .ff-blog-cta-copy{font-size:17px}}.ff-v2 .ff-blog-card{background:var(--ff-card);border:1px solid var(--ff-border);border-radius:8px;overflow:hidden;text-decoration:none;color:inherit;transition:box-shadow .25s cubic-bezier(.16,1,.3,1),transform .2s cubic-bezier(.16,1,.3,1)}.ff-v2 .ff-blog-card-featured{display:grid;grid-template-columns:1.15fr 1fr}.ff-v2 .ff-blog-card-featured:hover{box-shadow:var(--ff-shadow-sm)}.ff-v2 .ff-blog-card-featured-thumb{border-right:1px solid var(--ff-border);position:relative;min-height:320px}.ff-v2 .ff-blog-card-featured-thumb>*{position:absolute;inset:0;width:100%;height:100%}.ff-v2 .ff-blog-card-featured-thumb>div{aspect-ratio:auto!important}.ff-v2 .ff-blog-card-featured-body{padding:36px 40px;display:flex;flex-direction:column;justify-content:center}.ff-v2 .ff-blog-card-grid{display:flex;flex-direction:column}.ff-v2 .ff-blog-card-grid:hover{box-shadow:var(--ff-shadow-sm);transform:translateY(-2px)}.ff-v2 .ff-blog-card-grid>div:first-child{width:100%}.ff-v2 .ff-blog-grid{margin-top:28px;display:grid;grid-template-columns:repeat(3,1fr);gap:20px}@media (max-width:960px){.ff-v2 .ff-blog-card-featured{grid-template-columns:1fr}.ff-v2 .ff-blog-card-featured-thumb{border-right:none;border-bottom:1px solid var(--ff-border);min-height:260px}.ff-v2 .ff-blog-card-featured-body{padding:28px}.ff-v2 .ff-blog-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:640px){.ff-v2 .ff-blog-grid{grid-template-columns:1fr}}.ff-v2 .ff-blog-post-header{display:grid;gap:24px;padding-bottom:48px;margin-bottom:56px;border-bottom:1px solid var(--ff-border)}.ff-v2 .ff-blog-hero{margin:0 0 64px;border:1px solid var(--ff-border);border-radius:var(--ff-radius-lg);overflow:hidden;background:var(--ff-card);box-shadow:var(--ff-shadow-sm)}.ff-v2 .ff-blog-hero-inner{aspect-ratio:2/1;position:relative}.ff-v2 .ff-blog-hero-inner>*{width:100%;height:100%}.ff-v2 .ff-blog-hero-inner>div{aspect-ratio:auto!important}.ff-v2 .ff-blog-hero-wide,.ff-v2 .ff-blog-post-header-wide{max-width:1044px;margin-left:auto;margin-right:auto}.ff-v2 .ff-blog-post-header-wide{padding-left:32px;padding-right:32px}.ff-v2 .ff-blog-breadcrumbs{display:flex;align-items:center;flex-wrap:wrap;gap:8px;font-family:var(--ff-font-mono);font-size:12px;letter-spacing:.02em;text-transform:lowercase;color:var(--ff-fg-muted)}.ff-v2 .ff-blog-breadcrumbs a{color:var(--ff-fg-muted);text-decoration:none;border-bottom:1px dashed oklch(70% 0 0/.5);padding-bottom:1px;transition:color .16s,border-color .16s}.ff-v2 .ff-blog-breadcrumbs a:hover{color:var(--ff-fg);border-bottom-color:var(--ff-fg)}.ff-v2 .ff-blog-breadcrumbs-sep{color:var(--ff-fg-subtle);user-select:none}.ff-v2 .ff-blog-breadcrumbs-current{color:var(--ff-fg);max-width:480px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ff-v2 .ff-blog-post-title{font-family:var(--ff-font-sans);font-size:clamp(36px,5vw,56px);font-weight:600;letter-spacing:-.022em;line-height:1.05;color:var(--ff-fg);margin:0}.ff-v2 .ff-blog-post-lede{font-family:var(--ff-font-sans);font-size:18px;line-height:1.55;color:var(--ff-fg-muted);margin:0;max-width:680px}.ff-v2 .ff-blog-post-meta{display:flex;gap:16px;align-items:center;flex-wrap:wrap;font-family:var(--ff-font-mono);font-size:12px;letter-spacing:.04em;color:var(--ff-fg-muted)}.ff-v2 .ff-blog-post-meta-author{color:var(--ff-fg);font-weight:500}.ff-v2 .ff-blog-post-meta-dot{width:3px;height:3px;border-radius:999px;background:var(--ff-fg-subtle)}.ff-v2 .ff-prose{font-family:var(--ff-font-sans);font-size:17px;line-height:1.7;color:var(--ff-fg)}.ff-v2 .ff-prose>*+*{margin-top:1.5em}.ff-v2 .ff-prose>p+p{margin-top:1.75em}.ff-v2 .ff-prose h2{font-size:28px;letter-spacing:-.022em;line-height:1.2;margin-top:2.4em;margin-bottom:.6em}.ff-v2 .ff-prose h2,.ff-v2 .ff-prose h3{font-family:var(--ff-font-sans);font-weight:600;color:var(--ff-fg)}.ff-v2 .ff-prose h3{font-size:20px;letter-spacing:-.018em;line-height:1.3;margin-top:2em;margin-bottom:.5em}.ff-v2 .ff-prose p{margin:0}.ff-v2 .ff-prose a{color:var(--ff-fg);text-decoration:none;background-image:linear-gradient(var(--ff-violet),var(--ff-violet));background-position:0 100%;background-repeat:no-repeat;background-size:100% 1px;transition:background-size .16s,color .16s}.ff-v2 .ff-prose a:hover{color:var(--ff-violet);background-size:100% 2px}.ff-v2 .ff-prose strong{font-weight:600;color:var(--ff-fg)}.ff-v2 .ff-prose ol,.ff-v2 .ff-prose ul{margin:0;padding-left:1.4em}.ff-v2 .ff-prose ul{list-style:disc}.ff-v2 .ff-prose ol{list-style:decimal}.ff-v2 .ff-prose ul ul{list-style:circle}.ff-v2 .ff-prose ul ul ul{list-style:square}.ff-v2 .ff-prose li{margin-top:.4em}.ff-v2 .ff-prose li::marker{color:var(--ff-fg-subtle)}.ff-v2 .ff-prose blockquote{margin:1.6em 0;padding:4px 0 4px 20px;border-left:2px solid var(--ff-violet);color:var(--ff-fg-muted);font-size:19px;line-height:1.55}.ff-v2 .ff-prose hr{border:none;border-top:1px dashed oklch(70% 0 0/.45);margin:2.4em 0}.ff-v2 .ff-prose :not(pre)>code{font-family:var(--ff-font-mono);font-size:.88em;padding:2px 6px;border-radius:4px;background:var(--ff-muted);border:1px solid var(--ff-border);color:var(--ff-fg)}.ff-v2 .ff-prose figure[data-rehype-pretty-code-figure]{margin:1.8em 0}.ff-v2 .ff-prose pre{font-family:var(--ff-font-mono);font-size:13px;line-height:1.65;background:oklch(98% 0 0);border:1px solid var(--ff-border);border-radius:var(--ff-radius-lg);padding:18px 20px;overflow-x:auto;margin:0}.ff-v2 .ff-prose pre code{display:block;background:transparent;border:none;padding:0;font-size:inherit;color:inherit}.ff-v2 .ff-prose pre code span{color:var(--shiki-light);background-color:var(--shiki-light-bg);font-style:var(--shiki-light-font-style);font-weight:var(--shiki-light-font-weight);text-decoration:var(--shiki-light-text-decoration)}.ff-v2 .ff-prose pre [data-line]{display:block;padding:0 4px;border-left:2px solid transparent}.ff-v2 .ff-prose pre [data-highlighted-line]{background:var(--ff-violet-subtle);border-left-color:var(--ff-violet)}.ff-v2 .ff-prose figure[data-rehype-pretty-code-figure] [data-rehype-pretty-code-title]{font-family:var(--ff-font-mono);font-size:11px;letter-spacing:.04em;color:var(--ff-fg-muted);text-transform:lowercase;margin-bottom:6px}.ff-v2 .ff-blog-post-footer{margin-top:80px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px}.ff-v2 .ff-blog-post-footer,.ff-v2 .ff-blog-related{padding-top:32px;border-top:1px solid var(--ff-border)}.ff-v2 .ff-blog-related{margin-top:72px}.ff-v2 .ff-blog-related-eyebrow{font-family:var(--ff-font-mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ff-fg-muted);margin-bottom:18px}.ff-v2 .ff-blog-related-list{list-style:none;margin:0;padding:0;display:grid;gap:4px}.ff-v2 .ff-blog-related-item{display:flex;flex-direction:column;gap:4px;padding:14px 16px;margin:0 -16px;border-radius:var(--ff-radius);text-decoration:none;transition:background .15s ease}.ff-v2 .ff-blog-related-item:hover{background:var(--ff-muted)}.ff-v2 .ff-blog-related-title{font-size:16px;font-weight:600;letter-spacing:-.015em;line-height:1.3;color:var(--ff-fg)}.ff-v2 .ff-blog-related-meta{font-family:var(--ff-font-mono);font-size:11px;letter-spacing:.04em;color:var(--ff-fg-muted)}.ff-v2 .ff-prose .ff-stat{margin:2.2em 0;padding:28px 32px;background:var(--ff-card);border:1px solid var(--ff-border);border-radius:var(--ff-radius-lg);display:grid;gap:6px}.ff-v2 .ff-prose .ff-stat-value{font-family:var(--ff-font-mono);font-size:56px;font-weight:600;letter-spacing:-.03em;line-height:1;color:var(--ff-fg)}.ff-v2 .ff-prose .ff-stat-label{font-family:var(--ff-font-mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ff-fg-muted)}.ff-v2 .ff-prose .ff-stat-note{font-size:13px;color:var(--ff-fg-muted);line-height:1.55;margin-top:8px}.ff-v2 .ff-prose .ff-stat-violet .ff-stat-value{color:var(--ff-violet)}.ff-v2 .ff-prose .ff-pullquote{margin:2.4em 0;padding:0 0 0 24px;border-left:3px solid var(--ff-violet);font-family:var(--ff-font-sans);font-size:22px;font-weight:500;line-height:1.4;letter-spacing:-.015em;color:var(--ff-fg)}.ff-v2 .ff-prose .ff-callout{margin:1.8em 0;padding:18px 22px;background:var(--ff-muted);border:1px solid var(--ff-border);border-radius:var(--ff-radius);font-size:14px;line-height:1.6;color:var(--ff-fg)}.ff-v2 .ff-prose .ff-callout-label{font-family:var(--ff-font-mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--ff-fg-muted);margin-bottom:6px}.ff-v2 .ff-prose .ff-callout p{margin:0}.ff-v2 .ff-prose .ff-callout p+p{margin-top:10px}.ff-v2 .ff-prose figure.ff-figure{margin:2em 0;padding:28px;background:var(--ff-card);border:1px solid var(--ff-border);border-radius:var(--ff-radius-lg)}.ff-v2 .ff-prose figure.ff-figure>svg{display:block;width:100%;height:auto;max-width:100%}.ff-v2 .ff-prose figure.ff-figure>figcaption{margin-top:14px;padding-top:14px;border-top:1px dashed oklch(70% 0 0/.45);font-family:var(--ff-font-mono);font-size:11px;letter-spacing:.04em;color:var(--ff-fg-muted);text-align:center}.ff-v2 .ff-prose .ff-compare{margin:2em 0;display:grid;grid-template-columns:1fr 1fr;gap:16px}.ff-v2 .ff-prose .ff-compare>div{padding:20px;background:var(--ff-card);border:1px solid var(--ff-border);border-radius:var(--ff-radius)}.ff-v2 .ff-prose .ff-compare-label{font-family:var(--ff-font-mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--ff-fg-muted);margin-bottom:10px}@media (max-width:640px){.ff-v2 .ff-prose .ff-compare{grid-template-columns:1fr}}.ff-v2 .ff-prose table{margin:1.6em 0;width:100%;border-collapse:collapse;font-size:14px}.ff-v2 .ff-prose td,.ff-v2 .ff-prose th{text-align:left;padding:10px 14px;border-bottom:1px solid var(--ff-border)}.ff-v2 .ff-prose th{font-family:var(--ff-font-mono);font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--ff-fg-muted);border-bottom:1px solid var(--ff-fg)}.ff-v2 .ff-prose td code{font-size:.9em}
/*# sourceMappingURL=9b42f86c761defdb.css.map*/