:root{color-scheme:light;--accent:#e95516;--accent-strong:#c9430c;--accent-soft:#fff3ec;--bg:#fff;--bg-soft:#f6f7f8;--surface:#fff;--text:#17191c;--text-muted:#626971;--text-subtle:#8a9199;--line:#e1e4e8;--code-bg:#f3f5f7;--header-bg:#fffffff0;--content-width:1180px;--article-width:760px;font-family:Noto Sans SC,PingFang SC,Microsoft YaHei,sans-serif}:root[data-theme=dark]{color-scheme:dark;--accent:#ff7a3d;--accent-strong:#ff945f;--accent-soft:#2a1c17;--bg:#151719;--bg-soft:#1c1f22;--surface:#191c1f;--text:#f0f1f2;--text-muted:#b0b5ba;--text-subtle:#828990;--line:#34383d;--code-bg:#202429;--header-bg:#151719f0}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);min-width:320px;color:var(--text);text-rendering:optimizelegibility;margin:0;font-size:16px;line-height:1.75}a{color:inherit}button,input{font:inherit}[hidden]{display:none!important}.site-header{z-index:20;border-bottom:1px solid var(--line);background:var(--header-bg);backdrop-filter:blur(12px);position:sticky;top:0}.site-header-inner{width:min(calc(100% - 40px), var(--content-width));justify-content:space-between;align-items:center;height:64px;margin:0 auto;display:flex}.site-brand{color:var(--text);align-items:center;gap:10px;font-size:16px;font-weight:750;text-decoration:none;display:inline-flex}.site-brand img{width:32px;height:32px}.site-nav{align-items:center;gap:24px;display:flex}.site-nav a{color:var(--text-muted);font-size:14px;font-weight:650;text-decoration:none}.site-nav a:hover,.site-nav a[aria-current=page]{color:var(--accent)}.theme-toggle{border:1px solid var(--line);background:var(--surface);width:34px;height:34px;color:var(--text);cursor:pointer;border-radius:6px;place-items:center;padding:0;display:grid}.theme-toggle:hover{border-color:var(--accent);color:var(--accent)}.theme-dark,:root[data-theme=dark] .theme-light{display:none}:root[data-theme=dark] .theme-dark{display:inline}.blog-index,.article-page{width:min(calc(100% - 40px), var(--content-width));margin:0 auto}.blog-intro{border-bottom:1px solid var(--line);padding:52px 0 32px}.eyebrow{color:var(--accent);margin:0 0 10px;font-size:13px;font-weight:750}.blog-intro h1{letter-spacing:0;margin:0;font-size:40px;line-height:1.22}.blog-intro>p:last-child{max-width:680px;color:var(--text-muted);margin:14px 0 0;font-size:17px}.blog-tools{grid-template-columns:auto minmax(220px,420px) 1fr;align-items:center;gap:14px;padding:24px 0 0;display:grid}.blog-tools label{color:var(--text-muted);font-size:14px;font-weight:650}.blog-tools input{border:1px solid var(--line);background:var(--surface);width:100%;height:42px;color:var(--text);border-radius:6px;outline:0;padding:0 13px}.blog-tools input:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 14%, transparent)}.search-status{color:var(--text-subtle);margin:0;font-size:13px}.category-nav{flex-wrap:wrap;gap:10px;margin:22px 0 44px;display:flex}.category-nav a{border:1px solid var(--line);color:var(--text);border-radius:6px;align-items:center;gap:8px;padding:7px 11px;font-size:14px;font-weight:650;text-decoration:none;display:inline-flex}.category-nav a:hover{border-color:var(--accent);color:var(--accent)}.category-nav span{color:var(--text-subtle);font-size:12px;font-weight:500}.blog-sections{padding-bottom:64px}.blog-section{scroll-margin-top:86px}.blog-section+.blog-section{margin-top:52px}.blog-section>header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:baseline;padding-bottom:13px;display:flex}.blog-section h2{margin:0;font-size:24px;line-height:1.3}.blog-section>header span{color:var(--text-subtle);font-size:13px}.post-list-item{border-bottom:1px solid var(--line);grid-template-columns:116px minmax(0,1fr);gap:24px;padding:28px 0;display:grid}.post-list-item time{color:var(--text-subtle);padding-top:4px;font-size:13px}.post-list-item h3{margin:0;font-size:21px;line-height:1.42}.post-list-item h3 a{text-decoration:none}.post-list-item h3 a:hover{color:var(--accent)}.post-list-item p{color:var(--text-muted);margin:7px 0 0;line-height:1.7}.search-empty{min-height:240px;color:var(--text-muted);text-align:center;margin:0;padding-top:48px}.breadcrumbs{color:var(--text-subtle);flex-wrap:wrap;gap:9px;padding:26px 0 22px;font-size:13px;display:flex}.breadcrumbs a{color:var(--text-muted);text-decoration:none}.breadcrumbs a:hover{color:var(--accent)}.article-grid{grid-template-columns:minmax(0, var(--article-width)) minmax(190px, 250px);justify-content:center;align-items:start;gap:64px;padding-bottom:72px;display:grid}.article-content{min-width:0}.article-content h1,.article-content h2,.article-content h3,.article-content h4{color:var(--text);letter-spacing:0;scroll-margin-top:88px;line-height:1.32}.article-content h1{margin:14px 0 26px;font-size:38px}.article-content h2{border-top:0;margin:46px 0 16px;padding-top:4px;font-size:27px}.article-content h3{margin:32px 0 12px;font-size:21px}.article-content h4{margin:24px 0 10px;font-size:18px}.article-content p,.article-content li{color:var(--text)}.article-content p{margin:16px 0}.article-content ul,.article-content ol{padding-left:1.5em}.article-content li+li{margin-top:6px}.article-content a{color:var(--accent-strong);text-underline-offset:3px;text-decoration-thickness:1px}.article-content blockquote{border-left:3px solid var(--accent);background:var(--accent-soft);color:var(--text-muted);margin:24px 0;padding:14px 18px}.article-content blockquote p{color:inherit;margin:5px 0}.article-content hr{background:var(--line);border:0;height:1px;margin:36px 0}.article-content table{border-collapse:collapse;width:100%;margin:24px 0;font-size:14px;display:block;overflow-x:auto}.article-content th,.article-content td{border:1px solid var(--line);text-align:left;vertical-align:top;min-width:120px;padding:11px 13px}.article-content th{background:var(--bg-soft)}.article-content code{background:var(--code-bg);border-radius:4px;padding:2px 5px;font-family:JetBrains Mono,Consolas,monospace;font-size:.9em}.article-content pre{border:1px solid var(--line);border-radius:6px;max-width:100%;margin:22px 0;padding:18px;line-height:1.55;overflow-x:auto;background:var(--code-bg)!important}.article-content pre code{background:0 0;padding:0}.callout{background:color-mix(in srgb, #3d7e9a 9%, var(--surface));border-left:4px solid #3d7e9a;margin:24px 0;padding:16px 18px}.callout>p:first-child{margin-top:0}.callout>p:last-child{margin-bottom:0}.callout-tip{background:color-mix(in srgb, #2e7d5b 9%, var(--surface));border-color:#2e7d5b}.callout-warning{background:color-mix(in srgb, #a66b00 10%, var(--surface));border-color:#a66b00}.callout-danger{background:color-mix(in srgb, #bd3f3f 9%, var(--surface));border-color:#bd3f3f}.article-toc{border-left:1px solid var(--line);max-height:calc(100vh - 116px);padding-left:20px;position:sticky;top:92px;overflow-y:auto}.article-toc>p{color:var(--text);margin:0 0 9px;font-size:13px;font-weight:750}.article-toc nav,.article-toc-mobile nav{display:grid}.article-toc a,.article-toc-mobile a{color:var(--text-muted);padding:5px 0;font-size:13px;line-height:1.45;text-decoration:none}.article-toc a:hover,.article-toc-mobile a:hover{color:var(--accent)}.article-toc a.is-subheading,.article-toc-mobile a.is-subheading{padding-left:14px}.article-toc-mobile{display:none}.related-posts{border-top:1px solid var(--line);margin-top:56px;padding-top:28px}.related-posts h2{margin:0 0 8px;font-size:22px}.related-posts a{border-bottom:1px solid var(--line);color:var(--text);grid-template-columns:100px minmax(0,1fr);gap:16px;padding:15px 0;text-decoration:none;display:grid}.related-posts a:hover strong{color:var(--accent)}.related-posts span{color:var(--text-subtle);font-size:13px}.related-posts strong{line-height:1.5}.article-pagination{grid-template-columns:1fr 1fr;gap:32px;margin-top:40px;display:grid}.article-pagination a{border-top:1px solid var(--line);color:var(--text);gap:5px;padding-top:16px;text-decoration:none;display:grid}.article-pagination a.next{text-align:right}.article-pagination span{color:var(--text-subtle);font-size:12px}.article-pagination strong{font-size:14px;line-height:1.5}.article-pagination a:hover strong{color:var(--accent)}.site-footer{border-top:1px solid var(--line);background:var(--bg-soft)}.site-footer-inner{width:min(calc(100% - 40px), var(--content-width));grid-template-columns:1fr auto;align-items:start;gap:32px;margin:0 auto;padding:38px 0 30px;display:grid}.site-footer strong{font-size:16px}.site-footer p{color:var(--text-muted);margin:5px 0 0;font-size:14px}.site-footer nav{flex-wrap:wrap;gap:18px;display:flex}.site-footer nav a{color:var(--text-muted);font-size:13px;text-decoration:none}.site-footer nav a:hover{color:var(--accent)}.site-footer-copy{width:min(calc(100% - 40px), var(--content-width));border-top:1px solid var(--line);color:var(--text-subtle);margin:0 auto;padding:15px 0 20px;font-size:12px}@media (width<=900px){.article-grid{display:block}.article-toc{display:none}.article-toc-mobile{max-width:var(--article-width);border:1px solid var(--line);background:var(--bg-soft);border-radius:6px;margin:0 auto 22px;padding:12px 14px;display:block}.article-toc-mobile summary{cursor:pointer;font-size:14px;font-weight:700}.article-toc-mobile nav{margin-top:9px}.article-content{max-width:var(--article-width);margin:0 auto}}@media (width<=640px){.site-header-inner,.blog-index,.article-page,.site-footer-inner,.site-footer-copy{width:min(calc(100% - 28px), var(--content-width))}.site-header-inner{height:58px}.site-nav{gap:14px}.site-brand span{display:none}.blog-intro{padding:36px 0 24px}.blog-intro h1{font-size:32px}.blog-intro>p:last-child{font-size:15px}.blog-tools{grid-template-columns:1fr;gap:7px}.search-status{min-height:0}.category-nav{margin-bottom:34px}.blog-section+.blog-section{margin-top:40px}.post-list-item{grid-template-columns:1fr;gap:7px;padding:22px 0}.post-list-item h3{font-size:19px}.post-list-item p{font-size:14px}.breadcrumbs{padding:20px 0 16px}.article-content h1{margin-top:8px;font-size:30px}.article-content h2{margin-top:38px;font-size:24px}.article-content h3{font-size:20px}.article-content pre{border-left:0;border-right:0;border-radius:0;margin-left:-14px;margin-right:-14px}.related-posts a{grid-template-columns:1fr;gap:3px}.article-pagination{grid-template-columns:1fr;gap:18px}.article-pagination a.next{text-align:left}.site-footer-inner{grid-template-columns:1fr}}
