:root{color-scheme:light;--bg: #fcfcfb;--panel: #ffffff;--text: #202326;--muted: #6f7478;--quiet: #9ba1a6;--line: #e7e5df;--line-strong: #d7d3c9;--accent: #2c5f5d;--accent-strong: #173f3e;--code-bg: #171b1f;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-size:15px;line-height:1.72;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}a{color:var(--accent-strong);text-decoration-thickness:1px;text-underline-offset:.18em}.site-header,.site-footer,main{width:min(840px,calc(100vw - 36px));margin:0 auto}.site-header{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px 0 14px;border-bottom:1px solid var(--line)}.brand{color:var(--text);font-size:.98rem;font-weight:720;text-decoration:none}nav{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:16px;font-size:.88rem}nav a{color:var(--muted);text-decoration:none}nav a:hover{color:var(--accent-strong)}main{padding:38px 0 68px}.intro{max-width:680px;padding:18px 0 28px;border-bottom:1px solid var(--line)}.eyebrow{margin:0 0 12px;color:var(--quiet);font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.74rem;font-weight:500;letter-spacing:0;text-transform:uppercase}h1,h2,h3{color:var(--text);line-height:1.28}h1{max-width:680px;margin:0 0 14px;font-size:2.25rem;font-weight:680}h2{margin:0;font-size:1.12rem;font-weight:680}.intro p,.page-heading p{max-width:620px;margin:0;color:var(--muted)}.section{margin-top:34px}.section-heading{display:flex;align-items:baseline;justify-content:space-between;gap:20px;margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid var(--line)}.section-heading a{color:var(--quiet);font-size:.84rem;text-decoration:none}.section-heading a:hover{color:var(--accent-strong)}.post-list{display:grid;gap:0;margin:0;padding:0;list-style:none}.post-list li{padding:15px 0 16px;border-bottom:1px solid var(--line)}.post-title{color:var(--text);font-size:1rem;font-weight:680;text-decoration:none}.post-title:hover{color:var(--accent-strong)}.post-list p{max-width:650px;margin:5px 0 8px;color:var(--muted);font-size:.94rem}.post-meta{display:flex;flex-wrap:wrap;gap:9px;color:var(--quiet);font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.76rem}.page-heading{margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid var(--line)}.article{max-width:680px}.article-header{margin-bottom:30px;padding-bottom:20px;border-bottom:1px solid var(--line)}.article-header h1{font-size:2rem}.prose{color:#2b2f32;font-size:.98rem}.prose :where(p,ul,ol,blockquote){margin:1rem 0}.prose :where(h2,h3){margin-top:2rem;margin-bottom:.6rem}.prose table{display:block;width:100%;max-width:100%;margin:1.35rem 0;overflow-x:auto;border:1px solid var(--line-strong);border-radius:6px;border-spacing:0;background:var(--panel);font-size:.88rem;line-height:1.55}.prose :where(th,td){padding:.58rem .68rem;border-right:1px solid var(--line);border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.prose :where(th:last-child,td:last-child){border-right:0}.prose tbody tr:last-child td{border-bottom:0}.prose th{background:#f3f2ed;color:var(--text);font-weight:680;white-space:nowrap}.prose tbody tr:nth-child(2n) td{background:#f8f7f3}.prose pre{overflow-x:auto;padding:15px;border-radius:6px;background:var(--code-bg);line-height:1.6}.prose code{font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.92em}.prose :not(pre)>code{padding:.08rem .24rem;border-radius:4px;background:#efeee9}.tag-cloud{display:flex;flex-wrap:wrap;gap:8px}.tag-cloud a{padding:4px 9px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--text);font-size:.86rem;text-decoration:none}.muted{color:var(--muted)}.site-footer{display:flex;justify-content:flex-start;gap:16px;padding:22px 0 34px;border-top:1px solid var(--line);color:var(--muted);font-size:.84rem}@media(max-width:640px){.site-header,.site-footer{align-items:flex-start;flex-direction:column}nav{justify-content:flex-start}h1{font-size:1.8rem}.article-header h1{font-size:1.7rem}}
