@font-face{font-family:"DM Serif Display";src:url(/fonts/dm-serif-display-v17-latin/dm-serif-display-v17-latin-regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:"DM Serif Display";src:url(/fonts/dm-serif-display-v17-latin/dm-serif-display-v17-latin-italic.woff2) format("woff2");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:Inter;src:url(/fonts/inter-v20-latin/inter-v20-latin-300.woff2) format("woff2");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:Inter;src:url(/fonts/inter-v20-latin/inter-v20-latin-regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Inter;src:url(/fonts/inter-v20-latin/inter-v20-latin-500.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(/fonts/jetbrains-mono-v24-latin/jetbrains-mono-v24-latin-regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(/fonts/jetbrains-mono-v24-latin/jetbrains-mono-v24-latin-500.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}:root{--bg: #F5F5F3;--bg-surface: #EEEEEC;--bg-subtle: #E8E8E6;--text: #444444;--text-muted: #6B6B6B;--text-faint: #9A9A98;--border: #D8D8D6;--border-subtle:#E4E4E2;--font-display: "DM Serif Display", Georgia, serif;--font-body: "Inter", system-ui, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 1.875rem;--text-4xl: 2.25rem;--text-5xl: 3rem;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-6: 1.5rem;--space-8: 2rem;--space-12: 3rem;--space-16: 4rem;--space-24: 6rem;--space-32: 8rem;--max-width: 720px;--max-width-wide: 1024px;--transition: .15s ease;--transition-slow: .3s ease}[data-theme=dark]{--bg: #141414;--bg-surface: #1E1E1E;--bg-subtle: #252525;--text: #DDDDDB;--text-muted: #888886;--text-faint: #5A5A58;--border: #2E2E2C;--border-subtle:#242422}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth}body{background-color:var(--bg);color:var(--text);font-family:var(--font-body);font-size:var(--text-base);font-weight:400;line-height:1.7;min-height:100vh;display:flex;flex-direction:column;transition:background-color var(--transition-slow),color var(--transition-slow);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-weight:400;line-height:1.2;letter-spacing:-.01em;color:var(--text)}h1{font-size:var(--text-5xl)}h2{font-size:var(--text-3xl)}h3{font-size:var(--text-2xl)}h4{font-size:var(--text-xl)}h5{font-size:var(--text-lg)}h6{font-size:var(--text-base)}p{font-family:var(--font-body);font-size:var(--text-base);line-height:1.8;color:var(--text)}p.lead{font-size:var(--text-lg);font-weight:300;color:var(--text-muted);line-height:1.7}.meta{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text-muted);letter-spacing:.05em;text-transform:uppercase}a{color:var(--text);text-decoration:underline;text-decoration-color:var(--border);text-underline-offset:3px;transition:text-decoration-color var(--transition)}a:hover{text-decoration-color:var(--text-muted)}a.nav-link{text-decoration:none;font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text-faint);letter-spacing:.03em;transition:color var(--transition)}a.nav-link:hover,a.nav-link[aria-current=page]{color:var(--text)}code{font-family:var(--font-mono);font-size:.875em;background-color:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:3px;padding:.15em .4em;color:var(--text)}pre{font-family:var(--font-mono);font-size:var(--text-sm);background-color:var(--bg-surface);border:1px solid var(--border);border-radius:6px;padding:var(--space-6);overflow-x:auto;line-height:1.6}pre code{background:none;border:none;padding:0;font-size:inherit}.code-block{position:relative}.prose .code-block{margin-top:var(--space-6);margin-bottom:var(--space-8)}.prose .code-block pre{margin-top:0;margin-bottom:0}.code-block .copy-btn{position:absolute;top:var(--space-3);right:var(--space-3);display:flex;align-items:center;justify-content:center;width:28px;height:28px;color:var(--text-faint);background:var(--bg-subtle);border:1px solid var(--border);border-radius:3px;padding:0;cursor:pointer;transition:color var(--transition)}.code-block .copy-btn:hover{color:var(--text-muted)}.container{max-width:var(--max-width);margin:0 auto;padding:0 var(--space-6)}.container--wide{max-width:var(--max-width-wide);margin:0 auto;padding:0 var(--space-6)}main{flex:1}header{padding:var(--space-8) 0 var(--space-6);border-bottom:1px solid var(--border-subtle)}header nav{display:flex;align-items:center;justify-content:space-between;gap:var(--space-8);min-width:0}.nav-brand{font-family:var(--font-mono);font-size:var(--text-sm);font-weight:500;color:var(--text);text-decoration:none;letter-spacing:.02em;flex-shrink:0}.nav-links{display:flex;align-items:center;gap:var(--space-6);list-style:none;flex-shrink:0}footer{padding:var(--space-12) 0 var(--space-8);border-top:1px solid var(--border-subtle);margin-top:var(--space-12)}footer p{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-faint);letter-spacing:.03em}.prose{max-width:var(--max-width)}.prose h2{font-size:var(--text-2xl);margin-top:var(--space-12);margin-bottom:var(--space-4)}.prose h3{font-size:var(--text-xl);margin-top:var(--space-8);margin-bottom:var(--space-3)}.prose p{margin-bottom:var(--space-6)}.prose ul,.prose ol{padding-left:var(--space-6);margin-bottom:var(--space-6)}.prose li{margin-bottom:var(--space-2);line-height:1.7}.prose blockquote{border-left:2px solid var(--border);padding-left:var(--space-6);margin:var(--space-8) 0;color:var(--text-muted);font-style:italic}.prose hr{border:none;border-top:1px solid var(--border-subtle);margin:var(--space-12) 0}.prose img{max-width:100%;border-radius:4px;border:1px solid var(--border-subtle)}.prose pre{margin-top:var(--space-6);margin-bottom:var(--space-8)}.prose :not(pre)>code{color:var(--text-muted)}.prose pre span,pre span{color:var(--shiki-light)}[data-theme=dark] .prose pre span,[data-theme=dark] pre span{color:var(--shiki-dark)}pre.astro-code{background-color:var(--bg-surface)!important}.card{padding:var(--space-6);border:1px solid var(--border-subtle);border-radius:6px;background-color:var(--bg);transition:border-color var(--transition),background-color var(--transition)}.card:hover{border-color:var(--border);background-color:var(--bg-surface)}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--space-4)}.tag{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted);border:1px solid var(--border);border-radius:3px;padding:var(--space-1) var(--space-2);letter-spacing:.04em;text-transform:lowercase;text-decoration:none;transition:color var(--transition),border-color var(--transition)}.tag:hover{color:var(--text);border-color:var(--border)}.tags{display:flex;flex-wrap:wrap;gap:var(--space-2)}.theme-toggle{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:none;border:1px solid var(--border-subtle);border-radius:3px;padding:0;cursor:pointer;color:var(--text-faint);transition:color var(--transition),border-color var(--transition)}.theme-toggle:hover{color:var(--text-muted);border-color:var(--border)}.icon-sun,.icon-moon{display:flex;align-items:center;justify-content:center}[data-theme=dark] .icon-moon,[data-theme=light] .icon-sun{display: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}.text-muted{color:var(--text-muted)}.text-faint{color:var(--text-faint)}.font-mono{font-family:var(--font-mono)}.font-display{font-family:var(--font-display)}@media(max-width:640px){h1{font-size:var(--text-4xl)}h2{font-size:var(--text-2xl)}.container,.container--wide{padding:0 var(--space-4)}header nav{gap:var(--space-3)}.nav-links{gap:var(--space-3)}.card-grid{grid-template-columns:1fr}}
