.blog{background:var(--cream)}.blog-main{background:var(--cream);flex:1;padding:72px 0 120px}.blog-container{width:100%;max-width:1200px;margin:0 auto;padding:0 24px}.post-header,.post-layout,.post-footer{grid-template-columns:minmax(0,720px) 220px;justify-content:center;column-gap:64px;display:grid}.post:not(:has(.post-toc)) :is(.post-header,.post-layout,.post-footer){grid-template-columns:minmax(0,720px)}.post-header>*,.post-footer>*{grid-column:1}.blog-hero{padding:88px 0 48px}.blog-label{--dot:var(--pink);color:var(--ink-sub)}.blog-hero-title{letter-spacing:-.045em;word-break:keep-all;font-size:56px;font-weight:700;line-height:1.2}.blog-hero-desc{color:var(--ink-sub);word-break:keep-all;margin-top:16px;font-size:19px}.blog-back{color:var(--ink-sub);margin-bottom:28px;font-size:15px;font-weight:500;text-decoration:none;display:inline-block}.blog-back:hover{color:var(--ink)}.blog-tags,.tag-list{flex-wrap:wrap;gap:8px;list-style:none;display:flex}.blog-tags{margin-top:36px}.tag{color:var(--ink);background:#01237b0f;border-radius:999px;align-items:center;gap:6px;padding:6px 14px;font-size:14px;font-weight:500;text-decoration:none;transition:background .2s;display:inline-flex}.tag:hover{background:#01237b1f}.tag span{color:var(--ink-sub);font-weight:400}.tag.active{background:var(--navy);color:#fff}.tag.active span{color:var(--on-dark-sub)}.blog-list{flex-direction:column;gap:20px;display:flex}.blog-empty{color:var(--ink-sub)}.post-card{border-radius:var(--radius-card);background:#fff;grid-template-columns:minmax(0,1fr);transition:transform .2s,box-shadow .2s;display:grid;overflow:hidden}.post-card:has(.post-card-cover){grid-template-columns:320px minmax(0,1fr)}.post-card:hover{transform:translateY(-2px);box-shadow:0 16px 40px #01237b14}.post-card-cover img{object-fit:cover;width:100%;height:100%;display:block}.post-card-body{padding:36px 40px}.post-meta{color:var(--ink-sub);flex-wrap:wrap;align-items:center;gap:8px;font-size:14px;display:flex}.post-draft{background:var(--yellow);color:var(--navy);border-radius:6px;padding:2px 8px;font-size:12px;font-weight:700}.post-card-title{letter-spacing:-.03em;word-break:keep-all;margin-top:12px;font-size:28px;font-weight:700;line-height:1.35}.post-card-title a{text-decoration:none}.post-card{position:relative}.post-card-title a:after{content:"";position:absolute;inset:0}.post-card .tag{z-index:1;position:relative}.post-card-desc{color:var(--ink-sub);word-break:keep-all;margin-top:10px;font-size:17px;line-height:1.65}.post-card-foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:24px;display:flex}.post-authors{color:var(--ink);font-size:14px;font-weight:600}.post-header{padding-top:72px}.post-title{letter-spacing:-.045em;word-break:keep-all;font-size:48px;font-weight:700;line-height:1.25}.post-desc{color:var(--ink-sub);word-break:keep-all;margin-top:16px;font-size:20px;line-height:1.6}.post-header .post-meta{margin-top:28px}.post-header .tag-list{margin-top:16px}.post-header:after{content:"";border-bottom:1px solid var(--line);grid-column:1;margin-top:48px}.post-cover{margin-top:48px}.post-cover img{border-radius:var(--radius-card);width:100%;display:block}.post-layout{margin-top:8px}.post-toc{grid-area:1/2;align-self:start;font-size:14px;position:sticky;top:112px}.post-toc-title{margin-bottom:12px;font-weight:700}.post-toc ol{border-left:1px solid var(--line);flex-direction:column;gap:8px;padding-left:12px;list-style:none;display:flex}.post-toc a{color:var(--ink-sub);word-break:keep-all;text-decoration:none}.post-toc a:hover{color:var(--ink)}.post-toc .toc-depth-3{padding-left:12px}.post-footer{margin-top:80px}.author-box{background:#fff;border-radius:20px;padding:28px 32px}.author-box+.author-box{margin-top:12px}.author-name{font-size:17px;font-weight:700}.author-name a{text-decoration:none}.author-role,.author-bio,.author-github{color:var(--ink-sub);margin-top:4px;font-size:15px}.author-github{display:inline-block}.post-nav{grid-template-columns:1fr 1fr;gap:12px;margin-top:32px;display:grid}.post-nav-link{border:1px solid var(--line);word-break:keep-all;border-radius:20px;flex-direction:column;gap:6px;padding:24px 28px;font-weight:600;text-decoration:none;display:flex}.post-nav-link span{color:var(--ink-sub);font-size:13px;font-weight:500}.post-nav-link.next{text-align:right}.post-nav-link:hover{background:#fff}.prose{color:var(--ink);word-break:keep-all;overflow-wrap:break-word;font-size:17px;line-height:1.85}.prose>*+*{margin-top:1.25em}.prose h2,.prose h3,.prose h4{letter-spacing:-.03em;scroll-margin-top:96px;line-height:1.4}.prose h2{margin-top:2.6em;font-size:30px}.prose h3{margin-top:2em;font-size:23px}.prose h4{margin-top:1.8em;font-size:19px}.prose h2+*,.prose h3+*,.prose h4+*{margin-top:.75em}.prose a{color:var(--blue);text-underline-offset:3px}.prose strong{font-weight:700}.prose ul,.prose ol{padding-left:1.4em}.prose li+li{margin-top:.4em}.prose li::marker{color:var(--ink-sub)}.prose blockquote{border-left:3px solid var(--pink);color:var(--ink-sub);padding:4px 0 4px 20px}.prose hr{border:0;border-top:1px solid var(--line);margin:3em 0}.prose img{border-radius:16px}.prose :not(pre)>code{background:#01237b12;border-radius:6px;padding:.15em .4em;font-size:.88em}.prose table{border-collapse:collapse;width:100%;font-size:15px;line-height:1.6;display:block;overflow-x:auto}.prose th,.prose td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:12px 14px}.prose th{border-bottom-color:var(--ink);white-space:nowrap;font-weight:700}.prose .expressive-code{margin-top:1.5em;margin-bottom:.25em}.callout{--callout:var(--blue);background:#fff;border-radius:16px;padding:20px 24px;font-size:16px}.callout-tip{--callout:#1f9d74}.callout-warn{--callout:var(--coral)}.callout-title{align-items:center;gap:8px;margin-bottom:4px;font-weight:700;display:flex}.callout-title:before{content:"";background:var(--callout);border-radius:50%;width:8px;height:8px}.callout>:not(.callout-title)+*{margin-top:.6em}@media (width<=1024px){.post :is(.post-header,.post-layout,.post-footer){grid-template-columns:minmax(0,720px)}.post-toc{display:none}}@media (width<=768px){.blog-main{padding-bottom:80px}.blog-hero{padding:56px 0 32px}.blog-hero-title{font-size:38px}.blog-hero-desc{font-size:17px}.post-card:has(.post-card-cover){grid-template-columns:minmax(0,1fr)}.post-card-cover{aspect-ratio:16/9}.post-card-body{padding:28px 24px}.post-card-title{font-size:22px}.post-card-desc{font-size:16px}.post-header{padding-top:48px}.post-header:after{margin-top:36px}.post-title{font-size:32px}.post-desc{font-size:17px}.prose{font-size:16px}.prose h2{font-size:24px}.prose h3{font-size:20px}.post-nav{grid-template-columns:minmax(0,1fr)}.post-nav-link.next{text-align:left}}
