:root{--bg:#f4f5f7;--bg-secondary:#ebeef2;--bg-code:#e9edf2;--text:#1a1d24;--text-secondary:#4a5060;--text-muted:#7a8194;--text-faint:#a0a8b8;--accent:#2b8a8a;--accent-hover:#1f6e6e;--border:#d4d8e0;--border-strong:#bfc4cf;--shadow-soft:0 18px 45px rgba(26, 29, 36, 0.06);--font-sans:ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-serif:ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;--font-mono:'JetBrains Mono', 'SF Mono', 'Fira Code', 'Cascadia Code', monospace;--text-xs:0.75rem;--text-sm:0.85rem;--text-base:1rem;--text-md:1.1rem;--text-lg:1.3rem;--text-xl:1.6rem;--text-2xl:2rem;--space-xs:0.25rem;--space-sm:0.5rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2.5rem;--space-2xl:4rem;--content-width:700px;--margin-width:200px;--page-width:calc(var(--content-width) + var(--margin-width) + 3rem)}html[data-theme=dark]{--bg:#0c1016;--bg-secondary:#131923;--bg-code:#111822;--text:#d8dee8;--text-secondary:#a5aec0;--text-muted:#6a7488;--text-faint:#3d4558;--accent:#3fb5b5;--accent-hover:#5ad4d4;--border:#1e2530;--border-strong:#2a3340;--shadow-soft:0 18px 45px rgba(0, 0, 0, 0.18)}html{scroll-behavior:smooth}*,*::before,*::after{box-sizing:border-box}body{background-color:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:var(--text-base);line-height:1.75;margin:0 auto;max-width:var(--page-width);padding:var(--space-xl)var(--space-lg);min-height:100vh;position:relative;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body::before{content:none;display:none}.site-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-sm)0 var(--space-md);border-bottom:1px solid var(--border);margin-bottom:var(--space-xl)}.site-title{font-family:var(--font-mono);font-size:var(--text-sm);font-weight:700;letter-spacing:.02em;color:var(--text);text-decoration:none;border:none}.site-title:hover{color:var(--accent);border:none}.site-nav{font-family:var(--font-mono);font-size:var(--text-sm)}.site-nav a{color:var(--text-secondary);text-decoration:none;border:none;margin-left:var(--space-md);padding:.25rem 0}.site-nav a:hover{color:var(--accent)}h1,h2,h3,h4,h5,h6{font-family:var(--font-sans);color:var(--text);font-weight:720;margin:var(--space-xl)0 var(--space-md);line-height:1.3}h2::before,h3::before{content:none}h1{font-size:clamp(2.1rem,5vw,3.2rem);font-weight:700;letter-spacing:0}h2{font-size:var(--text-xl)}h3{font-size:var(--text-lg)}h4{font-size:var(--text-md);font-weight:500}.post-header{margin-bottom:var(--space-xl);max-width:var(--content-width);padding-bottom:var(--space-lg);border-bottom:1px solid var(--border)}.post-title{font-family:var(--font-sans);font-size:clamp(2rem,5vw,3rem);font-weight:700;margin:0 0 var(--space-sm);line-height:1.08;text-transform:none;text-align:left;letter-spacing:0}.post-subtitle{font-size:var(--text-lg);color:var(--text-secondary);margin:0 0 var(--space-md);line-height:1.5}.post-byline{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text-muted);margin:0}.byline-sep{margin:0 var(--space-sm);color:var(--text-faint)}hr,.ornate-divider{border:none;height:1px;background:var(--border);margin:var(--space-xl)0;background-image:none;background-size:auto}p{margin:0 0 var(--space-md);color:var(--text)}.post-content{max-width:var(--content-width);position:relative}.post-content img{display:block;width:100%;max-width:100%;height:auto}.post-content p,.post-content li{font-size:1.04rem}.post-content h2{margin-top:var(--space-2xl)}.post-content h2,.post-content h3{scroll-margin-top:var(--space-xl)}a{color:var(--accent);text-decoration:none;border-bottom:1px solid transparent;transition:color .15s ease,border-color .15s ease}a:hover{color:var(--accent-hover);border-bottom-color:var(--accent-hover)}ul li::marker{content:none}ul{list-style:disc;padding-left:var(--space-lg)}ol{padding-left:var(--space-lg)}li{margin:var(--space-sm)0;color:var(--text)}blockquote{border-left:3px solid var(--border-strong);padding:var(--space-sm)var(--space-lg);margin:var(--space-lg)0;color:var(--text-secondary);font-style:italic;background:0 0}code{font-family:var(--font-mono);font-size:.88em;background-color:var(--bg-code);color:var(--text);border:1px solid var(--border);padding:1px 5px;border-radius:3px}pre::before,pre::after{content:none;display:none}pre{background-color:var(--bg-code);border:1px solid var(--border);border-radius:4px;padding:var(--space-md);overflow-x:auto;margin:var(--space-lg)0;font-size:var(--text-sm);line-height:1.5}pre code{background:0 0;border:none;padding:0;font-size:inherit;line-height:inherit;color:inherit;border-radius:0}.highlight{margin:var(--space-lg)0;border:1px solid var(--border);border-radius:4px;overflow:hidden;background-color:var(--bg-code)}.highlight pre{margin:0;border:none;padding:var(--space-md);border-radius:0}.chroma{background-color:var(--bg-code) !important;color:var(--text) !important;font-size:var(--text-sm);line-height:1.5}.chroma .ln{display:inline-block;width:2rem;color:var(--text-faint);font-size:var(--text-xs);user-select:none;text-align:right;margin-right:var(--space-md);padding-right:var(--space-sm);border-right:1px solid var(--border)}p code,li code,td code{background-color:var(--bg-code);color:var(--text);border:1px solid var(--border);padding:1px 5px;border-radius:3px;font-size:.88em}table{width:100%;border-collapse:collapse;margin:var(--space-lg)0;font-size:var(--text-sm)}th,td{border:1px solid var(--border);padding:var(--space-sm)var(--space-md);text-align:left}th{background:var(--bg-secondary);color:var(--text);font-weight:600}.marginnote-wrapper{position:relative}.marginnote{position:absolute;right:calc(-1 * (var(--margin-width) + var(--space-lg)));width:var(--margin-width);top:0;font-family:var(--font-mono);font-size:var(--text-xs);font-style:italic;color:var(--text-muted);line-height:1.5;padding-left:var(--space-sm);border-left:1px solid var(--border)}@media(max-width:960px){.marginnote{position:static;display:block;width:auto;margin:var(--space-sm)0 var(--space-sm)var(--space-lg);border-left:2px solid var(--border-strong);padding-left:var(--space-sm)}}.section-heading{font-size:var(--text-xs);font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--text-muted);margin:var(--space-xl)0 var(--space-sm);text-align:left}.section-heading::before{content:none}ul.blog-posts{list-style:none;padding:0;margin:var(--space-md)0 var(--space-xl)}ul.blog-posts li{display:grid;grid-template-columns:7.25rem 1fr;gap:var(--space-md);align-items:baseline;padding:.85rem .75rem;border-bottom:1px solid var(--border);background:0 0;border-radius:6px;border-left:none;border-right:none;border-top:none;transition:background-color .15s ease,border-color .15s ease}ul.blog-posts li:first-child{border-top:1px solid var(--border)}ul.blog-posts li::before{content:none}ul.blog-posts li:hover{transform:none;background:color-mix(in srgb,var(--bg-secondary) 55%,transparent)}ul.blog-posts li span{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted);min-width:auto;margin-right:0;padding-top:.1rem}ul.blog-posts li a{font-family:var(--font-sans);font-size:1.02rem;font-weight:650;color:var(--text);border:none;line-height:1.35}ul.blog-posts li a:hover{color:var(--accent);border:none}.blog-tags{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted);border:1px solid var(--border);padding:2px 8px;border-radius:3px;text-decoration:none;margin:2px 3px 2px 0;display:inline-block}.blog-tags:hover{background:var(--text);color:var(--bg);border-color:var(--text)}.post-footer{margin-top:var(--space-xl);padding-top:var(--space-md);border-top:1px solid var(--border)}.post-tags{margin:0}.post-reply{margin-top:var(--space-md);font-size:var(--text-sm);color:var(--text-muted)}footer{margin-top:var(--space-2xl);padding-top:var(--space-lg);border-top:1px solid var(--border);text-align:center;font-size:var(--text-xs);color:var(--text-muted)}footer a{color:var(--text-muted);border:none}footer a:hover{color:var(--accent)}footer p{font-size:var(--text-xs);margin:0}.footer-links{margin-bottom:var(--space-sm)}.footer-links a{color:var(--text-muted);border-bottom:none;font-size:var(--text-xs);letter-spacing:.05em}.footer-links a:hover{color:var(--accent)}.footer-sep{margin:0 var(--space-sm);color:var(--text-faint)}.home-content{max-width:var(--content-width);margin:0 auto}.home-intro{margin:var(--space-sm)0 var(--space-2xl);padding:var(--space-xl)0 var(--space-lg);border-bottom:1px solid var(--border)}.home-intro p:first-child{font-size:clamp(2.15rem,6vw,3.6rem);font-weight:740;letter-spacing:0;line-height:1.05;margin-bottom:var(--space-lg)}.home-intro p:not(:first-child){max-width:60ch;color:var(--text-secondary);font-size:var(--text-md)}.home-intro strong{color:var(--accent)}.home-content h2{font-size:var(--text-xl);margin-top:var(--space-sm);margin-bottom:var(--space-md)}.page-header{max-width:var(--content-width);margin:var(--space-sm)0 var(--space-2xl);padding-bottom:var(--space-lg);border-bottom:1px solid var(--border)}.page-header h1{margin:0 0 var(--space-sm)}.page-header p:last-child{color:var(--text-secondary);font-size:var(--text-md);max-width:60ch;margin-bottom:0}.section-kicker{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin:0 0 var(--space-sm)}::selection{background:var(--accent);color:var(--bg)}mark{background:rgba(43,138,138,.12);color:var(--text);padding:0 2px;border-radius:2px}html[data-theme=dark] mark{background:rgba(63,181,181,.15);color:var(--text)}@media(max-width:960px){:root{--margin-width:0px;--page-width:var(--content-width)}body{padding:var(--space-lg)var(--space-md)}}@media(max-width:600px){:root{--text-base:0.95rem;--text-2xl:1.6rem}.post-title{font-size:1.8rem}ul.blog-posts li{grid-template-columns:1fr;gap:var(--space-xs);padding:.85rem 0}.site-header{flex-direction:column;align-items:flex-start;gap:var(--space-xs);padding-right:3rem}.site-nav a{margin-left:0;margin-right:var(--space-md)}.home-intro{padding-top:var(--space-md)}.theme-toggle{top:.85rem;right:1rem;width:2.1rem;height:2.1rem;font-size:.85rem}}.theme-toggle{position:fixed;top:1rem;right:1.2rem;background:var(--bg);border:1px solid var(--border);color:var(--text-muted);font-size:1rem;width:2.5rem;height:2.5rem;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;z-index:100;transition:border-color .2s ease,color .2s ease;line-height:1}.theme-toggle:hover{border-color:var(--accent);color:var(--accent)}a:focus,button:focus{outline:2px solid var(--accent);outline-offset:2px}.dark-ext-notice{position:fixed;bottom:1.2rem;left:50%;transform:translateX(-50%);background:var(--bg-secondary);border:1px solid var(--border);color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--text-xs);padding:.5rem 1rem;display:flex;align-items:center;gap:.75rem;white-space:nowrap;z-index:200;border-radius:4px;box-shadow:0 2px 8px rgba(0,0,0,8%)}.dark-ext-notice[hidden]{display:none}.dark-ext-dismiss{background:0 0;border:none;color:var(--text-muted);cursor:pointer;font-size:.75rem;padding:0;line-height:1;flex-shrink:0}.dark-ext-dismiss:hover{color:var(--text)}.copy-btn{position:absolute;top:var(--space-sm);right:var(--space-sm);background:var(--bg-secondary);border:1px solid var(--border);color:var(--text-muted);font-family:var(--font-mono);font-size:var(--text-xs);padding:2px 8px;border-radius:3px;cursor:pointer;opacity:0;transition:opacity .15s ease;z-index:1}.highlight:hover .copy-btn{opacity:1}.copy-btn:hover{color:var(--text);border-color:var(--border-strong)}.post-description{font-size:var(--text-sm);color:var(--text-muted);margin:var(--space-xs)0 0;line-height:1.45}.see-all{text-align:right;font-size:var(--text-sm);margin-top:calc(-1 * var(--space-md))}.iframe-container{position:relative;width:100%;height:0;padding-bottom:50%;overflow:hidden;border:1px solid var(--border);border-radius:4px;margin:var(--space-lg)0}.iframe-container iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none}@media(max-width:768px){.iframe-container{padding-bottom:75%}}@media print{.theme-toggle,.site-nav,.dark-ext-notice,footer,.post-reply,.copy-btn{display:none !important}body{background:#fff;color:#000;max-width:100%;padding:1rem;font-size:11pt}a{color:#000;text-decoration:underline;border-bottom:none}pre,.highlight{border:1px solid #ccc;background:#f9f9f9 !important}.post-content{max-width:100%}}