:root{--bg: #f7f8fa;--text: #1a1d24;--muted: #6b7280;--border: #e6e8ec;--accent: #3b6cf6;--accent-soft: rgba(59, 108, 246, .12);--maxw: 1080px;--content-w: 720px;color-scheme:light dark}@media(prefers-color-scheme:dark){:root{--bg: #0d1017;--text: #e6e9ef;--muted: #9aa3b2;--border: #262c38;--accent: #6d94ff;--accent-soft: rgba(109, 148, 255, .16)}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Noto Sans SC,Roboto,Helvetica,Arial,sans-serif;font-size:16px;line-height:1.7;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}img{max-width:100%;height:auto}.container{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 20px}.section-title{display:flex;align-items:baseline;justify-content:space-between;margin:44px 0 18px;border-top:1px solid var(--border);padding-top:22px}.section-title h2{font-size:18px;margin:0;letter-spacing:.01em}.section-title a{font-size:14px;color:var(--muted)}.tags{display:flex;gap:6px;flex-wrap:wrap}.tag{font-size:12px;color:var(--accent);background:var(--accent-soft);padding:2px 9px;border-radius:999px;font-weight:500}.tag:hover{text-decoration:none}.filter-tag{border:none;cursor:pointer;font-family:inherit}.filter-tag.active{background:var(--accent);color:#fff}.year-group{margin-bottom:26px}.year-group h3{font-size:15px;color:var(--muted);margin:0 0 8px;font-weight:600}.post-row{display:flex;align-items:baseline;gap:14px;padding:9px 0;border-bottom:1px dashed var(--border)}.post-row time{color:var(--muted);font-size:13px;font-variant-numeric:tabular-nums;flex:none;width:86px}.post-row a{color:var(--text);font-size:15.5px}.post-row a:hover{color:var(--accent)}.site-stats{margin-top:36px;padding-top:20px;border-top:1px solid var(--border);color:var(--muted);font-size:13.5px}.article{max-width:var(--content-w);margin:0 auto;padding:40px 20px 80px}.article-head{margin-bottom:28px}.head-nav{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px;font-size:14px}.head-nav a{color:var(--muted)}.head-nav a:hover{color:var(--accent)}.head-nav-posts{display:flex;gap:16px;flex-wrap:wrap;justify-content:flex-end}.article-head h1{font-size:clamp(26px,4vw,34px);line-height:1.3;margin:0 0 14px;letter-spacing:-.02em}.article-head .meta{color:var(--muted);font-size:14px;display:flex;gap:14px;flex-wrap:wrap}.article-head .meta .views{display:inline-flex;align-items:center;gap:4px}.article-head .meta .views svg{opacity:.8}.prose{font-size:16.5px;line-height:1.85}.prose h1,.prose h2,.prose h3,.prose h4{line-height:1.35;margin:1.8em 0 .7em;letter-spacing:-.01em;scroll-margin-top:76px}.prose h2{font-size:1.5em;padding-bottom:.3em;border-bottom:1px solid var(--border)}.prose h3{font-size:1.25em}.prose p{margin:1em 0}.prose a{text-decoration:underline;text-underline-offset:3px}.prose ul,.prose ol{padding-left:1.4em}.prose li{margin:.35em 0}.prose img{border-radius:10px;border:1px solid var(--border);margin:1.2em 0}.prose blockquote{margin:1.2em 0;padding:4px 18px;border-left:3px solid var(--accent);color:var(--muted);background:var(--accent-soft);border-radius:0 8px 8px 0}.prose code{font-family:SFMono-Regular,ui-monospace,Menlo,Consolas,monospace;font-size:.88em;background:var(--accent-soft);padding:2px 6px;border-radius:6px}.prose pre{background:#0f1420;color:#e6e9ef;padding:16px 18px;border-radius:12px;overflow-x:auto;border:1px solid var(--border);font-size:13.5px;line-height:1.6}.prose pre code{background:none;padding:0;color:inherit;font-size:inherit}.prose table{width:100%;border-collapse:collapse;margin:1.2em 0;font-size:14.5px;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--border);padding:8px 12px;text-align:left}.prose th{background:var(--accent-soft)}.prose hr{border:none;border-top:1px solid var(--border);margin:2em 0}.post-nav{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-top:48px;border-top:1px solid var(--border);padding-top:20px;font-size:14px}.post-nav a{color:var(--muted)}.post-nav a:hover{color:var(--accent)}.post-nav-posts{display:flex;gap:16px;flex-wrap:wrap;justify-content:flex-end}@media(max-width:560px){.post-row time{width:74px}}
