.blog-index,.blog-article{padding-top:64px;padding-bottom:100px}.blog-eyebrow{color:var(--violet-dark);letter-spacing:.1em;text-transform:uppercase;font-size:12px;font-weight:600}.blog-index h1{letter-spacing:-.045em;margin:20px 0;font-size:max(36px,min(5vw,64px));line-height:1.08}.blog-lead{max-width:750px;color:var(--muted);font-size:19px;line-height:1.65}.blog-preview{color:#665020;background:#fff8e7;border:1px solid #dccda4;border-radius:10px;padding:14px 18px;font-size:14px;line-height:1.6}.blog-grid{grid-gap:24px;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin-top:40px;display:grid}.blog-card{border:1px solid var(--line);background:var(--panel);border-radius:18px;overflow:hidden}.blog-card>a{height:100%;display:block}.blog-card img{-o-object-fit:contain;object-fit:contain;background:#eeebe5;width:100%;height:260px}.blog-card__body{padding:24px}.blog-card h2{letter-spacing:-.025em;font-size:23px;line-height:1.3}.blog-card p{color:var(--muted);line-height:1.7}.blog-card__read{color:var(--violet-dark);margin-top:24px;font-weight:600;display:block}.blog-card a:hover h2{color:var(--violet-dark)}.blog-card a:focus-visible,.blog-prose a:focus-visible,.blog-toc a:focus-visible{outline:3px solid var(--violet);outline-offset:4px}.blog-back{color:var(--muted);margin-bottom:24px;display:inline-block}.blog-article__header{max-width:850px;padding-top:22px;padding-bottom:38px}.blog-article__header h1{letter-spacing:-.035em;word-wrap:anywhere;font-size:max(32px,min(4.5vw,54px));line-height:1.14}.blog-byline{color:var(--muted);font-size:14px}.blog-reading-layout{grid-gap:56px;grid-template-columns:240px minmax(0,760px);align-items:start;gap:56px;display:grid}.blog-toc{max-height:calc(100vh - 128px);padding:20px 20px 20px 0;font-size:14px;line-height:1.5;position:sticky;top:104px;overflow-y:auto}.blog-toc ol{padding:0;list-style:none}.blog-toc li{color:var(--muted);margin-top:14px;margin-bottom:14px}.blog-toc a:hover{color:var(--violet-dark)}.blog-prose{word-wrap:anywhere;min-width:0;font-size:17px;line-height:1.85}.blog-prose>:first-child{margin-top:0}.blog-prose h2{letter-spacing:-.025em;margin-top:2.2em;font-size:29px;line-height:1.3}.blog-prose h3{margin-top:1.8em;font-size:21px;line-height:1.4}.blog-prose h2,.blog-prose h3{scroll-margin-top:100px}.blog-prose a,.blog-empty a{color:var(--violet-dark);text-underline-offset:3px;-webkit-text-decoration:underline;text-decoration:underline}.blog-prose p,.blog-prose ul,.blog-prose ol{margin-top:1.25em;margin-bottom:1.25em}.blog-prose li+li{margin-top:.6em}.blog-prose img{border-radius:12px;width:auto;max-width:100%;height:auto;max-height:780px;margin:32px auto 16px}.blog-prose p:has(>em:only-child){color:var(--muted);font-size:14px;line-height:1.65}.blog-prose pre{border:1px solid var(--line);border-radius:12px;padding:24px;font-size:14px;line-height:1.75;overflow-x:auto}.blog-prose table{border-collapse:collapse;width:100%;font-size:14px;line-height:1.6;display:block;overflow-x:auto}.blog-prose th,.blog-prose td{border:1px solid var(--line);text-align:left;vertical-align:top;min-width:140px;padding:14px}.blog-prose th{background:#efedf6}@media (width<=960px){.blog-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.blog-reading-layout{grid-template-columns:minmax(0,1fr);gap:24px}.blog-toc{border-top:1px solid var(--line);border-bottom:1px solid var(--line);max-height:none;padding:20px 0;position:static}}@media (width<=600px){.blog-index,.blog-article{padding-top:36px}.blog-grid{grid-template-columns:minmax(0,1fr)}.blog-prose{font-size:16px}.blog-prose h2{font-size:25px}.blog-prose pre{padding:16px}}.blog-languages{flex-wrap:wrap;gap:8px 16px;margin-bottom:24px;font-size:14px;display:flex}.blog-languages a{border:1px solid var(--line);border-radius:6px;padding:6px 10px}.blog-languages a[aria-current=page]{color:var(--violet-dark);background:var(--panel);font-weight:600}.blog-languages a:focus-visible{outline:3px solid var(--violet);outline-offset:3px}html:lang(zh) .blog-prose,html:lang(ja) .blog-prose{line-height:1.95}.blog-demo{border:1px solid var(--line);background:var(--panel);border-radius:16px;margin-bottom:32px;overflow:hidden}.blog-demo img{border-radius:0;width:100%;max-height:none;margin:0;display:block}.blog-demo>div{padding:20px 24px}.blog-demo p{margin:8px 0}.blog-demo .blog-demo__note{color:var(--muted);font-size:14px}
