@font-face{font-family:Geist;src:url(/fonts/Geist-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Geist;src:url(/fonts/Geist-Medium.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Geist Mono;src:url(/fonts/GeistMono-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}:root{--bg: #fafafa;--fg: #111111;--muted: #8a8a8a;--muted-2: #6a6a6a;--rule: #e8e8e8;--code-bg: #f2f2f2;--accent: #2a5bd7;--accent-underline: rgba(42, 91, 215, .35);--col: 560px;--col-article: 620px;--left: 38%;--font-sans: "Geist", ui-sans-serif, system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;--font-mono: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--fg)}body{font-family:var(--font-sans);font-size:15px;line-height:1.62;letter-spacing:-.005em;font-feature-settings:"ss01","ss02","cv11";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}::selection{background:#2a5bd726}.page{min-height:100vh;padding:112px 24px 160px;max-width:100%}.page.page-article{padding:80px 24px 160px}.page-article .me{margin-bottom:96px}.col{width:var(--col);max-width:calc(100vw - 48px);margin-left:var(--left)}.col-article{width:var(--col-article)}@media(max-width:900px){.col{margin-left:0;margin-right:auto}}.me h1{font-size:15px;font-weight:500;margin:0 0 2px;letter-spacing:-.005em}.me h1 a{color:inherit;text-decoration:none;transition:color .18s ease}.me h1 a:hover{color:var(--accent)}.me .role{color:var(--muted-2);margin:0}section{margin-top:96px}.sec-title{font-size:15px;font-weight:500;margin:0 0 18px;color:var(--fg)}p{margin:0 0 14px;color:var(--muted-2)}p:last-child{margin-bottom:0}a.link{color:var(--accent);text-decoration:underline;text-decoration-color:var(--accent-underline);text-underline-offset:3px;text-decoration-thickness:1px;transition:text-decoration-color .2s ease,color .2s ease}a.link:hover{text-decoration-color:var(--accent)}ul.writing{list-style:none;padding:0;margin:0}ul.writing li{margin:0;padding:14px 0}ul.writing li:first-child{padding-top:0}ul.writing li:last-child{padding-bottom:0}ul.writing a{display:block;color:var(--fg);text-decoration:none;transition:opacity .18s ease}ul.writing a:hover .title{color:var(--accent)}ul.writing .title{display:block;color:var(--fg);font-weight:500;letter-spacing:-.005em;transition:color .18s ease}ul.writing .desc{display:block;color:var(--muted-2);margin-top:2px}.newsletter-form{display:flex;align-items:stretch;gap:0;border:1px solid var(--rule);border-radius:8px;overflow:hidden;background:#fff;margin-top:14px}.newsletter-form input{flex:1;min-width:0;border:0;outline:none;padding:10px 14px;font:inherit;font-size:14px;color:var(--fg);background:transparent}.newsletter-form input::placeholder{color:var(--muted)}.newsletter-form button{border:0;background:#111;color:#fff;font:inherit;font-size:13px;font-weight:500;padding:0 18px;cursor:pointer;margin:4px;border-radius:6px;transition:background-color .18s ease}.newsletter-form button:hover{background:#000}footer.site-footer{margin-top:120px;color:var(--muted);font-size:13px}.preview{position:fixed;pointer-events:none;top:0;left:0;width:280px;height:170px;background:#fff;border:1px solid var(--rule);border-radius:10px;box-shadow:0 20px 40px -20px #0000002e,0 2px 6px #0000000a;overflow:hidden;opacity:0;transform:translateZ(0) scale(.96);transform-origin:top left;transition:opacity .18s ease,transform .22s cubic-bezier(.2,.7,.2,1);z-index:50}.preview.show{opacity:1;transform:translateZ(0) scale(1)}.preview-inner{padding:16px;height:100%;display:flex;flex-direction:column;gap:10px}.preview-kicker{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.preview-title{font-size:14px;font-weight:500;line-height:1.35;color:var(--fg)}.preview-body{font-size:12.5px;line-height:1.5;color:var(--muted-2);flex:1;overflow:hidden;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical}.preview-meta{display:flex;justify-content:space-between;font-family:var(--font-mono);font-size:10.5px;color:var(--muted);letter-spacing:.02em}@media(hover:none){.preview{display:none}}.article-title{font-size:15px;font-weight:500;color:var(--fg);letter-spacing:-.005em;margin:0 0 18px}.article-date{font-family:var(--font-mono);font-size:13px;color:var(--muted);margin:0 0 48px;letter-spacing:.02em}article p{margin:0 0 14px;color:var(--muted-2)}article p:last-child{margin-bottom:0}article p strong,article li strong{color:var(--fg);font-weight:500}article h2{font-size:15px;font-weight:550;color:var(--fg);letter-spacing:-.005em;margin:48px 0 14px}article h3{font-size:15px;font-weight:700;color:var(--fg);margin:28px 0 10px}article a{color:var(--accent);text-decoration:underline;text-decoration-color:var(--accent-underline);text-underline-offset:3px;text-decoration-thickness:1px;transition:text-decoration-color .2s ease}article a:hover{text-decoration-color:var(--accent)}article ul{padding-left:0;list-style:none;margin:0 0 14px}article ul li{position:relative;padding-left:18px;margin-bottom:6px;color:var(--muted-2)}article ul li:before{content:"";position:absolute;left:2px;top:10px;width:4px;height:4px;border-radius:50%;background:var(--muted)}article ol{padding-left:22px;margin:0 0 14px;color:var(--muted-2)}article ol li{margin-bottom:6px}article ol li::marker{color:var(--muted);font-variant-numeric:tabular-nums}article code{font-family:var(--font-mono);font-size:.88em;background:var(--code-bg);color:var(--fg);padding:1px 6px;border-radius:4px}article pre{font-family:var(--font-mono);font-size:12.5px;line-height:1.6;background:var(--code-bg);color:var(--fg);padding:14px 16px;border-radius:8px;overflow-x:auto;margin:18px 0 20px;border:1px solid var(--rule)}article pre code{background:transparent;padding:0;border-radius:0;font-size:inherit}article pre.astro-code{background:var(--code-bg)!important}article blockquote{margin:18px 0;padding:2px 0 2px 14px;border-left:2px solid var(--rule);color:var(--muted-2)}article blockquote p{margin:0}article hr{border:0;border-top:1px solid var(--rule);margin:32px 0}.also{margin-top:96px}.also h2{font-size:15px;font-weight:500;color:var(--fg);margin:0 0 18px}.also ul{list-style:none;padding:0;margin:0}.also li{padding:14px 0}.also li:first-child{padding-top:0}.also a{display:block;color:var(--fg);text-decoration:none;font-weight:500;transition:color .18s ease}.also a:hover{color:var(--accent)}.also .desc{display:block;color:var(--muted-2);font-weight:400;margin-top:2px}.notfound{display:flex;flex-direction:column;gap:14px}.notfound-code{font-family:var(--font-mono);font-size:13px;color:var(--muted);letter-spacing:.04em;text-transform:uppercase;margin:0}
