main honox-island{display:contents}.post-meta{font-size:var(--fs-xs);color:var(--ink-2);flex-wrap:wrap;align-items:center;gap:4px 0;line-height:1.5;display:flex}.post-meta>:not(:last-child):after{content:"·";content:"·" / "";margin:0 9px}.post-tags{flex-wrap:wrap;gap:6px;display:flex}.posts{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;display:grid}.post{min-width:0;padding:var(--pad-card);background:var(--card);border:1px solid var(--rule);transition:border-color var(--dur-2) var(--ease-out);border-radius:16px;flex-direction:column;align-items:flex-start;display:flex;position:relative}.post-t{font-size:var(--fs-title);line-height:var(--lh-title);letter-spacing:-.005em;color:var(--ink);text-wrap:balance;margin-top:16px;font-weight:750;font-stretch:87.5%}.post-t a{padding-block:2px}.post-t a:after{content:"";z-index:1;border-radius:inherit;position:absolute;inset:0}.post-t a:focus-visible{outline:0}.post:has(.post-t a:focus-visible){outline:2px solid var(--focus,var(--ink));outline-offset:3px}@media (hover:hover){.post:has(.post-t a:hover){border-color:var(--ink)}}.post-x{max-width:var(--measure);font-size:var(--fs-body-s);color:var(--ink-2);margin-top:10px;line-height:1.55}.post>.post-meta,.post>.post-go{margin-top:auto;padding-top:20px}.post-go{color:var(--ink);align-items:center;gap:6px;font-size:15px;font-weight:600;display:inline-flex}.post[hidden]{display:none}.post-feat{grid-template-columns:minmax(0,6fr) minmax(0,5fr);align-items:center;gap:clamp(28px,4vw,64px);padding:clamp(24px,3.4vw,44px);display:grid}.post-feat>div{min-width:0}.post-feat .post-t{font-size:var(--fs-h2s);line-height:var(--lh-h2s);margin-top:20px;font-weight:800;font-stretch:72%}.post-feat .post-x{font-size:var(--fs-lead);margin-top:16px}.post-feat .post-meta{margin-top:22px}.post-feat .post-go{margin-top:26px}.prose{--lh-p:1.7;--fs-p:var(--fs-lead);--m:650px;font-size:var(--fs-p);line-height:var(--lh-p);color:var(--ink-80)}.prose>*{max-width:var(--m)}.prose>*+*{margin-top:1.15em}.prose h2{letter-spacing:-.008em;color:var(--ink);text-wrap:balance;scroll-margin-top:calc(var(--header-h) + 28px);margin-top:2.3em;font-size:clamp(27px,1.1vw + 20px,34px);font-weight:800;font-stretch:80%;line-height:1.08}.prose h3{font-size:var(--fs-title);color:var(--ink);text-wrap:balance;scroll-margin-top:calc(var(--header-h) + 28px);margin-top:1.9em;font-weight:700;font-stretch:92%;line-height:1.25}.prose :is(h2,h3)+*{margin-top:.65em}.prose b,.prose strong{color:var(--ink)}.prose a:not(.btn,.post-go,.vid-a){color:var(--ink);text-decoration:underline;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--rule-2);-webkit-text-decoration-color:var(--rule-2);text-decoration-color:var(--rule-2);text-underline-offset:.2em;transition:text-decoration-color var(--dur-2) var(--ease-out)}.prose a:not(.btn,.post-go,.vid-a):hover{text-decoration-color:currentColor}.prose :is(ul,ol)>li{padding-left:1.5em;position:relative}.prose :is(ul,ol)>li+li{margin-top:.55em}.prose ul>li:before{content:"";left:.3em;top:calc(var(--lh-p) * var(--fs-p) / 2 - 3px);background:var(--ink-2);border-radius:50%;width:6px;height:6px;position:absolute}.prose ol{counter-reset:step}.prose ol>li{counter-increment:step;padding-left:2.2em}.prose ol>li:before{content:counter(step);left:0;top:calc(var(--lh-p) * var(--fs-p) / 2 - 13px);border:2px solid var(--ink);width:26px;height:26px;color:var(--ink);border-radius:50%;place-items:center;font-size:13px;font-weight:700;line-height:1;display:grid;position:absolute}.prose li>*+*{margin-top:.7em}.prose li>.code{margin:.8em 0 1.1em}.prose .inline-code{overflow-wrap:anywhere;padding:.1em .36em;font-size:.8em}.prose .callout{font-size:var(--fs-body-m);color:var(--ink);line-height:1.65}.prose .note{margin-top:.8em}.prose blockquote{border-left:2px solid var(--rule-2);color:var(--ink);padding:2px 0 2px 18px}.prose blockquote>p+p{font-size:var(--fs-small);color:var(--ink-2);margin-top:.4em}.prose .code{margin-block:1.4em}.prose .code pre{white-space:pre-wrap;overflow-wrap:anywhere;padding:18px 20px 20px}.code .out{border-top:1px solid var(--panel-border);padding-top:12px;padding-bottom:16px}.code-bar .file{overflow-wrap:anywhere;min-width:0}.prose .table-card{margin-block:1.4em}.prose .table{font-size:var(--fs-body-s)}.prose .faq{margin-top:1em}.prose .faq summary{color:var(--ink)}.art-hero{padding:var(--sp-hero-top) 0 clamp(32px, 3.6vw, 52px)}.art-head{max-width:1000px;container-type:inline-size}.art-head .label{margin-bottom:0}.art-head .label a{text-decoration:underline;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--ink-30);-webkit-text-decoration-color:var(--ink-30);text-decoration-color:var(--ink-30);text-underline-offset:3px;margin-block:-4px;padding:4px 0;display:inline-block}.art-head .label a:hover{color:var(--ink);text-decoration-color:currentColor}.art-head .h1{margin-top:var(--gap-hero-label)}.art-head .lead{margin-top:var(--gap-hero);max-width:34em;font-size:var(--fs-lead-hero)}.byline{border-top:1px solid var(--rule);grid-template-columns:auto minmax(0,1fr);align-items:center;gap:12px 14px;margin-top:30px;padding-top:18px;display:grid}.byline .post-meta{font-size:var(--fs-small)}.byline-who{color:var(--ink);font-weight:600}.avatar{background:var(--ink);border-radius:50%;flex:none;place-items:center;width:36px;height:36px;display:grid}.avatar svg{width:18px;height:18px}.avatar svg path{stroke:var(--punch)}.art-main{padding-bottom:var(--sp-section)}.related .posts{margin-top:0}.art-grid{grid-template-columns:minmax(0,650px) minmax(200px,248px);align-items:start;gap:40px clamp(48px,8vw,128px);display:grid}.art-grid>*{min-width:0}.author{border:1px solid var(--rule);background:var(--card);font-size:var(--fs-body-m);border-radius:16px;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:4px 18px;margin-top:3em;padding:22px 24px;line-height:1.6;display:grid}.author .avatar{grid-row:span 3;width:44px;height:44px}.author .avatar svg{width:22px;height:22px}.author-k{font-size:var(--fs-xs);letter-spacing:.02em;color:var(--ink-2);font-weight:600;font-stretch:87.5%}.author-n{font-size:var(--fs-h4);line-height:var(--lh-h4);color:var(--ink);font-weight:700}.author p{color:var(--ink-2);margin-top:6px}.vid{margin-block:1.8em}.vid-a{aspect-ratio:16/9;border:1px solid var(--panel-border);background:var(--panel);color:var(--panel-ink);border-radius:16px;grid-template-rows:auto minmax(0,1fr) auto;gap:12px;padding:clamp(18px,2.4vw,28px);display:grid;overflow:hidden;container-type:inline-size}.vid-k{font-family:var(--mono);color:var(--panel-ink-60);font-size:12px;font-stretch:87.5%;line-height:1.4}.vid-t{letter-spacing:-.005em;text-wrap:balance;align-self:center;max-width:13em;font-size:clamp(22px,7cqi,44px);font-weight:800;font-stretch:72%;line-height:.98}.vid-foot{color:var(--panel-ink-60);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;font-size:13px;display:flex}.vid-go{color:var(--panel-ink);align-items:center;gap:12px;font-size:15px;font-weight:600;display:inline-flex}.vid-play{background:var(--punch);width:48px;height:48px;color:var(--on-punch);transition:scale var(--dur-2) var(--ease-out);border-radius:50%;flex:none;place-items:center;display:grid}.vid-play svg{width:16px;height:16px;margin-left:2px}@media (hover:hover){.vid-a:hover .vid-play{scale:1.06}}@container (width<=420px){.vid-foot .num{display:none}.vid-play{width:40px;height:40px}}.vid-cover{isolation:isolate;color:#fff;border-color:#0000;position:relative}.vid-cover:before{content:"";z-index:-1;background:linear-gradient(#0000008c 0%,#00000026 45%,#000000b3 100%);position:absolute;inset:0}.vid-img{z-index:-2;object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.vid-cover :is(.vid-k,.vid-foot){color:#ffffffc7}.vid-cover :is(.vid-t,.vid-go){color:#fff;text-shadow:0 1px 12px #00000073}.vid figcaption{font-size:var(--fs-xs);color:var(--ink-2);margin-top:10px;line-height:1.5}.prose .fig{margin-block:1.8em}.prose .fig img{border:1px solid var(--rule);border-radius:12px;width:100%;height:auto}.prose .fig figcaption{font-size:var(--fs-xs);color:var(--ink-2);margin-top:10px;line-height:1.5}html[lang=zh-CN] :is(.post-t,.prose h2,.prose h3,.vid-t){letter-spacing:0;font-weight:700;font-stretch:100%}html[lang=zh-CN] .post-feat .post-t{line-height:1.25}html[lang=zh-CN] .prose h2{line-height:1.3}html[lang=zh-CN] .prose{--lh-p:1.9;--m:648px}html[lang=zh-CN] .vid-t{line-height:1.25}html[lang=zh-CN] :is(.post-x,.author,.vid figcaption,.fig figcaption,.post-meta){line-height:1.75}html[lang=zh-CN] .author-k{letter-spacing:.08em}@media (width<=1100px){.art-grid{grid-template-columns:minmax(0,1fr)}}@media (width<=1000px){.posts{grid-template-columns:repeat(2,minmax(0,1fr))}.post-feat{grid-template-columns:minmax(0,1fr)}}@media (width<=640px){.posts{grid-template-columns:minmax(0,1fr)}.post{padding:22px 20px}.post-feat{padding:22px 20px 24px}.prose{--fs-p:var(--fs-body)}.prose .code pre{padding:16px;font-size:12px}.prose ol>li{padding-left:2.1em}.author{gap:4px 14px;padding:20px}}.lg-meta{font-size:var(--fs-small);color:var(--ink-2);flex-wrap:wrap;gap:6px 10px;margin-top:22px;line-height:1.5;display:flex}.lg-meta>span+span:before{content:"·";margin-right:10px}.lg-sum{width:100%;max-width:480px;padding:var(--pad-card);background:var(--card);border:1px solid var(--rule);filter:var(--lift);border-radius:16px;margin:0 0 0 auto}.lg-sum .label{margin-bottom:4px}.lg-sum li{border-bottom:1px solid var(--rule);font-size:var(--fs-body-s);color:var(--ink);align-items:flex-start;gap:12px;padding:13px 0;line-height:1.5;display:flex}.lg-sum li svg{width:14px;height:14px;color:var(--valid);flex:none;margin-top:.3em}.lg-sum-foot{font-size:var(--fs-xs);color:var(--ink-2);margin-top:14px;line-height:1.5}.lg-grid{grid-template-columns:minmax(0,4fr) minmax(0,8fr);align-items:start;gap:32px 64px;display:grid}.lg-doc{min-width:0}.lg-s{scroll-margin-top:calc(var(--header-h) + 24px)}.lg-s+.lg-s{border-top:1px solid var(--rule);margin-top:40px;padding-top:34px}.lg-h{gap:.45em;display:flex}.lg-n{font-variant-numeric:tabular-nums;min-width:1.25em;color:var(--ink-2);flex:none}.lg-s p,.lg-s ul{max-width:36em;font-size:var(--fs-body);color:var(--ink);text-wrap:pretty;margin-top:14px;line-height:1.6}.lg-s .lg-h+p,.lg-s .lg-h+ul{margin-top:18px}.lg-s li{padding-left:22px;position:relative}.lg-s li+li{margin-top:10px}.lg-s li:before{content:"";border:1.5px solid var(--ink-2);border-radius:50%;width:6px;height:6px;position:absolute;top:.62em;left:3px}.lg-s b{font-weight:650}.lg-s a{color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:var(--rule-2);-webkit-text-decoration-color:var(--rule-2);text-decoration-color:var(--rule-2);text-underline-offset:3px;overflow-wrap:anywhere}.lg-s a:hover{-webkit-text-decoration-color:var(--ink);-webkit-text-decoration-color:var(--ink);text-decoration-color:var(--ink)}html[lang=zh-CN] .lg-s :is(p,ul){line-height:1.8}html[lang=zh-CN] .lg-sum li{line-height:1.7}@media (width<=900px){.lg-grid{grid-template-columns:minmax(0,1fr)}.lg-sum{max-width:640px;margin:8px 0 0}}@media (width<=640px){.lg-meta{flex-direction:column;gap:2px}.lg-meta>span+span:before{content:none}.lg-s+.lg-s{margin-top:32px;padding-top:28px}}.toc{top:calc(var(--header-h) + 24px);max-height:calc(100vh - var(--header-h) - 48px);overscroll-behavior:contain;scrollbar-width:thin;position:sticky;overflow-y:auto}.toc .label{margin-bottom:14px}.toc :is(ol,ul){display:grid}.toc a,.toc-m a{border-left:2px solid var(--rule);font-size:var(--fs-small);color:var(--ink-2);padding:6px 0 6px 14px;line-height:1.4;display:block}:is(.toc a:has(>.toc-n),.toc-m a){grid-template-columns:2em minmax(0,1fr);align-items:baseline;display:grid}.toc a:hover,.toc-m a:hover{color:var(--ink)}.toc a[aria-current]{color:var(--ink);border-left-color:var(--ink);font-weight:600}.toc a:focus-visible,.toc-m a:focus-visible{outline-offset:-2px}.toc-n{font-variant-numeric:tabular-nums;color:var(--ink-2);font-weight:400}.toc-m{display:none}.toc-inline{order:2;padding-top:4px}.toc-inline .label{margin-bottom:10px}@media (width<=1100px){.toc-inline{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);order:0;max-width:650px;max-height:none;padding:16px 0 6px;position:static;overflow:visible}.toc-inline ul{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px}.toc-inline a{border-left:0;align-items:center;min-height:40px;padding-left:0;line-height:1.35;display:flex}}@media (width<=900px){.toc:not(.toc-inline){display:none}.toc-m{border:1px solid var(--rule);background:var(--card);border-radius:14px;display:block}.toc-m summary{min-height:52px;font-size:var(--fs-body-m);cursor:pointer;justify-content:space-between;align-items:center;gap:16px;padding:0 18px;font-weight:600;list-style:none;display:flex}.toc-m summary::-webkit-details-marker{display:none}.toc-m summary .pm{width:26px;height:26px}.toc-m[open] summary .pm{transform:rotate(45deg)}.toc-m summary:hover .pm{border-color:var(--ink)}.toc-m nav{padding:0 18px 14px}.toc-m a{min-height:40px;font-size:var(--fs-body-s);align-content:center}}@media (width<=640px){.toc-inline ul{grid-template-columns:minmax(0,1fr)}}@media (prefers-reduced-motion:no-preference){.toc a{transition:color var(--dur-2) var(--ease-out), border-color var(--dur-2) var(--ease-out)}.toc-m summary .pm{transition:transform var(--dur-4) var(--ease-out-3), border-color var(--dur-2) var(--ease-out)}}.c-hero{padding:var(--sp-hero-top) 0 clamp(28px, 3vw, 44px)}.c-hero .sec-head{margin-bottom:0}.c-hero .sec-head>div:first-child{container-type:inline-size}.c-hero .h1{margin-top:var(--gap-hero-label);--h1-k:11.6cqi}.c-hero .label{margin-bottom:0}.c-hero .lead{font-size:var(--fs-lead-hero)}.c-key{border-top:1px solid var(--rule);font-size:var(--fs-xs);color:var(--ink-2);flex-wrap:wrap;align-items:center;gap:8px 14px;margin-top:clamp(28px,3vw,40px);padding-top:18px;display:flex}.c-key .label{margin:0 6px 0 0}.c-key span:not(.label){align-items:center;gap:8px;display:inline-flex}.cl{display:grid}.cl-entry{border-top:1px solid var(--rule);scroll-margin-top:calc(var(--header-h) + 16px);grid-template-columns:minmax(0,3fr) minmax(0,8fr);gap:16px clamp(32px,5vw,80px);padding:clamp(28px,3vw,40px) 0;display:grid}.cl-entry:first-child{border-top:0;padding-top:0}.cl-when{top:calc(var(--header-h) + 24px);align-self:start;justify-items:start;gap:10px;display:grid;position:sticky}.cl-date{font-size:var(--fs-title);line-height:var(--lh-title);letter-spacing:-.005em;color:var(--ink);font-weight:750;font-stretch:87.5%}.cl-flag{font-size:var(--fs-xs);color:var(--ink-2);font-weight:600}.cl-flag.next{color:var(--punch-ink)}.cl-t{font-size:var(--fs-h3);line-height:var(--lh-title);letter-spacing:-.005em;text-wrap:balance;font-weight:750;font-stretch:87.5%}.cl-p{max-width:var(--measure);font-size:var(--fs-body-m);color:var(--ink-2);margin-top:10px;line-height:1.6}.cl-items{border-top:1px solid var(--rule);margin-top:20px;display:grid}.cl-items li{border-bottom:1px solid var(--rule);font-size:var(--fs-body-m);color:var(--ink);grid-template-columns:96px minmax(0,1fr);align-items:baseline;gap:4px 16px;padding:14px 0;line-height:1.55;display:grid}.cl-items li:last-child{border-bottom:0}.cl-items .badge{justify-self:start;translate:0 -2px}.cl-items p{max-width:var(--measure)}.cl-items p span{color:var(--ink-2)}.cl-items a,.cl-p a{text-decoration:underline;-webkit-text-decoration-color:var(--rule-2);-webkit-text-decoration-color:var(--rule-2);text-decoration-color:var(--rule-2);text-underline-offset:3px}.cl-items a:hover,.cl-p a:hover{text-decoration-color:currentColor}.cl-items .num{font-size:.86em}html[lang=zh-CN] :is(.cl-date,.cl-t){font-weight:700;font-stretch:100%}html[lang=zh-CN] :is(.cl-items li,.cl-p){line-height:1.75}@media (width<=820px){.cl-entry{grid-template-columns:minmax(0,1fr)}.cl-when{flex-wrap:wrap;align-items:baseline;gap:4px 14px;display:flex;position:static}}@media (width<=480px){.cl-items li{grid-template-columns:minmax(0,1fr);gap:8px}}.log{padding:clamp(36px, 4vw, 56px) 0 var(--sp-section)}.log-foot{margin-top:28px}.log-foot a{color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:var(--rule-2);-webkit-text-decoration-color:var(--rule-2);text-decoration-color:var(--rule-2);text-underline-offset:3px}html[lang=zh-CN] .c-hero .h1{--h1-k:8.6cqi}@media (width<=900px){.c-hero .h1{--h1-k:13.1cqi}html[lang=zh-CN] .c-hero .h1{--h1-k:9.7cqi}}
