.blog-shell{background:#fafaf9;color:#18181b;min-height:100vh;font-family:Inter,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif;-webkit-font-smoothing:antialiased;line-height:normal}.blog-main{--paper:#fafaf9;--ink:#18181b;--muted:#71717a;--line:#e4e4e7;--accent:#027368}.blog-main *{box-sizing:border-box}.blog-main a{color:inherit;text-decoration:none}.blog-main button,.blog-main input,.blog-main select{font:inherit}.blog-main a,.blog-main button,.blog-main summary{touch-action:manipulation}.blog-main button,.blog-main select,.blog-main summary{cursor:pointer}.blog-main button{color:inherit}.blog-main button:disabled{opacity:.4;cursor:not-allowed}.blog-main a:focus-visible,.blog-main button:focus-visible,.blog-main input:focus-visible,.blog-main select:focus-visible,.blog-main summary:focus-visible{outline:2px solid var(--accent);outline-offset:5px}.blog-main .wrap{max-width:1160px;width:calc(100% - 80px);margin:auto}.blog-main .text-button{background:none;border:0;padding:5px;font-size:13px}.blog-main .button{border:1px solid var(--line);background:white;border-radius:999px;padding:12px 21px;font-size:13px;display:inline-flex;justify-content:center;align-items:center;gap:14px;transition:background .2s,transform .2s}.blog-main .button:hover{background:#f0f0f0}.blog-main .button.dark{background:var(--ink);color:white;border-color:var(--ink)}.blog-main .button.dark:hover{background:#3f3f46}.blog-main .eyebrow{display:block;font-size:10px;letter-spacing:2px;font-weight:600;color:var(--muted)}.blog-main .hero{padding:80px 0 52px;border-bottom:1px solid var(--line);position:relative}.blog-main .hero h1{font-size:68px;font-weight:350;letter-spacing:-3px;line-height:1.15;margin:20px 0}.blog-main .hero p{font-size:16px;line-height:1.9;color:var(--muted);margin:0}.blog-main .hero-index{position:absolute;right:0;top:94px;font-size:12px;color:#a1a1aa;writing-mode:vertical-rl;letter-spacing:4px}.blog-main .list-toolbar{display:flex;align-items:center;justify-content:space-between;gap:24px;margin:32px 0}.blog-main .result-count{font-size:12px;color:var(--muted)}.blog-main .search{display:flex;align-items:center;gap:10px}.blog-main .search-field{display:flex;align-items:center;gap:12px;border-bottom:1px solid #a1a1aa;padding:10px 0}.blog-main .search-field span{font-size:22px}.blog-main .search input{border:0;background:transparent;width:220px;outline-offset:2px;font-size:13px;color:var(--ink)}.blog-main .sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.blog-main .grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:40px 28px}.blog-main .card{min-width:0}.blog-main .cover{height:auto;aspect-ratio:1.58;overflow:hidden;position:relative;border-radius:10px;background:#eeefed;display:flex;align-items:center;justify-content:center;isolation:isolate}.blog-main .cover:after{position:absolute;bottom:15px;left:19px;content:"DEEPFLOW / NOTES";font-size:8px;letter-spacing:2px;color:currentColor;opacity:.48}.blog-main .cover .art{transition:transform .45s}.blog-main .card:hover .cover .art{transform:scale(1.045)}.blog-main .card:hover h2{color:var(--accent)}.blog-main .card time{display:block;color:var(--muted);font-size:11px;letter-spacing:.3px;margin:23px 0 11px}.blog-main .card h2{font-size:21px;letter-spacing:-.6px;font-weight:500;line-height:1.55;margin:0 0 11px;-webkit-line-clamp:2;transition:color .2s}.blog-main .card h2,.blog-main .card p{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}.blog-main .card p{font-size:13px;line-height:1.9;color:var(--muted);margin:0;-webkit-line-clamp:3}.blog-main .read{font-size:11px;display:flex;align-items:center;gap:9px;margin-top:20px}.blog-main .read span{transition:transform .2s}.blog-main .card:hover .read span{transform:translateX(4px)}.blog-main .cover.placeholder{background:#f1f1ef;color:#90938f}.blog-main .pagination{gap:30px;margin:60px 0 85px;font-size:12px;color:var(--muted)}.blog-main .empty,.blog-main .pagination{display:flex;justify-content:center;align-items:center}.blog-main .empty{min-height:340px;flex-direction:column;gap:17px;text-align:center}.blog-main .empty .symbol{width:62px;height:62px;border:1px solid var(--line);border-radius:50%;display:grid;place-items:center;font-size:25px;color:var(--muted)}.blog-main .empty h2{font-size:23px;font-weight:400;margin:6px 0}.blog-main .empty p{margin:0;color:var(--muted);font-size:14px}.blog-main .skeleton{height:300px;background:linear-gradient(100deg,#ededeb 35%,#f5f5f3 50%,#ededeb 65%);background-size:300% 100%;animation:pulse 1.5s infinite;border-radius:10px}@keyframes pulse{to{background-position:100% 0}}.blog-main .breadcrumb{padding:35px 0;display:flex;gap:13px;font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden}.blog-main .breadcrumb span:last-child{overflow:hidden;text-overflow:ellipsis}.blog-main .article-head{max-width:830px;margin:22px auto 40px}.blog-main .article-head h1{font-size:46px;letter-spacing:-1.5px;font-weight:450;line-height:1.4;margin:20px 0}.blog-main .article-head .summary{font-size:17px;color:var(--muted);line-height:1.9;margin:0 0 24px}.blog-main .article-meta{display:flex;align-items:center;gap:18px;flex-wrap:wrap;font-size:11px;color:var(--muted)}.blog-main .language-status{margin-left:auto}.blog-main .language-status button{font-size:11px;text-decoration:underline}.blog-main .article-cover{max-width:830px;margin:0 auto 48px}.blog-main .article-cover .cover{aspect-ratio:2.5}.blog-main .article-cover .art{max-width:400px}.blog-main .reading{display:grid;grid-template-columns:minmax(0,720px) 190px;gap:70px;max-width:980px;margin:0 auto 60px}.blog-main .prose{font-size:16px;line-height:2;color:#48484f;min-width:0}.blog-main .prose h2{font-size:27px;font-weight:500;letter-spacing:-.5px;color:var(--ink);margin:45px 0 16px;scroll-margin-top:120px}.blog-main .prose h2:first-child{margin-top:0}.blog-main .prose h3{font-size:20px;color:var(--ink);font-weight:500;margin:30px 0 12px}.blog-main .prose h4{font-size:17px}.blog-main .prose p{margin:0 0 20px}.blog-main .prose blockquote{border-left:2px solid #6e9689;padding:10px 22px;background:#f0f3f0;margin:25px 0;font-size:15px}.blog-main .prose ul{padding-left:23px}.blog-main .prose li{padding-left:5px;margin:8px 0}.blog-main .prose a{text-decoration:underline;text-underline-offset:4px}.blog-main .prose figure{margin:28px 0}.blog-main .prose figcaption{font-size:11px;color:var(--muted);text-align:center;margin-top:10px}.blog-main .code{border:1px solid var(--line);border-radius:9px;overflow:hidden;margin:25px 0;background:#f1f2f0}.blog-main .code-head{padding:7px 17px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;font-size:10px;color:var(--muted)}.blog-main pre{overflow:auto;padding:20px;margin:0;font-size:12px;line-height:1.9;color:#315c50}.blog-main code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.blog-main .table-scroll{overflow:auto;margin:25px 0}.blog-main table{width:100%;border-collapse:collapse;font-size:13px;text-align:left;min-width:430px}.blog-main td,.blog-main th{border-bottom:1px solid var(--line);padding:13px 15px}.blog-main th{background:#efefed;color:var(--ink);font-weight:500}.blog-main .toc{align-self:start;position:sticky;top:116px;font-size:12px;border-left:1px solid var(--line);padding-left:24px}.blog-main .toc .eyebrow{margin:5px 0 20px}.blog-main .toc a{display:block;padding:7px 0;line-height:1.6;color:var(--muted)}.blog-main .toc a.current{color:var(--accent);font-weight:600}.blog-main .mobile-toc{display:none}.blog-main .article-actions{border-top:1px solid var(--line);padding-top:26px;margin-top:45px;display:flex;justify-content:space-between;align-items:center;font-size:12px}.blog-main .latest{border-top:1px solid var(--line);padding:45px 0 80px}.blog-main .latest-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:28px}.blog-main .latest-title h2{font-size:26px;font-weight:450;margin:0}.blog-main .latest-title a{font-size:12px;color:var(--muted)}.blog-main .prose{overflow-wrap:anywhere}@media(min-width:801px){.blog-main .article-cover .cover .node{transform:scale(1.3)}}@media(max-width:1000px){.blog-main .grid{grid-template-columns:repeat(2,minmax(0,1fr))}.blog-main .reading{gap:35px;grid-template-columns:minmax(0,1fr) 170px}.blog-main .hero h1{font-size:60px}.blog-main .article-head h1{font-size:40px}}@media(max-width:800px){.blog-main .reading{display:block;max-width:720px}.blog-main .toc{display:none}.blog-main .mobile-toc{display:block;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:15px 0;margin-bottom:30px;font-size:13px}.blog-main .mobile-toc a{display:block;padding:8px 0;color:var(--muted)}.blog-main .article-head{margin-top:10px}.blog-main .article-head h1{font-size:36px}.blog-main .article-cover{margin-bottom:28px}}@media(max-width:600px){.blog-main .wrap{width:calc(100% - 40px)}.blog-main .hero{padding:50px 0 30px}.blog-main .hero h1{font-size:51px;margin:18px 0;letter-spacing:-2px}.blog-main .hero p{font-size:14px;max-width:290px}.blog-main .hero-index{display:none}.blog-main .list-toolbar{flex-direction:column-reverse;align-items:stretch;gap:20px;margin:23px 0}.blog-main .search{width:100%}.blog-main .search-field{flex:1;min-width:0}.blog-main .search input{width:100%;min-width:0}.blog-main .search .button{padding:10px 15px}.blog-main .result-count{font-size:11px}.blog-main .grid{grid-template-columns:1fr;gap:34px}.blog-main .card h2{font-size:21px}.blog-main .card time{margin-top:18px}.blog-main .card .read{margin-top:14px}.blog-main .pagination{gap:20px;margin:45px 0 60px}.blog-main .pagination .button{padding:10px 15px}.blog-main .breadcrumb{padding:25px 0;font-size:10px}.blog-main .article-head h1{font-size:32px;letter-spacing:-1px;margin:16px 0}.blog-main .article-head .summary{font-size:15px}.blog-main .article-meta{font-size:10px;gap:10px}.blog-main .language-status{margin-left:0;flex-basis:100%}.blog-main .article-cover .cover{aspect-ratio:1.7}.blog-main .prose{font-size:15px;line-height:1.95}.blog-main .prose h2{font-size:24px}.blog-main .latest-title h2{font-size:23px}.blog-main .article-actions{gap:16px}}@media(prefers-reduced-motion:reduce){.blog-main *,.blog-main :after{transition:none!important;animation:none!important}}.blog-chrome{position:sticky;top:0;z-index:10}.blog-main .search{flex-wrap:wrap}.blog-main .search-label{font-size:12px;color:var(--muted)}.blog-main .copy-error,.blog-main .field-error{font-size:12px;color:#9f1239;margin-top:12px;display:block}.blog-main .card-image{width:100%;height:100%;object-fit:cover}.blog-main .content-image{max-width:100%;height:auto;display:block}.blog-main .article-cover:has(img){overflow:hidden;border-radius:10px}.blog-main .article-cover img{width:100%;max-height:525px;object-fit:contain}.blog-main .cover:has(img):after{content:none}.blog-main .placeholder strong{font-size:24px;font-weight:350;letter-spacing:-1px}.blog-main .card,.blog-main .summary,.blog-main h1{overflow-wrap:anywhere}.blog-main .pagination{height:auto}.blog-main .pagination [aria-disabled=true]{opacity:.4;cursor:not-allowed}.blog-main .list-bottom{height:70px}.blog-main .prose h2,.blog-main .prose h3,.blog-main .prose h4{scroll-margin-top:120px}.blog-main .prose ol{padding-left:23px;list-style:decimal}.blog-main .prose ul{list-style:disc}.blog-main .prose ul ul{list-style:circle}.blog-main .prose strong{font-weight:700}.blog-main .prose em{font-style:italic}.blog-main .mobile-toc a.nested,.blog-main .toc a.nested{padding-left:12px}.blog-main .reading.no-toc{display:block;max-width:720px}.blog-main .copy-error input{display:block;width:100%;padding:8px;border:1px solid var(--line)}.blog-main .article-actions{flex-wrap:wrap}.blog-main .copy-control{max-width:100%}.blog-main .code-head{align-items:center;gap:12px}.blog-main .prose input[type=checkbox]{margin-right:8px}.blog-main .language-status a{text-decoration:underline}.blog-main .latest-title h2{line-height:normal}.homepage-v5 .language-switch span[aria-disabled]{padding:5px 9px;border-radius:999px;font-size:11px;opacity:.4}@media(max-width:850px){.homepage-v5 .navlinks .nav-blog,.homepage-v5 .navlinks .nav-github{display:inline-flex}.homepage-v5 .navlinks{gap:14px}}@media(max-width:600px){.blog-main .search-label{flex-basis:100%}.blog-main .search input{width:100%}.blog-main .hero{padding:50px 0 30px}}.blog-main .cover>.cover{width:100%;height:100%}.blog-main .article-cover:not(:has(img)){display:none}.blog-main .language-status a{display:inline-block;padding:5px;font-size:11px}