:root{--background:#f8fafc;--surface:#fff;--surface-2:#f1f5f9;--border:#e2e8f0;--text:#0f172a;--muted:#64748b;--faint:#94a3b8;--accent:#2962ff;--accent-soft:rgba(41,98,255,.08);--link:#2962ff;--code-bg:#23241f;--sans:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC",sans-serif;--mono:ui-monospace,"SF Mono","Cascadia Code","JetBrains Mono",Menlo,Consolas,monospace;--radius:12px;--shadow:0 1px 2px rgba(15,23,42,.05),0 8px 24px rgba(15,23,42,.06)}.dark{--background:#020617;--surface:#0f172a;--surface-2:#1e293b;--border:#1e293b;--text:#f1f5f9;--muted:#94a3b8;--faint:#64748b;--accent:#6b93ff;--accent-soft:rgba(107,147,255,.12);--link:#6b93ff;--shadow:0 1px 2px rgba(0,0,0,.3),0 8px 24px rgba(0,0,0,.35)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--background);color:var(--text);font-family:var(--sans);line-height:1.75;-webkit-font-smoothing:antialiased;transition:background .2s,color .2s}a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}.container{max-width:1080px;margin:0 auto;padding:0 20px}.container-narrow{max-width:780px;margin:0 auto;padding:0 20px}.site-header{position:-webkit-sticky;position:sticky;top:0;z-index:50;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:color-mix(in srgb,var(--background) 82%,transparent);border-bottom:1px solid var(--border)}.site-header .inner{max-width:1080px;margin:0 auto;padding:12px 20px;gap:24px}.brand,.site-header .inner{display:flex;align-items:center}.brand{gap:10px;color:var(--text);font-weight:700;font-size:17px}.brand:hover{text-decoration:none}.nav{display:flex;align-items:center;gap:20px;margin-left:auto;font-size:14px}.nav a{color:var(--muted);font-weight:500}.nav a.active,.nav a:hover{color:var(--accent);text-decoration:none}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--muted);cursor:pointer;padding:0}.theme-toggle:hover{color:var(--accent);border-color:var(--accent)}.theme-toggle svg{width:17px;height:17px}.theme-toggle-placeholder{width:34px;height:34px}.hero{padding:64px 0 40px}.pub-head{max-width:720px}.pub-head .eyebrow{display:inline-block;font-size:12px;font-weight:600;letter-spacing:2px;text-transform:uppercase;color:var(--accent);margin-bottom:14px}.pub-head h1{font-size:clamp(34px,5.5vw,52px);margin:0 0 12px;line-height:1.2;letter-spacing:-.5px}.pub-head .tagline{color:var(--muted);font-size:16.5px;margin:0 0 26px;max-width:600px}.stats{display:flex;gap:32px;flex-wrap:wrap;margin-bottom:28px}.stat .num{font-size:26px;font-weight:800;color:var(--text);letter-spacing:-.5px}.stat .lbl{font-size:12.5px;color:var(--faint);margin-top:2px}.btn-row{display:flex;gap:12px;flex-wrap:wrap}.btn{display:inline-block;padding:10px 24px;border-radius:9px;font-size:14.5px;font-weight:600;border:1px solid transparent;cursor:pointer}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{text-decoration:none;filter:brightness(1.07)}.btn-ghost{color:var(--text);background:var(--surface);border-color:var(--border)}.btn-ghost:hover{text-decoration:none;border-color:var(--accent);color:var(--accent)}.section{padding:36px 0 8px}.section-head{display:flex;align-items:baseline;gap:14px;margin-bottom:20px;padding-bottom:12px;border-bottom:1px solid var(--border)}.section-head h2{margin:0;font-size:20px;letter-spacing:-.3px}.section-head .desc{color:var(--faint);font-size:13px}.section-head .more{margin-left:auto;font-size:13.5px;font-weight:500;white-space:nowrap}.post-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));grid-gap:20px;gap:20px}.post-card{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow);transition:transform .15s,border-color .15s,box-shadow .15s}.post-card:hover{text-decoration:none;transform:translateY(-3px);border-color:var(--accent)}.post-card .cat{font-size:11px;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:1.2px;margin-bottom:10px}.post-card h3{margin:0 0 8px;font-size:17px;line-height:1.55;color:var(--text);letter-spacing:-.2px}.post-card p{margin:0 0 16px;font-size:14px;color:var(--muted);flex:1 1;line-height:1.7;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.post-card .meta{font-size:12.5px;color:var(--faint);display:flex;gap:12px}.post-card .cover{margin:-22px -22px 18px;border-radius:var(--radius) var(--radius) 0 0;overflow:hidden}.post-card .cover img{width:100%;height:160px;object-fit:cover;display:block}.tag-cloud{display:flex;flex-wrap:wrap;gap:10px}.tag{font-size:13px;color:var(--muted);font-weight:500;border:1px solid var(--border);border-radius:999px;padding:6px 15px;background:var(--surface)}.tag:hover{color:var(--accent);border-color:var(--accent);text-decoration:none}.tag .n{color:var(--faint);margin-left:6px;font-weight:400}.article-head{padding:52px 0 8px}.article-head .cat{font-size:12px;font-weight:700;color:var(--accent);letter-spacing:1.5px;text-transform:uppercase}.article-head h1{font-size:clamp(27px,4.4vw,40px);line-height:1.4;margin:14px 0;letter-spacing:-.5px}.article-head .desc{color:var(--muted);font-size:16.5px;margin:0 0 20px;line-height:1.75}.article-meta{display:flex;flex-wrap:wrap;gap:8px 18px;font-size:13px;color:var(--faint);border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:12px 0;margin-bottom:8px}.article-cover{margin:28px 0 8px;border-radius:var(--radius);overflow:hidden;border:1px solid var(--border)}.article-cover img{width:100%;display:block;max-height:420px;object-fit:cover}.article-layout{display:grid;grid-template-columns:1fr 240px;grid-gap:48px;gap:48px;align-items:start}@media (max-width:900px){.article-layout{grid-template-columns:1fr}.toc{display:none}}.toc{position:-webkit-sticky;position:sticky;top:90px;font-size:13px;max-height:calc(100vh - 120px);overflow:auto}.toc .toc-title{font-size:11px;font-weight:700;color:var(--faint);text-transform:uppercase;letter-spacing:1.5px;margin-bottom:10px}.toc ul{list-style:none;margin:0;padding:0}.toc li{margin:6px 0;line-height:1.5}.toc li.l3{padding-left:14px}.toc a{color:var(--muted)}.toc a.active,.toc a:hover{color:var(--accent);text-decoration:none}.md-body{font-size:16.5px;color:var(--text);overflow-wrap:break-word}.md-body h1,.md-body h2,.md-body h3,.md-body h4{line-height:1.45;margin:2em 0 .8em;scroll-margin-top:90px;letter-spacing:-.3px}.md-body h2{font-size:1.5em;padding-bottom:.35em;border-bottom:1px solid var(--border)}.md-body h2 .icon,.md-body h3 .icon{display:none}.md-body p{margin:1.1em 0}.md-body a{color:var(--link)}.md-body ol,.md-body ul{padding-left:1.6em;margin:1.1em 0}.md-body li{margin:.45em 0}.md-body li::marker{color:var(--accent)}.md-body blockquote{margin:1.4em 0;padding:4px 18px;border-left:3px solid var(--accent);background:var(--accent-soft);border-radius:0 8px 8px 0;color:var(--muted)}.md-body blockquote p{margin:.8em 0}.md-body img{max-width:100%;border-radius:10px;border:1px solid var(--border);margin:1.2em 0}.md-body hr{border:none;border-top:1px solid var(--border);margin:2.2em 0}.md-body table{width:100%;border-collapse:collapse;margin:1.4em 0;font-size:14.5px;display:block;overflow-x:auto}.md-body td,.md-body th{border:1px solid var(--border);padding:9px 14px;text-align:left}.md-body th{font-size:13px;font-weight:600}.md-body code,.md-body th{background:var(--surface-2)}.md-body code{font-family:var(--mono);font-size:.86em;border:1px solid var(--border);border-radius:5px;padding:1px 6px}.md-body pre{background:var(--code-bg);border:1px solid var(--border);border-radius:10px;padding:18px;overflow-x:auto;margin:1.4em 0}.md-body pre code{background:none;border:none;padding:0;color:#f8f8f2;font-size:13.5px;line-height:1.7}.md-body .hljs-attr,.md-body .hljs-keyword,.md-body .hljs-name,.md-body .hljs-selector-tag{color:#f92672}.md-body .hljs-addition,.md-body .hljs-built_in,.md-body .hljs-builtin-name,.md-body .hljs-selector-attr,.md-body .hljs-selector-id,.md-body .hljs-selector-pseudo,.md-body .hljs-string,.md-body .hljs-template-variable,.md-body .hljs-type,.md-body .hljs-variable{color:#e6db74}.md-body .hljs-bullet,.md-body .hljs-link,.md-body .hljs-literal,.md-body .hljs-number,.md-body .hljs-quote,.md-body .hljs-regexp{color:#ae81ff}.md-body .hljs-comment,.md-body .hljs-deletion,.md-body .hljs-meta{color:#75715e;font-style:italic}.md-body .hljs-code,.md-body .hljs-section,.md-body .hljs-title{color:#a6e22e}.md-body .hljs-emphasis{font-style:italic;color:#a8a8a2}.md-body .hljs-strong{font-weight:700}.md-body .hljs-attribute,.md-body .hljs-symbol{color:#66d9ef}.md-body .hljs-params,.md-body .hljs-subst,.md-body .hljs-tag{color:#f8f8f2}.article-foot{margin:48px 0 8px;border-top:1px solid var(--border);padding-top:24px}.series-box{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:18px 22px;margin-bottom:24px;box-shadow:var(--shadow)}.series-box .lbl{font-size:11px;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:1.5px}.pn-nav{display:grid;grid-template-columns:1fr 1fr;grid-gap:14px;gap:14px}.pn-nav a{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px 18px;box-shadow:var(--shadow)}.pn-nav a:hover{text-decoration:none;border-color:var(--accent)}.pn-nav .dir{font-size:11px;font-weight:700;color:var(--faint);text-transform:uppercase;letter-spacing:1px}.pn-nav .t{color:var(--text);font-size:14.5px;margin-top:6px;display:block;font-weight:500}.pn-nav .next{text-align:right}.year-block{margin-bottom:36px}.year-block h2{color:var(--accent);font-size:20px;letter-spacing:-.3px}.archive-item{display:flex;gap:18px;padding:11px 0;border-bottom:1px dashed var(--border);align-items:baseline}.archive-item time{font-family:var(--mono);font-size:12.5px;color:var(--faint);min-width:86px}.archive-item a{color:var(--text);font-weight:500}.archive-item .cat,.archive-item a:hover{color:var(--accent)}.archive-item .cat{margin-left:auto;font-size:11px;font-weight:600;white-space:nowrap}.page-head{padding:56px 0 12px}.page-head h1{font-size:clamp(28px,4.5vw,40px);margin:0 0 10px;letter-spacing:-.5px}.page-head p{color:var(--muted);margin:0}.site-footer{border-top:1px solid var(--border);margin-top:72px;padding:36px 0 44px}.site-footer .inner{max-width:1080px;margin:0 auto;padding:0 20px;display:flex;gap:20px;align-items:center;flex-wrap:wrap}.site-footer .sig{font-size:13.5px;color:var(--faint)}.site-footer .links{margin-left:auto;display:flex;gap:18px;font-size:13.5px;font-weight:500}.site-footer a{color:var(--muted)}.site-footer a:hover{color:var(--accent);text-decoration:none}