@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_next/static/media/inter-cyrillic-ext-wght-normal.460bdf14.woff2) format("woff2-variations");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_next/static/media/inter-cyrillic-wght-normal.491cbc05.woff2) format("woff2-variations");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_next/static/media/inter-greek-ext-wght-normal.23aae568.woff2) format("woff2-variations");unicode-range:u+1f??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_next/static/media/inter-greek-wght-normal.4449bf7a.woff2) format("woff2-variations");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_next/static/media/inter-vietnamese-wght-normal.113a630f.woff2) format("woff2-variations");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_next/static/media/inter-latin-ext-wght-normal.3835a68e.woff2) format("woff2-variations");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_next/static/media/inter-latin-wght-normal.6c596dfc.woff2) format("woff2-variations");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}:root{--bg:#ffffff;--fg:#111111;--muted:#64748b;--line:#e8e8e8;--soft:#f6f6f4;--accent:#111111;--link:#0b3dff;--radius:10px;--measure:568px;color-scheme:light}:root[data-theme=dark]{--bg:#0e0e0e;--fg:#ededed;--muted:#9a9a9a;--line:#262626;--soft:#171717;--accent:#ededed;--link:#7d95ff;color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0e0e0e;--fg:#ededed;--muted:#9a9a9a;--line:#262626;--soft:#171717;--accent:#ededed;--link:#7d95ff;color-scheme:dark}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--fg);font-family:Inter Variable,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.43;font-size:14px;-webkit-font-smoothing:antialiased}a{color:inherit}img{max-width:100%;height:auto}.wrap{max-width:var(--measure)}.wide,.wrap{margin:0 auto;padding:0 20px}.wide{max-width:980px}.site-header{padding:45px 0 19px}.head-row{justify-content:space-between;flex-wrap:wrap}.brand-block,.head-row{display:flex;align-items:center;gap:16px}.brand-block{text-decoration:none}.brand-block .logo{width:56px;height:56px;border-radius:50%;object-fit:cover;flex:none;background:var(--soft)}.brand-name{display:block;font-size:21px;font-weight:500;letter-spacing:-.01em}.nav{display:flex;align-items:center;gap:20px;font-size:16px}.nav a{text-decoration:none;color:var(--link)}.nav a:hover{text-decoration:underline;text-underline-offset:3px}.nav .rss{color:#e8702a;display:inline-flex}.site-footer{margin-top:90px;padding:24px 0 48px;color:var(--muted);font-size:14px}.block{padding-top:46px}.block h2{font-size:21px;font-weight:600;line-height:1.3;margin:0 0 12px;letter-spacing:-.015em}.block p{margin:0 0 22px}.strong-link{font-weight:600;text-decoration:none}.plain-link:hover,.strong-link:hover{text-decoration:underline;text-underline-offset:3px}.plain-link{text-decoration:none}.dot-list{list-style:disc;padding-left:28px;margin:0 0 22px}.dot-list li{padding:8px 0}.dot-list li::marker{font-size:.9em}.dot-list li{display:list-item}.dot-list a{text-decoration:none}.dot-list li>a{display:inline}.dot-list a:hover{text-decoration:underline;text-underline-offset:3px}.dot-list time{float:right;color:var(--muted);margin-left:16px}@media (max-width:560px){.dot-list time{float:none;display:block;font-size:14px}}.hero{padding:72px 0 24px}.avatar{width:72px;height:72px;border-radius:50%;object-fit:cover;background:var(--soft);display:block;margin-bottom:22px}.hero h1{font-size:34px;line-height:1.2;margin:0 0 8px;letter-spacing:-.02em}.hero .tagline{color:var(--muted);margin:0 0 22px;font-size:18px}.hero .bio p{margin:0 0 14px}.hero .links{display:flex;gap:18px;flex-wrap:wrap;margin-top:8px;font-size:15px}.hero .links a{color:var(--muted);text-decoration:underline;text-underline-offset:3px;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line)}.hero .links a:hover{color:var(--fg)}.section-title{font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:56px 0 8px;font-weight:600}.row-list{list-style:none;margin:0;padding:0}.row-item{display:flex;gap:16px;justify-content:space-between;align-items:baseline;padding:14px 0;border-bottom:1px solid var(--line);text-decoration:none}.row-item:hover .row-title{text-decoration:underline;text-underline-offset:3px}.row-title{font-weight:550}.row-date{font-size:14px;white-space:nowrap;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.more,.row-date{color:var(--muted)}.more{display:inline-block;margin-top:18px;font-size:15px;text-decoration:none}.more:hover{color:var(--fg)}.page-head{padding:56px 0 8px}.page-head h1{margin:0 0 6px;font-size:32px;letter-spacing:-.02em}.page-head p{margin:0;color:var(--muted)}.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:22px 0 8px}.search{flex:1 1 220px;display:flex}.search input{width:100%;font:inherit;font-size:16px;padding:10px 14px;border:1px solid var(--line);border-radius:999px;background:var(--bg);color:var(--fg);outline:none}.search input:focus{border-color:var(--muted)}.chips{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}.chip{font-size:13px;padding:4px 12px;border-radius:999px;border:1px solid var(--line);text-decoration:none;color:var(--muted);background:var(--bg);text-transform:capitalize}.chip.on,.chip:hover{color:var(--bg);background:var(--fg);border-color:var(--fg)}.card{display:grid;grid-template-columns:1fr;grid-gap:6px;gap:6px;padding:26px 0;border-bottom:1px solid var(--line);text-decoration:none}.card.has-cover{grid-template-columns:1fr 168px;gap:22px;align-items:start}.card h2{font-size:21px;line-height:1.3;margin:0 0 6px;letter-spacing:-.01em}.card:hover h2{text-decoration:underline;text-underline-offset:3px}.card p{margin:0 0 8px;color:var(--muted);font-size:16px}.card .meta{font-size:13px;color:var(--muted)}.card img{width:168px;height:112px;object-fit:cover;border-radius:var(--radius);background:var(--soft)}@media (max-width:560px){.card.has-cover{grid-template-columns:1fr}.card.has-cover img{order:-1;width:100%;height:auto;aspect-ratio:16/9}}.pager{display:flex;justify-content:space-between;margin-top:28px;font-size:15px}.pager a{color:var(--muted);text-decoration:none}.pager a:hover{color:var(--fg)}.empty{color:var(--muted);padding:40px 0}.progress{position:fixed;top:0;left:0;height:3px;width:0;background:var(--fg);z-index:50;transition:width .1s linear}.crumbs{font-size:14px;color:var(--muted);padding-top:32px}.crumbs a{text-decoration:none}.crumbs a:hover{color:var(--fg)}.post-head h1{font-size:38px;line-height:1.15;letter-spacing:-.025em;margin:14px 0}@media (max-width:560px){.post-head h1{font-size:30px}}.post-meta{color:var(--muted);font-size:14px;display:flex;gap:8px 14px;flex-wrap:wrap;align-items:center}.post-meta .tag{text-decoration:none;text-transform:capitalize}.post-meta .tag:hover{color:var(--fg)}.cover{margin:28px 0 8px}.cover img{border-radius:var(--radius)}.toc{border:1px solid var(--line);border-radius:var(--radius);padding:14px 18px;margin:24px 0;font-size:15px;background:var(--soft)}.toc summary{cursor:pointer;font-weight:600}.toc ol{margin:10px 0 0;padding-left:18px}.toc li{margin:4px 0}.toc li.l3{margin-left:16px;list-style:circle}.toc a{text-decoration:none;color:var(--muted)}.toc a:hover{color:var(--fg)}.prose{line-height:1.75;margin-top:28px;overflow-wrap:anywhere}.prose>:first-child{margin-top:0}.prose p{margin:0 0 1.25em}.prose h2{font-size:26px;line-height:1.25;margin:2em 0 .6em}.prose h2,.prose h3{scroll-margin-top:24px}.prose h3{font-size:21px;line-height:1.3;margin:1.7em 0 .5em}.prose h4{font-size:18px;margin:1.5em 0 .4em}.prose a{color:var(--link);text-underline-offset:3px}.prose ol,.prose ul{padding-left:1.4em;margin:0 0 1.25em}.prose li{margin:.3em 0}.prose blockquote{margin:1.5em 0;padding:2px 0 2px 18px;border-left:3px solid var(--fg);color:var(--muted)}.prose blockquote p{margin:0 0 .6em}.prose img{display:block;margin:1.6em auto;border-radius:var(--radius)}.prose hr{border:0;border-top:1px solid var(--line);margin:2.2em 0}.prose code{background:var(--soft);padding:2px 6px;border-radius:6px;font-size:.88em}.prose pre{background:var(--soft);padding:14px 16px;border-radius:var(--radius);overflow-x:auto}.prose pre code{padding:0;background:none}.prose .twitter-tweet{margin:1.5em auto!important}.embed-video{position:relative;aspect-ratio:16/9;margin:1.6em 0;border-radius:var(--radius);overflow:hidden;background:#000}.embed-video iframe{position:absolute;inset:0;width:100%;height:100%;border:0}.share{display:flex;gap:8px;flex-wrap:wrap;margin:40px 0 0;padding-top:22px;border-top:1px solid var(--line);align-items:center;font-size:14px;color:var(--muted)}.btn-s{font:inherit;font-size:14px;padding:6px 14px;border-radius:999px;border:1px solid var(--line);background:var(--bg);color:var(--fg);text-decoration:none;cursor:pointer}.btn-s:hover{background:var(--soft)}.author{display:flex;gap:14px;align-items:center;margin:36px 0 0}.author img{width:48px;height:48px;border-radius:50%;object-fit:cover;background:var(--soft)}.author strong{display:block;font-size:15px}.author span{color:var(--muted);font-size:14px}.related{margin-top:56px}.prevnext{display:grid;grid-template-columns:1fr 1fr;grid-gap:14px;gap:14px;margin-top:40px}.prevnext a{border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;text-decoration:none;font-size:15px}.prevnext a:hover{background:var(--soft)}.prevnext small{display:block;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.06em;margin-bottom:4px}.prevnext .r{text-align:right}@media (max-width:560px){.prevnext{grid-template-columns:1fr}}.notfound{padding:96px 0;text-align:left}.notfound h1{font-size:56px;margin:0;letter-spacing:-.03em}.notfound p{color:var(--muted)}@media print{.prevnext,.progress,.related,.share,.site-footer,.site-header{display:none!important}}.back{color:var(--muted);text-decoration:none}.back:hover{color:var(--fg)}.back-row{margin:46px 0 0;font-size:17px}.post-head{padding-top:22px}.post-head h1{font-size:21px;font-weight:600;line-height:1.3;letter-spacing:-.015em;margin:0 0 12px}.post-head .lede{margin:0 0 22px}.post-meta{color:var(--fg);font-style:italic;margin:0;display:block}.cover{margin:44px 0 0}.cover img{width:100%;aspect-ratio:5/2;object-fit:cover;border-radius:12px;display:block}.prose{font-size:17px;line-height:1.65;margin-top:0}.prose h2{font-size:21px;font-weight:600;line-height:1.3;letter-spacing:-.015em;margin:60px 0 12px}.prose h3{font-size:18px;font-weight:600;line-height:1.4;margin:36px 0 10px}.prose p{margin:0 0 22px}.prose ol,.prose ul{margin:0 0 22px;padding-left:28px}.prose img{margin:28px 0}.plain-search{font:inherit;width:100%;padding:10px 14px;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--fg);outline:none;margin:0 0 18px}.plain-search:focus{border-color:var(--muted)}.pager{margin-top:10px}.post-head .post-meta{font-size:17px;margin:0 0 22px}.cover+.prose{margin-top:44px}.site-header{padding:32px 0 14px}.brand-block{gap:12px}.brand-block .logo{width:39px;height:39px}.brand-name{font-size:15.5px}.nav{font-size:14px;gap:14px}.site-footer{margin-top:64px;padding:16px 0 34px;font-size:12.5px}.block{padding-top:32px}.block h2{font-size:15px;line-height:1.35;margin:0 0 8px}.block p,.dot-list{margin:0 0 16px}.dot-list{padding-left:20px}.dot-list li{padding:6px 0}.dot-list time{margin-left:12px}.back-row{margin:41px 0 0;font-size:14px}.post-head{padding-top:17px}.post-head h1{font-size:15px;line-height:1.35;margin:0 0 7px}.post-head .lede{margin:0 0 16px}.post-head .post-meta{font-size:14px;margin:0 0 16px}.cover{margin:32px 0 0}.cover img{border-radius:8px}.cover+.prose{margin-top:32px}.prose{font-size:14px;line-height:1.43}.prose h2{font-size:15px;line-height:1.35;margin:48px 0 8px}.prose h3{font-size:14px;margin:28px 0 6px}.prose p{margin:0 0 16px}.prose ol,.prose ul{margin:0 0 16px;padding-left:20px}.prose img{margin:20px 0;border-radius:8px}.plain-search{font-size:14px;padding:7px 11px;border-radius:8px;margin:0 0 12px}@media (max-width:560px){.back-row,.nav,.post-head .post-meta,.prose,body{font-size:16px}.block h2,.post-head h1,.prose h2{font-size:17px}.dot-list time{font-size:14px}}.site-end{height:72px}.signature{display:block;width:170px;height:auto;margin:28px 12% 0 auto}:root[data-theme=dark] .signature{filter:invert(1)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .signature{filter:invert(1)}}.site-header{padding-top:52px}.cover img,.prose figure img,.prose img{border-radius:9px}.prose figure{margin:20px 0}.prose figure img{margin:0}.prose img{max-width:100%;height:auto}