:root{--stone-50: #FAF7F2;--stone-100: #F3EEE7;--stone-200: #EBE4DB;--stone-300: #DDD4C8;--stone-400: #C8BDB0;--stone-500: #A89E92;--stone-600: #887D72;--stone-700: #6A5E52;--stone-800: #4A4038;--stone-900: #362E26;--stone-50-rgb: 250, 247, 242;--stone-100-rgb: 243, 238, 231;--stone-200-rgb: 235, 228, 219;--stone-300-rgb: 221, 212, 200;--stone-400-rgb: 200, 189, 176;--stone-500-rgb: 168, 158, 146;--stone-600-rgb: 136, 125, 114;--stone-700-rgb: 106, 94, 82;--stone-800-rgb: 74, 64, 56;--stone-900-rgb: 54, 46, 38;--font-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--font-heading: "Source Serif 4", Georgia, serif;--font-mono: "IBM Plex Mono", "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--space-3xl: 4rem;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 2rem;--text-4xl: 3rem;--text-5xl: 4rem;--transition-fast: .15s ease;--transition-base: .2s ease;--bg-page: var(--stone-50);--bg-surface: var(--stone-100);--bg-subtle: var(--stone-200);--bg-code-inline: var(--stone-300);--bg-code-block: var(--stone-900);--text-primary: var(--stone-800);--text-secondary: var(--stone-700);--text-body: var(--stone-800);--text-link: var(--stone-700);--text-link-hover: var(--stone-800);--border-default: var(--stone-300);--border-subtle: rgba(var(--stone-700-rgb), .2);--dot-pattern-color: rgba(var(--stone-700-rgb), .03);--surface-glass: rgba(var(--stone-50-rgb), .8);--surface-glass-border: rgba(var(--stone-400-rgb), .5);--surface-glass-shadow: 0 12px 32px rgba(var(--stone-900-rgb), .06);--shadow-card-hover: 0 1px 3px rgba(0, 0, 0, .04);--shadow-button-hover: 0 6px 14px rgba(var(--stone-900-rgb), .1);--nav-width: 1024px;--main-width: 720px;--header-height: 60px;--footer-height: 60px;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-pill: 999px}.dark{--bg-page: var(--stone-900);--bg-surface: var(--stone-800);--bg-subtle: rgba(var(--stone-700-rgb), .3);--bg-code-inline: rgba(var(--stone-700-rgb), .4);--bg-code-block: rgba(var(--stone-700-rgb), .3);--text-primary: var(--stone-50);--text-secondary: var(--stone-500);--text-body: var(--stone-100);--text-link: var(--stone-400);--text-link-hover: var(--stone-300);--border-default: rgba(var(--stone-600-rgb), .4);--border-subtle: rgba(var(--stone-500-rgb), .18);--dot-pattern-color: rgba(var(--stone-500-rgb), .04);--surface-glass: rgba(var(--stone-900-rgb), .92);--surface-glass-border: rgba(var(--stone-600-rgb), .25);--surface-glass-shadow: 0 12px 32px rgba(0, 0, 0, .4);--shadow-card-hover: 0 1px 3px rgba(0, 0, 0, .3);--shadow-button-hover: 0 6px 14px rgba(0, 0, 0, .4)}*,*:before,*:after{box-sizing:border-box}html{-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;text-size-adjust:100%;overflow-y:scroll;scrollbar-width:thin;scrollbar-color:var(--text-secondary) var(--bg-page)}body,h1,h2,h3,h4,h5,h6,p,ul,ol,dl,figure,blockquote,pre,table{margin:0}ul,ol{padding-inline-start:1.25rem}table{width:100%;border-collapse:collapse;border-spacing:0}article,aside,figcaption,figure,footer,header,main,nav,section{display:block}body{font-family:var(--font-body);font-size:var(--text-base);line-height:1.65;word-break:break-word;background-color:var(--bg-page);background-image:radial-gradient(circle at 1px 1px,var(--dot-pattern-color) 1px,transparent 0);background-size:28px 28px;color:var(--text-body);padding-top:calc(var(--header-height) + env(safe-area-inset-top));min-height:100vh;display:flex;flex-direction:column}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);color:var(--text-primary);line-height:1.2}a,a:visited{color:var(--text-link);text-decoration:none;transition:color var(--transition-base)}a:hover,a:focus-visible{color:var(--text-link-hover)}code,pre,kbd,samp{font-family:var(--font-mono)}img{display:block;max-width:100%;height:auto}button,input,textarea,select{padding:0;font:inherit;color:inherit;background:none;border:0}input,textarea,select{outline:none}button,input[type=button],input[type=submit]{cursor:pointer}input:-webkit-autofill,textarea:-webkit-autofill{-webkit-text-fill-color:var(--text-body);box-shadow:0 0 0 100px var(--bg-page) inset}:focus-visible{outline:2px solid var(--text-link-hover);outline-offset:2px}::selection{color:var(--text-primary);background:rgba(var(--stone-700-rgb),.2)}.site-header{position:fixed;top:0;left:0;right:0;z-index:50;padding-top:env(safe-area-inset-top);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);background:var(--surface-glass);border-bottom:1px solid var(--surface-glass-border);box-shadow:var(--surface-glass-shadow)}.site-nav{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;max-width:calc(var(--nav-width) + var(--space-xl) * 2);min-height:var(--header-height);margin:0 auto}.logo,.nav-menu{display:flex;align-items:center;margin-inline:var(--space-xl)}.logo{flex-wrap:wrap}.wordmark{display:inline-flex;align-items:baseline;gap:.35em;font-family:var(--font-heading);font-size:var(--text-2xl);font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--text-primary)}.wordmark-first,.wordmark-last{position:relative}.nav-menu{list-style:none;gap:var(--space-lg);margin-block:0;padding:0;overflow-x:auto;white-space:nowrap;word-break:keep-all}.nav-menu li{display:flex;align-items:center}.nav-link{position:relative;display:inline-flex;align-items:center;font-family:var(--font-heading);font-size:var(--text-base);font-weight:600;letter-spacing:.08em;color:var(--text-secondary);transition:color var(--transition-base)}.nav-link:after{content:"";position:absolute;inset-inline:0;bottom:-4px;height:2px;background:var(--text-link);transform:scaleX(0);transform-origin:left;transition:transform var(--transition-base),background-color var(--transition-base)}.nav-link:hover,.nav-link:focus-visible,.nav-link--active{color:var(--text-primary)}.nav-link:hover:after,.nav-link:focus-visible:after,.nav-link--active:after{transform:scaleX(1)}.nav-link:hover:after,.nav-link:focus-visible:after{background:var(--text-link-hover)}.nav-toggle{display:none}.nav-drawer{display:contents}.nav-controls{display:flex;align-items:center;gap:var(--space-xs);margin-inline-start:var(--space-sm);padding-inline-start:var(--space-sm);border-inline-start:1px solid var(--border-subtle)}.nav-controls button,.nav-controls a{display:inline-flex;align-items:center;justify-content:center;padding:.375rem;color:var(--text-secondary);opacity:.8;transition:color var(--transition-base),opacity var(--transition-base)}.nav-controls button:hover,.nav-controls button:focus-visible,.nav-controls a:hover,.nav-controls a:focus-visible{color:var(--text-primary);opacity:1}.dark #moon{display:none}:root:not(.dark) #sun{display:none}.site-main{position:relative;flex:1;max-width:calc(var(--main-width) + var(--space-xl) * 2);width:100%;margin:0 auto;padding:var(--space-xl)}.site-footer{margin-top:var(--space-2xl);padding:var(--space-lg) max(var(--space-xl),calc((100% - var(--main-width)) / 2));border-top:1px solid var(--border-subtle);color:var(--text-secondary);font-size:var(--text-xs);line-height:1.6;text-align:left}.page-title,.article-header{margin:var(--space-lg) auto var(--space-xl)}.page-title h1,.article-header h1,.card h2{letter-spacing:.04em}.page-title h1{margin:0;font-size:clamp(var(--text-3xl),7vw,var(--text-4xl))}.post-description{margin-top:var(--space-sm);color:var(--text-secondary);font-size:var(--text-sm)}.page-footer{margin-top:var(--space-lg)}.card{position:relative;margin-bottom:var(--space-xl);padding:var(--space-xl);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-md);cursor:pointer;transition:border-color var(--transition-base),background-color var(--transition-base),box-shadow var(--transition-base)}.card:hover,.card:focus-within{border-color:rgba(var(--stone-400-rgb),.35);box-shadow:var(--shadow-card-hover)}.card-header{margin-bottom:var(--space-sm)}.card-header h2{margin:0;display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm);line-height:1.3}.card-overlay{position:absolute;inset:0;z-index:1}.card-title{position:relative;z-index:2;display:inline-block;color:var(--text-primary);font-size:clamp(var(--text-xl),2.8vw,var(--text-2xl))}.card-title:after{content:"";position:absolute;inset-inline:0;bottom:-4px;height:2px;background:var(--text-link-hover);transform:scaleX(0);transform-origin:left;transition:transform var(--transition-base)}.card:hover .card-title:after,.card-title:focus-visible:after{transform:scaleX(1)}.card-excerpt{margin:var(--space-sm) 0;color:var(--text-secondary);font-size:var(--text-sm);line-height:1.65;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3}.card-excerpt p{margin:0}.meta,.card-meta{color:var(--text-secondary);font-size:var(--text-xs)}.card-meta{margin-top:var(--space-sm)}.year-header{margin:var(--space-2xl) 0 var(--space-md);font-family:var(--font-heading);font-size:var(--text-lg);font-weight:600;letter-spacing:.08em;color:var(--text-secondary)}.year-header:first-child{margin-top:0}.draft-badge{display:inline-flex;align-items:center;justify-content:center;padding:.15rem .5rem;border-radius:var(--radius-pill);border:1px solid rgba(var(--stone-700-rgb),.4);background:rgba(var(--stone-700-rgb),.15);color:var(--text-primary);font-size:.7rem;font-weight:600;line-height:1.3;letter-spacing:.04em;text-transform:uppercase}.article-header>.draft-badge{margin-top:var(--space-xs)}.profile{display:flex;justify-content:flex-start;align-items:flex-start;padding-block:clamp(4rem,12vw,7.5rem);text-align:left}.profile-body{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-sm);max-width:37.5rem}.profile-avatar{max-width:10rem;border-radius:var(--radius-pill);border:2px solid var(--stone-400);box-shadow:0 0 0 4px var(--bg-page),0 0 0 5px var(--stone-300),0 8px 20px rgba(var(--stone-700-rgb),.1)}.profile-body h1{margin:0;font-size:clamp(2.5rem,7vw,var(--text-5xl))}.profile-body>span{color:var(--text-secondary);font-size:var(--text-lg)}.profile-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-lg);margin-top:var(--space-sm)}.btn-group{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:var(--space-sm)}.btn{display:inline-flex;align-items:center;color:var(--text-primary);font-weight:600;font-family:var(--font-heading);letter-spacing:.06em;padding:.4em 1.1em;border:1.5px solid var(--border-default);border-radius:var(--radius-pill);transition:background-color var(--transition-base),color var(--transition-base)}.btn:hover,.btn:focus-visible{background-color:var(--text-primary);color:var(--bg-page)}.pagination{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm)}.pill{display:inline-flex;align-items:center;justify-content:center;min-height:2.25rem;padding:0 var(--space-md);border-radius:var(--radius-pill);border:1px solid var(--border-default);font-size:var(--text-sm);transition:border-color var(--transition-base),color var(--transition-base),background-color var(--transition-base)}.pagination-link{border-color:rgba(var(--stone-400-rgb),.4);background:transparent;color:var(--text-link);transition:color var(--transition-base),border-color var(--transition-base),background-color var(--transition-base),transform var(--transition-fast)}.pagination-link:hover,.pagination-link:focus-visible{color:var(--text-link-hover);border-color:rgba(var(--stone-700-rgb),.55);background:rgba(var(--stone-700-rgb),.14);transform:translateY(-1px)}.pagination-link--next{margin-inline-start:auto}.tag-list{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin:0;padding:0;list-style:none}.tag{background:var(--bg-subtle);color:var(--text-secondary)}.tag:hover,.tag:focus-visible{border-color:rgba(var(--stone-400-rgb),.45);color:var(--text-primary)}.tag-cloud{margin:var(--space-sm) 0 0}.article{margin:var(--space-lg) auto}.article-header h1{margin:0;font-size:clamp(var(--text-3xl),7vw,var(--text-4xl));line-height:1.15}.article-footer{margin-top:var(--space-3xl)}.article-footer-meta{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-sm)}.meta{color:var(--text-secondary);font-size:var(--text-sm)}.share-links{display:flex;align-items:center;gap:var(--space-sm);margin:0;padding:0;list-style:none}.share-links li,.share-links a{display:inline-flex;align-items:center}.share-links a{justify-content:center;width:2rem;height:2rem;border-radius:var(--radius-pill);background:var(--text-primary);color:var(--bg-page);transition:opacity var(--transition-base)}.share-links a:visited{color:var(--bg-page)}.share-links a:hover,.share-links a:focus-visible{opacity:.7}.share-links a svg{width:18px;height:18px}.post-nav{display:flex;gap:var(--space-sm);margin-top:var(--space-xl);padding:var(--space-lg) 0 var(--space-xl);border-top:1px solid var(--border-subtle)}.post-nav-link{width:50%;padding:var(--space-sm) 0;color:var(--text-body);line-height:1.45;transition:color var(--transition-base)}.post-nav-link:hover,.post-nav-link:focus-visible{color:var(--text-link-hover)}.post-nav-label{display:block;margin-bottom:var(--space-xs);color:var(--text-secondary);font-size:.65rem;letter-spacing:.08em;text-transform:uppercase;opacity:.7}.post-nav-next{margin-inline-start:auto;text-align:right}[dir=rtl] .post-nav-next{text-align:left}#searchbox{width:100%}.search-input{width:100%;padding:.625rem .875rem;border:2px solid var(--border-default);border-radius:var(--radius-md);background:var(--bg-surface);color:var(--text-primary);font-weight:600;transition:border-color var(--transition-base),box-shadow var(--transition-base)}.search-input:focus{border-color:rgba(var(--stone-400-rgb),.6);box-shadow:0 0 0 2px rgba(var(--stone-400-rgb),.2)}.search-results{margin:var(--space-sm) 0 0;width:100%;padding:0;list-style:none}.search-results .card{margin-bottom:var(--space-sm)}.social-icons{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-md)}.social-icon{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:var(--radius-pill);background:var(--text-primary);color:var(--bg-page);transition:opacity var(--transition-base)}.social-icon:visited{color:var(--bg-page)}.social-icon:hover,.social-icon:focus-visible{opacity:.7}.social-icon svg{width:18px;height:18px}.social-icon--github{background:none;color:var(--text-primary)}.social-icon--github:visited{color:var(--text-primary)}.social-icon--github svg{width:100%;height:100%}.not-found{min-height:60vh;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--text-secondary)}.not-found-code{font-size:clamp(4rem,20vw,10rem);font-weight:700;line-height:1}.not-found-message{margin-top:.5rem;font-size:var(--text-lg)}.not-found-link{margin-top:1.5rem;font-size:var(--text-base);color:var(--text-link);text-decoration:underline;text-underline-offset:2px}pre,.astro-code{position:relative}.copy-code{display:none;position:absolute;top:4px;right:4px;padding:.1rem .45rem;border-radius:var(--radius-sm);background:rgba(var(--stone-700-rgb),.8);color:rgba(var(--stone-50-rgb),.86);font-size:var(--text-sm);user-select:none}pre:hover .copy-code,.astro-code:hover .copy-code{display:block}body.nav-open{overflow:hidden}@media(max-width:768px){.site-nav{min-height:auto;padding-block:var(--space-sm);flex-wrap:wrap}.logo{margin-inline:var(--space-xl)}.wordmark{letter-spacing:.18em;font-size:var(--text-xl)}.nav-toggle{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:5px;width:2.5rem;height:2.5rem;margin-inline-end:var(--space-xl);padding:0;border:none;background:none;cursor:pointer}.nav-toggle span{display:block;width:20px;height:2px;background:var(--text-primary);border-radius:1px;transition:transform .3s ease,opacity .3s ease}.nav-toggle[aria-expanded=true] span:nth-child(1){transform:translateY(7px) rotate(45deg)}.nav-toggle[aria-expanded=true] span:nth-child(2){opacity:0}.nav-toggle[aria-expanded=true] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.nav-drawer{display:block;width:100%;max-height:0;overflow:hidden;opacity:0;transition:max-height .3s ease,opacity .2s ease}.nav-drawer--open{max-height:300px;opacity:1}.nav-menu{flex-direction:column;align-items:stretch;gap:0;margin-inline:0;padding:var(--space-sm) var(--space-xl);overflow-x:visible;white-space:normal}.nav-menu li{display:flex}.nav-link{display:flex;width:100%;padding:var(--space-sm) 0;font-size:var(--text-base)}.nav-link:after{display:none}.nav-controls{flex-direction:row;gap:var(--space-md);margin-inline-start:0;padding-inline-start:0;padding-top:var(--space-sm);border-inline-start:none;border-top:1px solid var(--border-subtle)}.nav-controls button,.nav-controls a{min-width:2.5rem;min-height:2.5rem;opacity:1}.site-main,.site-footer{padding:var(--space-md) var(--space-xl)}.profile{min-height:auto;padding-block:clamp(3rem,10vw,5rem)}.profile-avatar{max-width:9rem}.profile-body{max-width:100%;gap:var(--space-md)}.profile-body>span{font-size:var(--text-base);line-height:1.6}.profile-actions{flex-direction:column;align-items:flex-start;gap:var(--space-lg);margin-top:var(--space-sm)}.post-nav{flex-direction:column}.post-nav-link{width:100%}.post-nav-next{text-align:left}.pagination-link--next{margin-inline-start:0}.share-links{justify-content:flex-start}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.pagination-link:hover,.pagination-link:focus-visible{transform:none}}.prose{margin:var(--space-xl) 0;color:var(--text-body)}.prose>*+*{margin-top:var(--space-lg)}.prose h1,.prose h2,.prose h3,.prose h4,.prose h5,.prose h6{margin-top:var(--space-2xl);margin-bottom:var(--space-md);color:var(--text-primary);letter-spacing:.02em}.prose h1{font-size:clamp(var(--text-3xl),6vw,var(--text-4xl))}.prose h2{font-size:clamp(var(--text-2xl),4vw,var(--text-3xl))}.prose h3{font-size:var(--text-2xl)}.prose h4{font-size:var(--text-xl)}.prose h5{font-size:var(--text-lg)}.prose h6{font-size:var(--text-base)}.prose p,.prose ul,.prose ol,.prose dl,.prose figure,.prose table,.prose blockquote,.prose pre,.prose .astro-code{margin-bottom:var(--space-lg)}.prose ul,.prose ol{padding-inline-start:1.25rem}.prose li{margin-top:var(--space-xs)}.prose li p{margin-bottom:0}.prose dl{display:flex;flex-wrap:wrap}.prose dt{width:25%;font-weight:700}.prose dd{width:75%;margin-inline-start:0;padding-inline-start:var(--space-sm)}.prose dt+dt,.prose dd+dd{margin-top:var(--space-sm)}.prose a{position:relative;color:inherit;text-decoration:none;transition:color var(--transition-base)}.prose a:after{content:"";position:absolute;left:0;right:0;bottom:-3px;height:2px;background:var(--border-default);transform:scaleX(1);transform-origin:left;transition:transform var(--transition-base),background var(--transition-base)}.prose a:hover,.prose a:focus-visible{color:var(--text-link-hover)}.prose a:hover:after,.prose a:focus-visible:after{background:var(--text-link-hover)}.prose a code{box-shadow:0 -1px 0 var(--text-primary) inset}.prose del{text-decoration:line-through}.prose code{margin:0 var(--space-xs);padding:.2em .4em;font-size:.82em;line-height:1.5;background:var(--bg-code-inline);border-radius:var(--radius-sm)}.prose pre,.prose .astro-code{position:relative;padding:var(--space-md);color:var(--stone-50);background:var(--bg-code-block)!important;border:1px solid var(--border-default);border-radius:var(--radius-md);overflow-x:auto}.prose pre code,.prose .astro-code code{margin:0;padding:0;color:inherit;background:transparent;border-radius:0}.prose blockquote{margin:var(--space-lg) 0;padding:var(--space-xs) 0 var(--space-xs) var(--space-md);border-inline-start:3px solid var(--stone-400);color:var(--text-secondary)}.prose table th,.prose table td{min-width:80px;padding:var(--space-sm) var(--space-xs);line-height:1.5;border-bottom:1px solid var(--border-default);text-align:left}.prose hr{margin:var(--space-xl) 0;height:1px;border:0;background:var(--border-default)}.prose iframe{max-width:100%}.prose img{margin:var(--space-md) 0;border:1px solid var(--border-subtle);border-radius:var(--radius-sm)}.prose img[src*="#center"]{margin-inline:auto}.prose figure.align-center{text-align:center}.prose figure>figcaption{margin:var(--space-sm) 0 var(--space-md);color:var(--text-primary);font-size:var(--text-base);font-weight:600}.prose figure>figcaption>p{margin:0;color:var(--text-secondary);font-size:var(--text-sm);font-weight:400}
