.cx.postv{--body:#25323f;--line-strong:#bdc5cd;--accent-hover:#00474b;--accent-line:#89c4c6;--blk:#fff;--blk-head:#f5f7f9;--icode:#e5eaef;--sk-foreground:var(--ink);--sk-background:transparent;--sk-token-comment:#677079;--sk-token-string:#85540c;--sk-token-string-expression:#85540c;--sk-token-constant:#a4361f;--sk-token-keyword:var(--accent);--sk-token-function:var(--ink);--sk-token-parameter:var(--ink);--sk-token-punctuation:var(--muted);--sk-token-link:var(--accent);--sh:0 1px 2px rgba(2,12,23,.05),0 20px 40px -28px rgba(2,12,23,.3);-webkit-font-smoothing:antialiased;padding-top:max(92px,min(10vw,124px))}@supports (color:lab(0% 0 0)){.cx.postv{--body:lab(19.8941% -2.48764 -10.385);--line-strong:lab(79.1238% -1.8886 -4.81143);--accent-hover:lab(26.7926% -33.8964 -13.823);--accent-line:lab(75.0705% -18.912 -7.84824);--blk-head:lab(97.1018% -.553846 -1.38252);--icode:lab(92.4631% -1.09786 -2.75956);--sk-token-comment:lab(46.6186% -1.84459 -6.36477);--sh:0 1px 2px lab(3.00893% -1.18218 -6.96802/.05),0 20px 40px -28px lab(3.00893% -1.18218 -6.96802/.3)}}.cx.postv :where(p,ul,ol,figure,blockquote){margin:0}.cx.postv :focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}.cx .b-grid{grid-template-columns:minmax(0,700px) 248px;-ms-flex-pack:center;justify-content:center;column-gap:max(40px,min(6vw,88px));padding-bottom:max(56px,min(7vw,96px));display:grid}.cx .b-main{min-width:0}.cx .b-head{-ms-flex-direction:column;flex-direction:column;gap:18px;display:-ms-flexbox;display:flex}.cx .b-head .tags{margin:0;padding:0}.cx .title{letter-spacing:-.03em;font-size:max(30px,min(3.6vw,46px));font-weight:800;line-height:1.08}.cx .dek{color:var(--muted);text-wrap:pretty;font-size:max(18px,min(1.6vw,21px));line-height:1.5}.cx .meta{font-family:var(--mono);color:var(--muted);-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;gap:6px 14px;font-size:12.5px;display:-ms-flexbox;display:flex}.cx .meta i{background:var(--line-strong);border-radius:50%;width:3px;height:3px}.cx .thumb{aspect-ratio:640/400;border-radius:var(--r);background:#e9ecf0;width:100%;height:auto;margin-top:28px;display:block}.cx .soon{color:var(--muted);margin-top:48px}.cx .b-rail{grid-template-columns:minmax(0,1fr);-ms-flex-item-align:start;align-self:start;gap:26px;max-height:calc(100vh - 132px);padding-bottom:4px;display:grid;position:-webkit-sticky;position:sticky;top:104px;overflow-y:auto}.cx .rail-k{font:500 11.5px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.cx .toc ol{border-left:1px solid var(--line-strong);margin:14px 0 0;padding:0;list-style:none}.cx .toc a{color:var(--muted);border-left:2px solid transparent;margin-left:-1px;padding:7px 0 7px 16px;font-size:14.5px;line-height:1.4;text-decoration:none;transition:color .2s,border-color .2s;display:block}.cx .toc a:hover{color:var(--ink)}.cx .toc a[aria-current=true]{color:var(--accent);border-left-color:var(--accent);font-weight:600}.cx .rail-pct{font:400 12px/1 var(--mono);color:var(--muted);font-variant-numeric:tabular-nums;-ms-flex-align:center;align-items:center;gap:10px;margin-top:14px;display:-ms-flexbox;display:flex}.cx .rail-pct span{background:var(--line);border-radius:2px;-ms-flex:1;flex:1;height:3px;overflow:hidden}.cx .rail-pct i{background:var(--accent);transform-origin:0;height:100%;display:block;transform:scaleX(0)}.cx .rail-pct b{text-align:right;min-width:4ch;font-weight:400}.cx .share{gap:8px;margin-top:14px;display:grid}.cx .share-b{all:unset;box-sizing:border-box;cursor:pointer;background:var(--surface);min-height:40px;box-shadow:inset 0 0 0 1px var(--line);color:var(--ink);border-radius:9px;-ms-flex-align:center;align-items:center;gap:10px;padding:0 13px;font-size:14px;font-weight:500;text-decoration:none;transition:box-shadow .2s;display:-ms-flexbox;display:flex}.cx .share-b:hover{box-shadow:inset 0 0 0 1px var(--accent)}.cx .share-b:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.cx .share-b svg{fill:none;width:16px;height:16px;stroke:var(--accent);stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;-ms-flex:none;flex:none}.cx .share-b.done{color:var(--accent)}.cx .toc-m{background:var(--surface);border:1px solid var(--line);border-radius:10px;margin-top:24px;display:none}.cx .toc-m summary{cursor:pointer;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center;gap:12px;min-height:48px;padding:0 16px;font-size:15.5px;font-weight:600;list-style:none;display:-ms-flexbox;display:flex}.cx .toc-m summary::-webkit-details-marker{display:none}.cx .toc-m summary small{font:400 12px/1 var(--mono);color:var(--muted);margin-left:auto}.cx .toc-m summary:after{content:"";border-right:1.7px solid var(--accent);border-bottom:1.7px solid var(--accent);width:8px;height:8px;transition:transform .25s var(--ease);transform:rotate(45deg)translate(-2px,-2px)}.cx .toc-m[open] summary:after{transform:rotate(225deg)translate(-2px,-2px)}.cx .toc-m ol{counter-reset:t;margin:0;padding:2px 16px 12px;list-style:none}.cx .toc-m li{counter-increment:t;border-top:1px solid var(--line)}.cx .toc-m a{color:var(--ink);align-items:baseline;gap:12px;padding:11px 0;font-size:15px;line-height:1.4;text-decoration:none;display:-ms-flexbox;display:flex}.cx .toc-m a:before{content:counter(t);font:400 12px/1 var(--mono);color:var(--accent);min-width:1.2em}.cx .prose-b{color:var(--body);overflow-wrap:break-word;margin-top:max(28px,min(4vw,44px));font-size:18px;line-height:1.72}.cx .prose-b>*+*{margin-top:1.2em}.cx .prose-b :where(li,blockquote)>*+*{margin-top:.7em}.cx .prose-b h2{letter-spacing:-.025em;color:var(--ink);scroll-margin-top:104px;font-size:max(24px,min(2.4vw,30px));font-weight:700;line-height:1.2}.cx .prose-b>h2{margin-top:max(44px,min(5vw,64px))}.cx .prose-b :where(h3,h4){letter-spacing:-.015em;color:var(--ink);margin-bottom:0;font-size:max(19px,min(1.7vw,21.5px));font-weight:700;line-height:1.3}.cx .prose-b>:where(h3,h4){margin-top:1.9em}.cx .prose-b>:-webkit-any(h2,h3,h4)+*{margin-top:.75em}.cx .prose-b>:is(h2,h3,h4)+*{margin-top:.75em}.cx .prose-b strong{color:var(--ink);font-weight:600}.cx .prose-b a{color:var(--accent);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--accent-line);text-decoration-color:var(--accent-line);font-weight:500;transition:-webkit-text-decoration-color .2s,text-decoration-color .2s}.cx .prose-b a:hover{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);text-decoration-thickness:2px}.cx .prose-b :not(pre)>code{font-family:var(--mono);background:var(--icode);color:var(--ink);overflow-wrap:anywhere;-webkit-box-decoration-break:clone;box-decoration-break:clone;border-radius:5px;padding:.14em .38em;font-size:.845em}.cx .prose-b :where(ul,ol){padding:0;list-style:none}.cx .prose-b li{padding-left:1.65em;position:relative}.cx .prose-b li+li{margin-top:.6em}.cx .prose-b li>:where(ul,ol){margin-top:.6em}.cx .prose-b ul>li:before{content:"";background:var(--accent);border-radius:50%;width:6px;height:6px;position:absolute;top:.72em;left:.3em}.cx .prose-b ol{counter-reset:ol}.cx .prose-b ol>li{counter-increment:ol;padding-left:2.1em}.cx .prose-b ol>li:before{content:counter(ol);background:var(--accent-soft);width:1.55em;height:1.55em;color:var(--accent);font:500 .72em/1.55em var(--mono);text-align:center;font-variant-numeric:tabular-nums;border-radius:50%;position:absolute;top:.28em;left:0}.cx .prose-b li:has(>input[type=checkbox]):before{display:none}.cx .prose-b blockquote{border-left:2px solid var(--accent);letter-spacing:-.012em;color:var(--ink);text-wrap:pretty;padding:.15em 0 .15em 1.1em;font-size:1.17em;font-weight:500;line-height:1.5}.cx .prose-b hr{background:radial-gradient(circle,var(--line-strong)2.6px,transparent 3px)0 50%/18px 6px repeat-x;border:0;width:54px;height:6px;margin:2.2em auto 1em}.cx .prose-b figure.img img{background:var(--track);border-radius:10px;width:100%;height:auto;display:block}.cx .prose-b figure.img figcaption{color:var(--muted);margin-top:10px;font-size:14px;line-height:1.5}.cx .code{border:1px solid var(--line);background:var(--blk);border-radius:10px;min-width:0;overflow:hidden}.cx .code figcaption{background:var(--blk-head);border-bottom:1px solid var(--line);-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center;gap:12px;min-height:42px;padding:0 6px 0 16px;display:-ms-flexbox;display:flex}.cx .code .lang-l{font:500 11.5px/1 var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--muted);-ms-flex-align:center;align-items:center;gap:8px;display:-ms-flexbox;display:flex}.cx .code .lang-l:before{content:"";background:var(--accent);border-radius:50%;width:6px;height:6px}.cx .copy{all:unset;box-sizing:border-box;cursor:pointer;min-height:32px;font:500 12.5px/1 var(--display);color:var(--muted);transition:background .2s var(--ease),color .2s var(--ease);border-radius:7px;-ms-flex-align:center;align-items:center;gap:7px;padding:0 10px;display:-ms-flexbox;display:flex}.cx .copy:hover{background:var(--icode);color:var(--ink)}.cx .copy:active{transform:scale(.97)}.cx .copy:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.cx .copy svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:15px;height:15px}.cx .copy .ok{display:none}.cx .copy.done{color:var(--accent)}.cx .copy.done .ok{display:block}.cx .copy.done .cp{display:none}.cx .code pre{font:400 14px/1.68 var(--mono);color:var(--ink);tab-size:2;white-space:pre;-webkit-overflow-scrolling:touch;margin:0;padding:16px 18px 18px;overflow-x:auto}.cx .code pre:focus-visible{outline-offset:-2px}.cx .code code{font:inherit}.cx .tbl{border:1px solid var(--line);background:var(--blk);-webkit-overflow-scrolling:touch;border-radius:10px;min-width:0;overflow-x:auto}.cx .tbl:focus-visible{outline-offset:1px}.cx .tbl table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;margin:0;font-size:15.5px;line-height:1.5}.cx .tbl.wide table{min-width:600px}.cx .tbl th{text-align:left;font:500 11.5px/1.35 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);background:var(--blk-head);border-bottom:1px solid var(--line-strong);vertical-align:bottom;padding:13px 16px 12px}.cx .tbl td{border-top:1px solid var(--line);vertical-align:top;color:var(--body);padding:13px 16px}.cx .tbl tbody tr:first-child td{border-top:0}.cx .tbl td:first-child{color:var(--ink);font-weight:600}.cx .tbl .num{text-align:right;white-space:nowrap}.cx .tbl td.num{font-family:var(--mono);color:var(--ink);font-size:.92em}.cx .tbl tbody tr{transition:background .15s}.cx .yn{white-space:nowrap;-ms-flex-align:center;align-items:center;gap:8px;display:-ms-inline-flexbox;display:inline-flex}.cx .yn:before{content:"";background:var(--accent);border-radius:50%;-ms-flex:none;flex:none;width:8px;height:8px}.cx .yn.n{color:var(--muted)}.cx .yn.n:before{box-shadow:inset 0 0 0 1.5px var(--line-strong);background:0 0}@media (hover:hover){.cx .tbl tbody tr:hover{background:var(--blk-head)}}@media (max-width:640px){.cx .tbl.cards{background:0 0;border:0;border-radius:0;overflow:visible}.cx .tbl.cards table{min-width:0;display:block}.cx .tbl.cards thead{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.cx .tbl.cards tbody{gap:10px;display:grid}.cx .tbl.cards tr{background:var(--blk);border:1px solid var(--line);border-radius:10px;padding:14px 16px 16px;display:block}.cx .tbl.cards td{text-align:left;white-space:normal;border:0;padding:0;display:block}.cx .tbl.cards td:first-child{letter-spacing:-.01em;padding-bottom:2px;font-size:16.5px;line-height:1.35}.cx .tbl.cards td:not(:first-child):before{content:attr(data-l);font:500 10.5px/1.4 var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--muted);margin-top:11px;margin-bottom:1px;display:block}.cx .tbl.cards td.num{border-top:1px solid var(--line);-ms-flex-pack:justify;justify-content:space-between;align-items:baseline;gap:12px;margin-top:10px;padding-top:9px;font-size:14px;display:-ms-flexbox;display:flex}.cx .tbl.cards td.num:before{margin:0}.cx .tbl.cards td.num+td.num{margin-top:9px}}.cx .end{border-top:1px solid var(--line);padding-top:max(48px,min(6vw,80px));padding-bottom:max(64px,min(8vw,104px))}.cx .cta{border-radius:var(--r);background:var(--surface);box-shadow:var(--sh);-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center;gap:20px 40px;padding:max(22px,min(3.4vw,40px));display:-ms-flexbox;display:flex}.cx .cta h2,.cx .rel-h h2{letter-spacing:-.025em;font-size:max(22px,min(2.4vw,30px));font-weight:700;line-height:1.2}.cx .cta p{color:var(--muted);margin-top:6px;font-size:16px}.cx .btn{background:var(--accent);color:#fff;white-space:nowrap;min-height:50px;transition:background .25s var(--ease);border-radius:999px;-ms-flex-align:center;align-items:center;gap:10px;padding:0 24px;font-size:16px;font-weight:600;text-decoration:none;display:-ms-inline-flexbox;display:inline-flex}.cx .btn:hover{background:var(--accent-hover)}.cx .btn svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:17px;height:17px;transition:transform .3s var(--ease)}.cx .btn:hover svg{transform:translate(3px)}.cx .rel-h{-ms-flex-pack:justify;justify-content:space-between;align-items:baseline;gap:16px;margin-top:max(48px,min(6vw,80px));display:-ms-flexbox;display:flex}.cx .rel-h a{color:var(--accent);white-space:nowrap;font-size:14.5px;font-weight:600;text-decoration:none}.cx .rel-h a:hover{text-decoration:underline}.cx.postv .posts{margin-top:22px}.cx.postv .post{min-width:0}@media (max-width:1060px){.cx .b-grid{grid-template-columns:minmax(0,700px)}.cx .b-rail{display:none}.cx .toc-m{display:block}}@media (max-width:1020px){.cx.postv .posts .post:nth-child(3){display:none}}@media (max-width:760px){.cx.postv{padding-top:76px}.cx .prose-b{font-size:17px;line-height:1.68}.cx .prose-b h2{scroll-margin-top:68px}.cx .code pre{padding:14px 16px 16px;font-size:13px}.cx .copy{min-height:40px}.cx .thumb{border-radius:10px;margin-top:22px}.cx.postv .posts .post:nth-child(3){display:-ms-flexbox;display:flex}.cx .cta .btn{-ms-flex-pack:center;justify-content:center;width:100%}}@media (max-width:380px){.cx .title{font-size:29px}}@media (prefers-reduced-motion:reduce){.cx.postv *,.cx.postv :before,.cx.postv :after{transition:none!important}}
