:root{color-scheme:light;--font-sans:"Google Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"Google Sans Code", ui-monospace, "SFMono-Regular", Menlo, monospace;--gutter:clamp(20px, 5vw, 76px);--max:1180px;--article-max:800px;--paper:#fdfcfa;--paper2:#fff;--ink:#1c1814;--ink2:#5b544a;--ink3:#767063;--line:#1c181424;--accent:#1c1814;--wash:#f1f0ed;--ghost:#1c18140b;--imgbg:#ebe7de;--code-bg:var(--wash);--focus-ring:var(--accent);--cta-bg:var(--accent);--cta-fg:var(--paper);--cta-muted:#b8b0a6;--cta-line:#fdfcfa2e;--cta-field:#fdfcfa0f;--cta-placeholder:#fdfcfa80;--cta-error:#f2b8a8}:root[data-theme=dark]{color-scheme:dark;--paper:#14120f;--paper2:#1b1814;--ink:#f4eee3;--ink2:#aaa298;--ink3:#9a938a;--line:#f4eee326;--accent:#fff;--wash:#1f1c18;--ghost:#f4eee30e;--imgbg:#242019;--code-bg:var(--paper2);--cta-muted:#6f6961;--cta-line:#14120f2e;--cta-field:#14120f0d;--cta-placeholder:#14120f80;--cta-error:#b3261e}*,:before,:after{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{background:var(--paper);min-width:320px;min-height:100vh;color:var(--ink);font:400 16px/1.5 var(--font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-synthesis:none;margin:0}a{color:var(--ink)}a:hover{color:var(--ink2)}button,input{font:inherit;color:inherit}button{cursor:pointer}img{max-width:100%;display:block}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:30;background:var(--ink);color:var(--paper);font:500 13px/1 var(--font-sans);opacity:0;border-radius:999px;padding:10px 16px;text-decoration:none;position:absolute;top:12px;left:12px;transform:translateY(-200%)}.skip-link:focus-visible{opacity:1;transform:none}.pill{font:500 12.5px/1 var(--font-sans);color:var(--ink);white-space:nowrap;border:1px solid #0000;border-radius:999px;align-items:center;gap:6px;text-decoration:none;display:inline-flex}.pill--accent{background:var(--accent);color:var(--paper);padding:8px 14px}.pill--tag{background:var(--paper);border-color:var(--line);padding:9px 16px}.meta{color:var(--ink3);margin:0;font-size:12.5px;line-height:1.4}.back-link{font:500 11px/1 var(--font-sans);letter-spacing:.14em;text-transform:uppercase;color:var(--ink2);text-decoration:none;display:inline-block}.back-link:hover{color:var(--ink)}.post-cover-ghost{font:400 74px/.8 var(--font-sans);letter-spacing:-.04em;color:var(--ghost);pointer-events:none;position:absolute;bottom:14px;left:20px}.site-header{z-index:20;padding:12px var(--gutter);background:var(--paper);justify-content:space-between;align-items:center;gap:20px;display:flex;position:sticky;top:0}.wordmark{font:400 18px/1 var(--font-sans);letter-spacing:-.015em;color:var(--ink);white-space:nowrap;text-decoration:none}.wordmark:hover{color:var(--ink)}.wordmark strong{font-weight:700}.site-nav{align-items:center;gap:clamp(16px,2.4vw,34px);display:flex}.theme-toggle{border:1px solid var(--line);width:30px;height:30px;color:var(--ink2);background:0 0;border-radius:999px;place-items:center;padding:0;transition:color .16s,border-color .16s;display:grid}.theme-toggle:hover{color:var(--ink);border-color:var(--ink3)}.theme-toggle svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:15px;height:15px;display:block}.theme-toggle .icon-sun,:root[data-theme=dark] .theme-toggle .icon-moon{display:none}:root[data-theme=dark] .theme-toggle .icon-sun{display:block}.reading-progress{height:3px;position:absolute;bottom:0;left:0;right:0}.reading-progress-bar{background:var(--accent);transform-origin:0;width:100%;height:100%;display:block;transform:scaleX(0)}.hero{padding:clamp(40px, 5vw, 64px) var(--gutter) clamp(40px, 5vw, 60px);overflow:hidden}.hero-inner{max-width:var(--max);color:inherit;flex-wrap:wrap;align-items:center;gap:clamp(32px,4vw,60px);margin:0 auto;text-decoration:none;display:flex}.hero-inner:hover{color:inherit}.hero-cover{aspect-ratio:16/9;background:var(--imgbg);border-radius:12px;flex:340px;min-width:0;height:auto;position:relative;overflow:hidden;box-shadow:0 1px 2px #1c18140f}.hero-cover img{object-fit:cover;width:100%;height:100%;transition:transform .45s cubic-bezier(.2,.7,.2,1)}.hero-inner:hover .hero-cover img{transform:scale(1.06)}.hero-cover--empty,.post-cover--empty{background:var(--paper2);border:1px solid var(--line);position:relative}.hero-copy{flex:380px;min-width:0}.hero-kicker{flex-wrap:wrap;align-items:center;gap:8px 10px;margin-bottom:18px;display:flex}.hero-kicker .meta{white-space:nowrap;margin-left:4px;font-size:15px}.hero-title{font:400 clamp(28px, 3.6vw, 44px) / 1.1 var(--font-sans);letter-spacing:-.025em;text-wrap:pretty;overflow-wrap:anywhere;margin:0 0 20px;transition:color .16s}.hero-inner:hover .hero-title{color:var(--ink2)}.hero-summary{max-width:30em;color:var(--ink2);text-wrap:pretty;margin:0 0 24px;font-size:clamp(17px,1.6vw,19px);line-height:1.62}.hero-cta{font:500 13px/1 var(--font-sans);color:var(--ink);align-items:center;gap:8px;display:inline-flex}.hero-cta span{transition:transform .2s}.hero-inner:hover .hero-cta span{transform:translate(3px)}.hand-divider{padding:8px var(--gutter) 0;color:var(--ink3);opacity:.4}.hand-divider svg{width:100%;max-width:var(--max);height:auto;margin:0 auto;display:block}.latest{padding:clamp(44px, 5vw, 66px) var(--gutter)}.latest-grid{max-width:var(--max);grid-template-columns:minmax(220px,1fr) minmax(0,2.3fr);align-items:start;gap:clamp(32px,5vw,80px);margin:0 auto;display:grid}.latest-aside{position:sticky;top:76px}.latest-aside h2{font:400 clamp(28px, 3vw, 36px) / 1.1 var(--font-sans);letter-spacing:-.02em;margin:0 0 22px}.latest-label{color:var(--ink2);margin:0 0 12px;font-size:14px;line-height:1}.tag-filter{flex-wrap:wrap;gap:8px;display:flex}.tag-filter .pill,.empty-state .pill{color:var(--ink);border-color:var(--line);background:0 0;padding:10px 18px;font-size:13px;transition:background .16s,border-color .16s}.tag-filter .pill:hover,.empty-state .pill:hover{border-color:var(--ink3)}.tag-filter .pill[aria-pressed=true]{background:var(--wash);border-color:#0000}.latest-list{min-width:0}.posts-list{margin:0;padding:0;list-style:none}.post-item+.post-item{border-top:1px solid var(--line)}.post-row{min-height:256px;color:inherit;border-radius:24px;grid-template-columns:300px minmax(0,1fr);align-items:start;gap:clamp(20px,2.4vw,32px);margin:10px -24px;padding:28px 24px;text-decoration:none;transition:background .18s;display:grid}.post-row:hover{background:var(--wash);color:inherit}.post-cover{background:var(--imgbg);border-radius:14px;height:200px;position:relative;overflow:hidden}.post-cover img{object-fit:cover;width:100%;height:100%;transition:transform .45s cubic-bezier(.2,.7,.2,1)}.post-row:hover .post-cover img{transform:scale(1.06)}.post-copy{flex-direction:column;align-items:flex-start;gap:10px;min-width:0;min-height:200px;display:flex}.post-copy>*{flex-shrink:0}.post-tags{flex-wrap:wrap;gap:6px;display:flex}.post-copy h3{font:400 clamp(20px, 2vw, 26px) / 1.2 var(--font-sans);letter-spacing:-.02em;text-wrap:pretty;overflow-wrap:anywhere;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;margin:0;display:-webkit-box;overflow:hidden}.post-copy p{max-width:34em;color:var(--ink2);text-wrap:pretty;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;flex:none;margin:0;font-size:15px;line-height:1.55;display:-webkit-box;overflow:hidden}.post-copy .meta{white-space:nowrap;color:var(--ink3);-webkit-line-clamp:unset;line-clamp:unset;margin-top:auto;display:block;overflow:visible}.empty-state{color:var(--ink2);padding:40px 0}.empty-state p{margin:0 0 16px}.cta{padding:0 var(--gutter) clamp(52px, 6vw, 76px)}.cta-card{max-width:var(--max);background:var(--cta-bg);color:var(--cta-fg);text-align:center;border-radius:28px;flex-direction:column;align-items:center;margin:0 auto;padding:clamp(44px,6vw,72px) clamp(24px,5vw,72px);display:flex}.cta-card h2{max-width:16em;font:400 clamp(28px, 4vw, 38px) / 1.15 var(--font-sans);letter-spacing:-.02em;text-wrap:pretty;margin:0 0 10px}.cta-sub{color:var(--cta-muted);text-wrap:pretty;margin:0 0 32px;font-size:16px;font-style:italic;line-height:1.6}.subscribe-form{width:100%;max-width:440px}.subscribe-row{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.subscribe-row input{border:1px solid var(--cta-line);background:var(--cta-field);min-width:0;font:400 14px/1 var(--font-sans);color:var(--cta-fg);outline-offset:2px;border-radius:999px;flex:220px;padding:13px 16px}.subscribe-row input::placeholder{color:var(--cta-placeholder)}.subscribe-row input:disabled{opacity:.6}.subscribe-row button{background:var(--cta-fg);color:var(--cta-bg);font:500 13px/1 var(--font-sans);border:0;border-radius:999px;padding:13px 22px;transition:opacity .16s}.subscribe-row button:hover{opacity:.9}.subscribe-row button:disabled{opacity:.6;cursor:default}.form-message{min-height:1.5em;font:400 13px/1.5 var(--font-sans);color:var(--cta-muted);margin:12px 0 0}.form-message[data-state=error]{color:var(--cta-error)}.cta-card :focus-visible{outline-color:var(--cta-fg)}.article-header{padding:clamp(32px, 4vw, 48px) var(--gutter)}.article-header-inner{max-width:var(--article-max);margin:0 auto}.article-meta{font:500 11px/1.6 var(--font-sans);letter-spacing:.16em;text-transform:uppercase;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:26px;display:flex}.article-tag{color:var(--accent)}.article-rule{background:var(--accent);opacity:.5;width:26px;height:1px}.article-meta-text{color:var(--ink3)}.article-title{font:400 clamp(32px, 4.5vw, 52px) / 1.06 var(--font-sans);letter-spacing:-.03em;text-wrap:pretty;overflow-wrap:anywhere;margin:0 0 20px}.article-summary{color:var(--ink2);text-wrap:pretty;margin:0;font-size:clamp(19px,2vw,22px);font-style:italic;line-height:1.55}.article-cover{padding:0 var(--gutter)}.article-cover img{width:100%;max-width:var(--article-max);aspect-ratio:16/9;object-fit:cover;background:var(--imgbg);border-radius:12px;height:auto;margin:0 auto}.article-view{padding-bottom:clamp(40px,6vw,80px)}.article-body{max-width:calc(var(--article-max) + 2 * var(--gutter));padding:clamp(40px, 5vw, 56px) var(--gutter) 0;margin:0 auto}.article-body p{text-wrap:pretty;margin:0 0 28px;font-size:clamp(18px,1.8vw,20px);line-height:1.72}.article-body strong{font-weight:600}.article-body h2,.article-body h3,.article-body h4{text-wrap:pretty;scroll-margin-top:72px;font-weight:400}.article-body h2{letter-spacing:-.02em;margin:48px 0 20px;font-size:clamp(27px,3vw,34px);line-height:1.15}.article-body h3{letter-spacing:-.015em;margin:36px 0 14px;font-size:clamp(21px,2.2vw,25px);line-height:1.25}.article-body h4{margin:28px 0 12px;font-size:19px;line-height:1.3}.article-body a{color:var(--ink);text-decoration:underline 1px;text-decoration-color:var(--ink3);text-underline-offset:3px}.article-body a:hover{color:var(--ink2)}.article-body blockquote{border-left:2px solid var(--accent);margin:44px 0;padding:0 0 0 28px}.article-body blockquote p{letter-spacing:-.015em;color:var(--ink);margin:0;font-size:clamp(22px,2.6vw,27px);font-style:italic;line-height:1.4}.article-body blockquote p+p{margin-top:16px}.article-body ul{margin:0 0 28px;padding-left:1.25em;font-size:19px;line-height:1.65}.article-body ul li{margin-bottom:10px}.article-body ul li::marker{color:var(--ink3)}.article-body ol{counter-reset:item;margin:0 0 28px;padding:0;list-style:none}.article-body ol>li{counter-increment:item;align-items:baseline;gap:16px;margin-bottom:14px;font-size:19px;line-height:1.65;display:flex}.article-body ol>li:before{content:counter(item, decimal-leading-zero);font:500 11px/1.8 var(--font-sans);color:var(--accent);flex:none}.article-body ol>li>p{font-size:inherit;line-height:inherit;margin:0}.article-body li>ul,.article-body li>ol{margin:10px 0 0}.article-body img{background:var(--imgbg);border-radius:12px;max-width:100%;height:auto;margin:34px auto}.article-body p:has(>img:only-child){margin-bottom:0}.article-body p:has(>img:only-child)+p:has(>em:only-child){font:400 12px/1.5 var(--font-sans);letter-spacing:.02em;color:var(--ink3);margin:14px 0 34px}.article-body p:has(>img:only-child)+p:has(>em:only-child) em{font-style:normal}.article-body hr{background:var(--line);border:0;height:1px;margin:40px 0}.article-body table{border-collapse:collapse;width:100%;margin:0 0 28px;font-size:15px;line-height:1.5}.article-body th,.article-body td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:10px 12px}.article-body :not(pre)>code{border:1px solid var(--line);background:var(--wash);font-family:var(--font-mono);border-radius:6px;padding:.1em .4em;font-size:.86em}.article-body>pre,.code-block{margin:34px 0}.code-block{position:relative}.code-block>pre{margin:0}.article-body pre{border:1px solid var(--line);background:var(--code-bg);font:400 13.5px/1.7 var(--font-mono);tab-size:2;border-radius:12px;padding:22px 20px;overflow-x:auto}.article-body pre code{font:inherit}.astro-code,.astro-code span{color:var(--shiki-light,inherit)}:root[data-theme=dark] .astro-code,:root[data-theme=dark] .astro-code span{color:var(--shiki-dark,inherit)}.article-body pre.astro-code{background:var(--code-bg)}.code-copy-button{z-index:2;border:1px solid var(--line);background:var(--paper);width:30px;height:30px;color:var(--ink2);opacity:0;border-radius:8px;place-items:center;padding:0;transition:opacity .18s,color .18s;display:grid;position:absolute;top:10px;right:10px}.code-copy-button svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:15px;height:15px}.code-block:hover .code-copy-button,.code-copy-button:focus-visible,.code-copy-button.copied,.code-copy-button.copy-failed{opacity:1}@media (hover:none){.code-copy-button{opacity:1}}.code-copy-button:hover,.code-copy-button.copied{color:var(--ink)}.code-copy-button.copy-failed{color:var(--ink3)}.github-card-host{width:100%;margin:28px 0}.article-body a.github-card{border:1px solid var(--line);background:var(--paper2);width:100%;color:var(--ink);border-radius:12px;text-decoration:none;transition:border-color .18s;display:block;overflow:hidden}.article-body a.github-card:hover{border-color:var(--ink3);color:var(--ink)}.article-body a.github-card p,.article-body a.github-card span,.article-body a.github-card strong{font-family:var(--font-sans);letter-spacing:normal;margin:0}.github-card-body{text-align:left;grid-template-columns:minmax(0,1fr) 116px;align-items:center;min-height:118px;display:grid}.github-card-main{gap:8px;min-width:0;padding:16px 14px 16px 18px;display:grid}.github-card-aside{justify-content:center;align-items:center;width:116px;padding:14px 14px 14px 0;display:flex;position:relative}.github-card-title{min-width:0;line-height:1.2}.github-card-name{text-overflow:ellipsis;white-space:nowrap;color:var(--ink);font-size:15px;font-weight:600;display:block;overflow:hidden}.article-body a.github-card .github-card-description{color:var(--ink2);-webkit-line-clamp:2;line-clamp:2;word-break:break-word;-webkit-box-orient:vertical;font-size:13px;line-height:1.4;display:-webkit-box;overflow:hidden}.github-card-stats{min-width:0;color:var(--ink3);align-items:center;gap:12px;display:flex}.article-body a.github-card .github-card-stat{font:400 12px/1 var(--font-sans);white-space:nowrap;align-items:center;gap:4px;display:inline-flex}.github-card-stat-icon{width:12px;height:12px;color:var(--ink3);flex:none}.article-body a.github-card .github-card-stat-value{color:var(--ink);font-weight:500}.github-card-avatar{border:1px solid var(--line);object-fit:cover;border-radius:8px;flex:none;width:88px;height:88px;display:block}.github-card-avatar--placeholder{background:var(--wash)}.github-card-mark{z-index:1;width:18px;height:18px;color:var(--ink3);background:var(--paper2);box-shadow:0 0 0 1px var(--line);border-radius:999px;padding:4px;position:absolute;bottom:16px;right:18px}@media (width<=640px){.github-card-body{grid-template-columns:minmax(0,1fr) 92px;min-height:108px}.github-card-aside{width:92px;padding:12px 12px 12px 0}.github-card-main{gap:4px;padding:12px 10px 12px 14px}.github-card-avatar{width:72px;height:72px}.github-card-mark{bottom:12px;right:14px}.github-card-stats{gap:8px}.github-card-stat-label{display:none}}.info-view{max-width:var(--max);padding:clamp(56px, 10vw, 120px) var(--gutter) clamp(64px, 10vw, 140px);margin:0 auto}.info-eyebrow{font:500 11px/1 var(--font-sans);letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin:0 0 24px}.info-title{font:400 clamp(38px, 6vw, 66px) / 1.03 var(--font-sans);letter-spacing:-.03em;text-wrap:pretty;margin:0 0 20px}.info-description{max-width:34em;color:var(--ink2);text-wrap:pretty;margin:0 0 36px;font-size:clamp(17px,1.6vw,19px);line-height:1.62}.site-footer{padding:0 var(--gutter);border-top:1px solid var(--line)}.site-footer-inner{max-width:var(--max);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:32px;min-height:80px;margin:0 auto;display:flex}.footer-copy{font:400 11px/1 var(--font-sans);letter-spacing:.14em;text-transform:uppercase;color:var(--ink3);white-space:nowrap;margin:0}.footer-links{flex-wrap:wrap;gap:6px;display:flex}.footer-links a{width:34px;height:34px;color:var(--ink2);border-radius:999px;justify-content:center;align-items:center;text-decoration:none;transition:color .16s,background .16s;display:inline-flex}.footer-links a:hover{color:var(--ink);background:var(--wash)}.footer-links svg{display:block}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation:none!important}.post-row:hover .post-cover img,.hero-inner:hover .hero-cover img,.hero-inner:hover .hero-cta span{transform:none}}@media (width<=1100px){.post-row{grid-template-columns:240px minmax(0,1fr)}.post-cover{height:170px}.post-copy{min-height:170px}}@media (width<=900px){.latest-grid{grid-template-columns:1fr;gap:28px}.latest-aside{position:static}}@media (width<=700px){.post-row{border-radius:16px;grid-template-columns:1fr;gap:16px;min-height:0;margin:6px -12px;padding:20px 12px}.post-cover{aspect-ratio:16/9;height:auto}.post-copy{min-height:0}.post-copy h3{-webkit-line-clamp:3;line-clamp:3}.post-copy .meta{margin-top:4px}.hero-cover{flex-basis:100%}.cta-card{border-radius:20px}.subscribe-row button{flex:auto}.site-footer-inner{flex-direction:column;align-items:flex-start;gap:16px;padding:20px 0}}@media (width<=480px){.site-header{padding:10px var(--gutter)}.wordmark{font-size:16px}.article-meta{gap:10px}.article-body pre{margin-inline:calc(-1 * var(--gutter));border-left:0;border-right:0;border-radius:0}.code-block{margin-inline:0}}
