:root{--bg:#fcfbf7;--bg-raised:#f4f1e9;--text:#26241f;--text-muted:#6f6a5e;--text-faint:#97917f;--accent:#1a4d8f;--accent-hover:#123a6d;--accent-wash:#1a4d8f14;--border:#e8e4d8;--border-strong:#d5cfbf;--code-bg:#f4f1e9;--selection:#1a4d8f29;--serif:"Charter", "Bitstream Charter", "Sitka Text", Cambria, Georgia, serif;--sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;--mono:ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;--content-width:42rem}html.dark{--bg:#1a1916;--bg-raised:#23211c;--text:#e5e1d5;--text-muted:#a29b89;--text-faint:#7a7466;--accent:#8fb3e2;--accent-hover:#adc8ec;--accent-wash:#8fb3e21f;--border:#34312a;--border-strong:#47433a;--code-bg:#23211c;--selection:#8fb3e240}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font-family:var(--serif);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;flex-direction:column;min-height:100dvh;margin:0;font-size:1.125rem;line-height:1.7;display:flex}::selection{background:var(--selection)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}a{color:var(--accent);text-underline-offset:.15em;text-decoration:underline 1px;text-decoration-color:color-mix(in srgb, var(--accent) 45%, transparent);transition:color .12s,text-decoration-color .12s}a:hover{color:var(--accent-hover);text-decoration-color:currentColor}.shell{max-width:var(--content-width);margin:0 auto;padding:0 1.25rem}.site-header{border-bottom:1px solid var(--border);margin-bottom:3rem;padding:1.75rem 0 1.25rem}.site-header .shell{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 1rem;display:flex}.site-title{font-family:var(--serif);letter-spacing:.01em;font-size:1.1875rem;font-weight:700}.site-title a{color:var(--text);text-decoration:none}.site-title a:hover{color:var(--accent)}.site-nav{font-family:var(--sans);align-items:center;gap:1.1rem;font-size:.875rem;display:flex}.site-nav a{color:var(--text-muted);text-decoration:none}.site-nav a:hover{color:var(--accent)}.theme-toggle{appearance:none;cursor:pointer;color:var(--text-muted);background:0 0;border:none;border-radius:4px;margin:0;padding:.15rem;line-height:0}.theme-toggle:hover{color:var(--accent)}.theme-toggle svg{display:none}html[data-theme-mode=light] .theme-toggle .sun,html[data-theme-mode=dark] .theme-toggle .moon,html[data-theme-mode=auto] .theme-toggle .system,html:not([data-theme-mode]) .theme-toggle .system{display:inline}main{flex:1 0 auto;width:100%}.site-footer{border-top:1px solid var(--border);font-family:var(--sans);color:var(--text-faint);margin-top:5rem;padding:1.75rem 0 3rem;font-size:.8125rem}.site-footer .shell{flex-wrap:wrap;justify-content:space-between;gap:.5rem 1.5rem;display:flex}.site-footer a{color:var(--text-muted);text-decoration:none}.site-footer a:hover{color:var(--accent)}.page-wash{z-index:-1;pointer-events:none;height:22rem;position:absolute;inset:0 0 auto;overflow:hidden}.page-wash img{object-fit:cover;object-position:50% 72%;opacity:.9;width:100%;height:100%;mask-image:linear-gradient(#000 30%,#0000 100%)}html.dark .page-wash img{filter:invert()hue-rotate(180deg)brightness(1.02);opacity:.8}.section-label{font-family:var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--text-faint);margin:0 0 1.25rem;font-size:.75rem;font-weight:600}.post-list{margin:0;padding:0;list-style:none}.post-list li{border-bottom:1px solid var(--border);padding:1.35rem 0}.post-list li:first-child{padding-top:.25rem}.post-list li:last-child{border-bottom:none}.post-list .post-title{margin:0 0 .3rem;font-size:1.375rem;font-weight:700;line-height:1.3}.post-list .post-title a{color:var(--text);text-decoration:none}.post-list .post-title a:hover{color:var(--accent)}.post-list .post-desc{color:var(--text-muted);margin:.35rem 0 0;font-size:1rem}.meta{font-family:var(--sans);letter-spacing:.02em;color:var(--text-faint);font-size:.8125rem}.meta a{color:inherit}.post-header{text-align:center;margin-bottom:2.75rem}.post-header h1{letter-spacing:-.01em;margin:0 0 .6rem;font-size:2.125rem;font-weight:700;line-height:1.2}.post-tags{display:inline}.post-tags span{color:var(--text-faint)}.post-nav{border-top:1px solid var(--border);font-family:var(--sans);justify-content:space-between;gap:1.5rem;margin-top:3.5rem;padding-top:1.5rem;font-size:.875rem;display:flex}.post-nav a{color:var(--text-muted);max-width:46%;text-decoration:none}.post-nav a:hover{color:var(--accent)}.post-nav .next{text-align:right;margin-left:auto}.post-nav .label{letter-spacing:.12em;text-transform:uppercase;color:var(--text-faint);margin-bottom:.15rem;font-size:.6875rem;display:block}.prose>*+*{margin-top:1.1em}.prose p{text-align:justify;hyphens:auto;overflow-wrap:break-word}.prose h2,.prose h3,.prose h4{letter-spacing:-.005em;margin-top:2.2em;margin-bottom:0;font-weight:700;line-height:1.3}.prose h2{font-size:1.5rem}.prose h3{font-size:1.25rem}.prose h4{font-size:1.0625rem}.prose h2,.prose h3,.prose h4{scroll-margin-top:2rem}.heading-anchor{color:var(--text-faint);opacity:0;margin-left:.4em;font-weight:400;text-decoration:none;transition:opacity .12s}.prose h2:hover .heading-anchor,.prose h3:hover .heading-anchor,.prose h4:hover .heading-anchor,.heading-anchor:focus-visible{opacity:1}.heading-anchor:hover{color:var(--accent)}@media (hover:none){.heading-anchor{opacity:.4}}.prose h2+*,.prose h3+*,.prose h4+*{margin-top:.7em}.prose p{margin-bottom:0}.prose ul,.prose ol{padding-left:1.4rem}.prose li+li{margin-top:.35em}.prose blockquote{border-left:3px solid var(--border-strong);color:var(--text-muted);margin-left:0;margin-right:0;padding:.1rem 0 .1rem 1.25rem}.prose hr{text-align:center;color:var(--text-faint);border:none;margin:2.5em 0}.prose hr:before{content:"·   ·   ·";letter-spacing:.5em;font-size:1rem}.prose img{border-radius:6px;max-width:100%;height:auto}.prose code{font-family:var(--mono);font-size:.85em}.prose :not(pre)>code{background:var(--code-bg);border:1px solid var(--border);white-space:nowrap;border-radius:4px;padding:.1em .35em}.prose pre{border:1px solid var(--border);border-radius:8px;padding:1rem 1.25rem;font-size:.875rem;line-height:1.6;overflow-x:auto}.prose table{border-collapse:collapse;width:100%;font-size:.9375rem;display:block;overflow-x:auto}.prose th{font-family:var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);text-align:left;font-size:.75rem;font-weight:600}.prose th,.prose td{border-bottom:1px solid var(--border);padding:.5rem .9rem .5rem 0}.prose sup a{font-family:var(--sans);padding:0 .1em;text-decoration:none}.prose .footnotes{border-top:1px solid var(--border);color:var(--text-muted);margin-top:3rem;padding-top:1rem;font-size:.9375rem}.prose .footnotes ol{padding-left:1.2rem}html.dark .astro-code,html.dark .astro-code span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important;font-style:var(--shiki-dark-font-style)!important;font-weight:var(--shiki-dark-font-weight)!important}.social-links{gap:1.15rem;margin-top:2rem;display:flex}.social-links a{color:var(--text-faint);line-height:0}.social-links a:hover{color:var(--accent)}.newsletter{background:var(--bg-raised);border:1px solid var(--border);border-radius:10px;margin-top:3.5rem;padding:1.5rem 1.6rem;scroll-margin-top:2rem}.newsletter h2{margin:0 0 .3rem;font-size:1.125rem;font-weight:700}.newsletter p{color:var(--text-muted);margin:0 0 1rem;font-size:.9375rem}.newsletter-row{flex-wrap:wrap;gap:.6rem;display:flex}.newsletter input[type=email]{font-family:var(--sans);color:var(--text);background:var(--bg);border:1px solid var(--border-strong);border-radius:6px;flex:14rem;padding:.55rem .8rem;font-size:.9375rem}.newsletter input[type=email]:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:#0000}.newsletter button{font-family:var(--sans);color:var(--bg);background:var(--accent);cursor:pointer;border:none;border-radius:6px;padding:.55rem 1.1rem;font-size:.9375rem;font-weight:600;transition:background .12s}.newsletter button:hover{background:var(--accent-hover)}.newsletter button:disabled{opacity:.6;cursor:default}.newsletter .status{font-family:var(--sans);min-height:1.2em;margin:.6rem 0 0;font-size:.8125rem}.newsletter .status.ok{color:var(--accent)}.newsletter .status.err{color:#b4544a}.hp-field{width:1px;height:1px;overflow:hidden;position:absolute!important;left:-9999px!important}.comments{border-top:1px solid var(--border);margin-top:3.5rem;padding-top:2rem}@media (width<=480px){body{font-size:1rem}.post-header h1{font-size:1.625rem}.site-header{margin-bottom:2rem}.newsletter input[type=email]{font-size:1rem}}
