.blog_blogRoot__iPfb_{--blog-theme:#ffffff;--blog-entry:#ffffff;--blog-primary:rgb(30,30,30);--blog-secondary:rgb(108,108,108);--blog-tertiary:rgb(214,214,214);--blog-content:rgb(31,31,31);--blog-border:rgb(238,238,238);--blog-nav-bg:rgba(255,255,255,0.82);--blog-accent:rgb(37,99,235);--blog-code-bg:rgb(28,29,33);--blog-code-inline-bg:rgb(27,31,35,0.05);--blog-radius:8px;--blog-width:720px;--blog-gap:24px;box-sizing:border-box;width:100%;min-height:100vh;color:var(--blog-primary);background:var(--blog-theme);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:18px;line-height:1.6}.blog_blogRoot__iPfb_ *{box-sizing:border-box}html.dark .blog_blogRoot__iPfb_{--blog-theme:rgb(29,30,32);--blog-entry:rgb(46,46,51);--blog-primary:rgb(218,218,219);--blog-secondary:rgb(155,156,157);--blog-tertiary:rgb(65,66,68);--blog-content:rgb(196,196,197);--blog-border:rgb(51,51,51);--blog-nav-bg:rgba(29,30,32,0.82);--blog-accent:rgb(96,165,250);--blog-code-inline-bg:rgba(255,255,255,0.06);--blog-code-bg:rgb(13,17,23)}.blog_articleShell__PvDdp,.blog_shell__76_Pf,.blog_taxShell__XUtqJ{width:100%;margin:0 auto;padding:40px 24px 96px}.blog_nav__7bhok{position:sticky;top:0;z-index:20;border-bottom:1px solid var(--blog-border);background:var(--blog-nav-bg);backdrop-filter:saturate(180%) blur(12px)}.blog_navInner__wPCJA{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 20px;max-width:1100px;margin:0 auto;padding:12px 24px}.blog_brand__uF0ym{color:var(--blog-primary);font-size:20px;font-weight:800;letter-spacing:-.01em;text-decoration:none}.blog_menu__UWWbG{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px}.blog_navRight__6mFYF{display:flex;align-items:center;gap:8px}.blog_navToggle__jRDzS{display:none;align-items:center;justify-content:center;width:38px;height:34px;border:1px solid var(--blog-border);border-radius:8px;background:var(--blog-entry);color:inherit;font-size:18px;line-height:1;cursor:pointer;transition:border-color .15s ease}.blog_navToggle__jRDzS:hover{border-color:var(--blog-secondary)}.blog_menuLink__iWJeI{padding:6px 10px;border-radius:6px;color:var(--blog-secondary);font-size:14px;text-decoration:none;white-space:nowrap;transition:color .15s ease,background .15s ease}.blog_notice__IiJmA{display:flex;align-items:flex-start;gap:12px;max-width:1100px;margin:0 auto 32px;padding:14px 16px 14px 18px;border:1px solid var(--blog-border);border-left:3px solid var(--blog-accent);border-radius:var(--blog-radius);background:var(--blog-entry)}.blog_noticeBody__jW0p2{flex:1;margin:0;color:var(--blog-secondary);font-size:15px;line-height:1.7}.blog_noticeBody__jW0p2 a{color:var(--blog-primary);font-weight:600;text-decoration:underline;text-decoration-color:var(--blog-tertiary);text-underline-offset:3px}.blog_noticeBody__jW0p2 a:hover{color:var(--blog-accent);text-decoration-color:var(--blog-accent)}.blog_noticeClose___yZ5e{flex-shrink:0;width:32px;height:32px;margin-top:-2px;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--blog-secondary);font-size:16px;line-height:1;cursor:pointer;transition:color .15s ease,background .15s ease,border-color .15s ease}.blog_noticeClose___yZ5e:hover{border-color:var(--blog-border)}.blog_menuLinkActive__QYtGE,.blog_menuLink__iWJeI:hover,.blog_noticeClose___yZ5e:hover{color:var(--blog-primary);background:var(--blog-code-inline-bg)}.blog_menuLinkActive__QYtGE{font-weight:600}.blog_themeToggle__8Gnc_{margin-left:4px;width:34px;height:34px;border:1px solid var(--blog-border);border-radius:8px;background:var(--blog-entry);color:inherit;font-size:16px;line-height:1;cursor:pointer;transition:border-color .15s ease}.blog_themeToggle__8Gnc_:hover{border-color:var(--blog-secondary)}@media (max-width:767px){.blog_navInner__wPCJA{flex-wrap:nowrap}.blog_navToggle__jRDzS{display:inline-flex}.blog_menu__UWWbG{position:absolute;top:100%;left:0;right:0;display:none;flex-direction:column;align-items:stretch;gap:2px;padding:8px 16px 14px;background:var(--blog-theme);border-bottom:1px solid var(--blog-border);box-shadow:0 14px 28px rgba(0,0,0,.16)}.blog_menuOpen__OvM3T{display:flex}.blog_menuLink__iWJeI{padding:11px 12px;font-size:15px;border-radius:8px}}.blog_hero__WLLgl{max-width:var(--blog-width);margin:0 auto 40px}.blog_backLink__esxuc{display:inline-block;margin-bottom:20px;color:var(--blog-secondary);font-size:15px;text-decoration:none}.blog_backLink__esxuc:hover{color:var(--blog-primary)}.blog_heroTitle__avXya{margin:0;font-size:40px;font-weight:700;letter-spacing:-.02em}.blog_heroDescription__Zf2wG{margin:12px 0 0;color:var(--blog-secondary);font-size:18px}.blog_heroIntro__F_DsA{margin:8px 0 0;color:var(--blog-secondary);font-size:16px}.blog_empty__oeFlF{max-width:var(--blog-width);margin:40px auto;color:var(--blog-secondary);text-align:center}.blog_grid__4VF_V{display:grid;gap:var(--blog-gap);max-width:1100px;margin:0 auto;grid-template-columns:repeat(3,minmax(0,1fr))}@media (max-width:1023px){.blog_grid__4VF_V{grid-template-columns:repeat(2,minmax(0,1fr));max-width:var(--blog-width)}}@media (max-width:699px){.blog_grid__4VF_V{grid-template-columns:1fr}}.blog_entry__Py8xO{position:relative;display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--blog-border);border-radius:var(--blog-radius);background:var(--blog-entry);color:inherit;text-decoration:none;transition:transform .18s ease,box-shadow .18s ease}.blog_entry__Py8xO:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(0,0,0,.08)}.blog_entryCover__p7Vl_{margin:0;aspect-ratio:16/9;overflow:hidden;background:var(--blog-tertiary)}.blog_entryCover__p7Vl_ img{width:100%;height:100%;max-height:240px;object-fit:cover}.blog_entryBody__tQyaU{display:flex;flex:1;flex-direction:column;padding:20px}.blog_entryTitle__je1t4{margin:0;font-size:22px;font-weight:700;line-height:1.3}.blog_entryTitleLink__q9y8Q{color:inherit;text-decoration:none}.blog_entryTitleLink__q9y8Q:after{content:"";position:absolute;inset:0;z-index:1}.blog_entryTitleLink__q9y8Q:hover{color:var(--blog-accent)}.blog_entryExcerpt__ta8aJ{margin:10px 0 0;color:var(--blog-secondary);font-size:15px;line-height:1.6;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.blog_entryFooter__MUCi7{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:auto;padding-top:16px;color:var(--blog-secondary);font-size:13px}.blog_entryCategory__he0aW{position:relative;z-index:2;color:var(--blog-secondary);text-decoration:none}.blog_entryCategory__he0aW:hover{color:var(--blog-accent);text-decoration:underline}.blog_pagination__GtfcC{display:flex;align-items:center;justify-content:center;gap:8px;max-width:1100px;margin:40px auto 0;flex-wrap:wrap}.blog_pageLink__fZ8w2{display:inline-flex;align-items:center;justify-content:center;min-width:40px;height:40px;padding:0 12px;border:1px solid var(--blog-border);border-radius:10px;color:var(--blog-primary);background:var(--blog-entry);text-decoration:none;font-size:16px;font-weight:600;transition:border-color .15s ease,color .15s ease,background .15s ease}.blog_pageLink__fZ8w2:hover{border-color:var(--blog-accent);color:var(--blog-accent)}.blog_pageDisabled__Hy9dG{opacity:.4;pointer-events:none}.blog_pageNumbers__jK1uW{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:center}.blog_pageNum__NNOI0{display:inline-flex;align-items:center;justify-content:center;min-width:40px;height:40px;padding:0 10px;border:1px solid var(--blog-border);border-radius:10px;color:var(--blog-primary);background:var(--blog-entry);text-decoration:none;font-size:15px;font-weight:600;transition:border-color .15s ease,color .15s ease,background .15s ease}.blog_pageNum__NNOI0:hover{border-color:var(--blog-accent);color:var(--blog-accent)}.blog_pageNumActive__00wLJ{border-color:var(--blog-accent);background:var(--blog-accent);color:#fff;cursor:default}.blog_pageEllipsis__ehakn{display:inline-flex;align-items:flex-end;min-width:24px;justify-content:center;color:var(--blog-secondary)}.blog_pageInfo__KjNbg{color:var(--blog-secondary);font-size:13px}.blog_footer__DUK6O{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;max-width:1100px;margin:48px auto 0;padding-top:24px;border-top:1px solid var(--blog-border);color:var(--blog-secondary);font-family:SF Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:11px}.blog_footer__DUK6O a{color:var(--blog-secondary);text-decoration:none;transition:color .15s ease}.blog_footer__DUK6O a:hover{color:var(--blog-primary)}.blog_articleNav__NSMpx{display:flex;justify-content:space-between;max-width:var(--blog-width);margin:0 auto 28px;font-size:15px}.blog_articleNav__NSMpx a{color:var(--blog-secondary);text-decoration:none}.blog_articleNav__NSMpx a:hover{color:var(--blog-primary)}.blog_postSingle__8MVD_{max-width:var(--blog-width);margin:0 auto}.blog_postHeader___1Ya7{margin-bottom:24px}.blog_breadcrumbs__UvQJ6{display:flex;gap:6px;margin-bottom:12px;color:var(--blog-secondary);font-size:14px}.blog_breadcrumbs__UvQJ6 a{color:var(--blog-secondary);text-decoration:none}.blog_breadcrumbs__UvQJ6 a:hover{color:var(--blog-primary)}.blog_postTitle__3NcWc{margin:0;font-size:40px;font-weight:700;line-height:1.2;letter-spacing:-.02em}.blog_postMeta__Kp_5_{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px;color:var(--blog-secondary);font-size:14px}.blog_postMetaTags__t5NyQ{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px}.blog_metaSep__KE2E_{color:var(--blog-tertiary)}.blog_metaLink__yMPcw{color:var(--blog-secondary);text-decoration:none}.blog_metaLink__yMPcw:hover{color:var(--blog-accent);text-decoration:underline}.blog_postCover__hAPYK{margin:0 0 28px;border-radius:var(--blog-radius);overflow:hidden}.blog_postCover__hAPYK img{width:100%;height:auto;display:block}.blog_postContent__ZUVI8{color:var(--blog-content);font-size:18px;line-height:1.75;word-wrap:break-word}.blog_postContent__ZUVI8 h1,.blog_postContent__ZUVI8 h2,.blog_postContent__ZUVI8 h3,.blog_postContent__ZUVI8 h4,.blog_postContent__ZUVI8 h5,.blog_postContent__ZUVI8 h6{margin:32px 0 16px;font-weight:700;line-height:1.3;color:var(--blog-primary)}.blog_postContent__ZUVI8 h1{font-size:32px}.blog_postContent__ZUVI8 h2{font-size:28px;padding-bottom:6px;border-bottom:1px solid var(--blog-border)}.blog_postContent__ZUVI8 h3{font-size:22px}.blog_postContent__ZUVI8 h4{font-size:18px}.blog_postContent__ZUVI8 p{margin:0 0 20px}.blog_postContent__ZUVI8 a{color:var(--blog-primary);text-decoration:underline;text-decoration-color:var(--blog-tertiary);text-underline-offset:3px}.blog_postContent__ZUVI8 a:hover{text-decoration-color:var(--blog-primary)}.blog_postContent__ZUVI8 ol,.blog_postContent__ZUVI8 ul{margin:0 0 20px;padding-left:26px}.blog_postContent__ZUVI8 li{margin:6px 0}.blog_postContent__ZUVI8 img{max-width:100%;height:auto;margin:8px 0;border-radius:var(--blog-radius)}.blog_postContent__ZUVI8 blockquote{margin:20px 0;padding:4px 18px;border-left:3px solid var(--blog-primary);color:var(--blog-secondary);font-style:italic}.blog_postContent__ZUVI8 hr{margin:32px 0;border:none;border-top:1px solid var(--blog-border)}.blog_postContent__ZUVI8 code{padding:2px 6px;border-radius:4px;background:var(--blog-code-inline-bg);font-family:SF Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.9em}.blog_postContent__ZUVI8 pre{margin:20px 0;padding:16px 18px;border-radius:var(--blog-radius);background:var(--blog-code-bg);border:1px solid var(--blog-border);overflow-x:auto;font-size:15px;line-height:1.5}.blog_postContent__ZUVI8 pre code{padding:0;background:transparent;color:rgb(236,237,238);font-size:inherit}.blog_postContent__ZUVI8 table{width:100%;margin:20px 0;border-collapse:collapse;font-size:15px;overflow-x:auto;display:block}.blog_postContent__ZUVI8 td,.blog_postContent__ZUVI8 th{padding:8px 12px;border:1px solid var(--blog-border);text-align:left}.blog_postContent__ZUVI8 th{background:var(--blog-code-inline-bg);font-weight:600}.blog_postContent__ZUVI8 figure{margin:20px 0}.blog_postContent__ZUVI8 figure img{width:100%}.blog_postFooter__Ey6lL{margin-top:48px;padding-top:24px;border-top:1px solid var(--blog-border)}.blog_postTags__Gfxfw{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 24px;padding:0;list-style:none}.blog_postTags__Gfxfw li{border:1px solid var(--blog-border);border-radius:999px;color:var(--blog-secondary);font-size:13px}.blog_postTags__Gfxfw li a{display:inline-block;padding:4px 12px;color:inherit;text-decoration:none}.blog_postTags__Gfxfw li:hover{border-color:var(--blog-accent)}.blog_postTags__Gfxfw li a:hover{color:var(--blog-accent)}.blog_postNav__Ji_uq{display:flex;justify-content:space-between;gap:16px;font-size:15px}.blog_navNext__Uu6N4,.blog_navPrev__P_ehd{max-width:48%;color:var(--blog-secondary);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.blog_navNext__Uu6N4{text-align:right}.blog_navNext__Uu6N4:hover,.blog_navPrev__P_ehd:hover{color:var(--blog-primary)}.blog_articleFooter__FxDub{max-width:var(--blog-width);margin:48px auto 0;font-size:15px}.blog_articleFooter__FxDub a{color:var(--blog-secondary);text-decoration:none}.blog_articleFooter__FxDub a:hover{color:var(--blog-primary)}.blog_progressTrack__Nwk4y{position:absolute;left:0;right:0;top:100%;height:3px;overflow:hidden;pointer-events:none}.blog_progressBar__hVHtU{height:3px;background:var(--blog-accent);transition:width .1s linear}.blog_toc__i3HvR{max-width:var(--blog-width);margin:0 auto 28px;padding:12px 18px;border:1px solid var(--blog-border);border-radius:var(--blog-radius);background:var(--blog-entry)}.blog_tocSummary__hVQMw{cursor:pointer;color:var(--blog-primary);font-size:15px;font-weight:600;user-select:none}.blog_tocList__Z1nVg{margin:12px 0 0;padding:0;list-style:none;font-size:14px;line-height:1.5}.blog_tocItem__0WeNr{margin:4px 0}.blog_tocItem__0WeNr a{color:var(--blog-secondary);text-decoration:none}.blog_tocItem__0WeNr a:hover{color:var(--blog-primary);text-decoration:underline}.blog_tocItem__0WeNr[data-level="3"]{padding-left:16px}.blog_tocItem__0WeNr[data-level="4"]{padding-left:32px}.blog_preWrap__RYZRz{position:relative}.blog_copyButton__JNqgb{position:absolute;top:8px;right:8px;padding:3px 10px;border:1px solid rgba(255,255,255,.18);border-radius:6px;background:rgba(255,255,255,.08);color:rgb(220,221,222);font-size:12px;line-height:1.4;cursor:pointer;opacity:0;transition:opacity .15s ease,background .15s ease}.blog_copyButton__JNqgb:focus,.blog_preWrap__RYZRz:hover .blog_copyButton__JNqgb{opacity:1}.blog_copyButton__JNqgb:hover{background:rgba(255,255,255,.16)}.blog_copyButton__JNqgb:active{transform:scale(.94)}.blog_copyButtonDone__n_7pK{opacity:1;border-color:rgba(63,185,80,.55);background:rgba(63,185,80,.24);color:rgb(198,255,203)}.blog_taxShell__XUtqJ{max-width:var(--blog-width)}.blog_taxTitle__vDxjf{margin:0 0 8px;font-size:34px;font-weight:800;letter-spacing:-.02em}.blog_taxSubtitle__OOACY{margin:0 0 32px;color:var(--blog-secondary);font-size:16px}.blog_termCloud__Z_L4b{display:flex;flex-wrap:wrap;gap:10px}.blog_termChip__LbQeZ{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border:1px solid var(--blog-border);border-radius:999px;background:var(--blog-entry);color:var(--blog-primary);font-size:15px;text-decoration:none;transition:border-color .15s ease,transform .15s ease}.blog_termChip__LbQeZ:hover{border-color:var(--blog-accent);transform:translateY(-1px)}.blog_termCount__1_Q7m{color:var(--blog-secondary);font-size:13px}.blog_archiveYear__hjV6p{margin:36px 0 12px;font-size:22px;font-weight:700}.blog_archiveList__6I73A{margin:0;padding:0;list-style:none}.blog_archiveItem__yDVj4{display:flex;gap:14px;align-items:baseline;padding:8px 0;border-bottom:1px dashed var(--blog-border)}.blog_archiveDate__Subhc{flex-shrink:0;width:56px;color:var(--blog-secondary);font-size:14px;font-variant-numeric:tabular-nums}.blog_archiveLink__H94sG{color:var(--blog-primary);text-decoration:none}.blog_archiveLink__H94sG:hover{color:var(--blog-accent);text-decoration:underline}.blog_searchBox__ske3c{width:100%;padding:12px 16px;margin-bottom:24px;border:1px solid var(--blog-border);border-radius:var(--blog-radius);background:var(--blog-entry);color:var(--blog-primary);font-size:16px}.blog_searchBox__ske3c:focus{outline:none;border-color:var(--blog-accent)}.blog_searchResults__wSo5R{margin:0;padding:0;list-style:none}.blog_searchResult__UCLPi{padding:14px 0;border-bottom:1px solid var(--blog-border)}.blog_searchResult__UCLPi a{color:var(--blog-primary);font-size:18px;font-weight:600;text-decoration:none}.blog_searchResult__UCLPi a:hover{color:var(--blog-accent)}.blog_searchMeta__fvlC2{margin:4px 0 0;color:var(--blog-secondary);font-size:13px}.blog_searchExcerpt__m2QQL{margin:6px 0 0;color:var(--blog-secondary);font-size:14px;line-height:1.5}.blog_emptyState__LIYZo{margin:40px 0;color:var(--blog-secondary);text-align:center}