:root{--bg:#191b1f;--panel:#22262b;--raised:#25282d;--ink:#f4f3f1;--body:#c9ccd1;--muted:#b6b9bf;--line:#454a51;--accent:#f30;--link:#ffab8c;--font:var(--font-primary);--body-size:18px}.pg-blog-post{background:var(--bg);color:var(--ink);font-family:var(--font);margin:0;line-height:1.65}a{color:inherit;text-decoration:none}a:hover{color:var(--link)}button,input,summary{font:inherit}button{cursor:pointer;color:inherit}button,a,input,summary,[tabindex="0"]{touch-action:manipulation}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible,[tabindex]:not([tabindex="-1"]):focus-visible{outline:2px solid var(--link);outline-offset:5px}button{border:1px solid var(--line);background:0 0;border-radius:0}button:hover{background:var(--raised)}h1,h2,h3,p,figure,blockquote{margin:0}h1,h2,h3{text-wrap:balance}h2,h3{line-height:1.25}p+p{margin-top:1em}strong{color:var(--ink)}img,svg{max-width:100%}code{overflow-wrap:anywhere;color:var(--link);font-family:ui-monospace,monospace;font-size:.86em}.field-shell{grid-template-columns:240px minmax(0,1fr);gap:64px;padding-top:64px;display:grid}.reading-guide{border-right:1px solid var(--line);padding-right:30px}.sticky-guide{max-height:calc(100vh - 60px);padding:4px 6px 12px 0;position:sticky;top:30px;overflow:auto}.reading-guide h2{font-size:14px;font-weight:700}.reading-guide p{color:var(--muted);margin:10px 0 24px;font-size:12px}.toc{gap:7px;display:grid}.toc a{color:var(--muted);grid-template-columns:24px minmax(0,1fr);gap:8px;padding:10px 0;font-size:12px;line-height:1.6;display:grid}.toc a span{color:var(--link);font:11px/1.9 ui-monospace,monospace}.toc a[aria-current]{color:var(--ink)}.toc a[aria-current]:after{content:"";background:var(--accent);grid-column:2;width:24px;height:2px}.reading-meter p{justify-content:space-between;margin:0 0 10px;display:flex}.reading-progress{width:100%;height:3px;display:block}.reading-tools{gap:4px;margin-top:26px;display:grid}.reading-tools button{text-align:left;color:var(--muted);border:0;align-items:center;gap:12px;padding:10px 0;font-size:12px;display:flex}.reading-tools button>span:first-child{width:24px;color:var(--ink);font-size:17px}.reading-tools button[aria-pressed=true]{color:var(--link)}.article-column{min-width:0}.breadcrumbs{color:var(--muted);flex-wrap:wrap;gap:12px;margin-bottom:30px;font-size:12px;display:flex}.breadcrumbs a{color:var(--link)}.article-opening h1{letter-spacing:-.055em;text-transform:uppercase;overflow-wrap:anywhere;max-width:1060px;font-size:clamp(42px,5.2vw,76px);font-weight:850;line-height:1.01}.deck{color:var(--muted);max-width:780px;margin-top:30px;font-size:20px;line-height:1.6}.meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:12px 22px;margin-top:30px;font-size:11px;display:flex}.author{align-items:center;gap:8px;display:inline-flex}.author>span{border:1px solid var(--line);width:26px;height:26px;color:var(--ink);place-items:center;font-size:11px;display:grid}.tags{flex-wrap:wrap;gap:8px;margin:24px 0;padding:0;list-style:none;display:flex}.tags li{letter-spacing:.05em;border:1px solid var(--line);color:var(--muted);padding:4px 9px;font-size:10px}.tags li:first-child{color:var(--link);border-color:#9c523c}summary{cursor:pointer}.context{max-width:760px;color:var(--muted);border-block:1px solid var(--line);padding:14px 0;font-size:13px}.context p{margin-top:16px}.context summary{color:var(--link)}.prose{color:var(--body);font-size:var(--body-size);margin-top:32px;line-height:1.85}.block{overflow-wrap:anywhere;margin-block:34px}.text-block{max-width:760px}.text-block p+p{margin-top:1.25em}.text-block a{color:var(--link);text-underline-offset:4px;text-decoration:underline}.prose ul,.prose ol{padding-left:24px}.prose li+li{margin-top:10px}.heading-block{margin-top:46px}.prose h2{color:var(--ink);letter-spacing:-.035em;font-size:32px}.prose h3{color:var(--ink);letter-spacing:-.025em;font-size:23px}.prose h4{font-size:20px}.chapter{border-top:1px solid var(--line);margin:70px 0 34px;padding-top:24px}.chapter h2{grid-template-columns:42px 1fr;gap:16px;max-width:800px;display:grid}.chapter h2>span{color:var(--link);letter-spacing:.06em;font:12px/2.5 ui-monospace,monospace}.image-open{display:block;position:relative}.image-open img{background:var(--panel);width:100%;height:auto;display:block}.image-open>span{background:var(--bg);border:1px solid var(--line);place-items:center;width:36px;height:36px;display:grid;position:absolute;bottom:12px;right:12px}.prose figcaption{color:var(--muted);max-width:760px;margin-top:12px;font-size:12px;line-height:1.65}.comparison{background:var(--line);border:1px solid var(--line);grid-template-columns:1fr 1fr;gap:1px;font-size:.9em;display:grid}.comparison>div{background:var(--panel);padding:26px}.comparison>div:last-child{border-top:2px solid var(--accent)}.eyebrow{color:var(--link);letter-spacing:.03em;margin-bottom:16px;font-size:12px;font-weight:600}.callout{background:var(--panel);border-left:3px solid var(--accent);padding:28px 30px;font-size:.93em}.callout h3{margin-bottom:16px;font-size:20px}.quote-block{border-left:2px solid var(--accent);max-width:780px;margin-block:52px;padding:26px 0 26px 30px}.quote-block blockquote>p{color:var(--ink);letter-spacing:-.025em;font-size:28px;font-weight:600;line-height:1.5}.quote-block footer{color:var(--muted);margin-top:20px;font-size:12px}.data-cards{border-block:1px solid var(--line);grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:24px;padding:30px 0;display:grid}.data-cards>div{padding-right:12px}.data-value{color:var(--link);letter-spacing:-.05em;margin-bottom:16px;font-size:38px;font-weight:750;line-height:1.2}.data-cards h3{font-size:17px}.data-cards p:not(.data-value){margin-top:12px;font-size:13px;line-height:1.7}.tech-box{border:1px solid var(--line);padding:28px;font-size:.9em}.tech-box h3{color:var(--link);margin-bottom:18px;font-size:17px}.tech-box ol{padding-left:30px;list-style:decimal-leading-zero}.tech-box li::marker{color:var(--link);font-size:12px}.metric{border-top:1px solid var(--line);color:var(--muted);padding-top:16px;font-size:13px}.table-scroll{border:1px solid var(--line);overflow-x:auto}table{border-collapse:collapse;text-align:left;width:100%;min-width:540px;font-size:13px;line-height:1.65}caption{text-align:left;color:var(--link);background:var(--panel);padding:20px;font-weight:600}th,td{border-bottom:1px solid var(--line);vertical-align:top;min-width:120px;padding:18px 20px}thead{background:var(--raised);color:var(--ink)}tbody th{color:var(--ink);font-weight:600}tbody tr:last-child>*{border-bottom:0}.accordion>h3{margin-bottom:20px}.accordion details{border-top:1px solid var(--line);font-size:.9em}.accordion details:last-child{border-bottom:1px solid var(--line)}.accordion summary{color:var(--ink);padding:22px 0;font-weight:600}.accordion details>div{padding:0 24px 24px 0}.chart-block{background:var(--panel);padding:28px}.chart-block h3{margin-bottom:28px;font-size:20px}.chart{gap:24px;display:grid}.chart-row>div{justify-content:space-between;gap:24px;margin-bottom:10px;font-size:13px;line-height:1.5;display:flex}.chart-row strong{white-space:nowrap;font-variant-numeric:tabular-nums}.chart progress{width:100%;height:9px;display:block}progress{appearance:none;color:var(--accent);background:#363c44;border:0}progress::-webkit-progress-bar{background:#363c44}progress::-webkit-progress-value{background:var(--accent)}progress::-moz-progress-bar{background:var(--accent)}.chart-note,.chart-label{color:var(--muted);margin-top:22px;font-size:12px}.timeline ol{border-left:1px solid var(--line);padding-left:28px;list-style:none}.timeline li{padding:0 0 28px 8px;position:relative}.timeline li:before{content:"";background:var(--accent);width:8px;height:8px;position:absolute;top:8px;left:-33px}.timeline h3{margin-bottom:14px;font-size:20px}.timeline p{font-size:.9em}.icon-row ol{grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:24px;padding:0;list-style:none;display:grid}.icon-row li{border-top:1px solid var(--line);padding-top:20px;margin:0!important}.icon-row h3{font-size:18px}.icon-row p{margin-top:12px;font-size:13px}.inline-toc{border:1px solid var(--line);padding:24px}.inline-toc nav{color:var(--link);gap:12px;margin-top:20px;font-size:14px;display:grid}.diagram-block{border:1px solid var(--line);background:var(--panel);padding:28px}.diagram-block h3{font-size:20px}.diagram-block figure>p{margin-top:14px;font-size:13px}.diagram{flex-direction:column;gap:58px;margin-block:30px;display:flex;position:relative}.diagram>svg{pointer-events:none;width:100%;max-width:none;height:100%;position:absolute;inset:0;overflow:visible}.diagram-level{flex-wrap:wrap;justify-content:center;gap:14px;display:flex;position:relative}.diagram-node{background:var(--panel);text-align:center;border:1px solid #7b838e;flex:140px;max-width:240px;padding:16px;font-size:12px;line-height:1.6;position:relative}.diagram-level:first-of-type .diagram-node{border-color:var(--accent)}.diagram-node p{margin-top:10px;font-size:11px}.diagram-connections{color:var(--muted);border-top:1px solid var(--line);padding-top:14px;font-size:12px}.diagram-connections summary{color:var(--link)}.article-end{border-top:1px solid var(--line);justify-content:space-between;gap:24px;margin-top:60px;padding-top:24px;font-size:12px;display:flex}.article-end button{border:0}.related{margin-top:80px}.related>h2{margin-bottom:30px;font-size:25px}.related>a{border-top:1px solid var(--line);padding:28px 44px 28px 0;display:block;position:relative}.related>a>span:first-child{color:var(--link);font-size:11px}.related h3{max-width:720px;margin:12px 0;font-size:22px}.related p{color:var(--muted);max-width:720px;font-size:14px}.related-arrow{font-size:26px;position:absolute;top:30px;right:0}.mobile-contents{display:none}.large-text{--body-size:21px}.reading-mode .field-shell{grid-template-columns:210px minmax(0,760px);justify-content:center}.reading-mode .site-header,.reading-mode .related,.reading-mode .footer{display:none}.reading-mode .article-opening h1{font-size:50px}.image-dialog{border:1px solid var(--line);background:var(--bg);width:min(94vw,1500px);max-height:94vh;padding:20px}dialog::backdrop{background:#000d}dialog button{padding:8px 16px}dialog>div{justify-content:flex-end;margin-bottom:16px;display:flex}.image-dialog img{object-fit:contain;width:auto;max-height:75vh;margin:auto;display:block}.image-dialog p{color:var(--muted);margin-top:16px;font-size:13px}.copy-dialog{border:1px solid var(--line);background:var(--bg);width:min(90vw,640px);padding:24px}.copy-dialog>button{float:right;margin-bottom:24px}.copy-dialog label{clear:both;display:block}.copy-dialog input{width:100%;margin-top:12px;padding:12px}.toast{background:var(--ink);max-width:90vw;color:var(--bg);z-index:50;padding:10px 18px;font-size:13px;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.toast:empty{display:none}.index-page{padding-top:70px}.index-kicker{color:var(--link);letter-spacing:.08em;font-size:12px}.index-page h1{letter-spacing:-.06em;text-transform:uppercase;margin:24px 0;font-size:clamp(48px,7vw,100px);line-height:1.1}.index-page header>p:last-child{color:var(--muted);max-width:660px;font-size:20px}.index-tools{border-block:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:16px;margin-top:50px;padding-block:28px;font-size:12px;display:flex}.index-tools input{background:var(--panel);border:1px solid var(--line);color:var(--ink);flex:1;min-width:200px;padding:12px}.index-tools button{padding:12px}.post-row{border-bottom:1px solid var(--line)}.post-row>a{padding:32px 100px 36px 0;display:block;position:relative}.post-row h2{letter-spacing:-.04em;max-width:960px;margin:20px 0;font-size:clamp(25px,3vw,40px)}.post-row p{color:var(--muted);max-width:800px;font-size:15px}.post-row .meta{margin:0}.post-row>a>div{justify-content:space-between;align-items:center;gap:24px;display:flex}.category{color:var(--link);font-size:11px}.row-arrow{font-size:40px;position:absolute;top:55px;right:12px}.index-empty{padding:40px 0}.no-js .reading-tools,.no-js .reading-meter,.no-js .index-tools{display:none}html[lang^=zh] .article-opening h1{letter-spacing:-.025em;font-size:clamp(38px,4.8vw,66px);font-weight:700;line-height:1.2}html[lang^=zh] .prose{line-height:1.95}html[lang^=zh] .deck,html[lang^=zh] .toc a{line-height:1.85}html[lang^=zh] .index-page h1{letter-spacing:-.03em}@media (width>=1600px){.field-shell{grid-template-columns:270px minmax(0,1fr)}}@media (width<=1100px){.field-shell{grid-template-columns:190px minmax(0,1fr);gap:36px}.reading-guide{padding-right:20px}.article-opening h1{font-size:54px}.comparison>div{padding:20px}.reading-mode .field-shell{grid-template-columns:180px minmax(0,760px)}}@media (width<=800px){.field-shell,.reading-mode .field-shell{padding-top:40px;display:block}.reading-guide{display:none}.article-opening h1,.reading-mode .article-opening h1{letter-spacing:-.045em;font-size:clamp(38px,7.5vw,60px)}.deck{font-size:18px}.mobile-contents{border-block:1px solid var(--line);margin-top:40px;padding:16px 0;display:block}.mobile-contents>summary{color:var(--link);justify-content:space-between;font-size:13px;display:flex}.mobile-contents .toc{padding-top:20px}.mobile-contents .reading-tools{grid-template-columns:repeat(3,1fr);gap:12px}.mobile-contents .reading-tools button{align-items:flex-start}.prose{margin-top:28px}.chapter{margin-top:55px}.prose h2{font-size:28px}.chapter h2{grid-template-columns:30px 1fr;gap:10px}.quote-block blockquote>p{font-size:24px}.related{margin-top:60px}.index-page{padding-top:46px}.post-row>a{padding-right:45px}.row-arrow{font-size:28px;right:0}.post-row>a>div{display:block}.category{margin-top:10px;display:block}}@media (width<=480px){:root{--body-size:17px}.article-opening h1{font-size:39px}.breadcrumbs{margin-bottom:24px;font-size:11px}.deck{margin-top:24px;font-size:17px}.meta{gap:12px;font-size:10px}.comparison{grid-template-columns:1fr}.comparison>div,.callout,.tech-box,.chart-block,.diagram-block{padding:22px}.data-cards{grid-template-columns:1fr 1fr;gap:26px 18px}.data-value{font-size:30px}.data-cards h3{font-size:15px}.quote-block{padding-left:20px}.quote-block blockquote>p{font-size:23px}.mobile-contents .reading-tools{grid-template-columns:1fr}.mobile-contents .reading-tools button{padding:8px 0}.related h3{font-size:20px}.index-tools input{flex-basis:100%;min-width:0}.index-tools label{width:100%}.index-page header>p:last-child{font-size:17px}.index-page h1{font-size:50px}.diagram-level{gap:10px}.diagram-node{flex-basis:110px;padding:12px;font-size:11px}.large-text{--body-size:20px}}@media print{:root{--bg:#fff;--panel:#fff;--raised:#eee;--ink:#111;--body:#222;--muted:#444;--line:#999;--link:#333;background:#fff}.pg-blog-post{color:#111;background:#fff;font-size:11pt}.reading-guide,.mobile-contents,.reading-tools,.article-end,.related,.toast,dialog,.image-open>span,.index-tools{display:none!important}.field-shell,.reading-mode .field-shell{padding:0;display:block}.article-opening h1{color:#111;font-size:34pt!important}.prose{color:#222;font-size:11pt}.block{break-inside:avoid}.text-block{break-inside:auto}.chapter{break-after:avoid}.prose h2,.prose h3,strong,.deck,.meta,.quote-block blockquote>p{color:#111}.comparison>div,.callout,.chart-block,.diagram-block,.diagram-node{color:#222;background:#fff}.table-scroll{overflow:visible}table{min-width:0;font-size:9pt}th,td{min-width:0;padding:8px}thead{color:#111;background:#eee}.article-opening{break-after:avoid}.tags li,.eyebrow,.data-value,.breadcrumbs,.tech-box h3,.chart-note,figcaption{color:#444}.prose{margin-top:24px}.context{display:block}.diagram>svg{display:none}}html[lang^=zh]{line-break:strict;text-autospace:normal}.context-content{padding:24px 0 10px;container:article-overview/inline-size}.context-takeaway{max-width:70ch}.context .context-takeaway>p{color:var(--body);margin-top:0;font-size:15px;line-height:1.9}.context .context-takeaway>p+p{margin-top:1em}.context .context-takeaway h3{color:var(--muted);margin:0 0 8px;font-size:12px;font-weight:700;line-height:1.6}.context .overview-index{border:0;margin:26px 0 0;padding:0}.context .overview-index:first-child{margin-top:0}.context .overview-index h3{color:var(--muted);margin:0 0 14px;font-size:12px;font-weight:700;line-height:1.6}.context .overview-index nav{margin-top:0;display:block}.context .overview-index ol{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:28px;margin:0;padding:0;list-style:none;display:grid}.context .overview-index li{min-width:0}.context .overview-index a{border-top:1px solid var(--line);color:var(--ink);overflow-wrap:anywhere;grid-template-columns:22px minmax(0,1fr);align-items:baseline;gap:10px;padding:13px 0;font-size:13px;line-height:1.7;display:grid}.context .overview-index a:hover,.context .overview-index a:focus-visible{color:var(--link)}.context .chapter-number{color:var(--muted);font-variant-numeric:tabular-nums;font-size:10px}@container article-overview (width<=560px){.context .overview-index ol{grid-template-columns:1fr}}.prose>.block:first-child{margin-top:0}.reading-guide h2{letter-spacing:-.03em;font-size:20px;font-weight:700}.reading-guide .sticky-guide>p{margin:12px 0 29px;font-size:12px;line-height:1.7}.reading-guide .sticky-guide{margin-left:-13px;padding:4px 6px 12px 13px}.toc{gap:3px}.toc a{border-left:2px solid #0000;grid-template-columns:15px minmax(0,1fr);gap:12px;margin-left:-13px;padding:12px 12px 12px 11px;font-size:13px}.toc a span{font:10px/2 var(--font);color:inherit}.toc a[aria-current]{border-left-color:var(--accent);font-weight:700}.toc a[aria-current]:after{content:none}.reading-meter{border-top:0;margin-top:32px;padding-top:0}.reading-meter p{margin:0 0 11px;font-size:11px}.reading-tools{border-top:1px solid var(--line);gap:13px;margin-top:26px;padding-top:23px}.reading-tools button{gap:8px;min-height:32px;padding:6px 0}.reading-tools button:hover{color:var(--ink);background:0 0}.reading-tools svg{flex:none;width:18px;height:18px}@media screen and (width>=801px){.field-shell{grid-template-columns:270px minmax(0,1fr);padding-top:0}.reading-guide{padding:48px 28px 60px 0}.article-column{padding-top:64px}.reading-mode .field-shell{grid-template-columns:230px minmax(0,740px)}}@media screen and (width>=801px) and (width<=1100px){.field-shell,.reading-mode .field-shell{grid-template-columns:205px minmax(0,1fr)}.reading-guide{padding-right:18px}}.reading-mode .site-footer{display:none}
