.nf-home .blog-cover{--blog-grad: radial-gradient(80% 70% at 78% 8%, rgba(167, 139, 250, .42), transparent 56%), radial-gradient(95% 80% at 60% -10%, rgba(99, 102, 241, .3), transparent 60%), linear-gradient(180deg, #14102b 0%, #0c0a20 60%, var(--bg) 100%);background-color:#0c0a20;background-image:var(--blog-grad);background-size:cover;background-position:center}.nf-home .blog-head{border-bottom:1px solid var(--line);background:radial-gradient(120% 100% at 100% 0%,rgba(139,92,246,.1),transparent 55%)}.nf-home .blog-head .wrap{padding-top:150px;padding-bottom:56px}.nf-home .blog-head h1{font-weight:800;font-size:clamp(40px,5.4vw,68px);line-height:1;letter-spacing:-.03em;margin-top:20px}.nf-home .blog-head h1 .v{color:var(--violet-l)}.nf-home .blog-lead{margin-top:22px;max-width:56ch;font-size:clamp(16px,1.6vw,19px);line-height:1.6;color:var(--muted)}.nf-home .blog-filter{display:flex;flex-wrap:wrap;gap:9px;margin-top:34px}.nf-home .blog-chip{font-family:var(--mono);font-size:12px;letter-spacing:.02em;color:var(--muted);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:8px 15px;cursor:pointer;transition:color .18s,border-color .18s,background .18s}.nf-home .blog-chip:hover{color:var(--text);border-color:var(--line2)}.nf-home .blog-chip[aria-pressed=true]{color:#fff;background:var(--violet);border-color:var(--violet)}.nf-home .blog-list{padding-top:52px;padding-bottom:96px}.nf-home .blog-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:26px;margin-top:26px}.nf-home .blog-empty{margin-top:40px;color:var(--muted);font-family:var(--mono);font-size:13px}.nf-home .blog-card{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);overflow:hidden;text-decoration:none;color:inherit;transition:border-color .2s,transform .2s,box-shadow .2s}.nf-home .blog-card:hover{border-color:var(--line2);transform:translateY(-3px);box-shadow:0 18px 40px -24px #000c}.nf-home .blog-meta .cat{color:var(--violet-l);text-transform:uppercase;letter-spacing:.06em}.nf-home .blog-card-body{display:flex;flex-direction:column;flex:1;padding:22px 22px 24px}.nf-home .blog-meta{display:flex;align-items:center;gap:10px;font-family:var(--mono);font-size:11.5px;color:var(--muted2)}.nf-home .blog-meta .dot{width:3px;height:3px;border-radius:50%;background:var(--muted2)}.nf-home .blog-card h3{margin-top:12px;font-weight:700;font-size:20px;line-height:1.25;letter-spacing:-.015em;transition:color .18s}.nf-home .blog-card:hover h3{color:var(--violet-l)}.nf-home .blog-card p{margin-top:10px;font-size:14.5px;line-height:1.6;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.nf-home .blog-card .plink{margin-top:auto;padding-top:18px}.nf-home .blog-feat{display:block;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);overflow:hidden;text-decoration:none;color:inherit;transition:border-color .2s,box-shadow .2s}.nf-home .blog-feat:hover{border-color:var(--line2);box-shadow:0 22px 50px -28px #000c}.nf-home .blog-feat-body{display:flex;flex-direction:column;justify-content:center;padding:40px 42px}.nf-home .blog-feat-body .blog-meta{margin-bottom:16px}.nf-home .blog-feat-body h2{font-weight:800;font-size:clamp(24px,2.6vw,34px);line-height:1.12;letter-spacing:-.022em;transition:color .18s}.nf-home .blog-feat:hover h2{color:var(--violet-l)}.nf-home .blog-feat-body p{margin-top:16px;font-size:16px;line-height:1.65;color:var(--muted);max-width:52ch}.nf-home .blog-feat-body .plink{margin-top:24px}.nf-home .blog-feat-tag{align-self:flex-start;font-family:var(--mono);font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--violet-l);border:1px solid var(--line2);border-radius:999px;padding:5px 12px;margin-bottom:18px}.nf-home .blog-article{padding-top:132px}.nf-home .blog-article .wrap{max-width:820px}.nf-home .blog-back{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:12.5px;color:var(--muted);text-decoration:none;transition:color .18s}.nf-home .blog-back:hover{color:var(--text)}.nf-home .blog-back svg{width:14px;height:14px}.nf-home .blog-art-head{margin-top:30px;padding-bottom:32px;border-bottom:1px solid var(--line)}.nf-home .blog-art-head .blog-meta{font-size:12.5px;margin-bottom:18px}.nf-home .blog-art-head .cat{font-family:var(--mono);font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--violet-l);border:1px solid var(--line2);border-radius:999px;padding:5px 12px}.nf-home .blog-art-head h1{font-weight:800;font-size:clamp(30px,4.2vw,50px);line-height:1.05;letter-spacing:-.028em}.nf-home .blog-art-desc{margin-top:20px;font-size:clamp(17px,1.8vw,20px);line-height:1.55;color:var(--muted)}.nf-home .blog-author{display:flex;align-items:center;gap:12px;margin-top:26px}.nf-home .blog-author .ava{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;font-family:var(--mono);font-weight:600;font-size:13px;color:#fff;background:linear-gradient(140deg,var(--violet),var(--violet-d))}.nf-home .blog-author .nm{font-weight:600;font-size:14px}.nf-home .blog-author .dt{font-family:var(--mono);font-size:11.5px;color:var(--muted2);margin-top:2px}.nf-home .blog-cover{margin-top:34px;aspect-ratio:16 / 8;border:1px solid var(--line);border-radius:var(--r-md)}.nf-home .blog-toc{margin-top:34px;padding:20px 24px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface)}.nf-home .blog-toc-title{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted2)}.nf-home .blog-toc ol{list-style:none;margin-top:12px;padding:0;display:flex;flex-direction:column;gap:1px}.nf-home .blog-toc li.lvl-3{padding-left:16px}.nf-home .blog-toc a{display:block;padding:6px 12px;border-left:2px solid transparent;border-radius:0 var(--r-sm) var(--r-sm) 0;font-size:14px;line-height:1.45;color:var(--muted);text-decoration:none;transition:color .18s,border-color .18s,background .18s}.nf-home .blog-toc li.lvl-3 a{font-size:13px;color:var(--muted2)}.nf-home .blog-toc a:hover{color:var(--text);background:#8b5cf60f}.nf-home .blog-toc a.is-active{color:var(--violet-l);border-left-color:var(--violet);background:#8b5cf614}.nf-home .blog-prose :is(h2,h3){scroll-margin-top:96px}.nf-home .blog-article.has-toc .wrap{max-width:1080px}.nf-home .blog-article.has-toc .blog-shell{display:grid;grid-template-columns:minmax(0,1fr) 240px;column-gap:56px;grid-template-areas:"back  toc" "head  toc" "cover toc" "prose toc" "tags  toc"}.nf-home .blog-article.has-toc .blog-back{grid-area:back}.nf-home .blog-article.has-toc .blog-art-head{grid-area:head}.nf-home .blog-article.has-toc .blog-cover{grid-area:cover}.nf-home .blog-article.has-toc .blog-prose{grid-area:prose}.nf-home .blog-article.has-toc .blog-tags{grid-area:tags}.nf-home .blog-article.has-toc .blog-toc{grid-area:toc;align-self:start;position:sticky;top:96px;margin-top:64px;max-height:calc(100vh - 128px);overflow:auto}@media(max-width:1000px){.nf-home .blog-article.has-toc .wrap{max-width:820px}.nf-home .blog-article.has-toc .blog-shell{display:block}.nf-home .blog-article.has-toc .blog-toc{position:static;top:auto;margin-top:34px;max-height:none;overflow:visible}}.nf-home .blog-prose{margin-top:40px;font-size:17px;line-height:1.75;color:#cbc6da}.nf-home .blog-prose>*+*{margin-top:22px}.nf-home .blog-prose h2{margin-top:52px;font-weight:700;font-size:clamp(23px,2.4vw,30px);line-height:1.2;letter-spacing:-.02em;color:var(--text)}.nf-home .blog-prose h3{margin-top:38px;font-weight:700;font-size:20px;line-height:1.3;color:var(--text)}.nf-home .blog-prose h2+p,.nf-home .blog-prose h3+p{margin-top:14px}.nf-home .blog-prose a{color:var(--violet-l);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--line2);transition:text-decoration-color .18s}.nf-home .blog-prose a:hover{text-decoration-color:var(--violet-l)}.nf-home .blog-prose strong{color:var(--text);font-weight:700}.nf-home .blog-prose ul,.nf-home .blog-prose ol{padding-left:1.3em}.nf-home .blog-prose li+li{margin-top:8px}.nf-home .blog-prose li::marker{color:var(--violet)}.nf-home .blog-prose img{width:100%;border:1px solid var(--line);border-radius:var(--r-md);display:block}.nf-home .blog-prose blockquote{border-left:2px solid var(--violet);padding-left:20px;color:var(--muted);font-style:italic}.nf-home .blog-prose code{font-family:var(--mono);font-size:.86em;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);padding:2px 6px}.nf-home .blog-prose pre{background:var(--bg2);border:1px solid var(--line);border-radius:var(--r-md);padding:18px 20px;overflow-x:auto}.nf-home .blog-prose pre code{background:none;border:none;padding:0;font-size:13.5px}.nf-home .blog-prose hr{border:none;border-top:1px solid var(--line);margin:40px 0}.nf-home .blog-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:48px;padding-top:28px;border-top:1px solid var(--line)}.nf-home .blog-tags .tag{font-family:var(--mono);font-size:11.5px;color:var(--muted);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:5px 12px}.nf-home .blog-more{border-top:1px solid var(--line);padding-top:64px;padding-bottom:96px;margin-top:72px}@media(max-width:860px){.nf-home .blog-grid{grid-template-columns:1fr}.nf-home .blog-feat-body{padding:30px 26px 32px}.nf-home .blog-head .wrap{padding-top:124px}}
