*,*::before,*::after{box-sizing:border-box}body,h1,h2,h3,h4,h5,h6,p,figure,blockquote,dl,dd,pre{margin:0}body{min-height:100vh;text-rendering:optimizeLegibility}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}ul[role=list],ol[role=list]{list-style:none}a{color:inherit;text-decoration:none}:root{--color-bg:#f5f2ee;--color-bg-secondary:#edeae5;--color-text:#2d2926;--color-text-secondary:#706b66;--color-text-tertiary:#9c9690;--color-border:#ddd8d2;--color-link:#2d2926;--color-link-hover:#1a1714;--color-code-bg:#eae7e2;--color-tag-bg:rgba(0, 0, 0, 0.04);--color-tag-bg-hover:rgba(0, 0, 0, 0.07);--color-nav-bg:rgba(0, 0, 0, 0.04);--color-nav-bg-hover:rgba(0, 0, 0, 0.06);--color-notice-bg:#edeae5;--color-notice-border:#ddd8d2;--space-unit:1.5rem;--space-xs:0.375rem;--space-sm:0.75rem;--space-md:1.5rem;--space-lg:3rem;--space-xl:4.5rem;--content-width:680px;--content-padding:2rem;--max-width:calc(var(--content-width) + var(--content-padding) * 2);--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-body:Georgia, "Palatino Linotype", Palatino, "Book Antiqua", serif;--font-heading:var(--font-sans);--font-mono:"SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;--text-base:1.125rem;--line-height-base:1.7;--line-height-heading:1.2;--letter-spacing-body:-0.01em;color-scheme:light dark}html.dark{--color-bg:#1c1917;--color-bg-secondary:#25221f;--color-text:#d4cfc9;--color-text-secondary:#8a8480;--color-text-tertiary:#65615e;--color-border:#3a3633;--color-link:#d4cfc9;--color-link-hover:#eae6e1;--color-code-bg:#25221f;--color-tag-bg:rgba(255, 255, 255, 0.07);--color-tag-bg-hover:rgba(255, 255, 255, 0.11);--color-nav-bg:rgba(255, 255, 255, 0.07);--color-nav-bg-hover:rgba(255, 255, 255, 0.1);--color-notice-bg:#25221f;--color-notice-border:#3a3633}body{font-family:var(--font-body);font-size:var(--text-base);line-height:var(--line-height-base);color:var(--color-text);background:var(--color-bg);letter-spacing:var(--letter-spacing-body)}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading)}h1{font-size:2.441rem;line-height:1.2;letter-spacing:-.02em;font-weight:700;margin-top:0;margin-bottom:.5em}h2{font-size:1.953rem;line-height:1.25;letter-spacing:-.01em;font-weight:700;margin-top:2em;margin-bottom:.5em}h3{font-size:1.563rem;line-height:1.3;font-weight:600;margin-top:1.5em;margin-bottom:.5em}h4{font-size:1.25rem;line-height:1.4;font-weight:600;margin-top:1.5em;margin-bottom:.5em}h5{font-size:1rem;line-height:1.5;letter-spacing:.02em;font-weight:600;margin-top:1.5em;margin-bottom:.5em}h6{font-size:.875rem;line-height:1.5;letter-spacing:.05em;font-weight:600;text-transform:uppercase;margin-top:1.5em;margin-bottom:.5em}small{font-size:.875rem}.site-main{max-width:var(--max-width);margin:0 auto;padding:0 var(--content-padding)}@media(max-width:64rem){.site-main{padding:0 var(--content-padding)}}.site-header{max-width:var(--max-width);margin:0 auto;padding:var(--space-md)var(--content-padding)}.header-inner{display:flex;align-items:center;justify-content:space-between}.header-brand{display:flex;align-items:center;gap:var(--space-sm)}.site-title{font-family:var(--font-sans);font-weight:400;font-size:.8125rem;color:var(--color-text);text-decoration:none;text-transform:uppercase;letter-spacing:.2em}.site-title:hover{color:var(--color-link-hover)}.nav-wrapper{display:flex;align-items:center;gap:var(--space-sm)}.main-nav{display:flex;align-items:center;gap:var(--space-sm)}.nav-link{font-family:var(--font-sans);color:var(--color-text-secondary);text-decoration:none;font-size:.875rem;padding:var(--space-xs)var(--space-sm);border-radius:.5rem;transition:background-color .2s}.nav-link:hover{background-color:var(--color-nav-bg-hover);color:var(--color-text)}.social-nav{display:flex;align-items:center;gap:var(--space-xs)}.social-link{display:flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;color:var(--color-text-secondary);transition:color .2s}.social-link:hover{color:var(--color-text)}.social-link svg{width:1.25rem;height:1.25rem}.btn-dark{display:flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;background:0 0;border:none;cursor:pointer;color:var(--color-text-secondary);transition:color .2s;border-radius:.5rem}.btn-dark:hover{color:var(--color-text)}.btn-menu{width:2.75rem;height:2.75rem;display:none;align-items:center;justify-content:center;background:0 0;border:none;cursor:pointer;color:var(--color-text);flex-direction:column;gap:5px;padding:0;border-radius:.5rem}.btn-menu span{display:block;width:1.25rem;height:2px;background-color:currentColor;transition:transform .2s,opacity .2s;transform-origin:center}.btn-menu.open span:nth-child(1){transform:translateY(7px)rotate(45deg)}.btn-menu.open span:nth-child(2){opacity:0}.btn-menu.open span:nth-child(3){transform:translateY(-7px)rotate(-45deg)}@media(max-width:64rem){.btn-menu{display:flex}.nav-wrapper{position:fixed;inset:0;top:4rem;background:var(--color-bg);display:none;flex-direction:column;align-items:flex-start;padding:var(--space-md);z-index:10}.nav-wrapper.open{display:flex}.main-nav{flex-direction:column;align-items:flex-start;width:100%}.nav-link{width:100%;padding:var(--space-sm)}.social-nav{flex-direction:row;padding-top:var(--space-sm)}}.site-footer{max-width:var(--max-width);margin:0 auto;padding:var(--space-xl)var(--content-padding)var(--space-lg);text-align:center;font-family:var(--font-sans);font-size:.875rem;color:var(--color-text-tertiary)}.site-footer a{color:var(--color-text-secondary);text-decoration:none}.site-footer a:hover{color:var(--color-text)}.prose p{margin-bottom:var(--space-md)}.prose a{color:var(--color-link);text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px}.prose a:hover{color:var(--color-link-hover)}.prose strong{font-weight:700}.prose em{font-style:italic}.prose ul,.prose ol{margin-bottom:var(--space-md);padding-left:1.75em}.prose li{margin-bottom:var(--space-xs)}.prose li::marker{color:var(--color-text-secondary)}.prose blockquote{border-left:3px solid var(--color-border);padding-left:var(--space-md);margin:var(--space-md)0;color:var(--color-text-secondary);font-style:italic}.prose hr{border:none;border-top:1px solid var(--color-border);margin:var(--space-lg)0}.prose img{border-radius:.25rem;margin:var(--space-md)0}.prose figure{margin:var(--space-md)0}.prose figcaption{font-family:var(--font-sans);font-size:.875rem;color:var(--color-text-secondary);margin-top:var(--space-xs);text-align:center}.prose table{width:100%;border-collapse:collapse;margin:var(--space-md)0;font-size:.875rem}.prose th{text-align:left;font-weight:600;padding:var(--space-xs)var(--space-sm);border-bottom:2px solid var(--color-border)}.prose td{padding:var(--space-xs)var(--space-sm);border-bottom:1px solid var(--color-border)}.prose>*:first-child{margin-top:0}.prose>*:last-child{margin-bottom:0}.prose details{margin-bottom:var(--space-md)}.prose summary{cursor:pointer;font-weight:600}.tag-link{display:inline-block;margin-bottom:.375rem;margin-right:.375rem;padding:.25rem 1.25rem;background:var(--color-tag-bg);border-radius:.5rem;text-decoration:none;color:var(--color-text);font-family:var(--font-sans);font-size:.875rem;transition:background-color .2s}.tag-link:hover{background:var(--color-tag-bg-hover)}.post-nav{display:flex;margin-top:var(--space-xl);border-radius:.75rem;overflow:hidden;background:var(--color-nav-bg);font-size:var(--text-base);line-height:1.2}.post-nav a{display:flex;align-items:center;width:50%;padding:1.25rem;font-weight:500;text-decoration:none;color:var(--color-text);transition:background-color .2s}.post-nav a:hover{background:var(--color-nav-bg-hover)}.post-nav-arrow{flex-shrink:0}.archive-notice{padding:.9375rem;margin-bottom:1.25rem;border:1px solid var(--color-notice-border);background:var(--color-notice-bg);border-radius:.3125rem}.archive-notice p{margin:0;font-family:var(--font-sans);font-style:italic;font-size:.875rem}.skip-link{position:absolute;top:-100%;left:var(--content-padding);padding:var(--space-xs)var(--space-sm);background:var(--color-bg);color:var(--color-text);z-index:100;border:1px solid var(--color-border);border-radius:.25rem;text-decoration:none;font-size:.875rem}.skip-link:focus{top:var(--space-sm)}.post-list{list-style:none;padding:0}.post-list-item{position:relative}.post-list-link{display:flex;justify-content:space-between;align-items:baseline;padding:var(--space-xs)0;text-decoration:none;color:var(--color-text);gap:var(--space-md)}.post-list-link:hover{color:var(--color-link-hover)}.post-list-title{font-weight:400}.post-list-date{font-family:var(--font-sans);font-size:.875rem;color:var(--color-text-secondary);white-space:nowrap;flex-shrink:0}.post-featured-badge{font-size:.75rem;font-weight:600;color:var(--color-text-secondary);margin-left:var(--space-xs)}.post-header{margin-bottom:var(--space-lg)}.post-meta{font-family:var(--font-sans);font-size:.75rem;color:var(--color-text-secondary);opacity:.6}.post-tags{display:flex;flex-wrap:wrap;margin-top:var(--space-lg)}.error-page{text-align:center;padding:var(--space-xl)0}.error-page h1{font-size:6rem;font-weight:700;line-height:1}.error-page p{margin-top:var(--space-md);color:var(--color-text-secondary)}.prose code{font-family:var(--font-mono);font-size:.875em;background:var(--color-code-bg);padding:.125em .375em;border-radius:.25rem}.prose pre code{background:0 0;padding:0;font-size:.875rem;line-height:1.6}.prose pre{background:var(--color-code-bg);padding:var(--space-md);border-radius:.5rem;overflow-x:auto;margin:var(--space-md)0;line-height:1.6}.highlight table{width:100%;border-collapse:collapse}.highlight .lnt{color:var(--color-text-tertiary);padding-right:var(--space-md);user-select:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}a:focus-visible,button:focus-visible,[tabindex]:focus-visible{outline:2px solid currentColor;outline-offset:2px}@media print{.site-header,.site-footer,.site-nav,.archive-notice,.giscus,.btn-dark,.btn-menu,.post-nav,.skip-link{display:none}body{font-size:12pt;line-height:1.5;color:#000;background:#fff}a{color:#000;text-decoration:underline}a[href^=http]::after{content:" (" attr(href)")";font-size:.8em}pre{white-space:pre-wrap;border:1px solid #ccc;padding:.5em}.site-main{max-width:100%;padding:0}}