:root{--bg-body:#f5f1eb;--bg-content:#faf8f6;--bg-card:#fefcf9;--bg-code:#f0e6d6;--bg-pre:#f7f3ed;--text-primary:#2c2724;--text-secondary:#9c8975;--text-muted:#8b7a6a;--text-link:#1d60a3;--text-link-hover:#155a99;--border-color:#d4c4a8;--border-light:#e6d4c1;--shadow-paper:0 4px 6px rgba(139, 126, 106, 0.3);--shadow-card:0 2px 4px rgba(139, 126, 106, 0.08);--shadow-button:0 1px 2px rgba(139, 126, 106, 0.15);--blockquote-border:#c8a882;--mark-bg:#f4e4b8;--content-h2:#3d342c;--content-h3:#4a4037;--content-h4:#5c5046;--footer-text:#6b5d4f;--abbr-border:#8b7a6a}[data-theme=dark]{--bg-body:#1a1611;--bg-content:#211c17;--bg-card:#2a241e;--bg-code:#332d26;--bg-pre:#2f2a23;--text-primary:#e8e1d9;--text-secondary:#b8a291;--text-muted:#a68b7a;--text-link:#7bb3e6;--text-link-hover:#9cc5ea;--border-color:#4a3f35;--border-light:#3d3529;--shadow-paper:0 4px 8px rgba(0, 0, 0, 0.3);--shadow-card:0 2px 4px rgba(0, 0, 0, 0.15);--shadow-button:0 1px 3px rgba(0, 0, 0, 0.2);--blockquote-border:#8b7355;--mark-bg:#4a3f2a;--content-h2:#d4c7bf;--content-h3:#c8bab2;--content-h4:#bca89e;--footer-text:#9c8975;--abbr-border:#8b7a6a}body{font-family:-apple-system,BlinkMacSystemFont,segoe ui,Roboto,Oxygen-Sans,Ubuntu,Cantarell,helvetica neue,sans-serif;line-height:1.6;color:var(--text-primary);max-width:50em;margin:1em auto;padding:2em;background-color:var(--bg-content);min-height:calc(100vh - 2em);border-radius:8px;box-shadow:var(--shadow-paper)}html{background-color:var(--bg-body);background-image:radial-gradient(circle at 1px 1px,rgba(139,126,106,.3) 1px,transparent 0);background-size:20px 20px}.theme-toggle{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:3px;padding:.25em .4em;cursor:pointer;font-size:.8em;font-family:inherit;margin-left:.8em;transition:all .15s ease;color:var(--text-muted);box-shadow:var(--shadow-button);min-width:2em;text-align:center;flex-shrink:0}.theme-toggle:hover{background-color:var(--bg-pre);color:var(--text-secondary);transform:translateY(-1px)}.theme-toggle:active{transform:translateY(0);background-color:var(--bg-code)}.theme-icon{display:inline-block;transition:opacity .15s ease}[data-theme=light] .dark-icon,[data-theme=dark] .light-icon{display:none}.site-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5em}.site-header h1{border-bottom:none;margin-bottom:0;font-size:2.8em}.site-header nav{display:flex;align-items:center;flex-wrap:wrap}.site-title{display:inline-flex;align-items:baseline;text-decoration:none;color:inherit}.site-title:hover{text-decoration:none;color:inherit}.logo-o{width:.8em;height:.8em;margin:0 -.05em;border-radius:50%;vertical-align:baseline;transform:translateY(.1em)}h1,h2,h3,h4,h5,h6{margin:0 0 .5em;line-height:1.2;color:var(--text-primary)}h1{font-size:2em;border-bottom:1px solid var(--border-color);padding-bottom:.3em}h2{font-size:1.8em;border-bottom:1px solid var(--border-color)}h3{font-size:1.4em}h4{font-size:1.2em}h5,h6{font-size:1em}.content h2{margin-top:1.8em;color:var(--content-h2)}.content h3{color:var(--content-h3)}.content h4,.content h5,.content h6{color:var(--content-h4)}p{margin-bottom:1em}a{color:var(--text-link);text-decoration:none}a:hover{text-decoration:underline;color:var(--text-link-hover)}header,footer{margin:1em 0}header{border-bottom:1px solid var(--border-color);padding-bottom:1em;margin-top:1em}footer{border-top:1px solid var(--border-color);padding-top:1em;text-align:center;font-size:.9em;color:var(--footer-text)}nav a{margin-right:1em}.post-list{list-style-type:none;padding:0}.post-list li{margin-bottom:1em;padding:1em;background-color:var(--bg-card);border:1px solid var(--border-light);border-radius:6px;box-shadow:var(--shadow-card)}.post-header{margin-bottom:.3em}.post-title{font-weight:600;font-size:1.1em}.post-summary{color:var(--text-secondary);font-size:.9em;line-height:1.4;font-style:italic;margin-bottom:.8em;margin-top:.2em}.post-meta{margin-top:.8em}.post-tags{display:flex;flex-wrap:wrap;gap:.3em}.post-date{font-style:italic;color:var(--text-muted);margin-left:.5em}.toc{background-color:var(--bg-pre);border:1px solid var(--border-color);border-radius:6px;padding:.8em;margin:1em 0;max-width:fit-content;box-shadow:var(--shadow-card)}.toc summary{color:var(--text-primary);font-weight:600;cursor:pointer;list-style:none}.toc summary::-webkit-details-marker{display:none}.toc summary::before{content:"▶ ";font-size:.8em;margin-right:.3em;transition:transform .2s ease}.toc[open] summary::before{transform:rotate(90deg)}.toc nav ul{margin:0;padding-left:1em}.toc nav li{margin:.3em 0;line-height:1.4}.toc nav a{color:var(--text-link);text-decoration:none;font-size:.9em}.toc nav a:hover{text-decoration:underline}code{background-color:var(--bg-code);border:1px solid var(--border-color);border-radius:3px;font-family:Menlo,Monaco,Consolas,courier new,monospace;font-size:.85em;padding:.2em .5em;color:var(--text-primary)}pre{background-color:var(--bg-pre);padding:1em;overflow-x:auto;border-radius:3px;border:1px solid var(--border-color)}pre code{background-color:transparent;border:0;padding:0;font-size:13px}blockquote{border-left:4px solid var(--blockquote-border);margin:1.5em 0;padding:.5em 1em;font-style:italic;color:var(--text-secondary);background-color:var(--bg-pre)}table{border-collapse:collapse;margin:0;background-color:var(--bg-card);display:block;overflow-x:auto;white-space:nowrap;border-radius:6px;border:1px solid var(--border-color);box-shadow:var(--shadow-card)}th,td{border:1px solid var(--border-color);padding:8px;text-align:left}th{background-color:var(--bg-code);font-weight:700;color:var(--text-primary)}hr{border:0;border-top:1px solid var(--border-color);margin:2em 0}mark{background-color:var(--mark-bg);padding:.2em;color:var(--text-primary)}img{max-width:100%;height:auto}.reading-time,time,i:has(time),i u{color:var(--text-secondary)}.reading-time{font-style:italic;font-size:.9em;margin-left:.5em}.mermaid{max-width:100%!important;width:auto!important;overflow-x:auto;margin:1.5em auto;text-align:center;max-height:400px;overflow-y:auto}.mermaid svg{max-width:100%!important;height:auto!important;max-height:350px!important}@media(max-width:768px){body{font-size:18px;line-height:1.7;padding:1em;margin:0;border-radius:6px;max-width:95%}.site-header{flex-direction:column;align-items:center;gap:.8em;text-align:center}.site-header h1{font-size:2.5em}.site-header nav{justify-content:center;width:100%}nav a{margin-right:.5em;font-size:1em;padding:.2em 0}h1{font-size:1.8em}h2{font-size:1.7em}h3{font-size:1.4em}h4{font-size:1.2em}pre{padding:1.5em;margin:1em -.5em;border-radius:0;font-size:.9em}}@media(max-width:480px){.site-header nav{gap:.8em}.reading-time{display:block;margin-left:0;margin-top:.3em}}.content .github-repo a,.github-repo a{display:inline-flex;align-items:center;background-color:var(--bg-code);border:1px solid var(--border-color);border-radius:3px;box-shadow:0 1px 0 var(--kbd-shadow);color:var(--text-primary);font-size:.85em;padding:2px 4px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;text-decoration:none}.content .github-repo a:hover,.github-repo a:hover{background-color:var(--border-light);text-decoration:none}.content .linkedin-user a,.linkedin-user a{display:inline-flex;align-items:center;background-color:var(--bg-pre);border:1px solid #0a66c2;border-radius:3px;box-shadow:0 1px 0 var(--kbd-shadow);color:#0a66c2;font-size:.85em;padding:2px 4px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;text-decoration:none}.content .linkedin-user a:hover,.linkedin-user a:hover{background-color:var(--bg-code);text-decoration:none}.taxonomy-container{margin-top:1em;margin-bottom:1em}.taxonomy-label{font-weight:700;margin-bottom:.5em;color:var(--text-primary)}.taxonomy-terms{display:flex;flex-wrap:wrap;gap:.5em}.tag-item{display:inline-block}.tag-link{display:inline-block;background-color:var(--bg-pre);border:1px solid var(--text-link);border-radius:3px;box-shadow:0 1px 0 var(--kbd-shadow);color:var(--text-link);font-size:.85em;padding:0 4px;text-decoration:none;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}.tag-link:hover{background-color:var(--bg-code);text-decoration:none}.tag-shield{display:inline-flex;align-items:center;font-size:.85em;padding:2px 6px;border-radius:4px;text-decoration:none;color:var(--text-primary);background-color:var(--bg-pre);border:1px solid var(--border-color);transition:background-color .2s ease}.tag-shield:hover{background-color:var(--bg-code)}.tag-shield img{margin-right:4px}.row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.col-md{position:relative;width:100%;padding-right:15px;padding-left:15px;flex-basis:0;flex-grow:1;max-width:100%}