:root{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, "JetBrains Mono", "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--bg:#ffffff;--bg-subtle:#f8fafc;--bg-card:#ffffff;--text:#1e293b;--text-muted:#64748b;--text-strong:#0f172a;--heading:#0f172a;--border:#e2e8f0;--border-subtle:#f1f5f9;--link:#0969da;--link-hover:#054da7;--code-bg:#f6f8fa;--code-border:#e1e4e8;--code-color:#24292f;--quote-bg:#f8fafc;--quote-border:#cbd5e1;--card-border:#e2e8f0;--card-shadow:0 1px 3px rgba(15, 23, 42, 0.04);--btn-bg:#f1f5f9;--btn-border:#cbd5e1;--btn-text:#1e293b;--btn-hover-bg:#e2e8f0}@media(prefers-color-scheme:dark){:root{--bg:#0d1117;--bg-subtle:#161b22;--bg-card:#161b22;--text:#c9d1d9;--text-muted:#8b949e;--text-strong:#f0f6fc;--heading:#f0f6fc;--border:#30363d;--border-subtle:#21262d;--link:#58a6ff;--link-hover:#79c0ff;--code-bg:#161b22;--code-border:#30363d;--code-color:#e6edf3;--quote-bg:#161b22;--quote-border:#30363d;--card-border:#30363d;--card-shadow:0 1px 3px rgba(0, 0, 0, 0.3);--btn-bg:#21262d;--btn-border:#30363d;--btn-text:#c9d1d9;--btn-hover-bg:#30363d}}*,*::before,*::after{box-sizing:border-box}html{font-size:17px;line-height:1.65;background-color:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}body{margin:0;padding:0;font-family:var(--font-sans);background-color:var(--bg);color:var(--text);min-height:100vh;display:flex;flex-direction:column}.site-container{width:100%;max-width:720px;margin:0 auto;padding:0 20px}.site-main{flex:1 0 auto;padding:32px 0 60px}.site-header{border-bottom:1px solid var(--border);background-color:var(--bg);padding:20px 0}.nav-container{display:flex;align-items:center;justify-content:space-between}.site-brand{font-size:1.15rem;font-weight:700;color:var(--heading);text-decoration:none;letter-spacing:-.01em}.site-brand:hover{color:var(--link)}.site-nav{display:flex;gap:18px;align-items:center}.nav-link{font-size:.95rem;color:var(--text-muted);text-decoration:none;font-weight:500;transition:color .15s ease}.nav-link:hover{color:var(--text-strong)}.post-feed{display:flex;flex-direction:column;gap:28px}.list-header{margin-bottom:32px}.page-title{font-size:1.75rem;font-weight:700;color:var(--heading);margin:0}.post-card{padding:24px;background-color:var(--bg-card);border:1px solid var(--card-border);border-radius:8px;box-shadow:var(--card-shadow);transition:border-color .15s ease,box-shadow .15s ease}.post-card:hover{border-color:var(--link)}.post-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;font-size:.85rem;color:var(--text-muted);margin-bottom:8px}.meta-separator{color:var(--text-muted)}.tag-link{color:var(--text-muted);text-decoration:none}.tag-link:hover{color:var(--link);text-decoration:underline}.tag-sep{color:var(--text-muted)}.post-card-title{margin:0 0 12px;font-size:1.35rem;line-height:1.35;font-weight:700}.post-card-title a{color:var(--heading);text-decoration:none}.post-card-title a:hover{color:var(--link)}.post-summary p{margin:0 0 12px;color:var(--text);font-size:.98rem;line-height:1.6}.post-more{margin-top:4px}.read-more-link{display:inline-flex;align-items:center;font-size:.9rem;font-weight:600;color:var(--link);text-decoration:none}.read-more-link:hover{text-decoration:underline}.post-single{max-width:720px}.post-header{margin-bottom:36px;padding-bottom:24px;border-bottom:1px solid var(--border)}.post-title{margin:12px 0 0;font-size:2.1rem;line-height:1.25;font-weight:750;letter-spacing:-.02em;color:var(--heading)}.translation-notice{padding:10px 16px;background-color:var(--bg-subtle);border:1px solid var(--border);border-radius:6px;font-size:.9rem;margin-bottom:24px}.translation-notice a{color:var(--link);text-decoration:none;font-weight:600}.translation-notice a:hover{text-decoration:underline}.post-content{color:var(--text);font-size:1rem;line-height:1.7}.post-content p{margin:0 0 1.4em;text-align:left}.post-content h1,.post-content h2,.post-content h3,.post-content h4,.post-content h5,.post-content h6{color:var(--heading);font-weight:700;line-height:1.3;margin-top:1.8em;margin-bottom:.6em;letter-spacing:-.01em}.post-content h1{font-size:1.65rem}.post-content h2{font-size:1.4rem}.post-content h3{font-size:1.2rem}.post-content h4{font-size:1.05rem}.post-content h5{font-size:.95rem}.post-content h6{font-size:.85rem}.post-content a{color:var(--link);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}.post-content a:hover{color:var(--link-hover)}.post-content strong{color:var(--text-strong);font-weight:650}.post-content ul,.post-content ol{margin:0 0 1.4em;padding-left:1.6em}.post-content li{margin-bottom:.4em}.post-content li>ul,.post-content li>ol{margin-top:.4em;margin-bottom:.4em}.post-content blockquote{margin:1.5em 0;padding:.8em 1.2em;background-color:var(--quote-bg);border-left:4px solid var(--quote-border);border-radius:0 4px 4px 0;color:var(--text-muted)}.post-content blockquote p:last-child,.post-content blockquote ul:last-child,.post-content blockquote ol:last-child{margin-bottom:0}.post-toc{margin:1.5em 0 2em;padding:16px 20px;background-color:var(--bg-subtle);border:1px solid var(--border);border-radius:6px}.post-toc-title{margin:0 0 8px!important;font-size:.95rem;font-weight:700;color:var(--heading)}.post-toc #TableOfContents ul{margin:0;padding-left:1.3em}.post-toc #TableOfContents li{margin-bottom:.25em;font-size:.93rem}.post-toc #TableOfContents a{text-decoration:none}.post-toc #TableOfContents a:hover{text-decoration:underline}.post-content hr{border:0;border-top:1px solid var(--border);margin:2.5em 0}.post-content img{max-width:100%;height:auto;border-radius:6px;display:block}img[src$="#c"]{margin:1.5em auto}img[src$="#l"]{float:left;margin:.5em 1.2em 1em 0}img[src$="#r"]{float:right;margin:.5em 0 1em 1.2em}.table-scroll{overflow-x:auto;margin:1.5em 0}.post-content table{width:100%;border-collapse:collapse;font-size:.95rem}.post-content table code:not(pre code){word-break:normal}.post-content table th,.post-content table td{padding:10px 14px;border:1px solid var(--border);text-align:left}.post-content table th{background-color:var(--bg-subtle);color:var(--heading);font-weight:650}.post-content table tr:nth-child(even){background-color:var(--bg-subtle)}@media(min-width:900px){.table-scroll:has(th:nth-child(5)){margin-inline:-90px}}@media(max-width:640px){.post-content table th,.post-content table td{padding:8px 10px}.post-content table th:first-child,.post-content table td:first-child{position:sticky;left:0;background-color:var(--bg);box-shadow:1px 0 0 var(--border)}.post-content table th:first-child,.post-content table tr:nth-child(even) td:first-child{background-color:var(--bg-subtle)}}code,pre{font-family:var(--font-mono)}.post-content code:not(pre code){font-size:.88em;padding:.15em .35em;border-radius:4px;background-color:var(--code-bg);border:1px solid var(--code-border);color:var(--code-color);word-break:break-word}pre{margin:1.4em 0;padding:16px 18px;background-color:var(--code-bg);border:1px solid var(--code-border);border-radius:6px;overflow-x:auto;font-size:.88rem;line-height:1.55;color:var(--code-color)}pre code{background:0 0;border:0;padding:0;font-size:inherit;color:inherit}.highlight{margin:1.4em 0;border-radius:6px;overflow:hidden;border:1px solid var(--code-border)}.highlight pre{margin:0;border:0}.related-posts{margin-top:48px;padding-top:24px;border-top:1px solid var(--border)}.related-title{font-size:1.15rem;font-weight:700;color:var(--heading);margin:0 0 12px}.related-list{list-style:disc;padding-left:20px;margin:0}.related-list li{margin-bottom:6px}.related-list a{color:var(--link);text-decoration:none}.related-list a:hover{text-decoration:underline}.comments-section{margin-top:24px;padding-bottom:40px}.disqus-btn{background-color:var(--btn-bg);color:var(--btn-text);border:1px solid var(--btn-border);padding:10px 18px;border-radius:6px;font-family:inherit;font-size:.9rem;font-weight:600;cursor:pointer;transition:background-color .15s ease}.disqus-btn:hover{background-color:var(--btn-hover-bg)}#disqus_thread{margin-top:20px}.pagination{display:flex;justify-content:space-between;align-items:center;margin-top:40px;padding-top:24px;border-top:1px solid var(--border)}.pagination-btn{display:inline-block;padding:8px 16px;font-size:.9rem;font-weight:600;color:var(--link);text-decoration:none;background-color:var(--bg-card);border:1px solid var(--border);border-radius:6px;transition:border-color .15s ease}.pagination-btn:hover{border-color:var(--link)}.error-page{text-align:center;padding:60px 0}.error-code{font-size:5rem;line-height:1;font-weight:800;color:var(--heading);margin:0 0 16px}.error-message{font-size:1.5rem;color:var(--text-muted);margin:0 0 32px}.error-home-btn{display:inline-block;padding:10px 20px;background-color:var(--link);color:#fff;text-decoration:none;border-radius:6px;font-weight:600}.error-home-btn:hover{background-color:var(--link-hover)}.site-footer{border-top:1px solid var(--border);background-color:var(--bg-subtle);padding:24px 0;margin-top:auto}.footer-content{text-align:center}.footer-content p{margin:0;font-size:.85rem;color:var(--text-muted)}.footer-content a{color:var(--text-muted);text-decoration:none}.footer-content a:hover{color:var(--link);text-decoration:underline}.chroma .k,.chroma .kc,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr,.chroma .kt{color:#cf222e}.chroma .na,.chroma .nc,.chroma .nx{color:#1f2328}.chroma .no,.chroma .nd,.chroma .nt{color:#0550ae}.chroma .ni,.chroma .nb{color:#6639ba}.chroma .nl{color:#900;font-weight:700}.chroma .nf{color:#8250df}.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .s2,.chroma .se,.chroma .sh,.chroma .si,.chroma .sx,.chroma .sr,.chroma .s1,.chroma .ss{color:#0a3069}.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo{color:#0550ae}.chroma .c,.chroma .ch,.chroma .cm,.chroma .c1,.chroma .cs,.chroma .cp,.chroma .cpf{color:#6e7781;font-style:italic}.chroma .o,.chroma .ow{color:#cf222e}@media(prefers-color-scheme:dark){.chroma .k,.chroma .kc,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr,.chroma .kt{color:#ff7b72}.chroma .na,.chroma .nc,.chroma .nx{color:#e6edf3}.chroma .no,.chroma .nd,.chroma .nt,.chroma .nv{color:#79c0ff}.chroma .ni,.chroma .nb{color:#d2a8ff}.chroma .nl{color:#79c0ff;font-weight:700}.chroma .nf{color:#d2a8ff}.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .s2,.chroma .se,.chroma .sh,.chroma .si,.chroma .sx,.chroma .sr,.chroma .s1,.chroma .ss{color:#a5d6ff}.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo{color:#79c0ff}.chroma .c,.chroma .ch,.chroma .cm,.chroma .c1,.chroma .cs,.chroma .cp,.chroma .cpf{color:#8b949e;font-style:italic}.chroma .o,.chroma .ow{color:#ff7b72}}