@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-wght-normal.BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-vietnamese-wght-normal.6IgcOCM7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-ext-wght-normal.DC-KSUi6.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-wght-normal.BgDaEnEv.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-ext-wght-normal.X_5orZeX.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-cyrillic-wght-normal.DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-symbols2-wght-normal.CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-vietnamese-wght-normal.DadHysG0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-ext-wght-normal.Bwz-egvJ.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-mono-latin-wght-normal.XN7g48iV.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#fff;--ink:#171717;--text:#404040;--soft:#5c5c5c;--muted:#737373;--line:#e8e8e8;--edge:#d4d4d4;--wash:#f5f5f5;--sans:"Geist Variable", system-ui, -apple-system, "Segoe UI", sans-serif;--mono:"Geist Mono Variable", ui-monospace, Menlo, monospace;--label:104px;--label-gap:20px;color-scheme:light}*,:before,:after{box-sizing:border-box}body{background:var(--bg);color:var(--ink);font:15px/1.6 var(--sans);-webkit-font-smoothing:antialiased;margin:0;overflow-x:clip}a{color:var(--ink);text-decoration:none}a:focus-visible{outline:2px solid var(--ink);outline-offset:3px;border-radius:4px}img{max-width:100%;height:auto}h1,h2,h3{text-wrap:balance}.site{max-width:700px;margin:0 auto;padding-block:48px 56px;padding-inline:20px}.site-header nav{gap:18px;margin-bottom:44px;display:flex}.site-header a{color:var(--muted)}.site-header a:hover,.site-header a[aria-current]{color:var(--ink)}.site-footer{border-top:1px solid var(--line);color:var(--muted);flex-wrap:wrap;gap:8px 18px;margin-top:56px;padding-top:20px;font-size:13px;display:flex}.site-footer a{color:var(--muted)}.site-footer a:hover{color:var(--ink)}.avatar{object-fit:cover;border-radius:50%;display:block;box-shadow:0 0 0 1px #0000000f}.avatar-large{width:200px;height:200px;margin:8px 0 28px}.me{grid-template-columns:var(--label) minmax(0, 1fr);gap:var(--label-gap);align-items:center;margin-bottom:24px;display:grid}.me .avatar{width:var(--label);height:var(--label)}.me h1{letter-spacing:-.015em;margin:0;font-size:19px;font-weight:600;line-height:1.3}.me p{color:var(--muted);margin:0}.intro{color:var(--text)}.intro p{margin:0 0 8px}.intro strong,.prose strong{color:var(--ink);font-weight:600}.section-head{justify-content:space-between;align-items:baseline;margin:40px 0 14px;display:flex}.section-head h2{color:var(--muted);margin:0;font-size:13px;font-weight:400}.more{color:var(--muted);font-size:13px}.more:after{content:" →"}.more:hover{color:var(--ink)}.tiles{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:0;padding:0;list-style:none;display:grid}main{container-type:inline-size}@property --fade-left{syntax:"<length>";inherits:false;initial-value:0}@property --fade-right{syntax:"<length>";inherits:false;initial-value:0}.strip{--margin:calc(50vw - 50cqw);--fade:clamp(160px, 30vw, 480px);margin-inline:calc(-1 * var(--margin));cursor:grab;mask-image:linear-gradient(to right, transparent, #000 var(--fade-left), #000 calc(100% - var(--fade-right)), transparent);transition:--fade-left .3s,--fade-right .3s;overflow:hidden}.strip.can-prev{--fade-left:var(--fade)}.strip.can-next{--fade-right:var(--fade)}.strip:active{cursor:grabbing}.strip .tiles{padding-left:var(--margin);touch-action:pan-y pinch-zoom;gap:0;display:flex}.strip .tiles>li{flex:0 0 220px;min-width:0;margin-right:14px}.strip .tiles>li:last-child{margin-right:var(--margin)}.strip img{-webkit-user-drag:none;user-select:none}.section-head .actions{align-items:baseline;gap:14px;display:flex}.arrow{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0;padding:0;font-size:13px}.arrow:hover{color:var(--ink)}.arrow:disabled{color:var(--edge);cursor:default}.tile{aspect-ratio:1;border:1px solid var(--line);background:var(--bg);border-radius:10px;flex-direction:column;transition:border-color .2s;display:flex}.tile:hover{border-color:var(--edge)}.tile .frame{border-bottom:1px solid var(--line);border-radius:9px 9px 0 0;flex:1 1 0;min-height:56px;position:relative;overflow:hidden}.tile .frame img{object-fit:cover;width:100%;height:100%;transition:transform .25s;position:absolute;inset:0}.tile:hover .frame img{transform:scale(1.03)}.tile .body{flex-direction:column;flex:none;gap:5px;padding:11px 12px 12px;display:flex}.tile .body:only-child{flex:1}.tile h3,.tile p{-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;display:-webkit-box;overflow:hidden}.tile .body:only-child p{-webkit-line-clamp:6}.tile h3{letter-spacing:-.005em;font-size:14px;font-weight:500;line-height:1.3}.tile p{color:var(--soft);font-size:13px;line-height:1.45}.tile time{color:var(--muted);font-variant-numeric:tabular-nums;margin-top:auto;padding-top:2px;font-size:12px}.rows{gap:18px;margin:0;padding:0;list-style:none;display:grid}.rows li{grid-template-columns:var(--label) minmax(0, 1fr);gap:var(--label-gap);display:grid}.rows time{color:var(--muted);font-variant-numeric:tabular-nums}.rows h2,.rows h3{font-size:inherit;margin:0;font-weight:500}.rows p{color:var(--muted);margin:0}.rows a:hover{text-underline-offset:3px;text-decoration:underline;text-decoration-color:var(--line)}.page-title{letter-spacing:-.02em;margin:0 0 6px;font-size:22px;font-weight:600}.lede{color:var(--muted);margin:0 0 32px}.year{font:400 12.5px var(--mono);color:var(--muted);margin:32px 0 14px}.lede+section .year{margin-top:0}.back{color:var(--muted);margin-bottom:16px;font-size:13px;display:inline-block}.back:hover{color:var(--ink)}.post h1{letter-spacing:-.025em;margin:0 0 6px;font-size:26px;font-weight:600;line-height:1.2}.meta{color:var(--muted);font-variant-numeric:tabular-nums;margin:0 0 24px;font-size:13.5px}.hero{margin:0 0 28px}.hero img{aspect-ratio:12/5;object-fit:cover;border-radius:12px;width:100%;display:block;box-shadow:0 0 0 1px #0000000f}.prose{color:var(--text)}.prose p{margin:0 0 16px}.prose h2{color:var(--ink);letter-spacing:-.015em;margin:32px 0 10px;font-size:17px;font-weight:600}.prose h3{color:var(--ink);margin:24px 0 8px;font-size:15px;font-weight:600}.prose ul,.prose ol{margin:0 0 16px;padding-left:20px}.prose li{margin-bottom:4px}.intro a,.prose a{text-underline-offset:3px;text-decoration:underline;text-decoration-color:var(--edge)}.intro a:hover,.prose a:hover{text-decoration-color:var(--ink)}.prose blockquote{border-left:2px solid var(--line);color:var(--muted);margin:0 0 16px;padding-left:14px}.prose img{border-radius:8px}.prose pre{font:13px/1.6 var(--mono);border-radius:8px;margin:0 0 16px;padding:14px 18px;overflow-x:auto;background:var(--wash)!important}code{font-family:var(--mono);font-size:.9em}.byline{border-top:1px solid var(--line);grid-template-columns:48px minmax(0,1fr);align-items:center;gap:12px;margin:40px 0 24px;padding-top:24px;display:grid}.byline .avatar{width:48px;height:48px}.byline p{color:var(--muted);margin:0;font-size:13.5px;line-height:1.45}.byline b{color:var(--ink);font-weight:500}.byline a{color:var(--muted);text-underline-offset:2px;text-decoration:underline}.pager{justify-content:space-between;gap:16px;display:flex}.pager a{gap:2px;max-width:48%;font-size:14px;font-weight:500;line-height:1.35;display:grid}.pager span{color:var(--muted);font-size:12.5px;font-weight:400}.pager .older{text-align:right;margin-left:auto}.pager a:hover{text-underline-offset:3px;text-decoration:underline;text-decoration-color:var(--line)}@media (width<=560px){.site{padding-block:32px 48px}.site-header nav{margin-bottom:32px}.tiles{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.strip .tiles>li{flex-basis:200px;margin-right:12px}:root{--label:80px;--label-gap:16px}.avatar-large{width:160px;height:160px}.post h1{font-size:23px}}@media (prefers-reduced-motion:reduce){.tile,.tile .frame img{transition:none}}
