:root{color-scheme:light;--bg: #fafafa;--bg-elev: #ffffff;--fg: #1a1a1a;--muted: #6b7280;--accent: #3b82f6;--accent-hover: #1d4ed8;--badge-bg: #ffffff;--badge-border: #e5e7eb;--badge-fg: #374151;--badge-primary-bg: #3b82f6;--badge-primary-fg: #ffffff;--code-bg: #1e293b;--code-fg: #f1f5f9;--code-inline-bg: rgba(0, 0, 0, .055);--rule: #e5e7eb;--content-max: 920px;--gutter: 1.25rem;--font-body: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;--font-mono: SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace}:root[data-theme=dark]{color-scheme:dark;--bg: #0f1419;--bg-elev: #161b22;--fg: #e6e6e6;--muted: #94a3b8;--accent: #60a5fa;--accent-hover: #93c5fd;--badge-bg: #1f2937;--badge-border: #374151;--badge-fg: #e5e7eb;--badge-primary-bg: #3b82f6;--badge-primary-fg: #ffffff;--code-bg: #0b1220;--code-fg: #e2e8f0;--code-inline-bg: rgba(255, 255, 255, .075);--rule: #1f2937}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--fg);font-family:var(--font-body);font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased}#content{max-width:var(--content-max);margin:0 auto;padding:0 var(--gutter)}.site-header{padding-top:2.5rem;padding-bottom:1rem}.util-btn{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border:1px solid var(--badge-border);border-radius:8px;background:var(--badge-bg);color:var(--muted);line-height:1;cursor:pointer;text-decoration:none;transition:color .15s,border-color .15s}.util-btn:hover{color:var(--accent);border-color:var(--accent);text-decoration:none}.util-btn .icon{width:17px;height:17px;display:block}#theme-toggle .icon-sun,#theme-toggle .icon-moon{display:none}:root[data-theme=dark] #theme-toggle .icon-sun{display:block}:root[data-theme=light] #theme-toggle .icon-moon,:root:not([data-theme]) #theme-toggle .icon-moon{display:block}.site-header .row{display:flex;flex-wrap:wrap;align-items:center;gap:1.25rem}.site-header .avatar-wrap{flex:0 0 auto;text-align:center}.site-header .home-image{width:110px;height:110px;border-radius:50%;object-fit:cover}.site-header .meta{flex:1 1 200px;text-align:left}.site-header .site-title{margin:0 0 .25rem;font-size:1.75rem;font-weight:700;line-height:1.2;letter-spacing:-.01em}.site-header .site-title a{text-decoration:none;color:inherit}.skip-link{position:absolute;left:-9999px;top:0;z-index:100;padding:.5rem 1rem;background:var(--accent);color:#fff;border-radius:0 0 6px}.skip-link:focus{left:0}.site-header .subtitle{color:var(--muted);margin:0 0 .75rem}.site-header nav ul{list-style:none;margin:0;padding:0;display:flex;gap:1rem;flex-wrap:wrap}.site-header .primary-nav{margin-bottom:.35rem}.site-header .primary-nav a{color:var(--fg);text-decoration:none;font-weight:500;font-size:.95rem;border-bottom:2px solid transparent;padding-bottom:2px;transition:color .15s,border-color .15s}.site-header .primary-nav a:hover{color:var(--accent)}.site-header .primary-nav a[aria-current=page]{color:var(--accent);border-bottom-color:var(--accent)}.site-header .social-links a{color:var(--muted);text-decoration:none;font-size:.85rem}.site-header .social-links a:hover{color:var(--accent)}hr{border:0;border-top:1px solid var(--rule);margin:1rem 0 2rem}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover);text-decoration:underline}main{padding-left:1rem;padding-bottom:3rem}@media(min-width:720px){main{padding-left:4rem}}.section-title{margin:0 0 1rem;font-size:1.05rem}.badge{display:inline-block;padding:.25rem .55rem;border-radius:.35rem;background:var(--badge-bg);border:1px solid var(--badge-border);color:var(--badge-fg);text-decoration:none;font-size:.85rem;font-weight:500}.badge:hover{color:var(--accent);border-color:var(--accent);text-decoration:none}.badge.primary{background:var(--badge-primary-bg);color:var(--badge-primary-fg);border-color:var(--badge-primary-bg)}.badge.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:var(--badge-primary-fg)}.badge.category{text-transform:capitalize}.post-list{list-style:none;margin:0 0 2rem;padding:0}.post-list li{margin:.35rem 0}.post-list time{color:var(--muted);font-variant-numeric:tabular-nums;margin-right:.5rem;font-size:.9rem}.reading-progress{position:fixed;top:0;left:0;right:0;height:3px;background:var(--accent);transform-origin:0 0;transform:scaleX(0);animation:reading-progress linear;animation-timeline:scroll(root block);z-index:100;pointer-events:none}@keyframes reading-progress{to{transform:scaleX(1)}}.post-layout{display:grid;grid-template-columns:1fr;gap:0;align-items:start}@media(min-width:880px){.post-layout{grid-template-columns:200px 1fr;gap:2.5rem}}.toc{display:none}@media(min-width:880px){.toc{display:block;position:sticky;top:1.5rem;font-size:.85rem;max-height:calc(100vh - 3rem);overflow-y:auto}}.toc-title{margin:0 0 .5rem;color:var(--muted);text-transform:uppercase;letter-spacing:.1em;font-size:.7rem;font-weight:600}.toc ul{list-style:none;margin:0;padding:0;border-left:1px solid var(--rule)}.toc li{margin:0}.toc a{display:block;padding:.25rem .75rem;margin-left:-1px;color:var(--muted);text-decoration:none;border-left:2px solid transparent;line-height:1.4;transition:color .15s,border-color .15s}.toc a:hover{color:var(--fg);text-decoration:none}.toc a.active{color:var(--accent);border-left-color:var(--accent)}.toc-d3 a{padding-left:1.5rem;font-size:.8rem}article .post-head{margin-bottom:1.5rem}article .post-head h1{margin:0 0 .25rem;font-size:1.65rem;letter-spacing:-.01em}article .post-head .published{color:var(--muted);font-size:.9rem}article :is(h1,h2,h3,h4){margin-top:1.75rem;margin-bottom:.5rem;letter-spacing:-.01em}article p,article ul,article ol{margin:0 0 1rem}article img{max-width:100%;height:auto;border-radius:6px}article pre{background:var(--code-bg);color:var(--code-fg);padding:1rem;border-radius:6px;overflow-x:auto;font-family:var(--font-mono);font-size:.85rem;line-height:1.5}article code{font-family:var(--font-mono);font-size:.9em;background:var(--code-inline-bg);padding:.1em .3em;border-radius:3px}article pre code{background:transparent;padding:0;font-size:inherit}article blockquote{border-left:3px solid var(--accent);padding-left:1rem;margin:0 0 1rem;color:var(--muted);font-style:italic}footer.site-footer{text-align:center;padding:1.5rem 0 2rem;color:var(--muted);font-size:.85rem}.footer-utils{display:flex;justify-content:center;gap:.5rem;margin-bottom:.85rem}.about-intro{font-size:1.05rem;color:var(--fg);max-width:62ch;margin:0 0 1.5rem}.about section{margin:0;padding:1.75rem 0;border-top:1px solid var(--rule)}.about section h2{font-size:.8rem;margin:0 0 1rem;color:var(--muted);text-transform:uppercase;letter-spacing:.1em;font-weight:600}.exp-item{margin-bottom:1rem}.exp-row{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.25rem 1rem}.exp-company{margin:0;font-size:1.05rem;font-weight:600}.exp-dates{color:var(--muted);font-size:.85rem;font-variant-numeric:tabular-nums;white-space:nowrap}.exp-role{margin:.1rem 0 0;color:var(--muted);font-style:italic;font-size:.92rem}.about-list{list-style:none;margin:0;padding:0}.about-list li{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.25rem 1rem;padding:.3rem 0}.about-links{display:flex;gap:1rem;flex-wrap:wrap;font-size:.85rem}.article-link{white-space:nowrap}.about-primary{font-weight:500}.about-accent{color:var(--accent)}.about-meta{color:var(--muted);font-size:.85rem;font-variant-numeric:tabular-nums;white-space:nowrap}.about-todo{color:var(--muted);font-style:italic}.lang{display:inline-block;font-size:.65rem;font-weight:700;letter-spacing:.05em;padding:.1em .4em;margin-left:.45rem;border-radius:4px;border:1px solid var(--badge-border);color:var(--muted);vertical-align:middle}.author-note{display:flex;gap:1rem;align-items:flex-start;margin-top:3rem;padding-top:1.25rem;border-top:1px solid var(--badge-border, #ddd)}.author-note img{border-radius:50%;object-fit:cover;flex-shrink:0}.author-note p{margin:0 0 .25rem}.author-note-name a{font-weight:700;text-decoration:none;color:inherit}.author-note-bio{color:var(--muted);font-size:.9rem}.author-note-links{list-style:none;display:flex;gap:.35rem;margin:.35rem 0 0;padding:0;font-size:.85rem}.author-note-links li+li:before{content:"·";margin-right:.35rem;color:var(--muted)}.subscribe{margin:2.5rem 0 0;padding:1.25rem;border:1px solid var(--badge-border);border-radius:.5rem;background:var(--bg-elev)}.subscribe label{display:block;font-weight:600;margin-bottom:.5rem}.subscribe-row{display:flex;gap:.5rem;flex-wrap:wrap}.subscribe input{flex:1 1 14rem;min-width:0;padding:.55rem .75rem;font:inherit;color:var(--fg);background:var(--bg);border:1px solid var(--badge-border);border-radius:.35rem}.subscribe button{padding:.55rem 1rem;font:inherit;font-weight:600;color:var(--badge-primary-fg);background:var(--badge-primary-bg);border:0;border-radius:.35rem;cursor:pointer}.subscribe button:hover{background:var(--accent-hover)}.subscribe small{display:block;margin-top:.5rem;color:var(--muted)}.newsletter-tagline{color:var(--muted)}.newsletter-latest{margin:2.5rem 0;padding-top:1.5rem;border-top:1px solid var(--rule)}.newsletter-kicker{margin:0;color:var(--muted);font-size:.9rem}.newsletter-latest>h2{margin-top:.25rem}
