.post,.blog-index{--serif:var(--font-serif);--sans:var(--font-display);--measure:42rem;background:var(--blog-bg);color:var(--blog-ink);min-height:100vh}.post :is(a,button,summary):focus-visible,.blog-index :is(a,button):focus-visible{outline:2px solid var(--blog-accent);outline-offset:4px;border-radius:4px}.post-progress{z-index:100;background:var(--accent-signal);transform-origin:0;pointer-events:none;height:4px;position:fixed;inset:0 0 auto;transform:scaleX(0)}.post-wrap{max-width:var(--measure);padding:112px 20px 0;padding-left:max(20px, env(safe-area-inset-left));padding-right:max(20px, env(safe-area-inset-right));margin:0 auto;position:relative}@media (min-width:768px){.post-wrap{padding-top:144px}}.post-meta{font:600 .9375rem/1.4 var(--sans);color:var(--blog-muted);flex-wrap:wrap;align-items:center;gap:8px 12px;margin:0 0 20px;display:flex}.post-meta a{color:var(--blog-accent);align-items:center;min-height:44px;margin:-12px 0;text-decoration:none;display:inline-flex}.post-meta a:hover{text-underline-offset:4px;text-decoration:underline}.post-meta [aria-hidden]{color:var(--blog-rule)}.post-title{font:700 clamp(2.125rem, 1.4rem + 3.2vw, 3.25rem)/1.08 var(--sans);letter-spacing:-.032em;color:var(--blog-ink);text-wrap:balance;overflow-wrap:break-word;margin:0}.post-dek{font-family:var(--serif);font-optical-sizing:auto;color:var(--blog-muted);text-wrap:pretty;margin:20px 0 0;font-size:clamp(1.25rem,1.1rem + .6vw,1.5rem);line-height:1.5}.post-byline{border-top:1px solid var(--blog-rule);font:400 .9375rem/1.4 var(--sans);color:var(--blog-muted);align-items:center;gap:12px;margin:32px 0 0;padding:20px 0 0;display:flex}.post-byline strong{color:var(--blog-ink);font-weight:600}.post-byline a{color:inherit;text-decoration:none}.post-byline a:hover strong{text-underline-offset:4px;text-decoration:underline}.post-avatar{-o-object-fit:cover;object-fit:cover;background:var(--blog-wash);width:40px;height:40px;font:700 .8125rem/1 var(--sans);color:var(--blog-ink);border-radius:50%;flex-shrink:0;place-items:center;display:inline-grid}.post-avatar.lg{width:56px;height:56px;font-size:1rem}.post-cover{aspect-ratio:16/9;background:var(--blog-wash);border-radius:4px;margin:40px 0 0;position:relative;overflow:hidden}.post-rail{display:none}@media (min-width:1120px){.post-rail{width:48px;display:block;position:absolute;top:0;bottom:0;left:-96px}.post-rail-inner{flex-direction:column;align-items:center;gap:8px;padding-top:144px;display:flex;position:sticky;top:120px}}.share-btn{border:1px solid var(--blog-rule);min-width:44px;height:44px;color:var(--blog-ink);font:600 .875rem/1 var(--sans);cursor:pointer;background:0 0;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:0;transition:border-color .16s,color .16s,background-color .16s;display:inline-flex}.share-btn:hover{border-color:var(--blog-accent);color:var(--blog-accent)}.share-btn:active{background:var(--blog-wash)}.share-btn:disabled{opacity:.5;cursor:not-allowed}.share-btn.labelled{padding:0 16px}.share-btn svg{flex-shrink:0;width:16px;height:16px}.post-body{font-family:var(--serif);font-optical-sizing:auto;color:var(--blog-ink);counter-reset:figc;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;overflow-wrap:break-word;margin:48px 0 0;font-size:1.1875rem;font-weight:400;line-height:1.75}@media (min-width:768px){.post-body{font-size:1.25rem}}.post-body>:first-child{margin-top:0}.post-body p{text-wrap:pretty;margin:0 0 1.5em}.post-body h1,.post-body h2,.post-body h3,.post-body h4{font-family:var(--sans);color:var(--blog-ink);text-wrap:balance;margin:2.4em 0 .6em;font-weight:700}.post-body h1,.post-body h2{letter-spacing:-.024em;font-size:1.6em;line-height:1.2}.post-body h3{letter-spacing:-.016em;font-size:1.25em;line-height:1.3}.post-body h4{letter-spacing:-.008em;font-size:1em;line-height:1.4}.post-body :is(h1,h2,h3,h4)+:is(p,ul,ol){margin-top:0}.post-body :is(h1,h2,h3){scroll-margin-top:96px}.post-body a{color:var(--accent-signal);text-underline-offset:.2em;text-decoration:underline;text-decoration-thickness:1px;transition:text-decoration-thickness .12s}.post-body a:hover{text-decoration-thickness:2px}.post-body strong{font-weight:700}.post-body em{font-style:italic}.post-body ul,.post-body ol{margin:0 0 1.5em;padding-left:1.4em}.post-body ul{list-style:outside}.post-body ol{list-style:decimal}.post-body li{margin:0 0 .5em;padding-left:.2em}.post-body li::marker{color:var(--blog-muted)}.post-body ol>li::marker{font-family:var(--sans);font-size:.875em;font-weight:600}.post-body blockquote{color:var(--blog-ink);margin:2em 0;padding:0 1.5em;font-size:1.15em;font-style:italic;line-height:1.6}.post-body blockquote p{margin:0 0 .75em}.post-body blockquote p:last-child{margin:0}.post-body blockquote cite{font:normal 600 .7em/1.4 var(--sans);color:var(--blog-muted);margin-top:.75em;display:block}.post-body code{background:var(--blog-wash);border-radius:4px;padding:.12em .36em;font-family:ui-monospace,Cascadia Code,SF Mono,Menlo,monospace;font-size:.82em}.post-body pre{background:var(--blog-wash);-webkit-overflow-scrolling:touch;border-radius:8px;margin:0 0 1.5em;padding:20px 24px;font-size:.8em;line-height:1.65;overflow-x:auto}.post-body pre code{font-size:inherit;background:0 0;padding:0}.post-body img{border-radius:4px;max-width:100%;height:auto;margin:2em auto;display:block}.post-body hr{background:var(--blog-rule);border:none;width:40%;height:1px;margin:3em auto}.post-body figure{margin:2em 0}.post-body figure img{margin:0 0 12px}.post-body figcaption{counter-increment:figc;font:400 .875rem/1.5 var(--sans);color:var(--blog-muted)}.post-body figcaption:before{content:"Fig. " counter(figc) ". ";color:var(--blog-ink);font-weight:700}.post-body figcaption.no-num:before{content:none}.post-body table{border-collapse:collapse;width:100%;font:400 .9375rem/1.5 var(--sans);margin:0 0 1.5em}.post-body th{text-align:left;border-bottom:2px solid var(--blog-ink);padding:12px;font-weight:700}.post-body td{border-bottom:1px solid var(--blog-rule);padding:12px}.post-body .table-wrap{-webkit-overflow-scrolling:touch;margin:0 0 1.5em;overflow-x:auto}.post-body .table-wrap table{min-width:520px;margin:0}.post-body .source{font:italic 400 .8125rem/1.5 var(--sans);color:var(--blog-muted);margin:-.75em 0 1.5em}.post-body :is(.lead,.dek){margin:0 0 1.5em;font-size:1.2em;line-height:1.6}.post-body .kicker{font:700 .8125rem/1.4 var(--sans);color:var(--blog-accent);margin:2.4em 0 .25em;display:block}.post-body :is(.callout,.takeaways,.abstract){background:var(--blog-wash);border-radius:8px;margin:2em 0;padding:24px 28px;font-size:.9em}.post-body .callout.warn,.post-body .callout.ok{border:1px solid var(--blog-rule)}.post-body :is(.callout,.takeaways,.abstract)>:first-child{margin-top:0}.post-body :is(.callout,.takeaways,.abstract)>:last-child{margin-bottom:0}.post-body :is(.takeaways,.abstract) h4,.post-body .abstract>strong:first-child{font:700 1rem/1.4 var(--sans);margin:0 0 12px;display:block}.post-body .stat-grid{border-top:1px solid var(--blog-rule);border-bottom:1px solid var(--blog-rule);grid-template-columns:repeat(auto-fit,minmax(min(160px,100%),1fr));gap:24px;margin:2em 0;padding:24px 0;display:grid}.post-body .stat b{font:700 2.25rem/1 var(--sans);letter-spacing:-.03em;margin-bottom:8px;display:block}.post-body .stat span{font:400 .875rem/1.5 var(--sans);color:var(--blog-muted)}.post-body .data-bars{font-family:var(--sans);flex-direction:column;gap:12px;margin:2em 0;display:flex}.post-body .data-bar{grid-template-columns:minmax(84px,128px) 1fr auto;align-items:center;gap:12px;display:grid}.post-body .data-bar>span:first-child{font-size:.875rem;font-weight:600}.post-body .data-bar .track{background:var(--blog-wash);border-radius:4px;height:8px;overflow:hidden}.post-body .data-bar .track>i{height:100%;width:var(--v,0%);background:var(--blog-accent);display:block}.post-body .data-bar>b{text-align:right;min-width:3ch;font-size:.875rem}.post-body sup a,.post-body a.cite{font:700 .7em/1 var(--sans);vertical-align:super;padding:0 .1em;text-decoration:none}.post-body .references{font:400 .9375rem/1.6 var(--sans);padding-left:2em;list-style:decimal}.post-body .references>li{border-bottom:1px solid var(--blog-rule);padding:8px 0}.post-body .references>li:target,.post-body .footnotes li:target{background:var(--blog-wash)}.post-body .references a{word-break:break-word}.post-body .footnotes{font:400 .875rem/1.6 var(--sans);color:var(--blog-muted);border-top:1px solid var(--blog-rule);margin-top:3em;padding-top:16px}.post-end{font-family:var(--sans);margin:64px 0 0}.post-tags{color:var(--blog-muted);flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 32px;font-size:.9375rem;display:flex}.post-tags a{background:var(--blog-wash);min-height:44px;color:var(--blog-ink);border-radius:999px;align-items:center;padding:0 16px;font-weight:600;text-decoration:none;transition:color .16s;display:inline-flex}.post-tags a:hover{color:var(--blog-accent)}.post-share{border-top:1px solid var(--blog-rule);border-bottom:1px solid var(--blog-rule);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:24px 0;display:flex}.post-share p{margin:0;font-size:1rem;font-weight:700}.post-share-btns{flex-wrap:wrap;gap:8px;display:flex}.post .lc-inline,.blog-index .lc-inline{background:var(--blog-wash);text-align:left;border-radius:8px}:is(.post,.blog-index) .lc-inline .lc-title{font-family:var(--sans);letter-spacing:-.024em;color:var(--blog-ink)}:is(.post,.blog-index) .lc-inline .lc-sub{color:var(--blog-muted)}.post-author{align-items:flex-start;gap:16px;margin:48px 0 0;display:flex}.post-author-main{flex:1;min-width:0}.post-author-label{color:var(--blog-muted);margin:0 0 4px;font-size:.875rem}.post-author-name{letter-spacing:-.012em;margin:0;font-size:1.125rem;font-weight:700}.post-author-name a{color:var(--blog-ink);text-decoration:none}.post-author-name a:hover{text-underline-offset:4px;text-decoration:underline}.post-author-head{color:var(--blog-muted);margin:4px 0 0;font-size:.9375rem}.post-author-bio{font-family:var(--serif);font-optical-sizing:auto;color:var(--blog-ink);margin:12px 0 0;font-size:1.0625rem;line-height:1.65}.post-author-actions{flex-wrap:wrap;align-items:center;gap:8px 16px;margin:16px 0 0;display:flex}.post-author-links{flex-wrap:wrap;gap:0 16px;display:flex}.post-author-links a{min-height:44px;color:var(--accent-signal);align-items:center;font-size:.9375rem;font-weight:600;text-decoration:none;display:inline-flex}.post-author-links a:hover{text-underline-offset:4px;text-decoration:underline}.blog-btn{border:1px solid var(--cta-bg);background:var(--cta-bg);min-height:44px;color:var(--cta-text);font:700 .9375rem/1 var(--sans);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:0 20px;text-decoration:none;transition:opacity .16s,transform .12s;display:inline-flex}.blog-btn:hover{background:var(--cta-hover);border-color:var(--cta-hover)}.blog-btn:active{transform:scale(.98)}.blog-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.blog-btn.ghost{color:var(--blog-ink);border-color:var(--blog-rule);background:0 0}.blog-btn.ghost:hover{border-color:var(--blog-accent);color:var(--blog-accent);opacity:1}.blog-btn.done{color:var(--blog-accent);cursor:default;background:0 0;border-color:#0000;padding:0}.post-cite{border-top:1px solid var(--blog-rule);margin:40px 0 0}.post-cite summary{cursor:pointer;min-height:48px;color:var(--blog-muted);align-items:center;font-size:.9375rem;font-weight:600;list-style:none;display:flex}.post-cite summary::-webkit-details-marker{display:none}.post-cite summary:hover{color:var(--blog-ink)}.post-cite summary:after{content:"+";margin-left:8px;font-weight:400}.post-cite[open] summary:after{content:"–"}.post-cite-body{flex-wrap:wrap;align-items:flex-start;gap:12px 16px;padding:0 0 16px;display:flex}.post-cite-body p{font-family:var(--serif);color:var(--blog-ink);flex:280px;margin:0;font-size:1rem;line-height:1.6}.post-next{max-width:var(--measure);padding:0 20px 96px;padding-left:max(20px, env(safe-area-inset-left));padding-right:max(20px, env(safe-area-inset-right));font-family:var(--sans);margin:80px auto 0}.post-next-head{border-bottom:2px solid var(--blog-ink);justify-content:space-between;align-items:baseline;gap:16px;padding:0 0 16px;display:flex}.post-next-head h2{letter-spacing:-.02em;margin:0;font-size:1.5rem;font-weight:700}.post-next-head a{min-height:44px;color:var(--accent-signal);align-items:center;gap:4px;font-size:.9375rem;font-weight:600;text-decoration:none;display:inline-flex}.post-next-head a:hover{text-underline-offset:4px;text-decoration:underline}.story-list{margin:0;padding:0;list-style:none}.story{border-bottom:1px solid var(--blog-rule)}.story>a{color:inherit;padding:24px 0;text-decoration:none;display:block}.story-meta{font:600 .875rem/1.4 var(--sans);color:var(--blog-muted);margin:0 0 8px}.story-meta b{color:var(--blog-accent);font-weight:600}.story-title{font:700 1.3125rem/1.25 var(--sans);letter-spacing:-.018em;color:var(--blog-ink);text-wrap:balance;margin:0}.story>a:hover .story-title{text-underline-offset:.16em;text-decoration:underline;text-decoration-thickness:2px}.story-dek{font-family:var(--serif);font-optical-sizing:auto;color:var(--blog-muted);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:8px 0 0;font-size:1.0625rem;line-height:1.6;display:-webkit-box;overflow:hidden}.bi-wrap{max-width:var(--measure);padding:112px 20px 96px;padding-left:max(20px, env(safe-area-inset-left));padding-right:max(20px, env(safe-area-inset-right));font-family:var(--sans);margin:0 auto}@media (min-width:768px){.bi-wrap{padding-top:144px}}.bi-mast h1{font:700 clamp(2.5rem, 1.6rem + 4vw, 4rem)/1 var(--sans);letter-spacing:-.04em;color:var(--blog-ink);text-wrap:balance;margin:0}.bi-dek{max-width:36rem;font-family:var(--serif);font-optical-sizing:auto;color:var(--blog-muted);text-wrap:pretty;margin:20px 0 0;font-size:clamp(1.1875rem,1.1rem + .4vw,1.375rem);line-height:1.55}.bi-mine{min-height:44px;color:var(--accent-signal);align-items:center;gap:8px;margin-top:12px;font-weight:600;text-decoration:none;display:inline-flex}.bi-mine:hover{text-underline-offset:4px;text-decoration:underline}.bi-cats{border-top:2px solid var(--blog-ink);border-bottom:1px solid var(--blog-rule);flex-wrap:wrap;gap:0 20px;margin:40px 0 0;padding:4px 0;display:flex}.bi-cats button{cursor:pointer;min-height:44px;font:600 .9375rem/1 var(--sans);color:var(--blog-muted);text-underline-offset:8px;background:0 0;border:none;padding:0;-webkit-text-decoration:underline #0000;text-decoration:underline #0000;text-decoration-thickness:2px;transition:color .16s,text-decoration-color .16s}.bi-cats button:hover{color:var(--blog-ink)}.bi-cats button[aria-pressed=true]{color:var(--accent-signal);text-decoration-color:currentColor}.bi-tag{color:var(--blog-muted);align-items:center;gap:8px;margin:16px 0 0;font-size:.9375rem;display:flex}.bi-tag strong{color:var(--blog-ink)}.bi-tag button{width:44px;height:44px;color:var(--blog-muted);cursor:pointer;background:0 0;border:none;border-radius:50%;place-items:center;margin:-8px 0;display:inline-grid}.bi-tag button:hover{color:var(--blog-ink);background:var(--blog-wash)}.bi-lead{border-bottom:1px solid var(--blog-rule);padding:40px 0}.bi-lead>a{color:inherit;text-decoration:none;display:block}.bi-lead-cover{aspect-ratio:16/9;background:var(--blog-wash);border-radius:4px;margin:0 0 24px;position:relative;overflow:hidden}.bi-lead-title{font:700 clamp(1.75rem, 1.3rem + 2vw, 2.5rem)/1.12 var(--sans);letter-spacing:-.03em;color:var(--blog-ink);text-wrap:balance;margin:0}.bi-lead>a:hover .bi-lead-title{text-underline-offset:.14em;text-decoration:underline;text-decoration-thickness:2px}.bi-lead-dek{font-family:var(--serif);font-optical-sizing:auto;color:var(--blog-ink);text-wrap:pretty;margin:16px 0 0;font-size:1.1875rem;line-height:1.6}.bi-lead-more{color:var(--accent-signal);align-items:center;gap:8px;margin-top:20px;font-weight:700;display:inline-flex}.bi-section{color:var(--blog-ink);border-bottom:1px solid var(--blog-rule);margin:48px 0 0;padding:0 0 12px;font-size:1rem;font-weight:700}.bi-loading{flex-direction:column;gap:40px;padding:40px 0 0;display:flex}.bi-skel{flex-direction:column;gap:12px;display:flex}.bi-empty{padding:56px 0 0}.bi-empty h2{letter-spacing:-.024em;text-wrap:balance;margin:0;font-size:clamp(1.5rem,1.2rem + 1.2vw,2rem);font-weight:700}.bi-empty>p{font-family:var(--serif);color:var(--blog-muted);margin:12px 0 24px;font-size:1.1875rem;line-height:1.6}.bi-empty .lc-inline{margin-top:0}.bi-write{border-top:2px solid var(--blog-ink);margin:96px 0 0;padding:32px 0 0}.bi-write h2{letter-spacing:-.02em;margin:0;font-size:1.5rem;font-weight:700}.bi-write>p{max-width:36rem;font-family:var(--serif);color:var(--blog-muted);margin:12px 0 0;font-size:1.125rem;line-height:1.6}.bi-write-actions{flex-wrap:wrap;gap:12px;margin:24px 0 0;display:flex}.bi-ok{color:var(--blog-accent);align-items:center;gap:8px;margin:20px 0 0;font-weight:600;display:flex}.bi-form{background:var(--blog-wash);border-radius:8px;flex-direction:column;gap:16px;margin:32px 0 0;padding:24px;display:flex}.bi-form-note{color:var(--blog-muted);margin:0;font-size:.9375rem;line-height:1.6}.bi-form .bi-write-actions{margin:0}.blog-dialog-backdrop{z-index:200;background:#070f1c99;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.blog-dialog{background:var(--blog-bg);width:100%;max-width:420px;color:var(--blog-ink);border:1px solid var(--blog-rule);font-family:var(--sans);border-radius:12px;padding:32px}.blog-dialog h2{letter-spacing:-.016em;margin:0 0 8px;font-size:1.25rem;font-weight:700}.blog-dialog p{color:var(--blog-muted);margin:0 0 20px;font-size:.9375rem;line-height:1.6}.blog-dialog-form{flex-direction:column;gap:12px;display:flex}.blog-dialog-row{flex-wrap:wrap;gap:8px;display:flex}.blog-dialog-row>*{flex:auto}.blog-dialog-err{color:var(--status-err-text);background:var(--status-err-bg);border-radius:8px;margin:0;padding:8px 12px;font-size:.875rem}.blog-dialog-ok{color:var(--blog-accent);align-items:center;gap:8px;margin:0;font-weight:700;display:flex}.post-state{text-align:center;min-height:70vh;font-family:var(--sans);place-items:center;padding:32px 20px;display:grid}.post-state h1{letter-spacing:-.02em;margin:0 0 16px;font-size:1.75rem;font-weight:700}.post-state svg{color:var(--blog-muted)}@media (prefers-reduced-motion:reduce){.share-btn,.blog-btn,.post-tags a,.post-body a,.bi-cats button{transition:none}.blog-btn:active{transform:none}}
